Conversion des angles d'Euler (plan zxz) vers angles de Cardan (plan zyx)
Bonjour à tous,
apres la lecture du FAQ concernant les angles d'euler et les quaternions, je reste sur ma faim concernant la possibilité de convertir les angles d'euler (convention zxz) vers les angles de cardan (convention zyx). Quelqu'un pourrait il m'expliquer quelle formule appliquer pour obtenir les angles de cardan à partir des angles d'euler ?
Par avance merci
Ciramor
1 pièce(s) jointe(s)
Conversion des angles d'Euler (plan zxz) vers angles de Cardan (plan zyx)
Bonjour,
La recherche documentaire sur ce sujet se révèle difficile dès qu'on entre dans les détails, parce qu'il faut consulter des articles spécialisés provenant de nombreux domaines (mécanique, aéronautique, biomécanique, animation 3D ...), et que - là comme ailleurs - chaque groupe prépare sa tambouille dans son coin, sans le moindre souci d'harmoniser ses choix avec ceux de ses voisins. L'internaute non prévenu est confronté à une telle diversité concernant le vocabulaire, la notation des angles et le choix des axes qu'il est rapidement saisi de tournis, sinon d'un franc mal de mer.
Pour faire simple :aie: (et après avoir pris un bon remontant), il faut considérer la matrice de passage des coordonnées (fixes) d'un point P(x°, y°, z°) du solide dans le repère mobile (O°x°y°z°) qui lui est lié à celles définissant la position du même point P(x, y, z) dans le repère du laboratoire (Oxyz). Cette matrice est donnée par le produit de trois matrices plus simples, correspondant aux trois rotations élémentaires (Ru, Rv, Rw) d'angles (t1, t2, t3), qui interviennent successivement autour des axes instantanés du solide, et dans un ordre déterminé; on a donc d'une manière très générale: MUVW(t1, t2, t3) = Rw(t3).Rv(t2).Ru(t1) .
Il s'agit des rotations autour des 3 axes (X, Y, Z) du repère lié au solide, de matrices respectives - en convenant de noter S = sin(t) et C = cos(t):
Code:
1 2 3 4
|
| 1 0 0 | | C 0 S | | C -S 0 |
Rx(t) = | 0 C -S | Ry(t) = | 0 1 0 | Rz(t) = | S C 0 |
| 0 S C | |-S 0 C | | 0 0 1 | |
1°) Les angles d'Euler interviennent dans la description de la rotation d'un solide autour d'un point fixe (gyroscope, planète orientée par rapport aux étoiles fixes), et mettent en jeu 2 rotations par rapport au même axe (qui prend évidemment 2 orientations différentes); on a ainsi dans le cas présent: MZXZ = Rz(e3).Rx(e2).Rz(e1) , où:
- (e1) représente l'angle de précession (Psi),
- (e2) l'angle de nutation (Thêta), et
- (e3) l'angle de gyration (Phi).
2°) Les angles de Cardan sont utilisés pour les mobiles à 6 degrés de liberté (avions, bateaux) et se réfèrent à 3 axes déterminés:
- un axe longitudinal (O°x°), dirigé vers l'avant dans le sens du mouvement de translation, parallèle à la ligne de flottaison;
- un axe transverse (ou latéral, O°y°), dirigé vers la droite du pilote et parallèle à la ligne des ailes;
- un axe normal (O°z°), perpendiculaire à la plate-forme (x°O°y°) et orienté verticalement et vers le bas quand le véhicule est à l'arrêt.
Pièce jointe 196382
Ces conventions d'axes varient malheureusement d'un article à l'autre, et les schémas montrent parfois des repères indirects !:furieux:
La définition des axes est donc ici plus importante que la notation adoptée (x, y, z).
On a dans ce cas: MZYX = Rx(t3).Ry(t2).Rz(t1), où:
- (t1) représente l'angle de lacet (yaw) - autour de (Z),
- (t2) l'angle de tangage (pitch) - autour de (Y), et
- (t3) l'angle de roulis (roll) - autour de (X).
L'exemple proposé (MZYX) correspond bien à la séquence "yaw, pitch & roll".
On trouvera ici l'expression simplifiée des matrices (MZXZ) et (MZYX) dans le tableau complet des 12 combinaisons possibles; j'ai recalculé les 2 résultats - il faut être toujours vigilant.
Il faut ajouter que parfois (c'est le cas de la référence précédente, pourtant de bonne qualité), l'expression des matrices de rotation (MUVW) diffère de celle du produit des matrices élémentaires correspondantes (Ru, Rv ,Rw) mentionnées quelques lignes plus haut: les une et les autres se réfèrent alors à des transferts de sens opposés (repère fixe <-> repère mobile), ce que l'on peut ne pas voir après un survol trop rapide du texte anglais (je suis tombé dans le panneau :D ).
Cependant, on passe sans trop de difficulté d'une matrice à son inverse; on vérifie en effet immédiatement: (Ru(t))-1 = Ru(-t) ce qui conduit au résultat intuitif: (MUVW(t1, t2, t3))-1 = MWVU(-t3, -t2, -t1) .
Répondre à ta question
Citation:
Envoyé par
ciramor44
... Après la lecture de la FAQ concernant les angles d'Euler et les quaternions, je reste sur ma faim concernant la possibilité de convertir les angles d'Euler (convention zxz) vers les angles de Cardan (convention zyx). Quelqu'un pourrait il m'expliquer quelle formule appliquer pour obtenir les angles de Cardan à partir des angles d'Euler ?
revient par conséquent à résoudre l'égalité matricielle: MZYX(t1, t2, t3) = MZXZ(e1, e2, e3) , donc un système de 9 équations trigonométriques à trois inconnues (t1, t2, t3), et dont il n'est pas évident qu'il admette une ou une seule solution.
Cependant (MZYX) est une matrice orthogonale, pour laquelle la somme des carrés des coefficients vaut l'unité, sur chacune des lignes et des colonnes: le système à résoudre n'est donc pas surdéterminé, puisque le nombre d'équations réellement indépendantes tombe à 9 - 6 = 3 .
Tu pourrais t'inspirer de la méthode proposée pour un problème apparenté :faq: