11. Foto by Massimo: www.flickr.com/photos/autunnodicoloriaquilonistimilano
12. 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
13. Porta iPad / Tablet realizzato
per accelerare il test
dell’applicazione per bambini
Timbuktu
Orientation: Landscape &
Portrait
18. 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
19. Una partita è costituita da
3 round e combattuta da 2
avversari
Ogni round dura 2 minuti
Vince la partita chi fa più
punti
21. 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/
23. 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
24. 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
28. 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
40. 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
42. 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
54. 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
56. 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.
57. Bisogna sempre puntare in alto: ho cercato
i video dei più precisi robot industriali
http://www.youtube.com/watch?v=SOESSCXGhFo
58. 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!
60. 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/
63. 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
64. 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
66. ..ma non una qualsiasi!
http://www.youtube.com/watch?v=jH1cR2spwNs
67. Robot #1
Problema:
costruire un robot grande
Soluzione:
se la montagna non viene a Maometto…
68. Ho aggiunto un
riferimento
all’unica
dimensione
assoluta che il
nostro cervello
possiede.
Con un
semplice omino
la mia
scavatrice è
diventata
immensa
70. 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
78. 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
80. 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?
81. Grazie
• Codemotion Staff
• Silvana
• Open source projects
– Tesseract
– ImageMagick
– Absolute position
regulation
– Node Mindstorm
Bluetooth
82. 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