3) ASSE E ANGOLO DI ROTAZIONE
Rotazione espressa attraverso un angolo e un vettore che appartengono allo stesso sistema.
TEOREMA DI ROTAZIONE DI EULERO: qualsiasi spostamento di un corpo rigido tale per cui un punto
sul corpo rigido rimane fisso, è equivalente a una singola rotazione su qualche asse che attraversa il
punto fisso.
Data una matrice di rotazione R, è possibile trovare l’angolo di rotazione e il vettore V attorno al
quale avviene la rotazione.
Dalla definizione di autovalori e autovettori: =
(costante), di rotazione, v= autovettore
=autovalore =matrice
Tutte le matrici ortonormali hanno almeno un autovalore mentre gli altri autovalori sono un
= 1,
numero complesso ( angolo di rotazione).
= ±
L’autovettore corrispondente all’autovalore è proprio quel vettore attorno al quale avviene la
= 1
rotazione: = → = 1 =
Gli autovalori portano al loro interno le informazioni relative all’angolo di rotazione.
= ±
FORMULA DI ROTAZIONE DI RODRIGUE: qualunque matrice di rotazione può essere espressa
attraverso la somma di 3 matrici: una matrice identià e due matrici antisimmetriche.
MATRICE SKEW (ANTISIMMETRICA): costituita da
valori sopra la diagonale principale opposti da quelli
che si trovano sotto la diagonale.
MATLAB
• tr2angvec: otteniamo a partire dalla matrice di rotazione un vettore e l’angolo di rotazione.
[theta, v] = tr2angvec(R);
• eig: permette di ricavare gli autovalori e gli auto vettori della matrice di rotazione
[e, v] = eig(R);
• angle: ci calcola il valore della fase di un angolo prendendo in ingresso un numero complesso (a + ib)
[theta] = angle(a + ib)
• angvec2r: ci fornisce la matrice di rotazione R dando in ingresso l’asse e l’angolo di rotazione
R = angvec2r(theta, [v]);
• plot3: esegue un plot di una linea sulle tre dimensioni, è un modo visivo per far vedere l’asse attorno cui
avviene la rotazione.
Gli SO e SE sono insiemi di matrici che hanno delle particolarità.
SO sono l’insieme delle matrici ortonormali e sono tutte le matrici 2x2 nel caso
SO(2) e matrici 3x3 nel caso SO(3). SO(2) in matlab è anche una classe, una sorta di funzione o insieme di
funzioni che ci consentono di fare delle osservazioni.
La funzione SO2 permette di creare un oggetto relativo alla matrice ortonormale che gli forniamo in ingresso
P = SO2(); %è l’elemento identità, una rotazione nulla
P = SO2(theta); %è un oggetto SO2 che rappresenta la rotazione di theta in radianti
P = SO2(theta, ‘deg’);
P = SO2(R); %è un oggetto formato dalla matrice di rotazione R 2x2
P = SO2(T); %è un oggetto formato dalla parte rotazionale della matrice di trasformazione omogenea T 3x3
P = SO2(Q); %è un oggetto che è la copia dell’oggetto Q
SO2 non è altro che una collezione di funzioni tali per cui quando abbiamo un certo x nell’operatore SO2 queste
funzioni vengono richiamate; quindi, c’è di mezzo la definizione di classe.
SO3→permette di creare un oggetto a partire dalla matrice di rotazione ortonormale di dimensioni 3x3.
In questo caso T è la parte rotazionale della matrice di trasformazione omogenea di dimensioni 4x4
4) QUATERNIONI Il quaternione è un numero costituito da una parte reale (s)
e 3 parti immaginarie (vettori).
Quindi questo numero è costituito da una parte scalare e
una parte vettoriale.
sono in forma Skew
→entrambe
Q1= matrice del quaternione 3x3; sulla diagonale si ha la parte reale, mentre
→matrici
Q2= matrice trasmutata del quaternione fuori dalla diagonale vi sono i valori delle parti vettoriali
messi in forma skew
Per descrivere la ROTAZIONE possiamo utilizzare un quaternione di MODULO UNITARIO:
Questo quaternione può essere scritto con una forma del tipo: = cos ( ) < ( ) >
2 2
Definiamo un quaternione in cui la parte vettoriale è il vettore attorno al quale avviene la rotazione,
mentre la parte scalare è legata all’angolo di rotazione che viene identificato dalla matrice di
rotazione.
Data una matrice di rotazione R, si può trovare l’angolo di rotazione e il vettore attorno al quale
avviene la rotazione: ~(, )
Quaternione: (, ) = = + + +
1 2 3
Condizione per rappresentare la rotazione tramite il quaternione: 12 22 32
2
|||| = + + + = 1
Considerando: : il suo modulo rimane comunque =1.
= cos ( ) < ( ) > →
2 2
Per rappresentare la rotazione, utilizziamo il quaternione unitario, una rotazione di un angolo
attorno al vettore unitario V nello spazio:
I tre quaternioni che rappresentano le 3 rotazioni di attorno ai rispettivi assi x,y e z:
, , Ψ
Quando moltiplichiamo i quaternioni stiamo sommando o componendo delle rotazioni; quindi se
vogliamo ruotare un vettore di un certo angolo basta moltiplicare tale vettore per il quaternione
relativo.
Il quaternione per la sequenza di rotazione Euleriana yaw-pitch-roll:
Quando dobbiamo fare una conversione da un sistema di riferimento all’altro possiamo utilizzare
l’algebra dei quaternioni:
dato un vettore in , calcolare lo stesso vettore in ∗
: = ∙ ∙
Anche w può essere scritto come un quaternione: = 0 + + +
1 2 3
MATLAB
• UnitQuaternion→ è un oggetto, rappresenta un metodo compatto per rappresentare una rotazione 3D
che presenta vantaggi computazionali, tra cui velocità e robustezza numerica.
q = UnitQuaternion(R); % con questa funzione otteniamo il quaternione
q.R %dato il quaternione ci stampa la matrice ortonormale
q.plot() % dato un quaternione lo possiamo plottare per vedere l’orientamento
• Inv → l’inverso di un quaternione corrisponde ad una rotazione inversa
S = inv(R);
ESPONENZIALE DI MATRICE
È possibile specificare una rotazione in termini di un angolo e un asse di rotazione:
[̂]
=
unitario parallelo all’asse di rotazione
̂ =vettore
di rotazione
=angolo che genera una matrice Skew
[
̂] =operatore
CONCLUSIONI:
- Come rappresentare punti e POSE in dimensioni 2D e 3D
- I punti sono rappresentati da vettori di coordinate rispetto a un sistema di riferimento
- Un insieme di punti che appartengono a un oggetto rigido può essere descritto da un sistema
di riferimento e i suoi punti costituenti sono descritti da spostamenti dal sistema di riferimento
dell’oggetto
- La posizione e l’orientamento di qualsiasi sistema di riferimento possono essere descritte
rispetto ad un altro sistema di riferimento mediante la loro pose relativa
- Le pose relative possono essere applicate in sequenza (composte o scomposte) e le pose
relative possono essere manipolate algebricamente
- Una regola algebrica importante è che la composizione non è commutativa→ l’ordine in cui le
pose sono applicate è importante MATLAB
• logm→data una matrice R calcola il logaritmo della matrice principale S.
Quando R è una matrice di rotazione relativa al singolo asse, la matrice S contiene informazioni
sull’angolo di rotazione.
S = logm(R);
• vex→fornisce in uscita il vettore corrispondente ad una matrice skewnes
V = vex(S);
• skew→crea una skew matrix a partire da un vettore V
S = skew(V);
• trlog→calcola il logaritmo di una matrice 3x3 di R(3x3) che è una matrice skew corrispondente al vettore
theta*w dove theta è l’angolo di rotazione e w(3x1) è un vettore unitario che indica l’asse di rotazione
S = trlog(R);
[theta, w] = trlog(R);
• expm→ data una matrice S, calcola l’esponenziale della matrice principale R
R = expm(S);
2° PARTE: TEMPO E MOVIMENTO
Nella parte precedente abbiamo parlato della pose nello spazio 2D e 3D; adesso l’argomento
principale è la pose come funzione che varia nel tempo.
Cerchiamo di creare una pose tempo-variante che il robot può seguire.
POSE TEMPO- VARIANTE
In un’interpretazione robotica, dove è previsto il movimento del robot, avremo traslazioni e rotazioni
che varieranno nel tempo, ovvero la pose varierà nel tempo.
Immaginiamo di avere una serie di rototraslazioni che si susseguono nel tempo, quindi le matrici sono
funzioni del tempo che rappresentano l’evolversi di una rotazione e di una traslazione del robot per
una specifica applicazione.
Per studiare come varia nel tempo possiamo partire dalla rappresentazione esponenziale (comoda
per alcune operazioni). rispetto al sistema di riferimento A:
→
̂() =rotazione
versore attorno al quale avviene la rotazione
→ di rotazione
→() =angolo
di matrice skew
→[
̂() =operatore
]
Quando abbiamo una rappresentazione sulla posizione per passare dalla posizione alla velocità e
all’accelerazione basta utilizzare l’operatore della derivata.
OSS: dobbiamo stare attenti alla rotazione→ in funzione del tempo perché l’asse di rotazione varia;
()è
ma se lo pensiamo localmente quando avviene la rotazione il versore rimane fermo altrimenti se cambiasse vi
sarebbe un’altra rotazione. Per calcolare la variazione di questo oggetto nel
tempo utilizziamo la derivata→ otteniamo la
matrice skew del vettore velocità angolare.
La velocità angolare nel sistema di riferimento A
identifica l’asse istantaneo di rotazione e la velocità
di rotazione. La direzione è // all’asse di rotazione e
il modulo è la velocità di rotazione:
Questo tipo di rappresentazione permette di passare da un
sistema di riferimento B ad un sistema di riferimento A,
attraverso la matrice di rotazione .
La derivata della rotazione può essere espressa in 2 modi:
1) rispetto alla matrice skew del vettore velocità angolare
nel sistema di riferimento A
2) rispetto alla matrice skew del vettore w in B
Come abbiamo visto precedentemente, la matrice di rototraslazione è costituita dalla matrice di rotazione, da
un vettore traslazione e da 0 e 1 che rappresentano la forma omogenea:
--Facendo la derivata---->
velocità di traslazione, velocità angolare
̇ =
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.
-
Appunti di Robotica biomedica della seconda parte del corso (2° parziale)
-
Appunti integrati a slides completi della parte di ROS del corso annuale di Robotica Biomedica
-
Appunti integrati a slides per secondo parziale del corso di Robotica biomedica
-
Appunti di Fondamenti di robotica biomedica