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 z1 = z 2 x1 y 2 y1 y 2 z1 y 2 ù x1 z 2 ú y1 z 2 ú ú z1 z 2 ú û x1 Interpretation as active transformartion of the base vectors é cos J ê = ê sin J ê 0 ë -sin J cos J 0 0 0 1 ù ú ú ú û Rotations around axes as direction cosines é x x 1 2 ê éë x 2 , y , z2 ùû = ê y x 2 2 ê 1 ê z1 x 2 ë z1 J y 1 = y2 x1 x1 y 2 y1 y 2 z1 y 2 Ex. 5: Ry=? ù x1 z 2 ú y1 z 2 ú ú z1 z 2 ú û 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 Rotation d'un angle J autour de l'axe w Solution: 1.) Rotation autour de x d’un angle f 2.) Rotation autour de z 3.) Rotation autour de x d’un angle – f Fig. 4 Passage Axe/Angle => Matrice de cos. dir. rotation d'un angle J autour de l'axe [a,b,c]T avec || [a,b,c]T|| = 1 é xx xy xz ù é 0 -z y ù é 1 0 0 ù ê ú ê ú ê ú R = (1- cos J )ê xy yy yz ú + cos J ê 0 1 0 ú + sin J ê z 0 -x ú ê xz yz zz ú ê -y x 0 ú ê 0 0 1 ú ë û ë û ë û Benjamin Olinde Rodrigues 1795 – 1851 (10) Ex. 8b) Contrôle de (10) avec ex. 6 Ex. 8 2ième solution: Formule de Rodriguez é xx xy xz ù é 0 -z y ù é 1 0 0 ù ê ú ê ú ê ú R = (1- cos J )ê xy yy yz ú + cos J ê 0 1 0 ú + sin J ê z 0 -x ú ê xz yz zz ú ê -y x 0 ú ê 0 0 1 ú ë û ë û ë û Passage Matrice de cos. dir. => Axe/Angle From direction cosines to axis/angle: é a d ê R =ê b e ê c f ë g ù ú h ú i ú û é f -h ù é x ù ú axis ê ú 1 ê ê g-c ú direction ê y ú = 2sin( J ) vector: ê ê ú ú b d ë z û ë û 1 cos(J ) = (tr(R) -1) 2 1 sin(J ) = ± ( f - h)2 + (g - c)2 + (b - d)2 2 (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 un blocage des algorithme pour ces deux cas! « Blocage de Cardan » Solution: Quaternions! Ces deux inconvénients disparaissent de façon élégante en employant les paramètres d'Euler*) 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 , } = { 00 – 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 ) é r r ê 11 12 ê r21 r22 ê êë r31 r32 r13 ù ú r23 ú ú r33 úû 2( l1 l3 + l0 l2 )ù ú 2( l2 l3 - l0 l1)ú 2( l20 + l23 ) –1 úû é ê sgn(r32 - r23 ) 1ê l = ê sgn(r13 - r31 ) 2 ê sgn(r - r ) 21 12 êë 1 l0 = r11 + r22 + r33 +1 2 ù r11 - r22 - r33 +1 ú ú r22 - r11 - r33 +1 ú r33 - r22 - r11 +1 úú û = cos(J/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. Torseur cinématique (die Kinemate, screw) Torseur statique: die Dyname, Wrench Torseur: Paire de vecteurs, un polaire et un axial The most general change of position in 3-D is a screw. A screw is a rotation around an axis plus a translation along this axis. Polar and Axial Vectors (why not discussed in geometry & lin. algebr.?) Polar vectors are independent of the coordinate system Examples: Force, velocity, acceleration, momentum (p=mv), Electric field, poynting vector Axial vectors depend on the handedness of the coordinates Examples: Moment, rotational speed w, moment of momentum (L=Iw), magnetic flux density, spin …