Upload
phamcong
View
228
Download
0
Embed Size (px)
Citation preview
25/11/2010
1
Automation
Robotics and
System
CONTROL
@ Unimore
Università degli Studi
di Modena e Reggio Emilia
UNIMORE
Controllo di un Robot Mobile
Pioneer 3-DX
Controllo di Robot Industriali
2
Obiettivo:
Salvare i sopravvissuti ad una catastrofe
Esempio:
• Incendio o terremoto in un palazzo
• Alcune persone non riescono ad uscire
Rescue Robotics
25/11/2010
2
3
Scenario:
Nel 2100, gli ospedali delle zone a rischio
sismico sono forniti di un innovativo
sistema: i lettini sono robot mobili. In caso
di terremoto, i robot sono in grado di
uscire dall’ospedale, e trasportare i malati
presso un’altra struttura.
Tema della gara
4
In caso di terremoto, la struttura
dell’ospedale può subire lesioni. Ad
esempio, alcuni muri possono crollare. I
robot non possono quindi fare
affidamento su mappe note dell’ambiente:
devono utilizzare i propri sensori per
trovare una via d’uscita.
Tema della gara
25/11/2010
3
5
Dettagli sul problema:
• Nell’ospedale c’è una sola porta dalla quale si
può uscire
• La porta si trova in posizione nota rispetto al
sistema di riferimento “esterno”: una volta
uscito, quindi, il robot “sa” da che parte si trova
la sua destinazione
• La posizione iniziale del robot è ignota (può
essere posizionato in una qualunque stanza, e
i muri possono essere crollati)
Tema della gara
6
Esempio
H Porta
25/11/2010
4
Robot utilizzati: Pioneer 3-DX
7
Pioneer 3-DX
•Differential drive
•WiFi
•Sensori Sonar
Pioneer 3-DX: sonar
8
Sonar
•8 sensori
•Numerati da 0 a 7
•Permettono al robot di
misurare la distanza
rispetto ad ostacoli
•Ogni sensore fornisce
la distanza, in mm,
dall’ostacolo più vicino
che incontra
25/11/2010
5
9
ס L’ambiente di sviluppo utilizzato si chiama ARIA (Advanced
Robotics Interface for Applications). È stato sviluppato da
MobileRobots, per la programmazione di questo robot
ס ARIA è un ambiente di sviluppo open-source. I programmi
verranno scritti in C++
ס L’architettura di controllo del robot è di tipo client-server:
ס I programmi realizzati rappresentano il client
ס Essi comunicano con un server, che è rappresentato dal
sistema operativo (ARCOS) presente sul robot
ס ARIA può essere utilizzato con sistema operativo Windows o
Linux: sul PC del laboratorio è presente la versione per linux
(pertanto, per l’esame si dovrà utilizzare questa versione)
Programmazione
10
ס Linux è un sistema operativo free e open source
ס In realtà, con linux si intende unicamente il kernel del sistema
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à
Alcune generalità su linux
25/11/2010
6
11
http://www.ubuntu-it.org/
ס Distribuzione linux basata su Debian (una delle distribuzioni più note e più
antiche)
ס È 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
ס Ubuntu 8.10 Intrepid Ibex
ס Ubuntu 9.04 Jaunty Jackalope
ס Ubuntu 9.10 Karmic Koala
ס Ubuntu 10.04 Lucid Linx
ס Ubuntu 10.10 Maverick Meerkat LTS (attuale)
Ubuntu
12
ס 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
supporto è garantito per 3 anni. Per evitare problemi dovuti a frequenti
cambi di sistema operativo, abbiamo scelto di usare una versione LTS
ס Ormai è quindi giunto il momento di aggiornare il PC del laboratorio, cosa
che non è ancora stata fatta. Il software è però perfettamente funzionante,
e voi potete utilizzare, sui vostri PC, la distribuzione che preferite
ס Il software è però fornito in pacchetti .deb. Questi pacchetti si installano
“direttamente” su distribuzioni Debian-based (quindi Debian, Ubuntu, Mint,
Mepis…). Per altre distribuzioni, è necessario convertire i pacchetti in modo
da renderli compatibili.
Ubuntu 8.04 Hardy Heron
25/11/2010
7
13
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. Questo è
valido per qualunque distribuzione linux.
ס Valido solo per Ubuntu 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 con
performance inferiori. È più veloce disinstallare Ubuntu, in caso non vi
servisse più.
ס Creare una macchina virtuale, ad esempio con Virtualbox
http://www.virtualbox.org/ ed installate lì la distribuzione di linux che
preferite. Per informazioni, riferitevi al manuale di Virtualbox (NB:
sconsigliato! A volte ci sono problemi con la compilazione!!!)
Installazione di linux
14
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 operativo
ס 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
• 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
25/11/2010
8
15
Installazione software in Ubuntu
2. Utilizzare il tool grafico Synaptic
Sistema Amministrazione Gestore pacchetti Synaptic
Anche in questo caso viene richiesta la password
1 Cercare il
pacchetto
desiderato2 Selezionare
il pacchetto
3 Premere
Applica
16
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
ס Online è possibile trovare i manuali ufficiali e le guide create dalla
comunità: queste sono le fonti principali da cui attingere informazioni per
qualunque operazione
Istruzioni dettagliate
25/11/2010
9
17
ס Utente: roomba
ס Password: roomba
Utilizzo del pc del laboratorio
18
Installazione del software ARIA
ס Vi verranno forniti i pacchetti per l’installazione del software necessario per
la programmazione del robot.
ס Si tratta di 6 pacchetti .deb, che si possono installare in due modi:
ס Da interfaccia grafica, facendo doppio click
ס Da terminale, con il comandosudo dpkg –i nomepacchetto
ס Verranno installate le librerie, necessarie per la compilazione dei
programmi. Inoltre, verranno installati alcuni software “accessori”:
ס MobileSim: è un simulatore, permette di testare i programmi realizzati
su un robot simulato
ס MobileEyes: quando è connesso al robot, permette di vedere
graficamente le letture dei sonar
ס Mapper3: permette di disegnare la mappa all’interno della quale il robot
si muove, in simulazione
25/11/2010
10
19
Svolgimento del progetto
ס Partendo dagli esempi forniti (che commenteremo in seguito),
dovrete scrivere il codice C++ che permetta al robot di
svolgere il suo compito
ס Dovrete quindi compilare il codice scritto, ottenendo quindi un
file eseguibile
ס Realizzerete quindi una mappa “di prova”, con il software
Mapper3, per testare il vostro software in simulazione,
utilizzando MobileSim
ס Successivamente, testerete il software sul robot fisico,
facendolo muovere per la stanza
ס Analizzeremo ora nei dettagli tutti i passaggi
20
Compilazione
La compilazione deve essere
eseguita come superutente
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 completo
Oppure usare Google!
sudo g++ -o nomeprogramma -lAria -L/usr/local/Aria/lib
-I/usr/local/Aria/include -lpthread -lrt -ldl nomeprogramma.cpp
Programma compilatore
Nome dell’eseguibile
che otterremo dopo la
compilazione
Nome del sorgente
25/11/2010
11
21
Progetto per l’esame
ס Il robot deve uscire da un labirinto, ignoto. Necessiterà quindi
di informazioni sensoriali, provenienti dai sonar
ס Si muoverà, in base alle informazioni sensoriali
ס Le informazioni sensoriali gli serviranno anche per capire
quando ha raggiunto l’uscita del labirinto (es. riconoscere che
non ci sono più muri intorno)
ס Una volta uscito, deve raggiungere la posizione finale
desiderata
ס Per la scrittura del codice, possiamo usare qualunque editor di
testo. Tuttavia, risulta comodo utilizzare un editor apposito
(che evidenzia le parole chiave, ecc.). Usiamo ad esempio
Anjuta
anjuta myfile.cpp
22
Esempio di programma
ס Vi verranno forniti tre programmi esempio, chiamati
1. criexample.cpp
2. criexample2.cpp
3. criexample3.cpp
ס Il primo programma contiene unicamente un elenco dei
comandi principali che utilizzerete nel vostro progetto
ס Il secondo e il terzo, invece, fanno sì che il robot svolga un
semplice compito
ס Descriveremo ora nel dettaglio questi due file, che potrete
utilizzare come traccia
ס Scorreremo ora il codice, descrivendo i dettagli più rilevanti
25/11/2010
12
23
criexample.cpp
Librerie da includere
Nella prima parte, che è standard, si
inizializzano tutti gli oggetti che servono
per il funzionamento. Qui, ad esempio,
definiamo un oggetto che si chiamerà
robot, ed è definito secondo la classe
ArRobot.
Se, ad esempio, vogliamo definire un
intero, e chiamarlo n, scriveremoint n
Messaggi di errore, in caso di problemi
Associo il sonar al robot
24
criexample.cpp
Commento
•Se il commento sta tutto in
una riga, la riga deve essere
preceduta da //
Es.: // Commento
•Se servono più righe, si
utilizza la seguente struttura:
/* Commento
su più righe */
25/11/2010
13
25
criexample.cpp
Inizializzazione
di variabili
numeriche
robot_position è una
variabile di classe ArPose
Assegno alla
variabile
Range_sensor il
valore ottenuto dalla
lettura del sonar
identificato dal
numero sensor. In
questo caso, sto
leggento il sonar
numero 3
Due modi diversi di scrivere
a schermo un testo o un
valore
26
criexample.cpp
Per impostare una
velocità (lineare) al
robot
Per impostare
l’orientamento del robot,
rispetto al sistema di
riferimento assoluto. Cioè, il
robot ruota finché il suo
orientamento è pari a 90°
Per impostare una rotazione
relativa. Cioè, il robot ruota
di 90°. Consigliato!
25/11/2010
14
27
criexample.cpp
Salvo la posizione
corrente del robot (x, y,
Ɵ) nella variabile
robot_position
Salvo nella variabile a la
coordinata x della posizione
di robot. Per estrarre y e Ɵ
si usano, rispettivamente,
robot.getY(); e robot.getTh();
Per inserire un’attesa
28
criexample.cpp
Per fermare il robot
Per imporre uno
spostamento al robot: si
sposterà di 1000mm,
linearmente
25/11/2010
15
29
ס Il programma descritto finora, criexample.cpp, è
semplicemente una raccolta di comandi
ס Potete utilizzarlo come “base”, sulla quale costruire il vostro
programma
ס Analizzeremo ora criexample2.cpp, che rappresenta un
semplice esempio di algoritmo di controllo
ס Il robot:
ס Si muove a velocità costante, linearmente, finché non
incontra un ostacolo
ס Quando incontra un ostacolo, ruota di 90°
ס Successivamente, si muove linearmente a velocità
costante, per un tempo predefinito
criexample2.cpp
30
criexample2.cpp
Come nell’esempio
precedente, la prima
parte è standard.
Si includono le librerie,
e si inizializzano tutti gli oggetti necessari.
25/11/2010
16
31
criexample2.cpp
Variabile in cui salviamo la lettura di uno dei sonar
Il robot si muove con velocità costante, in avanti
Vogliamo si muova
finché non incontra
un ostacolo.
Selezioniamo quindi
il sonar numero 3: se
questo sonar rileva
“qualcosa”, significa
che c’è un ostacolo
di fronte al robot
32
criexample2.cpp
Ad ogni step, la lettura del sonar 3 viene salvata
nella variabile Range_sensor. La lettura viene
quindi scritta a schermo. Se, ad esempio, il valore
di Range_sensor è 1500, viene scritto a schermo:
Sensor number 3 reading 1500
Per terminare la riga e
andare a capo
25/11/2010
17
33
criexample2.cpp
Non appena il dato letto dal sonar è inferiore a
1000 (cioè, viene rilevato un ostacolo a distanza
inferiore a 1000mm), si pone a zero il valore della
variabile c. Questo causa l’uscita dal ciclo while.
Il robot si ferma
Il robot ruota di
90°, in senso
antiorario
34
criexample2.cpp
Il robot si ferma, e il
programma termina
Attesa di 30
secondi
Il robot si muove con velocità costante, in avanti
25/11/2010
18
35
ס Analizzeremo ora criexample3.cpp, che rappresenta un
semplice esempio di algoritmo di controllo
ס Il robot:
ס Si muove a velocità costante, linearmente, finché non
incontra un ostacolo
ס Quando incontra un ostacolo, ruota di 90°
ס Ripete questo compito all’infinito
ס Ad ogni step, stampa a schermo la lettura di uno dei sonar,
e la propria posizione (coordinate x e y)
criexample3.cpp
36
criexample3.cpp
Questo ciclo viene ripetuto per sempre
Il robot si muove con velocità costante, in avanti
Stampa a schermo della lettura del sonar
Stampa a schermo delle coordinate x e y
Il robot si ferma, ruota di 90°, e il ciclo riprende
25/11/2010
19
37
Compilazione ed esecuzione
Una volta scritto il codice, è necessario compilarlo, per ottenere un file eseguibile:
1. Aprire il terminale, e portarsi nella directory contenente il file .cpp:cd /home/roomba/mydirectory
2. Eseguire la compilazione, come visto in precedenzasudo g++ -o criexample2 -lAria -L/usr/local/Aria/lib
-I/usr/local/Aria/include -lpthread -lrt -ldl criexample2.cpp
Per eseguire il file eseguibile appena ottenuto:
ס Se stiamo utilizzando il simulatore:
1. Avviare il programma MobileSim, selezionando la mappa desiderata
2. Dal terminale, portarsi nella directory contenente il file eseguibile appena
compilato:cd /home/roomba/mydirectory
3. Eseguire il file./criexample2
38
Compilazione ed esecuzione
Per eseguire il file eseguibile appena ottenuto:
ס Se stiamo utilizzando il robot:
1. Accendere il robot
2. Attivare la connessione WiFi del PC, e selezionare la rete LTRX_IBSS
3. Dal terminale, portarsi nella directory contenente il file eseguibile appena
compilato:cd /home/roomba/mydirectory
4. Eseguire il file./criexample2 –rh 10.0.126.11
Dove 10.0.126.11 è l’indirizzo ip che identifica il robot all’interno della rete
25/11/2010
20
39
Alcuni suggerimenti
Per terminare un programma, durante la sua esecuzione, si può utilizzare la
combinazione di tasti CTRL+C, oppure CTRL+Z, tenendo in primo piano la
finestra di terminale in cui il programma è in esecuzione.
Caratteri speciali, su Linux:
ס Alt Gr + ì = ~
ס Alt Gr + 7 = Alt Gr + Shift + [ = {
ס Alt Gr + 0 = Alt Gr + Shift + ] = }
40
Gara: Scopo e regole
Scopo della gara: uscire dal labirinto, e
raggiungere il goal
ס Il gruppo vincitore sarà quello che raggiungerà lo scopo della
gara nel minor tempo possibile
ס Limite di tempo: 10 minuti
ס Il cronometro verrà avviato nel momento in cui il gruppo farà
partire il programma, e verrà fermato al raggiungimento del
goal, o allo scadere del limite di tempo
25/11/2010
21
41
Gara: Scopo e regole
ס È necessario evitare le collisioni con gli ostacoli! Pertanto, le
pareti possono essere solo “toccate” dal robot. Se il robot
abbatte/attraversa le pareti, la missione è fallita, e la squadra è
eliminata
ס Il robot deve raggiungere il goal, e fermarsi. La posizione del
goal sarà identificata con una X, posta sul pavimento. Sarà poi
disegnata una circonferenza di raggio 20cm, attorno al goal. Il
robot raggiunge il goal se si sovrappone, almeno parzialmente,
all’area racchiusa dalla circonferenza.
Se il robot si ferma fuori da questa area, si avrà una penalità:
al tempo totale verrà aggiunto un 40%
42
Gara: L’ambiente
XΔx
Δy
?L1
L2
L3
L4
L5
L6
Dati:
L1= 210cm
L2= 100 cm
L3= 140 cm
L4= 310 cm
L5= 170 cm
L6= 100 cm
Δx= 120 cm
Δy= 140 cm
I corridoi avranno larghezza
minima pari a 70cm
25/11/2010
22
43
Utilizzo del laboratorio
ס Per l’utilizzo del laboratorio, utilizzate il calendario “Robot Mobile Pioneer” su
Google Calendar. Per visualizzare il calendario, seguite il seguente linkhttp://www.google.com/calendar/embed?src=0es9q1lf05e48aqvqc1fihhf2s%40group.calendar.google.com&ctz=Europe/Rome
ס Ogni gruppo può prenotare il laboratorio per un periodo di tempo non superiore a
due ore consecutive e quattro ore settimanali
ס Per prenotarvi, inviate un’email a [email protected]
ס Sul pc del laboratorio, ogni gruppo deve creare una directory all’interno della home,
da utilizzare come directory di lavoro
mkdir /home/roomba/gruppo
ס Potete utilizzare i vostri PC personali per fare simulazioni, e prove (anche a casa). Il
giorno della gara, però, sarà necessario utilizzare il PC del laboratorio.
44
Note sulla gara e l’esame
ס Ogni gruppo deve
ס Scegliere un nome
ס Designare un team-leader
ס Il team-leader dovrà quindi inviare un’email a [email protected],
specificando il nome del gruppo e i nomi dei componenti.
ס Ogni comunicazione inerente la gara verrà inviata ai team-leader
ס Ad ogni team-leader verrà fornito il software (circa 50MB, quindi non via
email)
25/11/2010
23
45
Note sulla gara e l’esame
ס Se dovessero verificarsi problemi (ad esempio perdita di comunicazione, il
PC che si blocca, ecc.), la prova verrà ripetuta
ס Ogni gruppo potrà eseguire 2 volte la missione e, ai fini della classifica,
verrà considerato unicamente il risultato migliore
ס Risulterà vincitore il la squadra che svolgerà la missione nel minor tempo
(tenendo conto di eventuali penalità)
ס Ogni decisione presa dalla commissione è da considerarsi
insindacabile
ס Ad ogni componente della squadra vincitrice verranno attribuiti 3 punti, ad
ogni componente della squadra seconda classificata 2 punti, ad ogni
componente della squadra seconda classificata 1 punto. Questi punti si
aggiungeranno alla voto ottenuto nell’esame di Controllo di Robot
Industriali
ס Il voto è determinato al 70% dalla prova orale, e al 30% da una relazione
sulle esperienze di laboratorio (robot antropomorfo e robot mobili)
ס La relazione dovrà essere sintetica, e dovrà spiegare e motivare ogni
scelta progettuale
46
Se avete dubbi
0522 52 2666