Controllo di Robot Mobili iRobot Roomba · 2010-09-27 · C++ ELABORAZIONEATTESA 10 Player server...

32
09/06/2009 1 A utomation utomation R obotics obotics and and S ystem ystem CONTROL CONTROL @ Unimore @ Unimore Università Università degli degli Studi Studi di di Modena e Reggio Emilia Modena e Reggio Emilia UNIMORE UNIMORE 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

Transcript of Controllo di Robot Mobili iRobot Roomba · 2010-09-27 · C++ ELABORAZIONEATTESA 10 Player server...

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

22

Gara: L’ambiente

43

Gara: L’ambiente

44

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