Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
z x’
y O’
O x
𝑥𝑥 ′ 𝑥𝑥 𝑦𝑦 ′ 𝑥𝑥 𝑧𝑧 ′ 𝑥𝑥
O x ′
𝐱𝐱 ′ = 𝑥𝑥 ′ 𝑦𝑦 , 𝐲𝐲 ′ = 𝑦𝑦 𝑦𝑦 , 𝐳𝐳 ′ = 𝑧𝑧 ′ 𝑦𝑦
𝑥𝑥 ′ 𝑧𝑧 𝑦𝑦 ′ 𝑧𝑧 𝑧𝑧 ′ 𝑧𝑧
𝑥𝑥 ′ 𝑥𝑥 𝑦𝑦 ′ 𝑥𝑥 𝑧𝑧 ′ 𝑥𝑥 𝑇𝑇 𝑇𝑇
𝐱𝐱 ′ 𝐱𝐱 𝐲𝐲 ′ 𝐱𝐱 𝐳𝐳 ′ 𝐱𝐱
𝑇𝑇
′ coseni direttori
𝐑𝐑 = 𝐱𝐱 ′ 𝐲𝐲 ′ 𝐳𝐳 ′ = 𝑥𝑥 𝑦𝑦 𝑦𝑦 ′ 𝑦𝑦 𝑧𝑧 ′ 𝑦𝑦 = 𝐱𝐱 ′ 𝑇𝑇 𝐲𝐲 𝐲𝐲 ′ 𝑇𝑇 𝐲𝐲 𝐳𝐳 ′ 𝑇𝑇 𝐲𝐲
𝑥𝑥 ′ 𝑧𝑧 𝑦𝑦 ′ 𝑧𝑧 𝑧𝑧 ′ 𝑧𝑧 𝑇𝑇 𝑇𝑇
𝐱𝐱 ′ 𝐳𝐳 𝐲𝐲 ′ 𝐳𝐳 𝐳𝐳 ′ 𝐳𝐳
𝑇𝑇
Questa matrice è chiamata matrice di rotazione del sistema (𝐱𝐱 ′ , 𝐲𝐲 ′ , 𝐳𝐳 ′ ) rispetto al sistema (𝐱𝐱, 𝐲𝐲, 𝐳𝐳) .
Poiché valgono le seguenti relazioni:
𝑇𝑇 𝑇𝑇 𝑇𝑇
𝐱𝐱 ′ 𝐱𝐱 ′ = 1, 𝐲𝐲 ′ 𝐲𝐲 ′ = 1, 𝐳𝐳 ′ 𝐳𝐳 ′ = 1
𝑇𝑇 𝑇𝑇 𝑇𝑇
𝐱𝐱 ′ 𝐲𝐲 ′ = 0, 𝐲𝐲 ′ 𝐳𝐳 ′ = 0, 𝐳𝐳 ′ 𝐱𝐱 ′ = 0
cos 𝛼𝛼 − sin 𝛼𝛼 0
𝐑𝐑 𝑧𝑧 𝛼𝛼 = sin 𝛼𝛼 cos 𝛼𝛼 0
0 0 1
Le rotazioni elementari intorno agli altri assi possono essere ottenute con argomenti simili:
cos 𝛽𝛽 0 sin 𝛽𝛽
𝐑𝐑 𝑦𝑦 𝛽𝛽 = 0 1 0
− sin 𝛽𝛽 0 cos 𝛽𝛽
1 0 0
𝐑𝐑 𝑥𝑥 𝛾𝛾 = 0 cos 𝛾𝛾 − sin 𝛾𝛾
0 sin 𝛾𝛾 cos 𝛾𝛾
Si consideri ora un punto 𝐩𝐩 le cui coordinate sono espresse in due sistemi di riferimento.
Le coordinate dello stesso punto nei due sistemi sono:
𝑝𝑝𝑥𝑥 𝑝𝑝′ 𝑥𝑥
′
𝐩𝐩 = 𝑝𝑝𝑦𝑦 , 𝐩𝐩′ = 𝑝𝑝 𝑦𝑦
𝑝𝑝𝑧𝑧 𝑝𝑝′ 𝑧𝑧
Il vettore 𝐩𝐩 si può ottenere come somma di tre vettori diretti
come 𝐱𝐱 ′ , 𝐲𝐲 ′ , 𝐳𝐳 ′ :
𝐩𝐩 = 𝑝𝑝′ 𝑥𝑥 𝐱𝐱 ′ + 𝑝𝑝′ 𝑦𝑦 𝐲𝐲 ′ + 𝑝𝑝′ 𝑧𝑧 𝐳𝐳 ′ = 𝐱𝐱 ′ 𝐲𝐲 ′ 𝐳𝐳 ′ 𝐩𝐩′ = 𝐑𝐑𝐩𝐩′
Consideriamo due terne, ruotate l’una rispetto all’altra di un angolo α attorno all’asse 𝐳𝐳 :
Risulta quindi:
cos 𝛼𝛼 − sin 𝛼𝛼 0
𝐩𝐩 = 𝑝𝑝′𝑥𝑥 sin 𝛼𝛼 + 𝑝𝑝′𝑦𝑦 cos 𝛼𝛼 + 𝑝𝑝′𝑧𝑧 0 = 𝑝𝑝′𝑥𝑥 𝐱𝐱 ′ + 𝑝𝑝′𝑦𝑦 𝐲𝐲 ′ + 𝑝𝑝′𝑧𝑧 𝐳𝐳 ′ = 𝐱𝐱 ′ 𝐲𝐲 ′ 𝐳𝐳 ′ 𝐩𝐩′ = 𝐑𝐑𝐩𝐩′
0 0 1
La rotazione di una terna rispetto a un’altra può essere ottenuta combinando rotazioni parziali:
Consideriamo tre sistemi di riferimento (indicati come sistemi 0, 1 e 2) con origine comune.
Denotiamo con:
𝑗𝑗 la matrice di rotazione del sistema 𝑖𝑖 rispetto al sistema 𝑗𝑗
𝐑𝐑 𝑖𝑖
Quindi:
𝑗𝑗 −1 𝑇𝑇
𝐑𝐑 𝑖𝑖 = 𝐑𝐑𝑗𝑗𝑖𝑖 = 𝐑𝐑𝑗𝑗𝑖𝑖
Le coordinate dello stesso punto nei tre sistemi di riferimento possono essere espresse in modi diversi:
𝐩𝐩1 = 𝐑𝐑12 𝐩𝐩2 𝐩𝐩0 = 𝐑𝐑01 𝐩𝐩1 𝐩𝐩0 = 𝐑𝐑02 𝐩𝐩2 𝐑𝐑02 = 𝐑𝐑01 𝐑𝐑12
Le rotazioni possono anche essere effettuate in terna fissa: Si effettua una rotazione
rispetto all’asse 𝐲𝐲 della terna
originaria
Complessivamente:
𝐑𝐑̄ 02 = 𝐑𝐑01 𝐑𝐑10 𝐑𝐑̄ 12 𝐑𝐑01 = 𝐑𝐑̄ 12 𝐑𝐑01
Le matrici di rotazione parziale vengono moltiplicate da destra a sinistra.
Con gli angoli di Eulero ZYZ la sequenza è composta come segue (rotazioni in terna mobile):
I) Rotazione intorno a Z
(angolo ϕ)
La sequenza è costituita da tre rotazioni rispetto agli assi della terna fissa
𝑐𝑐𝜑𝜑 𝑐𝑐𝜗𝜗 𝑐𝑐𝜑𝜑 𝑠𝑠𝜗𝜗 𝑠𝑠𝜓𝜓 − 𝑠𝑠𝜑𝜑 𝑐𝑐𝜓𝜓 𝑐𝑐𝜑𝜑 𝑠𝑠𝜗𝜗 𝑐𝑐𝜓𝜓 + 𝑠𝑠𝜑𝜑 𝑠𝑠𝜓𝜓
𝐑𝐑 = 𝐑𝐑 𝑧𝑧 𝜑𝜑 𝐑𝐑 𝑦𝑦 𝜗𝜗 𝐑𝐑 𝑥𝑥 𝜓𝜓 = 𝑠𝑠𝜑𝜑 𝑐𝑐𝜗𝜗 𝑠𝑠𝜑𝜑 𝑠𝑠𝜗𝜗 𝑠𝑠𝜓𝜓 + 𝑐𝑐𝜑𝜑 𝑐𝑐𝜓𝜓 𝑠𝑠𝜑𝜑 𝑠𝑠𝜗𝜗 𝑐𝑐𝜓𝜓 − 𝑐𝑐𝜑𝜑 𝑠𝑠𝜓𝜓
−𝑠𝑠𝜗𝜗 𝑐𝑐𝜗𝜗 𝑠𝑠𝜓𝜓 𝑐𝑐𝜗𝜗 𝑐𝑐𝜓𝜓
L'orientamento può anche essere rappresentato ricorrendo alla rappresentazione asse/angolo: se assegniamo
due terne con la stessa origine ma orientamento diverso, è sempre possibile determinare un vettore unitario 𝐫𝐫 in
modo che la seconda terna sia ottenuta dalla prima attraverso una rotazione di un angolo ϑ attorno all'asse 𝐫𝐫
rotazione di ϑ intorno a 𝐳𝐳
ripristino sovrapposizione 𝐫𝐫 su 𝐳𝐳
α e β si ricavano da rx, ry, rz orientamento 𝐫𝐫
𝑟𝑟𝑥𝑥2 1 − 𝑐𝑐𝜗𝜗 + 𝑐𝑐𝜗𝜗 𝑟𝑟𝑥𝑥 𝑟𝑟𝑦𝑦 1 − 𝑐𝑐𝜗𝜗 − 𝑟𝑟𝑧𝑧 𝑠𝑠𝜗𝜗 𝑟𝑟𝑥𝑥 𝑟𝑟𝑧𝑧 1 − 𝑐𝑐𝜗𝜗 + 𝑟𝑟𝑦𝑦 𝑠𝑠𝜗𝜗 𝑟𝑟𝑥𝑥
𝐑𝐑 𝜗𝜗, 𝐫𝐫 = 𝑟𝑟𝑥𝑥 𝑟𝑟𝑦𝑦 1 − 𝑐𝑐𝜗𝜗 + 𝑟𝑟𝑧𝑧 𝑠𝑠𝜗𝜗 𝑟𝑟𝑦𝑦2 1 − 𝑐𝑐𝜗𝜗 + 𝑐𝑐𝜗𝜗 𝑟𝑟𝑦𝑦 𝑟𝑟𝑧𝑧 1 − 𝑐𝑐𝜗𝜗 − 𝑟𝑟𝑥𝑥 𝑠𝑠𝜗𝜗 𝐫𝐫 = 𝑟𝑟𝑦𝑦
𝑟𝑟𝑧𝑧
𝑟𝑟𝑥𝑥 𝑟𝑟𝑧𝑧 1 − 𝑐𝑐𝜗𝜗 − 𝑟𝑟𝑦𝑦 𝑠𝑠𝜗𝜗 𝑟𝑟𝑦𝑦 𝑟𝑟𝑧𝑧 1 − 𝑐𝑐𝜗𝜗 + 𝑟𝑟𝑥𝑥 𝑠𝑠𝜗𝜗 𝑟𝑟𝑧𝑧2 1 − 𝑐𝑐𝜗𝜗 + 𝑐𝑐𝜗𝜗
𝜗𝜗
𝑞𝑞0 = cos scalare
2
𝑞𝑞1
𝜗𝜗
𝑞𝑞
𝐪𝐪𝑣𝑣 = 2 = sin 𝐫𝐫 vettore
𝑞𝑞3 2
I quattro parametri 𝑞𝑞0 , 𝑞𝑞1 , 𝑞𝑞2 , 𝑞𝑞3 non sono indipendenti, dal momento che:
Per converso, data una matrice di rotazione il corrispondente quaternione unitario, è dato da:
1
𝑞𝑞0 = 𝑟𝑟 + 𝑟𝑟22 + 𝑟𝑟33 + 1 I quaternioni mancano di un significato
2 11
1 geometrico immediato, tuttavia sono
𝑞𝑞1 = sgn 𝑟𝑟32 − 𝑟𝑟23 𝑟𝑟11 − 𝑟𝑟22 − 𝑟𝑟33 + 1
2 convenienti, poiché la loro relazione con gli
1 elementi della matrice di rotazione è espressa
𝑞𝑞2 = sgn 𝑟𝑟13 − 𝑟𝑟31 𝑟𝑟22 − 𝑟𝑟33 − 𝑟𝑟11 + 1
2 attraverso equazioni algebriche invece che
1 trigonometriche.
𝑞𝑞3 = sgn 𝑟𝑟21 − 𝑟𝑟12 𝑟𝑟33 − 𝑟𝑟11 − 𝑟𝑟22 + 1
2
0 0 1
𝐱𝐱 ′ = 0 , 𝐲𝐲 ′ = 1 , 𝐳𝐳 ′ = 0
Fonte: ABB −1 0 0
0 0 1 0 0 1
𝐱𝐱 ′ = 0 , 𝐲𝐲 ′ = 1 , 𝐳𝐳 ′ = 0 𝐑𝐑 = 0 1 0
−1 0 0 −1 0 0
1 1 2
𝑞𝑞0 = 𝑟𝑟 + 𝑟𝑟22 + 𝑟𝑟33 + 1 = 0+1+0+1= = 0.707
2 11 2 2
1 1
𝑞𝑞1 = sgn 𝑟𝑟32 − 𝑟𝑟23 𝑟𝑟11 − 𝑟𝑟22 − 𝑟𝑟33 + 1 = sgn 0−0 0−1−0+1=0
2 2
1 1 2 Verifica:
𝑞𝑞2 = sgn 𝑟𝑟13 − 𝑟𝑟31 𝑟𝑟22 − 𝑟𝑟33 − 𝑟𝑟11 + 1 = sgn 1+1 1−0−0+1= = 0.707
2 2 2
1 1 𝑞𝑞02 + 𝑞𝑞12 + 𝑞𝑞22 + 𝑞𝑞32 = 1
𝑞𝑞3 = sgn 𝑟𝑟21 − 𝑟𝑟12 𝑟𝑟33 − 𝑟𝑟11 − 𝑟𝑟22 + 1 = sgn 0−0 0−0−1+1=0
2 2
3 1
0
cos 30° 0 sin 30° 2 2
𝐱𝐱 ′ = 0 , 𝐲𝐲 ′ = 1 , ′
𝐳𝐳 = 0 𝐑𝐑 = 0 1 0
− sin 30° 0 cos 30° 1 3
− 0
2 2
1 1 3 3 3+2
𝑞𝑞0 = 𝑟𝑟11 + 𝑟𝑟22 + 𝑟𝑟33 + 1 = +1+ +1= = 0.9659
2 2 2 2 2
1 1 3 3
𝑞𝑞1 = sgn 𝑟𝑟32 − 𝑟𝑟23 𝑟𝑟11 − 𝑟𝑟22 − 𝑟𝑟33 + 1 = sgn 0 − 0 −1− +1=0
2 2 2 2
1 1 1 1 3 3 − 3+2
𝑞𝑞2 =
2
sgn 𝑟𝑟13 − 𝑟𝑟31 𝑟𝑟22 − 𝑟𝑟33 − 𝑟𝑟11 + 1 =
2
sgn +
2 2
1−
2
−
2
+1=
2
= 0.2588 Verifica:
1 1 3 3 𝑞𝑞02 + 𝑞𝑞12 + 𝑞𝑞22 + 𝑞𝑞32 = 1
𝑞𝑞3 = sgn 𝑟𝑟21 − 𝑟𝑟12 𝑟𝑟33 − 𝑟𝑟11 − 𝑟𝑟22 + 1 = sgn 0 − 0 − −1+1=0
2 2 2 2
Trasformazione inversa:
𝐩𝐩1 = −𝐑𝐑10 𝐨𝐨10 + 𝐑𝐑10 𝐩𝐩0
Questo tipo di rappresentazione risulta di non agevole utilizzo quando si vogliano concatenare più
trasformazioni (rototraslazioni) tra terne. In robotica, si usa un formalismo più comodo…
𝐑𝐑01 𝐨𝐨10
𝐀𝐀01 = 𝑇𝑇
0 1
𝐀𝐀01 mette in relazione la descrizione (posizione/orientamento) di un punto del sistema 1 con la descrizione
nel sistema 0.
La trasformazione inversa è:
𝐑𝐑10 −𝐑𝐑10 𝐨𝐨10 𝐀𝐀 non è ortogonale
�1
𝐩𝐩 = 𝐀𝐀10 𝐩𝐩
�0 = (𝐀𝐀01 )−1 𝐩𝐩
�0 𝐀𝐀10 = 𝑇𝑇
0 1
Componendo diverse trasformazioni: �0 = 𝐀𝐀01 𝐀𝐀12 … 𝐀𝐀𝑛𝑛−1
𝐩𝐩 𝑛𝑛 𝐩𝐩�𝑛𝑛
𝐀𝐀𝑊𝑊
𝑇𝑇 = 𝐀𝐀𝑊𝑊 𝐵𝐵 𝐸𝐸
𝐵𝐵 𝐀𝐀 𝐸𝐸 𝐀𝐀 𝑇𝑇
Definizione del
task rispetto a Definizione del
un sistema task rispetto
«mondo» all’end-effector