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.