Università degli Studi di Roma “La Sapienza”
Facoltà di Ingegneria
Tesi di Laurea in
Ingegneria Elettronica
Pianificazione del moto per robot mobili
anolonomi
Emanuele Mancino
Anno Accademico 2005 - 2006
Università degli Studi di Roma “La Sapienza”
Facoltà di Ingegneria
Tesi di Laurea in Ingegneria Elettronica
Pianificazione del moto per robot mobili
anolonomi
Emanuele Mancino
Relatore
Prof. Giuseppe Oriolo
...........................
Co-Relatore
Ing. Marilena Vendittelli
...........................
Anno Accademico 2005 - 2006
Indirizzo e-mail dell’Autore:
[email protected]
Questa tesi è disponibile al sito:
Indice
Introduzione
1
1 Robotica mobile e esplorazione di ambienti sconosciuti
3
1.1
Obiettivo della tesi e sue applicazioni . . . . . . . . . . . . . . . .
4
1.2
Problema dell’esplorazione di ambienti ignoti . . . . . . . . . . . .
5
1.2.1
La localizzazione . . . . . . . . . . . . . . . . . . . . . . .
6
1.2.2
La pianificazione del moto e obstacle avoidance . . . . . .
7
1.3
Algoritmo di esplorazione SRT . . . . . . . . . . . . . . . . . . . .
7
1.4
Robot mobili su ruote . . . . . . . . . . . . . . . . . . . . . . . .
8
1.4.1
Strutture cinematiche dei WMR . . . . . . . . . . . . . . .
10
1.4.2
I sensori . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2 Descrizione del robot mobile Magellan Pro
2.1
2.2
16
Il robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.1.1
I Sonar . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.1.2
I sensori a raggi infrarossi . . . . . . . . . . . . . . . . . .
19
2.1.3
I sensori di contatto
. . . . . . . . . . . . . . . . . . . . .
19
2.1.4
Le comunicazioni . . . . . . . . . . . . . . . . . . . . . . .
19
La telecamera . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
i
2.3
Architettura software . . . . . . . . . . . . . . . . . . . . . . . . .
22
2.3.1
Corba e NamingService . . . . . . . . . . . . . . . . . . . .
22
2.3.2
Il Base Server . . . . . . . . . . . . . . . . . . . . . . . . .
23
2.3.3
Il Frame-grabber Server ed il Pan-tilt Server . . . . . . . .
24
2.3.4
MOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
Il modello cinematico . . . . . . . . . . . . . . . . . . . . . . . . .
26
2.4.1
Vincoli per le ruote ad orientamento fisso . . . . . . . . . .
29
2.4.2
Vincoli per le ruota anteriore . . . . . . . . . . . . . . . .
30
2.4.3
Equazioni del modello . . . . . . . . . . . . . . . . . . . .
31
2.4.4
Il modello nelle velocità lineari delle ruote . . . . . . . . .
32
3 Nonholonomic Motion Planning e Reactive Path Deformation
34
2.4
3.1
3.2
3.3
Introduzione ai sistemi anolonomi [6] . . . . . . . . . . . . . . . .
35
3.1.1
Vincoli cinematici . . . . . . . . . . . . . . . . . . . . . . .
36
3.1.2
Punto di vista del controllo . . . . . . . . . . . . . . . . .
38
Nonholonomic Motion Planning . . . . . . . . . . . . . . . . . . .
39
3.2.1
Chained Forms . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.2
Implementazione in Matlab . . . . . . . . . . . . . . . . .
42
Reactive Path Deformation for Nonholonomic Mobile Robots [4] .
46
3.3.1
3.4
Nonholonomic Path Deformation come sistema dinamico di
controllo . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
3.3.2
Algoritmo di Nonholonomic Path Deformation . . . . . . .
50
3.3.3
Implementazione in MatLab . . . . . . . . . . . . . . . . .
58
Unione dei due algoritmi ( 3.2 e 3.3) . . . . . . . . . . . . . . . .
62
4 Controllo in feedback sul cammino pianificato
ii
66
4.1
Dynamic Feedback Linearization [5] . . . . . . . . . . . . . . . . .
67
4.2
Simulazioni MatLab con DFL . . . . . . . . . . . . . . . . . . . .
70
Bibliografia
70
iii
Introduzione
In questa tesi ci si è occupati della pianificazione del moto di robot mobili
anolonomi immersi in uno spazio sconosciuto utilizzando un pianificatore per la
generazione di traiettorie e un algoritmo di deformazione in grado di modificare
la traiettoria pianificata nel caso questa fosse in collisione con ostacoli presenti
nello spazio di esplorazione. I problemi da affrontare per raggiungere l’obiettivo
finale sono stati principalmente i seguenti:
• Pianificazione di una traiettoria a partire da un punto iniziale prestabilito
che interpolasse quest’ultimo con un punto finale stabilito ( detto goal ).
• Esecuzione della traiettoria pianificata e iseguimento della stessa.
• Deformazione reattiva del percorso nel caso di presenza di ostacoli sulla
traiettoria pianificata.
• Ricerca di una legge di controllo adeguata per l’inseguimento della
traiettoria da parte del robot.
• Simulazione dei risultati teorici tramite l’utilizzo del software MathLab.
• Infine sperimentazione dei risultati teorici tramite l’utilizzo di un modello
del robot Magellan Pro in ambiente Webots, fornito dalla Cyberbotics.
1
Introduzione
2
La stesura della tesi rispecchia pienamente il percorso secondo il quale si sono
svolti i lavori.
Il primo capitolo comprende un’introduzione alla robotica mobile, al problema
di esplorazione di ambienti ignoti, al metodo SRT ( Sensor-based Random Tree)
e chiarisce l’utilizzo dello studio eseguito nell’applicazione dell’SRT. Il secondo
capitolo descrive brevemente le caratteristiche tecniche del robot Magellan Pro.
Nel terzo capitolo viene effettuata una breve trattazione sulla pianificazione
di traiettorie e sulla loro deformazione da parte dell’algoritmo “Reactive Path
Deformation”.
Nel quarto capitolo viene descritto il contollo in “Dynamic
Feedback Linearization” sul cammino pianificato. Nel quinto capitolo vengono
presentati i risultati delle simulazioni e delle sperimentazioni in Webots e una
breve descrizione dell’ambiente di simulazione.
Infine chiude la tesi il sesto
capitolo con un’esposizione di alcune idee per dei possibili sviluppi futuri.
Capitolo 1
Robotica mobile e esplorazione di
ambienti sconosciuti
La robotica ha come obiettivo lo studio di macchine che possano sostituire l’uomo
nell’esecuzione di un compito, sia in termini di attività fisica che decisionale. Nel
corso dei secoli l’uomo ha costantemente cercato di individuare dei suoi sostituti
che fossero in grado di emulare il suo comportamento nelle molteplici occasioni
di interazione con l’ambiente circostante.
Gli enormi progressi in campo tecnologico, di cui siamo testimoni in
questi ultimi anni, hanno consentito un sempre più rapido sviluppo della
Robotica.
La rapida nascita di componenti hardware sempre più potenti e
veloci ( come i moderni processori) e la nascita di sempre più capienti unità di
memorizzazione dati hanno permesso la creazione di progetti robotici in grado di
svolgere compiti che fino a poche decine di anni fa erano cosiderati fantascentifici.
3
1.1. Obiettivo della tesi e sue applicazioni
4
Un robot è una macchina dotata di un certo grado di capacità decisionale,
che gli consente di svolgere tutti quei lavori caratterizzati da un’elevata
ripetitività e/o pericolosità per l’essere umano. La Robotica, che inizialmente
era usata prettamente in ambito industriale quale componente essenziale per la
realizzazione di sistemi automatizzati di produzione, col passare degli anni entra
sempre di più a far parte della vita quotidiana dell’uomo per svolgere compiti di
servizio e assistenza alla persona in ambienti domestici o in strutture mediche e
paramediche.
Robot mobili vengono realizzati per missioni in ambienti ostili o difficilmente
accessibili per l’uomo, come l’ambiente sottomarino, quello extraterrestre o
quello confinato all’interno di strutture industriali o civili non praticabili (si
pensi, ad esempio, all’impiego in operazioni di bonifica di terreni minati e nella
manipolazione di sostanze pericolose per l’uomo).
1.1
Obiettivo della tesi e sue applicazioni
L’obiettivo di questa tesi consiste nel pianificare traiettorie per un robot
mobile in un ambiente sconosciuto ed eseguirle applicando, nel caso in cui
queste traiettorie entrino in collisione con ostacoli presenti nell’ambiente, un
algoritmo di deformazaione reattiva del percorso che deformi la prepianificata
traiettoria trasformandola in un percorso ammissibile libero da ostacoli. Dopo
uno studio teorico e varie simulazioni in MatLab si è utilizzato come simulatore
il software Webots. Come robot della simulazione si è utilizzato il Magellan Pro,
definito nell’ambiente Webots come Differential wheels, che grazie ai suoi sensori
esterocettivi, quali ultrasuoni e/o infrarossi, è in grado di rilevare la presenza di
1.2. Problema dell’esplorazione di ambienti ignoti
5
ostacoli durante il moto del robot.
Una sua applicazione è l’estensione al caso anolonomo dell’algoritmo di
esplorazione di ambienti sconosciuti SRT. In questo modo il robot mobile
potrà raggiungere la prossima configurazione, cioè quella desiderata, attraverso
l’esecuzione di una traiettoria pianificata che interpola le due configurazioni
iniziale e finale rimanendo in una porzione dell’ambiente esplorato libera da
ostacoli ( o LSR, Local Safe Region).
1.2
Problema
dell’esplorazione
di
ambienti
ignoti
Una delle questioni più interessanti e delicate, nella quale la robotica mobile sta
investendo notevoli risorse negli ultimi anni, è quella dell’esplorazione di ambienti
ignoti. Questo problema porta a focalizzare l’attenzione su due quesiti:
• Come un robot può conoscere la sua posizione all’interno dell’ambiente che
lo circonda?
• In che modo può raggiungere la posizione desiderata senza urtare contro
ostacoli presenti nell’ambiente?
Il primo quesito affronta il problema della localizzazione del robot all’interno
dell’ambiente a lui sconosciuto. Il secondo si riferisce a tecniche di pianificazione
del moto e obstacle avoidance.
1.2. Problema dell’esplorazione di ambienti ignoti
1.2.1
6
La localizzazione
Esistono due metodi di base per la stima della posizione: i metodi di localizzazione
relativa e quelli di localizzazione assoluta.
I metodi di localizzazione relativa si basano di solito sull’odometria,
che consiste nell’integrazione delle rotazioni incrementali delle ruote nel tempo,
consentendo una stima dello spostamento del robot da una posizione di partenza
nota. Il suo principale svantaggio sta nel fatto che l’errore di posizione cresce
durante il moto del veicolo a causa dello slittamento delle ruote e degli attriti
col pavimento. L’accumularsi degli errori di orientamento causa grossi errori
di posizionamento che crescono proporzionalmente con la distanza percorsa dal
robot. Ne consegue la necessità di un sistema di localizzazione: partendo da una
buona stima della posizione iniziale del robot, gli encoders aquisiscono dati sulla
rotazione e sterzata delle ruote e successivamente viene fatta una stima della
posizione finale.
Un altro tipo di approccio consiste nella misura della posizione basata sui
riferimenti inerziali e magnetici: in questo caso la localizzazione si basa
sulla navigazione inerziale con giroscopi e accellerometri.
I metodi di localizzazione
assoluta determinano la posizione e
l’orientamento del robot rispetto ad un sistema di riferimento fisso. Diversi sono
gli approcci di localizzazione assoluta e la loro implementazione dipende dal tipo
di sensori utilizzati.
1.3. Algoritmo di esplorazione SRT
1.2.2
7
La pianificazione del moto e obstacle avoidance
È proprio alla risposta del secondo di questi quesiti che si intende dare un
contributo, introducendo brevemente il metodo di esplorazione SRT ed esponendo
il lavoro fatto per l’estensione al caso anolonomo.
1.3
Algoritmo di esplorazione SRT
L’algoritmo SRT si propone come metodo utile all’esplorazione di ambienti
sconosciuti. L’algoritmo SRT, il cui acronimo sta per Sensor-based Random
Tree, sfrutta l’espansione di una struttura randomizzata ad albero, costruito per
mezzo di una generazione casuale di configurazioni del robot, per realizzare un
algoritmo fortemente indirizzato all’esplorazione, da parte di un robot mobile, di
ambienti sconosciuti, con il solo utilizzo dei sensori in dotazione ( ultrasuoni o
infrarossi). Esistono due versioni di SRT:
- SRT versione Ball
- SRT versione Star
Queste due versioni differiscono tra loro nel modo di gestire le informazioni
dei sensori; tali informazioni si riflettono sulla costruzione dell’area salva intorno
alla posizione corrente, nella quale il robot è libero di muoversi senza pericolo di
urtare ostacoli.
1.4. Robot mobili su ruote
8
Figura 1.1: Alcuni esempi di robot su gambe
1.4
Robot mobili su ruote
I robot mobili (o AMR, Autonomous Mobile Robots) rappresentano uno dei più
recenti sviluppi all’interno della Robotica. A differenza dei robot che operano in
ambienti industriali, siano essi fissi o anche capaci di spostarsi come gli AGV
(Automated Guided Vehicles), i robot mobili più avanzati sono principalmente
destinati ad operare in ambienti non strutturati, le cui caratteristiche sono
variabili e non note a priori. In conseguenza di ciò, il paradigma di funzionamento
di un robot mobile si basa in larga misura sulla capacità del sistema di compiere,
in maniera autonoma, scelte e decisioni che consentano di ottimizzare il proprio
comportamento in relazione alle circostanze e al compito da svolgere.
Esistono diverse categorie di robot mobili, da quelli dotati di gambe ( alcuni
esempi in figura 1.1) a quelli che sfruttano lo scivolamento su una superficie a
basso attrito tangenziale (in genere tramite la creazione di un cuscino d’aria), da
quelli dotati di cingoli a quelli che si muovono tramite delle eliche in un ambiente
sottomarino.
Sicuramente la categoria più diffusa è quella dei robot mobili su ruote (o
1.4. Robot mobili su ruote
9
Figura 1.2: Alcuni esempi di robot mobili
WMR, Wheeled Mobile Robot). Un WMR è un veicolo dotato di ruote, di
sensori di vario genere e di un computer (remoto o di bordo,) che coordina le sue
attività e lo rende capace di moto autonomo controllando l’azione dei motori. In
figura 1.2 è possibile osservare alcuni esempi di robot mobili.
Le ruote risultano sicuramente il mezzo di locomozione più semplice in un
ambiente terrestre. Presentano ridotti problemi di stabilità, usano, a parità
di distanza percorsa, meno energia rispetto ad altri sistemi di locomozione e
permettono ad un robot di spostarsi molto velocemente. I veicoli che si muovono
su ruote sono agevolmente manovrabili, alcuni sono capaci di girare su se stessi o
di muoversi parallelamente al proprio asse. Per contro, le ruote si possono usare
solamente su terreni solidi e relativamente lisci; su terreni morbidi potrebbero
infatti impantanarsi, mentre sui terreni troppo lisci sono soggette a fenomeni di
slittamento. Per superare terreni scabri e irregolari i WMR devono essere dotati
di un efficace sistema di sospensioni che consenta alle ruote di mantenersi sempre
1.4. Robot mobili su ruote
10
Figura 1.3: Configurazione “Tricycle Drive”
in contatto con il terreno.
1.4.1
Strutture cinematiche dei WMR
Esistono diversi tipi di strutture cinematiche su ruote, a seconda del numero di
ruote impiegate e della posizione e struttura di quelle motrici e direttrici. Le
strutture più usate sono le seguenti:
• Tricycle Drive: questo sistema impiega una ruota anteriore attuata sia
in rotazione sia in sterzata, e due ruote passive posteriori (figura 1.3).
In alternativa la coppia motrice può essere fornita dal motore alle ruote
posteriori tramite un differenziale meccanico e la ruota anteriore viene
utilizzata solo per la sterzata.
• Car-like: è la configurazione cinematica usata nelle comuni automobili
(figura 1.4).
Due ruote posteriori sono motrici e ad orientamento
fisso rispetto al telaio.
Due anteriori sono rese sterzanti tramite un
quadrilatero articolato (sterzo di Ackerman) che mantiene l’intersezione dei
prolungamenti degli assi delle ruote sul centro di istantanea rotazione del
telaio (ciò riduce i fenomeni di strisciamento).
1.4. Robot mobili su ruote
11
Figura 1.4: Configurazione “Car-Like”
• Skid steering: quattro ruote motrici fisse sono disposte sui vertici di un
rettangolo (figura 1.5). Su ognuno dei due lati le ruote sono accoppiate ed
attuate con lo stesso comando. Una realizzazione costruttiva differente, ma
cinematicamente equivalente, prevede l’utilizzo di una coppia di cingoli al
poste delle due coppie di ruote.
• Syncro Drive: la struttura è composta da tre (o quattro) ruote mantenute
sempre parallele. Un accoppiamento meccanico impone alle ruote uno stesso
orientamento ed una stessa velocità di rotazione(figura 1.6).
• Uniciclo: l’uniciclo ideale è la struttura più semplice per un veicolo
terrestre e rappresenta una ruota libera di ruotare su se stessa e di
muoversi su un piano. La struttura reale che presenta lo stesso modello
cinematico dell’uniciclo è costituita da un robot con due ruote attuate
indipendentemente ed un ruotino passivo (castor ) che mantiene la struttura
1.4. Robot mobili su ruote
Figura 1.5: Configurazione “Skid Steering”
Figura 1.6: Configurazione “Syncro Drive”
12
1.4. Robot mobili su ruote
13
Figura 1.7: Configurazione “Differential Drive”
Figura 1.8: Configurazione “Stanford Wheel”
in equilibrio. Questo sistema è detto differential drive (vedi figura 1.7 ).
Esistono tuttavia strutture più sofisticate capaci di conferire al veicolo
caratteristiche cinematiche notevoli. Senza entrare nei particolari, citiamo, a
titolo di esempio, un tipo molto particolare di ruota, la Stanford wheel ( si veda la
figura 1.8), la quale, permettendo spostamenti nella direzione del suo asse, risulta
essere priva dei vincoli cinematici propri delle comuni ruote. Essa è costituita
da un sistema di mozzi circolari rotanti aventi l’asse di rotazione parallelo alla
direzione di normale avanzamento.
1.4. Robot mobili su ruote
1.4.2
14
I sensori
Per interagire con il mondo esterno, un robot è dotato di una serie di sensori.
I sensori più comunemente impiegati nella strumentazione di bordo di un robot
mobile si possono suddividere in due categorie:
• Sensori interni o propriocettivi : misurano lo stato interno del robot, ovvero
i movimenti delle sue parti meccaniche in un sistema di riferimento solidale
al robot. I dati provenienti da tali sensori sono interpretati temporalmente
e permettono al robot di stimare la sua posizione nell’ambiente in cui si
muove.
Tipo di misura
Trasduttori relativi
Posizione
Potenziometri, Resolvers, Syncros, Encoders
Velocità
Tachimetri, Encoders
Accelerazione
Accelerometri
Forza e coppie
Sensori di forza e coppia
Orientamento
Giroscopi, Bussole
Posizione
GPS
• Sensori esterni o esterocettivi :
forniscono informazioni sull’ambiente
circostante. Le misure effettuate sono tipicamente rivolte a localizzare il
robot all’interno di un sistema di riferimento solidale con l’ambiente, ed
a localizzare oggetti appartenenti all’ambiente. La tabella seguente elenca
alcuni di questi sensori.
1.4. Robot mobili su ruote
15
Tipo di misura
Trasduttori relativi
Contatto
Bumpers, Antenne, Epidermics
Forza o coppia
Sensori di forza e coppia
Prossimità
Induttivi, Capacitivi, Ottici, Magnetici
Distanza
Sonar, Visione, Laser
Per ogni tipo di sensore montato è fondamentale sviluppare un accurato
modello in modo da poter correttamente interpretare i dati ricevuti. Un’attenta
calibrazione ed una buona identificazione dei modelli, una volta nota l’accuratezza
delle misure, garantiscono un buon risultato negli algoritmi di integrazione
sensoriale.
Capitolo 2
Descrizione del robot mobile
Magellan Pro
2.1
Il robot
Magellan Pro è un robot mobile prodotto dalla iRobot1 ; in figura 2.1 è
inquadrato da tre prospettive visuali differenti. La sua scocca esterna è costituita
da alluminio e presenta una struttura cilindrica con un diametro di base di 40.6
cm ed un’altezza di 25.4 cm 2 . Al suo interno trovano alloggio i motori, gli
accumulatori e tutta l’elettronica di bordo. Il peso complessivo della struttura
è di circa 18.2 kg. Magellan Pro è dotato di due ruote motrici indipendenti e
di un castor mobile passivo (struttura cinematica differential drive, accennata
al paragrafo 1.4.1), la sua cinematica può essere descritta dal modello uniciclo
che sarà dedotto nel paragrafo 2.4. Le ruote sono di gomma morbida ed hanno
un diametro di 16.5 cm. Ognuna di esse è attuata da un motore in corrente
1
2
http://www.irobot.com
L’altezza da terra della sua base (ground clearance) è di circa 3.8 cm.
16
2.1. Il robot
17
Figura 2.1: Il robot Magellan Pro
continua da 24 V comandato in PWM. Il robot può raggiungere una velocità
lineare massima di 2.5 m/s ed una velocità massima di rotazione intorno al
suo asse di circa 270◦ /s (4.71 rad/s). Su ogni motore è calettato un encoder
incrementale impiegato sia per il controllo di velocità sia per la localizzazione
tramite l’odometria. Il sistema di alimentazione è costituito da due batterie da
12 V/12 Ah che gli permettono un’autonomia di circa due ore.
L’elettronica e la strumentazione a bordo di Magellan Pro comprendono:
• un PC Intel Pentium III 850 Mhz;
• un sistema di controllo rFLEX con schermo LCD;
2.1. Il robot
18
• una telecamera mobile (pan-tilt) a colori con relativo frame-grabber;
• 16 sensori di distanza ad ultrasuoni (Sonar3 );
• 16 sensori di prossimità ad infrarossi;
• 16 sensori di contatto (Bump Switches);
• un radiomodem (l’altro è collegato al PC remoto)
Il sistema di controllo rFLEX, prodotto dalla iRobot, costituisce un semplice
interfaccia utente per la gestione, la configurazione e la diagnostica del robot. Lo
schermo consente l’accesso ad un menu di funzioni e di comandi su tutti i sistemi
di base del robot (le varie console FARnet, Sonar, InfraRed, Joystick Drive, Motor
Test, Digital I/O, System I/O, Host Console).
2.1.1
I Sonar
Magellan Pro è dotato di 16 sensori sonar distribuiti in modo uniforme e circolare
attorno alla sua superficie laterale. Ognuno di essi può misurare la distanza da
un ostacolo frontale in un range che va dai 20 cm ai 4 m 4 .
I sonar quasi mai sottostimano la distanza da un ostacolo, quindi un metodo
semplice ed efficiente per ridurre il rischio di collisioni è quello di tenere sempre
sotto controllo la distanza minima rilevata dal gruppo di sonar in dotazione.
3
4
SOund Navigation And Ranging.
Le letture dei sonar vengono “tagliate” in questo range. Errori di lettura (e.g. quando
l’hardware non risponde) e letture non valide (e.g. nessuna eco è stata ricevuta) appariranno
come valori massimi
2.1. Il robot
2.1.2
19
I sensori a raggi infrarossi
Un sistema di 16 sensori di prossimità ad infrarossi Sharp è disposto circolarmente,
sotto la cinta dei sonar, attorno al Magellan Pro. Ciascun sensore è composto da
un emettitore LED5 e da un fotorilevatore. Un raggio infrarosso6 viene emesso e,
in base alla misura dell’intensità della luce riflessa, viene stimata una distanza tra
il sensore e l’oggetto riflettente. Il raggio d’azione dei sensori a raggi infrarossi
è ridotto rispetto a quello dei sonar: per il nostro robot la distanza minima
percepibile è di circa 7 cm, mentre quella massima è di circa 1 m. A differenza dei
sonar, il cono di emissione degli infrarossi è più ristretto ed ha una semi-apertura
di circa 8◦ .
2.1.3
I sensori di contatto
Sotto la cinta dei sonar e degli infrarossi sono disposti circolarmente 16 sensori
di contatto (bump switches). La loro funzione fondamentale è quella di rilevare
collisioni non previste durante l’esecuzione di movimenti. In caso positivo, un
processo supervisore provvede a fermare il moto del robot ed eventualmente ad
attivare delle routine ad hoc.
2.1.4
Le comunicazioni
Due radiomodem della BreezeNET, un Access Point radio, collegato direttamente
alla LAN7 , ed un Station Adapter radio, quest’ultimo alloggiato all’interno di
5
6
Light Emission Diode.
Radiazione elettromagnetica con lunghezza d’onda superiore ai 0.75 mm; essa è invisibile
ad occhio nudo.
7
Local Area Network.
2.2. La telecamera
20
Magellan Pro, consentono di comunicare con il PC a bordo del robot tramite una
wireless LAN ad una velocità di 3 Mbps.
All’interno del robot un bus di controllo FARnet connette i vari dispositivi in
un rete interna, la cui topologia può essere esaminata nella FARnet console del
sistema di controllo rFLEX.
2.2
La telecamera
La telecamera presente a bordo del robot Magellan Pro è il modello EVI-D31
costruito dalla Sony ed è rappresentata in figura 2.2. La telecamera è costituita
di due attuatori che le consentono le rotazioni intorno a due assi, che vengono
chiamati rispettivamente “asse di pan ed “asse di tilt. L’asse di rotazione di pan è
diretto ortogonalmente rispetto alla base di appoggio della telecamera. L’asse di
tilt è invece parallelo rispetto a tale piano d’appoggio e risulta sghembo rispetto
all’asse di pan.
Insieme alla telecamera è fornito in dotazione un telecomando che consente
lo svolgimento dei compiti basilari, come ad esempio la rotazione intorno agli
assi di pan e di tilt, ma anche più complessi.
Infatti tramite telecomando
è possibile impostare la telecamera per l’inseguimento di oggetti selezionati
dall’utente, utilizzando l’informazione del colore. Inoltre la telecamera è in grado
di determinare le differenze tra un’immagine iniziale di riferimento e l’immagine
corrente.
Le dimensioni di ingombro della telecamera, che sono riportate in figura 2.3,
consentono un corretto posizionamento a bordo del robot.
2.2. La telecamera
21
Figura 2.2: Il robot Telecamera EVI-D31
Figura 2.3: Dimensioni Telecamera EVI-D31
2.3. Architettura software
2.3
22
Architettura software
Mobility Robot Integration Software [3] è l’ambiente di sviluppo software
fornito dalla iRobot.
Il sistema operativo che lo supporta è Linux. L’ambiente Mobility definisce
un modello ad oggetti del robot usando lo standard CORBA 2.X
8
per la
comunicazione tra le varie componenti. Il modello definisce un sistema robotico
come un insieme di oggetti distribuito e organizzato gerarchicamente.
Ogni
oggetto è un’unità software separata, con una sua identità, una sua interfaccia
e un suo stato interno. Gli oggetti rappresentano astrazioni delle parti del robot:
sensori, attuatori, raccolta dati, ecc.
Mobility fornisce un set base di classi che rispecchia il modello ad oggetti del
robot e costituisce uno “scheletro su cui specializzare ed estendere le funzionalità
del sistema in base alle proprie esigenze. Ogni utente può sviluppare il suo proprio
software che agirà da client rispetto ai componenti software forniti. Sia Java che
C++ sono supportati, ma la release 1.1 di Mobility fornisce le classi solo per il
linguaggio C++.
2.3.1
Corba e NamingService
Nell’ambiente ad oggetti distribuiti Corba, gli oggetti possono comunicare fra
loro solo se hanno i loro reciproci riferimenti.
8
Gli oggetti importanti di
Common Object Request Broker Architecture. Il consorzio OMG (Object Management
Group), dedito alla ricerca di metodi aperti e standardizzati per lo sviluppo di software ad
oggetti distribuiti, ha sviluppato CORBA come suo primo standard. CORBA costituisce un
libreria dedicata alla comunicazione e permette un accesso trasparente ad oggetti in differenti
spazi di indirizzi, sullo stesso o su diversi computer.
2.3. Architettura software
23
ogni programma si registrano nel NamingService. Ogni programma può allora
interrogare il NamingService per ottenere il riferimento (sotto forma di stringa)
degli oggetti registrati.
2.3.2
Il Base Server
I programmi applicativi, che controllano il moto ed i flussi input-output del robot,
si possono considerare distribuiti su due livelli.
Il livello più basso comprende il Base Server. Questo server interagisce
direttamente con l’hardware del robot tramite una collezione di device driver che
si occupano del controllo di basso livello del moto e dell’acquisizione dei dati dai
sensori.
Il Base Server contiene al suo interno un insieme di buffer, uno per ogni
sensore.
Ogni buffer raccoglie due strutture dati 9 : queste contengono le
due ultime letture ottenute da ogni dispositivo insieme al relativo istante di
campionamento. Il Base Server si occupa autonomamente di aggiornare in modo
continuo i vari buffer dei sensori.
Al livello più alto, ogni programma, che necessiti l’uso dei motori o
l’acquisizione di dati dall’odometria, dai sonar o dagli infrarossi, si comporta come
un client, inoltrando, tramite il NamingService, le sue richieste al Base Server10 .
Quest’ultimo, ricevute tali richieste, si occupa poi di trasmettere gli eventuali
comandi agli attuatori e di comunicare al client il contenuto delle struttura più
aggiornata raccolta in ognuno dei buffer di interesse.
9
La verifica che il buffer ha dimensione due è stata effettuata tramite la funzione
history length della classe base StateComponent. Questa viene ereditata, come una sorta di
interfaccia, da tutte le classi Mobility che rappresentano lo stato di un particolare dispositivo.
10
Il tutto avviene in maniera trasparente tramite l’utilizzo delle classi fornite da Mobility.
2.3. Architettura software
2.3.3
24
Il Frame-grabber Server ed il Pan-tilt Server
Sullo stesso livello del base server si collocano il server relativo al frame-grabber
ed il server di movimento relativo alla telecamera. Il primo si occupa di acquisire
ed elaborare i dati di basso livello ottenuti dall’acquisizione digitale del segnale
video proveniente dalla telecamera. Il secondo, in modo identico al base server, si
interfaccia con gli attuatori e gli encoder della telecamera comunicando eventuali
comandi di movimento pan-tilt ed aggiornando un vettore di stato corrispondente.
Come il base server, sia il frame-grabber sever sia il pan-tilt server devono essere
attivati sul PC a bordo di Magellan Pro.
Per quanto riguarda il Pan-tilt Server, si sono riscontrati dei problemi dovuti
al lento refresh dell’odometria della telecamera, che viene aggiornata ogni circa
0.4 secondi. Questo rappresenta un forte limite per un corretto svolgimento
della tesi, in quanto con tempi di refresh di tale portata non è possibile
ottenere l’inseguimento di oggetti in movimento, a meno che non si tratti di
movimenti di modesta entità. Fortunatamente il dottorando Ing. Luigi Freda,
che precedentemente si era occupato della movimentazione del robot Magellan
Pro nella sua tesi [2], ha messo a punto un nuovo server che consente di ottenere
un aggiornamento dell’odometria nettamente più veloce (nell’ ordine degli 0.015
secondi).
Con tale risultato, il limite alle prestazioni della telecamera è dato dal
Frame-grabber, che ha un refresh di circa 0.14 secondi, che corrisponde ad una
acquisizione di immagini pari a circa 7 frames al secondo.
2.3. Architettura software
2.3.4
25
MOM
Mobility fornisce un’interfaccia grafica che permette di monitorare e configurare
gli oggetti che compongono il modello software di Magellan Pro: MOM (Mobility
Object Manager) è scritto in Java e comunica con i programmi Mobility tramite
Corba. Al momento dell’attivazione MOM interroga il NamingService per avere
i riferimenti di tutti gli oggetti attivi registrati.
Una finestra visualizza la
gerarchia degli oggetti: i nodi principali che possono essere visualizzati sono
tre e rappresentano l’attivazione del base server, del frame-grabber server e del
pan-tilt server11 . Come in una gerarchia di directory, ogni nodo contiene i suoi
oggetti componenti, rispecchiando il modello del robot. Cliccando il tasto destro
del mouse su ognuno di essi appare un menù di visualizzatori che restituiscono
informazioni riguardo lo stato dell’oggetto.
Ad esempio l’attivazione del base server viene visualizzata con un
nodo “Magellan Pro”.
Questo contiene al suo interno i sottonodi
“Drive” (permette di comandare il robot con un “joystick grafico”),
“Sonar ”,“Infrared ”,“Odometry”,“Hardware” e “Debug”. Il nodo “Sonar” a sua
volta contiene altri tre sottonodi che rappresentano i tre formati disponibili per i
dati dei sensori ad ultrasuoni.
Nella figura 2.4 è mostrato uno screen-shot del MOM.
11
Questi tre server sono indipendenti l’uno dall’altro e vanno attivati sul PC a bordo dopo
l’avvio del NamingService.
2.4. Il modello cinematico
26
Figura 2.4: Intefaccia grafica MOM
2.4
Il modello cinematico
Magellan Pro è dotato di due ruote laterali attuate indipendentemente, di un
ruotino posteriore passivo (castor), che mantiene la struttura in equilibrio, e di
un roller frontale, che minimizza i battimenti dovuti alle frenate brusche.
Il carico del veicolo è sostenuto prevalentemente dalle due ruote motrici
laterali12 . Questo permette di trascurare la dinamica del castor e di considerare
Magellan Pro come un uniciclo.
Formuliamo le ipotesi preliminari che ci consentiranno di dedurre in maniera
semplice il modello cinematico del robot:
12
L’asse delle ruote motrici cade in posizione diametrale. Data la simmetria assiale del
veicolo e la distribuzione uniforme dei carichi, la proiezione perpendicolare del baricentro cade
approssimativamente su tale asse.
2.4. Il modello cinematico
27
Figura 2.5: Grandezze cinematiche del Magellan Pro
• Il robot è schematizzato come un insieme di cinque corpi rigidi (vedi figura
2.5): una struttura portante piana orizzontale, due ruote motrici di raggio
R, un ruotino di raggio r ed un piantone verticale che lo supporta13 .
Le ruote sono considerate ideali, ossia di spessore praticamente nullo ed
indeformabili.
• La superficie di appoggio del veicolo è perfettamente piana ed orizzontale.
• Si esclude la presenza di slittamenti per le ruote: ovvero si ipotizza che,
durante il moto, la velocità del punto di contatto delle ruote sul piano di
appoggio sia nulla.
Sia le ruote motrici che il ruotino hanno piani di rotazione ortogonali rispetto
a quello della struttura portante. Quelli delle ruote motrici sono fissi rispetto ad
essa, mentre quello del castor può ruotare intorno all’asse del piantone verticale.
13
Il roller non è in contatto con il piano di appoggio del veicolo e quindi non sarà considerato
come “ruota.
2.4. Il modello cinematico
28
Per la deduzione del modello cinematico seguiamo l’approccio indicato in [1],
effettuando prima di tutto una classificazione delle tre ruote per determinare il
tipo di vincolo cinematico associato ad ognuna di esse:
• le due ruote posteriori sono di tipo “svedese”. Ovvero, per ognuna di esse,
è possibile definire sul piano di appoggio una direzione lungo la quale la
componente di velocità del punto di contatto sia nulla.
• il ruotino anteriore è di tipo “off centered” perchè il suo asse di rotazione
orizzontale ha un disassamento non nullo rispetto a quello del piantone
verticale.
Con riferimento alla figura 2.5 consideriamo una terna mobile {x1 , x2 }, solidale
con il robot e con origine coincidente con il centro dell’asse delle ruote motrici,
ed una terna fissa {I1 , I2 }, solidale con il piano di moto del veicolo. Sia


x
 
 
ξ= y 
 
θ
(2.1)
il vettore delle coordinate di postura del veicolo, dove x, y e θ sono
rispettivamente le coordinate dell’origine e l’angolo di rotazione di {x1 , x2 }
rispetto alla terna fissa. La matrice di rotazione di {x1 , x2 } rispetto ad {I1 , I2 }
risulta:


cos ϑ
sin ϑ 0




R (ϑ) =  − sin ϑ cos ϑ 0 


0
0
1
(2.2)
2.4. Il modello cinematico
29
Figura 2.6: Parametri cinematici della ruota svedese
2.4.1
Vincoli per le ruote ad orientamento fisso
Consideriamo nella figura 2.6 i parametri relativi al modello di ruota svedese che
rappresenta la cinematica delle ruote laterali di Magellan Pro. In particolare γ
individua la direzione lungo la quale deve essere nulla la velocità di slittamento
e ρ il raggio della ruota in esame.
Come riportato in [1], l’equazione che descrive il vincolo di anolonomia sulla
velocità del punto di contatto con il suolo è la seguente:
[ − sin(α + δ + γ) cos(α + δ + γ) l cos(δ + γ) ]R(ϑ)ξ˙ + ρ cos(γ)ϕ̇ = 0 (2.3)
Detta L la lunghezza dell’asse delle ruote, per la ruota sinistra (sx) abbiamo:
l=
L
;
2
π
α= ;
2
δ= 0; ρ= R; γ=
π
2
(2.4)
Sostituendo tali valori nell’equazione (2.3) si ottiene:
[ 0 −1 0 ]R(ϑ)ξ˙ = 0
Per la ruota destra (dx):
(2.5)
2.4. Il modello cinematico
30
Figura 2.7: Parametri cinematici del castor
l=
L
;
2
π
α= − ;
2
δ= 0; ρ= R; γ=
π
2
(2.6)
da cui:
[ 0 1 0 ]R(ϑ)ξ˙ = 0
2.4.2
(2.7)
Vincoli per le ruota anteriore
Per le ruote di tipo “off centered” (vedi figura 2.7) le equazioni di vincolo sono le
seguenti:

 [− sin(α + β)
 [ cos(α + β)
cos(α + β)
l cos β]R(θ)ξ˙ + ρϕ̇ = 0
sin(α + β) d + l sin β]R(θ)ξ˙ + dβ̇ = 0
(2.8)
I parametri, nel nostro caso, hanno i seguenti valori:
ϕ = variabile;
e le equazioni diventano:
α = 0;
l = D;
ρ = r;
β = variabile
(2.9)
2.4. Il modello cinematico

 [− sin β
 [ cos β
2.4.3
31
cos β
D cos β]R(θ)ξ˙ + rϕ̇ = 0
sin β
d + D sin β]R(θ)ξ˙ + dβ̇ = 0
(2.10)
Equazioni del modello
Possiamo riscrivere in maniera compatta le equazioni (2.5) e (2.7):



0
1
0
 R(ϑ)ξ˙ = 0
(2.11)
0 −1 0
ed indicando con:


1 0




Σ= 0 0 


0 1
(2.12)

una matrice le cui colonne sono una base per N 

0
1
0
 si può
0 −1 0
scrivere:
˙ RT (θ)Ση
ξ=
η∈R
2
(2.13)
che costituisce il cosiddetto modello cinematico di postura14 . Se si indica con
v la velocità lineare dell’origine della terna mobile {x1 , x2 } lungo l’asse x1 , con ω
la velocità angolare della struttura portante15 e si pone η T = [v ω], l’equazione
cinematica di postura assume un più chiaro significato fisico:
14
Le equazioni (2.5) e (2.7) sono equivalenti al vincolo di anolonomia dell’uniciclo ideale
(paragrafo 1.1.1): −ẋ sin θ + ẏ cos θ = 0.
15
Stiamo considerando il caso di moto piano per la struttura portante. Le rotazioni sono
assunte positive in senso antiorario, secondo le normali convenzioni.
2.4. Il modello cinematico
32


ẋ = v cos θ



ẏ = v sin θ




θ̇ = ω
(2.14)
˙ ma permettono di
Le equazioni (2.10) non pongono vincoli espliciti su ξ,
determinare in dipendenza delle coordinate di postura e del vettore η dei comandi
di velocità, i valori di β̇ e ϕ̇ relativi al castor.
2.4.4
Il modello nelle velocità lineari delle ruote
Può essere interessante conoscere la relazione che esiste tra le coordinate di
postura del robot e le velocità vd e vs degli estremi dell’asse delle ruote motrici. Se
per tali ruote vale l’ipotesi di puro rotolamento, le velocità suddette sono legate
alle velocità angolari ωd e ωs delle ruote tramite le seguenti equazioni:
vd = ωd R
(2.15)
vs = ωs R
dove con R si è il raggio delle ruote.
Da semplici considerazioni geometriche, indicando con L la lunghezza dell’asse
delle ruote motrici (si veda la figura 2.5), si ottiene la relazione:


1
1
v
2  d 
 = 2
(2.16)
1 −1
ω
v
s
L
L
In fine, sostituendo tali relazioni nella (2.14), si ottiene il nuovo modello


v
cinematico:

2.4. Il modello cinematico
33


ẋ

  
  
 ẏ  = 
  
θ̇
cos θ
2
sin θ
2
1
L
cos θ
2
sin θ
2
1
−L



 vd



 v
s
(2.17)
Capitolo 3
Nonholonomic Motion Planning
e Reactive Path Deformation
L’intero lavoro di tesi può essere suddiviso in due fasi:
• La prima fase consiste nello studio ed implementazione di un pianificatore
di traiettorie anolonome che interpola due configurazioni del robot: quella
corrente ( configurazione di partenza) definita come qcurr e quella successiva
( configurazione di arrivo o goal ) definita come qgoal .
• La seconda fase consiste nello studio e implementazione del “Reactive Path
Deformation for Nonholonomic Mobile Robots” (vedi [4]).
Entrambi queste fasi sono state realizzate tramite l’ausilio del software
MatLab e poi implementate in un listato C++ utilizzato come controllore del
Magellan Pro nell’ambiente di simulazione Webots.
34
3.1. Introduzione ai sistemi anolonomi [6]
35
Figura 3.1: Esempio di vincolo anolonomo su robot mobile dotato di due ruote
3.1
Introduzione ai sistemi anolonomi [6]
Tra i vari sistemi onolonomi vi sono anche i WMR ( wheeled mobile robots o robot
mobili su ruote). Un WMR, data la presenza delle ruote, non può muoversi in
direzioni perpendicolari a quella di avanzamento, questa condizione rappresenta
un caso particolare di comportamento anolonomo ed è un vincolo di movimento
senza scivolamento. In generale:
un sistema meccanico anolonomo non può muoversi in qualsiasi direzione nel
proprio spazio delle configurazioni.
Nascono a questo punto dei problemi:
• La nostra esperienza quotidiana ci indica che i WMR sono controllabili, ma
per provarlo è necessaria una caratterizzazione matematica di anolonomia.
• In ogni caso, se il robot deve muoversi tra due configurazioni, è richiesto
un percorso realizzabile ( ad esempio un moto che soddisfa ai vincoli
anolonomi).
3.1. Introduzione ai sistemi anolonomi [6]
36
• Il problema del feedback control è molto complicato, perchè:
- un WMR è sottoattuato: meno ingressi di controllo delle coordinate
generalizzate;
- un WMR è non facilmente stabilizzabile in un punto.
C’è quindi bisogno di un’appropriata tecnica di controllo reazionato.
3.1.1
Vincoli cinematici
La configurazione di un sistema meccanico può essere unicamente descritta da un
vettore n-dimensionale di coordinate generalizzate:






q=



q1 

q2 

.. 
. 


qn
(3.1)
Le velocità generalizzate in un generico punto della traiettoria q(t) ∈ Q,
dove Q è la configurazione spaziale, è il vettore tangente:






q̇ = 



q˙1 

q˙2 

.. 
. 


q˙n
(3.2)
Vincoli geometrici possono esistere o essere imposti sul sistema meccanico
restringendo le possibilità di moto a dimensioni inferiori a quelle dello spazio delle
configurazioni.
3.1. Introduzione ai sistemi anolonomi [6]
37
Figura 3.2: Rappresentazione dell’unicicloe
Un sistema meccanico può ance essere soggetto a un insieme di vincoli
cinematici coinvolgendo le sue coordinate generalizzate e le loro derivate. Nella
maggior parte dei casi sono vincoli Pfaffiani . Un insieme di vincoli Pfaffiani è
chiamato olonomo se è integrabile ( e rappresenta quindi una limitazione vincolo)
altrimenti è definito anolonomo ( e rappresenta una limitazione cinematica).
Vincoli olonomi e anolonomi influenzano la mobilità in modi completamente
differenti: se consideriamo un singolo vincolo Pfaffiano
• nel primo caso il moto è confinato a giacere su un particolare livello dei
piani che formano l’insieme delle configurazioni spaziali;
• Nel secondo caso in ogni configurazione la velocità istantanea del sistema
è ristretta ad uno spazio di una dimensione inferiore a quello delle
configurazioni spaziali originale.
Un esempio canonico di anolonomia è quello dell’uniciclo ( vedi fig. 3.2):
Le sue coordinate generalizzate sono q = (x, y, θ) e il vincolo anolonomo di
puro rotolamento è dato da:
3.1. Introduzione ai sistemi anolonomi [6]
38
µ
ẋ sin θ − ẏ cos θ = 0 ⇒
ẏ
= tan θ
ẋ
¶
(3.3)
Le velocità possibili del sistema sono contenute nello spazio nullo della matrice
dei vincoli:

  

0 
cos
θ




  

  

T
T
a (q) = (sin θ − cos θ 0) ⇒ N (a (q)) = span  sin θ  ,  0 


  






0
1
(3.4)
Ogni configurazione qf = (xf , yf , θf ) può essere raggiunta ruotando il disco
finchè non punta la nuova configurazione, rotolare il disco finchè non ha raggiunto
la nuova configurazione e ruotarlo nuovamente finchè il suo orientamento non è
θf .
3.1.2
Punto di vista del controllo
L’olonomia e l’anolonomia dei vincoli può essere convenientemente studiata
attraverso un approccio duale considerando le direzioni in cui il moto è
consentito piuttosto che quelle direzioni in cui il moto è proibito. Nasce quindi
un’interessante questione:
date due configurazioni arbitrarie qi e qf , quando esiste una traiettoria q(t) che
le connette soddisfacendo ai vincoli cinematici?
Associando all’insieme di vincoli cinematici una base del loro spazio nullo (
ad esempio un insieme di vettori gj ) tale che:
aTi (q)gj (q) = 0 i = 1, . . . , k
j = 1, . . . , n − k
(3.5)
3.2. Nonholonomic Motion Planning
39
le traiettorie realizzabili del sistema meccanico sono le soluzioni q(t) di
q̇ =
m
X
gj (q)uj = G(q)u
(3.6)
j=1
per ogni ingresso u(t) ∈ Rm ,
dove m=n-k ( le u sono anche dette
pseudovelocità).
Il precedente è un sistema nonlineare senza deriva ( cioè u(t) ⇒ q̇ = 0) è
conosciuto come modello cinematico di un sistema meccanico vincolato.
Tornando al caso dell’uniciclo 3.2 la matrice le cui colonne sono una base dello
spazio nullo della matrice dei vincoli anolonomi è:


cos θ


G(q) =  sin θ

0
0


0  = (g1 g2 )

1
(3.7)
da qui il modello cinematico dato dalla:
q̇ = G(q)u = g1 (q)u1 + g2 (q)u2
(3.8)
con le u velocità di ingresso.
3.2
Nonholonomic Motion Planning
Come già detto all’inizio del capitolo l’obiettivo della prima fase di progetto è
quella di pianificare una traiettoria per un sistema anolonomo e questo è possibile
tramite la costruzione di una sequenza di ingressi di controllo in grado di dirigere
il sistema da una configurazione iniziale qi a una finale qf soddisfacendo ai vincoli
anolonomi.
Esistono dei modelli canonici
di strutture i quali possono risolvere
3.2. Nonholonomic Motion Planning
40
efficientemente il problema della pianificazione.
Questi sono:
- Chained form
- Power form
- Caplygin form
Per poter raggiungere l’obiettivo desiderato bisogna eseguire una trasformazione
delle originali equazioni del modello in esame in una delle precedenti forme.
Questi modelli permettono oltretutto anche una semplice progettazione di una
reazione stabilizzatrice.
Il nostro interesse si focalizza sulla prima di queste forme, Chained form.
3.2.1
Chained Forms
Nel nostro caso, dovendo lavorare con il Magellan Pro, il quale può essere
assimilato ad un uniciclo, siamo dinanzi ad un sistema anolonomo a 3 dimensioni e
a due ingressi. Il modello chained form da utilizzare avrà quindi dimensioni (2,3),
dove 3 è la dimensione del sistema uniciclo, cioè sarà un sistema di controllo senza
deriva a due ingressi descritto dalla:
ż = g1 (z)v1 + g2 (z)v2
(3.9)
e trasformato nella seguente forma:
ż1 = v1
ż2 = v2
ż3 = z2 v1
(3.10)
3.2. Nonholonomic Motion Planning
41
In un Chained Form possono essere usati diversi ingressi di comando e noi
useremo gli ingressi polinimiali ( o polynomial inputs). Lo steering with
polynomial inputs, nel caso di un sistema di dimensione 3 con due ingressi,
prevede che il controllo sia scelto come:
v1 = sign(zf 1 − zi1 )
(3.11)
v2 = c 0 + c 1 t
con T = |zf1 − zi1 | e c0 , c1 ottenuti risolvendo il sistema lineare proveniente
dall’integrazione in forma chiusa dell’equazioni del modello, cioè:




z
c0
 + m(zi , T ) =  f 2 
M (T ) 
zf 3
c1
(3.12)
con M(T) non singolare per T 6= 0.
Se T = 0, e di conseguenza zf1 = zi1 , allora deve essere aggiunto un punto
intermedio tra i due che permette la buona riuscita del processo di pianificazione.
La trasformazione globale delle coordinate utilizzata per il modello
dell’uniciclo è:
z1 = θ
z2 = x cos θ + y sin θ
(3.13)
z3 = x sin θ − y cos θ
per gli ingressi invece la trasformazione è la seguente:
v = u2 + z 3 u1
(3.14)
w = u1
Applicando quindi la precedente trasformazione insieme alle 3.10, 3.11 e 3.12 per
il calcolo di c0 , c1 si ha:

 ż2 = v2
1
⇒ z2 = c0 t + c1 t + k
 v =c +c t
2
2
0
1
(3.15)
3.2. Nonholonomic Motion Planning
42


ż = z2 v1


 3
s 2 s 3
v1 = sign(zf 1 − zi1 ) = s ⇒ z3 = c0 t + c1 t + skt + d

2
6



1
z2 = c0 t + 2 c1 t + k



zf 2

=
zf 3



c0
c1

2
T
T /2
sT 2 /2
sT 3 /6

=


c0

+
c1

k
T 2 /2
2
sT /2


3
sT /6

skT + d
−1 
T
(3.16)

zf 2 − k
(3.17)

zf 3 − skT − d
dove k e d sono costanti di integrazione.
3.2.2
Implementazione in Matlab
A questo punto, una volta chiarito il modello chained form con polynomial inputs
e la conseguente trasformazione di coordinate e ingressi, è stato creato un modello
Simulink (vedi 3.3) formato da:
• un blocco per l’ingresso della configurazione finale desiderata;
• un sottosistema per la scalatura dell’angolo di orientamento nel caso quello
inserito sia maggiore o uguale 2π;
• un blocco ( S-Function) che contiene l’intero corpo del programma di
pianificazione ( vedi appendice);
• due blocchi di uscita per la visualizzazione grafica della posizione (x,y) e
l’orientamento finale ( XY Graph e Scope) e uno per la verifica numerica
della configurazione raggiunta ( Display)
3.2. Nonholonomic Motion Planning
43
Figura 3.3: Modello Simulink per la pianificazione
Diamo ora una breve spiegazione del programma di pianificazione. Il corpo
del programma si trova nella function mdlDerivatives del blocco S-Function.
Inizialmente viene inserita la configurazione finale desiderata, per l’uniciclo, da
console. Successivamente questa passa in sottosistema all’interno del quale le
prime due componenti del vettore della configurazione passano indisturbate (
cioè la posizione x e y dell’uniciclo) mentre viene effettuata una scalatura della
terza componente che indica l’orientamento, da parte della funzione:
atan2(sinθ, cosθ)
(3.18)
A questo punto giunge in ingresso della S-Function il vettore della configurazione
iniziale che viene trasformato secondo la trasformazione globale vista in 3.13,
dopo di che si passa ad un controllo delle prime due posizioni della configurazione
finale ed iniziale. Questo controllo è utile affinchè non si verifichi il caso in cui
3.2. Nonholonomic Motion Planning
44
T = 0. Se ciò si verificasse il programma generebbe un punto intermedio che in
questo caso è stato preso come: q = (0, 0, π/2) in modo che T 6= 0 e può essere
generata la traiettoria desiderata. In uscita dalla funzione mdlDerivatives però
gli stati della traiettoria sono trasformati secondo la 3.13 quindi affinchè siano
graficati correttamente c’è bisogno di un ulteriore trasformazione che riporti
le configurazioni nel sistema di riferimanto piano (x, y, θ). Questo compito è
affidato alla funzione della S-Function mdlOutputs nella quale si opera la seguente
trasformazione:
x = cos(x(1)) ∗ x(2) + sin(x(1)) ∗ x(3)
y = sin(x(1)) ∗ x(2) − cos(x(1)) ∗ x(3)
(3.19)
θ= x(1)
dove il vettore x = (x(1), x(2), x(3)) rappresenta il vettore delle coordinate
trasformate degli stati del sistema.
Riportiamo alcune simulazioni dell’algoritmo di pianificazione:
• nella prima ( vedi figura 3.4) il sistema si trova nella posizione iniziale
qi = (0, 0, 0) e viene pianificata una traiettoria che lo conduce nella posizione
finale qf = (0.5, 0.5, π);
• nella seconda ( vedi figura 3.5) il sistema si trova nella posizione iniziale
qi = (0, 0, 0) e viene pianificata una traiettoria che lo conduce nella posizione
finale qf = (0.5, 0.5, 0).
In questo caso l’uniciclo ruota prima su se
stesso portandosi nella configurazione qi = (0, 0, π/2) e poi si porta nella
configurazione finale eseguendo la traiettoria pianificata.
3.2. Nonholonomic Motion Planning
45
1
0.8
0.6
0.4
0.2
0
−0.2
−0.4
−0.6
−0.8
−1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Figura 3.4: Traiettoria pianificata dall’algoritmo di pianificazione
1
0.8
0.6
0.4
0.2
0
−0.2
−0.4
−0.6
−0.8
−1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Figura 3.5: Traiettoria pianificata dall’algoritmo di pianificazione nel caso di zf1 = zi1
3.3. Reactive Path Deformation for Nonholonomic Mobile Robots [4]
3.3
Reactive
Path
Deformation
46
for
Nonholonomic Mobile Robots [4]
La meggior parte dei veicoli sono soggetti a vincoli di rotolamento senza
slittamento e cosı̀ prendono parte alla grande classe dei sistemi anolonomi.
Gli sforzi della ricerca si sono focalizzati in passato sulla comprensione e il
controllo del moto di tali sistemi. Oggi i maggiori produttori di auto sono molto
interessati nel controllo del moto dei veicoli su ruote. Molti dei loro progetti
sono rivolti ad equipaggiare i loro veicoli, in un prossimo futuro, con funzioni
di movimento assistite da computer, come parcheggio parallelo automatico o
stop-and-go automatico in ingorghi stradali. Quindi una migliore comprensione
e controllo di tali sistemi può aprire la strada a un vasto campo di applicazioni
industriali nel dominio dei trasporti.
Produrre un moto automatico per un robot mobile anolonomo si è rivelata
una richiesta difficile. Per questa ragione il problema è stato diviso in due fasi:
• la prima fase consiste nel calcolare un moto libero da ostacoli usando una
mappa dell’ambiente;
• la seconda fase consiste nell’eseguire il moto.
Come conseguenza le passate ricerche su tali sistemi hanno focalizzato l’attenzione
su due aspetti:
• il path planning ( pianificazione del percorso)
• il motion control ( controllo del moto)
Queste due fasi sollevano a loro volta tre questioni:
incertezza della
localizzazione, imprecisione della mappa dell’ambiente e presenza di ostacoli
3.3. Reactive Path Deformation for Nonholonomic Mobile Robots [4]
inaspettati non presenti sulla mappa.
47
Tutte e tre le precedenti hanno una
conseguenza in comune: un percorso pianificato inizialmente libero da collisioni
può andare in collisione nel momento dell’esecuzione.
Per superare questa
difficoltà si propone un metodo che abilita una deformazione on-line del percorso
che deve essere eseguito dal robot per portarlo lontano dagli ostacoli percepiti
durante il moto.
Il metodo proposto in [4] abilita il robot a deformare il percorso iniziale per
sfuggire degli ostacoli percepiti e rendere il percorso corrente libero da ostacoli,
quindi il percorso corrente varia nel tempo. Un percorso e una mappatura da un
intervallo di numeri reali nella configurazione spaziale del robot, naturalmente il
processo di deformazione del percorso è modellato come una mappatura di due
variabili reali s e τ nello spazio delle configurazioni.
Il processo del path deformation è modellato come un sistema di controllo
dinamico, e [4] fornisce un algoritmo che controlla il processo di deformazione.
3.3.1
Nonholonomic Path Deformation come sistema
dinamico di controllo
Un percorso per un sistema robotico è usualmente rappresentato da una
mappatura da un intervallo di R nello spazio delle configurazioni del sistema.
In questa sezione si introduce la nozione di path deformation come mappatura da
un intervallo di R nell’insieme dei percorsi.
Un sistema anolonomo di dimensione n è caratterizzato da un insieme di
k < n vettori di campo X1 (q), . . . , Xk (q) dove q ∈ C = Rn è la configurazione del
sistema. Per ogni configurazione q le velocità ammissibili del sistema è l’insieme
delle combinazioni lineari degli Xi (q) vettori di campo.
3.3. Reactive Path Deformation for Nonholonomic Mobile Robots [4]
48
Un percorso q(s) è una curva “smooth” nello spazio delle configurazioni
definito su un intervallo [0, S]. Un percorso è detto ammissibile se e solo se
esiste un vettore k -dimensionale u = (u1 , . . . , uk ) definito su [0, S] e tale che:
∀s ∈ [0, S]
q̇(s) =
k
X
ui (s)Xi (q(s))
(3.20)
i=1
Chiamiamo path deformation una mappatura da un sottosistema [0, S] × [0, +∞]
di R2 dello spazio delle configurazioni del sistema:
(s, τ ) → q(s, τ )
per ogni valore di τ e s, s → (s, τ ) è un percorso.
s → (s, 0) è chiamato
percorso iniziale. Siamo interessati in deformazioni q(s, τ ) composte da solo
percorsi ammissibili. Cosı̀ le deformazioni soddisfano ai seguenti vincoli: esiste
un vettore k -dimensionale u = (u1 , . . . , uk ) definito su [0, S] × [0, +∞] tale che
∀(s, τ ) ∈ [0, S] × [0, +∞]
k
X
∂q
(s, τ ) =
ui (s, τ )Xi (q(s, τ ))
∂s
i=1
(3.21)
per ogni valore di τ e s, s → u(s, τ ) è la funzione di ingresso del percorso
s → q(s, τ ).
Proprio come ogni percorso è unicamente definito dalla
configurazione iniziale e le funzioni di ingresso, cosı̀ una deformazione del percorso
è unicamente definita dalla configurazione iniziale q(0, τ ) di ogni suo percorso e
dalle funzioni di ingresso ui (s, τ ).
Differenziando la 3.21 otteniamo una relazione tra le variazioni degli ingressi
∂u
∂τ
e l’infinitesima deformazione di percorso
deformazione τ :
k
X
∂ 2q
(s, τ ) =
∂s∂τ
i=1
µ
∂q
∂τ
al crescere del parametro di
¶
∂ui
∂Xi
∂q
(s, τ ) Xi (q (s, τ )) + ui (s, τ )
(q (s, τ ))
(s, τ )
∂τ
∂q
∂τ
(3.22)
3.3. Reactive Path Deformation for Nonholonomic Mobile Robots [4]
49
Chiamiamo rispettivamente input perturbations e direction of deformation i
seguenti vettori di funzioni:
∆ ∂u
∂τ
(s, τ )
∆ ∂q
∂τ
(s, τ )
v (s, τ ) =
η (s, τ ) =
con queste notazioni la precedente equazione diviene:
η̇ (s, τ ) = A (s, τ ) η (s, τ ) + B (s, τ ) v (s, τ )
doveη̇ =
∂η
∂s
(3.23)
e A e B sono rispettivamente matrici n × n e n × k:
A (s, τ ) =
k
X
ui (s, τ )
i=1
∂Xi
(q (s, τ ))
∂q
B (s, τ ) = (X1 (q (s, τ )) . . . Xk (q (s, τ )))
In accordo con la 3.23 la derivata del percorso rispetto a τ è in relazione con gli
ingressi di perturbazione attraverso un sistema dinamico lineare. Questo sistema
è infatti il sistema linearizzato di 3.20. Per un dato percorso q(s, τ ) di ingresso
u(s, τ ), per ogni ingresso di perturbazione v(s, τ ) e per ogni condizione iniziale
η0 = η0 (0, τ ) possiamo integrare la 3.23 rispetto a s per avere la corrispondente
direzione di deformazione η(s, τ ).
Un processo di deformazione del percorso per un sistema anolonomo può cosı̀
essere considerato come un sistema dinamico di controllo dove:
- τ è il tempo
- s → q(s, τ ) è lo stato
- l’ingresso è una coppia (η0 , s → q(s, τ ))
3.3. Reactive Path Deformation for Nonholonomic Mobile Robots [4]
50
Il metodo di deformazione del percorso deve calcolare in ogni momento τ
un vettore η0 e una funzione s → v(s, τ ) su [0, S] in modo che il processo di
deformazione raggiunga il goal specificato. Il goal è espresso in termini di minimo
valore potenziale sull’insieme dei percorsi possibili. Il valore del potenziale di un
percorso è definito dall’integrazione lungo lo stesso di un campo potenziale U
sullo spazio delle configurazioni. Definiamo V(τ ) il valore potenziale del percorso
s → q(s, τ ):
ZS
∆
U (q (s, τ ))ds
V (τ ) =
0
Se il l’obiettivo da rangiungere è evitare l’ostacolo il campo potenziale dello
spazio delle configurazioni è definito in modo che il suo valore è alto per
configurazioni vicine all’ostacolo e basso per configurazioni lontane. Cosı̀ percorsi
vicini all’ostacolo hanno alti valori potenziali e viceversa per quelli lontani.
La variazione del potenziale del percorso rispetto a τ è relazionato a η(s, τ )
tramite la seguente equazione:
dV
∆
(τ ) =
dτ
ZS
dU
(q (s, τ ))T η (s, τ ) ds
dq
0
Il principio del metodo di deformazione del percorso consiste nello scegliere
(η0 , v(s, τ )) in modo che
3.3.2
dV
dτ
(τ ) sia negativo.
Algoritmo di Nonholonomic Path Deformation
Partendo da un percorso ammissibile q(s, 0), l’algoritmo iterativamente calcola
una sequenza di percorsi ammissibili s → q(s, τj ) per valori discreti τj di τ dove
j è un intero. Ad ogni iterazione dell’algoritmo, una direzione di deformazione
3.3. Reactive Path Deformation for Nonholonomic Mobile Robots [4]
51
η(s, τj ) è generata basandosi sullo spazio delle configurazioni del campo potenziale
U e un nuovo percorso q(s, τj+1 ) è calcolato come segue:
q (s, τj+1 ) = q (s, τj ) + ∆τj η (s, τj )
(3.24)
τj+1 = τj + ∆τj
(3.25)
dove ∆τj è il passo di discretizzazione.
Le variabili di controllo del processo di deformazione del percorso sono gli
ingressi di verturbazione v e le condizioni iniziali η0 . s → v(s, τj ) fa parte di
un infinito-dimensionale spazio di funzioni vettoriali appartenenti a ∈ C ∞ ([0, S])
definiti su [0, S].
Per semplificare il controllo di deformazione del percorso,
scegliamo di restringerev su un sottospazio di funzioni di dimensioni finite. Sia p
un intero positico. Definiamo e1 , . . . , ep come un insieme di funzioni vettoriali
∈ C ∞ ([0, S]) di dimensione k definite su [0, S]:
ei : [0, S] → Rk
Varie scelte sono possibili per gli ei . Per ognuna di queste funzioni definiamo
E1 (s, τj ) come soluzione di 3.23 con condizione iniziale η0 = 0 e con ei (s) come
ingresso:
Ėi (s, τj ) = A (s, τj ) Ei (s, τj ) + B (s, τj ) ei (s)
(3.26)
Ei (0, τj ) = 0
(3.27)
3.3. Reactive Path Deformation for Nonholonomic Mobile Robots [4]
52
Se restringiamo v(s, τj ) all’insieme di funzioni aventi base:
v (s, τj ) =
p
X
λi ei (s)
(3.28)
i=1
dove λ = (λ1 , . . . , λp ) ∈ Rp è un vettore, come 3.23 è lineare, la direzione di
deformazione η corrispondente a v è la stessa combinazione lineare di solezione
Ei
η (s, τj ) =
p
X
λi Ei (s, τj )
(3.29)
i=1
Usando questa restrizione gli ingressi di perturbazione v sono definiti
unicamente dal vettore λ.
Si vuole che il pocesso di deformazione non modifichi le configurazioni iniziale
e del goal del percorso. Si impongono cosı̀ le seguenti condizioni al contorno:
∀j > 0,
q (0, τj ) = (0, 0)
q (S, τj ) = (S, 0)
Questi vincoli sono equivalenti a:
∀j > 0,
η (0, τj ) = 0
(3.30)
η (S, τj ) = 0
(3.31)
l’equazione 3.27 e la 3.29 ci assicurano che la 3.30 è soddisfatta. La 3.31
insieme alla 3.29 diventano un vincolo lineare sul vettore λ:
Lλ = 0
(3.32)
3.3. Reactive Path Deformation for Nonholonomic Mobile Robots [4]
53
dove L è una matrice n × p le cui colonne sono le Ei (S, τj ):
L = (E1 (S, τj ) . . . Ep (S, τj ))
Come detto prima un campo potenzialeU è definito sullo spazio delle
configurazioni. Questo campo potenziale definisce una funzione potenziale V
sullo spazio dei percorsi tramite un’integrazione. Alla luce della 3.29 si ha che:
dV
dτ
=
(τj ) =
p
P
λi
i=1
RS
0
RS
0
dU
dq
dU
dq
(q (s, τj ))T η (s, τj ) ds
(3.33)
T
(q (s, τj )) Ei (s, τj ) ds
Si definiscono quindi i seguenti coefficienti:
ZS
∆
µi =
dU
(q (s, τj ))T Ei (s, τj ) ds
dq
0
Questi coefficienti rappresentano la variazione del potenziale del percorso indotta
da ogni direzione di deformazione Ei . Con questi coefficienti la 3.33 può essere
riscritta come segue:
p
X
dV
(τj ) =
λi µi
dτ
i=1
(3.34)
λi = −µi
(3.35)
Cosı̀ se imponiamo
otteniamo una deformazione η(s, τj ) che porta a soddisfare ai vincoli cinematici e
rende il potenziale decrescente. Infatti:
p
X
dV
(τj ) = −
µ2i ≤ 0
dτ
i=1
3.3. Reactive Path Deformation for Nonholonomic Mobile Robots [4]
54
Definiamo con λ0 questo valore di λ. Oltretutto λ0 soddisfa anche la 3.32.
La 3.32 afferma che l’insieme dei vettori λ che soddisfano le condizioni al
contorno è un sottospazio lineare di Rp . Definiamo λ e proiettiamo λ0 su questo
sottospazio:
¡
¢
λ̄ = Ip − L+ L λ0
dove L+ è la pseudo-inversa di L. Come LL+ L = L, λ soddisfa Lλ = 0. Ci si
chiede naturalmente se la direzione di deformazione dopo la proiezione continua
a rendere il potenziale decrescente. La seguente proposizione ci da una risposta:
Proposition1 :per ogni η ∈ Rp e ogni matrice n × p L, se λ0 = −µ e
λ = (Ip − L+ L)λ0 , then:
µT λ̄ < 0
Ricordiamo che la 3.24 è un’approssimazione al primo ordine rispetto a τ . Per
questa ragione ∆τj kηk∞ con kηk∞ , maxs∈[0,S] kη(s, τj )k deve essere piccolo. ∆τj
è cosı̀ scelto in modo che ∆τj kηk∞ è limitato superiormente da un valore positivo
dato ηmax . Il modo in cui sono scelti i λi in 3.35 non è ottimo a tal proposito.
Infatti, l’obiettivo che vogliamo raggiungere ad ogni iterazione è quello di creare
un percorso potenziale V decrescente il più possibile per |ηk∞ costante.
L’idea è quella di esprimere η in una base ortonormale. Per fare ciò si applica
l’ortonormalizzazione di Gram-Schmidt ai vettori (E1 , . . . , Ep ) in modo
da avere una base ortonormale (F1 , . . . , Fp ). A questo punto:
η (s, τj ) =
p
X
λ⊥
i Fi (s, τj )
i=1
e la 3.34 diventa
p
X
dV
⊥
(τj ) =
λ⊥
i µi
dτ
i=1
(3.36)
3.3. Reactive Path Deformation for Nonholonomic Mobile Robots [4]
con
ZS
∆
µ⊥
i =
55
dU
(q (s, τj ))T Fi (s, τj ) ds
dq
0
Definiamo P la matrice cambiamento di coordinate che ha come colonne i vettori
delle coordinate di Fj espresse in (E1 , . . . , Ep ). L’espressione di η nella base
(E1 , . . . , Ep ) è data da
λ = P λ ⊥ = P P T λ0
(3.37)
Per soddisfare la condizione al contorno 3.31 nella base ortonormale creata si
ha che:
¡
¢
λ̄ = Ip − P (LP )+ L P P T λ0
L’approssimazione 3.24 induce un effetto indesiderato: dopo molte iterazioni i
vincoli anolonomi non sono più soddisfatti e il percorso diviene non ammissibile.
Questo effetto viene chiamato nonholonomic constraint deviation ( deviazione
dei vincoli anolonomi). Bisogna quindi correggere tale deviazione; per portare
a termine tale problema si procede quindi ad una estenzione del sistema
dinamico.
Si aggiungono per ogni configurazione q, n − k vettori di campo
(Xk+1 (q), . . . , Xn )(q) ai k vettori di campo di controllo del sistema in modo che
(X1 (q), . . . , Xn )(q) sia base di Rn . Definiamo il sistema esteso come il sistema
controllato dai vettori di campo:
q̇ =
n
X
ui Xi (q)
(3.38)
i=1
Il sistema 3.38 non è soggetto ad alcun vincolo cinematico.
Un percorso
q(s) di sistema 3.38 è ammissibile per il sistema 3.20 se e solo se per ogni
j ∈ {k + 1, . . . , n} e ogni s ∈ [0, S], uj (s) = 0.
3.3. Reactive Path Deformation for Nonholonomic Mobile Robots [4]
56
Da ora indichiamo con u(s, τ ) = (u1 (s, τ ), . . . , un (s, τ )) la funzione di ingresso
del sistema 3.38 e con v(s, τ ) = (v1 (s, τ ), . . . , vn (s, τ )) le perturbazioni delle
precedenti funzioni di ingresso:
∀i ∈ {1, . . . , n} ,
vi (s, τ ) =
∂ui
(s, τ )
∂τ
La relazione tra gli ingressi di perturbazione v(s, τ ) e la direzione di deformazione
η(s, τ ) è:
η̇ (s, τ ) = Ā (s, τ ) η (s, τ ) + B̄ (s, τ ) v̄ (s, τ )
(3.39)
ma ora le due matrici A(s, τ ) e B(s, τ ) sono entrambe matrici n × n:
Ā =
n
X
i=1
ui
∂Xi
(q)
∂q
and
¡
¢
B̄ = BB ⊥
(3.40)
dove B⊥ = {Xk+1 (q), . . . , Xn (q)} è la matrice le colonne della quale sono i
vettori addizionali di campo. Con ciò la 3.39 può essere riscritta come segue:
η̇ (s, τ ) = Ā (s, τ ) η (s, τ ) + B̄ (s, τ ) v (s, τ ) + B ⊥ (s, τ ) v ⊥ (s, τ )
(3.41)
dove v⊥ (s, τ ) = (vk+1 (s, τ ), . . . , vn (s, τ ) le quali sono le derivate rispetto a τ
delle funzioni di ingresso (uk+1 (s, τ ), . . . , un (s, τ ). Si vuole che le funzioni di
ingresso tendano a 0 al crescere di τ , poniamo cosı̀:
∀i ∈ {k + 1, . . . , n} ,
vi (s, τ ) = −αui (s, τ )
dove α è un numero costante positivo. Questo implica che al crescere di τ ,
∀s ∈ [0, S] ,
ui (s, τ ) = e−ατ ui (s, 0)
3.3. Reactive Path Deformation for Nonholonomic Mobile Robots [4]
e quindi l’ingresso converge a zero esponenzialmente.
57
Si indichi con η1 la
corrispondente direzione di deformazione per τ = τj :
η̇1 (s, τj ) = Ā (s, τj ) η1 (s, τj ) + B ⊥ (s, τj ) v ⊥ (s, τj )
(3.42)
η1 (0, τj ) = 0
(3.43)
Si restringono quindi le funzioni di ingresso (u1 , . . . , uk ) al sottospazio di
dimensione finita delle funzioni base di (e1 , . . . , ep ) e calcoliamo λ = (λ1 , . . . , λp )
in accordo con la 3.37. Si indica con η2 la direzione di deformazione corrispondente
a questi coefficienti:
η2 (s, τj ) =
p
X
λi Ei (s, τj )
i=1
dove ora gli Ei sono soluzioni del sistema 3.39:
Ėi (s, τj ) = Ā (s, τj ) Ei (s, τj ) + B (s, τj ) ei (s)
(3.44)
Ei (0, τj ) = 0
(3.45)
Dato che il sistema 3.41 è lineare, la deformazione ottenuta sommando gli
ingressi di perturbazione v e v⊥ è la somma di η1 e η2 . Vogliamo sempre che la
deformazione non cambi la configurazione iniziale e finale. Le condizioni 3.30 e
3.31 divengono:
η1 (0, τj ) + η2 (0, τj ) = 0
η1 (S, τj ) + η2 (S, τj ) = 0
La prima è sempre soddisfatta. La seconda può essere riscritta come un sistema
affine di equazioni sui parametri (λ1 , . . . , λp ):
η2 (S, τj ) = Lλ = −η1 (S, τj )
Il vettore utile a soddisfare la 3.46 tramite l’ortonormalizzazione è:
¡
¢
λ̄ = −P (LP )+ η1 (S, τj ) + Ip − P (LP )+ L λ
(3.46)
3.3. Reactive Path Deformation for Nonholonomic Mobile Robots [4]
58
Figura 3.6: Modello Simulink per l’algoritmo di deformazione
mentre la direzione di deformazione è:
η (s, τ ) =
p
X
λ̄i Ei (s, τj ) + η1 (s, τj )
i=1
che soddisfa le condizioni al contorno 3.30 e 3.31 e rende decrescenti le componenti
(vk+1 , . . . , vn ) delle velocità lungo i vettori di campo addizionali.
3.3.3
Implementazione in MatLab
Per l’implementazione dell’algoritmo in MatLab del 3.3.2 si è seguito lo stesso
metodo dell’implementazione del pianificatore anolonomo. Lo schema Simulink
del deformatore di traiettorie è rappresentato in figura 3.6. In questo caso lo
schema è formato da:
• un blocco ( S-Function) che contiene l’intero corpo del programma di
Reactive Path Deformation ( vedi appendice);
• due blocchi di uscita per la visualizzazione grafica della posizione (x,y) e
3.3. Reactive Path Deformation for Nonholonomic Mobile Robots [4]
59
l’orientamento ( XY Graph e Scope) e uno per la verifica numerica della
configurazione raggiunta ( Display)
Si dà ora una breve descrizione del codice MatLab dell’implementazione
dell’algoritmo di deformazione: la funzione di inizializzazione mdlInitializeSizes
contiene, oltre l’inizializzazione dei vari vettori delle configurazioni, la posizione
degli ostacoli e la definizione delle costanti presenti nell’algoritmo, che in questo
caso sono state poste pari a:
• a = α = 10 e U0 = ui (s, 0) = 0.001: queste costanti sono utili al calcolo
dell’ingresso addizionale per la correzione delle deviazioni anolonome;
• d0 = 0.0001 e d1 = 0.6:
utili per il calcolo dei potenziali relativi agli
ostacoli.
Questi campi potenziali sono dati da:
vi (M ) =
1
d+d0
vi (M ) =
1
d1 +d0
+
d
(d1 +d0 )2
+
se 0 ≤ d ≤ d1
d1
(d1 +d0 )2
se d > d1
dove M è un punto del piano, d è la distanza tra M e Pi che rappresenta un
obstacle point e d0 < d1 sono delle costanti. Sia fi (M) = −∇vi (m) la forza
nel piano derivante da tali potenziali. La norma di questa campo di forza
rispetto a Pi è:
kfi (M )k =
1
(d+d0 )2
−
1
(d1 +d0 )2
se 0 ≤ d ≤ d1
(3.47)
kfi (M )k = 0 se d > d1
Il campo potenziale totale è definito come la somma dei campi potenziali
relativo ad ogni obstacle point:
U (q) =
X
i
Ui (q)
3.3. Reactive Path Deformation for Nonholonomic Mobile Robots [4]
60
Il gradiente del campo potenziale, relativo al corpo dell’uniciclo, è dato da:
∂Ui
∂R
(q) = −fi (R)
∂q
∂q
• etamax = ηmax = 0.3 che indica la massima deformazione della traiettoria
per ogni iterazione del ciclo di deformazione del percorso.
Dopo le varie inizializzazioni si passa alla funzione mdlDerivatives nella quale
l’algoritmo di Reactive Path Deformation è applicata ad una traiettoria rettilinea
di configuazione iniziale qi = (−1, 0, 0) e finale qf = (1, 0, 0).
Lo spazio degli ingressi è di dimensione 2. Sono state scelte per il sottospazio
finito delle funzioni di perturbazione degli ingressi una base di un sottospazio di
dimensione 6 della serie troncata di Fourier :
e1 (s) = (1, 0)T
e2 (s) = (0, 1)T
¡ ¡ ¢ ¢T
,0
e3 (s) = cos 2πs
S
¡
¡ ¢¢T
e4 (s) = 0, cos 2πs
S
¡ ¡ 2πs ¢ ¢T
e5 (s) = sin S , 0
¡
¡ ¢¢T
e6 (s) = 0, sin 2πs
S
Vediamo alcune simulazioni Simulink dell’algoritmo nelle figure 3.7 e 3.8.
Nella figura 3.7 si notano due traiettorie che indicano come c’è stato il bisogno
di eseguire due iterazioni dell’algoritmo affinchè il percorso risultasse libero da
ostacoli. Le circonferenze blue indicano un area intorno agli obstacle point di
0.2 m che rappresentano un area in cui non deve esserci la presenza di alcuna
configurazione del robot dato che queste sono riferite al centro del Magellan Pro
il quale ha un raggio di 0.182 m. Nella figura 3.8 i due percorsi indicano le
3.3. Reactive Path Deformation for Nonholonomic Mobile Robots [4]
1
0.8
0.6
0.4
0.2
0
−0.2
−0.4
−0.6
−0.8
−1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Figura 3.7: Deformazione di traiettoria rettilinea con un ostacolo
1
0.8
0.6
0.4
0.2
0
−0.2
−0.4
−0.6
−0.8
−1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Figura 3.8: Deformazione di traiettoria rettilinea con due ostacoli
61
3.4. Unione dei due algoritmi ( 3.2 e 3.3)
62
deformazioni relative al primo ostacolo ( percorso rosso) e rispetto ad entrambi
dopo che il robot ha raggiunto una configurazione ad una distanza uguale a 0.6 m
dal secondo obstacle point e quindi ha nuovamente deformato la traiettoria anche
in relazione alla sua presenza( percorso rosso scuro).
3.4
Unione dei due algoritmi ( 3.2 e 3.3)
Dopo aver implementato i due algoritmi separatamente, questi sono stati uniti
in un unico algoritmo di pianificazione e deformazione. Si è usato lo stesso
schema Simulink del Reactive Path Deformation cambiando il programma della
S-Function. Infatti in questo caso nella funzione mdlInitializeSizes oltre alle
definizioni delle varie costanti e all’inizializzazione delle varie matrici utilizzate è
stato inserito l’algoritmo di pianificazione del moto per robot anolonomi illustrato
in 3.2. Quindi quando si entra nella mdlDerivatives la traiettoria è già pianificata
e comincia immediatamente la sua esecuzione fin quando non viene riscontrata la
presenza di un ostacolo sul percorso tracciato. A questo punto come già spiegato
in 3.3 interviene l’algoritmo di deformazione reattiva deformando il percorso
pianificato fin tanto che non è lontano da ostacoli o entra nuovamente in collisione
con nuovi ostacoli prima non percepiti. Andiamo ora a vedere delle simulazioni
eseguite con le seguenti costanti:
• a = α = 10
• U0 = ui (s, 0) = 0.001.
• d0 = 0.0001
• d1 = 0.6.
3.4. Unione dei due algoritmi ( 3.2 e 3.3)
63
1
0.8
0.6
0.4
0.2
0
−0.2
−0.4
−0.6
−0.8
−1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Figura 3.9: Deformazione di traiettoria pianificata in presenza di un solo obstacle
point: configurazione finale qf = (1, 0, π)
• etamax = ηmax = 0.05.
Le simulazioni del metoodo sono illustrate nelle figure 3.9 3.10 3.11 3.12 per
varie posizioni degli obstacle point.
3.4. Unione dei due algoritmi ( 3.2 e 3.3)
64
2
1.5
1
0.5
0
−0.5
−1
−1.5
−2
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
Figura 3.10: Deformazione di traiettoria pianificata in presenza di un solo obstacle
point: configurazione finale qf = (2, 0, π)
2.5
2
1.5
1
0.5
0
−0.5
0
0.5
1
1.5
2
Figura 3.11: Deformazione di traiettoria pianificata in presenza di tre obstacle point:
configurazione finale qf = (2, 2, 0)
3.4. Unione dei due algoritmi ( 3.2 e 3.3)
65
2
1.5
1
0.5
0
−0.5
−1
−1.5
−2
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
Figura 3.12: Deformazione di traiettoria pianificata in presenza di due obstacle point:
configurazione finale qf = (1, 2, 1)
Capitolo 4
Controllo in feedback sul
cammino pianificato
In questo capitolo viene trattato il problema dell’inseguimento di una traiettoria (
trajectory tracking ). L’obiettivo è quello di trovare una legge di controllo tale
che un punto di riferimento sul robot mobile insegua una traiettoria nello spazio
Cartesiano partendo da una configurazione iniziale1 . Si procede alla formulazione
del problema. Considerando un veicolo di riferimento del tipo uniciclo le cui
equazioni sono:


ẋ = vr cos θr


 r




1
ẏr = vr sin θr
θ̇r = wr
La configurazione iniziale non necessariamente deve appartenere alla traiettoria di
riferimento
66
4.1. Dynamic Feedback Linearization [5]
67
Si indichi lo stato del veicolo da controllare con:
 
x
 
 
z= y 
 
θ
e lo stato del veicolo di riferimento con:


xr




zr =  yr 


θr
Il problema dell’inseguimento di traiettoria consiste nel trovare una legge di
controllo a controreazione:



v
w
 = k (z, zr , vr , wr )
tale che si abbia:
lim (zr (t) − z (t)) = 0
t→∞
per qualsiasi configurazione iniziale z(0).
4.1
Dynamic Feedback Linearization [5]
Il modello cinematico dell’uniciclo non può essere trasformato in un sistema
lineare e controllabile usando un feedback statico dallo stato. Una soluzione
alternativa consiste nel ricorso al feedback dinamico. La linearizzazione del
modello risulta infatti possibile aumentando lo spazio delle variabili di stato. In
4.1. Dynamic Feedback Linearization [5]
68
particolare dato il modello dell’uniciclo:


 ẋ = v cos θ


ẏ = v sin θ




θ̇ = w
consideriamo un integratore aggiuntivo la cui variabile di stato è denotata da ξ:
ξ˙ = u1
Si definisca poi la seguente legge di controllo:

 v=ξ
 w=u
2
che consiste nel porre l’integratore sull’ingresso dell’uniciclo. Il sistema aggiornato
risulta:



ẋ = ξ cos θ





 ẏ = ξ sin θ

 θ̇ = u2





 ξ˙ = u1
(4.1)
effettuando ora le derivate delle velocità cartesiane si ha:
ẍ = ξ˙ cos θ − ξ sin θθ̇
ÿ = ξ˙ sin θ + ξ cos θθ̇
Tenendo conto della 4.1 si ha usando la forma matriciale:
  


ẍ
cos θ −ξ sin θ
u
 =
 1 
ÿ
sin θ ξ cos θ
u2
si noti che:

det 

cos θ −ξ sin θ
sin θ
ξ cos θ
=ξ
(4.2)
4.1. Dynamic Feedback Linearization [5]
69
La 4.2 mostra la relazione lineare che si viene ad instaurare nel sistema 4.1
tra le derivate seconde delle componenti cartesiane e gli ingressi.
Questa
relazione cade in singolarità solo per ξ = 02 , indipendentemente dalle variabili
di stato dell’uniciclo. Introdotte due variabili ausiliarie γ1 eγ2 , possiamo operare
un’inversione della cinematica del secondo ordine descritta dalla 4.2:
 
−1 
 



cos θ sin θ
γ
cos θ −ξ sin θ
u
γ
  1 =
 1 =
 1 
γ2
− sinξ θ cosξ θ
sin θ ξ cos θ
u2
γ2
(4.3)
Il sistema esteso è cosı̀ completamente linearizzato in una forma controllabile
e descritto da due catene di doppi integratori:
ẍ = γ1
ÿ = γ2
A questo punto data la traiettoria del veicolo di riferimento (xd , yd ), il problema
del trajectory tracking risulta di facile soluzione.
Al fine di ottenere una
convergenza asintotica a zero degli errori cartesiani di velocità e posizione
possiamo imporre:
γ1 = ẍr + kd1 (ẋr − ẋ) + kp1 (xr − x)
(4.4)
γ2 = ÿr + kd2 (ẏr − ẏ) + kp2 (yr − y)
con kdi > 0 e kpi > 0. Il risultante compensatore dinamico è:
ξ˙ = γ1 cos θ + γ2 sin θ
v=ξ
w=
(4.5)
γ2 cos θ−γ1 sin θ
ξ
Lo stato del compensatore dinamico deve essere inizializzato al valore
ξ(0) = vd (0). Questo garantisce l’esatto inseguimento della traiettoria per un
dato stato iniziale del robot.
2
cioè quando l’uniciclo è fermo
4.2. Simulazioni MatLab con DFL
70
1
0.8
0.6
0.4
0.2
0
−0.2
−0.4
−0.6
−0.8
−1
−1
Figura 4.1:
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
Controllo via DFL sul cammino pianificato:
1
configurazione finale
qf = (1, 0, π)
4.2
Simulazioni MatLab con DFL
Questo tipo di controllo è stato implementato nell’algoritmo di pianificazione
e deformazione per permettere al robot di eseguire correttamente la traiettoria
deformata. Si è quindi posto:
• ξ(0) =
p
dx2 + dy2 ;
• kp = 100
• kd =
√
201
I risultati ottenuti dalle simulazioni sono rappresentati in figura 4.1 4.2 4.3
4.4, dove il cammino verde rappresenta le configurazioni del robot che eseguono
il trajectory tracking sul cammino deformato.
4.2. Simulazioni MatLab con DFL
71
2
1.5
1
0.5
0
−0.5
−1
−1.5
−2
−2
Figura 4.2:
−1.5
−1
−0.5
0
0.5
1
1.5
Controllo via DFL sul cammino pianificato:
2
configurazione finale
qf = (2, 0, π)
2
1.5
1
0.5
0
−0.5
−1
−1
Figura 4.3:
qf = (2, 2, 0)
−0.5
0
0.5
1
1.5
2
Controllo via DFL sul cammino pianificato:
2.5
configurazione finale
4.2. Simulazioni MatLab con DFL
72
2
1.5
1
0.5
0
−0.5
−1
−1.5
−2
−2
Figura 4.4:
qf = (1, 2, 1)
−1.5
−1
−0.5
0
0.5
1
1.5
Controllo via DFL sul cammino pianificato:
2
configurazione finale
Bibliografia
[1] G. Campion, G. Bastin, and B. Dandrea Novel, Structural properties and
classification of kinematic and dynamic models of wheeled mobile robots, IEEE
Transactions on Robotics and Automation 12 (1996), no. 1, 47–62.
[2] L. Freda, Controllo del moto del robot magellan pro con applicazione
all’esplorazione sensoriale di ambienti ignoti, Tesi di Laurea in Ingegneria
Informatica, Università di Roma la Sapienza, AA 2002-2003.
[3] iRobot, Mobility robot integration software user’s guide, iRobot, 2001.
[4] F. Lamiraux, D. Bonnafous, and O. Lefebvre, Reactive path deformation for
nonholonomic mobile robots, IEEE Transactions on Robotics 20 (2004), no. 6,
967–977.
[5] G. Oriolo, A.D̃e Luca, and M. Vendittelli, Wmr control via dynamic
feedbacklinearization: Design, implementation and experimental validation,
IEEE Transactions on Control System Technology 10 (2002), no. 6, 835–852.
[6] Giuseppe Oriolo, Control of nonholonomic systems, 2004, Dispense del corso
di Dottorato in Ingegneria dei sistemi,Università di Roma ”La Sapienza”.
73
Scarica

Pianificazione del moto per robot mobili anolonomi