Successfully reported this slideshow.

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Lego vs Ruzzle @ codemotion 2013

  1. 1. Lego vs Ruzzle Alberto Sarullo http://albertosarullo.com
  2. 2. Sommario • Chi sono • Problemi affrontati – Simulare dita • L’idea – Prototipo – Absoltue position regulation – Robot #1 • Ingredienti – Robot #2 – Ruzzle – Video – NodeJS – Mindstorm
  3. 3. Alberto Sarullo • Developer, Technical Director, Teacher • Technical Leader @ NTTData • Caratteristiche: curioso, creativo, introverso • Hobby: dev, bike, kite, lego • Contact: – alberto.sarullo@gmail.com – twitter.com/albertosarullo
  4. 4. Curiosità: sin da piccolo ho sempre amato smontare cose per capirne il funzionamento Photo: Shutterstock
  5. 5. 8 anni: primo ambito titolo di studio
  6. 6. Inizia la stagione dei disastri: montare è più difficile di smontare
  7. 7. La scoperta dell’elettricità Provando con una batteria da 9V a caricarne una da orologio, mi è esplosa in faccia
  8. 8. Ultimi danni: appena assunto ho divelto le porte di un ascensore Da allora mi chiamano “Il Distruggitore”
  9. 9. Bici + Informatica = www.pisteciclabili.com
  10. 10. Foto by Massimo: www.flickr.com/photos/autunnodicoloriaquilonistimilano
  11. 11. Spazzino@Frontiers of interaction IV “Alberto Sarullo's open-source Lego mashup sensor robot was the darling of the event” (Bruce Sterling) “Qui l’indicatore di geekdom è andato proprio fuori scala. Spazzino è uno Spime montato su un Lego Mindstorm hackato con componenti non standard. Kudos ad Alberto Sarullo.” (Digital Meadows Blog) #Minstorm #SunSpot #Solar #Python #Twitter #Bluetooth http://spazzino.com
  12. 12. Porta iPad / Tablet realizzato per accelerare il test dell’applicazione per bambini Timbuktu Orientation: Landscape & Portrait
  13. 13. L’idea
  14. 14. Una notte, mentre la mia ragazza a cui piacciono i ricci vagava per casa rapita da ruzzle...
  15. 15. Ruzzle
  16. 16. Regole del gioco Porta iPad Griglia di 4x4 lettere Ogni lettera ha un punteggio Ogni lettera può avere un modificatore di punti (3L, 2W) Scopo: usare lettere adiacenti per trovare parole sulla griglia La parole possono essere orientate in orizzontale, verticale e diagonale e possono seguire linee spezzate
  17. 17. Una partita è costituita da 3 round e combattuta da 2 avversari Ogni round dura 2 minuti Vince la partita chi fa più punti
  18. 18. NodeJS
  19. 19. NodeJS “Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data- intensive real-time applications that run across distributed devices.” • http://www.slideshare.net/the_undefined/nodejs-a-quick-tour • http://www.slideshare.net/simon/evented-io-based-web-servers- explained-using-bunnies • http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/
  20. 20. Javascript var http = require('http'); http.createServer(function handleRequest(req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello Worldn'); ).listen(1337, '127.0.0.1'); console.log('Hello Codemotion! http://127.0.0.1:1337/'); % node example.js Hello Codemotion! http://127.0.0.1:1337/
  21. 21. Linkedin & NodeJS Linkedin: some of the advantages of Node.js over Rails: • Much better performance and lower memory overhead than other tested options, running up to 20x faster in some scenarios • Programmers could leverage their JavaScript skills • Frontend and backend mobile teams could be combined into a single unit • Servers were cut to 3 from 30. Enough headroom remains to handle 10x current levels of resource utilization http://highscalability.com/blog/2012/10/4/linkedin-moved-from-rails-to-node-27- servers-cut-and-up-to-2.html
  22. 22. Perché NodeJS? • Conoscevo la tecnologia • Veloce • Semplice da implementare • Npm – Node Packet Manager • Se anche non fossi riuscito a costruire il robot, avrei potuto pubblicare il codice: chiunque avrebbe potuto eseguirlo sul suo browser
  23. 23. Ruzzle Solver
  24. 24. NodeJS Ruzzle Solver • Dizionario • wordList = [] • Lettere sulla griglia • Ruzzle.letters = [] • Pulitura del dizionario • Ruzze.clearWords(wordList) • Ricerca parole • Ruzzle.search(…) • Ordinamento parole per punti e per minimizzare i • sortMoves(moves) path • sendViaBluetooth(moves) • Invio via bluetooth http://github.com/albertosarullo/ruzzle-mindstorm-nxc-nodejs-solver
  25. 25. Mindstorm
  26. 26. Lego Mindstorm • NXT • Motori (solo 3) • Sensori • Ambienti di sviluppo
  27. 27. NXT • RAM: 64KB • 32-bit ARM7, 8-bit Atmel AVR ATmega48 • Display: 100×60 pixel monochrome • Four buttons • USB, Bluetooth • Speaker (max 8khz) • Power: 6 AA batteries / Li-Ion rechargeable battery
  28. 28. Motori
  29. 29. Sensori Ufficiali: Aftermarket: • Touch – Bussola, • Light – Giroscopio – Accelerometri • Color – Camera • Sound volume – Flessione • Ultrasonic – Pressione – Termometro – Multiplexer Mindsensors, Hitechnic, Dexter industries
  30. 30. Esempio #1: multiplexer per controllare 4 servomotori da modellismo
  31. 31. Esempio #2: camera che segue la luce
  32. 32. Dev Environments – NXT-G (gui) – NXT-Python – BricxCC, Next Byte Codes – Lua (assemby), Not eXactly C – Ada (C-like language) – MATLAB and Simulink – C# with Microsoft – URBI Robotics Developer Studio – FLL NXT Navigation – leJOS NXJ – ruby-nxt – Robolab – Robotics.NXT – RoboMind – LibNXT – ROBOTC – PyNXC – NXTGCC – Physical Etoysz
  33. 33. NXT-G
  34. 34. Not eXactly C sub makeTestPlan() { string complete = "600303303007"; // complete = "6332211007601117"; completeLength = StrLen(complete); ArrayInit(moves, 0, completeLength); for (int i = 0; i < completeLength; i++) { moves[i] = StrToNum( SubStr(complete, i, 1)); } }
  35. 35. Via!
  36. 36. Problemi da affrontare • Scrivere un solver per Ruzzle • Costruire un robot • Scrivere il software per muovere il robot • Far comunicare il robot con il computer • Fare interagire il robot con il tablet (interazione macchina-macchina) • Prelevare l’immagine dal tablet • Riconoscere le lettere
  37. 37. Simulare un dito
  38. 38. Schermi capacitivi 3 Strati: – conduttore trasparente (ossido metallico) – isolante (vetro) – matrice di condensatori a film Funzionamento: • Agli angoli dello schermo viene applicata una tensione elettrica • Quando il dito tocca lo schermo avviene una variazione di capacità superficiale, che viene letta dalla matrice di condensatori Samsung's Super AMOLED: 'in-cell' technology, elimina uno strato integrandolo nel display stesso
  39. 39. Idea #1: il Wüsterone
  40. 40. Idea #2: Yubitsume (指詰め)
  41. 41. Fuochino: Spugna conduttiva
  42. 42. Fuoco: Spugna vegetale (1€) http://www.youtube.com/watch?v=tnMcalzBcKk
  43. 43. Il Robot
  44. 44. I robot nella fantascienza
  45. 45. Robot
  46. 46. I robot nella realtà http://www.youtube.com/watch?v=sjAZGUcjrP8 Nelle industrie moderne sono gli umani ad esser rari
  47. 47. I robot nella realtà www.youtube.com/watch?v=sjAZGUcjrP8 Se i robot fossero una specie, diremmo che stanno conquistando il mondo
  48. 48. Prototipo
  49. 49. Prototipo • Scopo: – verificare la fattibilità della costruzione di un robot che si muovesse con precisione su 3 assi • Strategia: – progettazione modulare per quanto riguarda i movimenti sugli assi x e y, per distribuire uniformemente il peso – asse z: procedere per tentativi
  50. 50. Prototipo • Risultato sperimentazione: – Ok, funziona – Riesco a muovere sui 3 assi: x, y, z – Strane imprecisioni nelle traiettorie, che imputavo ad un peso eccessivo o non equilibrato. Ma io voglio la migliore precisione possibile: cerco la causa e l’ispirazione.
  51. 51. Bisogna sempre puntare in alto: ho cercato i video dei più precisi robot industriali http://www.youtube.com/watch?v=SOESSCXGhFo
  52. 52. Prototipo Il problema: • non era nel mio software • non era nella mia costruzione • era nel firmware lego originale I motori lego si fermano dopo aver raggiunto la meta, non prima!
  53. 53. Absolute Position Regulation “NXT Improved Firmware, that controls one motor so that its position matches the position set by the user. At any time, even when the motor is moving, the set position can be changed, and the control algorithm will move the motor towards the new position.” http://nxt-firmware.ni.fr.eu.org/changes/absolute_position_regulation/
  54. 54. Absolute motor regulation
  55. 55. Robot #1
  56. 56. Robot #1 • Scopo: – unire tutto ciò che è stato fatto • Strategia: – costruzione modulare per quanto riguarda i movimenti sugli assi x e y – distribuzione dei pesi equilibrata
  57. 57. Robot #1 Idea: scattare una fotografia all’iPad dalla webcam del portatile e processarla Problema: il “dito” avrebbe avuto diventare un braccio per non coprire il tablet Soluzione: metafora della scavatrice
  58. 58. Volevo una scavatrice…
  59. 59. ..ma non una qualsiasi! http://www.youtube.com/watch?v=jH1cR2spwNs
  60. 60. Robot #1 Problema: costruire un robot grande Soluzione: se la montagna non viene a Maometto…
  61. 61. Ho aggiunto un riferimento all’unica dimensione assoluta che il nostro cervello possiede. Con un semplice omino la mia scavatrice è diventata immensa
  62. 62. Tipico laboratorio di ricerca
  63. 63. Problema Problema insormontabile: poca rigidità torsionale causa imprecisione di circa 3 mm nelle traiettorie diagonali Soluzione: distruggere tutto ciò che avevo costruito Smarrimento: serve un cambio radicale di paradigma
  64. 64. Robot #2
  65. 65. Cambio di metafora: da scavatrice a gru a ponte
  66. 66. Robot #2 Risultato: funziona! (errore max: circa 2mm) E ora? Che faccio? Va comunicato Come? Con un video su Youtube! Idea: L’omino lego, da strumento diventa protagonista di una storia http://youtu.be/ukPyJPFAwlo
  67. 67. http://youtu.be/ukPyJPFAwlo
  68. 68. Sviluppi futuri • Leggere i modificatori di punti (2L, 3W) • RaspberryPi integration (via bluetooth) • Sikuli.org environment • Automazione totale • Trasferire la sfida a ruzzle al mondo delle macchine • Idee?
  69. 69. Grazie • Codemotion Staff • Silvana • Open source projects – Tesseract – ImageMagick – Absolute position regulation – Node Mindstorm Bluetooth
  70. 70. Feedback Qualsiasi feedback è prezioso! • alberto.sarullo@gmail.com • twitter.com/albertosarullo • fb.com/albertosarullo • linkedin.com/in/albertosarullo • github.com/albertosarullo N.B. Senza feedback non c’è miglioramento

×