controllo di robot mobili irobot roomba · 2010-09-27 · c++ elaborazioneattesa 10 player server...
TRANSCRIPT
09/06/2009
1
AAutomationutomationRRoboticsobotics andandSSystemystemCONTROLCONTROL@ Unimore@ Unimore
UniversitàUniversità deglidegli StudiStudididi Modena e Reggio Emilia Modena e Reggio Emilia
UNIMOREUNIMORE
Controllo di Robot Mobili iRobot Roomba
Controllo di Sistemi Robotici
Obiettivo:
Rescue Robotics
Salvare i sopravvissuti ad una catastrofe
Esempio: • Incendio in un palazzo
2
Incendio in un palazzo• Alcune persone non riescono ad uscire
09/06/2009
2
“Labirinto” noto a priori
Gara: ambiente
3
Prima che avvenga l’incendio, conosciamo la planimetria del palazzo
Posizione e numero dei sopravvissuti: noto solo all’inizio della gara
Gara: sopravvissuti
4
Dopo che è avvenuto l’incendio, una volta che siamo sul posto, scopriamo quanti sopravvissuti ci sono, e dove sono (perché qualcuno ce lo comunica, o perché sentiamo richieste di aiuto)
09/06/2009
3
Posizione e numero degli ostacoli: noto solo all’inizio della gara
Gara: ostacoli
5
Alcune zone del palazzo devono essere evitate: sono le zone in cui sono attivi gli incendi
Robot utilizzati: iRobot Roomba
6
09/06/2009
4
Differential drive
Robot utilizzati: iRobot Roomba
Interfaccia serialeiRobot Roomba Serial Command Interface (SCI)
7
WIFIstix
iRobot Roomba & Gumstix
Gumstix Connex(Linux)
8
Robostix(Interfaccia seriale)
09/06/2009
5
Player/Stage
PLAYER = robot device interfaceInterfacce standard (driver) per controllare robot diversi
9
STAGEsimulatore
ROBOTreale
Player/Stage
ISTRUZIONI
C++ELABORAZIONEATTESA
10
Player server
ELABORAZIONEDATI
ATTESA
ATTESA
ESECUZIONE
09/06/2009
6
ס Linux è un sistema operativo free e open sourceס In realtà, con linux si intende unicamente il kernel del sistema
operativo
Alcune generalità su linux
operativoס Kernel + software = distribuzioneס Esistono centinaia di distribuzioni. Sul pc in laboratorio è
installata la distribuzione Ubuntu 8.04 (Hardy Heron)ס È possibile utilizzare la distribuzione che preferite. La
scelta di Ubuntu è dovuta alla sua diffusione e semplicità
11
http://www.ubuntu-it.org/ס Distribuzione linux basata su Debian (una delle distribuzioni più note e più
antiche)È
Ubuntu
ס È gratuito, e si può liberamente scaricareס Viene rilasciata una versione nuova ogni 6 mesi. Il codice indica l’anno e il
mese di rilascio. Es.: Ubuntu 8.04 è stata rilasciata nel 2008, ad aprileס Oltre al numero, le versioni di Ubuntu sono indicate anche con un
codename:ס Ubuntu 7.10 Gutsy Gibbonס Ubuntu 8.04 Hardy Heron LTS
12
yס Ubuntu 8.10 Intrepid Ibex (precedente)ס Ubuntu 9.04 Jaunty Jackalope (attuale)ס Ubuntu 9.10 Karmic Koala (la prossima)
09/06/2009
7
ס Per ogni versione di Ubuntu è garantito il supporto per 18 mesi (aggiornamenti)
ס Ogni 2 anni, però, esce una versione LTS (Long Term Support), il cui t è tit 3 i P it bl i d ti f ti
Ubuntu 8.04 Hardy Heron
supporto è garantito per 3 anni. Per evitare problemi dovuti a frequenti cambi di sistema operativo, abbiamo scelto di usare una versione LTS
ס Installazione (per chi volesse installarlo sul proprio pc, su cui si suppone sia installato Windows) Ci sono varie alternative:ס Inserite il cd al boot del pc e seguite le istruzioni. Otterrete due sistemi
operativi affiancati e al boot potrete scegliere quale avviare
13
operativi affiancati, e al boot potrete scegliere quale avviareס Inserite il cd da Windows: tramite il programma Wubi, è possibile
creare un file che fungerà da hard disk per Ubuntu. Si ottiene un risultato simile al caso precedente, ma è più veloce disinstallare Ubuntu
ס Creare una macchina virtuale, ad esempio con Virtualboxhttp://www.virtualbox.org/
RTFMIstruzioni dettagliate
RTFMס La comunità linux è molto disponibile a fornire informazioni. Ma chiunque si
irrita se chi chiede informazioni non ha nemmeno provato ad utilizzare Google per trovarle
14
Google per trovarleס Online è possibile trovare i manuali ufficiali e le guide create dalla
comunità: queste sono le fonti principali da cui attingere informazioni per qualunque operazione
09/06/2009
8
ס Utente: roomba
Utilizzo del pc del laboratorio
ס Utente: roombaס Password: roomba
15
ס Player è un’interfaccia per il controllo di robot mobiliס Fornisce un’interfaccia standard: permette cioè di astrarsi dal particolare
hardware che si sta utilizzando
Player/Stage
ס Analogamente al sistema operativo del pc, possiede i driver per i particolari hardware
ס L’utente controlla un robot mobile, mentre Player si preoccupa di tradurre i comandi in istruzioni adatte a quel particolare robot mobile
ס Stage è un simulatore di robot mobiliס Anche i robot simulati in Stage possono essere controllati da player
16
Possiamo scrivere un programma, provarlo in Stage, e successivamente utilizzarlo sui dispositivi reali
09/06/2009
9
Per chi vuole installare Player sul proprio pcDevono essere installati i seguenti pacchetti:
Installazione Player/Stage
avr-libc;b t cmake;boost;bjam;boost build;ckermit;cmake;libboost-dev;libboost-date-time-dev;libboost-lesystem-dev;libboost-graph-dev;libboost-iostreams-dev;libboost-progam-options-dev;
cmake;libcv-dev;libtk1.1-dev;libgl1-mesa-dev;libglib2.0-dev;libgsl0-dev;libguile-ltdl-1;libgnomecanvas2-dev;libimlib2-dev;libltdl3-dev;libplayerxdr2;libpng12 dev;
17
libboost-regex-dev;libboost-serialization-dev;libboost-signals-dev;libboost-test-dev;libboost-thread-dev;libboost-wave-dev;build-essential;
libpng12-dev;libstdc++-dev;libthread-stubs0;libtool;ltdl;opengl;swig;
Installazione software in Ubuntuס La maggior parte dei software per Ubuntu è presente all’interno di server,
chiamati repository, il cui elenco presente in alcuni file di configurazione del sistema operativoP i t ll h tti i d i it ( i h tti d llס Per installare pacchetti o programmi dai repository (es. i pacchetti della slide precedente), ci sono due possibilità:1. Aprire un terminale (Applicazioni Accessori Terminale) e digitare il
seguente comando:sudo apt-get install nomepacchetto
• sudo = Super User DO: in linux ci sono utenti normali e superutenti. L’installazione di un software richiede i privilegi di superutente
t t è il h i d ll ti d i h tti
18
• apt-get = è il programma che si occupa della gestione dei pacchetti• install = opzione che dice ad apt-get cosa deve fare
Dopo aver premuto Invio, vi viene richiesta la password. La password è la stessa utilizzata per accedere al sistema. NB: Mentre scrivete la password, sul terminale non appare nulla, per ragioni di sicurezza
09/06/2009
10
Installazione software in Ubuntu
2. Utilizzare il tool grafico SynapticSistema Amministrazione Gestore pacchetti Synaptic
Anche in questo caso viene richiesta la password
1 Cercare il pacchetto desiderato2 Selezionare
il pacchetto
3 Premere
19
3 Premere Applica
Installazione Playerס Scaricare il file compresso di installazione player-2.1.1.tgz da
http://playerstage.sourceforge.net/ס Decomprimere il file
t f l 2 1 1 ttar xzvf player-2.1.1.tgz
ס Entrare nella directory in cui sono stati decompressi i file di installazionecd player-2.1.1
ס Eseguire la configurazione automatica di player con i parametri di default./configure
ס Compilaremake
20
ס Installaresudo make install
ס Gli eseguibili vengono installati nella directory /usr/local/bin, le librerie nella directory /usr/local/lib
09/06/2009
11
Installazione Playerס Aggiungere il tool pkg-config (tool necessario per poter compilare i
programmi scritti con le librerie di Player) al path predefinitopkg-config --libs playercore
S l’ t t di t d èSe l’output di questo comando è-lplayercore -lltdl -lpthread -lplayererror
allora il path è già corretto, e si può utilizzare Player. In caso contrario, è necessario eseguireexport PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
21
Installazione Stage
ס Scaricare il file compresso di installazione Stage-3.0.1-Source.tgz da http://playerstage.sourceforge.net/
ס Decomprimere il filetar xzvf Stage 3 0 1 Source tgztar xzvf Stage-3.0.1-Source.tgz
ס Entrare nella directory in cui sono stati decompressi i file di installazionecd cd Stage-3.0.1-Source1
ס Aggiungere alcune directory al pathexport CMAKE_INCLUDE_PATH=/opt/local/includeexport CMAKE_LIBRARY_PATH=/opt/local/lib
ס Generare i file di installazione con il tool Cmakecmake .
NB: il comando “cmake” è seguito da
22
ס Compilaremake
ס Installaresudo make install
ס Gli eseguibili vengono installati nella directory /usr/local/bin, le librerie nella directory /usr/local/lib, i dati del programma (es. immagini) in /usr/local/share
NB: il comando cmake è seguito da uno spazio e da un punto!
09/06/2009
12
Installazione Stage
ס Aggiungere alcune librerie al pathexport LD_LIBRARY_PATH=/usr/local/libexport STAGEPATH=/usr/local/lib
Test dell’installazioneס Sempre rimanendo nella directory contenente i sorgenti di Stage, digitare
/usr/local/bin/stage worlds/simple.world
ס Se appare la finestra seguente, l’installazione è andata a buon fine
23
Installazione Stage
Test dell’installazioneס Per testare i plugin di Stage, digitare
/usr/local/bin/stage worlds/fasr.world
S l fi t t l i di b t i i tס Se appare la finestra seguente, con una popolazione di robot in movimento, l’installazione è andata a buon fine
24
09/06/2009
13
Lanciare una simulazione
Per eseguire una simulazione con Player/Stage servono 3 file:ס Un file di configurazione (.cfg)
per il Player Server necessario per caricare i driver di stage eper il Player Server, necessario per caricare i driver di stage e dei dispositivi virtuali da utilizzare (robot e sensori)
ס Un file che descrive il mondo (.world)associato al file di configurazione, in cui vengono impostati i parametri di simulazione, caricata la mappa dell'ambiente di simulazione e definita la posizione di tutti gli oggetti presenti nel mondo
25
nel mondoס Il Client Program
l’eseguibile generato dal codice C++, contenente le istruzioni che i robot devono svolgere
Lanciare una simulazioneSimulazione usando i file di demo forniti con il softwareס Entrare nella directory worlds all’interno delle directory contenente i sorgenti di
stageEs.: cd Scrivania/Stage-3.0.1-Source/worlds/
ס Eseguire il Player Server, con il file di configurazione associatoplayer simple.cfg
ס Si apre quindi una finestra di Stage, contenente il mondo e i dispositivi usatiס Il Player Server è in esecuzione, in attesa che un Client Program a cui
connettersiס Aprire un’altra finestra di Terminale, ed entrare nella directory in cui sono presenti i
Client Program demoDefault: cd /usr/local/share/player/examples/libplayerc++
26
Default: cd /usr/local/share/player/examples/libplayerc++ס Compilare uno dei file .cc (sorgenti C++)
Es.: sudo g++ -o laserobstacleavoid `pkg-config --cflagsplayerc++` laserobstacleavoid.cc `pkg-config --libs playerc++`
ס Eseguire il file eseguibile appena creato./laserobstacleavoid
ס Per terminare l’esecuzione di un programma: Ctrl + C
09/06/2009
14
Compilazione
La compilazione deve essere eseguita come superutente
Nome dell’eseguibile
sudo g++ -o laserobstacleavoid `pkg-config --cflags playerc++` laserobstacleavoid.cc `pkg-config --libs playerc++`
Programma compilatore
Nome del sorgenteAltGr + ?
27
Per conoscere le opzioni dei programmi, come si utilizzano, ecc.: RTFM! Dal terminale:ס g++ --help
per ottenere un riassunto breve delle principali opzioniס man g++
per ottenere il manuale completoOppure usare Google!
Progetto per l’esame
ס Riguardo il progetto d’esame, i file .cfg e .world vi verranno forniti
ס Essi contengono informazioni riguardo il tipo di robot utilizzato (iRobot Roomba) e l’ambiente in cui esso si deve muovere
ס Voi dovrete realizzare il Client Program
28
ס Usiamo l’editor Anjutaanjuta myfile.cc
09/06/2009
15
Esempio di Client Program
ס Descriveremo ora nel dettaglio il Client Program che vi verrà fornito, e che potrete usare come traccia
ס In questo esempio il robot deve percorrere un quadrato di latoס In questo esempio, il robot deve percorrere un quadrato di lato 3m
ס Scorreremo ora il codice, descrivendo i dettagli più rilevanti
29
Esempio di Client Program
Librerie da includere
Indirizzo IP del Roomba1. Se si vuole realizzare una simulazione in Stage, sostituire, “192.168.0.101” con “localhost”IP del Roomba 2: “192.168.0.102” IP del Roomba 3: “192.168.0.103”
30
Creo un oggetto di tipo PlayerClientchiamato robot. Se devo leggere un dato dal robot, o impartire un comando al robot, mi riferisco a lui usando questo nome
09/06/2009
16
Esempio di Client Program
pp è il nome che ho dato al Proxy Position2d di robot. Il proxy Position2d è un oggetto che mi permette di interagire col robot, leggendo la sua posizione, imponendogli una certa velocità, ecc. Descrizione dettagliata: manuale online di Player
31
Uso la funzione Read dell’oggetto robot. Serve per aggiornare tutti i dati dei sensori (encoder)
Esempio di Client Program
Parametri per l’odometria: verranno pspiegati in seguito
Lettura della posizione del robot: (X, Y, Ɵ)
Posizione iniziale del robot
32
Lettura della posizione del robot: (X, Y, Ɵ)
09/06/2009
17
Esempio di Client Program
Il ciclo viene eseguito 4 volte
dtor= degrees to radians
L diff f li i hi dLa differenza fra angoli richiede sempre una certa cautela. Così viene fatta correttamente
33
Compensazione degli errori dell’odometria
Odometria: errori
ס Odometria = ricostruire la posizione del robot a partire dalle letture degli encoder sulle ruote
ס Ipotesi: la rotazione delle ruote può essere trasformata in uno spostamento lineare sul terreno V = r*ω Δu = r* ΔƟ
ס Questa ipotesi, però, non si verifica nella realtà, a causa della presenza di disturbi. Esempio: slittamento di una ruota
Errori:Sistematici Accidentali•differenti diametri delle ruote•diametro medio diverso da quello
•percorso su terreno non pianeggiante•percorso su terreno con presenza di
34
qnominale•disallineamento delle ruote•incertezza sulla lunghezza reale dell'interasse•risoluzione degli encoder limitata•tempi di campionamento elevati
p postacoli inaspettati•slittamento delle ruote dovuto a terreni scivolosi, accelerazioni eccessive, rotazioni troppo veloci, forze esterne (interazione con corpi esterni), forze interne (la ruota castor), mancanza di contatto delle ruote con il terreno
09/06/2009
18
Odometria: errori
ס Gli errori sistematici sono particolarmente gravi, perché occorrono ad ogni misura effettuata
ס Per la loro natura, gli errori sistematici restano (circa) invariati nel tempoס Possono essere stimati tramite misure, ed essere quindi compensati
ס Non è possibile, però, ottenere dal Roomba una lettura diretta dei dati provenienti dagli encoder
ס È disponibile unicamente una stima della posizione del robot (X, Y, Ɵ)ס La procedura è quindi la seguente:
1 Acquisizione della stima delle posizione del robot
35
1. Acquisizione della stima delle posizione del robot2. Tramite il modello cinematico (uniciclo, differential drive), dalla
variazione di posizione è possibile calcolare i dati provenienti dagli encoder
3. Correzione dei dati degli encoder4. Calcolo della posizione reale del robot (Xr, Yr, Ɵr)
Odometria: erroriAvanzamento della ruota destra
Interasse nominaleX misurato all’istante attuale
X misurato all’istante precedente
Ɵ misurato all’istante precedente
Fattori di correzione
36
Interasse reale(X,Y,Ɵ) corretti
09/06/2009
19
Odometria: errori
ס I fattori di correzione e gli interassi reali per i tre robot disponibili in laboratorio sono stati calcolati durante alcuni esperimenti
ס Come abbiamo visto, i valori sono inseriti all’inizio del programma
37
ס In base al robot in uso, si scelgono i parametri appropriatiס Nel caso in cui si esegua una simulazione con Stage, l’interasse è pari a
quello nominale, e i fattori di correzione sono pari a 1. Ovviamente, in simulazione non appaiono né errori accidentali né errori sistematici
Esempio di Client Program
Questa parte serve perché, per eseguire un quadrato, il robot deve andare dritto per una certa distanza, poi girare di 90° Si deve quindipoi girare di 90°. Si deve quindi controllare di quanto ha girato, ad ogni ciclo, rispetto all’orientamento iniziale
Commento•Se il commento sta tutto in una riga, la riga deve essere preceduta da //
38
preceduta da //Es.: // Commento•Se servono più righe, si utilizza la seguente struttura:/* Commentosu più righe */
09/06/2009
20
Esempio di Client Program
Distanza percorsa d l i i i l
Se ha percorso meno di 3m, d ti d d dal punto iniziale
del latodeve continuare ad andare dritto, alla velocità di 0.1m/s
Se ha terminato il lato, deve ruotare di 90°, alla velocità di 8 °/s
39
Queste istruzioni servono per ottenere in output (sul terminale) i valori di X1 e Y1 durante l’esecuzione del programma
Esempio di Client Program
Uso la funzione SetSpeed dell’oggetto pp. Serve per impostare la velocità lineare e la velocità di rotazione calcolate precedentemente
40
calcolate precedentemente
09/06/2009
21
Caratteri speciali
Su Linux:
ס Alt Gr + ì = ~
ס Alt Gr + 7 = Alt Gr + Shift + [ = {
41
ס Alt Gr + 0 = Alt Gr + Shift + ] = }
Gara: L’ambiente
42
09/06/2009
23
Gara: Mappa dell’ambiente
60 cm
300 cm
120 cm
120 cm
80 cm
60 cm
45
150 cm140 cm
70 cm
200 cm
Gara: Mappa dell’ambiente
46
09/06/2009
24
Gara: Mappa dell’ambiente
Roomba
Posizione
X
Y
47
Posizione iniziale (del centro):X = -1.25mY = -1.25mƟ = 0
Gara: Mappa dell’ambiente
ס La mappa dell’ambiente è nota a priori, e la sua immagine .png vi verrà fornita
ס Nell’ambiente saranno presenti alcuni elementiס Nell’ambiente saranno presenti alcuni elementi aggiuntivi:ס 3 ostacoli, che rappresentano incendi attivi, e che
devono quindi essere evitati dal robotס 3 obiettivi, che rappresentano i superstiti da
l d i di i ti d l b t
48
salvare, e devono quindi essere raggiunti dal robot ס Ostacoli e obiettivi potranno essere posizionati in
qualunque punto della mappaס La loro posizione vi verrà comunicata pochi minuti
prima dell’inizio della gara
09/06/2009
25
Gara: Scopo
Scopo della gara: raggiungere tutti gli obiettivi, evitando tutti gli ostacoli
ס Il gruppo vincitore sarà quello che raggiungerà lo scopo della gara nel minor tempo possibile
ס Limite di tempo: 10 minuti
49
ס Il cronometro verrà avviato nel momento in cui il gruppo farà partire il programma, e verrà fermato al raggiungimento del terzo obiettivo, o allo scadere del limite di tempo
Ostacoli
ס Gli ostacoli sono birilli di plasticaס Il diametro massimo del birillo è di
circa 7 cmס Se il birillo cade, l’ostacolo non è stato
correttamente evitato
Penalità:ס Se 1 birillo viene abbattuto, al tempo
t t l à i t 40%
50
totale verrà aggiunto un 40%ס Se 2 birilli vengono abbattuti, al tempo
totale verrà aggiunto un 80%ס Se 3 birilli vengono abbattuti, la
missione è fallita e la squadra è eliminata
09/06/2009
26
Ostacoli
ס La posizione degli ostacoli non è nota a prioriס Vi verrà fornita solo pochi minuti prima
dell’inizio della garaס Vi verrà fornita la posizione del centro della
circonferenza di base del birilloס Prima dell’inizio della gara, avrete 5 minuti di
tempo per inserire i valori delle posizioni
51
tempo per inserire i valori delle posizioni
Obiettivi
ס Gli obiettivi sono cerchi rossi stampati su un foglio, attaccati al terreno con nastro adesivo
ס Il diametro del cerchio è di 15 cmס L’obiettivo è raggiunto se il robot si
sovrappone, almeno parzialmente, al cerchio rosso
ס L’obiettivo sarà considerato raggiunto a insindacabile giudizio
52
raggiunto a insindacabile giudizio della commissionePenalità:
ס Se 1 obiettivo non è raggiunto, al tempo totale verrà aggiunto un 80%
ס Se 2 o 3 obiettivi non sono raggiunti, la missione è fallita e la squadra è eliminata
09/06/2009
27
Obiettivi
ס La posizione degli obiettivi non è nota a prioriס Vi verrà fornita solo pochi minuti prima
dell’inizio della garaס Vi verrà fornita la posizione del centro del
cerchioס Prima dell’inizio della gara, avrete 5 minuti di
tempo per inserire i valori delle posizioni
53
tempo per inserire i valori delle posizioni
Pareti
ס Le pareti che costituiscono l’ambiente potranno essere toccate dal robot, ma non tt tattraversate
ס Se una parete viene attraversata, la missione è fallita e la squadra è eliminata
54
09/06/2009
28
I robot
ס In laboratorio sono presenti 3 iRobotRoomba
ס Ognuno di essi è equipaggiato con un microcomputer
55
Gumstix, alimentato da un pacco batterie
Forma circolare, diametro 33 cm
Sensori
ס Non sono presenti sensori eterocettivi (che permettono di acquisire informazioni sull’ambiente circostante), ad eccezione ),del bumper frontale, che però non è utilizzato
ס Sono disponibili unicamente le informazioni ricavate dagli encoder (odometria)
bumper
ס L’algoritmo di controllo del robot si deve quindi basare unicamente su
56
informazioni di posizioneס A causa degli errori causati dall’odometria, è opportuno utilizzare basse
velocità di movimento, per minimizzare l’effetto degli errori che inevitabilmente si accumulano
09/06/2009
29
I robot
Numero che identifica il robot. I 3 robot sono equivalenti ma:
Pulsante di accensione del Roomba
equivalenti, ma:•Ad ogni robot è assegnato un diverso indirizzo ip•Ogni robot ha diversi parametri fisici
57
Comunicazione seriale tra Roomba e Gumstix
I robot
Quando non sono in uso, i Roombadevono essere sempre collegati all’alimentatore di corrente.In caso contrario, la batteria si scarica molto velocemente, e richiede 15 ore per
i i t
58
essere ricaricata.
09/06/2009
30
I robot•Per accendere il microcomputer Gumstix, è sufficiente spostare l’interruttore su I•Sul Gumstix si accende immediatamente un led giallog•Dopo alcune decine di secondi si accende anche un led arancione (che indica che è attivo il modulo wifi): questo indica che il Gumstix ha terminato la procedura di boot•Per spegnere il Gumstix, è sufficiente spostare l’interruttore su O
ס All’accensione del Gumstix, avviene il boot del sistema operativo, che termina con due script che sono stati realizzati appositamente per:
59
p pp p1. Attivare il modulo wifi2. Attivare il Player Server
ס Il sistema resta in attesa di ricevere comandi dal Client Program
Gestione delle batterie
ס Siccome il pacco batterie è stato realizzato nel nostro laboratorio, non dispone di un proprio caricabatteria o di un sistema che segnali quando le batterie sono scaricheO i R b di di b tt i d di t it di ס5 Ogni Roomba dispone di un pacco batterie dedicato; ognuno necessita di 5 batterie.
ס Quando le batterie si scaricano:ס Il robot non risponde più ai comandiס Il Gumstix si resetta continuamente: la luce del led giallo diventa fioca,
e il led arancione si spegne o diventa intermittenteס Per ricaricare le batterie servono alcune ore: è quindi opportuno che, alla
60
fine di ogni giornata, le batterie che sono state utilizzate vengano ricaricate, in modo che il giorno dopo siano disponibili per essere nuovamente utilizzate
09/06/2009
31
Alcuni consigli
ס Dopo vari minuti di inattività il Gumstix esce dalla fase di attesa. Quindi, se non viene eseguito nessun programma per molto tempo, è preferibile spegnere il Gumstix.S i i l b tt i i bl i ll i iס Se si scaricano le batterie, o se ci sono problemi nella comunicazione wireless, accade a volte che il robot e il pc non comunichino correttamente, e che il robot si muova senza controllo. Per evitare danni, quindi, è necessario prestare sempre la massima attenzione, e bloccare il robot non appena si verifichino situazioni indesiderate.
ס Per bloccare il robot che non risponde ai comandi, basta sollevarlo da terraSuccessivamente per riutilizzare il robot è necessario spegnere e
61
Successivamente, per riutilizzare il robot, è necessario spegnere e riaccendere sia il Roomba che il Gumstix
ס È consigliabile fare in modo che il Client Program stampi continuamente a schermo qualche dato (cout), in modo che ci si renda conto immediatamente se si è interrotta la comunicazione tra il pc e il robot.
Utilizzo del laboratorioס Per l’utilizzo del laboratorio, utilizzate il calendario “Robot Mobili Roomba” su
Google Calendarס Sul pc del laboratorio, ogni gruppo deve creare una directory all’interno della home,
da utilizzare come directory di lavoroda utilizzare come directory di lavoromkdir /home/roomba/gruppo
ס Decomprimere il file gara.zip nella directory appena creata: si creano 2 directory, chiamate programs e worlds
ס All’interno di programs troverete il file quadrato.cc che è stato descritto precedentemente
ס Nella directory worlds si trovano i file necessari all’utilizzo del simulatore Stage. Per avviare la simulazione relativa alla gara, dal Terminale:
62
ס cd /home/roomba/gruppo/worlds
ס player gara.cfg
ס Il Player Server è quindi in esecuzione, in attesa di istruzioniס Aprire quindi una nuova finestra di Terminale, per eseguire il Client Program. Es.: il
codice è stato salvato nel file codice.cc all’interno della directory programs:ס Compilare il file, e ottenere il file eseguibile codiceס Eseguire il file eseguibile: ./codice
09/06/2009
32
Note sulla gara
ס Se dovessero verificarsi problemi (scarica delle batterie, perdita di comunicazione), la prova verrà ripetuta
ס Ogni gruppo potrà eseguire 2 volte la missione e, ai fini della classifica, à id t i t il i lt t i liverrà considerato unicamente il risultato migliore
ס Risulterà vincitore il la squadra che svolgerà la missione nel minor tempo (tenendo conto di eventuali penalità)
ס Ad ogni componente della squadra vincitrice verranno attribuiti 3 punti, che si aggiungeranno alla valutazione della prova orale per l’esame di Controllo Dei Sistemi Robotici
ס Ogni decisione presa dalla commissione è da considerarsi
63
insindacabileס È parte integrante della valutazione una relazione dettagliata sul software
realizzato, in cui vengono motivate e descritte le diverse scelte progettuali
Se avete dubbi
lorenzo sabattini@unimore [email protected]
0522 52 2666
64