Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Parametrizzazioni di SO(3)
1 Parametrizzazioni di SO(3)
Definizione di SO(3)
R = [r1 r2 r3 ]
RRT = RT R = I
Definizione di SO(3)
r2 × r3 = ±r1
r1T (r2 × r3 ) = 1
Ma dall’algebra lineare si ricorda che il risultato del prodotto misto dei tre
versori r1 , r2 , r3 equivale al determinante della matrice che ha tali versori come
colonne, dunque
R = R3 R2 R1
←−−−−−
2 Per post-moltiplicazione se le rotazioni avvengono rispetto agli assi
correnti, ossia
R = R1 R2 R3
−−−−−→
Parametrizzazioni di SO(3)
Parametrizzazioni di SO(3)
Angoli di Eulero
2 2
Se r13 + r23 = sin2 θ 6= 0 si possono avere due soluzioni isolate:
Se definiamo θ ∈ (0, π), (sin θ > 0) si ha la soluzione
ϕ = atan2(r
,r )
p23 13
2 2
θ = atan2( r13 + r23 , r33 )
ψ = atan2(r32 , −r31 )
2 2
Se r13 + r23 = sin2 θ = 0 si possono avere due condizioni, ossia cos θ = ±1. In
tal caso si guarda l’elemento r33 che è proprio il cos θ.
Se r33 = +1, allora:
cos θ = +1, dunque θ = 0 per entrambe le scelte.
In questo caso gli elementi r11 ed r21 valgono, rispettivamente,
r11 = cϕ cψ − sϕ sψ = cϕ+ψ
r21 = sϕ cψ + cϕ sψ = sϕ+ψ = −r12
U = {R ∈ SO(3)| r33 ∈
/ {−1, 1}}
2 2
Se r11 + r21 = cos2 θ 6= 0 si possono avere due soluzioni isolate:
Se definiamo θ ∈ (−π/2, π/2), (cos θ > 0) si ha la soluzione
ϕ = atan2(r21 , r11
p
)
2 2
θ = atan2(−r31 , r32 + r33 )
ψ = atan2(r32 , r33 )
2 2
Se r11 + r21 = cos2 θ = 0 si possono avere due condizioni, ossia sin θ = ±1.
In tal caso si guarda l’elemento r31 che è proprio il − sin θ.
Se r31 = −1, allora sin θ = 1, dunque θ = π/2 in entrambi i casi.
In questo caso gli elementi r23 ed r13 valgono, rispettivamente,
r23 = sϕ cψ − cϕ sψ = sϕ−ψ
r13 = cϕ cψ + sϕ sψ = cϕ−ψ
2 2
Se r11 + r21 = cos2 θ = 0 si possono avere due condizioni, ossia sin θ = ±1.
In tal caso si guarda l’elemento r31 che è proprio il − sin θ.
Se r31 = +1, allora sin θ = −1, dunque θ = −π/2 nel primo caso,
θ = 3π/2 nel secondo.
In questo caso gli elementi r23 ed r13 valgono, rispettivamente,
Asse/angolo
Asse/angolo
Asse/angolo
La soluzione precedente si basa sull’idea di ruotare il versore ω dell’angolo
necessario a sovrapporlo sull’asse z, effettuare la rotazione dell’angolo θ che a
questo punto è facilmente descrivibile in termini di rotazioni elementari, ed
infine riportare il versore nella direzione iniziale.
In dettaglio, la successione delle diverse rotazioni, da effettuare sempre rispetto
ad assi di terna fissa, è la seguente:
sovrapposizione di ω su z, come successione di rotazione di −α intorno a
z e di −γ intorno a y
rotazione di θ intorno a z
ripristino dell’orientamento iniziale di ω, come successione di rotazione di
γ intorno a y e rotazione di α intorno a z.
In sintesi, di nuovo:
ω12 vθ + cθ
ω1 ω2 vθ − ω3 sθ ω1 ω3 vθ + ω2 sθ
Rω (θ) = ω1 ω2 vθ + ω3 sθ ω22 vθ + cθ ω2 ω3 vθ − ω1 sθ
ω1 ω3 vθ − ω2 sθ ω2 ω3 vθ + ω1 sθ ω32 vθ + cθ
Per tale matrice vale la proprietà R−ω (−θ) = Rω (θ), che mostra come tale
rappresentazione non sia univoca poiché una rotazione di −θ intorno a −ω
produce gli stessi effetti di una rotazione di θ intorno a ω.
Nel caso in cui sin θ = 0, la formula per il calcolo del versore ω dell’asse di
rotazione perde di significato.
Per risolvere il problema inverso è necessario riferirsi direttamente alle
espressioni particolari assunte dalla matrice di rotazione R ed individuare le
formule risolutive nei due casi θ = 0 e θ = π.
Si noti in particolare che per θ = 0 (rotazione nulla) il versore ω è arbitrario,
ossia si ha una singolarità.
∨
0 Ωa Ωb −Ωc
∨
Ω̂ = −Ωa 0 Ω c = Ωb
−Ωb −Ωc 0 −Ωa
Ponendo Ω̂ = ω̂ θ, con θ uno scalare tale che ω̂ ∨ abbia norma unitaria, si ha:
ω̂ = −ω̂ T ; ω̂ 2 = ωω T − I; ω̂ 3 = −ω̂;
θ3 θ5
2
θ4 θ6
θ
eω̂θ = I + θ − + − · · · ω̂ + − + − · · · ω̂ 2
3! 5! 2! 4! 6!
Da cui si riconosce:
ω12 vθ + cθ
ω1 ω2 vθ − ω3 sθ ω1 ω3 vθ + ω2 sθ
eω̂θ = ω1 ω2 vθ + ω3 sθ ω22 vθ + cθ ω2 ω3 vθ − ω1 sθ
ω1 ω3 vθ − ω2 sθ ω2 ω3 vθ + ω1 sθ ω32 vθ + cθ
dove si è posto cθ = cθ , sθ = sθ e vθ = (1 − cθ ).
Una espressione alternativa risulta data da:
ω
θ
Q
Q
N P θ
P u1
u0
p
p
χ N u2
P
P
O
dove:
OQ = u0 = (ωω T ) p, QP = OP − OQ = p − (ωω T ) p,
QN = u1 = [p − (ωω T ) p] cos θ = [I − (ωω T )] cos θ p,
N P̂ = u2 = ω × [p − (ωω T ) p] sin θ = ω̂ sin θ p
Da cui:
p̂ = (ωω T ) + [I − ωω T ] cos θ + ω̂ sin θ p = Rω (θ) p
Consideriamo un corpo rigido che ruota attorno all’origine con velocità angolare
costante ω ∈ R3 . La velocità di un suo generico punto è data da
ṗ = ω × p = ω̂p
ω̂ ω̂ 2
eω̂t = I + sin(||ω||t) + (1 − cos(||ω||t)).
||ω|| ||ω||2
Q = q0 + q1 i + q2 j + q3 k = (q0 , q), qi ∈ R, i = 0, . . . , 3
i · i = j · j = k · k = i · j · k = −1
i · j = −j · i = k; j · k = −k · j = i; k · i = −i · k = j;
Q · P = (q0 p0 − q T p, q0 p + p0 q + q × p)
QR = (cos(θ/2), ω sin(θ/2))
1 − 2(q22 + q32 )
2(q1 q2 − q0 q3 ) 2(q1 q3 + q0 q2 )
R(q0 , q) = 2(q1 q2 + q0 q3 ) 1 − 2(q12 + q32 ) 2(q2 q3 − q0 q1 )
2(q1 q3 − q0 q2 ) 2(q2 q3 + q0 q1 ) 1 − 2(q12 + q22 )
Due soluzioni
Due soluzioni possibili sono:
Interpolare linearmente negli angoli di Eulero, cosicchè:
θ(t) = (1 − t)θi + tθf , . . . ; R(t) = Rzyz (ϕ(t), θ(t), ψ(t)), t ∈ [0, 1]
Impiegare la SLERP secondo la logica vista (risultato “naturale”)