La Forza Kinectica

Il sensore Kinect è ben famoso nella community videoludica, infatti era principalmente indirizzato ai giocatori quando Microsoft lo ha creato. La prima versione del dispositivo era per la console Xbox 360 e col suo sensore 3D ha introdotto un nuovo modo di giocare, cioè usare l’intero corpo o almeno le braccia dell’utente. Può facilmente tracciare l’intero corpo umano e dare in output una collezione completa di informazioni sulle posizioni e sui movimenti di ogni articolazione. Nella figura seguente si può vedere a cosa mi riferisco con articolazione, sono i ”Joints” che formano lo ”Skeleton” di un utente.

La seconda versione, Kinect 2.0, fu introdotta per la nuova console Xbox One, ora non solo per creare un nuovo tipo di video gaming, ma anche per dare un controllo completo della console tramite la serie di microfoni e motion capture 3D. Non credo abbia avuto tutto il successo della prima versione, anche se vendendola assieme alla console ha sicuramente aumentato il guadagno. Il successo economico sarà stato positivo, ma quello sociale non molto. I video giocatori non erano più tanto interessati a questo dispositivo innovativo, ma intanto di nascosto la Kinect ha iniziato a conquistare in altri campi.
Quando Microsoft ha reso la Kinect compatibile con Windows ed ha introdotto un SDK per svilupparci applicazioni, è diventata uno dei dispositivi più usati in diversi campi di ricerca informatica, anche grazie al suo basso costo per un eccellente sensore 3D.

La Ricerca
La Kinect è parecchio usata nella video sorveglianza, dove tali sistemi non solo ”guardano” la scena ma tracciano anche le persone in essa, dando un bel po’ di informazioni da utilizzare per un bel po’ di cose. Dall’identificazione dei gesti fino ad addirittura la predizione di essi, usando dietro machine learning, analisi particolare dei dati e chi più ne ha più ne metta. E` anche fantastico per i sistemi di interazione uomo-macchina (HRI – Human Robot Interaction) e macchina-macchina (RRI – robot robot interaction). Dare ad una macchina un occhio che permette di vedere in 3D può essere molto interessante.
Personalmente adoro quando l’informatica è applicata al campo medico con sistemi che aiutano direttamente le persone. Kinect viene usata pure per cose del genere, ad esempio per aiutare con la riabilitazione. Tracciando il corpo e i movimenti può essere estremamente utile per valutare le condizioni e i miglioramenti che un paziente ottiene durante la sua riabilitazione fisica. Oppure ad esempio sono stati sviluppati delle applicazioni interattivi fatti a posta per rendere meno noiose e stressanti le sessioni di terapia. Soprattutto per bambini è più che utile.

Il Pointing
Personalmente ho lavorato con la Kinect nella mia università, però per un tipo di lavoro del tutto diverso. Riguarda la domotica, in particolare rendere interattiva una qualsiasi stanza in modo personalizzabile dove la Kinect viene usata per dare comandi. Ogni oggetto nella stanza `e potenzialmente interattivo ed un utente puo` fare gesti o dare comandi vocali per attivare un qualche comportamento da parte della stanza. Ad esempio può dire ”Ciao”, oppure salutare con una mano, e qualche cassa risponde con un audio. La Kinect è lo strumento chiave di questo lavoro, qualsiasi gesto viene visto e riconosciuto attraverso la Kinect, ma c’`e un gesto in particolare che ha richiesto un pò più di impegno: indicare.
Dico ”pointing” perchè è davvero più semplice dire gesto di pointing, invece di gesto dell’indicare. Comunque, il pointing è un modo naturale e potente di esprimere interesse verso qualcosa o qualche luogo. Abbiamo voluto dare all’utente a possibilità di indicare un oggetto and interagire con la stanza usando quell’azione come input. Questo vuol dire che riconoscere gesti non è più abbastanza, perch ́e ora dobbiamo anche identificare l’oggetto indicato. Abbiamo usato oltre al SDK per la Kinect anche Vitruvius (non l’uomo vitruviano, questa roba) per rendere più semplice la procedura di ottenere le posizioni spaziali dei Joint, che diventano dei bei vettori con le coordinate sulle 3 assi (X, Y, Z). Il problema da risolvere è che le posizioni sono sempre sul sistema di coordinate relativo alla Kinect, Z parte da 0 ed aumenta all’aumentare della distanza dell’utente dal sensore. X e Y vanno da -1 a 1, cioè più a sinistra/sotto a più a destra/sopra. La stanza invece `e tutta bellamente rappresentata con uno spazio 3D virtuale dove ogni oggetto è mappato con un punto in questo spazio. Se dobbiamo ottenere correttamente l’oggetto punto, non possiamo usare le posizioni ottenute dalla Kinect perchè sono del tutto incompatibili con la rappresentazione della stanza. Ciò che abbiamo fatto è stato un pò di magia nera matematica e sacrifici di giovani vergini e abbiamo ottenuto un modo bello ed elegante di convertire le posizioni dei Joints e mappare l’utente nella stanza virtuale. In seguito, detta brevemente, viene generata una linea virtuale che parte dal braccio indicante e ne prendiamo l’oggetto più allineato. Diamo questo oggetto al sistema e lui vedrà se è coinvolto in qualche interazione oppure no.

La Creatività
Tutto questo per condividere un po’ la mia esperienza con questo dispositivo, ma anche per dire che esso `e un ottimo strumento per implementare una grossa varietà di sistemi. Domotica, video sorveglianza, aiuto nella medicina sono ottimi esempi su come usarlo in nuovi modi. Inoltre non per forza l’utente che utilizza la Kinect debba essere umano, ci sono molti sistemi che utilizzano la Kinect per permettere ad un robot di navigare in una stanza, indicare cose, riconoscere oggetti.
Secondo me se potete mettere le mani su una Kinect, magari usata per spendere di meno, fatelo. La potete usare per sviluppare vostri progetti personali ed essere creativi, oppure come una webcam gigante!
L’utilizzo della Kinect che mi ha colpito di più, comunque, è in questo video. Un ”sound-reactive particle system in real time” (dice già tutto) che utilizza la Kinect per raccogliere dati sulla posizione del corpo dell’utente. E` una figata e non avrei mai pensato di usare il sensore in questo modo, per ottenere tanti piccoli puntini che formano una immagine 3D del corpo e muoverli in giro. Puoi fare cose davvero interessanti!

Avete mai usato questo dispositivo a parte videogiocare? Avete idee per progetti? Condivideteli!

Scritto da  /u/zolixes

Link ai commenti