Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Lego vs RuzzleAlberto Sarullo       http://albertosarullo.com
Sommario• Chi sono         • Problemi affrontati                      –   Simulare dita• L’idea              –   Prototipo...
Alberto Sarullo• Developer, Technical Director, Teacher• Technical Leader @ NTTData• Caratteristiche: curioso, creativo, i...
Curiosità: sin da piccolo ho sempre amatosmontare cose per capirneil funzionamento                                        ...
8 anni: primoambito titolodi studio
Inizia la stagione dei disastri: montare è più difficile di smontare
La scopertadell’elettricitàProvando con unabatteria da 9V acaricarne una daorologio, mi èesplosa in faccia
Ultimi danni:appena assunto   ho divelto le    porte di un     ascensore       Da allora mi         chiamano “Il Distruggi...
Bici +        Informatica =www.pisteciclabili.com
Foto by Massimo: www.flickr.com/photos/autunnodicoloriaquilonistimilano
Spazzino@Frontiers of interaction IV“Alberto Sarullos open-sourceLego mashup sensor robotwas the darlingof the event” (Bru...
Porta iPad / Tablet realizzatoper accelerare il testdell’applicazione per bambiniTimbuktuOrientation: Landscape &Portrait
L’idea
Una notte, mentre la mia ragazza a cuipiacciono i ricci vagava per casarapita da ruzzle...
Ruzzle
Regole del gioco              Porta iPad        Griglia di 4x4 lettere        Ogni lettera ha un punteggio        Ogni let...
Una partita è costituita da3 round e combattuta da 2avversariOgni round dura 2 minutiVince la partita chi fa piùpunti
NodeJS
NodeJS“Node.js is a platform built on Chromes JavaScriptruntime for easily building fast, scalable networkapplications.Nod...
Javascriptvar http = require(http);http.createServer(function handleRequest(req, res) {  res.writeHead(200, {Content-Type:...
Linkedin & NodeJSLinkedin: some of the advantages of Node.js over Rails:• Much better performance and lower memory overhea...
Perché NodeJS?•   Conoscevo la tecnologia•   Veloce•   Semplice da implementare•   Npm – Node Packet Manager•   Se anche n...
Ruzzle Solver
NodeJS Ruzzle Solver  • Dizionario                     •   wordList = []  • Lettere sulla griglia          •   Ruzzle.lett...
Mindstorm
Lego Mindstorm•   NXT•   Motori (solo 3)•   Sensori•   Ambienti di sviluppo
NXT • RAM: 64KB • 32-bit ARM7, 8-bit Atmel AVR   ATmega48 • Display: 100×60 pixel   monochrome • Four buttons • USB, Bluet...
Motori
SensoriUfficiali:                   Aftermarket:• Touch                           –   Bussola,• Light                     ...
Esempio #1:multiplexer per controllare 4 servomotori da modellismo
Esempio #2:camera chesegue la luce
Dev Environments– NXT-G (gui)                –   NXT-Python– BricxCC, Next Byte Codes   –   Lua  (assemby), Not eXactly C ...
NXT-G
Not eXactly Csub makeTestPlan() {  string complete = "600303303007";    // complete = "6332211007601117";    completeLengt...
Via!
Problemi da affrontare• Scrivere un solver per Ruzzle• Costruire un robot• Scrivere il software per muovere il robot• Far ...
Simulare un dito
Schermi capacitivi3 Strati:    – conduttore trasparente (ossido metallico)    – isolante (vetro)    – matrice di condensat...
Idea #1: il Wüsterone
Idea #2: Yubitsume (指詰め)
Fuochino: Spugna conduttiva
Fuoco: Spugna vegetale (1€)   http://www.youtube.com/watch?v=tnMcalzBcKk
Il Robot
I robot nella fantascienza
Robot
I robot nella realtà      http://www.youtube.com/watch?v=sjAZGUcjrP8Nelle industrie moderne sono gli umani ad esser rari
I robot nella realtàwww.youtube.com/watch?v=sjAZGUcjrP8 Se i robot fossero una specie, diremmo che stanno conquistando il ...
Prototipo
Prototipo• Scopo:  – verificare la fattibilità della costruzione di un robot    che si muovesse con precisione su 3 assi• ...
Prototipo• Risultato sperimentazione:  – Ok, funziona  – Riesco a muovere sui 3 assi: x, y, z  – Strane imprecisioni nelle...
Bisogna sempre puntare in alto: ho cercato   i video dei più precisi robot industriali      http://www.youtube.com/watch?v...
PrototipoIl problema:• non era nel mio software• non era nella mia costruzione• era nel firmware lego originaleI motori le...
Absolute Position Regulation“NXT Improved Firmware, that controls one motor so that itsposition matches the position set b...
Absolute motor regulation
Robot #1
Robot #1• Scopo:  – unire tutto ciò che è stato fatto• Strategia:  – costruzione modulare per quanto riguarda i    movimen...
Robot #1Idea: scattare una fotografia all’iPad dalla webcam delportatile e processarlaProblema: il “dito” avrebbe avuto di...
Volevo una scavatrice…
..ma non una qualsiasi!http://www.youtube.com/watch?v=jH1cR2spwNs
Robot #1Problema:   costruire un robot grandeSoluzione:    se la montagna non viene a Maometto…
Ho aggiunto un    riferimento        all’unica   dimensione assoluta che ilnostro cervello       possiede.        Con unse...
Tipico laboratorio di ricerca
ProblemaProblema insormontabile: poca rigidità torsionale causaimprecisione di circa 3 mm nelle traiettorie diagonaliSoluz...
Robot #2
Cambio di metafora: dascavatrice a gru a ponte
Robot #2Risultato: funziona! (errore max: circa 2mm)E ora? Che faccio? Va comunicatoCome? Con un video su Youtube!Idea: L’...
http://youtu.be/ukPyJPFAwlo
Sviluppi futuri•   Leggere i modificatori di punti (2L, 3W)•   RaspberryPi integration (via bluetooth)•   Sikuli.org envir...
Grazie• Codemotion Staff• Silvana• Open source projects  – Tesseract  – ImageMagick  – Absolute position    regulation  – ...
FeedbackQualsiasi feedback èprezioso!•   alberto.sarullo@gmail.com•   twitter.com/albertosarullo•   fb.com/albertosarullo•...
Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013
Upcoming SlideShare
Loading in …5
×

Lego vs Ruzzle @ codemotion 2013

4,951 views

Published on

Slide of my Talk @ Codemotion 2013

Published in: Technology
  • Il Codemotion Roma è stato davvero grandioso, per chi si fosse perso il mio talk 'Best Practices Mobile Web' il link con tutte le slide è questo: http://www.slideshare.net/LucaDegliEsposti/il-tap-e-il-nuovo-click
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

Lego vs Ruzzle @ codemotion 2013

  1. 1. Lego vs RuzzleAlberto 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 amatosmontare cose per capirneil funzionamento Photo: Shutterstock
  5. 5. 8 anni: primoambito titolodi studio
  6. 6. Inizia la stagione dei disastri: montare è più difficile di smontare
  7. 7. La scopertadell’elettricitàProvando con unabatteria da 9V acaricarne una daorologio, 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 Sarullos open-sourceLego mashup sensor robotwas the darlingof the event” (Bruce Sterling)“Qui l’indicatore di geekdom èandato proprio fuori scala.Spazzino è uno Spime montato suun Lego Mindstorm hackato concomponenti non standard. Kudosad Alberto Sarullo.” (DigitalMeadows Blog)#Minstorm #SunSpot #Solar #Python#Twitter #Bluetoothhttp://spazzino.com
  12. 12. Porta iPad / Tablet realizzatoper accelerare il testdell’applicazione per bambiniTimbuktuOrientation: Landscape &Portrait
  13. 13. L’idea
  14. 14. Una notte, mentre la mia ragazza a cuipiacciono i ricci vagava per casarapita 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 da3 round e combattuta da 2avversariOgni round dura 2 minutiVince la partita chi fa piùpunti
  18. 18. NodeJS
  19. 19. NodeJS“Node.js is a platform built on Chromes JavaScriptruntime for easily building fast, scalable networkapplications.Node.js uses an event-driven, non-blocking I/O modelthat makes it lightweight and efficient, perfect for data-intensive real-time applications that run acrossdistributed 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. Javascriptvar 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.jsHello Codemotion! http://127.0.0.1:1337/
  21. 21. Linkedin & NodeJSLinkedin: 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 utilizationhttp://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 bluetoothhttp://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. SensoriUfficiali: 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 chesegue 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 Csub 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 capacitivi3 Strati: – conduttore trasparente (ossido metallico) – isolante (vetro) – matrice di condensatori a filmFunzionamento:• 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 condensatoriSamsungs Super AMOLED: in-cell technology, elimina uno stratointegrandolo 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=sjAZGUcjrP8Nelle 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. PrototipoIl problema:• non era nel mio software• non era nella mia costruzione• era nel firmware lego originaleI motori lego si fermano dopo aver raggiunto lameta, non prima!
  53. 53. Absolute Position Regulation“NXT Improved Firmware, that controls one motor so that itsposition matches the position set by the user.At any time, even when the motor is moving, the set position canbe changed, and the control algorithm will move the motortowards 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 #1Idea: scattare una fotografia all’iPad dalla webcam delportatile e processarlaProblema: il “dito” avrebbe avuto diventare un braccioper non coprire il tabletSoluzione: metafora della scavatrice
  58. 58. Volevo una scavatrice…
  59. 59. ..ma non una qualsiasi!http://www.youtube.com/watch?v=jH1cR2spwNs
  60. 60. Robot #1Problema: costruire un robot grandeSoluzione: se la montagna non viene a Maometto…
  61. 61. Ho aggiunto un riferimento all’unica dimensione assoluta che ilnostro cervello possiede. Con unsemplice omino la mia scavatrice è diventata immensa
  62. 62. Tipico laboratorio di ricerca
  63. 63. ProblemaProblema insormontabile: poca rigidità torsionale causaimprecisione di circa 3 mm nelle traiettorie diagonaliSoluzione: distruggere tutto ciò che avevo costruitoSmarrimento: serve un cambio radicale di paradigma
  64. 64. Robot #2
  65. 65. Cambio di metafora: dascavatrice a gru a ponte
  66. 66. Robot #2Risultato: funziona! (errore max: circa 2mm)E ora? Che faccio? Va comunicatoCome? Con un video su Youtube!Idea: L’omino lego, da strumento diventa protagonista di unastoriahttp://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. FeedbackQualsiasi feedback èprezioso!• alberto.sarullo@gmail.com• twitter.com/albertosarullo• fb.com/albertosarullo• linkedin.com/in/albertosarullo• github.com/albertosarulloN.B. Senza feedback non c’èmiglioramento

×