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