Un robot per amico
Transcript
Un robot per amico
Un robot per amico Esposizione Corpo automi Robot, Lugano 2009-2010 Comportamento del robot 1) Il robot legge il messaggio scritto sul muro (1->5), torna alla casella A e interpreta l'azione (vedi grammatica), 2a) esegue la o le azioni corrispondenti. Poi, se necessario, 3) aggiusta la propria posizione indietreggiando di una casella e ricomincia il ciclo da (1). Se il controllo dell'attenzione è attivo, dopo aver letto per quattro volte lo stesso messaggio, l'azione corrispondente non viene eseguita ma 2b) il robot si mette in attesa nella casella A di un nuovo pittogramma 1. Alterna una modalità di risparmio di energia per 16 secondi (sleep) e la lettura del pittogramma 1. Il ciclo è interrotto quando il robot legge un pittogramma diverso oppure dopo 30 volte (circa 9 minuti). Nel secondo caso il robot riparte da (1) ma pronto a attivare (2b) se il prossimo messaggio è ancora lo stesso. Lettura del messaggio (1) Se il robot non vede un pittogramma, interrompe la lettura, considerano il messaggio come finito. L'ultimo pittogramma a essere letto è in ogni caso il numero 5. Quindi un messaggio può essere composto da 0 <= n<=5 pittogrammi. Avvio Il robot deve essere posizionato nella posizione 1 oppure 2 (vedi selezione programma), orientato in maniera corretta (parallelo al muro con il messaggio). Il programma inizia dopo circa 8 secondi. Il robot si sposta nella casella A e inizia il ciclo da (3). Fine Quando il robot avverte che la batteria si sta esaurendo, ritorna alla propria casella di partenza, eventualmente (vedi selezione programma) fa partire il secondo robot e si mette in modalità sleep per evitare spegnimenti e riaccensioni non voluti. Selezione programma Con la manopola (switch) è possibile scegliere il tipo di comportamento che un robot scarico manifesta dopo essersi parcheggiato e se attivare o no il controllo dell'attenzione (vedi (2b)). Per i programmi 1, 3, 5 l'attenzione è attiva e dopo 3 messaggi uguali il robot si ferma mentre per 0, 2 e 4 il robot gira sempre indipendentemente del messaggio. I programmi 2, 3, 4, 5 prevedono l'uso di due robot, caratterizzati del numero. Il robot “minore” è quello con il numero inferiore e viceversa. Per 0 e 1 c'è un solo robot che parte dalla casellina 1 . Per 2, 3, 4, 5 ci sono due robot che si danno il cambio quando il primo ha esaurito la batteria. In entrambi i casi il robot minore parte da 1 e quello maggiore da 2. Per 2 e 3 parte prima il minore mentre per 4 e 5 è il maggiore il primo a partire. Il programma può essere scelto solo all'avvio. Girare la manopola in seguito non ha alcun effetto. Comportamento alla fine Numero SWITCH Posizione di partenza Primo robot a partire attenzione non attiva attenzione attiva minore maggiore Si addormenta 0 1 1 1 C'è solo un robot Attiva il robot maggiore e si addormenta 2 3 1 2 minore Attiva il robot minore e si addormenta 4 5 1 2 maggiore I programmi 8, 9 e 10 servono per programmare il robot. 8 Per caricare la eeprom: avviare il programma e-puck loader, aprire un file .eeprom, scegliere l'e-puck e avviare la trasmissione. 9 Per scoprire e memorizzare l'indirizzo bluetooth e il numero dell'altro robot: procedere un robot alla volta, quando le luci led si spengono si può avviare la procedura sul secondo robot. 10 Per il debug: da usare con un terminale. Interazione con l'utente L'utente può scrivere un messaggio inserendo delle tessere corrispondenti alle posizioni da 1 a 5. Qualunque messaggio può essere scritto ma la reazione del robot è più significativa se si cerca di formularlo con criteri logici (vedi grammatica). Il robot impiega circa 0.5 s a leggere un pittogramma. Se la tessera è spostata in questo periodo possono esserci degli errori di lettura. Micromondo Il robot opera in un micromondo basato su una griglia, con caselle di 12 cm di lato, di cui possiede una mappa statica. All'interno del micromondo sono presenti degli ostacoli e 10 edifici cioè 5 coppie (scuola, posta, parco gioco, casa e libreria) di un edificio grande e uno piccolo. Le caselle contenti un ostacolo (delimitato nella mappa sotto da un bordo nero) o un edificio non possono essere attraversate. Grammatica Ogni messaggio è suddiviso in frasi. Ogni frase contiene un verbo, un oggetto e zero o più avverbi. La suddivisione è stabilita dalla presenza di un secondo oggetto o verbo oppure di uno spazio. Ogni parola è classificata a dipendenza del ruolo grammaticale. • • • Verbi: camminare, correre, girare, indicare, contare, salutare, rifare, accendere, spegnere, essere accesi, non far niente, dormire, ballare, essere spenti, esistere. Nomi: posta, casa, scuola, libreria, parco gioco, posto. Aggettivi semplici: grande, piccolo, molto, poco, nessuno, tutto, casuale, uno. • Aggettivi complessi: vicino, lontano, uguale, diverso. • Modificatore: non. • Avverbi: veloce, lento, all'indietro, in avanti. Non tutte le parole sono disponibili, alcune sono usate solo per completare implicitamente una frase (“uno, “esistere”, “posto”) oppure come negazione (“non far niente”, “essere spenti”, “in avanti”). L'analisi delle frasi è fatta da sinistra a destra. Avverbi e verbo avverbi sono attribuiti alla frase. Gli aggettivi sono riferiti all'oggetto attivo (contesto) che può essere l'oggetto della frase oppure il complemento di un aggettivo complesso. L'attribuzione è fatta da sinistra a destra. Il primo contesto è l'oggetto della frase. Ogni aggettivo complesso impone il proprio complemento come contesto. Per esempio Correre casa grande veloce -> Correre {veloce} [casa {grande}], Correre casa grande vicino posta piccolo veloce-> Correre {veloce} [casa {grande, vicino [posta piccolo]}], Correre casa grande vicino posta piccolo lontano tutto scuola -> Correre [casa {grande, vicino [posta {piccolo, lontano [scuola {tutto}]}]}]. Le parentesi {} indicano l'insieme degli avverbi o aggettivi riferiti alla frase e all'oggetto e le parentesi [] delimitano gli oggetti/contesti. Se non presenti verbo e oggetto sono sottointesi come “esistere” e “posto”. Il primo contesto si riferisce anche alle parole precedenti mentre i sucessivi solo a quelle successive, cioè in casuale casa grande vicino piccolo posta -> Esistere [casa {casuale, grande, vicino [posta {piccola}]}] “casuale”, “grande” e “vicino” si riferiscono tutti a “casa” (primo contesto = oggetto della frase), mentre “piccolo” a “posta” (secondo contesto = complemento di termine di “vicino”). Questa attribuzione implicita semplifica la grammatica ma non permette frasi che avrebbero bisogno di parentesi o di “e” o “o” come per esempio correre alla posta grande, vicino alla scuola e lontano dalla casa. Il modificatore “non” è interpretato in maniera diversa a seconda della parola che precede. Se si tratta di un nome è intepretato come “nessuno”, se di un verbo come “non far niente”, se di un aggettivo come la negazione di quell'aggettivo. Per esempio correre casa non grande -> correre casa (non grande), correre casa non vicino tutto posta -> correre casa (non vicino) (non tutto) posta -> correre casa lontano uno posta Avvertimenti Il robot naviga localmente senza la possibilità di posizionarsi globalmente, cioè se sbaglia la propria posizione non è il grado di riposizionarsi. E' quindi meglio evitare possibili fonti di errore come urti contro la teca, mal posizionamento iniziale, increspatura del pavimento. Il robot usa solo i sensori ottici IR per navigare leggendo le righe nere della griglia. Se le condizioni di luce cambiano e in particolare se c'è una luce contenente troppo infrarosso (“gialla”) i parametri per la lettura delle linee possono diventare inadatti, impedendo un corretto posizionamento. Bisogna qundi evitare modifiche nell'illuminazione. La mappa del mondo è statica quindi non bisogna modificare la posizione delle casette oppure quella iniziale dei robot. La vision è attiva sono nell'area messaggio. Bisogna evitare che ci siano forti luci riflesse o dirette che colpiscono la camera mentre sta leggendo un messaggio perché porterebbero a una correttura dell'esposizione e a una sottoesposizione dei pittogrammi che non sarebbero più riconosciuti. L'ideale è una luce diffusa possibilmente bianca per non disturbare i sensori di ottici IR. Occorre anche manipolare con cura il robot per evitare che la camera si sposti (basta evitare di toccarla). Quando si usano due robot bisogna impostare lo stesso programma (manopola switch, vedi selezione programma) per evitare che partino contemporaneamente e fare attenzione a posizionarli nella casellina di partenza giusta. Se il robot dovesse avere problemi si può riposizionarlo nella casella iniziale e premere il tasto di reset. Se si usano due robot, occore fare la stessa operazione con entrambi per assicurare il riavvio corretto.