Cinematica
Cinematica
Bruno SICILIANO
CINEMATICA
Matrice di rotazione
Rappresentazioni dell’orientamento
Trasformazioni omogenee
Cinematica diretta
Calibrazione cinematica
• Posizione
o′x
o′ = o′y
o′z
• Orientamento
MATRICE DI ROTAZIONE
x′T x y ′T x z ′T x
R = x′ y′ z ′ = x′T y y ′T y z ′T y
x′T z y ′T z z ′T z
RT R = I
RT = R−1
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
Rotazioni elementari
• rotazione di α intorno a z
cos α −sin α 0
Rz (α) = sin α cos α 0
0 0 1
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
• rotazione di β intorno a y
cos β 0 sin β
Ry (β) = 0 1 0
−sin β 0 cos β
• rotazione di γ intorno a x
1 0 0
Rx (γ) = 0 cos γ −sin γ
0 sin γ cos γ
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
Rappresentazione di un vettore
px p′x
p = py p′ = p′y
pz p′z
p = x′ y′ z ′ p′
= Rp′
p′ = RT p
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
• Esempio
Rotazione di un vettore
p = Rp′
pT p = p′T RT Rp′
• Esempio
p = Rz (α)p′
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
• Matrice di rotazione
⋆ fornisce l’orientamento di una terna di coordinate rispetto
ad un’altra: i vettori colonna sono i coseni direttori degli
assi della terna ruotata rispetto alla terna di partenza
⋆ rappresenta una trasformazione di coordinate che mette in
relazione le coordinate di uno stesso punto in due terne
differenti (di origine comune)
⋆ è l’operatore che consente di ruotare un vettore in una stessa
terna di coordinate
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
COMPOSIZIONE DI MATRICI DI
ROTAZIONE
p1 = R21 p2
p0 = R10 p1
p0 = R20 p2
• Esempio
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
ANGOLI DI EULERO
• matrice di rotazione
⋆ 9 parametri con 6 vincoli
Angoli ZYZ
• Problema inverso
⋆ Assegnata
r11 r12 r13
R = r21 r22 r23
r31 r32 r33
ϕ = Atan2(r23 , r13 )
q
ϑ = Atan2 2 + r2 , r
r13 23 33
ψ = Atan2(r32 , −r31 )
ϕ = Atan2(−r23 , −r13 )
q
ϑ = Atan2 − r13 2 + r2 , r
23 33
ψ = Atan2(−r32 , r31 )
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
Angoli di RPY
• Problema inverso
⋆ Assegnata
r11 r12 r13
R = r21 r22 r23
r31 r32 r33
ϕ = Atan2(r21 , r11 )
q
ϑ = Atan2 −r31 , r32 2 + r2
33
ψ = Atan2(r32 , r33 )
ϕ = Atan2(−r21 , −r11 )
q
ϑ = Atan2 −r31 , − r32 2 + r2
33
ψ = Atan2(−r32 , −r33 )
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
ASSE/ANGOLO
ry rx
sin α = q cos α = q
rx2 + ry2 rx2 + ry2
q
sin β = rx2 + ry2 cos β = rz
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
rx2 (1 − cϑ ) + cϑ rx ry (1 − cϑ ) − rz sϑ
R(ϑ, r) = rx ry (1 − cϑ ) + rz sϑ ry2 (1 − cϑ ) + cϑ
rx rz (1 − cϑ ) − ry sϑ ry rz (1 − cϑ ) + rx sϑ
rx rz (1 − cϑ ) + ry sϑ
ry rz (1 − cϑ ) − rx sϑ
rz2 (1 − cϑ ) + cϑ
• Problema inverso
⋆ Assegnata
r11 r12 r13
R = r21 r22 r23
r31 r32 r33
r11 + r22 + r33 − 1
ϑ = cos −1
2
r − r23
1 32
r= r13 − r31
2 sin ϑ
r21 − r12
con
rx2 + ry2 + rz2 = 1
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
QUATERNIONE UNITARIO
ϑ
η = cos
2
ϑ
ǫ = sin r
2
2(η 2 + ǫ2x ) − 1
2(ǫx ǫy − ηǫz ) 2(ǫx ǫz + ηǫy )
R(η, ǫ) = 2(ǫx ǫy + ηǫz ) 2(η 2 + ǫ2y ) − 1 2(ǫy ǫz − ηǫx )
• Problema inverso
⋆ Assegnata
r11 r12 r13
R = r21 r22 r23
r31 r32 r33
il quaternione è (η ≥ 0)
1√
η= r11 + r22 + r33 + 1
2 √
sgn (r32 − r23 ) r11 − r22 − r33 + 1
1 √
ǫ = sgn (r13 − r31 ) r22 − r33 − r11 + 1
2 √
sgn (r21 − r12 ) r33 − r11 − r22 + 1
Q1 ∗ Q2 = {η1 η2 − ǫT1 ǫ2 , η1 ǫ2 + η2 ǫ1 + ǫ1 × ǫ2 }
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
TRASFORMAZIONI OMOGENEE
p0 = o01 + R10 p1
• Trasformazione inversa
• Rappresentazione omogenea
p
p̃ =
1
R10 o01
A01 =
0T 1
• Trasformazione di coordinate
• Trasformazione inversa
−1
p̃1 = A10 p̃0 = A01 p̃0
ove
R01 −R01 o01
A10 =
0T 1
A−1 6= AT
• Successione di trasformazioni
CINEMATICA DIRETTA
• Manipolatore
⋆ insieme di bracci connessi tramite giunti
• Grado di mobilità
⋆ tipicamente associato a una articolazione = variabile di
giunto
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
nbe sbe abe pbe
Teb (q) =
0 0 0 1
0 s12 c12 a1 c1 + a2 c12
0 −c12 s12 a1 s1 + a2 s12
=
1 0 0 0
0 0 0 1
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
Catena aperta
Convenzione di Denavit-Hartenberg
Parametri di Denavit-Hartenberg
ai distanza di Oi da Oi′ ;
di coordinata su zi−1 di Oi′ ;
αi angolo intorno all’asse xi tra l’asse zi−1 e l’asse zi valutato
positivo in senso antiorario;
ϑi angolo intorno all’asse zi−1 tra l’asse xi−1 e l’asse xi valutato
positivo in senso antiorario.
• Trasformazione di coordinate
cϑi −sϑi 0 0
s cϑi 0 0
Ai−1
i′ = ϑi
0 0 1 di
0 0 0 1
1 0 0 ai
′ 0 cα i −sαi 0
Aii =
0 sαi cα i 0
0 0 0 1
Procedura operativa
1. Individuare e numerare consecutivamente gli assi dei giunti;
assegnare, rispettivamente, le direzioni agli assi z0 , . . . , zn−1
2. Fissare la terna base posizionandone l’origine sull’asse z0 ; gli
assi x0 e y0 sono scelti in maniera tale da ottenere una terna
levogira
Eseguire i passi da 3 a 5 per i = 1, . . . , n − 1:
3. Individuare l’origine Oi all’intersezione di zi con la normale
comune agli assi zi−1 e zi . Se gli assi zi−1 e zi sono paralleli e
il giunto i è rotoidale, posizionare Oi in modo da annullare di ;
se il giunto i è prismatico, scegliere Oi in corrispondenza di
una posizione di riferimento per la corsa del giunto (ad esempio
un fine-corsa)
4. Fissare l’asse xi diretto lungo la normale comune agli assi zi−1
e zi con verso positivo dal giunto i al giunto i + 1
5. Fissare l’asse yi in modo da ottenere una terna levogira
Per completare:
6. Fissare la terna n, allineando zn lungo la direzione di zn−1 se il
giunto n è rotoidale, ovvero scegliendo zn in maniera arbitraria
se il giunto n è prismatico; fissare l’asse xn in accordo al punto 4
7. Costruire per i = 1, . . . , n la tabella dei parametri ai , di , αi , ϑi
8. Calcolare sulla base dei parametri di cui al punto 7 le matrici
di trasformazione omogenea Ai−1
i (qi ) per i = 1, . . . , n
9. Calcolare Tn0 (q) = A01 . . . An−1
n che fornisce posizione e
orientamento della terna n rispetto alla terna 0
10. Assegnate T0b e Ten , calcolare la funzione cinematica diretta
Teb (q) = T0b Tn0 Ten che fornisce posizione e orientamento della
terna utensile rispetto alla terna base
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
Catena chiusa
• Vincoli
⋆ giunto j + 1 rotoidale
T
( j
Ri (q ′ ) pij (q ′ ) − pik (q ′′ ) = [ 0 0 djk ]
zji (q ′ ) = zki (q ′′ )
⋆ giunto j + 1 prismatico
iT ′
x j (q ) i ′ i ′′
0
y iT (q ′ )
pj (q ) − pk (q ) =
j 0
zji (q ′ ) = zki (q ′′ )
iT ′ i ′′
xj (q )xk (q ) = cos ϑjk
⋆ risolti in termini di q . . .
Procedura operativa
1. Selezionare un giunto non attuato della catena chiusa. Ipotizzare
di aprire tale giunto in modo da ottenere una catena aperta con
struttura ad albero
2. Calcolare le trasformazioni omogenee secondo la convenzione
di Denavit-Hartenberg
3. Trovare i vincoli di uguaglianza per le due terne connesse dal
giunto di taglio
4. Risolvere i vincoli in termini di un numero ridotto di variabili
di giunto
5. Esprimere le trasformazioni omogenee in funzione di tali
variabili di giunto e calcolare la funzione cinematica diretta
per composizione della varie trasformazioni dalla terna base
alla terna utensile
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
Braccio ai αi di ϑi
1 a1 0 0 ϑ1
2 a2 0 0 ϑ2
3 a3 0 0 ϑ3
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
ci −si 0 a i ci
s ci 0 ai si
Ai−1
i = i i = 1, 2, 3
0 0 1 0
0 0 0 1
Manipolatore a parallelogramma
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
Braccio ai αi di ϑi
1′ a1′ 0 0 ϑ1′
2′ a2′ 0 0 ϑ2′
3′ a3′ 0 0 ϑ3′
1′′ a1′′ 0 0 ϑ1′′
4 a4 0 0 0
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
′ ′
A03′ (q ′ ) = A01′ A12′ A23′
c1 2 3 −s1′ 2′ 3′ 0 a1′ c1′ + a2′ c1′ 2′ + a3′ c1′ 2′ 3′
′ ′ ′
s ′ ′ ′ c1′ 2′ 3′ 0 a1′ s1′ + a2′ s1′ 2′ + a3′ s1′ 2′ 3′
= 123
0 0 1 0
0 0 0 1
• Risoluzione vincoli
⋆ orientamento (OK)
⋆ posizione
0
3′ 0 0
′ ′ ′′
R0 (q ) p3′ (q ) − p1′′ (q ) = 0
0
⇓
• Cinematica diretta
Manipolatore sferico
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
Braccio ai αi di ϑi
1 0 −π/2 0 ϑ1
2 0 π/2 d2 ϑ2
3 0 0 d3 0
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
c1 0 −s1 0 c2 0 s2 0
s 0 c1 0 s 0 −c2 0
A01 = 1 A12 = 2
0 −1 0 0 0 1 0 d2
0 0 0 1 0 0 0 1
1 0 0 0
0 1 0 0
A23 =
0 0 1 d3
0 0 0 1
c1 c2 −s1 c1 s2 c1 s2 d3 − s1 d2
s c c1 s1 s2 s1 s2 d3 + c1 d2
= 1 2
−s2 0 c2 c2 d 3
0 0 0 1
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
Manipolatore antropomorfo
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
Braccio ai αi di ϑi
1 0 π/2 0 ϑ1
2 a2 0 0 ϑ2
3 a3 0 0 ϑ3
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
c1 0 s1 0
s 0 −c1 0
A01 = 1
0 1 0 0
0 0 0 1
ci −si 0 a i ci
s ci 0 ai si
Ai−1
i = i i = 2, 3
0 0 1 0
0 0 0 1
Polso sferico
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
Braccio ai αi di ϑi
4 0 −π/2 0 ϑ4
5 0 π/2 0 ϑ5
6 0 0 d6 ϑ6
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
c4 0 −s4 0 c5 0 s5 0
s 0 c4 0 s 0 −c5 0
A34 = 4 A45 = 5
0 −1 0 0 0 1 0 0
0 0 0 1 0 0 0 1
c6 −s6 0 0
s c6 0 0
A56 = 6
0 0 1 d6
0 0 0 1
c4 c5 c6 − s4 s6 −c4 c5 s6 − s4 c6 c4 s5 c4 s5 d6
s c c + c4 s6 −s4 c5 s6 + c4 c6 s4 s5 s4 s5 d6
= 4 5 6
−s5 c6 s5 s6 c5 c5 d 6
0 0 0 1
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
Manipolatore di Stanford
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
n0 s0 a0 p0
T60 = T30 T63 =
0 0 0 1
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
c1 s2 d3 − s1 d2 + c1 (c2 c4 s5 + s2 c5 ) − s1 s4 s5 d6
0
p = s1 s2 d3 + c1 d2 + s1 (c2 c4 s5 + s2 c5 ) + c1 s4 s5 d6
c2 d3 + (−s2 c4 s5 + c2 c5 )d6
c1 c2 (c4 c5 c6 − s4 s6 ) − s2 s5 c6 − s1 (s4 c5 c6 + c4 s6 )
n0 = s1 c2 (c4 c5 c6 − s4 s6 ) − s2 s5 c6 + c1 (s4 c5 c6 + c4 s6 )
−s2 (c4 c5 c6 − s4 s6 ) − c2 s5 c6
c1 −c2 (c4 c5 s6 + s4 c6 ) + s2 s5 s6 − s1 (−s4 c5 s6 + c4 c6 )
s0 = s1 −c2 (c4 c5 s6 + s4 c6 ) + s2 s5 s6 + c1 (−s4 c5 s6 + c4 c6 )
s2 (c4 c5 s6 + s4 c6 ) + c2 s5 s6
c1 (c2 c4 s5 + s2 c5 ) − s1 s4 s5
0
a = s1 (c2 c4 s5 + s2 c5 ) + c1 s4 s5
−s2 c4 s5 + c2 c5
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
Braccio ai αi di ϑi
1 0 π/2 0 ϑ1
2 a2 0 0 ϑ2
3 0 π/2 0 ϑ3
4 0 −π/2 d4 ϑ4
5 0 π/2 0 ϑ5
6 0 0 d6 ϑ6
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
c3 0 s3 0 c4 0 −s4 0
s 0 −c3 0 s 0 c4 0
A23 = 3 A34 = 4
0 1 0 0 0 −1 0 d4
0 0 0 1 0 0 0 1
a2 c1 c2 + d4 c1 s23 + d6 c1 (c23 c4 s5 + s23 c5 ) + s1 s4 s5
p0 = a2 s1 c2 + d4 s1 s23 + d6 s1 (c23 c4 s5 + s23 c5 ) − c1 s4 s5
a2 s2 − d4 c23 + d6 (s23 c4 s5 − c23 c5 )
c1 c23 (c4 c5 c6 − s4 s6 ) − s23 s5 c6 + s1 (s4 c5 c6 + c4 s6 )
0
n = s1 c23 (c4 c5 c6 − s4 s6 ) − s23 s5 c6 − c1 (s4 c5 c6 + c4 s6 )
s23 (c4 c5 c6 − s4 s6 ) + c23 s5 c6
c1 −c23 (c4 c5 s6 + s4 c6 ) + s23 s5 s6 + s1 (−s4 c5 s6 + c4 c6 )
s0 = s1 −c23 (c4 c5 s6 + s4 c6 ) + s23 s5 s6 − c1 (−s4 c5 s6 + c4 c6 )
−s23 (c4 c5 s6 + s4 c6 ) − c23 s5 s6
c1 (c23 c4 s5 + s23 c5 ) + s1 s4 s5
a0 = s1 (c23 c4 s5 + s23 c5 ) − c1 s4 s5
s23 c4 s5 − c23 c5
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
Braccio ai αi di ϑi
1 0 π/2 0 ϑ1
2 0 π/2 0 ϑ2
3 0 π/2 d3 ϑ3
4 0 π/2 0 ϑ4
5 0 π/2 d5 ϑ5
6 0 π/2 0 ϑ6
7 0 0 d7 ϑ7
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
ci 0 si 0
si 0 −ci 0
Ai−1
i =
0
i = 1, . . . , 6
1 0 di
0 0 0 1
c7 −s7 0 0
6
s7 c7 0 0
A7 =
0
0 1 d7
0 0 0 1
d 3 xd 3 + d 5 xd 5 + d 7 xd 7
p07 = d3 yd3 + d5 yd5 + d7 yd7
d 3 zd3 + d 5 zd5 + d 7 zd7
xd3 = c1 s2
xd5 = c1 (c2 c3 s4 − s2 c4 ) + s1 s3 s4
xd7 = c1 (c2 k1 + s2 k2 ) + s1 k3
yd3 = s1 s2
yd5 = s1 (c2 c3 s4 − s2 c4 ) − c1 s3 s4
yd7 = s1 (c2 k1 + s2 k2 ) − c1 k3
zd3 = −c2
zd5 = c2 c4 + s2 c3 s4
zd7 = s2 (c3 (c4 c5 s6 − s4 c6 ) + s3 s5 s6 ) − c2 k2
k1 = c3 (c4 c5 s6 − s4 c6 ) + s3 s5 s6
k2 = s4 c5 s6 + c4 c6
k3 = s3 (c4 c5 s6 − s4 c6 ) − c3 s5 s6
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
((xa c5 + xc s5 )c6 + xb s6 )c7 + (xa s5 − xc c5 )s7
n07 = ((ya c5 + yc s5 )c6 + yb s6 )c7 + (ya s5 − yc c5 )s7
(za c6 + zc s6 )c7 + zb s7
−((xa c5 + xc s5 )c6 + xb s6 )s7 + (xa s5 − xc c5 )c7
−((ya c5 + yc s5 )c6 + yb s6 )s7 + (ya s5 − yc c5 )c7
s07 =
−(za c6 + zc s6 )s7 + zb c7
(xa c5 + xc s5 )s6 − xb c6
a07 = (ya c5 + yc s5 )s6 − yb c6
za s6 − zc c6
xa = (c1 c2 c3 + s1 s3 )c4 + c1 s2 s4
xb = (c1 c2 c3 + s1 s3 )s4 − c1 s2 c4
xc = c1 c2 s3 − s1 c3
ya = (s1 c2 c3 − c1 s3 )c4 + s1 s2 s4
yb = (s1 c2 c3 − c1 s3 )s4 − s1 s2 c4
yc = s1 c2 s3 + c1 c3
za = (s2 c3 c4 − c2 s4 )c5 + s2 s3 s5
zb = (s2 c3 s4 + c2 c4 )s5 − s2 s3 c5
zc = s2 c3 s4 + c2 c4
⋆ se α7 = π/2
c7 0 s7 a 7 c7
6
s7 0 −c7 a7 s7
A7 =
0
0 1 0
0 0 0 1
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
Manipolatore umanoide
• Cinematica diretta
0
Trh r
= T30 Tt3 Trt Trh
0
Tlh = T30 Tt3 Tlt Tlh
l
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
c23 s23 0 0
−s c23 0 0
Tt3 = 23
0 0 1 0
0 0 0 1
q1
.
q = ..
qn
⋆ qi = ϑi (giunto rotoidale)
⋆ qi = di (giunto prismatico)
• Spazio operativo
p
x=
φ
⋆ p (posizione)
⋆ φ (orientamento)
x = k(q)
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
• Esempio
px a1 c1 + a2 c12 + a3 c123
x = py = k(q) = a1 s1 + a2 s12 + a3 s123
φ ϑ1 + ϑ2 + ϑ3
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
Spazio di lavoro
• Esempio
⋆ configurazioni ammissibili
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
⋆ spazio di lavoro
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
• Accuratezza
⋆ scostamento tra posizione conseguita con la postura
assegnata e posizione calcolata tramite la cinematica diretta
⋆ valori tipici: (0.2, 1) mm
• Ripetibilità
⋆ capacità del manipolatore di tornare in una posizione
precedentemente raggiunta
⋆ valori tipici: (0.02, 0.2) mm
• Ridondanza cinematica
⋆ m < n (intrinseca)
⋆ r < m = n (funzionale)
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
CALIBRAZIONE CINEMATICA
x = k(a, α, d, ϑ)
xm locazione misurata
∂k ∂k ∂k ∂k
∆x = ∆a + ∆α + ∆d + ∆ϑ
∂a ∂α ∂d ∂ϑ
= Φ(ζn )∆ζ
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
∆x1 Φ1
. .
∆x̄ = .. = .. ∆ζ = Φ̄∆ζ
∆xl Φl
• Soluzione
ζ ′ = ζn + ∆ζ
. . . finché ∆ζ converge
Inizializzazione
• Cinematica diretta
⋆ q =⇒ T
⋆ q =⇒ x
• Cinematica inversa
⋆ T =⇒ q
⋆ x =⇒ q
• Complessità
⋆ soluzione analitica (in forma chiusa) ?
⋆ soluzioni multiple
⋆ infinite soluzioni
⋆ non esistono soluzioni ammissibili
• Intuizione
⋆ algebrica
⋆ geometrica
• Tecniche numeriche
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
• Soluzione algebrica
φ = ϑ1 + ϑ2 + ϑ3
pW x = px − a3 cφ = a1 c1 + a2 c12
pW y = py − a3 sφ = a1 s1 + a2 s12
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
ϑ2 = Atan2(s2 , c2 )
(a1 + a2 c2 )pW y − a2 s2 pW x
s1 =
p2W x + p2W y
(a1 + a2 c2 )pW x + a2 s2 pW y
c1 =
p2W y + p2W y
ϑ1 = Atan2(s1 , c1 )
ϑ3 = φ − ϑ1 − ϑ2
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
• Soluzione geometrica
ϑ2 = cos −1 (c2 )
α = Atan2(pW y , pW x )
q
cβ p2W x + p2W y = a1 + a2 c2
−1
p2W x + p2W y + a21 − a22
β = cos q
2a1 p2W x + p2W y
ϑ1 = α ± β
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
pW = p − d6 a
• Soluzione disaccoppiata
⋆ calcolare la posizione del polso pW (q1 , q2 , q3 )
⋆ risolvere la cinematica inversa per (q1 , q2 , q3 )
⋆ calcolare R30 (q1 , q2 , q3 )
⋆ calcolare R63 (ϑ4 , ϑ5 , ϑ6 ) = R30 T R
⋆ risolvere la cinematica inversa per l’orientamento (ϑ4, ϑ5 , ϑ6 )
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
pW x c1 + pW y s1 d3 s2
p1W = −pW z = −d3 c2
−pW x s1 + pW y c1 d2
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
1 − t2 2t
c1 = s1 =
1 + t2 1 + t2
q
2 2 2
ϑ1 = 2Atan2 −pW x ± pW x + pW y − d2 , d2 + pW y
pW x c1 + pW y s1 d3 s2
=
−pW z −d3 c2
ϑ2 = Atan2(pW x c1 + pW y s1 , pW z )
q
d3 = (pW x c1 + pW y s1 )2 + p2W z
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
pW x = c1 (a2 c2 + a3 c23 )
pW y = s1 (a2 c2 + a3 c23 )
pW z = a2 s2 + a3 s23
ϑ3 = Atan2(s3 , c3 )
⇓
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
ϑ3,I ∈ [−π, π]
ϑ3,II = −ϑ3,I
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
q
± p2W x + p2W y (a2 + a3 c3 ) + pW z a3 s3
c2 =
a22 + a23 + 2a2 a3 c3
q
pW z (a2 + a3 c3 ) ∓ p2W x + p2W y a3 s3
s2 =
a22 + a23 + 2a2 a3 c3
ϑ2 = Atan2(s2 , c2 )
⇓
p
⋆ per s+
3 = 1 − c23 :
q
ϑ2,I = Atan2 (a2 + a3 c3 )pW z − a3 s+
p2W x + p2W y ,
3
q
2 2 +
(a2 + a3 c3 ) pW x + pW y + a3 s3 pW z
q
+
ϑ2,II = Atan2 (a2 + a3 c3 )pW z + a3 s3 p2W x + p2W y ,
q
2 2 +
−(a2 + a3 c3 ) pW x + pW y + a3 s3 pW z
p
⋆ per s−
3 = − 1 − c23 :
q
−
ϑ2,III = Atan2 (a2 + a3 c3 )pW z − a3 s3 p2W x + p2W y ,
q
2 2 −
(a2 + a3 c3 ) pW x + pW y + a3 s3 pW z
q
−
ϑ2,IV = Atan2 (a2 + a3 c3 )pW z + a3 s3 p2W x + p2W y ,
q
2 2 −
−(a2 + a3 c3 ) pW x + pW y + a3 s3 pW z
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
ϑ1,I = Atan2(pW y , pW x )
ϑ1,II = Atan2(−pW y , −pW x )
pW x 6= 0 pW y 6= 0
FONDAMENTI DI ROBOTICA Prof. Bruno SICILIANO
ϑ4 = Atan2(a3y , a3x )
q
3
ϑ5 = Atan2 (a3x )2 + (a3y )2 , az
ϑ6 = Atan2(s3z , −n3z )
ϑ4 = Atan2(−a3y , −a3x )
q
3
ϑ5 = Atan2 − (a3x )2 + (a3y )2 , az
ϑ6 = Atan2(−s3z , n3z )