Rotations 3D autour de l`origine: l`axe de rotation

Download Report

Transcript Rotations 3D autour de l`origine: l`axe de rotation

2.1.5 Rotations in 3D: Rotation axis
2D:
3D:
•Angle
•Angle
•Center of rotation
In 3 dimensions, we need to specify
angle and axis
Rotations around axes as direction cosines
é
x
x
1
2
ê
é x 2 , y , z2 ù = ê y x 2
ë
û ê 1
2
ê z1 x 2
ë
y1
J
z 1 = z2
x1
é cos J
ê
= ê sin J
ê 0
ë
x1 y 2
y1 y 2
z1 y 2
-sin J
cos J
0
ù
x1 z 2 ú
y1 z 2 ú
ú
z1 z 2 ú
û
0
0
1
ù
ú
ú
ú
û
Rotation around x,y,z
é1
0
ê
Rx = ê0 cos j
êë0 sin j
é cos j
ê
Ry = ê 0
êë– sin j
0 ù
ú
– sin j ú
cos j úû
écos j
ê
Rz = ê sin j
êë 0
sin j ù
ú
1
0 ú
0 cos j úû
0
– sin j 0ù
ú
cos j 0ú
0
1úû
Exercice 6
a): rotation by 90° around z, then rotation
by 90° around y
b): rotation by 90° around y, then rotation
by 90° around z
Solution by matrix multiplication
6a
6b
é 0 0 1ùé0 -1 0ù é0 0 1ù
ê
úê
ú ê
ú
ê 0 1 0úê1 0 0ú = ê1 0 0ú
êë-1 0 0úûêë0 0 1úû êë0 1 0úû
é0 -1 0ùé 0 0 1ù é 0 -1 0ù
ê
úê
ú ê
ú
ê1 0 0úê 0 1 0ú = ê 0 0 1ú
êë0 0 1úûêë-1 0 0úû êë-1 0 0úû
Problem 7a: Solution by an isometric drawing:
z axis
90°
z
x
y axis
90°
y
corresponds to 120° rotation around. [1,1,1]’ axis!
7b
y axis
90°
z axis
90°
Rotation autour d’axes liés au corps
7c
y’
z
x
y
z axis 90°
« Body frame »
y’ axis 90°
Rotation autour d’axes lié au corps
Body frame
7d
z
x
y
z’
y axis 90°
z’ axis 90°
Ex. 8
Fig. 4
Passage Axe/Angle => Matrice de cos. dir.
rotation d'un angle J autour de l'axe [x,y,z]T
avec || [x,y,z]T|| = 1
(10)
Benjamin Olinde Rodrigues
1795 – 1851
Ex. 8
é xx
R = (1- cos J )ê xy
ëê xz
1. solution: Formule (10)
xy
yy
yz
2. solution:
xz ù
é1
yz ú + cosJ ê 0
zz úû
ëê0
0
1
0
0ù
é0
0ú + sinJ ê z
êë- y
1úû
-z
0
x
yù
- xú
0 ûú
Passage Matrice de cos. dir. => Axe/Angle
From direction cosines to axis/angle:
éa d
ê
R = êb e
êëc f
gù
ú
hú
i úû
axis
direction:
(11)
Application de (11) à l’ex. 6
éa d
ê
R = êb e
êëc f
gù
ú
hú
i úû
é0 0 1ù
ê
ú
= ê1 0 0ú
êë0 1 0úû
ex. 6a)
é 0 -1 0ù
ê
ú
= ê 0 0 1ú
êë-1 0 0úû
ex. 6b)
Problèmes de (11)
L’expression axe/angle de l'équation (11) présente
deux défauts majeurs pour le traitement à
l'ordinateur:
1.) La solution n'est pas unique (racine pos. ou neg.)
2.) sin(J)=0 mène à une singularité (axe non-défini)
En pratique, il y aura une mauvaise condition
numérique pour tout angle proche de 0 ou de 180°
et une erreur pour ces deux cas!
Solution: Quaternions!
Ces deux inconvénients disparaissent de
façon élégante en employant les paramètres
d'Euler*) ou quaternions ou paramètres de
Rodrigues.
Les quaternions sont employés en robotique
industrielle.
*) A ne pas confondre avec les angles d'Euler
Les quaternions sont une
généralisation des nombres complexes.
Après de longs et infructueux essais d'étendre l'interpretation géométrique des nb. complexes dans le plan (Argand,
1768-1822, mathématicien genevois) aux 3 dimensions,
Hamilton (1843) a trouvé les deux astuces nécessaires:
1.
Il n'y aura pas deux,
en plus de la partie réelle.
mais
trois
parties
imaginaires,
2.
Il faut abandonner la commutativité de la multiplication.
Partie réelle, parties imaginaires
Ces nouveaux nombres "hypercomplexes",
contiennent une partie réelle scalaire 0
et trois parties imaginaires [1 2, 3]T
qui sont interprétées comme partie vectorielle  .
le quaternion Q est donc le quadruple
Q = { 0 , 1 2, 3} = { 0 , }
(11a)
Parties imaginaires: Généralisation de
i = √(–1)
Q = { 0 , 1 2, 3} = 0 + i 1 + j 2 + k 3
(11d)
i2 = j2 = k2 = ijk = –1
ij = k = –ji
jk = i = –kj
ki = j = –ik
(11e)
Non-Commutativité!
(11f)
Comment la rotation est-elle exprimée dans
le quaternion?
• L’axe de rotation est donnée
par la partie vectorielle 
 = [1 2, 3]T
Q = { 0 , 1 2, 3} ={ 0 , }
Angle de rotation
J:
0 = cos(J/2)
|| = sin(J/2)
(11b)
L’axe de rotation disparaît pour
angles de rotation 0°, 360°, 720°…
0 = cos(J/2)
(11b)
|| = sin(J/2)
Donc tous les quaternions de rotation sont
unitaires:
02 + 12+ 22+ 2 = 1
a.k.a. Euler Parameters, Rodrigues Parameters
(11c)
i2 = j2 = k2 = –1
Les règles
ij = k = –ji
jk = i = –kj
mènent au produit
ki = j = –ik
QMQL = { 0 , } { 0 ,  } =
{ 00 – T  0 + 0  +    }
(11g)
Ce produit définit l'enchaînement des rotations QL puis QM
Exercice 8b): Exercice 7 avec des quaternions.
Passage entre quaternions et matrice des
cosinus directeurs
é 2( l20 + l12 ) –1 2( l1 l2 - l0 l3 )
ê
R = ê 2( l1 l2 + l0 l3 ) 2( l20 + l22 ) –1
êë2( l1 l3 - l0 l2 ) 2( l2 l3 + l0 l1 )
ér11
ê
êr21
êër31
r12
r22
r32
r13 ù
ú
r23 ú
r33 úû
2( l1 l3 + l0 l2 )ù
ú
2( l2 l3 - l0 l1)ú
2( l20 + l23 ) –1 úû
ésgn(r - r ) r - r - r +1ù
32
23
11
22
33
ê
ú
1
l = ê sgn(r13 - r31 ) r22 - r11 - r33 +1 ú
2ê
ú
sgn(r
r
)
r
r
r
+1
21
12
33
22
11
ë
û
1
l0 =
r11 + r22 + r33 +1
2
= cos(q/2) ≥ 0
Effort de calcul Composition de rotations
Mul.
Matrices de rot.
Quaternions
27
16
Add. & soustr.
18
12
total
45
28
Pour la rotation de vecteurs, il faut utiliser les matrices
2.1.6 Matrices homogènes 3D
Homogenous Matrices in 3D
éR3 ´ 3
ëê 01´ 3
t3 ´1 ù
1 ûú
(12)
Une rotation autour d'un axe ne passant pas par l'origine se
compose de la même façon que dans le cas 2D:
A rotation around an axis NOT through the origin is done as in 2D:
é I3 ´3
êë0
1´ 3
p3´1 ù éR
1 úûëê 0
0ù é I
1ûú êë0
-pù éR
=ê
ú
1 û ë0
p- Rpù
1 ûú
(13)
avec le vecteur p de l'origine O à un point quelconque sur l'axe de rotation
with vector p from origin O to any point on the rotation axis.
Rappel: Mouvement général 3D: Vis
(screw, Schraube)
Recall from earlier lecture: The most general motion in 3D is a screw
Différence avec le cas 2D:
Le mouvement général en 3D est équivalent à une rotation autour d'un
axe plus une translation en direction de cet axe.
A screw is a rotation around an axis plus a translation
along this axis.
Exercice 8c: Trouver matrice de transformation menant les points
A=[1 0 0]T , B=[0 0 0]T et C=[0 1 0]T
vers A'=[1 0 1]T , B'=[1 –1 1]T et C’=[0 –1 1]T
Axe, l'angle de rotation, la translation en direction de l'axe?
(Hint: A drawing is much easier than trying to solve the equations)