Tutti gli appassionati di Pinball sanno che questo fantastico gioco nasce intorno agli anni 50 negli Stati Uniti d’America. Dopo aver spopolato anche oltre oceano ha visto come qualsiasi altro gioco meccanico un leggero declino. La generazione attuale preferisce sostituire questi giochi “vintage” con potentissime console capaci di interagire con il giocatore anche semplicemente muovendo il proprio corpo. Per questo motivo abbiamo deciso di avvicinare le vecchie generazioni alle nuove creando un’architettura capace di controllare il flipper attraverso il sensore Microsoft Kinect.
How to…Elettrico
Il flipper su cui abbiamo effettuato l’hack utilizza i classici bottoni laterali. Questi bottoni, una volta premuti, chiudono il circuito di alimentazione della bobina utile ad alzare i flippers. Per “simulare” la pressione dei bottoni abbiamo utilizzato una circuiteria basata su relay SPST ,meglio conosciuti come relè one way. Guardare l’immagine sotto rappresentata come riferimento:
Il controllo dei relay è stato effettuato attraverso l’utilizzo di una scheda di sviluppo Arduino 2009 collegata serialmente al pc.
How to…Firmware&Software
Come ogni architettura basata su circuiteria elettronica necessita di una fase di sviluppo firmware & software. Per prima cosa si è scritto il firmware per Arduino che legge serialmente(tramite cavo USB) una sequenza di Byte inviata attraverso il software che utilizzerà il Kinect:
Dalla dichiarazione delle costanti del firmware è possibile evincere che sono stati utilizzati i PIN digitali 2 e 3 per controllare rispettivamente i relè del flipper destro e flipper sinistro. Completata la scrittura del firmware e il flashing su ROM dell’Arduino passiamo alla scrittura del software che analizzerà le immagini attraverso il Kinect e invierà la sequenza di Byte all’Arduino. Il software controller è stato scritto totalmente in C# attraverso le librerie NUI(Natural User Interface) di Microsoft. Per prima cosa occorre fare chiarezza sulla teoria di analisi delle immagini del Kinect. Un giocatore diventa rilevabile e attivo dal Kinect solo quando è posizionato frontalmente rispetto ad esso. Rilevato il giocatore, il sensore effettua una scansione del corpo ed identifica i suoi punti fondamentali( Joints termine ufficiale SDK) e ne ricrea lo scheletro( Skeletal termine ufficiale SDK). L’immagine qui di seguito aiuta a capire meglio la definizione data in precedenza:
Di seguito il posizionamento corretto del giocatore:
Per simulare la pressione dei tasti è stato creato un algoritmo capace di riconoscere la posizione delle mani più internamente rispetto a quelle dei gomiti. Ogni Joint è rappresentato in uno spazio tridimensionale attraverso le coordinate X, Y e Z, quindi per rilevare la chiusura della braccia è stato confrontato il punto X del gomito con quello della mano sull’asse delle ascisse. L’immagine di seguito mostra come un giocatore viene rappresentato all’interno del sistema:
Conclusioni..
Questo articolo mostra una panoramica molto generica del progetto. Occorrerebbe entrare più nel dettaglio per quanto riguarda la gestione dell’analisi delle immagini e delle relative SDK utilizzate per questo progetto. Inoltre sarebbe opportuno entrare anche nel dettaglio della parte elettronica riguardante il wiring con il pinball.
Chi siamo e perché abbiamo realizzato il progetto:
Michele Galletta
Appassionato di Pinball, sfrutta le sue grandi capacità da restauratore ed elettricista per sistemare con gran cura vecchi Pinball che necessitano ancora di GLORIA
Antonio Blescia
Da sempre amante delle tecnologie basate sulla realtà aumentata, passa nottate a sviluppare applicazioni innovative ed utili per il prossimo.
Alessandro Galletta
La mascotte del progetto, vederlo giocare con il Pinball interfacciato al Kinect è stata una soddisfazione personale da parte nostra. Si è divertito molto, quindi, possiamo affermare che il connubio old generation & new generation è stato soddisfatto appieno 🙂 L’idea del progetto non è stata presa a tavolino, anzi, è stata pensata durante una pausa caffè. Le idee migliori nascono proprio in questo modo. Speriamo che questo progetto possa piacere a tutta la community e che i commenti e le considerazioni fiocchino a bizzeffe..
Il lavoro è encomiabile. Realizzare la connessione software/hardware per andare a pilotare i pulsanti è comunque carina come idea e non certo alla portata di tutti.
Ma mi sorge un dubbio… a che cosa mai serve una cosa del genere quando ci sono due bottoni, più pratici, diretti e sensibili?
Di certo avvicinerebbe i giocatori giusto per curiosità, ma all’atto pratico… perdonatemi non ha senso. Qui non parlo come nostalgico o puritano del gioco in versione classica.
Parlo come all’atto pratico il sistema sia quanto di più inutile esista.
Semmai potrebbe avvicinare chi non ha la possibilità di usare le mani, in caso di menomazione degli arti. Allora sì che sono sicuro che avvicina qualcuno di meno abile.
Magari dovreste prendere questa come direzione di progetto!