Riconoscere i gesti con un sistema di sensori

I sensori di prossimità capacitivi sono di solito utilizzati per rilevare la presenza di un utente che si trova nelle immediate vicinanze del sensore. Una volta effettuata la rilevazione, l'utente può scegliere se attivare la retroilluminazione per focalizzare l’attenzione su uno specifico pulsante oppure far uscire un sistema dallo stato di basso consumo una volta rilevata la sua presenza. Nelle applicazione per il settore automotive, in particolare, i sensori di prossimità capacitivi sono impiegati per rilevare la presenza di un utente e accendere le luci dell’abitacolo o attivare il sistema di sblocco della portiera in modalità keyless (ovvero senza chiave). Oltre a rilevare la presenza di un utente nei pressi del sensore, è possibile utilizzare più sensori di prossimità, posizionati in maniera opportuna, per il riconoscimento di semplici gesti della mano nell’aria. I dati provenienti da tutti i sensori possono essere combinati per mappare i movimenti della mano di un utente che si trova nelle vicinanze dei sensori stessi. Questi gesti possono essere impiegati come ingressi di un sistema al fine che permettono, ad esempio, di controllare il lettore multimediale, di navigare su una mappa o di sfogliare una lista di brani musicali. È possibile disporre più sensori di prossimità separandoli nello spazio gli uni dagli altri secondo una configurazione (pattern) adeguata. Nel momento in cui la mano si muove tra i diversi sensori, essa sarà rilevata da ciascuno dei sensori in istanti di tempo differenti. L’ordine relativo di rilevamento della mano e il tempo che intercorre tra i rilevamenti effettuati da ciascun sensore possono essere usati per stimare direzione e rapidità del movimento della mano. I gesti possono essere semplici, come ad esempio tracciare una linea retta nell'aria muovendo la mano da sinistra a destra sopra i sensori, oppure più complessi come tracciare un cerchio nell'aria. In questo articolo verranno illustrate le modalità di implementazione del riconoscimento di gesti semplici e la possibilità di riconoscere gesti più complicati mediante l'utilizzo di più sensori in differenti configurazioni. Si considerino quattro sensori di prossimità disposti attorno al sistema di infotainment di un'autovettura.

Il posizionamento dei sensori

Il posizionamento dei sensori deve essere scelto in modo tale che esista una differenza nell'ordine secondo il quale i sensori stessi vengono innescati quando la mano esegue un gesto sopra il piano di rilevamento. Noi identifichiamo l'ordine secondo il quale i sensori sono innescati con il movimento della mano. Se l'ordine corrisponde a una qualsiasi delle sequenze prestabilite, il gesto corrispondente è rilasciato. Si consideri il semplice gesto di una mano che traccia una linea retta nell'aria muovendosi da sinistra a destra sui sensori. Quando la mano si muove da sinistra verso destra sopra i sensori, il sensore di sinistra verrà innescato per primo non appena la mano si avvicina al sistema. In questo contesto il termine "innescato" (trigger) significa che il sensore ha rilevato un oggetto in sua presenza: questo non deve essere scambiato con l'abilitazione (enable) del sensore di prossimità. I sensori di prossimità sono abilitati non appena il sistema è messo in funzione: a questo punto i sensori iniziano a eseguire la scansione degli oggetti che si trovano nelle vicinanze. Nel momento in cui la mano continua a scorrere sopra la console, i sensori posizionati nella parte inferiore e superiore sono innescati mentre il sensore a sinistra continua a restate innescato. Nel momento in cui la mano si avvicina al sensore di destra, anche quest'ultimo viene innescato. Il sensore di sinistra cessa il rilevamento della mano nel momento in cui essa esce dalla sua regione di rilevamento. Quando la mano passa sopra il sensore di destra, i sensori posizionati nelle parti inferiore e superiore non rileveranno più la presenza della mano. Quando la mano si allontana ulteriormente, anche il sensore di destra cessa l'attività di rilevamento. Esaminando l'ordine di innesco dei sensori, questo potrà essere uno di quelli riportati di seguito, in funzione della posizione della mano e delle sensibilità dei singoli sensori:

Sinistra → alto → basso → destra

Sinistra → basso → alto → destra

Sinistra → basso → destra

Sinistra → alto → destra

Tutte le sequenze di attivazione dei sensori appena elencate sono correlate con il gesto (sinistra → destra). Per implementare i sensori di prossimità capacitivi viene utilizzato un dispositivo PSoC. Un convertitore capacità/digitale - Capacitance to Digital – noto come Csd (Capsense Sigma Delta) integrato all'interno del dispositivo PSoC viene impiegato per misurare la capacità. L'uscita del modulo Csd è definita conteggio grezzo (rawcount). Maggiore è questo conteggio, più elevata sarà la capacità rilevata dal sensore. La presenza di una mano nelle vicinanze dei sensori di prossimità incrementa la loro capacità. Quando i conteggi dei sensori attraversano una certa soglia a partire dal valore base, si dice che il sensore è innescato a causa della presenza di un oggetto posto nelle sue vicinanze. Nel caso la mano si muova nella direzione opposta, con un gesto (destra → sinistra), la sequenza nella quale i sensori sono innescati è invertita. Quindi la sequenza di innesco dei sensori per un gesto (destra → sinistra) sarà la seguente:

Destra → alto → basso → sinistra

Destra → basso → alto → sinistra

Destra → basso → sinistra

Destra → alto → sinistra

I due gesti appena menzionati coinvolgono il movimento della mano in direzione orizzontale. In modo del tutto analogo, se la mano traccia una linea retta in direzione verticale, può essere un gesto (alto→basso) o un gesto (basso→alto), a seconda della direzione del movimento della mano. I gesti (su → giù) e (giù→ su) possono essere associati ad azioni molto semplici come ad esempio lo scorrimento verso l'alto o verso il basso di un menu o di una lista di brani. I gesti (sinistra → destra) e (destra → sinistra) possono essere associati al passaggio da una traccia all'altra o da un album all'altro in un lettore musicale. Gli stessi gesti possono essere usati al posto della pressione di un tasto per accendere o spegnere le luci interne dell'abitacolo di un veicolo posizionando i sensori di prossimità. Il gesto (alto → basso) è simile all'azione di pressione/rilascio (su/giù) di un tasto. Quando però un tasto viene mantenuto premuto, lo schermo mantiene l'azione di scorrimento verso l'alto o verso il basso finchè continua la pressione sul tasto. In altre parole, le azioni si "bloccano" finchè il tasto è premuto. Per rimpiazzare "in toto" l'azione del tasto con un gesto è necessario il supporto di questa funzione di blocco da parte del gesto stesso. Per espletare tale compito è necessario procedere come segue. Quando la mano si sposta dal sensore posto nella parte superiore verso il sensore posto nella parte inferiore, il sistema decodifica questo come un gesto (alto → basso) non appena la mano oltrepassa il sensore inferiore. È possibile modificare il gesto in modo tale che il comando di scorrimento verso il basso sia inviato non appena la mano raggiunge l’ultimo sensore nella sequenza dei gesti, in questo caso il sensore inferiore. Oltre a ciò, il comando viene emesso ripetutamente finchè la mano è presente sul sensore inferiore. Nel momento in cui viene raggiunta la voce del menù desiderata, la mano si sposta più in basso e si allontana dal sensore inferiore e l’emissione del comando di scorrimento viene arrestata. Di conseguenza, per implementare la funzione di blocco, invece di allontanare la mano dal sistema in un colpo solo, la si arresta sull’ultimo sensore (della sequenza) appena prima di uscire dal range di rilevamento del sensore stesso. Il comando viene emesso finchè la mano resta sul sensore. Il sensore inferiore continua a restare innescato per un tempo più lungo dopo che il sensore superiore ha terminato il rilevamento della mano. Ciò significa che la mano si è arrestata in prossimità del sensore inferiore invece di continuare a proseguire verso il basso. Per emettere un comando di blocco si verifica se il sensore superiore è stato innescato per primo e se a ciò fa seguito l'innesco del sensore inferiore. Successivamente il sensore superiore non rileva più la mano mentre quello inferiore continua a rilevare la presenza della mano nelle sue vicinanze. Dopo che la mano "staziona" nei pressi del sensore inferiore per un tempo superiore rispetto a quello della soglia stabilita, viene emesso il comando di blocco finche il sensore inferiore rileva la prossimità della mano. In maniera del tutto analoga, altri gesti possono essere modificati per integrare la funzione di blocco. In questo modo è possibile sostituire completamente con i gesti il tasto della funzione di scorrimento verso l’alto o verso il basso.

Riconoscere anche gesti complessi

Si consideri adesso un gesto un po’ più complicato, come quello di una mano che traccia un circolo nell’aria su un piano di sensori. La mano può iniziare il movimento su uno qualunque dei sensori e quindi spostarsi sopra gli altri sensori seguendo un percorso circolare (in verso orario o antiorario). Il percorso termina quando la mano raggiunge il sensore di partenza: a questo punto la mano si sposta uscendo dal loop. La mano, ad esempio, può partire dal sensore di destra e muoversi in senso orario passando successivamente sui sensori della parte superiore, sinistra e inferiore prima di uscire dal loop sul sensore di partenza (ovvero quello destro). Analogamente un percorso circolare antiorario può essere completato invertendo la direzione del movimento della mano. È altresì possibile conteggiare più rotazioni a partire dall’ordine di eccitazione dei sensori. Il gesto circolare è assimilabile all’azione di girare una manopola. Un gesto di questo tipo può essere associato a comandi quali alzare o diminuire il volume di un lettore musicale o eseguire operazioni di ingrandimento o rimpicciolimento per la navigazione su una mappa. In questo articolo è stato discusso il rilevamento di semplici gesti di una mano posta nelle vicinanze di un apparato utilizzando sensori di prossimità induttivi. Adottando i medesimi principi è possibile implementare il riconoscimento di gesti più complessi che possono coinvolgere l’uso di entrambe le mani per tracciare un percorso nell’aria. L’esito positivo del rilevamento di questi gesti dipende in larga misura dalla bontà della configurazione dei sensori scelta. Questa configurazione deve garantire una certa tolleranza per i movimenti della mano e consentire di distinguere chiaramente l’ordine nel quale i sensori vengono innescati.

Pubblica i tuoi commenti