IT201800002114A1 - Procedimento indirizzato a pazienti con disabilita' motorie per scegliere un comando mediante un'interfaccia grafica, relativo sistema e prodotto informatico - Google Patents

Procedimento indirizzato a pazienti con disabilita' motorie per scegliere un comando mediante un'interfaccia grafica, relativo sistema e prodotto informatico Download PDF

Info

Publication number
IT201800002114A1
IT201800002114A1 IT201800002114A IT201800002114A IT201800002114A1 IT 201800002114 A1 IT201800002114 A1 IT 201800002114A1 IT 201800002114 A IT201800002114 A IT 201800002114A IT 201800002114 A IT201800002114 A IT 201800002114A IT 201800002114 A1 IT201800002114 A1 IT 201800002114A1
Authority
IT
Italy
Prior art keywords
cursor
command
movement
screen
future
Prior art date
Application number
IT201800002114A
Other languages
English (en)
Inventor
Febo Cincotti
Dario Giuseppe Ferriero
Alessandro Giuseppi
Antonio Pietrabissa
Celsi Lorenzo Ricciardi
Cecilia Poli
Original Assignee
Univ Degli Studi Roma La Sapienza
St Superiore Di Sanita
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Univ Degli Studi Roma La Sapienza, St Superiore Di Sanita filed Critical Univ Degli Studi Roma La Sapienza
Priority to IT201800002114A priority Critical patent/IT201800002114A1/it
Priority to PCT/IB2019/050631 priority patent/WO2019145907A1/en
Publication of IT201800002114A1 publication Critical patent/IT201800002114A1/it

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/013Eye tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/015Input arrangements based on nervous system activity detection, e.g. brain waves [EEG] detection, electromyograms [EMG] detection, electrodermal response detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04812Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04842Selection of displayed objects or displayed text elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04801Cursor retrieval aid, i.e. visual aspect modification, blinking, colour changes, enlargement or other visual cues, for helping user do find the cursor in graphical user interfaces

Description

DESCRIZIONE dell’invenzione industriale dal titolo:
“Procedimento indirizzato a pazienti con disabilità motorie per scegliere un comando mediante un’interfaccia grafica, relativo sistema e prodotto informatico”
Campo dell’invenzione
La presente descrizione si riferisce in generale a soluzioni per scegliere un comando mediante un’interfaccia grafica. Varie forme della presente descrizione sono state sviluppate per assistere un paziente durante la movimentazione di un cursore sull’interfaccia grafica.
Sfondo
Pazienti con malattie neurodegenerative (quali sclerosi multipla e SLA) o con lesioni (causate da traumi, ischemie o tumori) al primo o secondo motoneurone, affetti da paralisi o paresi, utilizzano comunemente interfacce uomo-computer (human-computer interface, HCI) per interagire con un computer e svolgere funzioni preimpostate.
Ad esempio, possono essere citati i seguenti documenti:
- Raya R., et al., "A Robust Kalman Algorithm to Facilitate Human-Computer Interaction for People with Cerebral Paisy, Using a New Interface Based on Inertial Sensors ”, Sensore 2012, 12, pp. 3049-3067, DOI: 10.3390/s120303049;
- Raya R., et al., “ Design of Input/Output Mapping for a Head-Mounted Interface According to Motor Signs Caused by Cerebral Palsy ", Assistive Technology Research Series, 33, pp. 1039-1044. 2013, DOI: 10.3233/978-1-61499-304-9;
- López-Vicente A., et al., “Adaptive inputs in an interface for people with Dyskinetic Cerebral Palsy: Learning and usability”, Technology and Disability, 28, pp. 79-89, 2016, DOI: 10.3233/TAD-160446;
- Velasco M.A., et al., “Human-computer interaction for users with cerebral palsy based on head orientation. Can cursor’s movement be modeled by Fitts’s law?”, International Journal of Human-Computer Studies, Volume 106, 2017, pp. 1-9DOI: 10.1016/j.ijhcs.2017.05.002;
- Raya R., et al. “ Empowering the autonomy of children with cognitive and physical impairments by inertial head tracking”, Procedia Chemistry, Volume 1, Issue 1, September 2009, pp. 726-729, DOI: 10.1016/j. proche.2009.07.181;
- Raya R., et al. “ Wearable inertial mouse for children with physical and cognitive impairments”, Sensors and Actuators, A: Physical, 2010, 162(2), pp.
248-259; e
- Raya R., et al ,,”Characterizing head motor disorders to create nove I interfaces for people with cerebral palsy: creating an alternative communication channel by head motion”, IEEE Int Conf Rehabil Robot, 2011; 2011:5975409. DOI: 10.1109/ICORR.2011.5975409.
In particolare, il documento Sesin A., et al., " Adaptive eye-gaze tracking using neural-network-based user profiies to assist people with motor disability", Electrical and Computer Engineering Faculty Publications, 28, 2008, DOI: 10.1682/JRRD.2007.05.0075, descrive un’interfaccia HCI adattiva in grado di assistere persone con gravi disabilità motorie.
L’interfaccia HCI proposta in tale documento utilizza come dispositivo di ingresso un eye-tracker, cioè un dispositivo per l’oculometria (vale a dire il monitoraggio oculare/tracciamento dell'occhio). Tale dispositivo viene utilizzato per controllare lo spostamento del cursore del mouse su un computer. Tuttavia, gli spostamenti dell’occhio, soprattutto le saccadi, possono generare sporadici movimenti del cursore. Anche se tali spostamenti dell’occhio sono spesso impercepibili da un occhio umano, tali spostamenti possono influenzare negativamente l’accuratezza di un’interfaccia HCI che utilizza la posizione dell’occhio per interagire con un computer.
Pertanto, il documento citato propone un’interfaccia HCI in grado di adattarsi a ciascun utente, compensando anche il rumore che può variare nel tempo. In particolare, il documento propone una rete neurale artificiale (artificial neural network, ANN), quale una rete di tipo “ multilayer perceptron ", che, opportunamente configurata e addestrata, minimizza il tremolio del cursore. Ad esempio, durante una fase di addestramento, l’utente effettua una breve sessione di training e la rete neurale impara la relazione tra le coordinate grezze dell’occhio (come fornito dall’eye-tracker) e la posizione del cursore richiesto. Nel documento citato, si utilizza a tale scopo una piccola interfaccia grafica che permette quindi di generare diversi profili di utente che hanno rispettive configurazioni per la rete neurale.
Simili problematiche si pongono anche quando si utilizza un dispositivo di head tracking come dispositivi di ingresso, ovvero un dispositivo per il monitoraggio della posizione e/o dello spostamento della testa di un utente. Ad esempio, tipicamente un tale dispositivo comprende un accelerometro e/o giroscopio triassiale e opportuni mezzi di fissaggio per fissare tali sensori alla testa di un’utente.
Sono note anche altre soluzioni che permettono di ridurre il rumore/tremolio del cursore. Ad esempio, possono essere citati i documenti US 2007/0216641 A1, US 2011/0050563 A1, US 8,566,696 B1, o Ziebart B., et al., “Probabilistic Pointing Target Prediction via Inverse Optimal Control, Proceedings International Conference on Intelligent User Interfaces, 2012, DOI: 10.1145/2166966.2166968. L’impiego di simile interfaccia HCI è stato affrontato anche in altri documenti, quali ad esempio US 9,563,740 B2, US 9,325,799 B2, US 8,702,629 B2, US 8,441,356 B1, US RE46310 E1.
Sommario dell’invenzione
La presente descrizione ha lo scopo di fornire nuove soluzioni per muovere un cursore su un monitor in base a dati di ingresso, ad esempio forniti da un soggetto mediante un eye-tracker o un head-tracker.
Secondo una o più forme di attuazione, uno o più degli scopi precedenti sono raggiunti attraverso un procedimento avente gli elementi distintivi esposti specificamente nelle rivendicazioni che seguono. Le forme di attuazione riguardano inoltre un relativo sistema, così come un relativo prodotto informatico corrispondente, caricabile nella memoria di almeno un elaboratore e comprendente porzioni di codice software per effettuare le fasi del procedimento quando il prodotto è eseguito su un elaboratore. Come usato qui, un riferimento a un tale prodotto informatico intende essere equivalente a un riferimento a un mezzo leggibile da elaboratore contenente istruzioni per controllare un sistema di elaborazione per coordinare l’esecuzione del procedimento. Un riferimento ad “almeno un elaboratore” intende evidentemente evidenziare la possibilità che la presente descrizione sia implementata in maniera distribuita/modulare.
Le rivendicazioni formano parte integrante dell’insegnamento tecnico qui fornito in relazione all’invenzione.
Come spiegato in precedenza, la presente descrizione riguarda soluzioni per scegliere un comando mediante un’interfaccia grafica. In particolare, un’unità di controllo predispone una schermata da mostrare su uno schermo, in cui la schermata comprende un cursore ed una pluralità di aree. In particolare, a ciascuna area è associato un rispettivo comando e un comando viene scelto spostando il cursore nella area associata con il rispettivo comando.
In varie forme di attuazione, l’unità di elaborazione memorizza una pluralità di traiettorie non assistite durante una fase di apprendimento. A tale scopo, l’unità di elaborazione seleziona un comando di target e segnala il comando di target ad un’utente. Successivamente, l’utente sposta mediante uno o più dispositivi di ingresso il cursore nella direzione del comando di target.
Pertanto, l’unità di elaborazione riceve dal dispositivo di ingresso dati che identificano una posizione richiesta per il cursore, e l’unità di elaborazione muove il cursore in funzione di tali dati. Quindi, memorizzando i dati, l’unità di elaborazione registra una o più traiettorie non assistite per ciascun comando di target.
Durante una fase di personalizzazione, l’unità di elaborazione elabora le traiettorie non assistite per addestrare un classificatore configurato per stimare un comando di target in funzione di dati che identificano una sequenza di posizioni. Ad esempio, in varie forme di attuazione, il classificatore è una rete neurale artificiale, preferibilmente una rete di tipo feed-forward. In varie forme di attuazione, l’unità di elaborazione può anche estrarre da ciascuna traiettoria non assistita una o più features, quali ad esempio la posizione iniziale del cursore, la posizione finale del cursore, la velocità media verso ciascun comando, e la deviazione standard della velocità verso ciascun comando. Ad esempio, tali features possono essere fornite come input alla rete neurale artificiale.
Durante una fase di funzionamento, l’unità di elaborazione può quindi assistere l’utente durante lo spostamento del cursore. Ad esempio, a tale scopo l’unità di elaborazione riceve dal dispositivo di ingresso nuovamente dati che identificano una posizione richiesta per il cursore. Tuttavia, in questo caso, l’unità di elaborazione stima mediante il classificatore un comando di target. Conoscendo la stima del comando di target, l’unità di elaborazione stima poi una sequenza di valori futuri per la movimentazione del cursore e muove il cursore sequenzialmente in funzione di tali valori futuri.
In particolare, in varie forme di attuazione, la stima comprende il calcolo di una funzione di costo determinata in funzione di un determinato numero di valori passati delle posizioni richieste e la funzione di target stimata. Ad esempio, tipicamente, l’unità di elaborazione sceglie la sequenza di valori futuri che minimizza la funzione di costo.
Ad esempio, in varie forme di attuazione, il cursore è identificato con dati di posizioni assolute sullo schermo e dati di orientamento, che indicano ad esempio l’angolo di rotazione del cursore rispetto all’asse orizzontale sullo schermo.
In varie forme di attuazione, l’unità di elaborazione calcola quindi per ciascun valore futuro per la movimentazione del cursore un rispettivo valore futuro della posizione del cursore. In questo caso, la funzione di costo può comprendere un primo termine che prende in considerazione la distanza tra ciascun valore futuro della posizione del cursore e la posizione del comando target.
Similmente, l’unità di elaborazione può calcolare per ciascun valore futuro per la movimentazione del cursore un rispettivo valore futuro deN’orientamento del cursore. In questo caso, la funzione di costo può comprendere un secondo termine che prende in considerazione i valori futuri deN’orientamento del cursore rispetto al comando target.
In varie forme di attuazione, l’unità di elaborazione stima inoltre, ad esempio mediante interpolazione/estrapolazione, per ciascun valore futuro per la movimentazione del cursore un rispettivo valore futuro della posizione richiesta. In questo caso, la funzione di costo può comprendere un terzo termine che prende in considerazione la distanza tra ciascun valore futuro della posizione del cursore e un rispettivo valore futuro delle posizioni richieste stimate.
Ad esempio, in varie forme di attuazione, si utilizza il Model Predictive Control per risolvere tale problema di ottimizzazione della funzione di costo. Il Model Predictive Control può anche utilizzare uno o più vincoli per ciascun valore futuro per la movimentazione del cursore, quali ad esempio limiti massimi costanti e/o determinati dinamicamente per le variazioni della velocità di spostamento e/o la velocità di rotazione del cursore, limiti massimi costanti e/o determinati dinamicamente per il valore assoluto della velocità di spostamento e/o la velocità di rotazione del cursore, e/o limiti per i dati di posizioni del cursore.
Breve descrizione dei disegni
Varie forme di attuazione saranno ora descritte, a puro titolo di esempio non limitativo, con riferimento alle figure annesse, in cui:
- la Figura 1 mostra una rappresentazione schematica di un sistema che permette ad un utente di controllare uno o più funzioni mediante lo spostamento di un cursore mostrato su uno schermo;
- la Figura 2 mostra uno schema a blocchi del collegamento tra i vari componenti del sistema della Figura 1;
- le Figure 3 e 4 mostrano due possibili schermate che possono essere mostrate sullo schermo del sistema della Figura 1;
- le Figure 5 e 6 mostrano due dispositivi di ingresso che possono essere utilizzati per spostare il cursore nel sistema della Figura 1 ;
- le Figure 7 e 8 mostrano possibili spostamenti del cursore sullo schermo del sistema della Figura 1;
- la Figura 9 mostra una forma di attuazione di un sistema in grado di apprendere le caratteristiche dei dati forniti dal dispositivo di ingresso;
- la Figura 10 mostra una forma di attuazione del modello del cursore; - la Figura 11 mostra una forma di attuazione di un procedimento per spostare il cursore sullo schermo del sistema della Figura 1 prendendo in considerazione anche i dati di apprendimento, in modo tale da ridurre il rumore dello spostamento del cursore sullo schermo del sistema della Figura 1; e
- la Figura 12 mostra uno schema a blocchi che riassume le operazioni eseguite dal sistema della Figura 1.
Descrizione dettagliata di forme di realizzazione preferite
Nella seguente descrizione sono illustrati vari dettagli specifici finalizzati ad una approfondita comprensione di esempi di una o più forme di attuazione. Le forme di attuazione possono essere realizzate senza uno o più dei dettagli specifici, o con altri metodi, componenti, materiali ecc. In altri casi, strutture, materiali o operazioni noti non sono mostrati o descritti in dettaglio per evitare di rendere oscuri vari aspetti delle forme di attuazione.
Il riferimento ad “una forma di attuazione” nellambito di questa descrizione sta ad indicare che una particolare configurazione, struttura o caratteristica descritte in relazione alla forma di attuazione è compresa in almeno una forma di attuazione. Quindi, frasi come “in una forma di attuazione”, eventualmente presenti in diversi luoghi di questa descrizione, non sono necessariamente riferite alla stessa forma di attuazione. Inoltre, particolari conformazioni, strutture o caratteristiche possono essere combinate in un modo adeguato in una o più forme di attuazione.
I riferimenti qui utilizzati sono soltanto per comodità e non definiscono dunque l’ambito di tutela o la portata delle forme di attuazione.
Come spiegato in precedenza, varie forme della presente descrizione riguardano soluzioni per realizzare un’interfaccia tra uomo e computer, ad esempio per soggetti con disabilità motorie, quali ad esempio pazienti con malattie neurodegenerative (quali sclerosi multipla e SLA) o con lesioni (causate da traumi, ischemie o tumori) al primo o secondo motoneurone, affetti da paralisi o paresi.
Le Figure 1 e 2 mostrano l’architettura generale di un sistema in accordo con la presente descrizione.
Nella forma di attuazione considerata, il sistema comprende un’unità di elaborazione PU, un display D e almeno un dispositivo di ingresso I.
In varie forme di attuazione, l’unità di elaborazione PU mostra sullo schermo D una schermata che mostra una pluralità di funzioni/azioni F. Ad esempio, la Figura 3 mostra una schermata che comprende otto funzioni F1..F8. In particolare, a ciascuna funzione F1..F8 è associata una rispettiva area sullo schermo D, in cui le area sono disposte in diverse posizioni sullo schermo D. L’unità di elaborazione PU mostra inoltre sullo schermo D un cursore C. In particolare, in varie forme di attuazione, l’unità di elaborazione PU è configurata per muovere il cursore C sullo schermo D in funzione dei dati ricevuti dal o dai dispositivi di ingresso I fino a quando il cursore raggiunge una determinata area associata con una delle funzioni F1..F8.
In particolare, in varie forme di attuazione, l’unità di elaborazione PU seleziona un’azione solo se il cursore C si ferma all’interno del perimetro della area associata con tale azione. Preferibilmente, l’unità di elaborazione PU può anche verificare se il cursore C rimane nella area per un tempo prestabilito. In generale, le area possono avere qualsiasi forma, quale ad esempio, rettangolare, quadrata, circolare, etc.
Pertanto, l’unità di elaborazione PU può essere, ad esempio, un computer desktop, un computer portatile, o una scheda embedded, quale ad esempio Raspberry PI®. Ad esempio, tale unità di elaborazione PU può comprendere un microprocessore ed una memoria che contiene il software che viene eseguita dal microprocessore. Ad esempio, tale software può comprendere un sistema operativo (quale ad esempio Microsoft Windows®, Linux®, iOS®, Android®, etc.) ed un programma informatico che gestisce il o i dispositivi I e l’interfaccia utente mostrata sullo schermo D. A tale scopo, l’unità di elaborazione PU comprende:
- una prima interfaccia, quale ad esempio porta PS/2, RS-232 o USB, e/o un ricetrasmettitore Bluetooth® per il collegamento al o ai dispositivi I; e
- una seconda interfaccia, quale ad esempio una porta VGA, DVI o HDMI, per il collegamento allo schermo D.
In generale, con paziente o utente si intende quindi l’utilizzatore U del sistema, che tipicamente è affetto da una disfunzionalità motoria. Invece, con interfaccia grafica si intende lo strumento (ovvero il programma informatico eseguito dall’unità di elaborazione PU) con cui il paziente U è in grado di interagire con il sistema, in particolare per spostare il cursore C in modo tale da selezionare una funzione F.
Pertanto, in varie forme di attuazione, il dispositivo di ingresso I fornisce dati che identificano una posizione assoluta richiesta o uno spostamento richiesto del cursore C in direzione sia verticale sia orizzontale. In particolare, con spostamento si intende uno spostamento del cursore C rispetto alla precedente posizione del cursore C che quindi permette di calcolare nuovamente una posizione assoluta richiesta. Ad esempio, in varie forme di attuazione, il dispositivo I può fornire direttamente dati che identificano uno spostamento verticale e orizzontale del cursore C (ad esempio un numero di pixel). Pertanto, nel caso più semplice il dispositivo I può comprendere un mouse, un touchpad, un track-ball e/o un joystick. Tuttavia, il dispositivo di ingresso I può comprendere anche altri sensori configurati per fornire dati almeno bi-dimensionali che possono essere utilizzati per determinare uno spostamento del cursore C. Ad esempio, in varie forme di attuazione, il dispositivo di ingresso I può monitorare la posizione/movimentazione di una parte del corpo dell’utente U, quale ad esempio della testa, della mano e/o degli occhi dell’utente U. Pertanto, il dispositivo di ingresso I può comprendere anche un head-tracker e/o eye-tracker.
Ad esempio, il dispositivo di ingresso I può comprendere una piattaforma inerziale 11 comprendente un accelerometro e/o giroscopio (preferibilmente triassiale) ed eventualmente un magnetometro configurati per rilevare dati che permettono di identificare l’orientamento e/o la movimentazione della teste dell’utente U. Ad esempio, tali sensori che implementano un head-tracker possono essere fissati direttamente alla testa dell’utente U, ad esempio mediante una fascia, un casco o un headset. In generale possono essere utilizzati anche dispositivi commerciali come head-tracker che forniscono già dati elaborati, tipicamente dati di inclinazione (ad esempio beccheggio, rollio ed imbardata). Ad esempio, come mostrato anche in Figura 5, utilizzando i dati forniti dal dispositivo 11, l’unità di elaborazione può determinare un angolo di roll/rollio α e un angolo di pitch/beccheggio β. Ad esempio, in varie forme di attuazione, il dispositivo 11 o l’unità di elaborazione PU è configurato per convertire l’angolo di rollio a della testa in una posizione o uno spostamento orizzontale e l’angolo di beccheggio β della testa in una posizione o uno spostamento verticale.
Aggiuntivamente o in alternativa, il dispositivo di ingresso I può comprendere una o più telecamere I2. Ad esempio, mediante opportuna elaborazione di immagini, anche una telecamera I2 può rilevare l'inclinazione e/o la posizione della testa dell’utente U. In questo caso, il dispositivo I2 può essere in un posto fisso, ad esempio fissato allo schermo D.
Invece, focalizzando la telecamera I2 sugli occhi dell’utente U, tale telecamera I2 può anche fornire dati che identificano la posizione/movimentazione delle pupille utente U. Ad esempio, questa soluzione è vantaggiosa nel caso in cui il paziente fosse impossibilitato al movimento del collo. In questo caso, la telecamera I2 (che implementa quindi un eye-tracker) può essere fissato anche alla testa dell’utente U. Al posto di una telecamera I2 con rispettiva elaborazione d’immagine possono essere utilizzati anche dispositivi commerciali come eye-tracker che forniscono già dati elaborati.
Ad esempio, le coordinate dell’occhio possono essere le coordinate cartesiani del centro della pupilla (o di ciascun pupilla) rispetto a determinate coordinate di riferimento, che ad esempio corrispondono al centro dell’occhio. Invece, la Figura 6 mostra un esempio in cui il dispositivo I2 fornisce coordinate polari, cioè un angolo γ ed una distanza <5 del centro della pupilla (o di ciascun pupilla) rispetto alle coordinate di riferimento.
Ad esempio, in varie forme di attuazione, il dispositivo I2 o l’unità di elaborazione è configurato per convertire una posizione verticale dell’occhio rispetto alla sua posizione centrale in una posizione verticale del cursore C e una posizione orizzontale dell’occhio rispetto alla sua posizione centrale in una posizione orizzontale del cursore C.
In generale, l’unità di elaborazione PU, lo schermo D e il o i dispositivi I, quale ad esempio la telecamera I2, possono quindi essere integrati anche in un unico dispositivo integrato, quale ad esempio un computer portatile con webcam, uno smartphone o un tablet.
In varie forme di attuazione, l’unità di elaborazione PU elabora quindi i dati forniti dal o dai dispositivi I (ad esempio lo spostamento/inclinazione della testa e/o la posizione del o degli occhi) in modo tale da determinare una posizione orizzontale richiesta X e una posizione verticale richiesta Y per il cursore C sullo schermo D.
Come spiegato in precedenza, in varie forme di attuazione, l’unità di elaborazione PU è configurata per muovere il cursore C fino a quando la posizione ( X,Y) del cursore C raggiunge la posizione di una delle funzioni F sullo schermo D. Ad esempio, a ciascuna funzione F può essere associato una rispettiva funzione software. In varie forme di attuazione, l'interfaccia grafica può anche supportare una modalità di configurazione, in cui un operatore può configurare le funzioni F che vengono mostrate, ad esempio per configurare il numero delle funzioni, la disposizione delle funzioni sullo schermo, e/o il tipo di azione da svolgere ed eventuali parametri di configurazione per le funzioni.
Ad esempio, come mostrato in Figura 2, una o più delle funzioni F possono essere utilizzate per controllare il funzionamento di uno o più attuatori A collegati operativamente all’unità di elaborazione PU. A tale scopo, l’unità di elaborazione PU comprende una o più interfaccia per il collegamento al o agli attuatori A.
Ad esempio, in varie forme di attuazione una funzione F1 potrebbe essere utilizzata per controllare il funzionamento di un televisore. Ad esempio, a tale scopo, gli attuatori A possono comprendere un trasmettitore o un ricetrasmettitore T/R, quale ad esempio un trasmettitore infrarosso, che permette di inviare segnali infrarossi al televisore.
In varie forme di attuazione, una funzione F2 potrebbe essere utilizzata per inviare un segnale di emergenza. Ad esempio, a tale scopo, un attuatore A poterebbe comprendere mezzi di trasmissione EC per trasmettere tale segnale di emergenza, quali ad esempio:
- un combinatore telefonico, ad esempio un combinatore GSM, per effettuare una chiamata ad un numero telefonico preimpostato,
- un modulo, quale ad esempio un modulo di telefonia radiomobile (GSM, GPRS, 3G, LTE, etc.), per inviare un messaggio del servizio short message Service (SMS) o un altro servizio di messaggistica, quale ad esempio un’e-mail.
In varie forme di attuazione, una o più funzioni (ad esempio le funzioni F3..F8) possono essere configurate per pilotare attuatori per un controllo domotica, quali ad esempio per l’accensione/spegnimento di una o più lampade L, un condizionatore/riscaldamento, un apriporta, una telecamera di sorveglianza, etc. A tale scopo, l’unità di elaborazione PU può comprendere un’interfaccia per controllare, ad esempio, la commutazione di uno o più interruttori.
Come mostrato in Figura 4, ciascuno funzione F può anche non azionare direttamente un attuatore A, ma (una volta raggiunta la corrispondente posizione), l’unità di elaborazione PU può mostrare un’ulteriore schermata di selezione in cui l’utente può scegliere tra uno o più sotto funzioni associate alla funzione selezionata nella schermata principale (vedere Figura 3). Ad esempio, con riferimento al controllo di una televisore, la schermata può comprendere quattro funzioni F11..F14 che sono disposte in diverse posizioni, rispettivamente per selezionare il prossimo canale, selezionare il precedente canale, alzare il volume o abbassare il volume. La schermata può comprende anche un’ulteriore funzione F15 per tornare alla schermata precedente.
In generale, una o più funzioni possono anche essere mostrate in ciascuna schermata, quale ad esempio la funzione F2 per inviare un segnale di emergenza.
La Figura 4 mostra inoltre, che le area associate alle funzioni F possono avere anche diverse forme e/o dimensioni, ad esempio per facilitare l’invio del segnale di emergenza.
Quindi, utilizzando ad esempio un head-tracker o eye-tracker, le soluzioni qui descritte possono assistere pazienti affetti da paresi ed in grado di muovere (anche limitatamente) il collo o gli occhi per un controllo in ambito di domotica, in quanto i pazienti che necessitano di interfacce di questo tipo hanno bisogno generalmente di assistenza per svolgere in autonomia azioni quotidiane, quali l’accensione delle luci, la regolazione della temperatura della stanza o l’attivazione di un cercapersone.
Il sistema oggetto della presente descrizione mira a controllare in maniera assistita lo spostamento del cursore C sull'interfaccia grafica tramite la quale l’utente/il paziente U è in grado di attivare le funzioni F che desidera. Ad esempio, nel caso di pazienti affetti da paresi, esso può far uso di una piattaforma inerziale fissata alla testa del paziente, per ottenere dati riguardo all'inclinazione e/o movimentazione della testa dellutente U. Le funzionalità tuttavia non sono dipendenti dall’impiego di tale piattaforma inerziale, infatti, nel caso di pazienti affetti da paralisi totale, il sistema può essere interfacciato con sensori in grado di rilevare il movimento oculare, in modo tale da muovere il cursore C sull’interfaccia con le medesime modalità. L’utilizzo di altri sensori è supportato, purché i dati forniti possano essere correlati ad una posizione assoluta bidimensionale richiesta (X, Y) di un cursore C su un’interfaccia grafica.
La Figura 12 mostra una forma di attuazione di un procedimento che controlla la posizione del cursore C in funzione dei dati forniti dal o dai dispositivi I.
Nella forma di attuazione considerata, dopo un passo d’inizio 1000, il procedimento incontra un passo opzionale di pre-elaborazione 1002 dei dati forniti dal o dai dispositivi I.
Ad un passo 1004 il procedimento muove il cursore C in funzione dei dati forniti dal o dai dispositivi I. In generale, l’unità di elaborazione PU potrebbe spostare al passo 1004 il cursore C direttamente alla posizione richiesta (X,Y) che a sua volta viene determinata in funzione dei dati forniti dal o dai dispositivi I. Tuttavia, come spiegato in precedenza, tali dati possono anche comprendere rumore, in particolare quando si utilizza dispositivi del tipo eye-tracker o headtracker. Per questo motivo, in varie forme di attuazione, l’unità di elaborazione PU è configurata per spostare il cursore C prendendo in considerazione anche precedenti valori per i parametri X e Y, determinando quindi una traiettoria che risulta meno rumorosa. Varie forme di attuazione non utilizzano solo un metodo personalizzato per la riduzione del rumore dello spostamento del cursore C, ma utilizzano anche un processo in grado di predire l’azione F scelta dall’utente.
In particolare, in varie forme di attuazione, il procedimento prevede una fase di apprendimento ad un passo 1008 ed una fase di personalizzazione ad un passo 1010, in cui l’unità di elaborazione PU modifica il controllo delle funzionalità del sistema, adattandosi alle diverse necessità e problematiche del paziente che lo utilizza, indipendentemente dalla patologia da cui è afflitto e dalla severità della stessa.
Successivamente, durante una fase di funzionamento normale 1012, il sistema utilizza i dati acquisiti per controllare la movimentazione del cursore C. Come verrà descritto in seguito, grazie alle fasi 1008 e 1010, l'interfaccia HCI può anche essere in grado di predire/stimare in maniera automatica quale azione F l’utente/paziente U voglia intraprendere e lo assiste nella sua selezione, richiedendo quindi al paziente il minore sforzo possibile.
Nella forma di attuazione considerata, l’unità di elaborazione PU determina ad un passo 1006 se dovrebbe essere avviata la fase di apprendimento oppure il funzionamento normale. Ad esempio, la fase di apprendimento può essere avviata al primo lancio del programma, periodicamente e/o selezionando un’opportuna funzione all’interno del programma.
Pre-elaborazione dei dati
Come menzionato in precedenza, In varie forme di attuazione, l’unità di elaborazione PU può effettuare al passo 1002 una o più operazioni su dati forniti dal o dai dispositivi di ingresso I.
Ad esempio, in base al tipo di dati forniti dal dispositivo di ingresso I, l’unità di elaborazione PU può convertire le coordinate delle posizioni richieste dal sistema di riferimento del dispositivo di ingresso I a quello dell’interfaccia grafica. Ad esempio, tipicamente è sufficiente scalare i dati forniti in base ad un coefficiente di proporzionalità. Ad esempio, in varie forme di attuazione si utilizzano le seguenti equazioni per la conversione tra i dati originali (X,Y) e i dati convertiti ( X,Y ):
dove Lx e Ly corrispondono alle distanze massima misurabili sul rispettivo asse x o y, e i parametri con l’apice sono nel sistema di riferimento dell'interfaccia grafica. In particolare, in varie forme di attuazione il sistema di riferimento dell'interfaccia grafica ha l’origine nel suo centro e quindi L’x e L’y sono pari alla metà della rispettiva risoluzione impiegata espressa in pixel.
In varie forme di attuazione, l’unità di elaborazione PU può filtrare le coordinate ( Χ,Υ) o preferibilmente direttamente i dati provenienti dai dispositivi di input I che vengono utilizzati per determinare le coordinate (X,Y). In generale, tale filtraggio può essere effettuato anche già nel dispositivo I. Infatti, movimenti troppo bruschi del cursore C (anche durante la fase di apprendimento) sono indesiderati e possono essere causati da rumori di misura o tremiti del paziente. Ad esempio, l’unità di elaborazione PU e/o il dispositivo I può utilizzare un filtro passa-basso, ad esempio con banda passante di 50Hz. Come menzionato, tale filtraggio viene preferibilmente applicato ai dati acquisiti dal dispositivi I, ad esempio ai segnali di accelerazione/inclinazione, ed è quindi temporalmente antecedente al calcolo della posizione del cursore ( X,Y ).
Movimentazione del cursore
Come spiegato in precedenza, in varie forme di attuazione, l’unità di elaborazione PU muove il cursore C non direttamente in funzione della attuale posizione richiesta ( X,Y) (che come descritto in precedenza viene determinata in funzione dei dati fornite da uno o più dispositivi di ingresso I), ma l’unità di elaborazione PU prende in considerazione anche le precedenti posizioni richieste. In questo contesto, l’unità di elaborazione PU utilizza una traiettoria di lunghezza n formato di coppie/vettori ( X,Y) che corrispondono alle posizioni determinate ad istanti temporali i = 1,2 ,.,.,n. In varie forme di attuazione, gli istanti di campionamento sono scelti in maniera uniforme con frequenza di campionamento costante fc. Ad esempio, la frequenza di campionamento fc può essere tra 1 e 50 Hz, preferibilmente tra 5 e 20 Hz, ad esempio 10 Hz.
Ad esempio, assumendo n = 5, la traiettoria comprende la sequenza di posizioni richieste:
[X(1), Y(1); X(2), Y(2); X(3), Y(3); X(4), Y(4); X(5), Y(5)]
In varie forme di attuazione, l’unità di elaborazione PU utilizza due tipi di traiettorie distinti: traiettorie non assistite e traiettorie assistite.
In particolare, le traiettorie non assistite corrispondono alle traiettorie delle posizioni richieste X e Y determinate in base ai dati campionati. In varie forme di attuazione, l’unità di elaborazione PU è configurata per acquisire e memorizzare in una banca dati DB (vedere anche Figura 2) una o più di queste traiettorie al fine dell'apprendimento ed eventualmente personalizzazione del sistema. Queste traiettorie rappresentano la base di conoscenza del sistema in quanto, essendo misurate in totale assenza di azione di supporto, contengono informazioni riguardo le difficoltà del paziente nel controllo del cursore C. Infatti, pazienti affetti da condizioni diverse hanno diverse difficoltà nell’utilizzo dell’interfaccia. Nelle Figure 7a e 7b sono rappresentate a titolo di esempio due traiettorie per lo stesso comando: “sposta il cursore in alto a destra”. È evidente che il paziente che ha generato la traiettoria di sinistra presenta un leggero tremolio perpendicolare alla direzione dello spostamento, necessitando quindi di un’azione di supporto meno invasiva, mentre il paziente della traiettoria di destra presenta piccoli scatti anche in direzione opposta a quella del comando, richiedendo quindi un’assistenza maggiore.
Le traiettorie assistite al contrario rappresentano la sequenza delle posizioni seguite dal cursore C in presenza dell’azione di supporto. Nelle Figure 8a e 8b sono rappresentate due possibili traiettorie assistite, per i pazienti mostrati nelle Figura 7a e 7b, in cui oltre alla riduzione del “disturbo”, specialmente per la traiettoria di sinistra, si può vedere anche l’aspetto predittivo, in particolare nella traiettoria di destra. In particolare, nella traiettoria di destra si può infatti notare come la consapevolezza della direzione desiderata dal paziente, che come verrà spiegato in seguito può essere ottenuto in base allo studio delle traiettorie non assistite, il cursore C continui a spostarsi, seppur più lentamente, nella direzione desiderata anche negli intervalli di tempo in cui il paziente presentava “scatti” che avrebbero mosso il cursore C nella direzione opposta.
Fase di apprendimento
Come spiegato in precedenza, in varie forme di attuazione, al fine di poter personalizzare l’assistenza, l'interfaccia grafica prevede una fase di apprendimento 1008 durante la quale il sistema procede alla raccolta di traiettorie non assistite e del rispettivo comando F desiderato. Le coppie traiettoria-comando vengono inserite nella banca dati DB, ovvero la base di conoscenza del sistema. In varie forme di attuazione, la quantità di dati da raccogliere per completare la personalizzazione può essere modificabile.
Ad esempio, per effettuare l’apprendimento, il programma può lanciare al passo 1006 automaticamente la fase di apprendimento al primo avvio del programma e fino a quando l’apprendimento non sia stato completato. Aggiuntivamente o in alternativa, il programma può prevedere un’opzione specifica per la configurazione del programma.
In varie forme di attuazione, la raccolta delle traiettorie non assistite avviene in maniera guidata. Ad esempio, come mostrato in Figura 9, l’unità di elaborazione PU è configurata per comunicare (visivamente sullo schermo D e/o acusticamente pilotando un altoparlante) all’utente U di selezionare determinati comandi F ponendo il cursore C in diverse posizioni iniziali (come ad esempio: cursore al centro dell'interfaccia, cursore lontano o prossimo al comando desiderato, vicino ad un altro comando, etc.), così da garantire la ricchezza informativa della base di conoscenza del sistema. Successivamente, l’unità di elaborazione PU monitora periodicamente i dati forniti dal o dai dispositivi I e determina le coordinate richieste ( X,Y ). Preferibilmente, l’unità di elaborazione PU sposta durante questa fase il cursore C direttamente alla posizione (X, Y) attualmente richiesta.
Durante ciascuna operazione di selezione richiesta, l’unità di elaborazione PU registra una o più di traiettorie. Quindi, in varie forme di attuazione, la banca dati DB comprende un insieme di traiettorie non assistite (ciascuna composta da una sequenza di posizioni richieste mediante il dispositivo I) con rispettivo comando F, che possono essere raggruppati ad esempio sotto forma di una tabella all’interno della banca dati DB:
In varie forme di attuazione, la lunghezza tipica delle traiettorie può essere di dodici campioni selezionati con un tempo di campionamento Tc = 1/fc di 0.1 secondi.
Ad esempio, nel caso in cui l’utente impieghi 24 campionature per raggiungere la posizione richiesta, il programma registrerà una prima traiettoria di 12 campioni dalla posizione iniziale dell’apprendimento ad una posizione intermedia ed una seconda traiettoria di 12 campioni dalla posizione intermedia fino alla posizione finale. In generale, non è rilevante se l’utente raggiunga anche la posizione finale, poiché lo scopo della fase di apprendimento è la raccolta di traiettorie indirizzate verso un determinato target. Ad esempio, a tale scopo può essere previsto un time-out o un limite massimo di traiettorie acquisite per un determinato comando selezionato. Ad esempio, tipicamente il numero di traiettorie acquisite per un comando selezionato può essere tra le tre e le quindici. Inoltre, per il paziente medio può essere prevista la raccolta di un numero totale di traiettorie non assistite pari a cinquanta volte il numero di comandi selezionabili sull’interfaccia, al fine di rendere la raccolta completabile nell’arco di pochi minuti.
In varie forme di attuazione i relativi parametri (lunghezza delle traiettorie memorizzate nella banca dati DB, numero di traiettorie da acquisire e/o il tempo/la frequenza di campionamento Tc/fc) possono essere modificabile, ad esempio da parte dal medico curante o dall’operatore che provvederà allinstallazione del sistema a seconda della problematica del paziente.
In varie forme di attuazione, i dati così raccolti del sistema e memorizzati nella banca dati DB possono essere aggiornati periodicamente, anche solo in parzialmente, così da poter far adattare i dati all’evoluzione, sia essa migliorativa o peggiorativa, della condizione del paziente.
Fase di personalizzazione
Al termine della fase di raccolta informazioni, l’unità di elaborazione procede alla fase di personalizzazione 1008. L’interfaccia oggetto della presente descrizione basa le sue capacità predittive sull'individuazione del comando F desiderato dell’utente. In particolare, in varie forme di attuazione, il sistema è configurato per individuare verso quale comando F tra i vari disponibili l’utente vorrebbe muovere il cursore C, basandosi sullo studio dei segnali provenienti dai sensori di input I.
In varie forme di attuazione, per ottenere questo risultato, l’unità di elaborazione PU utilizza la base di conoscenza raccolta nella precedente fase per allenare un classificatore multi-classe basato su tecniche di machine learning.
In particolare, in varie forme di attuazione, l’analisi dei dati memorizzati nella banca dati DB che costituisce la base di conoscenza inizia da un processo di estrazione delle informazioni caratterizzanti, cosiddetti features, contenute nei dati raccolti. A tal fine, da ciascuna traiettoria non assistita sono estratte le seguenti informazioni:
- posizione iniziale del cursore,
- posizione finale del cursore,
- velocità media verso ciascun bersaglio/funzione F,
- deviazione standard della velocità verso ciascun bersaglio/funzione F. Quindi, in generale, anche altri dati identificativi delle traiettorie non assistete possono essere memorizzati nella banca dati DB, purché questi dati permettano di determinare i suddetti parametri della traiettoria, quali ad esempio una posizione iniziale del cursore e dati di spostamento, o direttamente i suddetti parametri.
In varie forme di attuazione, i features così estratti vengono utilizzati per addestrare un classificatore in grado di stimare il bersaglio desiderato dall’utente in funzione di una traiettoria fornita al classificatore. Ad esempio, in varie forme di attuazione si utilizza a tale scopo una rete neurale artificiale. In questo caso, i features vengono forniti come input alla rete neurale artificiale, quale ad esempio una rete di tipo feed-forward, per la classificazione. In particolare, nella forma di attuazione considerata, la rete neurale comprende un primo livello (strato di ingresso) che comprende un numero di neuroni pari al numero di features, e un ultimo livello (strato di uscita) che comprende un numero di neuroni uguale al numero di possibili comandi F selezionabili. Quindi, nel caso in cui siano previste più schermate possono essere anche previsti più classificatori (una per ciascuna schermata), poiché il numero delle funzioni e le loro posizioni possono variare. Nel caso in cui venga utilizzata una rete del tipo feed-forward, questi due livelli (ingresso e uscita) sono connessi ad uno o più livelli nascosti. Ad esempio, in varie forme di attuazione si utilizza due livelli nascosti.
L’output della rete neurale è quindi una stima del comando F che l’utente vuole attivare. In particolare, ciascun neurone dello strato di uscita fornisce un valore (compreso tipicamente tra zero ed uno) che rappresenta la confidenza nella classificazione del rispettivo bersaglio, ovvero della rispettiva funzione. Quindi, in varie forme di attuazione, l’unità di elaborazione PU sceglie come funzione desiderata la funzione con l’output più grande.
In varie forme di attuazione, la rete neurale è allenata quindi alla classificazione utilizzando i features estratti dalle traiettorie non assistite memorizzate nella banca dati DB come ingresso e il rispettivo comando desiderato come risultato richiesto. Ad esempio, in varie forme di attuazione, si utilizza il metodo della backpropagation per un apprendimento supervisionato della rete, fornendole un feedback tra il suo output ed il corretto comando richiesto contenuto nella base di conoscenza.
In generale possono essere utilizzati anche altri classificatori, quale ad esempio il metodo “Support Vector Machine”.
Al termine della fase di apprendimento, l’unità di elaborazione PU può quindi avviare al passo 1012 la modalità di funzionamento assistita. In particolare, l’unità di elaborazione PU è ora in grado di intuire quale bersaglio il paziente voglia raggiungere e si propone quindi di muovere il cursore sull’interfaccia grafica in modo da facilitare il compito all’utente.
Modello del cursore
In varie forme di attuazione, come rappresentato in Figura 10, l’unità di elaborazione identifica la posizione del cursore C sullo schermo D con:
- dati di posizione assolute x e y, ad esempio espressi con rispettivi numeri di pixel sullo schermo D.
- un determinato angolo di rotazione Θ, che indica ad esempio l’orientamento del cursore C rispetto all’asse orizzontale sullo schermo D.
Quindi, in generale, il cursore C è orientato in una direzione lungo un’asse principale xv che attraversa le coordinate (x,y) e che ha un angolo θ rispetto all’asse orizzontale. Ad esempio, considerando un cursore a forma di triangolo, l’asse principale xv può corrispondere all’asse di simmetria del cursore C. Invece, la posizione (x,y) può corrispondere al baricentro del cursore C.
In varie forme di attuazione, lo stato del cursore C è quindi rappresentato in ogni istante di tempo t dalla terna [x(t), y(t), θ(t)].
Ad esempio, nel caso di traiettorie non assistite, l’unità di elaborazione PU può posizionare il cursore C nella posizione richiesta x(t) = X(t), y (t) = Y(t) e può calcolare l’angolo θ(t in base a valori precedenti, ad esempio in modo tale che l’asse principale xv passi attraverso i punti [X(t), Y(t)] (attuale posizione richiesta) e [X(1), Y(1)] (precedente posizione richiesta). In generale, l’unità di elaborazione PU potrebbe anche:
- determinare l’angolo θ(t) in funzione di un numero maggiore di valori passati, ad esempio utilizzando un’interpolazione;
- utilizzare un angolo θ(t) in modo tale che l’asse principale x„ passi attraverso l’attuale posizione richiesta e il bersaglio di destinazione, ovvero il cursore C punta nella direzione del bersaglio di destinazione; o
- non modificare l’angolo θ(t.
Invece, in varie forme di attuazione, l’unità di elaborazione PU modella lo spostamento del cursore C durante il funzionamento assistito in modo da simulare un uniciclo/monociclo ideale. In particolare, in varie forme di attuazione, l’unità di elaborazione associa al cursore C inoltre una velocità lineare v in direzione dell’asse xv ed una velocità angolare ω , ovvero la velocità con cui il cursore C ruota intorno alla posizione (x,y). Nella forma di attuazione considerata, la dinamica del cursore C, nel sistema di riferimento dell’interfaccia grafica, è quindi definita dalle seguenti equazioni differenziali:
In varie forme di attuazione, l’unità di elaborazione PU è quindi configurata per determinare i parametri v e ω e quindi determinare lo spostamento assistito del cursore C sullo schermo D.
Come spiegato in precedenza, indipendentemente dai specifici dispositivo I utilizzati, l’unità di elaborazione PU lavora puramente su traiettorie, assistite e non, indipendentemente dal dispositivo I che le ha generate. Fintanto che il dispositivo I è in grado di fornire dati che possono essere associati ad una posizione richiesta (X,Y) per il cursore C, ad esempio in termini di pixel, l’unità di elaborazione PU può determinare lo spostamento assistito del cursore C come verrà descritto in seguito.
Modalità assistita
Come spiegato in precedenza, durante questa fase 1012, l’unità di elaborazione PU muove il cursore C sullo schermo D.
La Figura 11 mostra una possibile forma di attuazione del passo 1014. Sostanzialmente, nella forma di attuazione considerata, sono comprese le seguenti operazioni:
- un’operazione di classificazione 1014 per stimare, in funzione della traiettoria seguita dal cursore, il bersaglio F che il paziente U voglia raggiungere;
- un’operazione di ottimizzazione 1016 per determinare i parametri di spostamento v e co del cursore C in funzione dei parametri ( χ,γ,θ ) del cursore C, la stima F e i dati forniti dal o dai dispostivi di ingresso I, ad esempio le posizioni richieste ( X,Y); e
- un’operazione di controllo del cursore 1022 per determinare i parametri (x,y,θ) del cursore C in funzione dei parametri di spostamento v e ω .
In particolare, l’operazione di classificazione 1014 utilizza il classificatore addestrato ai passi 1008 e 1012 in funzione dei dati memorizzati nella banca dati DB. Quindi, il classificatore riceve in ingresso dati che identificano gli stessi features utilizzati per l’addestramento del classificatore, ad esempio:
- la posizione iniziale del cursore,
- la posizione finale del cursore,
- la velocità media verso ciascun bersaglio/funzione F,
- la deviazione standard della velocità verso ciascun bersaglio/ funzione F.
Ad esempio, tali dati possono essere estratti dalla traiettoria assistita comprendenti le posizioni (x,y) che il cursore segue sulla schermo D. In particolare, durante questa fase, il classificatore dovrebbe utilizzare traiettoria con lo stesso numero di posizioni come utilizzate durante la fase di apprendimento. Ad esempio, considerando traiettorie con 12 posizioni, il classificatore determina i suddetti features in funzione di una traiettoria comprendente la posizione attuale [x(t), y(t )] del cursore C e gli ultimi 11 prima di esso:
Il passo di ottimizzazione 1018 riceve quindi in ingresso:
- il bersaglio stimato o target F ;
- i dati forniti dal o dai dispositivi I, ad esempio posizioni assolute richieste ( Χ,Υ) o dati di spostamento del cursore C, ad esempio determinati in funzione dei dati di accelerazione fornite dal dispositivo 11, in cui i dati possono essere stati pre-elaborati ad un passo 1002;
- la posizione attuale (composta dalle posizione (x,y) e l’angolo θ) del cursore C.
In particolare, l'ottimizzazione 1016 si basa su un modello di traiettoria 1018 ed un ottimizzatore 1020. Ad esempio, come descritto in precedenza, il cursore C può essere modellato come un uniciclo. In questo caso, l’ottimizzatore 1020 può quindi calcolare il controllo da impartire al cursore in termini di v e ω in modo tale da minimizzare una funzione di costo che verrà descritta in seguito.
Infine, conoscendo gli attuali parametri (x(t),y(t),θ ( t )) del cursore C, il passo 1022 può determinare i prossimi parametri (x(t+1 ),y(t+ 1),θ(t+ 1)) del cursore C in funzione dei dati di spostamento v(t+ 1) e ω(t+1) forniti dal ottimizzatore 1020. In varie forme di attuazione, l’ottimizzatore 1020 può fornire non soltanto una singola coppia v(t+ 1) e ω (t+1 ), ma anche dati per uno o più successivi istanti t+ 2, t+ 3, ... Ad esempio in varie forme di attuazione, il controllo su v e ω consiste in m = 6 valori da applicare al cursore C per i successivi m istanti di campionamento. Ad esempio, questo è vantaggio nel caso in cui l’esecuzione dell’ottimizzatore al passo 1020 avviene con una frequenza inferiore rispetto all'aggiornamento della posizione del cursore al passo 1022. In generale, anche solo alcune coppie v e ω possono essere utilizzate realmente al passo 1022, in quanto all’istante di controllo successivo il processo di ottimizzazione 1018 verrà ripetuto nuovamente. Ad esempio, in varie forme di attuazione gli istanti di controllo (ovvero gli istanti in cui viene eseguito il passo 1020) sono distanziati da un tempo pari a m volte il tempo di campionamento per le traiettorie (ovvero gli istanti in cui viene eseguiti il passo 1022). In questo caso, l ottimizzatore 1020 fornisce quindi m coppie v e ω , e il blocco 1022 viene eseguito m volte più veloce, applicando quindi le m coppie v e ω sequenzialmente al cursore C.
In varie forme di attuazione, il classificatore 1014 può quindi anche essere eseguito con una frequenza che corrisponde alla frequenza di esecuzione dellottimizzatore 1020. Pertanto, in varie forme di attuazione, ogni m (per es. sei) istanti viene stimato il target F e vengono determinati almeno i prossimi m valori per v e ω . Per i prossimi m istanti, il passo 1022 sposta poi il cursore C sequenzialmente in base ai m valori per v e ω , fino a quando non viene avviata una nuova esecuzione. In generale, la classificazione 1014 potrebbe essere eseguita anche con la frequenza del passo 1022. Ad esempio, questo può essere vantaggioso quando il tempo di esecuzione del'ottimizzazione 1020 non è costante e potenzialmente superiore al tempo di campionatura al passo 1022. Infatti, in questo caso, l’ottimizzazione non può essere eseguita ad ogni passo di campionamento con la garanzia che il risultato sia accessibile per assistere lo spostamento immediatamente successivo. Quindi, il valore di m dovrebbe essere scelto per comprendere il massimo tempo di esecuzione del'ottimizzatore 1020.
In varie forme di attuazione, la frequenza con cui viene eseguito l'aggiornamento del cursore C al passo 1022 può corrispondere alla frequenza di campionamento fc dei dati fornito dal o dai dispositivi I. Tuttavia, in generale, tale frequenze possono essere diverse. Questa strategia fornisce elevate prestazioni mantenendo però la robustezza del sistema rispetto ai disturbi (quali tremiti del paziente) o errori del classificatore, poiché l'ottimizzatore prende in considerazione una pluralità di dati forniti dal sensore prima di aggiornare di dati di movimentazione del cursore C.
Come spiegato in precedenza, in varie forme di attuazione, l’ottimizzatore 1020 implementato all’interno dell’unità di elaborazione PU sceglie m valori v e ω (con m >= 1), in modo tale da minimizzare una funzione di costo. Ad esempio, in varie forme di attuazione, l’ottimizzatore 1020 utilizza la seguente funzione di costo f(v, ω ):
dove:
- la funzione d(x,y,F) fornisce la distanza tra la rispettiva posizione (x,y)
del cursore e la rispettiva posizione del target F, in particolare i valori x(t+1), y(t+1), etc. vengono calcolati secondo il modello del cursore in funzione dei valori da ottimizzare, ovvero v(t+ 1), ω(t+1), etc.; e
- la funzione Δ fornisce un valore indicativo del rispettivo allineamento del cursore C rispetto al target F, quale ad esempio la differenza tra l’angolo θ e un angolo φ(x,y,F) che corrisponde all’angolo della retta che si estende dalla
posizione (x,y) del cursore C al target F; in particolare i valori del angolo θ(t+ 1), ... vengono calcolati secondo il modello del cursore in funzione dei valori da ottimizzare, in particolare ω (t+1), ....
I coefficienti α1 e α2 sono pesi relativi da affidare ai rispettivi obiettivi: - Il primo obiettivo è quello di ridurre la distanza d tra la posizione del cursore e quella del target indicato dal classificatore.
- Il secondo termine della funzione obiettivo riguarda l’orientamento del cursore: una volta individuato il target, è desiderabile mantenere un andamento quanto più rettilineo possibile verso di esso, evitando che il cursore oscilli a causa di tremolii del paziente.
In varie forme di attuazione, la funzione di costo f(v, ω) può prendere in considerazione anche ulteriori obiettivi.
Ad esempio, in varie forme di attuazione un terzo termine può penalizzare il discostarsi della traiettoria assista da quella non assistita. A tale scopo, l’unità di elaborazione PU può stimare ulteriori m posizioni (X, Y) per il cursore utilizzando questa volta solo i dati della traiettoria non assistita, ovvero l’unità di elaborazione PU stima i futuri valori [X(t+ 1), Y(t+ 1); ... X(t+ m), Y(t+m)] della traiettoria non assistita in base alle precedenti posizioni della traiettoria non assistita [X(t), Y(t); X(1), Y(1); ...]. Ad esempio, in varie forme di attuazione, l’unità di elaborazione PU calcola il valore medio della velocità di una pluralità di istanti passati (ad esempio gli ultimi sei istanti). Quindi, le prossime posizioni non assistite (X, Y) del cursore C possono essere calcolate utilizzando come velocità tale valore medio. Similmente, l’angolo θ può essere ottenuto in funzione di un’o più precedenti posizioni (X, Y), ad esempio, utilizzando l’ultimo valore, o utilizzando una interpolazione.
In questo caso, la funzione di costo f(v, ω ) può essere modificata come segue:
dove la funzione d'(x,y,X,Y) fornisce la distanza tra la rispettiva posizione (x,y) e la rispettiva posizione (X,Y).
In varie forme di attuazione, il medico curante e/o l’istallatore possono selezionare i parametri (α1 , α2) ο (α1, α2, α3), ad esempio da una lista di profili predefiniti. A titolo di esempio, pazienti imprecisi nei comandi a causa di tremolìi di piccola intensità, ma costanti, trarranno giovamento dall’avere assistenza più focalizzata sullorientamento del cursore ( α2 ), mentre pazienti i cui movimenti involontari fossero tali da opporsi al comando desiderato, troveranno vantaggio nell’avere assistenza maggiore per quanto riguarda l’avvicinamento del cursore al comando target ( α 1 ). In varie forme di attuazione, l’unità di elaborazione può anche elaborare i dati memorizzati nella banca dati DB per scegliere automaticamente i coefficienti (α1, α2) o (α1, α2, α3), o proporre valori di default per i coefficienti (α1 , α2) o (α1 , α2, α3). Preferibilmente, i coefficienti ( α1 , α2) ο (α1 , α2, α3) sono scelti in modo tale che la loro somma sia unitaria.
Quindi, nelle forme di attuazione considerata, l’ottimizzatore 1020 è configurato per scegliere una sequenza di valori futuri [v(t+ 1), ω (t+1); v(t+m), ω(t+m)] in modo tale da minimizzare la funzione di costo f(v, ω). Ad esempio, in varie forme di attuazione, l’ottimizzatore 1020 utilizza il Model Predictive Control (MPC) per risolvere tale problema di ottimizzazione.
Il metodo MPC permette anche l’uso di uno o più vincoli. Ad esempio, in varie forme di attuazione, l’ottimizzatore 1020 utilizza uno o più dei seguenti vincoli per ciascun i = 1..m:
- limiti massimi Δωmax e Δvmax per le variazioni di v e/o ω , al fine di ottenere una traiettoria “liscia” e quanto più naturale possibile, priva di rotazioni o accelerazioni brusche, ad esempio:
- limiti vmax , ωmin e ωmax per i valori assoluti di v e/o ω , ad esempio:
- limiti per i dati di posizioni ( x,y ) del cursore C, ad esempio:
In varie forme di attuazione, un vincolo (in aggiunto o in alternativa al primo vincolo) può anche impostare un limite massimo variabile per la velocità v in base alla distanza d del cursore C rispetto al target F e un valore minimo vmin, permettendo quindi velocità maggiori quando il cursore C è distante dal
target F, ad esempio:
dove Kv è un coefficiente predeterminato. Tale vincolo impone quindi che la
velocità lineare v venga diminuita all’avvicinarsi del cursore al target F. Quest’ultimo vincolo aumenta la precisione e facilita la selezione del target in quanto la selezione avviene solo dopo aver mantenuto il cursore sopra il target per alcuni secondi.
Naturalmente, fermi restando i principi di fondo dell’invenzione, i dettagli di costruzione e le forme di attuazione possono variare ampiamente rispetto a quanto è stato descritto e illustrato qui puramente a titolo di esempio, senza uscire con ciò dall’ambito della presente invenzione, come definita dalle rivendicazioni imminenti.

Claims (12)

  1. RIVENDICAZIONI 1. Procedimento per scegliere un comando (F) mediante un’interfaccia grafica, comprendente: a) predisporre una schermata da mostrare su uno schermo (D), in cui detta schermata comprende un cursore (C) ed una pluralità di aree, in cui a ciascuna area è associato un rispettivo comando (F), in cui un comando (F) viene scelto spostando il cursore (C) nella area associata con il rispettivo comando (F); b) durante una fase di apprendimento (1008), ripetere i seguenti passi una pluralità di volte: - selezionare un comando tra detti comandi (F) come comando di target, - ricevere da uno o più dispositivi di ingresso (I) dati che identificano una posizione richiesta (X,Y) per detto cursore (C), e muovere detto cursore (C) in funzione di detti dati che identificano una posizione richiesta (X,Y), e - registrare una o più traiettorie non assistite per detto comando di target, in cui ciascuna traiettoria non assistita è composta da una sequenza di un determinato numero di dette posizione richieste (X,Y); c) durante una fase di personalizzazione (1010), elaborare dette traiettorie non assistite per addestrare un classificatore configurato per stimare un comando di target ( Fˆ ) in funzione dei dati che identificano una sequenza di detto determinato numero di posizioni; d) durante una fase di funzionamento (1012), ripetere i seguenti passi periodicamente: - ricevere da detto uno o più dispositivi di ingresso (I) dati che identificano una posizione richiesta (X,Y) per detto cursore (C), - stimare (1014) mediante detto classificatore un comando di target ( Fˆ ), - stimare (1020) una sequenza di un determinato numero di valori futuri (v, ω ) per la movimentazione di detto cursore (C), in cui la stima (1020) comprende il calcolo di una funzione di costo determinata in funzione di un determinato numero di valori passati di dette posizioni richieste (X,Y) e detto comando di target stimato (Fˆ ), e sceglie la sequenza di detto determinato numero di valori futuri (v, ω ) che minimizza detta funzione di costo, e - muovere (1022) detto cursore (C) sequenzialmente in funzione di detta sequenza di un determinato numero di valori futuri (v, ω ).
  2. 2. Procedimento secondo la rivendicazione 1, in cui detto classificatore è una rete neurale artificiale, preferibilmente una rete di tipo feed-forward.
  3. 3. Procedimento secondo la rivendicazione 1 o la rivendicazione 2, in cui detto elaborare dette traiettorie non assistite comprende estrarre da ciascuna traiettoria non assistita i seguenti features: - posizione iniziale del cursore (C), - posizione finale del cursore (C), - velocità media verso ciascun comando (F), - deviazione standard della velocità verso ciascun comando (F).
  4. 4. Procedimento secondo la rivendicazione 2 e la rivendicazione 3, in cui detti features vengono forniti come input a detta rete neurale artificiale.
  5. 5. Procedimento secondo una delle precedenti rivendicazioni, in cui detto cursore (C) è identificato con: - dati di posizione assolute (x, y) sullo schermo (D), e - dati di orientamento ( θ ), che indicano ad esempio l’angolo di rotazione del cursore (C) rispetto all’asse orizzontale sullo schermo (D).
  6. 6. Procedimento secondo la rivendicazione 5, in cui detto stimare (1020) una sequenza di un determinato numero di valori futuri (v, ω ) per la movimentazione di detto cursore (C) comprende calcolare per ciascun valore futuro (v, ω ) per la movimentazione di detto cursore (C) un rispettivo valore futuro della posizione (x,y) del cursore (C), in cui detta funzione di costo comprende: - un primo termine che prende in considerazione la distanza tra ciascun valore futuro della posizione (x,y) del cursore (C) e la posizione del comando target ( Fˆ ).
  7. 7. Procedimento secondo la rivendicazione 6, in cui detto stimare (1020) una sequenza di un determinato numero di valori futuri (v, ω ) per la movimentazione di detto cursore (C) comprende calcolare per ciascun valore futuro (v, ω ) per la movimentazione di detto cursore (C) un rispettivo valore futuro dell’orientamento ( θ ) del cursore (C), in cui detta funzione di costo comprende: - un secondo termine che prende in considerazione i valori futuri dell’orientamento ( θ ) del cursore (C) rispetto al comando target ( Fˆ ).
  8. 8. Procedimento secondo la rivendicazione 6 o la rivendicazione 7, in cui detto stimare (1020) una sequenza di un determinato numero di valori futuri (v, ω ) per la movimentazione di detto cursore (C) comprende stimare, ad esempio mediante estrapolazione, per ciascun valore futuro (v, ω ) per la movimentazione di detto cursore (C) un rispettivo valore futuro di dette posizioni richieste (X,Y) in funzione di detto determinato numero di valori passati di dette posizioni richieste (X,Y), in cui detta funzione di costo comprende: - un terzo termine che prende in considerazione la distanza tra ciascun valore futuro della posizione (x,y) del cursore (C) e un rispettivo valore futuro di dette posizioni richieste (X,Y).
  9. 9. Procedimento secondo una delle precedenti rivendicazioni da 5 a 8, in cui detta sequenza di un determinato numero di valori futuri (v, ω ) per la movimentazione di detto cursore (C) viene stimata (1020) utilizzando il Model Predictive Control per risolvere il problema di ottimizzazione di detta funzione di costo.
  10. 10. Procedimento secondo la rivendicazione 9, in cui il Model Predictive Control utilizza uno o più dei seguenti vincoli per ciascun valore futuro per la movimentazione di detto cursore (C): - limiti massimi costanti e/o determinati dinamicamente per le variazioni della velocità di spostamento (v) e/o la velocità di rotazione ( ω ) di detto cursore (C), - limiti massimi costanti e/o determinati dinamicamente per il valore assoluto della velocità di spostamento (v) e/o la velocità di rotazione ( ω ) di detto cursore (C), - limiti per i dati di posizioni (x,y) del cursore (C).
  11. 11. Sistema per scegliere un comando (F) mediante un’interfaccia grafica, comprendente: - uno schermo (D); - uno o più dispositivi di ingresso (I); e - un’unità di elaborazione (PU) configurata per implementare il procedimento secondo una delle precedenti rivendicazioni.
  12. 12. Prodotto informatico caricabile in una memoria di almeno un processore e comprende porzioni di codice software per implementare il procedimento secondo una delle rivendicazioni 1 a 10.
IT201800002114A 2018-01-29 2018-01-29 Procedimento indirizzato a pazienti con disabilita' motorie per scegliere un comando mediante un'interfaccia grafica, relativo sistema e prodotto informatico IT201800002114A1 (it)

Priority Applications (2)

Application Number Priority Date Filing Date Title
IT201800002114A IT201800002114A1 (it) 2018-01-29 2018-01-29 Procedimento indirizzato a pazienti con disabilita' motorie per scegliere un comando mediante un'interfaccia grafica, relativo sistema e prodotto informatico
PCT/IB2019/050631 WO2019145907A1 (en) 2018-01-29 2019-01-25 Method aimed at patients with motor disabilities for selecting a command by means of a graphic interface, and corresponding system and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT201800002114A IT201800002114A1 (it) 2018-01-29 2018-01-29 Procedimento indirizzato a pazienti con disabilita' motorie per scegliere un comando mediante un'interfaccia grafica, relativo sistema e prodotto informatico

Publications (1)

Publication Number Publication Date
IT201800002114A1 true IT201800002114A1 (it) 2019-07-29

Family

ID=62167652

Family Applications (1)

Application Number Title Priority Date Filing Date
IT201800002114A IT201800002114A1 (it) 2018-01-29 2018-01-29 Procedimento indirizzato a pazienti con disabilita' motorie per scegliere un comando mediante un'interfaccia grafica, relativo sistema e prodotto informatico

Country Status (2)

Country Link
IT (1) IT201800002114A1 (it)
WO (1) WO2019145907A1 (it)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110518847B (zh) * 2019-08-30 2021-03-30 长安大学 基于bp神经网络的表面式永磁同步电机模型预测控制方法
CN117339182B (zh) * 2023-12-06 2024-03-29 西交利物浦大学 基于上肢运动能力康复的复健系统及评估方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999026126A1 (en) * 1997-11-17 1999-05-27 British Telecommunications Public Limited Company User interface
US20050047629A1 (en) * 2003-08-25 2005-03-03 International Business Machines Corporation System and method for selectively expanding or contracting a portion of a display using eye-gaze tracking
US20070216641A1 (en) * 2006-03-20 2007-09-20 Motorola, Inc. User interface stabilization method and system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE46310E1 (en) 1991-12-23 2017-02-14 Blanding Hovenweep, Llc Ergonomic man-machine interface incorporating adaptive pattern recognition based control system
US8702629B2 (en) 2005-03-17 2014-04-22 Great Lakes Neuro Technologies Inc. Movement disorder recovery system and method for continuous monitoring
US8201223B2 (en) 2006-11-03 2012-06-12 Joanne Walker Systems and methods for computer implemented treatment of behavorial disorders
US8441356B1 (en) 2009-02-16 2013-05-14 Handhold Adaptive, LLC Methods for remote assistance of disabled persons
US20110050563A1 (en) 2009-08-31 2011-03-03 Timothy Douglas Skutt Method and system for a motion compensated input device
US8566696B1 (en) 2011-07-14 2013-10-22 Google Inc. Predicting user navigation events
US9563740B2 (en) 2012-10-16 2017-02-07 The Florida International University Board Of Trustees Neural interface activity simulator

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999026126A1 (en) * 1997-11-17 1999-05-27 British Telecommunications Public Limited Company User interface
US20050047629A1 (en) * 2003-08-25 2005-03-03 International Business Machines Corporation System and method for selectively expanding or contracting a portion of a display using eye-gaze tracking
US20070216641A1 (en) * 2006-03-20 2007-09-20 Motorola, Inc. User interface stabilization method and system

Also Published As

Publication number Publication date
WO2019145907A1 (en) 2019-08-01

Similar Documents

Publication Publication Date Title
EP3491493B1 (en) Gesture based control of autonomous vehicles
EP3166106B1 (en) Intent managing system
US9694496B2 (en) Providing personalized patient care based on electronic health record associated with a user
WO2017219319A1 (zh) 车辆自动驾驶方法和车辆自动驾驶系统
US11045366B2 (en) Personal vehicle, and control apparatus and control method therefore
KR102474246B1 (ko) 복수 개의 전자 디바이스를 이용하여 신경망 모델을 처리하는 방법 및 시스템
KR20210052634A (ko) 운전자의 부주의를 판단하는 인공 지능 장치 및 그 방법
KR20180090644A (ko) 운전자 및 차량 간의 상호 작용을 위한 장치 및 그 방법
CN113491519A (zh) 基于情感-认知负荷的数字助理
Jackowski et al. A novel head gesture based interface for hands-free control of a robot
US11376742B2 (en) Robot and method of controlling the same
IT201800002114A1 (it) Procedimento indirizzato a pazienti con disabilita&#39; motorie per scegliere un comando mediante un&#39;interfaccia grafica, relativo sistema e prodotto informatico
EP3490449B1 (en) System and method for aiding communication
WO2020129312A1 (ja) 案内ロボット制御装置、及び、それを用いた案内システム、並びに、案内ロボット制御方法
US20210208595A1 (en) User recognition-based stroller robot and method for controlling the same
CN116570439B (zh) 智能轮椅控制模式切换方法及装置、设备、存储介质
US11548144B2 (en) Robot and controlling method thereof
CN113160260A (zh) 一种头眼双通道智能人机交互系统及运行方法
Chacón-Quesada et al. Augmented reality controlled smart wheelchair using dynamic signifiers for affordance representation
WO2016143415A1 (ja) 情報処理装置、情報処理方法およびプログラム
Kim et al. A Literature Review on the Smart Wheelchair Systems
Liappas et al. Best practices on personalization and adaptive interaction techniques in the scope of Smart Homes and Active Assisted Living
JP2020130502A (ja) 情報処理装置および情報処理方法
Pham Context-Aware Gaze-Based Interface for Smart Wheelchair
Shariff et al. Enhancing Text Input for Motor Disabilities through IoT and Machine Learning: A Focus on the Swipe-to-Type Algorithm