Kinect Tests
Cristian Merighi ()

Mani impiastricciate nella marmellata di Microsoft Kinect SDK (beta2), paciugando con gestures e speech recognition. Il tutto in attesa dell'imminente commercial release.
Questo articolo è da considerarsi obsoleto. Alcune funzionalità potrebbero non essere più disponibili e non è possibile aggiungere commenti.
Ho appena approcciato - come sviluppatore - il sistema Kinect nel suo complesso di hardware e relativo SDK, non mi definirei esattamente tempestivo!
È stato infatti appena annunciato il rilascio del nuovo Kinect for Windows (HW + SW) per il prossimo 1° febbraio (2012).
Con ogni probabilità dunque, ciò che ho cercato d'imparare e soprattutto di implementare sull'attauale versione (beta2) dell'SDK sarà vetusta spazzatura non appena si conosceranno le nuove caratteristiche del nuovo Kinect.
Non ritengo comunque d'aver sprecato il (poco) tempo ultimamente impiegato: se non altro ora ho piena coscienza di ciò che è potenzialmente in grado d'offrire quest'interessante device.
Mi sono particolarmente applicato alle funzionalità di skeleton data tracking e di speech recognition.
Se da un lato le librerie audio sono da ritenersi complete ed esaustive per uno sviluppo "pulito" di comandi vocali, dall'altro le modalità di gestione delle gestures possono ritenersi
un far-west decisionale: una terra di nessuno dove ogni tirannico dev può instaurare le proprie leggi e battere moneta... Scenario a dir poco entusiasmante, no?!
In quanto despota illuminato, il mio primo pensiero sull'attacco al problema è stato: "Non voglio che l'utente finale sia costretto a imparare un set di gestures particolari che io
ho deciso di instaurare". Il secondo: "Voglio che la mia interfaccia sia sufficientemente intelligente da comprendere cosa l'utente ha intenzione di fare", al limite talmente intuitiva da
rendere palese la calibrazione delle azioni da parte dell'utente stesso al fine di ottenere il risultato desiderato.
Bene, devo dunque costruire un sistema flessibile (ma diligentemente strutturato) di gestures "usuali" (penso a panning, sweeping, zooming...) ponendomi dalla parte
della macchina per capire come identificare tali azioni.
Ho notato come un'azione "usuale" di solito si rivela in seguito a una sequenza di prodromiche azioni intermedie.
Ad esempio, una gesture di <panning> si individua sì dal movimento orizzontale della mano, ma solo successivamente ad una gesture di <palming> (è il nome che ho affibiato
all'elevazione della mano al di sopra del livello del gomito ad essa contiguo).
Prototipando tale idea in un sistema funzionante, ho prodotto il seguente class-diagram:
Come user test per questo sistema embrionale di gestione delle gestures non poteva mancare il più classico dei "manipulator": il modellino della Terra in 3D!
Per la cronaca al gesture tracker coinvolto ho dato nome Manipulate3DGestureTracker, esso dipende a sua volta dalle gestures Grope (ehm..."palpeggio") e Grab.
Il tracking sul Manipulate3D cessa quando si lasciano cadere le mani al di sotto del livello dei fianchi oppure (vedi video-esempio sotto) tramite comando vocale.
Non mi rimane che aspettare l'imminente 1° febbraio per vedere come Microsoft renderà questo mio "capolavoro in divenire" assolutamente senza senso ed inutile... ;)
Take care. Bye.