Progettazione di Robot per Applicazioni Indoor: Sviluppo e

Transcript

Progettazione di Robot per Applicazioni Indoor: Sviluppo e
SOMMARIO
INTRODUZIONE.................................................................................1
1 LA STRUTTURA DEL ROBOT.......................................................4
1.1 PERCEZIONE ...................................................................................5
1.1.1 Le Telecamere ....................................................................6
1.1.2 Sensori a raggi infrarossi ....................................................7
1.1.3 Encoder...............................................................................8
1.1.4 Sensori di contatto...............................................................9
1.2 ELABORAZIONE ............................................................................10
1.2.1 Il computer di bordo ........................................................10
1.2.2 La scheda di controllo .......................................................12
1.3 AZIONE ........................................................................................12
1.3.1 Il sistema di movimento, i motori .......................................12
1.3.2 Il kicker .............................................................................13
1.4 ALIMENTAZIONE...........................................................................16
2 LA STRUTTURA DEL SOFTWARE............................................18
2.1 AGENTI IN UN AMBIENT E DINAMICO .............................................18
2.1.1 Caratteristiche dell’ambiente fisico ...................................19
2.1.2 Pianificazione in ambienti dinamici...................................20
2.1.3 Behaviors ..........................................................................22
2.3 ETHNOS........................................................................................23
2.3.1 Gli esperti..........................................................................23
2.3.2 Il Kernel ............................................................................27
2.4 GLI ESPERTI DEL ROBOT ................................................................29
2.4.1 Esperti di percezione .........................................................30
2.4.2 Esperti di decisione ...........................................................32
2.4.3 Esperti di movimento .........................................................34
3 IL SISTEMA DI VISIONE..............................................................39
3.1 COMPONENTI HARDWARE DEL SISTEMA DI VISIONE ........................39
3.1.1 Telecamere ........................................................................40
3.1.2 Frame grabber ..................................................................42
3.2 LA SEGMENTAZIONE DELLE IMMAGINI ...........................................45
3.2.1 Modelli di rappresentazione dei colori...............................45
3.2.2 Segmentazione in coordinate RGB.....................................49
3.3 ESTRAZIONE DELL'INFORMAZIONE ................................................49
3.3.1 Riconoscimento del pallone ...............................................50
3.3.2 Calcolo della posizione della palla ....................................52
I
4 IL SISTEMA DI MOVIMENTO ....................................................54
4.1 IL MOTORE ...................................................................................54
4.1.1 Principio di funzionamento................................................55
4.1.2 Caratteristiche elettromeccaniche del motore ....................59
4.1.3 La riduzione ......................................................................60
4.2 IL DIMENSIONAMENTO DEL MOTORE ..............................................62
4.2.1 Modello dinamico del sistema............................................62
4.2.2 Caso del robot Galavrón ...................................................65
4.2.3 Simulazione .......................................................................68
4.3 L’AZIONAMENTO DEI MOTORI .......................................................69
4.3.1 Il controllo dei motori........................................................71
4.3.2 La commutazione di carichi induttivi .................................73
4.3.3 La scheda di azionamento dei motori.................................74
5 CONCLUSIONI E SVILUPPI FUTURI.........................................83
5.1 SVILUPPI HARDWARE ....................................................................83
5.2 SVILUPPI SOFTWARE .....................................................................84
APPENDICE A ...................................................................................86
APPENDICE B ...................................................................................93
BIBLIOGRAFIA ................................................................................95
II
IND ICE DELLE FIGURE
Figura 1.1 Sottosistemi componenti il Robot.....................................................................5
Figura 1.2 Le telecamere. ......................................................................................................6
Figura 1.3 Sensori a raggi infrarossi. ....................................................................................7
Figura 1.4 Sensori di contatto. .............................................................................................9
Figura 1.5 Disposizione dei motori sul robot.................................................................. 13
Figura 1.6 Dispositivo di calcio del Robot....................................................................... 14
Figura 1.7 Circuito pneumatico del kicker. ..................................................................... 15
Figura 1.8 Schema elettrico del robot............................................................................... 17
Figura 2.1 Struttura di un esperto. .................................................................................... 25
Figura 2.2 Lista locale di un esperto. ................................................................................ 26
Figura 2.3 Lista globale e liste locali degli esperti. ........................................................... 28
Figura 2.4 Gli Esperti del robot. ....................................................................................... 30
Figura 2.5 Copertura porta con palla sopra la soglia di copertura................................. 33
Figura 2.6 Copertura porta con palla sotto la soglia di copertura. ................................ 33
Figura 3.1 Sistema di visione, il campo visivo. ................................................................ 42
Figura 3.2 Conversione A/D............................................................................................. 43
Figura 3.3 Cubo RGB......................................................................................................... 46
Figura 3.4 Calcolo della posizione della palla................................................................... 52
Figura 4.3 Caratteristiche elettromecc. di un motore in corrente continua.................. 59
Figura 4.4 Modello dinamico del sistema......................................................................... 64
Figura 4.6 Schema di principio di un ponte H. ............................................................... 70
Figura 4.7 Pulse width modulation della tensione........................................................... 72
Figura 4.9 Traiettoria seguita dal robot ( ver. 1.0 ) durante il test di reattività. ............ 78
Figura 4.10 Traiettoria seguita dal robot ( ver. 2.0 ) durante il test di reattività ........... 81
III
Ringraziamenti
Ringrazio in primo luogo il prof. Giovanni Adorni per la disponibilità e
l’attenzione con cui ha seguito lo sviluppo del lavoro descritto in questa tesi.
Desidero inoltre ringraziare l’ing. Stefano Cagnoni e l’ing. Monica Mordonini
che hanno messo costantemente a disposizione il proprio tempo e le proprie
competenze nella realizzazione del robot.
Ringrazio infine i colleghi studenti Carlo Bernardi, Enzo Bocelli, Marcello
Carletti, Frida Loprieno e Cristiano Rota, che hanno partecipato alla
progettazione e realizzazione del robot, creando un sereno ambiente di
collaborazione.
IV
INTRODUZIONE
L'oggetto di questa tesi riguarda le problematiche relative alla realizzazione
di robot autonomi, che devono eseguire compiti specifici in ambienti chiusi
solo parzialmente noti.
Un robot autonomo a differenza di uno controllato dall'uomo, deve essere
in grado, entro certi limiti, di prendere decisioni sulla base di dati
preesistenti e di ciò che percepisce dai sensori.
In questo senso, un robot autonomo è dotato di flessibilità in quanto può
cambiare il proprio comportamento come reazione a mutamenti
dell'ambiente esterno.
Esso deve in sostanza mostrare una relazione tra percezione e azione, e
questa relazione dev'essere in qualche modo intelligente, cioè finalizzata ad
uno scopo.
In un robot autonomo si possono distinguere almeno quattro sottosistemi:
percezione, elaborazione delle informazioni, azione, alimentazione. I primi
due costituiscono l'intelligenza del robot, mentre gli altri due permettono al
robot di eseguire i compiti per cui è stato progettato consentendogli di
interagire con l'ambiente esterno.
Mentre gli esseri umani fanno un gran numero di cose usando lo stesso
corpo, la struttura dei robot dipende fortemente dallo scopo per cui sono
progettati. Esistono robot per la manipolazione di materiali nell'industria
manifatturiera, per il trasporto ripetitivo di oggetti in edifici, per
Introduzione
esplorazione di ambienti ostili o ad alto rischio, per l'incremento delle
capacità umane, per il gioco e per il divertimento. In particolare, in questa
tesi viene descritto il progetto per la realizzazione di un robot portiere,
Galavrón, secondo determinate specifiche: le specifiche tecniche della
RoboCup.
La RoboCup, organizzata dalla RoboCup Federation, è una manifestazione
che propone alla comunità scientifica una sfida, quella di costruire ed
organizzare squadre di robot calciatori e di farli competere in un torneo.
Nata nel 1997 da un'idea dei giapponesi H. Kitano e M. Asada, la Robot
World Cup Initiative si è data come obiettivo a lungo termine quello di
giungere a costruire, intorno all'anno 2050, una squadra di robot calciatori
bipedi che sia capace di sfidare secondo le regole della FIFA la squadra di
calcio che allora sarà campione del mondo. Nondimeno, a breve termine la
RoboCup prevede di dare un significativo impulso alla ricerca nei campi
dell'intelligenza artificiale e della robotica. Infatti lo sviluppo di sensori, di
comportamenti e di cooperazione necessari per raggiungere l'obiettivo
fissato dalla RoboCup può avere una applicazione immediata in tutti quei
campi laddove già i robot sono utilizzati o dove n'è ormai prossimo
l'impiego.
La partecipazione alla RoboCup, tramite la squadra nazionale italiana ART
(Azzurra Robot Team ), è stata possibile grazie progetto RoboCup Italia
che, oltre all'università di Parma ha interessato anche le università di Roma
(La Sapienza), Milano Bicocca, Milano Politecnico, Palermo, Genova,
Padova e il consorzio Padova Ricerche.
Secondo il regolamento, vi sono essenzialmente due categorie di robot:
small size e middle size (detta anche F2000). Il robot del progetto segue le
specifiche della categoria F2000.1
La categoria F2000 è stata pensata per favorire la ricerca su sistemi
autonomi, sistemi multi-agente, cooperazione e per studiare robot che
1
Per maggiori informazioni si veda l’appendice B.
2
Introduzione
possono assolvere a compiti specifici in ambienti in cui non è possibile una
forma di tele controllo diretto.
Volendo costruire un robot portiere per la RoboCup, si deve tenere
presente che il regolamento aiuta a conoscere l'ambiente in cui il robot si
muoverà.
Infatti Galavrón è un robot in grado di operare in un ambiente solo
parzialmente noto; definito da regole che ne codificano i colori e le
geometrie.2
In pratica, essendo definito per regolamento che la palla è di color rosso, il
robot sa di doversi aspettare sempre una palla rossa. Viceversa, il robot non
sa dove e come si muoverà la palla ne dove e come si muoveranno gli altri
robot. Si può quindi affermare che il robot portiere si muoverà in un
ambiente noto solo parzialmente.
Esso tuttavia è autonomo, quindi il livello di conoscenza che il robot
possiede può essere modificato solo in base alle informazioni che
provengono dalle telecamere, dai sensori o da altri robot e non da un
eventuale intervento umano.
2
Tutto ciò, unitamente ad altre informazioni, costituisce il bagaglio di conoscenze a priori che il robot
deve possedere.
3
Capitolo 1
LA STRUTTURA DEL ROBOT
I sottosistemi funzionali che costituiscono la struttura di un robot mobile,
sono sostanzialmente tre: gli attuatori che
consentono al robot di
muoversi, i sensori che rendono possibile un movimento non banale3; un
robot autonomo deve inoltre mostrare una connessione intelligente tra la
percezione e l’azione eseguita, per questo deve anche disporre di organi di
calcolo potenti su cui possono essere eseguiti programmi di controllo a
basso livello e programmi cognitivi con alto livello di astrazione.
Nella realizzazione di Galavrón, che nasce come sviluppo di TinoZoff suo
predecessore, ci si è posti come obiettivo principale quello di poter avere a
disposizione un'architettura in grado di essere facilmente aggiornata, ed
una struttura meccanica funzionale, in considerazione del particolare
compito svolto dal robot.
In particolare, il campo di applicazione richiede di avere strutture robuste,
leggere ed in grado di compiere manovre rapide e precise. Si è quindi
realizzato lo châssis in modo tale da avere una struttura robusta, leggera, e
3
Gli attuatori sono dunque quei dispositivi che consentono al robot di cambiare la propria posizione, la
propria configurazione esterna o di cambiare la posizione di oggetti. I sensori sono quei dispositivi
che permettono al robot di conoscere lo stato dell'ambiente circostante (telecamere, sensori ad
infrarossi, sensori di contatto e così via) e il proprio stato interno (encoder, bussola, ecc.).
Cap. 1 La Struttura del Robot
per quanto possibile modulare al fine di rendere agevoli gli interventi di
modifica di componenti e di manutenzione all'interno del robot.
Essenzialmente, l'architettura di Galavrón ( Figura 1.1 ) si compone di
quattro blocchi, quattro sottosistemi:
•
percezione;
•
elaborazione delle informazioni;
•
azione;
•
alimentazione.
PERCEZIONE
IR
SENSOR
ENCODERS
VIDEOCAMERAS
BUMPER
ELABORAZIONE
µP
PHYSIC
WORLD
BATTERY
PC
MOTORS
ALIMENTAZIONE
KICKER
AZIONE
Figura 1.1 Sottosistemi componenti il Robot.
1.1 Percezione
Questo sottosistema è costituito da tutti quei componenti sensoriali che
consentono al robot di acquisire informazioni dall’ambiente esterno; in
particolare su Galavrón sono presenti i seguenti sensori:
•
Telecamere;
•
sensori a raggi infrarossi;
5
Cap. 1 La Struttura del Robot
•
encoders;
•
sensori di contatto.
1.1.1 Le Telecamere
L’apparato di visione adottato è di tipo binoculare, si basa su due
telecamere a colori di basso costo poste nella parte superiore dello châssis.
Figura 1.2 Le telecamere.
Le telecamere sono dotate di ottiche grandangolari che permettono di avere
un ampio campo visivo. Consentono, infatti, di avere un angolo di apertura
orizzontale pari a 120°, verticale di 90° e diagonale di 144°. Sfruttando
questa caratteristiche e disponendo le due telecamere a 90° rispetto agli
assi delle ottiche (Figura 1.2) è possibile coprire più di 200° di terreno di
gioco.
Le telecamere sono gli unici sensori che comunicano direttamente con il
PC di bordo senza la mediazione della scheda microcontrollata che gestisce
il controllo a basso livello.
In particolare, i segnali video analogici delle due telecamere, vengono
inviati a due schede di conversione analogica digitale (frame-grabber) che
si occupano di convertirli in un formato digitale adatto all’elaborazione
elettronica.
6
Cap. 1 La Struttura del Robot
1.1.2 Sensori a raggi infrarossi
Su Galavrón sono installati quattro sensori a raggi infrarossi (Figura 1.3).
Si è pensato di dotare il robot di sensori ad infrarossi per migliorarne il
grado di percezione dell’ambiente circostante; le informazioni ricavate da
questi sensori possono essere utilizzate sia per rendere più preciso il
sistema di auto localizzazione, sia per implementare un sistema, ancorché
grossolano, di obstacle avoidance.
Figura 1.3 Sensori a raggi infrarossi.
Il sistema di visione adottato, infatti, fornisce informazioni solo sugli
oggetti che sono collocati rispetto al robot, in direzione frontale e in parte
in direzione laterale. Si è quindi pensato di utilizzare i sensori ad infrarossi
per raccogliere informazioni sugli oggetti che si trovano ai lati e dietro al
robot. Le informazioni provenienti da questi sensori sono elaborate dal
microprocessore che gestisce le attività a basso livello.
Come si nota dalla Figura 1.3 due dei quattro sensori, sono orientati
parallelamente alle possibili direzioni di marcia; sono appunto questi
ultimi, che vengono utilizzati per implementare il sistema di obstacle
avoidance. Quando un ostacolo si trova nel campo d’azione di questi
sensori, essi asseriscono a zero il loro segnale di uscita segnalandone la
presenza al microprocessore che: arresta i motori evitando al robot di urtare
l’ostacolo rilevato, e contestualmente disabilita le elettrovalvole del
7
Cap. 1 La Struttura del Robot
sistema di calcio. Quest’ultima operazione è finalizzata ad evitare che urti
accidentali di altri robot, rilevati dai sensori di contatto, determinino
l’attivazione del sistema di calcio cagionando eventuali danni allo stesso.
I restanti due sensori sono collocati uno sopra l’altro nella parte posteriore
del robot e orientati perpendicolarmente alla direzione di marcia. Essi
vengono utilizzati per individuare la posizione dei pali che delimitano la
porta. In realtà come descritto in appendice B, non esistono dei veri e
propri pali, ma tutto il campo è delimitato da una parete ad eccezione delle
porte, pertanto la posizione di queste ultime può essere individuata
cercando l’interruzione della parete.
Ora dato che i sensori ad infrarossi forniscono un’informazione di tipo
digitale4, per individuare l’interruzione nella parete, e quindi la porta, ne
occorrono due.
L’informazione così ottenuta può essere integrata con quelle fornite dalle
telecamere ed impiegata per rendere più preciso il sistema di
localizzazione.
1.1.3 Encoder
Sull’asse dei motori sono calettati dei codificatori ottici (encoder) a due
canali con 100 passi. In sostanza per ogni motore vengono prodotte due
onde quadre sfasate di ¼ , dato che il motore è demoltiplicato 19,7 a 1, ogni
canale produce 1970 impulsi per ogni giro della ruota.
Questi segnali vengono utilizzati dal microcontrollore per calcolare la
velocità e il senso di rotazione di ogni motore, la velocità di traslazione e
rotazione del robot, la posizione dello stesso nell’ambiente di lavoro
riferita al punto di partenza.
4
Cioè l’informazione che con questi sensori si ottiene, è unicamente se un ostacolo è presente all’interno
del loro campo d’azione o meno, ma non la distanza dell’oggetto dal sensore.
8
Cap. 1 La Struttura del Robot
1.1.4 Sensori di contatto
Il robot dispone di quattro sensori di contatto, uno per ogni kicker; essi
vengono utilizzati sostanzialmente per generare il segnale di kick reattivo;
ossia per rilevare quando il pallone si trova a contatto del portiere e
generare un segnale che abilita il calcio del corrispondente kicker.
Ogni sensore di contatto è costituito da due microswitch solidali al kicker e
sormontati da una barra di alluminio. Se la barra subisce una pressione il
deviatore commuta rispetto alla posizione di riposo A ( Figura 1.4 ), per
poi tornare nella configurazione iniziale B nel momento in cui la pressione
cessa.
I microswitch, essendo montati direttamente sul kicker, sono sottoposti ad
accelerazioni e decelerazioni violente sufficienti per provocare false
chiusure dei contatti che determinerebbero improduttive oscillazioni del
kicker.
Figura 1.4
Per evitare questo inconveniente, l’informazione relativa all’avvenuto
contatto non è associata alla semplice commutazione del deviatore. Come
si nota dalla Figura 1.4 il microswitch modifica i segnali di ingresso di un
9
Cap. 1 La Struttura del Robot
FF-SR, evitando che falsi rimbalzi del deviatore si propaghino sino alle
elettrovalvole innescando l’oscillazione del kicker.
Il circuito opera in logica negata, in particolare: dall’uscita negata del FFSR viene prelevata l’informazione riguardante lo stato del bumper che
viene inviata alla scheda del microcontrollore. Il segnale in forma vera che
esce del FF-SR viene messo in NAND con il segnale di abilitazione,
generato dal microprocessore, per dar vita al segnale di kick reattivo.
Infatti se l’abilitazione è a livello logico 1 il segnale in uscita dal FF viene
solo invertito e si propaga, altrimenti l’uscita del NAND rimane bloccata al
livello alto, indipendentemente dallo stato del FF.
Il segnale così generato viene inviato ad un monostabile che controlla lo
stadio di potenza che pilota le elettrovalvole.
1.2 Elaborazione
Il sottosistema di elaborazione è composto dagli organi di calcolo;
possiamo in particolare distinguere una scheda di controllo a
microprocessore su cui vengono eseguiti i programmi di controllo a basso
livello e un PC su cui vengono eseguiti i programmi cognitivi con alto
livello di astrazione che comprendono gli algoritmi di analisi delle
percezioni, di pianificazione del moto e di ragionamento.
1.2.1 Il computer di bordo
A bordo del robot, come si diceva, è alloggiato un PC. Esso costituisce
sicuramente l’elemento più importante di tutta l’architettura, essendo di
fatto il componente che consente al robot di “ragionare”, nonché di
comunicare con gli altri membri della squadra, in modo da coordinare le
attività .
Per la scelta del PC oltre alle prestazioni di processore e memoria, si sono
presi in considerazione anche altri fattori.
10
Cap. 1 La Struttura del Robot
In primo luogo si è valutato l'assorbimento del processore in relazione alla
potenza di calcolo necessaria. Infatti all’aumentare della frequenza di clock
aumenta anche la potenza assorbita. Di conseguenza, a parità di
assorbimento degli altri utilizzatori, si riduce l’autonomia del robot.
Il PC installato a bordo comprende una motherboard ASUS P2-99B con:
un processore Intel Celeron a 466 MHz che consente di elaborare 10 frame
al secondo con una risoluzione di 480×360 pixel assorbendo circa 25 W
(quindi con un assorbimento decisamente inferiore a quello dei più
moderni Pentium III o AMD Athlon), e una memoria RAM da 128 MB.5
Il disco fisso è un hard disk da computer portatile da 6GB. Il peso del disco
fisso è di 90 grammi, l’assorbimento di corrente è circa un quinto di quello
di un hard disk normale ed inoltre è garantita una eccezionale resistenza
agli urti.
Sulla motherboard sono installate quattro schede: scheda video, due frame
grabbers e una scheda di rete a radiofrequenza.
La scheda di rete a radiofrequenza consente un collegamento Ethernet
wireless. Essa oltre a rendere il lavoro più agevole risulta uno strumento
indispensabile per quanto riguarda lo scambio di informazioni con altri
robot.
In Tabella 1-1 vengono raccolti alcuni dati relativi al PC e alle schede
periferiche di cui è attualmente dotato il robot.
PROCESSORE
INTEL CELERON 466 MHz
RAM
128 MB 66 MHz
HARD DISK
6 GB
MOTHERBOARD
ASUS P2-99B
SCHEDA DI RETE
WAVELAN 2 Mbps
SCHEDA VIDEO
S3TRIO 2 MB
FRAME GRABBER
AVER MEDIA BT878
Tabella 1-1
5
La RAM è del tipo a 133 MHz, tuttavia il processore la gestisce a 66 MHz.
11
Cap. 1 La Struttura del Robot
1.2.2 La scheda di controllo
È una scheda dotata di un microprocessore con un piccolo sistema
operativo ( KaOS ) dedicato al controllo a basso livello del robot e
specificamente del suo movimento.
La scheda in particolare:
•
sulla base delle informazioni fornite dai segnali degli encoder aggiorna
l'odometria del robot;
•
sulla base delle informazioni fornite dai sensori a raggi infrarossi,
implementa il sistema di obstacle avoidance, e controlla il
funzionamento del kicker;
•
controlla per tramite di una scheda di potenza i motori, fungendo da
interfaccia tra questi e il PC di bordo.
Essa è in grado di comunicare con il PC di bordo tramite linea seriale,
rendendo possibile il controllo ad alto livello dei motori e del kicker.
1.3 Azione
Questo sottosistema è costituito dagli attuatori, ossia da quei dispositivi che
permettono al robot di interagire con l’ambiente esterno. Gli attuatori di cui
dispone Galavrón sono i motori e il kicker (dispositivo di calcio).
1.3.1 Il sistema di movimento, i motori
Il movimento del robot avviene grazie a due ruote del diametro di 12 cm
disposte in asse ed in posizione centrale rispetto allo châssis.
Le ruote sono poste in rotazione da due motori in corrente continua a
magneti permanenti con spazzole, disposti perpendicolarmente alla
direzione di marcia del robot (Figura 1.5).
I motori vengono pilotati in modo indipendente sicché le ruote possano
assumere velocità rotazionali diverse.
12
Cap. 1 La Struttura del Robot
Questo consente al robot di compiere movimenti sia traslazionali che
rotazionali.
Figura 1.5 Disposizione dei motori sul robot.
La stabilità del sistema viene raggiunta grazie a quattro robuste6 sfere di
acciaio, disposte ai vertici del rettangolo di base. La scelta delle sfere al
posto dei più comuni castor ( ruota passiva basculante ) è stata fatta con lo
scopo di evitare i movimenti spuri che questi provocano quando si
orientano in seguito ad un’inversione del senso di marcia.
1.3.2 Il kicker
Il kicker è il sistema meccanico ad attuazione pneumatica che consente al
robot di calciare il pallone. Si è preferito ricorrere ad una attuazione
pneumatica piuttosto che elettrica sia per minimizzare il fabbisogno
energetico complessivo del robot, sia perché questi sistemi risultano
robusti, sufficientemente reattivi, non hanno particolari esigenze di
manutenzione e soprattutto consentono di contenere i costi.
Come si nota dalla Figura 1.6 il dispositivo di calcio è costituito in realtà
da quattro kicker indipendenti: due frontali e due laterali.
6
Capacità di carico di 50Kg ciascuna.
13
Cap. 1 La Struttura del Robot
Sia i kicker frontali che quelli laterali sono connessi, per un’estremità al
telaio mediante una cerniera; per l’altra estremità al relativo pistone, che ne
controlla il moto, mediante snodi sferici. In tal modo tutti e quattro i kicker
presentano un moto di rotazione a mo’ di paletta, attorno al perno di
sostegno.
Figura 1.6 Dispositivo di calcio del Robot.
Al fine di controllare la palla per un tratto consistente del percorso si rende
tuttavia necessario impiegare, per il movimento dei kicker pistoni con
corse elevate.
Questa esigenza però, condiziona la scelta del tipo di pistone da utilizzare,
rendendo di fatto necessario l’impiego di pistoni a doppio effetto che
richiedono per il loro funzionamento una quantità di aria circa doppia
rispetto ai pistoni a semplice effetto.
Infatti a differenza dei pistoni a doppio effetto quelli a semplice effetto
richiedono aria solo durante la fase di estensione, il ritorno viene in questo
caso garantito da una molla interna.
È possibile ovviare a questo inconveniente realizzando il circuito
pneumatico del sistema di calcio come mostrato in Figura 1.7.
14
Cap. 1 La Struttura del Robot
Analizziamone brevemente il funzionamento: il serbatoio S17, attraverso le
quattro elettrovalvole, alimenta la fase di spinta dei cilindri. Il serbatoio S28
è invece permanentemente connesso alla fase di ritorno dei cilindri, ed
opera ad una pressione di poco superiore a quella atmosferica.
Capacità pneumatica
( 2 Lt )
Max 8bar
S1
3
1
3
2
1
3
1
2
3
1
2
2
A
B
Max 2bar
Capacità
pnueumatica
( 0,33 Lt )
S2
C
D
Figura 1.7 Circuito pneumatico del kicker.
Quando si eccita una elettrovalvola, il serbatoio S1 viene messo in
comunicazione con la camera di spinta del cilindro corrispondente,
provocandone l’estensione. La forza che esso sviluppa durante questa fase
è proporzionale, a meno della forza resistente dovuta all’attrito tra
guarnizioni e stantuffo, alla differenza di pressione tra le due camere.
Quando l’elettrovalvola viene riportata nella posizione di riposo, la
pressione nella camera di spinta scende al valore della pressione
atmosferica, e dato che il valore della pressione nella camera di ritorno è
rimasto invariato9, il cilindro rientra nella posizione di partenza.
Quello che avviene di fatto è una compressione e una espansione del fluido
presente nel serbatoio S2 che determina come risultato un effetto del tutto
7
Questo serbatoio è realizzato in alluminio, ha un volume di 2000 cm3 e in condizioni normali, opera ad
una pressione di circa 10 bar.
8
Questo serbatoio è realizzato in polietilene, ha una capacità di 330 cm3 e in condizioni normali opera
ad una pressione di circa 1 bar.
9
Nella camera di ritorno la pressione è costante e pari a quella nel serbatoio S2.
15
Cap. 1 La Struttura del Robot
equivalente a quello che la molla produce in un pistone a semplice
effetto.10 Per la verità questo sistema offre un vantaggio in più: la
possibilità di regolare, variando semplicemente la pressione nel serbatoio
S2, l’intensità della forza di ritorno, cosa non possibile nei pistoni a
semplice effetto classici.
In tabella 3.1 sono riassunti i principali componenti del circuito
pneumatico con relative caratteristiche.
Cilindro a doppio effetto non magnetico ∅ 16×50
Cilindro a doppio effetto non magnetico ∅ 16×80
Serbatoio in Al spessore di 8mm capacità 2000 cm3
Serbatoio in polietilene capacità 330 cm3
Elettrovalvole a tre vie comando diretto da 1/8, 24V e 2.5W
Tubo rilsan ∅ 2.5×04
Tabella 1-2 Componenti del circuito pneumatico.
1.4 Alimentazione
Il circuito di alimentazione (Figura 1.8) prevede una alimentazione
primaria costituita dalla serie di due batterie al Pb acido da 12V - 4Ah.
Mediante una opportuna presa collocata sulla plancia del robot è anche
possibile alimentare il sistema attraverso un alimentatore esterno.
L’alimentazione esterna può essere utilizzata in due modi differenti:
•
Con interruttore generale aperto funge da alimentazione primaria,
consentendo di utilizzare il robot senza consumare le batterie;
10
Si noti come in questa fase non si verifichi mai espulsione di aria, quindi il ritorno è sempre garantito.
16
Cap. 1 La Struttura del Robot
•
Con interruttore generale chiuso funge da “tampone” per le batterie11,
in modo da preservare queste ultime da inutili consumi in fasi non
operative.
Con le batterie si alimentano direttamente l’alimentatore AT, la scheda del
kicker e la scheda di potenza che pilota i motori, ciò in quanto queste due
ultime utenze richiederebbero all’alimentatore una corrente troppo elevata.
Figura 1.8 Schema elettrico del robot.
L’alimentatore accetta in ingresso tensioni da 18 V a 36 V, producendo in
uscita ±12 V e ± 5 V stabilizzati, che vengono usati per alimentare: il PC,
la scheda di controllo a microprocessore, i sensori ad infrarossi e le
telecamere.
L’autonomia del robot è variabile in quanto dipende dall’utilizzo dei
motori in ogni caso è più che sufficiente a concludere una partita senza la
necessità di dover sostituire le batterie nell’intervallo.
11
Naturalmente per ottenere questo risultato l’alimentatore esterno deve imporre una tensione
leggermente superiore a quella delle batterie.
17
Capitolo 2
STRUTTURA DEL SOFTWARE
In questo capitolo si tratterà dell’organizzazione dei comportamenti del
robot, l'elaborazione dei dati provenienti dai sensori finalizzata alla
pianificazione di obiettivi, la collaborazione multi agente; focalizzeremo
inoltre l’attenzione su
ETHNOS
ossia l’ambiente di sviluppo usato da
ART
per realizzare il sistema multi agente. In questo ambito talvolta la parola
robot verrà usata in luogo della più corretta espressione agente robotico,
cioè un agente che opera nel mondo reale.
2.1 Agenti in un ambiente dinamico
Gli agenti qui considerati vengono definiti autonomi. Prima di darne una
definizione è opportuno introdurre alcuni termini12:
Agente: entità in grado di percepire attraverso sensori e di agire tramite
attuatori; se si parla di agente intelligente, le azioni sono collegate alle
percezioni razionalmente. Nel caso dei robot descritti in questa tesi si parla
appunto di agenti intelligenti.
Agente robotico: agente che opera nel mondo fisico; i suoi sensori ed
attuatori sono dispositivi che leggono ed influiscono sull’ambiente esterno.
12
Le prime due definizioni sono tratte da [6], par 2.1 e 2.2.
Cap. 2 La Struttura del Software
Piano di azioni: un insieme di azioni atomiche organizzate come sequenza
o albero13, che l’agente può eseguire .
Agente deliberativo: agente in grado di generare internamente un piano di
azioni da eseguire successivamente.
Agente reattivo: agente che reagisce agli stimoli esterni in maniera
immediata, senza generare piani a lungo termine. Questa definizione è
usata principalmente per agenti robotici.
Un agente autonomo è caratterizzato dal fatto che il controllo delle azioni
svolte è realizzato da ciascun agente individualmente, il quale si avvale
dello scambio di informazioni con gli altri agenti del sistema solo per trarre
ulteriori elementi sui quali prendere le decisioni.
2.1.1 Caratteristiche dell’ambiente fisico
Dal punto di vista dell’agente robotico, le principali caratteristiche che
presenta l’ambiente fisico sono le seguenti :
Percezione: l’agente deve osservare in tempo reale il comportamento degli
altri oggetti, che non può prevedere o controllare completamente, al fine di
scegliere un’azione appropriata.
Azioni: controllare un oggetto libero (come la palla nella Robocup)
introduce un nuovo insieme di problemi anche nel campo della robotica,
dove tradizionalmente gli oggetti manipolati sono per lo più stazionari o
seguono traiettorie prevedibili.
Comportamenti: a seconda dei cambiamenti dinamici degli oggetti
circostanti (come la palla ed i giocatori), si possono venire a creare una
grande quantità di situazioni differenti. Il comportamento ideale da
adoperare cambia a seconda della situazione corrente. Inoltre la presenza di
altri agenti appartenenti allo stesso sistema robotico con i quali bisogna
collaborare, introduce molte altre variabili.
13
Nel primo caso si parla di piano semplice, nel secondo di piano condizionale.
19
Cap. 2 La Struttura del Software
Tempo reale: in presenza dei rapidi cambiamenti del mondo esterno, non
c’è abbastanza tempo per analizzare a fondo la situazione e generare un
piano di azioni ottimale. È necessario trovare continue soluzioni subottime.
Per quanto riguarda la pianificazione, le differenza tra le simulazioni in
condizioni ideali e l’ambiente fisico è la seguente:
In condizioni ideali, la ricerca di un piano ottimale è caratterizzata da:
- perfetta conoscenza del mondo
- certezza sull'effetto delle proprie azioni
Nel mondo reale i principali problemi sono:
- incertezza sui dati forniti dai dispositivi sensoriali esterni
- incertezza sull'efficacia delle azioni intraprese
- incertezza sull'immediato futuro del mondo esterno (presenza di altri
agenti non controllabili)
Per affrontare i problemi appena esposti legati all’incertezza, è necessario
porre maggiore attenzione, nello sviluppo di un agente operante
nell’ambiente fisico, sulla realizzazione dei processi di interpretazione dei
dati sensoriali acquisiti, al fine di ricostruire correttamente lo stato
dell’ambiente.
Molta
attenzione
deve
essere
posta
anche
nella
realizzazione del controllo degli attuatori, dei quali non si possiede la
certezza degli effetti sull’ambiente: è necessario un processo di
“controreazione” mediante il quale si corregge costantemente il movimento
previsto.
2.1.2 Pianificazione in ambienti dinamici
Nella pianificazione classica, un piano è una sequenza di azioni che porta
l’agente da uno stato iniziale ad uno stato finale (detto goal) in maniera
deterministica ed il processo di pianificazione genera un piano ottimale,
avendo completa conoscenza sulle regole che determinano l’evoluzione
dell’ambiente nel quale opera l’agente. Pianificatori ottimali e piani
20
Cap. 2 La Struttura del Software
deterministici non possono esistere in ambienti fisici dinamici, dove, gli
oggetti non sono tutti controllabili dall’agente ed il risultato di una
specifica azione che comporta l’interazione del robot con l’ambiente non è
noto a priori. Il robot deve quindi essere in grado di adattarsi all’incertezza
ed alla dinamicità dell’ambiente. In particolare, nel caso di agenti che
possiedono un piano di azioni, il principale problema è quello di dover
adattare i piani al rapido cambiamento dell’ambiente circostante. Un
numero troppo elevato di modifiche porta a prestazioni peggiori, dovute
all’alto consumo di tempo di CPU per ripianificare o riadattare il piano alla
nuova situazione. Le prestazioni peggiorano anche perché nell’ambiente
fisico si perde del tempo quando si modifica il tipo di azione in corso.
È allora possibile evidenziare gli aspetti che differenziano la
pianificazione in un ambiente fisico incerto dalla pianificazione classica.
•
In un ambiente altamente dinamico, caotico ed incerto (come quello
offerto dalla RoboCup), una pianificazione molto accurata, profonda e
razionale non paga, in termini di risultati, il tempo speso
dall’elaboratore. Anche se si volesse che l'agente pianificasse
considerando nei dettagli tutti i particolari dell'ambiente circostante ed i
possibili imprevisti, questo genererebbe un piano dalla validità molto
limitata nel tempo e probabilmente anche nell'efficacia, al crescere
dell'incertezza media sulle informazioni raccolte.
•
Quindi non è necessario pianificare ogni preciso movimento del robot:
può essere sufficiente determinare una successione di azioni di alto
livello
eseguite
successivamente
da
apposite
procedure
o
comportamenti che si occupano dei dettagli su come muovere il robot.
•
Al crescere dell'incertezza diventa sempre più forte la necessità di
abbandonare piani precisi ed articolati e si devono assumere
comportamenti sempre più di tipo reattivo, cioè in grado di reagire in
modo immediato ai cambiamenti del mondo esterno .
21
Cap. 2 La Struttura del Software
•
Il processo decisionale e di pianificazione, se correttamente distribuito
all’interno del sistema multi-agente, permette un minore scambio di
informazioni. In particolare una pianificazione centralizzata o
fortemente dipendente dalle comunicazioni, se queste divengono di
qualità molto scarsa, può impedire ad un agente di prendere decisioni e
quindi bloccarlo.
2.1.3 Behaviors
La scelta normalmente adottata in questo campo per far fronte ai problemi
esposti è di preparare un insieme di comportamenti (behaviors) di basso
livello, specializzati nello svolgimento specifico di un singolo compito,
quale percorrere una distanza o manovrare qualche altro attuatore. Questi
comportamenti vengono attivati da un modulo ragionatore che analizza il
mondo circostante e decide, più ad alto livello, quali siano le azioni da
svolgere.
I singoli comportamenti si occupano quindi di affrontare in maniera
reattiva i piccoli imprevisti incontrati durante il proprio svolgimento
(fintanto che gli imprevisti si mantengono effettivamente limitati),
liberando il modulo ragionatore dall'onere di considerare tutte le
innumerevoli combinazioni di casi particolari.
L'obiettivo finale è comunque quello di far avere alla robot comportamenti
funzionali allo scopo per il quale è stato costruito mediante l'integrazione
di percezione, decisione e movimento. In pratica, il robot dovrà muoversi
secondo una logica che non è direttamente implementata in una particolare
sezione di codici, ma che è viceversa il risultato dell'integrazione dei
moduli di percezione, decisione e comunicazione con gli altri robot.
Possiamo sintetizzare questa tecnica con il termine di purposive vision,
cioè l'integrazione di purposive action e visual perception.
22
Cap. 2 La Struttura del Software
2.3 ETHNOS
Il sistema utilizzato per la gestione degli agenti è
14
ETHNOS
, realizzato
presso l’università di Genova.
ETHNOS è un sistema basato sulle specifiche real time
POSIX
e fornisce le
primitive per la creazione di agenti, per la loro schedulazione e la loro
interoperabilità , fornendo un prefissato protocollo di comunicazione tra i
processi. Nel sistema
ETHNOS
si possono individuare due entità
fondamentali:
•
Esperti: un esperto è un programma che esegue ripetutamente una
stessa porzione di codice15 preposta a risolvere un compito specifico;
gli esperti sono gli agenti di ETHNOS, in realtà non è detto che di per sé
un esperto abbia tutte le caratteristiche per essere definito come un
agente, e cioè autonomy, social ability, reactivity, pro-activeness. Ciò
che conta è che un determinato insieme di esperti costituisca un agente
con tutte le carte in regola per essere definito tale.
•
Kernel:
il kernel è un programma che ha il duplice scopo di
interfacciarsi con lo scheduler del sistema gestendo le priorità degli
esperti, e di controllare e rendere possibili le comunicazioni fra gli
esperti.
2.3.1 Gli esperti
Il sistema considera esperto un qualunque oggetto appartenente a una
classe derivata dalla classe astratta ETExpert, quest’ultima contiene tre
funzioni virtuali che devono essere definite dal programmatore nella classe
derivata, in fase di creazione dell’esperto:
14
Expert Tribe in a Hybrid Network Operating System.
15
Gli esperti sono programmati in linguaggio C/C++.
23
Cap. 2 La Struttura del Software
•
Iinit è la funzione che contiene la procedura di inizializzazione che si
desidera venga eseguita una volta sola in una fase che precede la prima
esecuzione dell’esperto;
•
Do_Your_Duty è la funzione che contiene il comportamento specifico
dell’esperto, ovvero il codice che deve essere eseguito ad ogni
attivazione dello stesso;
•
Close è la funzione che contiene la procedura che si desidera venga
eseguita una sola volta in una fase che segue l’ultima esecuzione
dell’esperto.
Quindi ogni esperto in
ETHNOS
è organizzato secondo tre blocchi
funzionali. Questi blocchi sono costituiti dalle procedure di inizializzazione
(Init), di esecuzione (Do Your Duty) e di chiusura (Close), come riportato
in Figura 2.1.
ETHNOS permette la costruzione di tre differenti categorie di esperti:
periodici, sporadici e di background. L’appartenenza all’una o all’altra
categoria è una conseguenza dei valori che vengono passati al costruttore
della classe ETExpert e delle operazioni che vengono eseguite all’interno
della funzione Init. Vediamo le caratteristiche dei tre tipi di esperti:
•
Esperti periodici: eseguono il proprio compito secondo una scadenza
temporale prefissata, nel costruttore della classe è necessario
specificare il periodo di attivazione desiderato;
•
Esperti sporadici: eseguono il proprio compito in relazione al
verificarsi di determinati eventi, nel costruttore della classe è
necessario specificare il tempo minimo che deve intercorrere tre due
successive attivazioni, inoltre all’interno della funzione Init() bisogna
specificare i tipi di messaggi alla cui ricezione si vuole subordinare
l’esecuzione dell’esperto;
•
Esperti di background che eseguono il proprio compito solo quando il
processore non è occupato nell’esecuzione di esperti di tipo sporadico
24
Cap. 2 La Struttura del Software
o periodico, nel costruttore è necessario specificare che si vuole
assegnare all’Esperto la priorità più bassa.
Una volta che l’Esperto sia stato definito ed istanziato, è necessario
informare il Kernel di inserirlo e attivarlo nel sistema tramite le apposite
funzioni AddExpert e ActivateExpert. A questo punto il Kernel è pronto per
gestire la schedulazione e la comunicazione tra gli Esperti.
Figura 2.1 Struttura di un esperto.
Gli esperti comunicano tra loro attraverso dei messaggi, ed è compito del
programmatore utilizzare i messaggi per coordinare le attività degli esperti
secondo le proprie necessità.
Il principio di comunicazione è il seguente:
•
ogni esperto che vuole ricevere un determinato tipo di messaggio, ne fa
richiesta al kernel;
•
ogni esperto che decide di produrre e condividere un messaggio, lo
passa al kernel senza preoccupassi di conoscere la destinazione.
Il kernel garantisce che ogni messaggio prodotto sia ricevuto da tutti gli
esperti che ne hanno fatto richiesta, perché questo avvenga in maniera
efficiente, è necessario suddividere i messaggi in ‘tipi’; ossia il protocollo
di comunicazione è basato su tipi di messaggio e richieste di tipi di
messaggio.
25
Cap. 2 La Struttura del Software
Ogni Esperto che avanza richiesta di un certo tipo di messaggio possiede
una lista locale a cui vengono accodati tutti i messaggi recapitati dal
Kernel, come mostrato in Figura 2.2.
l'esperto può leggere e/o
scartare i messaggi dalla lista
MSG
HEAD
MSG
MSG
MSG
CURRENT
MSG
TAIL
Il Kernel aggiungie un
msg alla lista locale
Figura 2.2 Lista locale di un esperto.
In ogni momento la lista locale contiene tutti i messaggi che sono
disponibili per la lettura. Sarà l’Esperto stesso che decide i modi e i tempi
con cui leggere il messaggio ed eventualmente di eliminarlo tramite le
primitive di gestione della lista fornite dalla classe astratta ETExpert.
I messaggi sono costituiti da un header, dove sono specificati la
dimensione e il tipo associato al messaggio, e da un campo riservato ai
dati; la classe ETMessage fornisce tutte le primitive per la creazione, la
scrittura e la lettura dei messaggi.
Il protocollo descritto non risulta sempre adatto a una comunicazione
efficiente tra esperti, infatti in casi particolari vi può essere la necessità di
scambiare dati in modo rapido e immediato (per esempio nel caso di
esperti tra cui debba passare un continuo flusso di informazione a
frequenza molto elevata). E’ possibile dunque una comunicazione di tipo
privilegiato ( tramite puntatori ) che consente di scavalcare il protocollo di
comunicazione tramite messaggi.
26
Cap. 2 La Struttura del Software
2.3.2 Il Kernel
Il kernel è un oggetto derivato dalla classe ETDispatch, che fornisce le
primitive necessarie per la gestione degli esperti ossia le funzioni per
inserire gli esperti nel sistema e per l’esecuzione degli stessi. La funzione
DoYourDuty del kernel una volta chiamata consegna il controllo del
sistema al kernel stesso il quale esegue le seguenti operazioni:
•
effettua un’analisi approssimata del tempo di esecuzione di ogni
esperto attraverso ripetute chiamate alla funzione ETExpert::DoYourDuty;
•
in base al tempo di esecuzione e al periodo degli esperti periodici ( =
tempo minimo tra due successive esecuzioni di esperti sporadici ),
verifica la possibilità di schedulare l’insieme di esperti tramite
l’algoritmo Rate Monotomic;
•
se le condizioni di schedulabilità sono verificate manda l’insieme di
esperti in esecuzione altrimenti il controllo viene restituito al sistema
operativo;
Una volta in esecuzione il kernel si occupa anche di gestire in modo
efficiente lo scambio di messaggi, rendendo trasparente agli esperti il fatto
di trovarsi in un sistema distribuito o meno.
La comunicazione tra gli esperti è di tipo broadcast: ogni messaggio
inviato al kernel viene reso accessibile a tutti gli esperti che ne hanno fatto
richiesta aggiungendolo alla loro lista locale( Figura 2.3 ). In realtà per
evitare inutili occupazioni di memoria
ETHNOS
utilizza una zona di
memoria condivisa piuttosto che effettuare numerose copie dello stesso
messaggio. Per questo motivo gli esperti possono solo leggere i messaggi
in arrivo e non hanno la possibilità di effettuare cambiamenti sui dati. Se
un esperto vuole portare modifiche al contenuto di un messaggio deve
obbligatoriamente farsene una copia e lavorare su questa.
Esiste quindi una lista globale che svolge la funzione di memoria
condivisa; ogni volta che il Kernel riceve un messaggio prodotto da un
27
Cap. 2 La Struttura del Software
esperto, controlla se vi sono richieste per quel tipo di messaggio, in caso di
successo lo inserisce nella lista globale altrimenti viene immediatamente
scartato. Nella lista globale i messaggi sono memorizzati in modo non
omogeneo, ossia senza tenere conto dei tipi associati ad ogni messaggio.
Lista Locale (esperto 2 che ha fatto richiesta di msg di tipo A)
tipo A
tipo B
tipo A
tipo C
tipo D
tipo B
Lista Globale
Lista Locale (esperto 1 che ha fatto richiesta di msg di tipo B)
Figura 2.3 Lista globale e liste locali degli esperti.
Supponiamo che il Kernel riceva messaggi di tipo A, in prima battuta
verifica che vi siano richieste per quel tipo di messaggio ed in caso positivo
lo inserisce nella lista globale. Successivamente si preoccupa di aggiornare
le liste locali inserendo un puntatore che individui il messaggio nella lista
globale. Gli esperti potranno accedere al messaggio per la sola lettura
vedendolo come un elemento della propria lista locale. Attraverso un
contatore si tiene traccia di quanti esperti stanno attualmente accedendo al
messaggio; questo viene fatto in quanto verranno eliminati dalla lista
globale i messaggi oramai privi di interesse. Il Kernel assegna ad ogni
messaggio un contatore (reference counter) che viene inizializzato ad un
valore pari al numero di esperti che utilizzano l’informazione. Ogni volta
che un esperto accede ad un messaggio il Kernel decrementa il reference
counter, quando quest’ultimo assume valore zero il messaggio viene
distrutto.
28
Cap. 2 La Struttura del Software
Il Kernel costruisce per ogni tipo di messaggio un oggetto di tipo MailBox
contenente le seguenti informazioni:
•
tipo del messaggio
•
numero di richieste avanzate per il tipo
•
lista di puntatori agli Esperti che hanno avanzato richiesta
•
flag associato al tipo
L’informazione contenuta nel secondo punto viene utilizzata per
inizializzare il reference counter di ogni nuovo messaggio aggiunto alla
lista globale. La lista di puntatori viene scandita ogni volta che è necessario
accedere alle liste locali per rendere disponibile i messaggi agli esperti
interessati. Il Kernel preleva il puntatore a ogni esperto PEsperto, dopodichè
effettua una chiamata a PEsperto::AddToLocalList. Infine il flag associato al
tipo viene utilizzato per il ciclo di sospensione/risveglio di ogni Esperto.
2.4 Gli esperti del robot
La struttura software del robot si compone di nove esperti di cui quattro di
tipo periodico e cinque di tipo sporadico ( Figura 2.4 ).
Gli esperti di Galavrón si possono considerare appartenenti a uno dei tre
agenti seguenti: percezione, elaborazione, azione.
In particolare se indichiamo con: WORLD STATE(k)
lo stato
dell’ambiente esterno in cui opera l’agente fisico, INT STATE(k) lo stato
interno dell’agente fisico, PERCEPT(k) ciò che viene rilevato allo stato k.
L’agente di percezione è descritto dalla funzione di transizione di stato:
WORLD STATE(k)×INT STATE(k)→PERCEPT(k).
L’agente di azione è descritto dalla funzione:
INT STATE(k)→WORLD STATE(k +1).
L’agente di decisione, che è il collegamento tra l’agente di percezione e
quello di azione, presenta la seguente funzione di transizione di stato:
29
Cap. 2 La Struttura del Software
REASONING(k) : PERCEPT(k)×KNOWLEDGE BASE→INT STATE(k +1)
in cui KNOWLEDGE BASE rappresenta la base di conoscenze del sistema.
ETParking
ETVision
ETMove
ETDecision
ETLine
ETLocalization
E
T
P
i
o
n
e
e
r
ETReceive
ETCommunication
PHYSICAL WORLD
Figura 2.4 Gli Esperti del robot.
Vediamo in dettaglio gli esperti appartenenti a ciascuno dei tre agenti sopra
descritti.
2.4.1 Esperti di percezione
Ricadono in questa categoria gli esperti: ETVision, ETLine, ETReceive.
ETVision
ETVision è l’esperto di visione, suo compito precipuo è gestire il sistema
di visione, e attraverso questi determinare la posizione della palla. La
funzione Do_Your_Duty di ETVision contiene al suo interno le funzioni di
acquisizione e di filtraggio delle immagini nonché quelle per il calcolo
delle coordinate del pallone ( per maggiori dettagli si rimanda a 3.3.2 ).
L’esperto di visione è un esperto periodico con un periodo di attivazione
30
Cap. 2 La Struttura del Software
105 ms.
ETLine
ETLine è un esperto di autolocalizzazione che viene attivato solo al
termine della manovra di riposizionamento. Attribuire al robot la capacità
di autolocalizzarsi è indispensabile a causa della scarsa attendibilità che
hanno le informazioni relative alla posizione che si ricavano dalla
odometria. L’odometria è quell’insieme di informazioni che consentono al
robot di conoscere il cammino percorso sul terreno a partire da una
posizione iniziale nota. Di fatto, gli odometri (composti da una parte
hardware, gli encoder dei motori, e dal software di decodifica) sono sensori
di posizione relativi. Essi cioè aggiornano costantemente la posizione
rispetto a quella che il robot possedeva nello stato precedente.
L’inaffidabilità dell’odometria è essenzialmente dovuta agli inevitabili
slittamenti delle ruote sulla superficie di movimento16.
È stato implementato, quindi, un metodo per correggere la posizione
restituita dall'odometria tramite la visione. Il concetto base è quello di
individuare dei punti di riferimento sul campo tali che il sistema di visione
possa determinare la loro distanza relativa al robot. Essendo nota sia la
posizione di tali punti sul campo sia la posizione di tali punti relativa al
robot, è possibile risalire alla posizione del robot sul campo. Il riferimento
più evidente per il portiere è rappresentato dalla linea di porta. Questa
viene inquadrata dalle due telecamere sotto un'angolazione diversa dando
origine a due immagini diverse della stessa linea. Dal confronto delle due
immagini è possibile risalire alla posizione del robot rispetto alla linea.
Queste
informazioni
vengono
poi
utilizzate
al
termine
del
riposizionamento per resettare l’odometria.
16
La posizione restituita dall'odometria del sistema è affidabile solo se il contatto ruota pavimento è
perfetto.
31
Cap. 2 La Struttura del Software
ETReceive
Accanto ai precedenti si può collocare tra gli esperti di percezione anche
ETReceive, che è l’unico esperto di tipo sporadico abilitato a ricevere i
messaggi prodotti da altri membri del club. In sostanza esso gestisce la
comunicazione, in ricezione, del robot con gli altri membri della squadra;
infatti tutti gli altri esperti di tipo sporadico sono abilitati a ricevere solo
messaggi prodotti localmente. Questo consente, tra tutti i messaggi inviati
in rete, di filtrare quelli di cui il sistema ha realmente bisogno. E‘ bene
sottolineare il fatto che una volta stabilito un protocollo di comunicazione
comune tra i vari kernel, ogni gruppo è libero di utilizzare qualsivoglia
“tipo” per quanto riguarda i messaggi interni, l’unico vincolo è quello di
non assegnare a nessun messaggio interno un tipo già utilizzato per la
comunicazione tra i robot. Per completezza bisogna ricordare che la
gestione complessiva della comunicazione tra i robot è garantita grazie alla
presenza di un secondo esperto di comunicazione ETCommunication: è
l’esperto periodico che si occupa di produrre messaggi che sono di
interesse generale, ossia che servono anche agli altri membri del club.
Ovviamente la struttura dei messaggi deve rispettare i vincoli imposti dal
protocollo di comunicazione concordato.
2.4.2 Esperti di decisione
Abbiamo un solo esperto di decisione denominato ETDecision, si tratta di
un esperto sporadico17 che decide dove e come far muovere il robot in
funzione dello stato interno del robot e delle informazioni fornite dal
sistema di visione. In particolare, l’esperto di decisione riceve messaggi
sulla posizione della palla dall’esperto di visione. Questi messaggi
vengono elaborati alla luce della conoscenza del sistema18 e dello stato
17
In modo da essere perfettamente sincronizzato con l’esperto di visione.
18
La “conoscenza del sistema” è costituita dalle strategie utilizzate per la navigazione e per il controllo
delle azioni di gioco a seconda delle diverse situazioni che si vengono a creare.
32
Cap. 2 La Struttura del Software
interno ( che è costituito dall’insieme dei messaggi che vengono prodotti in
quell’istante, dai messaggi che provengono dagli altri robot, dalle
informazioni odometriche, dalle informazioni sulla palla e sulle linee e
dallo stato precedente ) e viene presa la decisione.
Figura 2.5
copertura.
Copertura porta con palla sopra la soglia di
La decisione diviene operativa nel momento in cui viene inviato al kernel il
messaggio indirizzato all’esperto che deve compiere l’azione decisa.
Figura 2.6
copertura.
Copertura porta con palla sotto la soglia di
In particolare, se la palla è visibile e si trova al di sopra della soglia di
copertura, l’esperto individua la retta congiungente il punto in cui si trova
la palla e il centro della porta e decide il posizionamento del robot ( attuato
dall’esperto di movimento ETMove ) nel punto in cui quest’ultima
33
Cap. 2 La Struttura del Software
interseca la retta sulla quale si sta muovendo il robot in modo da garantire
la massima copertura della porta ( Figura 2.5 ).
Se la palla è visibile ma si trova al di sotto della soglia di copertura,
l’esperto di decisione si limita a far stare il robot davanti alla palla ( Figura
2.6 ).
Altro compito svolto da ETDecision è quello di gestire il sistema di calcio:
in particolare, sulla base dei messaggi di posizione della palla, decide se
abilitare o meno il kicker ed eventualmente attivarlo.
Se il robot non vede la palla, il kicker viene disabilitato in modo da evitare
di attivarlo in caso di urti contro altri robot o contro i bordi del campo.
Viceversa, nel caso in cui la palla rimanga ferma a pochi centimetri dal
robot, l’esperto di decisione può forzare l’attivazione delle elettrovalvole
per cercare comunque di spazzare la palla. Siccome il sistema operativo
della scheda di controllo ( KaOS ) disabilita a sua volta il kicker se gli
infrarossi rilevano un ostacolo, tale attivazione forzata da parte dell’esperto
di decisione scavalca il KaOS e determina comunque un calcio.
2.4.3 Esperti di movimento
Gli esperti di movimento sono tre: ETMove, ETLocalization ed
ETParking.
ETMove
Il controllo del movimento viene svolto a basso livello dal sistema
operativo della scheda di controllo. A più alto livello è l’esperto di
decisione a decidere la strategia di movimento che viene poi attuata da
ETMove.
ETMove è un esperto sporadico che sulla base del target contenuto nel
messaggio di attivazione decide la direzione e la velocità con cui il robot si
deve muovere. Questo esperto implementa tre diversi comportamenti, due,
che sono finalizzati a garantire la copertura della porta, sono stati descritti
34
Cap. 2 La Struttura del Software
in precedenza, il terzo ( detto di turboboost ) consiste nel far muovere il
robot verso la palla, quando questa si trovi al suo fianco, nel tentativo di
spazzarla; quest’ultimo viene attivato in condizioni d’emergenza quando
evidentemente la strategia di copertura precedentemente illustrata ha
fallito. In effetti quando la palla si trova a fianco del robot, la strategia
migliore è quella di far muovere il robot verso la palla il più velocemente
possibile.
ETParking
ETParking è un esperto di tipo sporadico il cui compito è quello di gestire
il riposizionamento del robot. Per riposizionamento del robot si intende
una manovra al termine della quale il robot si riporta in una posizione
predefinita e con una orientazione predefinita.
Naturalmente per raggiungere questo obiettivo è indispensabile che il robot
possieda costantemente determinate informazioni sulla propria posizione in
campo. In effetti Galavrón è in grado, sia pure con alcuni limiti, di
autolocalizzarsi, cioè di compiere autonomamente il processo di
localizzazione.19
L’esperto ETParking viene attivato nel momento in cui l’esperto di
decisione produce il messaggio
MSG PARKING,
ovvero qualora il robot sia
avanzato eccessivamente (addirittura fuori dall’area) o sia arretrato
eccessivamente (addirittura all’interno della porta). Il riposizionamento
consiste nel far tornare il robot all’interno dell’area di porta, al centro, e
con una orientazione parallela alla linea di fondo campo. Il robot, cioè ,
torna in quella che è la sua posizione iniziale. Il riposizionamento avviene
esclusivamente in base alle informazioni odometriche, per cui sorge la
necessità di convalidarlo mediante la visione (esperto ETLine). La
esclusivamente in base alle informazioni odometriche, per cui sorge la necessità di convalidarlo mediante
la visione (esperto ETLine). La manovra di riposizionamento può anche prevedere una calibrazione 19
Con il termine localizzazione si intende il processo che consente al robot di individuare ed aggiornare
la propria posizione e la propria orientazione grazie ai dati provenienti dai sensori.
35
Cap. 2 La Struttura del Software
manovra di riposizionamento può anche prevedere una calibrazione
dell’odometria del robot se questa si discosta troppo dalle informazioni che
il robot ricava dai suoi sensori.
ETLocalization
Si è visto in precedenza come in situazioni di emergenza ( sostanzialmente
quando la palla si trova a fianco del robot ) venga deliberato il
comportamento ( detto turboboost ) che consiste nel far muovere il robot
verso il pallone alla massima velocità.
L’esperienza ha mostrato che questa scelta è la più conveniente, d’altra
parte bisogna garantire che questo comportamento venga attivato solo se è
veramente necessario. In particolare se il robot si trova ai limiti dell’area di
porta e il pallone capita nella zona che termina l’attivazione del
comportamento di turboboost non è opportuno che tale comportamento
venga attivato, dato che la porta resterebbe senza copertura; è più
vantaggioso che il robot rimanga fermo a presidiare la zona. Viceversa se,
nelle stesse condizioni, il robot i trova all’interno dell’area è opportuno che
il turboboost venga attivato.
Proprio per garantire questo comportamento è stato sviluppato l’esperto
ETLocalization, si tratta di un esperto periodico che sulla base delle
informazioni provenienti dall’odometria, si incarica di arrestare il robot
qualora esso sotto il controllo di ETMove tenti di uscire dalla zona
compresa tra le ascisse –X_ESTREMA X_ESTREMA.
Gli esperti descritti in precedenza, che inviano comandi di movimento,
richiamano determinate funzioni in una classe messa a disposizione
dall’esperto ETPioneer il quale si occupa della gestione del protocollo di
comunicazione con la scheda di controllo tramite la porta seriale.
ETPioneer è l’esperto che interfacciandosi con la scheda di controllo
fornisce una serie di comandi elementari per i motori (es. Speed(), Jog()..),
36
Cap. 2 La Struttura del Software
funzioni per lettura e l’impostazione dell’odometria (es. X(),Y(),SetPos()..)
e funzioni per la gestione delle elettrovalvole. Si intuisce come questi sia
cruciale per il funzionamento del robot in quanto quasi tutti gli esperti
utilizzano i servizi messi a disposizione da ETPioneer. Si è optato quindi
per un tipo di comunicazione privilegiata tra ETPioneer e il resto del
sistema utilizzando i puntatori in modo da garantire uno scambio di dati
sicuro ed immediato anche nel caso di un flusso elevato di dati. È chiaro
che, scavalcando il protocollo di comunicazione ETPioneer deve essere
necessariamente periodico. Operare in questo modo presenta il vantaggio
di non dover attivare ogni volta l’esperto in questione per leggere un dato.
Si ha comunque un ritardo temporale intrinseco dovuto al fatto che, nel
caso di lettura di un dato, l’informazione è aggiornata all’ultima attivazione
di ETPioneer. In modo del tutto analogo il problema si ripresenta per gli
esperti che vogliono impostare un comando di velocità in quanto questo
viene effettivamente eseguito alla successiva attivazione di ETPioneer. In
teoria per limitare questo errore è sufficiente ridurre il tempo di attivazione
dell’esperto ETPioneer. Il limite inferiore per il tempo di attivazione di
ETPioneer è però determinato dalla velocità di trasmissione della porta
seriale della scheda di controllo dei motori. La porta seriale in questione a
una velocità di trasmissione pari ha 9600 baud, il che significa che non
riesce ha sostenere più di dieci pacchetti al secondo, di conseguenza resta
fissato il tempo minimo di attivazione pari a 100 msec.
Peraltro ETPioneer non fornisce alcuna funzione per la lettura dei dati
provenienti dai sensori ad infrarossi in quanto questi vengono gestiti
direttamente dal microprocessore presente sulla scheda di controllo.
Il compito principale dei sensori ad infrarossi è quello di implementare il
sistema di obstacle avoidance, proprio per questo al fine di evitare inutili
ritardi si è pensato di gestire l’informazione prodotta dagli infrarossi
direttamente a livello del sistema operativo della scheda di controllo in tal
modo si ottiene una lettura delle informazioni praticamente immediata,
37
Cap. 2 La Struttura del Software
inoltre si evita di impegnare la porta seriale che come abbiamo visto
costituisce un limite del sistema.
38
Capitolo 3
IL SISTEMA DI VISIONE
Uno degli aspetti più interessanti legati all’aumento di potenza di
elaborazione e di capacità di trasmissione delle informazioni, è la
possibilità di gestire dati multimediali e le immagini in particolare.
La trasmissione di informazioni sotto forma di immagini digitali, viene ad
assumere un ruolo sempre crescente, in quanto per descrivere una scena nel
dettaglio possono servire “migliaia di parole”, mentre la trasmissione di
una informazione che colpisce il nostro organo di senso primario (la vista)
dà, per la completezza dell’immagine, la possibilità di una interpretazione
immediata. Però, i sensori di visione, le telecamere, mentre da un lato
costituiscono una straordinaria fonte di informazione, dall’altro sono quasi
sicuramente i dispositivi più complessi che si possono utilizzare.
3.1 Componenti hardware del sistema di
visione
I dati contenuti in un’immagine non sono direttamente accessibili
all’elaboratore, ma l’immagine deve essere prima acquisita e digitalizzata.
Quindi per elaborare immagini, un computer necessita di una telecamera
che inquadrando una scena ne riproduca un’immagine, e di un frame
Cap. 3 Il Sistema di Visione
grabber che la digitalizzi consentendone il trasferimento nella memoria
dell’elaboratore.20
3.1.1 Telecamere
La telecamera è composta sostanzialmente da un sensore CCD, da una parte
elettronica di conversione del segnale e dall'ottica. Essa è caratterizzata
dalla risoluzione che supporta (numero di linee dell’immagine) e dallo
standard del segnale di output prodotto ( NTSC, PAL o SECAM ).
Mentre le caratteristiche del sensore
CCD
determinano essenzialmente la
risoluzione della telecamera, dall'ottica dipende il campo visivo e la
distorsione.
La risoluzione della telecamera, è determinata dalla risoluzione del sensore
che a sua volta, dipende dal numero di pixel che lo compongono e dalle
dimensioni degli stessi. Altre due importanti caratteristica del sensore
CCD
che hanno rilevanti ripercussioni sulle prestazioni della telecamera sono: il
suo intervallo spettrale, ossia l'intervallo delle lunghezze d'onda delle
radiazioni elettromagnetiche che vengono rilevate dal sensore, da cui
dipende la percezione del colore; la sensibilità che è un indicatore della
capacità del sensore di registrare immagini anche in condizioni di luce
scarsissima.
Tuttavia il sensore CCD da solo non è sufficiente per ricostruire l’immagine
di una scena, è indispensabile un dispositivo ottico, una lente, che focalizzi
la scena sul sensore. In realtà, esistono numerosi parametri che
caratterizzano una lente, ma dal punto di vista della robotica il parametro
che é maggiormente preso in considerazione è il campo visivo. Questi è
espresso in gradi e rappresenta l'angolo all'interno del quale viene ripresa la
scena.
20
Con il termine telecamera, si fa implicitamente riferimento a telecamere analogiche; assumendo quindi
che in ogni caso l’informazione prodotta da tale sensore sia fornita per tramite di un segnale
analogico.
40
Cap. 3 Il Sistema di Visione
Il campo visivo deve essere valutato in funzione dell'applicazione che si
intende realizzare. In particolare, nel caso di un robot mobile si deve
valutare la mansione che lo stesso è chiamato ad eseguire. Per quanto
concerne il robot portiere, sembra ragionevole impiegare un’ottica che
consenta al robot di vedere quanto più terreno di gioco possibile.
A tal proposito, esistono ottiche dette grandangolari con elevato campo
visivo in grado di riprendere gran parte della scena che circoscrive il robot.
Va detto peraltro che più elevato è il campo visivo maggiore è l’effetto
distorcente della telecamera, il che ha poi importanti implicazioni sui
successivi processi di elaborazione dell'immagine.
Peraltro non è scontato che un robot che debba avere una visione quanto
più possibile ampia della scena che lo circonda, sia equipaggiato con
ottiche grandangolari. Esistono infatti diverse soluzioni per ampliare il
campo inquadrato, che si possono raggruppare in quattro categorie:
•
sistemi di visione omnidirezionali;
•
tante telecamere in cui ciascuna inquadra una porzione di campo
limitata;
•
poche telecamere con ottiche grandangolari;
•
una sola telecamera orientabile ed eventualmente con zoom.
Nella fattispecie, si è implementato un sistema di visione di tipo
binoculare; esso è costituito da due telecamere a colori collocate della parte
alta del robot, disposte in modo tale che i piani su cui giacciono gli assi
ottici formino tra loro un angolo di 90°. Le telecamere montano un'ottica
grandangolare con angolo di apertura orizzontale di 120°. In questo modo i
campi visivi delle due telecamere fanno registrare una sovrapposizione
centrale di circa 30°. In tal modo il campo visivo complessivo è di 225° (
Figura 3.1 ). L'inclinazione delle telecamere è di 51° , tale valore è stato
scelto in modo da raggiungere il miglior compromesso tra porzione utile
dell'immagine e distorsione. Con una inclinazione troppo bassa, l'asse
ottico tende ad essere parallelo al suolo e la telecamera inquadra zone
41
Cap. 3 Il Sistema di Visione
troppo al di sopra del piano di gioco e prive, quindi, di interesse. Al
contrario, un angolo troppo elevato comporta che le zone lontano dal robot
corrispondano nell'immagine a parti marginali, soggette in modo eccessivo
a distorsione.
Campo inquadrato
dalla telecamera Sx
120°
Campo inquadrato
dalla telecamera Dx
120°
Figura 3.1 Sistema di visione, il campo visivo.
3.1.2 Frame grabber
Come accennato in precedenza, l'immagine inquadrata viene trasformata
dalla telecamera in un segnali video analogico in banda base (solitamente
conforme con lo standard PAL ); pertanto affinché il PC possa elaborare le
immagini, è necessario effettuare un processo di conversione analogico
digitale del segnale video, che viene attuato da dispositivi noti come frame
grabber. Questi, accettano in ingresso una sorgente analogica di tipo
composite-video e/o SVHS ed effettuano una conversione A/D del segnale
42
Cap. 3 Il Sistema di Visione
al termine della quale rendono disponibile l'immagine digitalizzata
memorizzata in un buffer dalle dimensioni opportune.
A seconda dei modelli, il buffer contenente l'immagine può fisicamente
risiedere su una RAM a bordo della scheda di acquisizione oppure, nei
modelli più economici, in un'area riservata della RAM del PC.
Figura 3.2 Conversione A/D.
La trasformazione da segnale analogico a digitale, consta di due fasi: il
campionamento del segnale analogico ad una prefissata frequenza,
mediante la quale il segnale in ingresso ( tempo continuo a valori continui )
viene trasformato in un segnale tempo discreto a valori continui; la
quantizzazione attraverso cui ogni campione generato nella fase precedente
viene mappato in un insieme finito di valori, generando il segnale digitale (
tempo discreto a valori discreti ). I valori dei campioni quantizzati vengono
memorizzati all'interno dei pixel dell'immagine digitalizzata ( Figura 3.2 ).
Solitamente, in fase di inizializzazione del dispositivo, è possibile fissare la
risoluzione ( espressa in numero di righe e colonne ) in cui l'immagine
verrà digitalizzata, fissando la frequenza con cui il segnale video verrà
campionato.
In particolare minore è la frequenza di campionamento minore è la
43
Cap. 3 Il Sistema di Visione
risoluzione. 21
Oltre alla risoluzione, va scelta anche la profondità di pixel, ovvero il
numero di bit relativi ad ogni pixel. Come si diceva il processo di
acquisizione, non è semplicemente un processo di campionamento ma
anche di quantizzazione. La profondità dell'immagine fissa appunto il
numero di bit che verranno destinati per quantizzare ogni campione.
L'acquisizione può avvenire in toni di grigio o a colori. Nel primo caso si
ottengono immagini a livelli di grigio o monocromatiche. Esse contengono
solo informazione relativa alla luminosità e nessuna informazione relativa
al colore infatti viene campionato e quantizzato il solo segnale di
luminanza. Tipicamente un’immagine a livelli di grigio viene rappresentata
usando 8 bit/pixel, il che permette di avere 256 (0 – 255) livelli che
forniscono una risoluzione maggiore di quella raggiungibile dal nostro
sistema visivo. Queste immagini vengono rappresentate in memoria come
un singolo vettore 2D.
Diversamente dalle immagini in monocromatiche che richiedono un solo
parametro per ogni punto (la luminosità), le immagini a colori possono
essere rappresentate in memoria come una tripla di vettori 2D, uno per
ogni parametro del modello. Inoltre in questi caso, il numero di bit/pixel
utilizzati per rappresentare l’immagine può variare. È ovvio che maggiore
sarà il numero di livelli, maggiore sarà la veridicità dei colori
dell'immagine. Nei casi migliori la profondità arriva a 24 bit.
Su Galavrón si è deciso di installare due frame grabber commerciali dello
stesso modello, AverMedia Ez-Capture, basati sul chip BrookTree BT878.
Quella dei frame grabber commerciali è senza dubbio la strada più
generica. Queste schede sono molto diffuse, ne esistono di modelli anche
molto economici, e, aspetto da non sottovalutare, esistono i driver per
21
Per quanto riguarda la scelta della risoluzione a cui lavorare, occorre ricordare che tanto più la
risoluzione è bassa, tanto minori saranno: i tempi necessari per acquisire ed elaborare l'immagine ,
nonché la dimensione che l'immagine digitalizzata occupa in memoria.
44
Cap. 3 Il Sistema di Visione
sistemi operativi più diffusi ed è quindi facile utilizzarli con semplici
funzioni ad alto livello.
3.2 La segmentazione delle immagin i
Uno dei processi visivi più comuni per un robot mobile, è quello della
segmentazione dell'immagine allo scopo di riconoscere forme e possibili
ostacoli. Ogni qual volta il robot mobile debba muoversi in ambienti
strutturati in cui dominano i colori, la segmentazione dell'immagine è il
primo processo di elaborazione. Se è possibile, infatti, distinguere gli
elementi strutturali dell'ambiente che circonda il robot tramite i colori, una
buona segmentazione dell'immagine rappresenta, di fatto, una buona
percentuale del lavoro necessario per la classificazione degli elementi che
compongono la scena circostante il robot.
La segmentazione è la suddivisione dello spazio dei colori ( discreto ) , in n
disgiunte regioni secondo un prefissato criterio di omogeneità.
Il criterio di omogeneità è in generale di natura intuitiva, soggettiva e
dipende dall’applicazione specifica, come ad esempio nel caso che si
voglia ripartire l’immagine di un ambiente chiuso ( in cui il robot deve
navigare ) in zone appartenenti alle pareti, alle porte, al pavimento, ecc.
In questo caso la segmentazione delle immagini provenienti dal sistema di
visione del robot consisterà nell'etichettare in un certo modo i pixel
appartenenti al medesimo elemento strutturale.
Spesso si può associare all'etichetta uno pseudo-colore, in tal modo
dall'immagine naturale viene estratta come risultato della segmentazione
una nuova immagine detta, appunto, segmentata.
3.2.1 Modelli di rappresentazione dei colori
I modelli di rappresentazione dei colori più noti, alcuni dei quali
presentano caratteristiche costitutive analoghe a quelle del sistema visivo
45
Cap. 3 Il Sistema di Visione
umano sono: il modello RGB, il modello CMY, il modello HSI
I primi due sono ‘orientati all’hardware’ nel senso che sono facilmente
implementabili in un computer ma sono difficili da usare in quanto poco
intuitivi. Per questo sono stati introdotti modelli ‘orientati all’utente’, come
l’HSI, basati sugli elementi tinta, saturazione e intensità (ovvero lo stesso
concetto utilizzato dall’artista per la realizzazione di un quadro).
Modello RGB (Red – Green – Blue)
Basato sullo stesso criterio di percezione dei colori del sistema visivo
umano22, consiste in una rappresentazione mediante un sistema di
coordinate cartesiane tridimensionale i cui assi principali rappresentano il
rosso, il verde e il blu.
Verde
Giallo
Ciano
Bianco
Nero
Blu
Rosso
Magenta
Figura 3.3 Cubo RGB.
L’insieme dei valori di interesse è il cubo unitario in Figura 3.3. Ogni
punto all'interno del cubo rappresenta un colore e le sue coordinate
indicano le sue componenti di rosso, verde e blu. Il vertice del cubo che
coincide con l'origine degli assi rappresenta il colore con tutte le
componenti nulle: il nero. Percorrendo i tre spigoli del cubo che partono
dal vertice posto nell'origine si osservano tutte le gradazioni dei tre colori
22
Il colore di un punto può essere interpretato come una combinazione dei tre colori fondamentali.
46
Cap. 3 Il Sistema di Visione
fondamentali. Il vertice del cubo opposto a quello nell'origine rappresenta
il colore bianco che è quindi il colore con tutte le tre componenti al
massimo valore.
La diagonale principale che unisce i punti relativi al nero e al bianco e su
cui si trovano tutti i punti con uguale ammontare delle tre componenti
rappresenta i livelli di grigio.
Modello CMY (Cyano – Magenta – Yellow)
Il modello CMY è il complementare del modello RGB. In riferimento al
cubo RGB si nota come ogni colore si possa anche esprimere in funzione
delle componenti ciano, magenta e giallo che rappresentano così una
seconda terna di colori fondamentali. Pertanto l’insieme è lo stesso del
precedente con la differenza che il bianco e il nero sono invertiti. Inoltre i
colori sono specificati come quantitativi da detrarre dal bianco invece che
come quantitativi da aggiungere al nero come avviene in RGB.
L’equazione per la conversione da RGB a CMY è quindi la seguente:
 C  1  R 
 M  = 1 − G 
    
 Y  1  B 
Questo modello è comodo quando si ha a che fare con dispositivi che
depositano pigmenti colorati sulla carta come le fotocopiatrici e i plotter a
getto di inchiostro.
Modello HSV ( Hue – Saturation – Intensity )
Analogamente al sistema visivo umano opera una netta distinzione tra
luminosità e colore. È più intuitivo, rispetto ai modelli precedenti, in
quanto il colore di un punto è determinato dalle tre componenti tinta,
47
Cap. 3 Il Sistema di Visione
saturazione e luminosità. È possibile passare dal sistema RGB al HSI
mediante la seguente trasformazione
0.11   R 
 I  0.30 0.59
 xI  = 0.60 − 0.28 − 0.32 ⋅ G 
  
  
 xQ   0.21 − 0.52 0.31   B 
dove I è la luminosità anche detto segnale di luminanza23, che è l’unico
parametro usato nel caso di immagini monocromatiche, mentre xI e xQ sono
le componenti in fase e quadratura del segnale di crominanza che contiene
le informazioni relative al colore. Tuttavia, ragionare in termini di
componenti in fase e quadratura non è molto intuitivo, per questo
normalmente si considerano l’ampiezza e la fase del segnale del segnale di
crominanza che costituiscono per l’appunto gli altri due parametri del
modello. Alla fase viene dato il nome di tinta (Hue) mentre all'ampiezza
quello di saturazione (Saturation).
In questo modo nel formato HSI, un immagine è rappresentata dagli
attributi di tinta saturazione e intensità che rappresentano qualità del colore
intuitivamente comprensibili. La tinta è un attributo dell’immagine che
descrive un colore puro, ossia rappresenta quello che si intende per colore
vero e proprio24. La saturazione descrive il grado con cui il colore puro è
diluito con il bianco, un colore fortemente saturo ha un basso contenuto di
bianco. L’intensità è un attributo indipendente dal colore che descrive il
grado di luminosità. L’intensità di un immagine a colori corrisponde al
livello di grigio.
Quindi il sistema di coordinate HSI è cilindrico ed il sottoinsieme di
interesse è un cono. Lungo l'asse del cono, partendo dal vertice, si può
osservare dal nero al bianco tutta la gamma dei grigi. Sulla base del cono si
23
Si può notare come la luminanza sia una media pesata delle componenti RGB. In particolare viene
dato maggior peso al verde, meno al rosso e ancora meno al blu. Ciò viene fatto per rispettare le
caratteristiche dell'occhio umano che è più sensibile al verde, meno al rosso e ancora meno al blu.
24
Quando si parla di un colore dicendo che è blu piuttosto che giallo si sottointende proprio che ci si
riferisce ad H.
48
Cap. 3 Il Sistema di Visione
osserva tutta la gamma dei colori con massima luminanza: al centro si
trova il bianco e sul perimetro della base tutti i colori saturi. Sulla
superficie laterale si osservano tutti i colori saturi con luminosità
decrescente verso il vertice. All'interno del volume si trovano tutte le
situazioni intermedie.
3.2.2 Segmentazione in coordinate RGB
La segmentazione di un'immagine a colori nel sistema RGB si suddivide in
due fasi: nella prima si partiziona il cubo RGB in regioni ad ognuna delle
quali viene assegnata una label; nella seconda fase si scandiscono tutti i
pixel dell'immagine e si assegna ad ognuno di essi la label della regione del
cubo RGB alla quale appartengono.
Ovviamente è possibile associare un colore ad ogni label25, in tal modo è
possibile rappresentare tramite un'immagine, che prende il nome di
immagine segmentata, il risultato della segmentazione.
La segmentazione va a buon fine ogni volta che è possibile distinguere
popolazioni ben distinte di punti nel cubo RGB. In questi casi è, infatti,
agevole partizionare lo spazio facendo in modo che ogni popolazione
appartenga ad una sola porzione. È questo il caso di immagini in cui esiste
un elevato contrasto tra i colori dei vari oggetti. Purtroppo si ha spesso a
che fare con immagini in cui, invece, esistono molte tinte intermedie. In
questi casi i pixel dell'immagine vanno ad occupare lo spazio nel cubo
RGB in maniera più uniforme e la scelta delle soglie risulta molto più
difficile.
3.3 Estrazione dell'informazione
L'obiettivo dell'elaborazione è
25
quello
di
estrarre dall'immagine
La cosa più naturale e intuitiva è associare alla label non un colore qualsiasi ma quello dominante nella
porzione di cubo presa in questione.
49
Cap. 3 Il Sistema di Visione
l'informazione sulla posizione la palla. Il riconoscimento degli oggetti nella
fattispecie il pallone, può essere effettuato con vari metodi; essenzialmente
possiamo distinguere tra metodi basati sulla forma, in questo caso ogni
oggetto viene individuato per la forma propria distinta dalle altre, e metodi
basati sul colore, ogni oggetto viene caratterizzato dal proprio colore.
Nel caso in esame il riconoscimento del pallone si basa unicamente sul
colore, dato che in ambito RoboCup i colori sono codificati.
3.3.1 Riconoscimento del pallone
Il riconoscimento del pallone avviene in due fasi, anzitutto i frame grabber
acquisiscono le immagine provenienti dalle due telecamere. L’immagine
acquisita è salvata in un buffer in memoria in formato RGB a 32 bit: il
primo byte viene utilizzato per codificare la componente blu il secondo per
codificare il verde, il terzo per il rosso; il quarto byte non è utilizzato26.
Quindi l’immagine fornita dalla telecamera che in quel determinato istante
inquadra la palla viene segmentata. Come già detto la segmentazione
consiste nell’esaminare tutti i pixel dell’immagine e classificarli in base a
soglie fisse stabilite precedentemente offline. Avendo adottato il sistema
RGB, si possono confrontare immediatamente le componenti di colore di
ogni pixel con le soglie e procedere con la classificazione.
Dato che l’obbiettivo è riconoscere il pallone, e considerato che in ambito
RoboCup per regolamento la palla è di colore rosso, il principale compito
della segmentazione in questo caso è quello di mettere in evidenza i pixel
rossi.
Per riconoscere i pixel di un determinato colore (Rp, Gp, Bp), rosso in
questo caso, si può pensare di applicare un filtro all’immagine tarato su tale
tonalità . Questo metodo risulterebbe adeguato, quindi efficace, se il colore
della palla nell’immagine fosse uniforme ma, di fatto, per la presenza di
26
Questa scelta è finalizzata alla riduzione dei tempi di elaborazione, in particolare per la ricerca di un
determinato pixel ( data la sua posizione in termini di riga e colonna ), nel buffer.
50
Cap. 3 Il Sistema di Visione
ombre e riflessi causati dalle sorgenti di luce ciò non è vero. Il risultato è
che solo pochi pixel vengono riconosciuti come appartenenti alla palla. Si
potrebbe allora pensare di utilizzare un filtro “allargato” e prendere come
punti della palla tutti i pixel caratterizzati da valori RGB tali che:
Rp − ∆ ≤ R ≤ Rp + ∆
Gp − ∆ ≤ G ≤ Gp + ∆
Bp − ∆ ≤ B ≤ Bp + ∆
In effetti anche se questo nuovo filtro può sembrare efficiente, bisogna
considerare che tra colori simili le variazioni dei colori fondamentali non
sono uniformi; pertanto sarebbe più corretto usare tre delta distinti. A
questo punto bisogna stabilire quali siano i delta corretti; questa
determinazione non è facile in quanto essi dipendono dal colore di
riferimento e anche dalle condizioni di luce dell’ambiente che, per un robot
in movimento cambiano continuamente.
Per risolvere questi problemi si è deciso di utilizzare due soglie. In una
prima fase si analizzano tutti i pixel dell’immagine al fine di scartare quelli
che pur avendo una componente rossa elevata non sono rossi27; per fare
questo, si marcano come “non rossi” tutti quei pixel per le cui componenti
soddisfano la relazione
R-(G+B) < SOGLIA_1
Il secondo confronto avviene esclusivamente sulla componente rossa dei
pixel che hanno superato il primo confronto. Pertanto sono considerati
rossi tutti quei pixel per i quali
R > SOGLIA_2
Una volta effettuata la segmentazione, e quindi individuati i pixel rossi
nell’immagine, si è di fatto riconosciuto il pallone, ciò è possibile in quanto
la palla è l’unico oggetto rosso ammesso in campo. Peraltro non è escluso
che qualche pixel classificato come rosso compaia ugualmente, di questa
27
Infatti anche un pixel bianco o ad esempio marrone presenterà una componente rossa molto elevata.
51
Cap. 3 Il Sistema di Visione
eventualità occorre tener conto durante il calcolo della posizione della
palla.
3.3.2 Calcolo della posizione della palla
Dall’immagine segmentata è possibile individuare la posizione della palla
all’interno dell’immagine.
La procedura utilizzata è molto semplice e consiste nel calcolare il
baricentro di tutti i pixel classificati come rossi. Si tratta di eseguire la
somma di tutte le ascisse e tutte le ordinate degli n pixel rossi
dell'immagine segmentata e dividere tali somme per n. Si assumono come
coordinate della palla quelle del baricentro. Il vantaggio nell'utilizzo del
baricentro, sta nel fatto che eventuali pixel rossi isolati pesano poco e il
baricentro rimane nelle vicinanze del centro della sagoma.
Figura 3.4 Calcolo della posizione della palla.
Calcolato il baricentro dei pixel rossi sono note le coordinate
X
e Y della
52
Cap. 3 Il Sistema di Visione
palla riferite all’immagine.
Per passare da queste coordinate alle coordinate della palla sul campo si
utilizzano due tabelle di look-up, una per ogni telecamera. Queste tabelle
presentano quattro colonne ciascuna. Nelle prime due colonne sono
elencate tutte le possibili diverse coordinate (X,Y) nell'immagine, mentre
nelle ultime due le corrispondenti posizioni della palla sul terreno. Le
tabelle vengono caricate in memoria all'avvio del programma, in modo che
l'accesso sia il più rapido possibile. Per la generazione le tabelle sono stati
sviluppati programmi ad hoc che hanno richiesto la creazione di un
modello del sistema ottico delle telecamere.
53
Capitolo 4
IL SISTEMA DI MOVIMENTO
Un aspetto importante nella realizzazione di un robot mobile è senz’altro lo
studio degli attuatori e delle possibilità di movimento. In particolare in
questo capitolo si vogliono considerare le problematiche relative alla
progettazione del sistema di movimento e specificamente della scheda di
potenza attraverso la quale il microprocessore controlla i motori.
Da questo punto di vista, è essenziale per una corretta ed efficiente
progettazione della circuiteria di controllo, un’analisi degli organi di
trasmissione e del carico, che consenta una volta che si sia scelto il tipo di
motore da utilizzare, di pilotarlo in modo da sfruttarne al meglio le
caratteristiche elettromeccaniche.
Proprio per questo iniziamo considerando quelle che sono le caratteristiche
del sistema di movimento dal punto di vista della trasmissione del moto.
Dal punto di vista della sola trasmissione del moto il sistema è costituito da
tre elementi: il motore, la riduzione e il carico.
4.1 Il motore
Un motore elettrico è una macchina rotante che trasforma l'energia elettrica
in energia meccanica. Si possono suddividere i motori elettrici
Cap. 4 Il Sistema di Movimento
essenzialmente in due grandi categorie: motori a corrente continua, e
motori a corrente alternata. Questi ultimi sono utilizzati tipicamente negli
azionamenti industriali in macchinari di grandi dimensioni (macchine
operatrici e simili) e ne insistono di vari tipi.
I motori a corrente alternata sono tuttavia raramente utilizzati nei robot
mobili dato che in questo caso l’energia è fornita da una batteria di
accumulatori; per tanto, per questo tipo di applicazioni si utilizzano motori
a corrente continua .
Anch'essi si presentano in una grande varietà di forme e dimensioni:
motori con eccitazione indipendente, con eccitazione derivata, con
eccitazione serie, con eccitazione composta; motori a magneti permanenti
con e senza spazzole. Nel caso in esame si prende in considerazione un
motore in corrente continua a magneti permanenti con spazzole.
Questi ultimi presentano due terminali, applicando una tensione ai capi dei
quali si provoca la rotazione del motore in una direzione, invertendo la
polarità della tensione si ottiene di invertire il verso di rotazione del
motore. La polarità della tensione determina quindi il senso di rotazione
del motore, mentre l'ampiezza ne determina la velocità .
4.1.1 Principio di funzionamento
Consideriamo ora come funziona un motore in corrente continua a magneti
permanenti. Capire il meccanismo responsabile della produzione della
coppia motrice è utile sia al fine del corretto dimensionamento del motore,
sia per il progetto del circuito di potenza che lo deve controllare.
Com'è noto, un conduttore rettilineo di lunghezza l disposto normalmente
alle linee di forza di un campo magnetico uniforme di induzione costante B
e percorso da una corrente d'intensità I, è sollecitato da una forza magneto
elettrica che tende a spostarlo normalmente alla corrente e al campo, nel
verso che viene determinato mediante la regola della mano destra.
L'intensità f di questa forza è data, in newton, dalla relazione:
55
Cap. 4 Il Sistema di Movimento
f = B ⋅l ⋅ I
quando B sia espresso in [Wb m 2 ] , l in [m] e I in [A] .
Si consideri ora l'indotto di un motore a magneti permanenti con il relativo
collettore, e si supponga di inviare in esso attraverso le spazzole, una certa
corrente I .
Tale corrente si biforca nelle due vie interne dell'indotto, percorrendo i
rispettivi conduttori in senso
opposto; per qualsiasi posizione
dell'indotto, l'andamento delle
correnti nei conduttori, rispetto
al campo, è immutabilmente
quello rappresentato in Figura
4.1 ; cioè mentre i conduttori
Figura 4.1
che in un dato istante si trovano
sotto un polo sono percorsi
dalla corrente I/2 diretta in un determinato senso, quelli che si trovano sotto
l'altro sono percorsi da una ugual corrente diretta in senso opposto.
D'altra parte essendo tali conduttori immersi nel campo magnetico
induttore che attraversa l'intraferro, ciascuno di essi viene ad essere
sollecitato da una forza magneto elettrica f.
Poiché nel traferro le linee di induzione del campo magnetico presentano
un andamento pressoché radiale, le forze agenti sui diversi conduttori
hanno, rispetto al rotore, una direzione tangenziale come mostra la figura.
Il complesso di queste forze tangenziali, ciascuna moltiplicata per il
proprio braccio d'azione rispetto all'asse, ha così per risultante una coppia
meccanica che determina la rotazione dell'indotto.
Tuttavia, nel momento in cui il motore sotto l'azione della coppia motrice
che lo sollecita inizia la sua rotazione, i conduttori dell'indotto nel loro
movimento vengono necessariamente a tagliare il campo magnetico
induttore: con ciò ognuno di essi diviene sede di una forza elettromotrice
56
Cap. 4 Il Sistema di Movimento
indotta. Il valore risultante di queste f.e.m. singole dipende dal numero di
.
giri al primo N (ovvero dalla velocità angolare θm(t ) ), e dal flusso Φ che
attraversa il traferro, secondo la relazione:
.
e(t ) = K ⋅ N ⋅ Φ = kE ⋅ θm (t ) 28
Il senso secondo in cui agisce questa f.e.m. risulta in ogni caso opposto a
quello della corrente che circola nell'indotto. Rispetto alla tensione
applicata alle spazzole, la f.e.m. e(t) che si genera agisce quindi come una
forza contro elettromotrice.
Figura 4.2 Modello elettrico del motore
La tensione V che si deve applicare ai morsetti di indotto del motore per
fargli assorbire una certa corrente I, è quindi chiamata a vincere tale forza
contro elettromotrice e(t), aumentata delle cadute interne di tensione
provocate dalla resistenza del circuito di indotto R, e dalla induttanza L.
Pertanto il motore può essere descritto in modo molto semplice mediante il
modello rappresentato in Figura 4.2.
Da una semplice analisi di tale circuito si trova che
V (t ) = L ⋅
.
dI
+ R ⋅ I (t ) + kE ⋅ θm (t )
dt
ovvero passando nel dominio delle trasformate
V ( s ) = ( R + sL ) ⋅ I ( s ) + skE ⋅ θm (s ) .
28
Essendo kE il gradiente di tensione motore.
57
Cap. 4 Il Sistema di Movimento
In molte applicazioni, ove la costante di tempo elettrica del motore (L/R) è
significativamente minore della costante di tempo meccanica del sistema, il
termine L di(t)/dt può essere trascurato ottenendo
.
V (t ) = R ⋅ I (t ) + kE ⋅ θm (t ) .
La coppia che il motore produce, essendo il flusso costante, è controllata
dalla corrente e cresce linearmente con essa secondo la costante di
propoprzionalità kT29
Tm(t ) = k T ⋅ I (t ) .
Quando il rotore è fermo, e = 0, pertanto la corrente assorbita dal motore è
massima; questa è anche la corrente richiesta per avviare il motore da
fermo detta appunto corrente di avviamento o di stallo Is30.
Quando il rotore è in movimento e(t) aumenta agendo come una forza
stabilizzante; accade che, a parità di tensione applicata V, quando la velocità
angolare sale, la coppia diminuisce e viceversa. Infatti in base alle relazioni
precedenti possiamo scrivere
V =
.
Tm ⋅ R
+ kE ⋅ θ m
kT
D’altra parte come si può facilmente verificare considerando una
situazione di equilibrio per la corrente, kT = kE = k 31.
Pertanto la tensione applicata è legata alla coppia e alla velocità angolare
mediante la relazione
V =
.
Tm ⋅ R
+ k ⋅ θm
k
da cui si ricava che la velocità varia linearmente con la coppia con
pendenza negativa
29
Essendo kT la costante di coppia.
30
Is = V R
31
In pratica questi due valori si differenziano sempre per qualche punto percentuale. Ad ogni modo, per
la successiva analisi, possiamo trascurare tale differenza.
58
Cap. 4 Il Sistema di Movimento
.
θm=
V R
−
⋅ Tm
k k2
pertanto, la retroazione negativa dovuta alla forza contro elettromotrice
consente al motore di raggiungere una condizione di equilibrio dinamico32,
allorché la coppia motrice utile sviluppata all'asse uguaglia la coppia
resistente applicata.
4.1.2 Caratteristiche elettromeccaniche del motore
I costruttori di motori, riportano solitamente le caratteristiche dei loro
prodotti sia in forma tabellare, che in forma grafica.
Figura 4.3 Caratteristiche elettromeccaniche di un motore
in corrente continua.
Di particolare rilevanza è il grafico in Figura 4.3 che, per V costante,
riporta in ascissa la coppia e in ordinata la velocità angolare, assieme a
corrente, potenza ed efficienza del motore. In questo grafico si possono
osservare:
•
.
la retta con pendenza negativa θ m (Tm ) ; essa intercetta gli assi in due
punti, dipendenti dalla tensione applicata, che individuano due
32
Tale punto dipenderà dalla tensione applicata ai morsetti e dal carico.
59
Cap. 4 Il Sistema di Movimento
parametri caratteristici del motore: la velocità a vuoto (o senza carico)
del motoreθ& 0 = θ&m(0) e la coppia di stallo Ts.33 ;
•
la curva Pm(Tm) che descrive l’andamento della potenza meccanica
fornita dal motore, al variare della coppia34:
.
P m = Tm θ m =
•
V
R
⋅ Tm − 2 ⋅ Tm 2 ;
k
k
la retta I(Tm) = Tm / k che descrive l’andamento della corrente assorbita
al variare della coppia; in teoria dovrebbe essere I(0) = 0, ma in pratica
a causa delle inevitabili perdite, anche a vuoto viene comunque
assorbita una piccola corrente, la corrente senza carico I0 ;
•
la curva η(Tm) che descrive l’andamento del rendimento in funzione
della coppia motrice; come si nota dalla Figura 4.3 il massimo
rendimento non è ottenuto in corrispondenza della potenza massima,
bensì in un altro punto a più bassa coppia e maggiore velocità.
4.1.3 La riduzione
Il motore esercita una coppia sull’albero di trasmissione, tuttavia la
velocità di rotazione che esso presenta a regime è eccessiva, mentre la
coppia che esso produce risulta insufficiente per quelle che sono le normali
esigenze di un robot. Si rende quindi necessario adattare le caratteristiche
del motore alle necessità del robot.
Per superare il problema si potrebbe pensare di agire sulla tensione di
alimentazione; è possibile diminuendo la tensione di alimentazione ridurre
la velocità di rotazione, purtroppo contestualmente viene ridotta anche la
coppia.
33
Come si verifica immediatamente dal grafico esse sono anche la massima velocità di rotazione e la
massima coppia che il motore è in grado di presentare.
34
Derivando la potenza meccanica rispetto alla coppia ed uguagliando a zero l’espressione ottenuta, si
ricava facilmente che la potenza massima è fornita in corrispondenza della metà della coppia di stallo.
60
Cap. 4 Il Sistema di Movimento
Per ovviare a questo inconveniente si usa un sistema di riduzione: questi
consente di ridurre la velocità senza degradare la coppia, anzi aumentando
la coppia motrice al carico. Il riduttore può essere assemblato in modo
discreto al motore, tuttavia vengono normalmente utilizzati motori che
presentano al loro interno già integrato il riduttore, questo va a tutto
vantaggio della compattezza del motore stesso, aspetto importante nelle
applicazioni in esame.
Purtroppo, a causa della frizione interna degli
ingranaggi, una riduzione presenta sempre un’efficienza
minore di 1. In pratica si possono raggiungere valori di
efficienza
del
90%
per
riduzioni
a
planetario
particolarmente buone, mentre si può scendere anche
sotto il 50% nel caso di riduzioni scadenti.
Vediamo allora di verificare quanto detto, siano:
•
n:1 il rapporto di riduzione: ogni n giri dell’albero motore, il carico
compie un giro35;
• ζ l’efficienza, definita come, se Po è la potenza in uscita dal riduttore i
Pi quella in ingresso,
P0
.
Pi
Considerando la stessa distanza lineare percorsa dai denti degli ingranaggi
si ha:
rm ⋅ θm = rL ⋅ θL = n ⋅ rm ⋅ θL
Cioè
.
θm
θL=
.
n
.
Pertanto la velocità di rotazione al carico viene ridotta di un fattore n pari al
rapporto di riduzione.
35
Vale quindi l’equazione
2π ⋅ rL = 2π ⋅ rm ⋅ n .
61
Cap. 4 Il Sistema di Movimento
Per quanto riguarda la coppia, considerando il bilanciamento delle potenze
in uscita e in ingresso alla riduzione, si ha:
TL ⋅ θ&L = Po = ζ ⋅ Pi = ζ ⋅ TL '⋅θ&m
da cui si ottiene
.
TL = ζ ⋅
θm
.
θL
⋅ TL ' = n ⋅ ζ ⋅ TL ' .
La coppia fornita al carico viene dunque amplificata di un fattore n ⋅ ζ ,
risulta pertanto fondamentale l’efficienza della riduzione.
4.2 Il dimensionamento del motore
Come si diceva all’inizio del capitolo, il primo problema che occorre
affrontare volendo considerare il sistema di movimento è scegliere il tipo
di motore che si vuole utilizzare, e decidere come pilotarlo.
Nella fattispecie il tipo di motore è un dato di progetto, infatti Galavrón
utilizza i motori che in precedenza erano stati di TinoZoff, quindi il
problema si riduce a scegliere il valore della tensione di armatura a cui il
motore deve operare al fine di sfruttarne al meglio le caratteristiche
elettromeccaniche.
Tale valore è stato determinato mediante simulazioni eseguite sul modello
dinamico del sistema.
4.2.1 Modello dinamico del sistema
Per ricavare il modello del sistema facciamo anzitutto riferimento al caso
di un carico generico in rotazione.
Per caratterizzare il trasferimento della coppia prodotta dal motore fino agli
ingranaggi della riduzione occorre considerare le eventuali coppie
resistenti di attrito secco e di attrito viscoso presenti nella trasmissione del
moto.
62
Cap. 4 Il Sistema di Movimento
Pertanto, detti:
q
Tm la coppia prodotta dal motore;
q
Jm il momento d’inerzia totale del rotore, dell’asse e degli ingranaggi;
q
Bm il coeffic4iente di attrito viscoso totale del rotore, dell’asse e degli ingranaggi;
q
TRm l’attrito secco totale del rotore, dell’asse e degli ingranaggi;
q
TL’ la coppia di carico riportata, tramite la riduzione, all’asse del motore;
applicando l’equilibrio meccanico dinamico (che tiene conto anche delle
forze inerziali) si ottiene:
Tm = Jm ⋅ θ&&m + Bm ⋅ θ&m + TRm ⋅ sgn(θ&m) + TL '
(3.1)
Il termine di attrito secco, il cui valore assoluto è costante, si oppone
sempre alla direzione del moto, e quindi come si nota introduce una non
linearità nel sistema .
Consideriamo ora il carico, l’equazione di equilibrio è espressa da:
TL = JL ⋅ θ&&L + BL ⋅ θ&L + TRL ⋅ sgn(θ&L) + TD
con
q
TL coppia utile;
q
JL momento d’inerzia del carico;
q
BL coefficiente di attrito viscoso del carico;
q
TRL attrito secco del carico;
q
TD eventuale coppia di disturbo.
Esprimendo θL in funzione di θm e sostituendo nella (3.1), che estrinseca
l’equilibrio dinamico sull’asse del motore, si ottiene:

T m =  Jm + 2JL
n ⋅ζ

 && 
 ⋅ θ m +  Bm + 2BL
n ⋅ζ


 & 
 ⋅ θm +  T Rm + TRL
n ⋅ζ



TD
 ⋅ sgn(θ&m ) +
n ⋅ζ

Come si può osservare dall’equazione, le coppie agenti al carico sono
fortemente ridotte all’asse motore e diventano comparabili con i parametri
caratteristi del motore36. Pertanto, ponendo

Jeff =  Jm + 2JL
n ⋅ζ

36




Beff =  B m + 2B L
n ⋅ζ






T Reff =  T Rm + T RL 
n
⋅
ζ


In modo duale l’inerzia, l’attrito viscoso e l’attrito secco del motore e della trasmissione sono riportati
amplificati al carico e pertanto non possono essere trascurati.
63
Cap. 4 Il Sistema di Movimento
e sostituendo, la precedente porge
TD
.
T m = Jeff ⋅ θ&&m + B eff ⋅ θ&m + TReff ⋅ sgn(θ&m ) +
n ⋅ζ
Posto
TD
T ' = Tm − T Reff ⋅ sgn(θ&m ) −
n ⋅ζ
e passando nel dominio delle trasformate, si può osservare che
T ' ( s ) = (Jeff ⋅ s 2 + Beff ⋅ s ) ⋅ θm ( s ) = (Jeff ⋅ s + Beff ) ⋅ θ&m ( s )
da cui:
θ&m ( s )
1
.
=
T ' ( s ) (Jeff ⋅ s + Beff )
Infine, considerando anche le equazioni del motore, si ottiene il modello
del sistema riportato in Figura 4.4.
Figura 4.4 Modello dinamico del sistema.
Il controllo, in questo caso, è detto in tensione di armatura, essendo la
variabile in ingresso al sistema la tensione V(t) fornita al motore; la
variabile di uscita θL è la posizione dell’asse al motore e TD è una generica
coppia di disturbo riportata all’asse del motore tramite la riduzione, ed
64
Cap. 4 Il Sistema di Movimento
utilizzabile per verificare la robustezza degli algoritmi di controllo in
presenza di disturbi agenti sul sistema.
Si tratta dunque di un sistema del 3° ordine, con un polo nell’origine e due
costanti di tempo: L/R costante di tempo elettrica, Beff/Jeff costante di
tempo meccanica.
In molti sistemi elettromeccanici il circuito elettrico del motore va a regime
ben più rapidamente della parte meccanica: in tal caso vale la condizione
L/R << Jeff /Beff e la quantità 1/(Ls+R) diventa approssimabile con 1/R. Si
ottiene così un sistema del 2 ° ordine con una sola costante di tempo su cui
risulta più facile la progettazione del sistema di controllo.
4.2.2 Caso del robot Galavrón
La base mobile del robot, schematizzata in Figura 4.5, è dotata di due ruote
motrici azionate in modo indipendente e di 4 sfere disposte ai vertici del
rettangolo di base.
Figura 4.5
Per descrivere il moto di questo sistema, si utilizzano le equazioni cardinali
della meccanica:
∑F
i
i
= m ⋅ v&
∑M
ij
= Ij ⋅ ù& j
i
Poiché quello che preme mettere in evidenza sono le prestazioni del robot
in termini di velocità e di accelerazione, in quest’analisi ci limiteremo al
caso di moto rettilineo.
65
Cap. 4 Il Sistema di Movimento
In tale ipotesi, la velocità lineare v del centro di massa, coincide con la
velocità lineare dei baricentri delle ruote, che presentano la stessa velocità
angolare ω; questo permette di ridurre il numero di equazioni e di
semplificare l’analisi.
Sempre per semplificare i calcoli, supponiamo di far collassare le 4 sfere in
una sola disposta lungo l’asse di simmetria del robot. Pertanto detti :
q
q
q
q
q
q
q
q
q
q
ALM attrito di rotolamento tra ruota motrice e pavimento;
ALP attrito di rotolamento tra sfere e pavimento;
mLM massa della ruota motrice;
mLP massa delle sfere;
mLR massa del robot (escluse le ruote);
ILM momento d’inerzia della ruota motrice;
ILP momento d’inerzia della sfera;
rLM raggio della ruota motrice;
rLP raggio della sfera;
TL coppia utile applicata ad una ruota motrice;
e trascurando l’attrito dell’aria, si può riscrivere il sistema di equazioni
cardinali nel modo seguente:
2 ⋅ ALM − ALP = (2 ⋅ mLM + mLR + mLP ) ⋅ a
ILM ⋅θ&&LM = TL − ALM ⋅ rLM
ILP ⋅θ&&LP = ALP ⋅ rLP
Tenuto conto che l’accelerazione, essendo il moto di rotolamento, vale
a = v& = rLM ⋅ θ&&LM = rLP ⋅ θ&&LP ed esplicitando gli attriti dalle ultime due
equazioni del sistema si ottiene, sostituendo il tutto nella prima
2⋅
TL − ILM ⋅ θ&&LM ILP ⋅ rLM &&
−
θLM = (2 ⋅ mLM + mLR + mLP ) ⋅ θ&&LM ⋅ rLM
rLM
rLP 2
da questa è possibile ricavare TL
TL =
37
rLM 2
2
ILP
 2 ILM

+ 2 + 2mLM + mLR + mLP  ⋅ θ&&LM = JLMeq ⋅ θ&&LM 37

2
rLP
 rLM

Dove JLMeq può essere considerato il momento d’inerzia equivalente visto dall’asse di una ruota
motrice.
66
Cap. 4 Il Sistema di Movimento
Riportando la coppia utile all’asse del motore si ottiene
TL =
JLMeq &&
⋅ θLM .
n
Sostituendo nell’equazione dell’equilibrio dinamico presente sull’asse del
motore e raccogliendo i termini si ha:

T m =  Jm + J2LMeq
n ⋅ζ

 &&
 ⋅ θ m + B m ⋅ θ&m + TRm ⋅ sgn(θ&m )

per cui i parametri di simulazione sono
Jeff = Jm + J2LMeq
n ⋅ζ
Beff = Bm
TReff = TRm
Per ottenere dalla simulazione lo spazio percorso dal centro di massa del
robot, basta ricordare che nel moto di rotolamento di una ruota la velocità
tangenziale è il prodotto della velocità angolare per il raggio. Pertanto si
può ottenere lo spazio percorso dal robot semplicemente aggiungendo un
blocco di guadagno rLM all’uscita del modello in Figura 4.4.
Infine, per garantire che il moto sia effettivamente di rotolamento, occorre
evitare la possibilità che le ruote motrici striscino per l’eccessiva coppia.
Tale strisciamento è evitato sicuramente se l’attrito di rotolamento si
mantiene minore del prodotto tra coefficiente di attrito statico e la reazione
vincolare del pavimento nel punto di contatto con la ruota. Deve valere
perciò la condizione:
ALM =

TL 2 − ILM ⋅ θ&&LM ( JLMeq − ILM ) ⋅ θ&&LM
mLR 

⋅ g
=
≤ µS ( LM ) ⋅  mLM +
3 
rLM
rLM

Essendo µS(LM) il coefficiente di attrito statico e g l’accelerazione
gravitazionale38.
La condizione precedente riportata all’asse del motore diventa:
µS ( LM ) ⋅ g ⋅ n ⋅ rLM
θ&&LM ≤
JLMeq − ILM
38


⋅


mLM +
mLR 

3 
Nella formula precedente si è ipotizzato implicitamente che su ciascuna delle due ruote motrici gravi
un terzo della massa del robot (ruote escluse), e il restante sulle sfere.
67
Cap. 4 Il Sistema di Movimento
in tal modo è possibile, dopo l’esame dei grafici di simulazione, stabilire
una limitazione hardware di corrente adatta a garantire la condizione di
rotolamento.
4.2.3 Simulazione
Sul robot sono presenti due motori Pittman a corrente continua con
spazzole modello GM9034. I parametri caratteristici elettrici e meccanici
del motore necessari per la simulazione sono riportati in appendice A.
In fase di simulazione si è valutato il comportamento del motore in
configurazioni differenti sia dal punto di vista della tensione di
alimentazione che del fattore di riduzione. Quest’ultimo aspetto è stato
preso in considerazione in quanto in un primo momento si era valutata la
possibilità di utilizzare nuovi motori.
In particolare si è simulato il comportamento del motore quando al suo
ingresso viene applicato un gradino di tensione con due possibili valori di
ampiezza: 12 e 24 volt , e per ciascuna di esse con i seguenti tre valori del
fattore di riduzione disponibili sui modelli Pittman: 11.5, 19.7, 38.3.
Il comportamento del motore è stato ricavato analizzando i seguenti
parametri:
1) La posizione lineare del robot in funzione del tempo, è il dato più
importante, quello che determina la situazione ottimale;
2) La velocità lineare del robot, giusto per avere un idea della velocità
massima e di quanto ci mette il robot a raggiungerla;
3) L’accelerazione angolare del motore, necessaria per verificare che non vi
sia slittamento tra le ruote motrici e il suolo.39
4) La corrente nel motore, utile per avere un’idea dell’energia dissipata.
39
Per dare un senso alle simulazioni si è reso necessario misurare il coefficiente di attrito statico tra le
ruote motrici ed il campo di gioco. Mediante prove di attrito si è valutato: µ
= 0.5 . Ciò ha
permesso di imporre una corretta limitazione sulla corrente di armatura al fine di evitare lo slittamento
delle ruote, situazione che avrebbe reso non valida la simulazione.
S ( LM )
68
Cap. 4 Il Sistema di Movimento
Ciascun grafico riporta due classi di curve, uno ricavato con la tensione di
alimentazione a 12 V e l’atro con la tensione di alimentazione a 24 V.
Ciascuna classe è costituita da tre curve una per ciascuno dei valori di
rapporto di riduzione presi in considerazione.
I risultati delle simulazioni si possono riassumere nelle seguenti note:
•
per evitare lo slittamento occorre limitare la corrente ai valori: 9 A con
una riduzione 11.5:1, 6.2 A con una riduzione 19.7:1, 3.7 A con una
riduzione 38.3:1;
•
la situazione migliore dal punto di vista della risposta meccanica si
ottiene con V=24 e n=11.5; osservando però il grafico delle correnti si
nota che, con questa configurazione, l’impulso di corrente risulta di
valore elevato e di durata notevole.40 D’altra parte è estremamente raro
che un robot percorra più di tre metri in un colpo solo: questo rende la
configurazione V=24 e n=19.7 decisamente più interessante, poiché
permette di ottenere praticamente le stesse prestazioni della precedente
ma con un impulso di corrente più limitato sia in ampiezza sia in
durata. Le altre situazioni non comportano vantaggi significativi e
peggiorano decisamente la risposta del sistema.
Dunque i parametri ottimali sono: N = 19.7, Imax = 6.2 A, V = 24 V.
4.3 L’azionamento dei motori
Il microprocessore non è in grado di pilotare i motori direttamente, dal
momento che esso non può erogare una corrente sufficiente. Sarà quindi
necessario disporre di circuiti di interfaccia che, pilotati dai segnali
generati dal microprocessore, forniscano l’energia (prelevata da una
opportuna sorgente) richiesta dai motori.
Questi circuiti di interfaccia possono essere realizzati utilizzando diverse
40
Questo potrebbe comportare seri problemi di riscaldamento per il motore, e sicuramente maggiori
consumi.
69
Cap. 4 Il Sistema di Movimento
tecnologie, come ad esempio relais, transistori bipolari, transistori
MOSFET di potenza o, come tipicamente accade, circuiti integrati
realizzati allo scopo che vengono chiamati driver.
Qualunque sia la tecnologia utilizzata, comunque, la topologia di base del
circuito è sostanzialmente la stessa. Questi circuiti sono noti come ponti ad
H e consistono in definitiva di quattro interruttori (controllati) collegati in
modo da formare una H; dove i terminali del motore formano la traversa
della H come mostrato in Figura 4.6.
Figura 4.6 Schema di principio di un ponte H.
Possiamo pensare che ciascun interruttore sia costituito da un transistor, la
potenza sia fornita da una batteria e i segnali di controllo dal
microprocessore.
Il ponte H si può trovare in due configurazioni, ossia in un ponte H, gli
interruttori, vengono aperti e chiusi in modo che la tensione applicata ai
terminali del motore sia tale da far fluire la corrente in una direzione
provocando la rotazione del motore in un senso oppure nel senso opposto.
Per esempio, se gli interruttori S1 S4 in figura sono chiusi mentre gli
interruttori S2 S3 sono aperti, la corrente fluisce nel motore da sinistra
verso destra; mentre quando gli interruttori S2 S3 sono chiusi e S1 S4 sono
aperti la corrente fluirà da destra verso sinistra provocando l'inversione del
70
Cap. 4 Il Sistema di Movimento
senso di rotazione del motore. Infine se i terminali sono flottanti il motore
sarà libero di ruotare, mentre se i terminali sono cortocircuitati il motore
risulterà frenato.
4.3.1 Il controllo dei motori
In un ponte H il valore della tensione media di uscita ( quella ai capi del
motore ) può essere modificato con continuità, utilizzando un segnale
modulato in durata, ossia un segnale PWM41, per controllare gli interruttori.
A seconda di come tale segnale venga usato per controllare l’apertura e la
chiusura degli interruttori del ponte, si possono implementare diverse
tecniche di controllo; le due più comuni vanno sotto il nome di locked antiphase control e sign/magnitude control. Consideriamo in particolare
quest’ultima essendo quella utilizzata per controllare la velocità di
rotazione dei motori del robot.
In questo caso dei due interruttori che costituiscono un ramo del ponte uno
viene mantenuto permanentemente chiuso e l’altro aperto, mentre gli altri
due vengono commutati con un determinato duty cycle. Per fissare le idee,
in riferimento alla Figura 4.6, si supponga che S3 venga mantenuto
permanentemente chiuso e S4 permanentemente aperto; mentre S1 e S2
vengano aperti e chiusi in controfase con continuità secondo il duty cycle
definito dal segnale PWM di ingresso.
In tal modo il potenziale del terminale destro del motore è mantenuto a una
tensione costante pari a Vss, l’altro terminale si trova invece ad una
tensione media che è funzione del duty cycle del segnale PWM.
Quindi l’ampiezza della tensione media ai capi del motore ( che è la
differenza tra le tensioni dei due terminali ) è determinata dalla frequenza
con cui i due interruttori S1 e S2 vengono fatti commutare.
41
Pulse width modulation.
71
Cap. 4 Il Sistema di Movimento
Ne deriva che la velocità del motore può essere regolata modificando il
pulse width ratio
t on
t period
del segnale PWM di controllo ( Figura 4.7 ).
La polarità della tensione è invece determinata dal lato del ponte H che
viene mantenuto ( chiudendo e aprendo permanentemente i corrispondenti
interruttori ) a tensione costante.
Figura 4.7 Pulse width modulation della tensione.
Benché sia naturalmente possibile progettare in proprio un controllore a
ponte H esistono sul mercato diversi tipi di chip che si prestano allo scopo;
nel caso in esame si utilizza l’integrato LMD18200 della National
Semiconductor. Dal punto di vista del solo controllo di velocità esso
richiede in ingresso: il segnale PWM, il segnale di direzione; che vengono
generati dal microprocessore 68HC11.
Il segnale PWM viene generato dal KaOS 42 utilizzando gli interrupt TOC1
e TOC2 , questi due interrupt agiscono su due pin di output del 68HC11
controllandone la durata di attivazione.
42
Siccome la versione del 68HC11 utilizzata, la F1, non prevede direttamente alcuna uscita PWM, è
compito del programmatore occuparsi di ottenerle.
72
Cap. 4 Il Sistema di Movimento
All’interno del KaOS, vi è poi una routine ( associata all’interrupt TOC4)
che si occupa di variare il duty cycle del segnale PWM tra un minimo di
5µs ed un massimo di 80µs. Essa viene eseguita ad una frequenza di
12500Hz, per cui trascorrono 80µs tra un’esecuzione e la successiva.
Volendo spegnere i motori è sufficiente disattivare gli interrupt TOC1 e
TOC2.
4.3.2 La commutazione di carichi induttivi
Indipendentemente dal tipo di tecnologia utilizzata nascono dei problemi
quando occorre effettuare la commutazione di carichi induttivi; come nel
caso in esame, in cui il carico connesso all’uscita del ponte è un motore.
È noto infatti che la tensione indotta ai capi di un induttore è proporzionale
alla velocità con cui la corrente fluisce in esso secondo la relazione
v = L⋅
di
dt
pertanto quando il sistema ha raggiunto uno stato stazionario (ossia quando
la corrente che fluisce nell'induttore sia è stabilizzata) la tensione ha i suoi
capi sarà nulla e l'induttore si comporterà sostanzialmente come un corto
circuito.
Tuttavia se, come mostrato in Figura 4.8, l'interruttore viene aperto, la
corrente non può istantaneamente portarsi a
zero; ai capi dell'induttore infatti si genera
una tensione indotta tale da opporsi alla
corrente, cioè il punto A si troverà ad un
potenziale positivo rispetto al punto B (che
si trova a Vcc). Sebbene la corrente non
cambi
Figura 4.8
istantaneamente
quando
l'interruttore viene aperto, essa varierà
molto rapidamente e maggiore è la velocità di variazione maggiore è
l'intensità del picco di tensione indotta. A seconda delle dimensioni
73
Cap. 4 Il Sistema di Movimento
dell'induttore, della intensità della corrente e di quanto rapidamente
l'interruttore viene aperto, questi picchi tensione possono temporaneamente
raggiungere valori anche superiori a diverse centinaia di volt, quindi
sufficienti per innescare una scarica che può distruggere l'interruttore. La
soluzione a questo tipo di problemi è di collegare ai capi di carichi induttivi
i cosiddetti diodi di ricircolo come mostrato in figura. In tal modo il picco
di tensione polarizza in diretta il diodo e la tensione del nodo A risulta
vincolata a meno della Vbe alla tensione di alimentazione. Inoltre l'energia
che era stata temporaneamente immagazzinata nell'induttore può rifluire
sulla batteria. Anche dispositivi allo stato solido , come gli interruttore
meccanici, sono suscettibili a questi problemi e quindi necessitano di
essere protetti mediante l'inserzione di diodi di ricircolo.
4.3.3 La scheda di azionamento dei motori
La scheda di potenza che, pilotata dal microprocessore, controlla i motori,
è stata progetta cercando di perseguire il seguente obbiettivo: ridurre al
minimo il tempo di risposta ad un comando di movimento, al fine di
rendere il sistema il più reattivo possibile, che, data la particolare
applicazione risulta una caratteristica imprescindibile.
In funzione di tale obbiettivo si è reso necessario compiere alcune scelte di
progetto, che riguardano essenzialmente:
•
il tipo di motore e la tensione operativa;
•
il tipo di driver.
Per quanto riguarda il primo punto, data l’impossibilità di reperire sul
mercato motori adatti allo scopo a prezzi ragionevoli, si è deciso di
riutilizzare quelli che erano stati i motori di TinoZoff. Si ricorda a questo
proposito, che la base di quest’ultimo, ossia i motori e la scheda di
controllo, derivano dal robot Pioneer 1 ActivMedia, che utilizza 2 motori
Pittman
modello
GM9034
alimentati,
essendo
in
questo
caso
l’alimentazione garantita da una sola batteria, a 12 volt.
74
Cap. 4 Il Sistema di Movimento
Siccome su Galavrón sono presenti due batterie da 12 volt collegate in
serie che garantiscono i 24 volt necessari all’alimentatore del PC, si è
pensato, anche confortati dai risultati esposti in 4.2.3 , di utilizzare i
suddetti motori e di alimentarli a 24 volt. Questa scelta consente oltre che
di sfruttare al meglio le caratteristiche elettromeccaniche del motore, anche
una più uniforme utilizzazione delle batterie ( che pertanto si rovinano
meno, a differenza di quanto accadeva con TinoZoff ).
Per quanto riguarda i driver, la scelta si è concentrata su due tipi di chip:
L298N della
SGS-THOMSON
( già impiegato nella scheda di controllo del
Pioneer ) e LMD18200T della NATIONAL SEMICONDUCTOR.
Il vantaggio principale del L298 è dato dalla presenza all’interno del chip
di due ponti H indipendenti, pertanto è possibile controllare due motori con
un solo integrato a tutto vantaggio della occupazione di area sulla scheda.
Per contro questo chip:
•
limita a 2 A la corrente erogabile con continuità ad ogni motore;
•
richiede 4 diodi a recupero rapido per ogni motore;
•
è caratterizzato da un ritardo di spegnimento di
3 µs che limita
inferiormente a tale valore l’attivazione dei segnali di controllo e del
segnale PWM in particolare.
Ricercando tra gli integrati disponibili uno con migliori caratteristiche, la
scelta è caduta sull’integrato LMD18200. Questo chip:
•
opera con tensioni di alimentazione fino a 55 V;
•
è in grado di fornire con continuità in uscita una corrente di 3 A, e
correnti di picco fino a 6 A;
•
possiede una serie di protezioni e di controlli che ne rendono più facile
ed efficace l’impiego, quali: un segnale di thermal warning che
evidenzia surriscaldamenti pericolosi del chip, un input di brake che
attivato consente di frenare il motore, protezioni contro cortocircuiti o
sovraccarichi sull’uscita che intervengono spegnendo il ponte allorché
la corrente erogata superi i 10 A;
75
Cap. 4 Il Sistema di Movimento
•
non necessita di diodi di ricircolo in quanto questi ultimi sono integrati
nel chip;
•
richiede un tempo minimo di attivazione dei segnali di controllo, PWM,
DIRECTION, BRAKE, di 1 µs.
Poiché, tuttavia, in questo mondo raramente si ottiene qualcosa gratis,
questi vantaggi si pagano sia dal punto di vista economico, questo chip ha
un costo circa quattro volte superiore al primo, sia perché l’LMD18200
contiene al suo interno un solo ponte H; pertanto occorrono, per realizzare
la scheda 2 integrati con conseguente maggiore occupazione di spazio
nonché di spesa.
La progettazione della scheda è stato un processo lungo e faticoso, che ha
portato alla realizzazione di tre differenti versioni della stessa, denominate:
1.0, 2.0, 2.1.
La versione 1.0 della scheda di potenza, realizzata a fili tirati, è stata
pensata per ricevere in ingresso tensioni da 12 a 35 volt. Tuttavia in fase di
collaudo, effettuato alimentando la scheda a 24 volt, si sono riscontrati
problemi di controllo dei motori, imputabili verosimilmente a difficoltà del
microprocessore nel leggere i segnali generati dagli encoder, a causa della
elevata accelerazione conseguita43.
Per risolvere questo problema si è lavorato su due fronti. Anzitutto si è
deciso di migliorare la gestione degli encoder, per lo meno campionando i
segnali ad una frequenza maggiore di quella garantita dal PSOS 44; ma dal
momento che questo intervento si rivelò insufficiente si decise di
intervenire contestualmente sulla tensione di alimentazione abbassandola
di quel tanto che consentisse un corretto controllo dei motori ma senza
pregiudicare le prestazioni. Dopo varie prove effettuate alimentando il
robot con un generatore di tensione variabile, si trovò che il valore
43
La frequenza di campionamento con cui il microprocessore prelevava i campioni era insufficiente per
una corretta rilevazione della velocità istantanea e impediva di fatto al micro di calcolare correttamente
il set point di velocità.
44
Nel Kaos la frequenza di campionamento è stata aumentata a 12,5 KHz, contro i 10 KHz del PSOS.
76
Cap. 4 Il Sistema di Movimento
massimo
della
tensione
di
alimentazione
compatibile
con
un
funzionamento accettabile era di 18 volt. È stata, quindi, realizzata una
scheda aggiuntiva di alimentazione, basata su due integrati LM7818
collegati in parallelo, che accettando in ingresso tensioni da 21 a 35V
restituisse in uscita 18 V stabilizzati, con un assorbimento massimo di
corrente di 5 A.
Tuttavia questa prima versione della scheda ha mostrato limiti e difetti che
hanno determinato la necessità di realizzarne una nuova. I difetti principali
della versione 1.0 sono:
•
la tecnologia con cui è realizzata: essa è sicuramente adatta per
produrre prototipi ma non esemplari definitivi, anche in considerazione
delle sollecitazioni meccaniche a cui tale scheda è sottoposta a ragione
delle frequenti operazioni di montaggio e smontaggio;
•
la distribuzione del circuito su due schede ( per quanto detto in
precedenza ), che rende difficile l’installazione e la manutenzione dello
stesso sul robot;
•
la impossibilità di modificare la tensione di alimentazione dei motori,
che in questo caso è fissa a 18 volt;
•
infine, per come è stato concepito il circuito di alimentazione, i motori
vengono alimentati dagli stessi stabilizzatori collegati in parallelo,
come detto in precedenza.
Quest’ultimo aspetto, è particolarmente importante in quanto sembra
determinare una notevole degradazione del controllo dei motori, vediamo
in che senso.
Sempre in fase di collaudo, sono stati eseguiti alcuni test per avere
un’indicazione qualitativa sul grado di reattività del sistema; questi sono
consistiti nel impartire al robot due comandi di velocità : Speed(1000)
all’istante iniziale, e dopo
circa 3 secondi il comando Speed(-1000).
Campionando la velocità istantanea del robot è possibile ricostruire come
varia la velocità nel tempo e quindi avere una idea dell’accelerazione
77
Cap. 4 Il Sistema di Movimento
ottenuta. Nel corso di tali test, che hanno evidenziato un comportamento
tutto sommato soddisfacente dal punto di vista della reattività sono tuttavia
emersi problemi da parte del robot a seguire una traiettoria rettilinea.
Infatti dato che durante il test si impone lo stesso valore di velocità ad
entrambe le ruote il robot doveva muoversi lungo una retta parallela alla
linea di porta, nella realtà la traiettoria seguita dal robot è quella mostrata
in Figura 4.9.
Figura 4.9 Traiettoria seguita dal robot ( ver. 1.0 ) durante il
test di reattività.
Da successive analisi si è appurato come tale comportamento sia in parte
da imputare alle caratteristiche costruttive della scheda e precisamente alla
particolare disposizione che si è scelta per gli stabilizzatori, il percorso
della corrente non è ben definito e quindi un motore potrebbe in questa
configurazione ricevere una maggior corrente dell’altro.
Tenuto conto di tutti questi aspetti e fatto tesoro della esperienza pregressa
si è realizzata una seconda versione della scheda di potenza, la 2.0.
La versione 2.0 è funzionalmente identica alla 1.0, ma differisce da
quest’ultima per:
•
la tecnologia realizzativa: per ragioni di affidabilità e di compattezza si
è deciso di realizzare il circuito su PCB; passando ad una realizzazione
su circuito stampato è stato infatti possibile a parità di dimensione della
scheda, riportare sulla stessa anche la parte di alimentazione ( che
78
Cap. 4 Il Sistema di Movimento
rende disponibile ai motori a partire da 24 V, una tensione inferiore )
che nella precedente versione era a parte;
•
la possibilità di regolare con continuità e separatamente la tensione di
alimentazione di ciascun motore nel intervallo 15 ÷ 19 V;
•
la presenza di uno stabilizzatore dedicato per motore, individuando in
tal modo due distinti percorsi di alimentazione uno per motore.
Analizziamo le principali caratteristiche del circuito di azionamento dei
motori, riportato in appendice A.
Come si nota dallo schematico, la presenza degli optoisolatori U1, U2, U3
separa fisicamente il circuito in due parti: a monte dei fotodiodi stanno i
segnali di controllo
segnale di
BRAKE
PWM
e DIRECTION ( U1 ) generati dal micro, nonché il
che viene generato sempre a questo livello ( U3 ). A
valle degli optoisolatori stanno tutti i segnali che afferiscono alla parte di
potenza vera e propria. Questa scelta è dettata dalla necessità di isolare
fisicamente due parti quella di potenza e quella di controllo, che hanno la
esigenza di scambiarsi informazioni ma che operano a tensioni differenti,
in modo da garantire la massima affidabilità del sistema.
Questa decisione d’altra parte pone una nuova necessità : essendovi di fatto
su questa scheda due circuiti interagenti ma fisicamente indipendenti ( in
particolare dal punto di vista della alimentazione ), occorre garantire la
messa in sicurezza del robot qualora la parte di controllo non risulti
operativa perché non alimentata. Infatti nel caso in cui la scheda di
controllo non venga alimentata i segnali
DIRECTION
e
PWM
a valle dei
fotodiodi sono alti, di modo che i motori vengono forzati a ruotare alla
massima velocità e in assenza di controllo.
La messa in sicurezza del robot, viene garantita in queste condizioni
utilizzando l’input di brake che il driver impiegato mette a disposizione.
Quando viene a mancare la tensione di alimentazione il diodo in U3 si
interdice provocando la commutazione al valore alto del segnale in uscita
dal fotodiodo, il segnale di brake. Quando tale segnale viene asserito a 1 i
79
Cap. 4 Il Sistema di Movimento
terminali del motore, per tramite del ponte H, vengono cortocircuitati
provocando l’arresto dello stesso, e la messa in sicurezza del robot.
Per quanto riguarda la parte di potenza, il circuito riceve in ingresso sia i
12 che i 24 volt.
I 12 V sono utilizzati per alimentare lo stabilizzatore U6 che produce in
uscita gli 8 V impiegati per generare a questo livello, tutti i segnali di
controllo. Si è optato per l’accoppiata 12-8 V , sia per non far lavorare i
driver al limite, sia per contenere i consumi; infatti lo stabilizzatore dissipa
in calore una potenza pari al prodotto della corrente assorbita per la
differenza tra la tensione di ingresso e quella di uscita, pertanto a parità di
corrente minore è la differenza tra tensione all’ingresso e tensione
all’uscita minore è il consumo.
I 24 V vengono utilizzati per alimentare i due stabilizzatori U4 e U5
attraverso i quali vengono fatti funzionare, separatamente, i due motori.
Uno stabilizzatore di tensione è un oggetto che, ricevendo in ingresso una
tensione compresa nel suo intervallo nominale di funzionamento, produce
in uscita una tensione costante rispetto al potenziale del nodo comune, il
terminale 2 nello schematico. È pertanto evidente che facendo variare il
potenziale di quest’ultimo è possibile indurre una uguale variazione nella
tensione di uscita.
Questa in estrema sintesi è la soluzione adottata per acquisire la possibilità
di fornire ai motori una tensione di alimentazione regolabile con continuità
in una certo intervallo.
La regolazione viene effettuata agendo sui trimmer R13 ( per il motore
anteriore ) e R14 ( per quello posteriore ) che, per come sono stati
dimensionati permettono di far variare la tensione dei corrispondenti nodi
comuni nell’intervallo 0 ÷5 V , con conseguente variazione della tensione
80
Cap. 4 Il Sistema di Movimento
di alimentazione dei motori nell’intervallo 15÷19 V.45
Tutto questo a permesso di migliore significativamente la qualità del
controllo dei motori; sia perché ora è possibile regolare a “piacere” la
tensione di alimentazione, sia perché vi è una netta separazione tra i due
circuiti di alimentazione. A riprova di ciò, di seguito si riporta la traiettoria
seguita dal robot durante il test di reattività con i motori azionati dalla
scheda ver. 2.0 .
Figura 4.10 Traiettoria seguita dal robot ( ver. 2.0 ) durante
il test di reattività
Un’altra utilità che il driver mette a disposizione è il segnale di THERMAL
WARNING ( pin 9 ).
In condizioni normali il driver mantiene questo segnale al livello logico
basso; tuttavia, qualora la temperatura del chip superi i 145ºC ( ad esempio
a causa di un sovraccarico ), il driver segnala la situazione di potenziale
pericolo, asserendo a 1 l’uscita di questo pin.
Il thermal warning viene quindi impiegato per fornire al microprocessore
informazioni relative a queste situazioni; al solito al fine di garantire una
separazione fisica tra i due circuiti, i segnali di thermal warning generati
dai due driver non agiscono direttamente sul micro, ma arrivano a questi
per tramite di optoisolatori ( U2 ). In particolare i segnali a valle di U2, che
45
Dato che gli stabilizzatori impiegati fissano a 15 V la tensione dell’uscita rispetto al potenziale del nodo
di riferimento.
81
Cap. 4 Il Sistema di Movimento
sono normalmente bassi, vengono utilizzati come ingressi per un gate NOR
che produce in uscita il thermal flag inviato al micro. Il microprocessore
utilizza l’informazione fornita dal thermal flag, per forzare a zero i segnali
PWM,
in modo da bloccare il passaggio di corrente nel ponte H qualora si
raggiunga una temperatura critica.
Come già detto questa versione della scheda è stata realizzata su circuito
stampato, il problema principale da questo punto di vista è stato il
dimensionamento delle piste.
Per quanto concerne il dimensionamento delle piste si è fatto riferimento
alla tabella riportata in appendice A che descrive come varia la portata ( in
termini di corrente media ) delle piste in rame su circuito stampato, in
funzione dell’area trasversale della pista e della sovratemperatura massima
ammessa.
Tenuto presente che lo spessore delle piste utilizzate è limitato dalla
tecnologia impiegata a 0.00135’’, e assunto cautelativamente un valore
medio di corrente di 3 A; si ricava dalla suddetta tabella un area trasversale
delle piste di 8 ⋅ 10 −5 in 2 assumendo una temperature rise di 10ºC. 46
Ora tenuto conto che le piste hanno una sezione rettangolare e che lo
spessore è fissato, dalla precedente si ricava che la larghezza delle piste
deve essere di 60 mil.
Considerato il risultato precedente, e visto che la dimensione della scheda
lo consentiva, si è deciso utilizzare i seguenti valori:
•
100 mil piste di massa ;
•
60 mil piste di alimentazione;
•
15 mil piste di segnale.
46
Ossia si è assunto che la temperatura delle piste in condizioni di regime (termico) si porti a non più di
10 gradi rispetto alla temperatura ambiente.
82
Capitolo 5
CONCLUSIONI E SVILUPPI
FUTURI
Oggetto di questa tesi è stata la progettazione e realizzazione di un robot
autonomo per applicazioni indoor, impiegato in particolare nell’ambito del
progetto RoboCup Italia.
I risultati ottenuti si possono considerare in generale soddisfacenti, il robot
portiere così come è congegnato attualmente può essere definito un buon
portiere anche se difende la porta con movimenti “essenziali”;
l’architettura hardware si è dimostrata nel complesso robusta e affidabile.
Esistono tuttavia dei miglioramenti da effettuare sia per quanta riguarda la
parte hardware che software.
5.1 Sviluppi hardware
Scheda di controllo. Come detto il controllo a basso livello del robot e
specificamente il suo movimento è demandato ad una scheda
microcontrollata. Questa scheda, ereditata da TinoZoff, si è tuttavia
rivelata inadeguata dal punto di vista del controllo, e inaffidabile dal punto
di vista elettronico. Da qui la necessità di progettare una nuova scheda di
controllo ( sia a livello hardware che software ) con caratteristiche che
meglio si adattino alla particolare applicazione.
Cap. 5 Conclusioni e sviluppi futuri
Scheda del kicker. La scheda del kicker, che pilota le quattro
elettrovalvole del sistema di calcio, è in grado di implementare sia un
calcio di tipo reattivo che intelligente, in particolare è possibile via
software sia abilitare che disabilitare il calcio. Tuttavia vi è un unico
segnale di abilitazione per tutte e quattro le elettrovalvole, in tal modo
quando viene disabilitato il calcio su un kicker, perché ad esempio in
corrispondenza dello stesso si è rilevato un ostacolo, anche tutti gli altri
risultano disabilitati. È evidente come questa situazione sia pericolosa: in
presenza di un ostacolo laterale rilevato dai sensori, anche se il pallone
viene a contatto del robot, questi non calcia. Di qui la necessità di rivedere
il circuito della scheda integrandolo eventualmente con un interruttore di
emergenza che consenta di disattivare la stessa per evitare che un
azionamento indesiderato del kicker cagioni danni fisici agli operatori.
5.2 Sviluppi software
Dal punto di vista del software le potenzialità del sistema, sia per quanto
riguarda la visione che i sensori a raggi infrarossi, sono sfruttate solo in
parte.
Sistema di visione. Attualmente il sistema riconosce la palla e le linee
dell’area di porta per l’autolocalizzazione. Per quanto riguarda
quest’ultimo aspetto bisogna in realtà dire che l’affidabilità
del
riconoscimento delle linee è abbastanza bassa a causa sia del metodo
utilizzato per effettuare la segmentazione dell’immagine (basato sulle
soglie) sia del metodo utilizzato per il riconoscimento delle linee. D’altra
parte un notevole miglioramento si è avuto adottando un diverso metodo
per la segmentazione dell’immagine basato sull’uso di reti neurali.
Quindi dal punto di vista della visione due sono sicuramente gli aspetti da
sviluppare:
84
Cap. 5 Conclusioni e sviluppi futuri
•
Implementare un metodo di riconoscimento delle linee più efficace;
questo consentirebbe tramite la fusione dei dati provenienti dai sensori
ad infrarossi e dall’apparato di visione di migliorare la precisione del
sistema di autolocalizzazione, rendendone possibile l’utilizzo in partita.
Poter disporre di un sistema di autolocalizzazione efficiente si è
rivelata una esigenza imprescindibile, attualmente la mancanza di tale
caratteristica si paga in termini di reattività del robot. Infatti non
essendo utilizzabile in partita, allo stato attuale, il sistema di
localizzazione basato sul riconoscimento delle linee, si è costretti a
limitare mediante l’impiego di opportuni profili di velocità
l’accelerazione e la decelerazione del robot per evitare che questi perda
l’orientamento. In tal modo si vanificano in parte tutti gli sforzi profusi
nella progettazione e realizzazione del sistema di movimento.
•
Riconoscimento dei robot in campo: anche sfruttando le maggiori
potenzialità che il nuovo metodo di segmentazione mette a
disposizione, va valutata la possibilità di riconoscere gli altri robot
presenti in campo. Questo consentirebbe di affinare il meccanismo di
“obstacle avoidance” che attualmente è affidato ai soli sensori
infrarossi laterali.
Sensori a raggi infrarossi. Attualmente dei quattro sensori infrarossi
presenti sul robot se ne utilizzano solo due, quelli laterali. I segnali da
questi prodotti vengono utilizzati dal microprocessore della scheda di
controllo per implementare il sistema di “obstacle avoidance”. I segnali
generati dagli altri due sensori, collocati nella parte posteriore del robot e
orientati perpendicolarmente alla direzione di marcia, potrebbero essere
utilizzati per individuare tramite la fusione con i dati provenienti dalla
odometria, la posizione dei pali che delimitano la porta. Questa
informazione unitamente a quelle fornite dal sistema di visione possono
concorrere a migliorare l’efficacia del sistema di localizzazione aspetto
come già sottolineato di estrema importanza.
85
Appendice A
Circuito di azionamento dei motori
Appendice A
Layout scheda azionamento motori
87
Appendice A
Caratteristiche elettromeccaniche dei motori
88
Appendice A
Risultati della simulazione
V=12 V n=11.5
V=24 V n=19.7
V=12 V n=19.7
V=24 V n=11.5
V=24 V n=38.3
V=12 V n=38.3
V=24 V n=19.7
V=24 V n=11.5
V=12 V n=11.5
V=12 V n=19.7
V=24 V n=38.3
V=12 V n=38.3
89
Appendice A
V=12 V n=38.3
V=24 V n=38.3
V=24 V n=19.7
V=24 V n=19.7
V=24 V n=11.5
V=12 V n=11.5
V=24 V n=11.5
V=12 V n=11.5
V=12 V n=19.7
V=24 V n=19.7
V=24 V n=38.3
V=24 V n=38.3
90
Appendice A
SCHEDA MOTORI Revision: 2.1 Bill Of Materials
Item Quantity Reference
1
8
+12V,+24V,COM ,COM,B,B+, A-,A+
2
5
C1,C5,C14,C16,C17
3
7
C2,C3,C6,C7,C18,C19,C23
4
3
C4,C8,C20
5
4
C9,C10,C11,C12
6
2
C13,C15
7
2
C21,C22
8
1
P1
9
4
R1,R2,R3,R4
10
7
R5,R6,R8,R9,R10,R11,R14
11
3
R7,R12,R13
12
2
R16,R15
13
2
R17,R19
14
2
R18,R20
15
1
U1
16
2
U2,U3
17
2
U4,U5
18
1
U6
19
1
U7
20
2
U8,U9
Part
PCB TERMINAL
2200u 50V
0.1u 63V
220u 35V
10n 100V
1u 250V
10u 35V
FLAT10
330 1/2W
2.2k 1/4W
750 1/2W
2.7k 1/2W
680 1/4W
200 500mW trimmer
ILQ 615-2
ILD 615-2
MC78T15CT
MC7808CT
4001B
LMD18200T
91
Appendice A
Portate di corrente delle piste di rame su circuito stampato
Temperature
rise [ °C]
RMS current
average [A]
Cross-sectional
area of trace [in2]
92
Appendice B
CATEGORIA MIDDLE SIZE :
ESTRATTO DEL REGOLAMENTO
Secondo il regolamento, vi sono essenzialmente due categorie di robot:
small size e middle size (detta anche F2000). La differenza principale, a
parte le dimensioni, consiste nel fatto che i robot della categoria middle
size devono essere completamente autonomi per quanto riguarda la
visione. Nella small size, al contrario, i robot sono aiutati da una
telecamera che inquadra tutto campo di gioco.
Squadra
La squadra è composta di un massimo di 4 robot portiere compreso. Ogni
robot può essere alto massimo 80 cm.
Per quanto concerne la larghezza e la profondità, devono essere limitate in
modo tale che l’area circoscritta dal perimetro del robot nella sua massima
estensione non superi i 2025 cm2.
Inoltre, la diagonale massima interna tale aree non può essere più di 63 cm.
È ammessa qualsiasi forma nel rispetto dei suddetti vincoli relativi alle
dimensioni.
Il colore del robot dev'essere nero, e gli appartenti alle due squadre si
distinguono, mediante l’utilizzo di marker di colore magenta per una
squadra e ciano per l’altra.
Appendice B
Campo di gioco
La dimensione del campo di gioco è di 5 x 9 m circa e la superficie è di
colore verde. Una parete bianca altre 0,5 m circonda tutto campo ad
eccezione delle porte.
Sul campo vi sono alcune linee che identificano il centrocampo e le aree di
rigore. Le linee sono di colore bianco, larghe 40 mm . Il cerchio di
centrocampo ha un diametro di 2 m . Le aree di rigore sono due rettangoli
di 3 x 2 m .
Porte
Le porte sono larghe 2 m, sono alte 0,9 m e hanno una profondità che
dev'essere superiore al diametro della palla. Una porta è di colore giallo e
l’altra è di colore blu.
Palla
Pallone fifa standard 4, diametro 200 millimetri, di colore rosso.
Non ci sono restrizioni alle comunicazioni con e tra i robot e il computer
remoto, il cosiddetto monitor della squadra, mentre è proibito l’intervento
degli operatori durante la partita.
Qualunque tipo di sensore è ammesso, sono proibiti dispositivi che
trattengono la palla o che limitano uno dei gradi di libertà della palla.
Una partita consiste di due tempi di dieci minuti ciascuno con un intervallo
di 15 minuti. Vince la squadra che segna più reti.
94
Bibliografia
[1] J. L. Jones, A. M. Flynn e B. A. Seiger. Mobile Robots: Inspiration to
Implementation, 2nd ed.. AK Peters Ltd, nov. 1998. ISBN 1-56881-097-0.
[2] H. W. Johnson, M. Graham. High-Speed Digital Design a Handbook of
black magic. Prentice Hall Inc., 1993. ISBN 0-13-395724-1.
[3] G. Adorni, S. Cagnoni e M. Mordonini. Genetic programming of a
goalkeeper control strategy for the RoboCup middle size competition.
Department of Computer Engineering, University of Parma.
[4] M. Piaggio, A. Sgorbissa e L. Tricerri. ETHNOS Kernel User Manual. Rap.
tecn., Università di Genova, gen. 1999. Dipartimento di Informatica,
Sistemistica e Telematica.
[5] ActivMedia Inc. Pioneer Mobile Robot Operation Manual. ActivMedia
Inc., ott. 1997.
[6] S. J. Russel e P. Norvig. Artificial Intelligence. A Modern Approach.
Prentice-Hall,1995.
[7] D.H. Ballard and C.M. Brown. Computer Vision. Prentice-Hall,
Englewood Cliff, 1982.
95