Il ricorso al riconoscimento dei gesti nell’interfaccia tra uomo e macchina non è un argomento nuovo. Alcuni dei più recenti televisori o delle piattaforme elettroniche di gioco utilizzano sistemi per il riconoscimento dei gesti basati su videocamera, che eliminano la necessità di disporre di un telecomando o di una consolle. Per riconoscere il movimento della mano dell’utente si ricorre a tecnologie di elaborazione dell’immagine. La precisione del riconoscimento dei gesti dipende da calibrazione e risoluzione della videocamera, luminosità ambientale, angolo di visione della videocamera, frequenza di aggiornamento dell’immagine e sensibilità della videocamera per catturare movimenti veloci. Il ricorso al riconoscimento dei gesti come interfaccia tra uomo e macchina richiede l’analisi del movimento del corpo (in particolare della mano) per attivare funzionalità specifiche e ben definite in un sistema mobile. Per esempio, in uno smartphone è possibile rispondere a una conversazione con un singolo tocco del dito (single tap) e terminare la chiamata con due tocchi in rapida successione (double tap). Inclinando il telefono in avanti o indietro rispetto alla posizione orizzontale si può scorrere in un senso o nell’altro la rubrica telefonica, ad una velocità adeguata. È poi possibile, con un singolo tocco, selezionare un contatto, e muovendo il telefono verso sinistra e all’indietro si può tornare a consultare la rubrica telefonica. In modo del tutto analogo al riconoscimento del parlato, il sistema che riconosce i gesti in base al movimento permette di confrontare i movimenti che vengono rilevati con quelli predefiniti e memorizzati nel database per riconoscere o meno il gesto in questione. Di conseguenza, la precisione del riconoscimento dipende dal tasso di successo nel riconoscere gesti già pre-registrati e dalla capacità di scartare ogni altro gesto che non sia stato precedentemente registrato. Anche il tempo di risposta è una caratteristica importante per questo tipo di applicazione. È possibile suddividere i gesti delle mani di una persona in due grandi categorie.
- Gesti semplici: la singola pressione con un dito, due rapide pressioni in successione, movimenti di rotazione e inclinazione a cui viene sottoposto il dispositivo mobile. Le Figg. 1a e b presentano alcuni esempi di gesti semplici che possono essere applicati a un dispositivo mobile a partire dalla posizione verticale. Il gesto di inclinazione verso sinistra richiede che il dispositivo venga ruotato verso sinistra di un certo angolo, e poi riportato nella posizione originale. Lo spostamento a sinistra prevede che il dispositivo venga mosso verso sinistra a una certa distanza, e portato poi alla posizione originale con una accelerazione lineare. In modo del tutto analogo si possono descrivere i gesti che prevedono spostamenti verso destra. Le Figg. 1c e 1d presentano alcuni esempi di gesti semplici che possono essere applicati a un dispositivo mobile a partire dalla posizione orizzontale. Lo scuotimento verso sinistra richiede che il dispositivo venga fatto ruotare attorno al suo asse verticale verso sinistra di un certo angolo, e poi ruotato all’indietro per riportarlo alla posizione originale. La rotazione verso sinistra prevede che il dispositivo venga fatto ruotare attorno all’asse longitudinale verso sinistra di un certo angolo, e poi fatto ruotare all’indietro per riportarlo alla posizione originale. In modo analogo si possono descrivere i gesti che prevedono spostamenti verso destra. È possibile riconoscere questi semplici gesti utilizzando un accelerometro a tre assi.
- Gesti complessi: lettere, numeri e altre forme, o addirittura firme che vengono utilizzate per sbloccare il dispositivo mobile o per telefonare a numeri brevi prememorizzati in rubrica. Il riconoscimento di gesti complessi può essere implementato utilizzando un accelerometro a tre assi e un giroscopio a tre assi, cioè quella che può essere chiamata anche una unità Imu 6-Dof (unità di misura inerziale con 6 gradi di libertà). Le più recenti serie di unità di misura inerziale LSM6DS3 offerte da ST sono particolarmente adatte per il riconoscimento di gesti complessi. Questi moduli inerziali garantiscono una notevole riduzione dei consumi, bassissima densità di rumore, elevata velocità dei dati in uscita e svariate applicazioni embedded che liberano il microcontrollore di sistema dalla esecuzione di attività complesse. Il modulo Imu è stato integrato in un singolo chip microelettronico. I dati grezzi provenienti dall’accelerometro e giroscopio vengono resi disponibili tramite interfacce Spi o I2C. È possibile definire la frequenza di campionamento per l’acquisizione dei dati dal sensore, per esempio a 50 Hz o 100 Hz. L’intervallo massimo di misura può essere impostato fino a ±4g per l’accelerometro e ±2000dps per il giroscopio in modo da evitare la saturazione dei dati del sensore nel caso di gesti particolarmente veloci. È possibile utilizzare uno qualunque dei moduli Imu di ST per implementare algoritmi per il riconoscimento di gesti complessi. I paragrafi successivi illustrano le implementazioni hardware e software necessarie nel caso di gesti complessi.
Il metodo della traiettoria del cursore del mouse in 2D
Quando il gesto viene riconosciuto e si attiva un particolare evento significa che siamo in presenza di gesti complessi. Come sempre, i gesti semplici o complessi possono essere proiettati su uno schermo bidimensionale per identificare la traiettoria in tempo reale, esattamente come un cursore che si muova su uno schermo seguendo il movimento del mouse. È possibile, entro certi limiti, utilizzare un unico accelerometro a tre assi per il riconoscimento di gesti complessi. L’accelerometro, tuttavia, non è in grado di distinguere l’accelerazione lineare dal vettore che rappresenta la gravità terrestre. Inoltre l’accelerometro non è in grado di rilevare la rotazione angolare del dispositivo mobile lungo l’asse verticale. Risulta difficile quindi, con un solo accelerometro, distinguere il gesto che descrive il numero “2” da quello utilizzato per la lettera “Z”, o il numero “5” dalla lettera “S”. Per questo motivo, il controllo del cursore basato su un unico accelerometro in una applicazione di mouse che si muove nello spazio libero non ha le stesse caratteristiche di precisione e accuratezza che si otterrebbero con un accelerometro e un giroscopio (Imu 6-DoF). È importante notare che non è necessario calibrare i sensori per garantire la precisione del riconoscimento dei gesti poiché il movimento viene sempre misurato a partire da un determinato punto di inizio del gesto. Come già detto, per riconoscere i gesti è necessario catturare una serie di dati grezzi dal sensore e paragonarli poi a quelli memorizzati in un database predefinito, eseguendo un algoritmo di riconoscimento che sarà in grado di associare o meno il gesto a uno di quelli previsti. Se l’input inviato all’algoritmo per il riconoscimento dei gesti basato su un microcontrollore che esegue il campionamento delle informazioni è costituito da sei colonne di dati grezzi provenienti dai sensori, l’algoritmo richiederà un tempo lungo per generare il risultato voluto. Per questo motivo, il metodo della traiettoria del cursore del mouse a 2-D può essere utilizzato per fondere i dati grezzi dell’accelerometro e giroscopio e ottenere due colonne di serie di dati campionati nel tempo e successivamente inviarli all’algoritmo per il riconoscimento. In questo modo si migliora l’efficacia e la precisione dell’algoritmo di riconoscimento, e l’utente può facilmente osservare su uno schermo come procede, in tempo reale, l’elaborazione e il riconoscimento dei propri gesti. Inoltre, in modo del tutto indipendente da quale sia il punto di partenza da cui si muove il dispositivo portatile, il metodo della traiettoria del cursore del mouse a 2-D è sempre in grado di tracciare il movimento del gesto sullo schermo di un Pc o di uno smartphone in tempo reale fino a quando il suo asse longitudinale punta in avanti. Ciò significa che questo modo può essere generalizzato e reso indipendente dall’utente. La procedura che segue illustra le tre fasi necessarie per il riconoscimento di gesti complessi utilizzando il metodo della traiettoria del cursore del mouse 2-D.
- Prima fase: rilevamento del punto di partenza e di fine del gesto. Il modo più semplice è premere un pulsante sul dispositivo mobile quando il gesto ha inizio, e mantenerlo premuto rilasciandolo solo quando il gesto è stato completato. Un altro modo è quello di tenere fermo per un tempo relativamente breve il dispositivo portatile prima di iniziare il gesto. Nel breve tempo di arresto, i dati generati dall’accelerometro e dal giroscopio lungo gli assi X, Y e Z descriveranno semplicemente sei linee diritte. Il microcontrollore inizierà ad aggiornare i dati grezzi dei sensori a partire da questo momento. Quando il gesto è stato completato, l’utente può mantenere fermo il dispositivo mobile per un tempo relativamente breve. Il microcontrollore sarà quindi in grado di riconoscere questa condizione come conclusione del gesto.
- Seconda fase: ottenimento dei dati hPos e vPos che descrivono la traiettoria del cursore del mouse. Nel caso di un gesto nello spazio tridimensionale, è comunque una buona idea mostrare il movimento del cursore su uno schermo bidimensionale. In questo modo l’utente è in grado di visualizzare immediatamente la traiettoria del cursore per verificare se è congruente con il gesto che viene fatto ripetendo l’operazione diverse volte, se necessario, in modo da permettere all’algoritmo di riconoscimento di imparare, o di scartare eventuali gesti indesiderati. È possibile sviluppare un filtro complementare basato su quaternioni o un algoritmo di fusione dei sensori con filtro Kalman utilizzando i dati grezzi provenienti dall’accelerometro e giroscopio per ottenere le informazioni dinamiche degli angoli di Eulero di yaw, pitch, roll. I valori hPos e vPos per le coordinate del cursore sullo schermo possono quindi essere calcolati come segue:
dove C11 - C23 sono parametri costanti per la scala e la velocità del movimento del cursore. - Terza fase: generazione dei risultati di riconoscimento dei gesti. Nel momento iniziale del gesto, quando il dispositivo mobile e fermo, è possibile impostare manualmente hPos e vPos in modo da identificare la posizione centrale dello schermo. Il cursore traccerà quindi la traiettoria del gesto in tempo reale, come illustrato in Fig. 3. Al completamento del gesto, il cursore può trovarsi in qualunque posizione sullo schermo. L’algoritmo di riconoscimento del gesto elaborerà quindi la nuova sequenza di valori [hPos vPos] rilevati e la confronterà con i dati [hPos vPos] presenti nel database per verificare se vi è una corrispondenza.
Algoritmi per riconoscere i gesti
Attualmente sono disponibili molti algoritmi per il riconoscimento dei gesti. I due algoritmi più conosciuti sono noti come Dtw (Dynamic time warping) e Hmm (Hidden markov model). Per entrambi, esistono kit di sviluppo software che aiutano gli utenti ad accelerare lo sviluppo di applicazioni per il riconoscimento dei gesti. La disponibilità di gesti memorizzati nel database implica il fatto che le matrici di dati per ogni singolo gesto siano state ricavate tramite apposite sessioni di apprendimento e opportunamente caratterizzate, prendendo come riferimento uno specifico utente che manovra il dispositivo portatile. Se cambia l’utente, è possibile che sia necessario istruire il dispositivo a riconoscere i gesti del nuovo utente. Ogni tipo di gesto memorizzato nel database ha la medesima struttura di matrice dei dati. Entrambe le tipologie di algoritmo Dtw e Hmm permettono agli utenti di creare gesti personalizzati nel database, in qualunque momento.