Eye Computer Sistema per l'interazione con un computer dotato di controllo oculare Linguaggi e modelli computazionali LS Realizzato da: Ciavarella Primiano
Computer con controllo oculare Computer progettato per utenti con limitate capacità motorie, dotato di un sistema di telecamere a infrarossi in grado di rilevare la posizione delle pupille rispetto allo schermo, in maniera analoga ai telecomandi della console per videogiochi Nintendo Wii. Particolarmente adatto ai malati di SLA, Sclerosi Laterale Amiotrofica, malattia degenerativa che neutralizza i “neuroni del moto” ma lascia inalterate le funzioni cognitive e sensoriali. Un malato di SLA è in grado di ascoltare, leggere, osservare, ma è in grado di muovere soltanto gli occhi.
Obiettivi del progetto Sistema che consenta all'utente di interagire con un computer utilizzando il movimento degli occhi, costituito da: un linguaggio per impartire ordini elementari ad un computer senza interazioni meccaniche un interprete che accetta in ingresso una stringa, stabilisce se è una frase lecita del linguaggio ed esegue le corrispondenti azioni semantiche. Il linguaggio, ad esempio, consente di richiedere la visualizzazione di un canale televisivo, la riproduzione di un brano musicale, la regolazione della postazione dell'utente o la navigazione su internet.
Caratteristiche del linguaggio Le frasi del linguaggio comprendono alcune parole chiave corrispondenti agli ordini che è possibile impartire al computer Ogni frase corrisponde ad un singolo ordine e comprende parti obbligatorie, essenziali per eseguirlo, e parti facoltative, utilizzate per superare eventuali ambiguità o per specificare un comportamento diverso da quello predefinito L'utente non deve conoscere i dettagli che riguardano l'esecuzione, indica semplicemente di cosa ha bisogno con un linguaggio semplice ed efficace
Grammatica 1/3 comando := guarda | leggi | parla | ascolta | internet | inclina guarda := "_tv" canale | "_film" titolo canale := ( frase | "_canale" ) titolo:= frase ( "_autore" ( )+ )? parla:= "_parla" ( "?" | "!" )? frase frase:= ( | )+ Frasi lecite: _tv Rai News _tv _canale 27 _film The Matrix _autore Andy e Larry Wachowski _parla Questa è una frase lecita Scopo della grammatica Visualizzazione canale televisivo o film Frase da passare al sintetizzatore vocale
Grammatica 2/3 leggi:= "_leggi" ( titolo | nomeFile ) ( numPagina )? titolo:= frase ( "_autore" ( )+ )? nomeFile:=( "/" frase )+ ( "." frase )* numPagina:="_pagina" inclina := "_inclina" ( "gambe" | "schiena" ) ( "+" | "-" ) Frasi lecite: _leggi Il Fatto Quotidiano _pagina 3 _leggi Il Signore degli Anelli _autore Tolkien _leggi /percorso/home/file3.odt Lettura di un libro, un giornale o un file Cambiament o inclinazione della postazione
Grammatica 3/3 ascolta := "_radio" canale | "_brano" titolo ( album )? album := "_album" frase internet := "_internet" ( "://" )? ( " )? ( "." )+ ( "/" frase )* Frasi lecite: _radio Radio2 _brano Poles Apart _album The Division Bell _internet Riproduzione brano musicale o canale radiofonico Apertura browser web Token LOOKAHEAD(2)
Classificazione Grammatica La grammatica è di tipo LL(1) perché gli Starter Symbols corrispondenti alle parti destre delle produzioni alternative sono disgiunti. Essi coincidono con i Director Symbols poiché nessun metasimbolo produce la stringa vuota e quindi non occorre considerare i Following Symbols. Secondo la classificazione di Chomsky la grammatica è di tipo 2, cioè libera da contesto. Poiché non vi sono produzioni che contengono Self Embedding il linguaggio generato è di tipo 3, cioè regolare.
Strumenti e Architettura Linguaggio di programmazione: Java 1.6.0_22 Generatore parser e scanner: JavaCC 5.0 Generaratore APT e visitor: JTB Ambiente di sviluppo: Eclipse Helios 3.6.1
I Visitor Entrambi i visitor realizzati estendono DepthFirstVoidArguVisitor, realizzato automaticamente da JTB, che implementa metodi visit con due parametri: 1)un oggetto corrispondente ad uno dei nodi dell'albero sintattico, ad esempio comando, ascolta, parla, etc, presenti nel package syntaxtree; 2)un oggetto in cui il visitor inserisce informazioni raccolte dai nodi visitati. Il visitor EyePcTreeVisitor utilizza un oggetto di tipo DefaultMutableTreeNode, nodo root dell'albero mostrato nella GUI per ogni comando impartito Il visitor EyePcExecuteVisitor utilizza un oggetto di tipo ExecuteCommand per memorizzarvi il nome e le proprietà del comando, mostrati all'utente tramite una finestra di dialogo a scopo di exempio.
Interfaccia grafica Frasi del linguaggio Pulsanti per la selezione dei comandi Pulsanti per inserire singoli caratteri Albero sintattico dei comandi impartiti
Sviluppi futuri Implementazione ricerca dei file Sintetizzatore vocale Riproduzione film e brani musicali Implementazione del sistema di puntamento ottico e la relativa calibrazione