Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
CONTROLLO
Parleremo di alcune tecniche di controllo per sistemi sia olonomi che anolonomi. Il primo argomento
è il tracking control dell’uniciclo, dove tracking control altro non vuol dire che “inseguimento di
traiettoria”. Il nostro scopo è sempre l’inseguimento di una traiettoria desiderata nello spazio
operativo, per farlo serve intanto una traiettoria desiderata: da robotica sai che con “traiettoria” si
intende l’unione di un percorso geometrico con una legge oraria che ne descrive la percorrenza. Il
percorso è spesso parametrizzato con un’ascissa curvilinea. Questo vale anche in robotica mobile.
A livello di percorso si ha una posizione desiderata descritta con l’ascissa curvilinea e un’orientazione
desiderata (anch’essa descritta con un’ascissa curvilinea):
()
̲ = ̲
{ + = ()
⏟
()
=
⏟
Come detto la traiettoria è l’unione tra posizione/orientazione desiderata e legge oraria (la legge
oraria ha velocità continua). Ricorda che la traiettoria la definiamo noi, quindi anche con controllori
perfetti se la traiettoria è definita male ecco che è impossibile seguirla (esempio di un autobus che
curvi molto molto stretto, anche con un autista bravissimo non ce la farà mai).
̇ () ̈ ()
E’ obbligatorio che sia continua, ma sarebbe anche meglio se lo fosse, così da non avere
= ⃛())
“jerk” desiderato infinito ( che provocherebbe scossoni e immense forze d’inerzia.
Anche il percorso a livello geometrico è importante, è bene che non abbia discontinuità: per
esempio è bene NON unire un tratto rettilineo con una curva a raggio costante (ciò creerebbe un
jerk infinito sull’accelerazione laterale). E’ il classico contraccolpo in ambito ferroviario: la forza
centrifuga scala col raggio della curva, quindi una discontinuità sul raggio di curvatura genera una
discontinuità sulla forza centrifuga (che appunto è laterale).
Quindi cosa si fa? I percorsi industriali sono generalmente formati da eventuali tratti rettilinei
(curvatura nulla) collegati a tratti a curvatura costante tramite tratti di raccordo a curvatura
variabile. Una curva molto usata per il collegamento è l’arco di clotoide che ha una curvatura
variabile (linearmente o meno) con l’ascissa s. La clotoide si usa anche per collegare due tratti diversi
a curvatura costante.
Un’altra buona linea guida è quella di definire separatamente percorso e legge oraria perché ad
esempio se mi devo fermare in un punto il percorso va bene e modifico (ripianifico) solo la legge
oraria. Cioè, io progetto geometria e legge separati ma ecco che se un giorno il robot deve fare una
sosta (tipo fare una scansione) ecco che il percorso rimane tale ma cambia la legge oraria, quindi
invece di ripianificare entrambi è comodo riscrivere solo la legge oraria.
- TRACKING CONTROL DELL’UNICICLO
Sappiamo già che l’uniciclo è parente di veicoli industriali reali; quindi, comprendere la teoria dei
controlli con questo esempio aiuterà ad avvicinarsi allo studio di veicoli più complessi. Come detto,
vogliamo percorso e legge oraria separati, quindi come studiamo l’inseguimento di traiettoria?
3
ℝ :
, : ̲ = [ ] ; .
. . : ̲ = [ ] ; .
Impostiamo il problema pensando all’uniciclo reale che insegue un uniciclo virtuale che idealmente
viaggia seguendo sempre i parametri desiderati. Idealmente vorremmo che l’uniciclo vero si
, , . )
sovrapponga a quello virtuale. In altre parole, hai il veicolo inseguitore (quello reale,
, , ,
che vuole sovrapporsi al veicolo di riferimento (virtuale, cioè descritto dalla terna
desiderata). ,
Graficamente si ha una terna fissa
l’uniciclo vero e da un’altra parte quello di
riferimento. La cinematica del sistema è nota:
colleghiamo una terna solidale al veicolo vero
(̲ ) e una terna solidale al veicolo virtuale
(̲ ). Come descriviamo rispetto alla
terna fissa i veicoli? ,
Il veicolo vero ha coordinate e coordinata
.
angolare Idem con il veicolo di riferimento
, , .
che sarà descritto dalle coordinate
E’ chiaro che ci sarà un certo errore tra le due pose ed è comodo definirlo in
coordinate relative. ̲
Chiamiamo la posizione su di “ ”, e analogamente “ ” come la
1 2
posizione su , infine ci sarà chiaramente un errore di posa, chiamiamo infatti “ ” l’angolo tra
3
e . Questi tre errori saranno l’errore definito in coordinate relative: lo scopo del tracking control
è annullare questi 3 valori.
Quindi riassumendo abbiamo:
1
. . . . : ̲ = [ ] è
2
′
.
: = − .
3
Lo scopo finale è quello di sintetizzare due comandi cinematici all’uniciclo che facciano seguire bene
ė
la traiettoria (cioè i due comandi ). Vediamo ora di scrivere ed in funzione delle grandezze
1 2
cinematiche.
Definiamo:
̲ = ; = . .
̲
Per parlare di rototraslazioni è comodo usare le coordinate omogenee, con queste si ha:
1
̃ = [ ] ;
̃ = [ ] ;
̃ = [ ] ;
̲ ̲ ̲
2
1 1 1
Dove il segno di tilde indica che il vettore viene scritto in coordinate omogenee. Questi vettori si
collegano tramite le matrici di rototraslazione.
−1
̃ =
̃ →
̃ =
̃
̲ ̲ ̲ ̲
Ovvero se riesco a scrivere la matrice siamo a posto. Da robotica sai che:
̲ ̲
̲
= = [ ]
0 0 1 ̲.
Dove in alto a destra poniamo la posizione del veicolo rispetto alla terna fissa, ovvero Può essere
invertita? Certo, la formula è fissa: 0
10 10
−1 [ −
̲
10 −1
= = ] ;
1
0 0 1
= ̲ − ̲ ̲
̲ −̲ ̲ ̲
1
̲
:
̃ = [ ] [ ] = {
= ̲ − ̲
− ̲
̲ ̲ ̲
̲ ̲ 2
1
⏟ = −
0 0 1 3
−1
Questo è quello che chiamiamo “Stato Errore”, ovvero stiamo descrivendo il sistema tramite lo stato
[ ].
del sistema definito nello spazio di stato errore È l’errore tra i due veicoli scritto in terna
1 2 3
veicolo (reale).
Il nostro scopo è ora quello di progettare (“sintetizzare”) dei controlli tali per cui asintoticamente
questi errori vadano a zero. Ci sono vari modi ma noi usiamo il Metodo Diretto di Lyapunov.
Esso ci dice che dobbiamo trovare una funzione scalare (dello stato in questo caso) definita positiva
).
(chiamata “Candidata di Lyapunov” Imporremo poi che V̇ sia strettamente negativa, in questo
modo sappiamo che lo stato del sistema evolvendo finirà nell’origine. L’unico problema è che non
esiste una regola univoca per trovare la candidata, spesso si usano funzioni pseudo-energetiche
(ovvero funzioni che all’aspetto abbia similitudine con un’energia cinetica, tipo una forma
quadratica). Il tracking control è approfondito bene nel paper Kanaiama, 1989, “Tracking Control”.
La candidata che prendiamo (per buona) è:
1 12 22
( ) (1 ));
= + + − cos(e = .
3 3 3
2
Definita positiva vuol dire che V ha valore nullo solo per lo stato nullo, per tutti gli altri valori ha
valori positivi. Imporremo (tramite gli scalari che sintetizzeremo) che V̇ <0 per qualunque valore
temporale, in questo modo abbiamo garanzia di annullare asintoticamente (il più velocemente
,
possibile) ed .
1 2 3
Riassumendo, Lyapunov ci dice che abbiamo garantita l’asintotica stabilità (stabilità + errore
̇ < 0
convergente a zero) se (“V̇ definita negativa”). Si ha:
̇ )
= ̇ + ̇ + sin( ̇
1 1 2 2 3 3 3
Per annullarla come facciamo? Le ė non le abbiamo ancora, quindi dobbiamo calcolarle.
1 ̇ (̇
̇ = = ̲̇ ̲ − ̲̇ ̲ + ( )̲ − ̲ ̲ )̲ ̲ = ̲
̲̲̲ ̲̲̲
1
Il primo termine e il secondo sono stati trasposti prima di fare la derivata. Si ha poi la derivata del
versore che si fa con la formula di Poisson:
̲ )
̲ : = ̲̇ =
̲
̲ = (
̲ ̲
̲ ̲