Lego vs Ruzzle @ codemotion 2013

3,832 views

Published on

Slide of my Talk @ Codemotion 2013

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • 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

No Downloads
Views
Total views
3,832
On SlideShare
0
From Embeds
0
Number of Embeds
2,842
Actions
Shares
0
Downloads
6
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

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

×