Comment l’orientation dans l’espace est-elle représentée par les angles d’Euler ?

Share

By Ilian Bonev, Ph.D., Eng.

Si vous utilisez un bras robotisé à six axes, comme le Meca500 de Mecademic utilisé dans ce tutoriel, vous êtes probablement intéressé par le positionnement de son outil (end-effecteur) dans différentes orientations. En d’autres termes, vous devez être en mesure de programmer votre robot pour qu’il déplace son effecteur à la fois vers une position souhaitée ET vers une orientation souhaitée (c’est-à-dire vers un pose). Bien entendu, il est toujours possible d’actionner l’effecteur de votre robot ou de le guider à la main pour qu’il prenne approximativement la pose souhaitée, mais ce soi-disant méthode de programmation en ligne est fastidieuse et très imprécise. Il est beaucoup plus efficace de calculer et de définir la pose souhaitée hors ligne. En outre, pour définir la cadre de référence de l’outil associé à votre effecteur (comme dans la figure ci-dessous), vous devez calculer la pose de ce cadre de référence de l’outil par rapport au cadre de référence de la bride.

Euler Angles
You need to know Euler angles in order to define your tool reference frame

Ians l’espace 3D, il faut au minimum six paramètres pour définir une pose. Par exemple, la position de l’effecteur du robot, ou plus précisément du TCP (point central de l’outil), est généralement défini comme les coordonnées x, y et z de l’origine du cadre de référence de l’outil par rapport au cadre de référence du monde. Mais comment définir l’orientation dans l’espace ?

« La représentation de l’orientation dans l’espace est une question complexe.

La représentation de l’orientation dans l’espace est une question complexe. théorème de rotation d’Euler stipule que, dans l’espace (3D), tout déplacement d’un corps rigide de telle sorte qu’un point du corps rigide reste fixe est équivalent à une rotation unique autour d’un axe qui passe par le point fixe. Par conséquent, une telle rotation peut être décrite par trois paramètres indépendants : deux pour décrire l’axe et un pour l’angle de rotation. L’orientation dans l’espace peut cependant être représentée de plusieurs autres manières, chacune ayant ses propres avantages et inconvénients. Certaines de ces représentations utilisent plus que le minimum nécessaire de trois paramètres.

La manière la plus courante de transformer les coordonnées de position d’un cadre de référence cartésien (3D), F, en un autre, F’, est la matrice de rotation. Cette matrice 3×3 peut donc être utilisée pour représenter l’orientation du cadre de référence F’  par rapport au cadre de référence F. Cependant, cette représentation, bien que souvent nécessaire comme nous le découvrirons plus tard, n’est pas une manière compacte et intuitive de définir l’orientation.

Une autre façon beaucoup plus compacte de définir l’orientation est le quaternion. Cette forme de représentation consiste en un vecteur normalisé de quatre scalaires. Le quaternion est généralement utilisé dans les contrôleurs de robots, car il est non seulement plus compact que la matrice de rotation, mais aussi moins sensible aux erreurs d’approximation. De plus, lors d’une interpolation entre deux orientations différentes, les éléments du quaternion changent continuellement, ce qui évite les discontinuités inhérentes aux paramétrages tridimensionnels tels que les angles d’Euler. Néanmoins, le quaternion est rarement utilisé comme moyen de communication entre un utilisateur et le contrôleur du robot parce qu’il n’est pas intuitif. (Pour plus d’informations, voir notre tutoriel sur les quaternions).

Définition détaillée des angles d’Euler

La façon la plus courante de communiquer une orientation dans l’espace à un utilisateur, ou de permettre à un utilisateur de définir une orientation, dans un logiciel de CAO ou dans un contrôleur de robot, est l’utilisation de angles d’Euler. Le terme « angles d’Euler » étant souvent mal utilisé, nous avons préparé ce didacticiel interactif.

« […] le terme angles d’Euler est souvent mal utilisé […] »

Les angles d’Euler sont un ensemble (ou plutôt une séquence) de trois angles, qui peuvent être désignés par exemple par α, β, et γ. (Souvent, les angles d’Euler sont désignés par rouleau, pitch, et lacet). Les angles d’Euler sont définis comme suit : Considérons deux cadres de référence cartésiens 3D droits, dont l’un sera arbitrairement appelé le cadre fixe et l’autre le cadre mobile. Les deux cadres de référence coïncident initialement. Pour définir l’orientation d’un troisième repère (les trois repères ont la même origine), le repère mobile est amené, dans l’ordre indiqué ci-dessous, à coïncider avec le troisième repère par rotation du repère mobile

  1. autour de l’axe x, y, ou z du cadre fixe ou de l’axe x’, y’, ou z’  du cadre mobile, de α degrés,
  2. puis autour de l’axe x, y, ou z du cadre fixe ou de l’axe x’, y’, ou z’  du cadre mobile, de β degrés,
  3. et enfin autour de l’axe x, y, ou z du cadre fixe ou de l’axe x’, y’, ou z’  du cadre mobile, de γ degrés.

L’ordre dans lequel les trois rotations sont effectuées est important. Ainsi, nous avons un total de 216 (63) séquences possibles : xyz, yyz, zyz, x’yz, y’yz, z’yz, et ainsi de suite. Toutefois, une séquence de trois rotations dans laquelle deux rotations consécutives se font autour du même axe (par exemple, yyz) ne peut pas décrire une orientation générale. De plus, avant la première rotation, x coïncide avec x’, y coïncide avec y’, et z coïncide avec z’. Par conséquent, parmi ces 216 combinaisons, il n’existe que douze séquences ordonnées uniques et significatives de rotations, ou douze conventions d’angle d’Euler : XYX, XYZ, XZX, XZY, YXY, YXZ, YZX, YZY, ZXY, ZXZ, ZYX, ZYZ.

Cela dit, chacune des douze combinaisons est équivalente à trois autres séquences. En d’autres termes, chaque convention d’angle d’Euler peut être décrite de quatre manières différentes. Par exemple, la convention ZYX est équivalente aux séquences zyx, x’y’z’, yz’x et yxz’. Heureusement, personne ne décrit les angles d’Euler avec des séquences dans lesquelles certaines rotations se font autour des axes du cadre mobile et d’autres autour des axes fixes (par exemple, des séquences comme yz’x et yxz’).

Ainsi, bien qu’il existe douze conventions d’angle d’Euler différentes, chacune est généralement décrite de deux manières différentes : soit comme une séquence de rotations autour des axes du cadre fixe, soit comme une séquence de rotations autour des axes du cadre mobile. Il peut donc être commode de parler de conventions fixes et mobiles, bien qu’elles soient équivalentes. Par exemple, la convention d’angle d’Euler XYZ fixe est décrite par la séquence xyz, tandis que la convention d’angle d’Euler ZYX mobile est décrite par la séquence z’y’x’  mais les deux sont équivalentes, comme nous le verrons plus loin.

En robotique, FANUC et KUKA utilisent la convention d’angle d’Euler XYZ fixe, tandis qu’ABB utilise la convention d’angle d’Euler ZYX mobile. En outre, Kawasaki, Omron Adept Technologies et Stäubli utilisent la convention d’angle d’Euler ZYZ mobile. Enfin, les angles d’Euler utilisés dans CATIA et SolidWorks sont décrits par la convention d’angle d’Euler ZYZ mobile.

« Chez Mecademic, nous utilisons la convention de l’angle d’Euler XYZ mobile.

Chez Mecademic, nous utilisons la convention d’angle d’Euler mobile XYZ, et décrivons donc les angles d’Euler comme la séquence x’y’z’. Pourquoi cette différence ? La raison est que nous proposions auparavant une pince mécanique pour la manipulation de pièces axisymétriques (see video), qui était actionnée par le moteur de l’articulation 6. Un robot à six axes équipé d’une telle pince ne peut contrôler que deux degrés de liberté en rotation, ou plus précisément la direction de l’axe de l’articulation 6, c’est-à-dire la direction de l’axe de symétrie de la pièce. Dans la convention d’angle d’Euler choisie, les angles α et β définissent cette direction, tandis que l’angle γ est ignoré car il correspond à une rotation parasite incontrôlable.

L’applet ci-dessous vous aidera à comprendre les angles d’Euler. Vous pouvez sélectionner l’une des douze conventions d’angle d’Euler possibles en cliquant sur les cases x, y et z de la première, de la deuxième et de la troisième rotation. (La séquence d’angles d’Euler par défaut est celle utilisée par Mecademic.) Pour passer d’une rotation autour des axes du cadre fixe ou mobile à une autre, vous devez double-cliquer sur l’une de ces neuf cases. Les axes du cadre fixe sont dessinés en gris tandis que les axes du cadre mobile sont dessinés en noir. Les axes x et x’  sont dessinés en rouge, y et y’  en vert, et z et z’  en bleu. En glissant le long de l’une des trois flèches horizontales bleues avec votre souris, vous modifiez l’angle d’Euler correspondant. Vous pouvez également définir directement la valeur de l’angle d’Euler (en degrés) dans la zone de texte correspondante située sous la flèche. Enfin, vous pouvez faire glisser votre souris sur le cadre de référence pour changer de point de vue.

Your browser does not support SVG

α :     β :     γ :     
R = Rx(0°) Rx(0°)
Rx(0°) = 
 
n/an/an/a
n/an/an/a
n/an/an/a
 

Calcul des angles d’Euler par les matrices de rotation

Avec l’applet ci-dessus, vous verrez l’orientation du cadre mobile par rapport au cadre fixe, pour un ensemble donné d’angles d’Euler, dans la sous-figure de droite. Malheureusement, dans la pratique, la situation est généralement inverse. Vous avez souvent deux cadres de référence et vous souhaitez trouver les angles d’Euler qui décrivent l’orientation d’un cadre par rapport à l’autre.

Pour les orientations dans lesquelles au moins deux axes sont parallèles, vous pouvez essayer de deviner les angles d’Euler par tâtonnement. Par exemple, regardez l’image au début de ce tutoriel et essayez de trouver les angles d’Euler utilisés par Mecademic qui définissent l’orientation du cadre de référence de l’outil associé à la pince, par rapport au cadre de référence de la bride. La réponse est α = -90°, β = 0°, γ = -90°. Pas si facile à obtenir, n’est-ce pas ? Pour être plus efficace, il faut donc apprendre à connaître les matrices de rotation.

Comme nous l’avons déjà mentionné, toute orientation dans l’espace peut être représentée par une matrice de rotation 3×3. Par exemple, une rotation de α autour de l’axe x, une rotation de β autour de l’axe y, et une rotation de γ autour de l’axe z, correspondent respectivement aux trois matrices de rotation suivantes :

Rx(α) =
 
100
0cos(α)−sin(α)
0sin(α)cos(α)
 ,
Ry(β) =
 
cos(β)0sin(β)
010
−sin(β)0cos(β)
 ,
Rz(γ) =
 
cos(γ)−sin(γ)0
sin(γ)cos(γ)0
001
 .

Nous ferons référence aux matrices ci-dessus comme matrices rotatives de base. Pour obtenir le produit de matrices de rotation de base correspondant à une séquence de rotations, commencez par écrire la matrice de rotation de base correspondant à la première rotation. Par exemple, si la première rotation se fait autour de l’axe x (ou x’ ), écrivez Rx(ψ), où ψ  est l’angle de rotation. Pour chaque rotation suivante, post-multiplier (multiplier à droite) le résultat actuel avec la matrice de rotation suivante, si la rotation se fait autour d’un axe du cadre de référence mobile, ou pré-multiplier (multiplier à gauche) le résultat actuel avec la matrice de rotation suivante, si la rotation se fait autour d’un axe du cadre de référence fixe. Utilisez notre applet pour voir le produit résultant des matrices de rotation de base. Par exemple, la séquence de rotation x’y’z’  correspond au produit R = Rx(α)Ry(β)Rz(γ). Ainsi, la matrice de rotation correspondant aux angles d’Euler utilisés par Mecademic est :

R(α, β, γ) =
 
cos(β)cos(γ)−cos(β)sin(γ)sin(β)
cos(α)sin(γ) + sin(α)sin(β)cos(γ)cos(α)cos(γ) − sin(α)sin(β)sin(γ)−sin(α)cos(β)
sin(α)sin(γ) − cos(α)sin(β)cos(γ)sin(α)cos(γ) + cos(α)sin(β)sin(γ)cos(α)cos(β)
 .

Par conséquent, pour une orientation donnée, vous devrez faire deux choses : Premièrement, vous devez trouver la matrice de rotation qui correspond à votre orientation. Deuxièmement, vous devez extraire les angles d’Euler à l’aide de quelques équations simples. Nous allons d’abord vous montrer deux façons de trouver votre matrice de rotation.

Prenons l’exemple de la figure ci-dessous, où nous devons trouver la matrice de rotation représentant l’orientation de l’image F’  par rapport à l’image F. (Rappelons que nous représentons toujours l’axe x en rouge, l’axe y en vert et l’axe z en bleu).

Example of representing the orientation of one reference frame with respect to another
Example of representing the orientation of one reference frame with respect to another

Ici, il est facile de voir que si nous alignons un troisième référentiel avec F, qui agira comme un référentiel mobile, puis faisons tourner ce référentiel autour de son z’  axe à θ – 90°, puis le faisons tourner autour de son y’  axe à φ degrés, nous obtiendrons l’orientation de F’. La matrice de rotation recherchée est donc la suivante :

Rdesired = Rz(θ − 90°)Ry(φ) =
 
sin(θ)cos(φ)cos(θ)sin(θ)sin(φ)
−cos(θ)cos(φ)sin(θ)−cos(θ)sin(φ)
−sin(φ)0cos(φ)
 .

Nous pouvons également obtenir directement la matrice de rotation ci-dessus. Ses première, deuxième et troisième colonnes représentent les coordonnées des vecteurs unitaires le long des axes x, y et z, respectivement, du cadre F’, par rapport au cadre F.

Maintenant que vous disposez de la matrice de rotation qui représente l’orientation souhaitée, il vous suffit de résoudre le système de neuf équations trigonométriques scalaires Rdesired = R(α,β,γ), pour α, β, et γ. Heureusement, ce problème a une solution générique et nous allons simplement vous donner les équations à utiliser.

L’orientation souhaitée d’un cadre F’  par rapport à un cadre F est représentée par la matrice de rotation suivante :

Rdesired =
 
r1,1r1,2r1,3
r2,1r2,2r2,3
r3,1r3,2r3,3
 .

Les angles d’Euler (en degrés), conformément à la convention XYZ mobile utilisée par Mecademic, sont ensuite obtenus selon les deux cas suivants :

Cas 1: r1,3 ≠ ±1 (c’est-à-dire que l’axe z’  du cadre F’  n’est pas parallèle à l’axe x du cadre F).

β = asin(r1,3), γ = atan2(-r1,2, r1,1), α = atan2(-r2,3, r3,3).

Cas 2: r1,3 = ±1 (c’est-à-dire que l’axe z’  du cadre F’  est parallèle à l’axe x du cadre F).

β = r1,390°, γ = atan2(r2,1, r2,2), α = 0°.

Dans le cas général 1, nous avons en fait deux ensembles de solutions où tous les angles sont dans la plage semi-ouverte (-180°, 180°). Cependant, il est inutile de calculer les deux ensembles de solutions, donc seul le premier est présenté, dans lequel -90° < ; β < ; 90°. Notez également que nous utilisons la fonction atan2(y, x) dans notre solution. Attention, dans certains langages de programmation, dans certaines calculatrices scientifiques et dans la plupart des tableurs, les arguments de cette fonction sont inversés.

Enfin, notons que le cas 2 correspond à ce que l’on appelle un singularité de représentation. Cette singularité est présente dans toute représentation à trois paramètres de l’orientation dans l’espace 3D (et pas seulement dans le choix des angles d’Euler de Mecademic). Elle est similaire au problème de la représentation des points sur une sphère par seulement deux paramètres. Par exemple, la longitude n’est pas définie sur Terre aux pôles Sud et Nord. En d’autres termes, cette singularité n’a rien à voir avec les singularités des mécanismes (par exemple, le soi-disant blocage de cardan), qui correspondent à des problèmes physiques réels (par exemple, la perte d’un degré de liberté).

Exercice

Prenons l’exemple d’une situation réelle qui s’est présentée à nous. Nous voulions fixer une valve de distribution FISNAR à l’effecteur de notre bras robotisé Meca500. Naturellement, l’ingénieur qui a conçu et usiné l’adaptateur ne se souciait pas des angles d’Euler, mais uniquement de l’usinabilité et de l’accessibilité. Dans sa conception, il y avait essentiellement deux rotations de 45°. Tout d’abord, il a utilisé deux trous filetés diamétralement opposés sur la bride du robot pour fixer l’adaptateur, ce qui a provoqué la première rotation de 45°. Deuxièmement, l’angle entre le plan d’interface de la bride et l’axe du distributeur était de 45°.

Example of the difficulty in finding the Euler angles
Example of the difficulty in finding the Euler angles

La figure ci-dessus montre l’installation actuelle (à gauche) et le cadre de l’outil (à droite) qui a dû être défini. Notez que lors de l’utilisation d’outils à symétrie axiale, il est courant d’aligner l’axe z de l’outil avec l’axe de l’outil, mais cette pratique peut être erronée. Cette pratique est utile avec la convention d’angle d’Euler XYZ mobile, puisque la rotation redondante autour de l’outil axi-symétrique correspond au troisième angle d’Euler, γ. Ainsi, les deux premiers angles d’Euler définissent l’axe de l’outil, tandis que le troisième peut être utilisé pour choisir la configuration optimale du robot (c’est-à-dire loin des singularités). Ainsi, si votre robot utilise la convention d’angle d’Euler mobile ZYX, vous devez aligner l’axe x de l’outil avec l’axe de l’outil.

« Lors de l’utilisation d’outils à symétrie axiale, il est courant d’aligner l’axe z de l’outil avec l’axe de l’outil, mais cette pratique peut être erronée ».

Reprenant notre exemple, nous allons maintenant montrer qu’il est impossible de trouver par tâtonnement les angles d’Euler selon la convention XYZ mobile. En effet, pour ce choix de référentiel d’outil, on peut représenter l’orientation finale comme une séquence des deux rotations suivantes : R = Rz(45°)Ry(45°). A partir de là, nous pouvons extraire les angles d’Euler selon la convention mobile XYZ en utilisant les équations décrites précédemment et obtenir : α = -35,264°, β = 30,000°, γ = 54,735°. Êtes-vous maintenant convaincu que vous devez maîtriser les angles d’Euler pour des situations comme celle-ci ?

Singularités de représentation et erreurs d’orientation

Dans le cas de la convention d’angle d’Euler XYZ mobile, si l’axe z’  du cadre F’  est parallèle à l’axe x du cadre F, il existe une infinité de paires de α et γ qui définiront la même orientation. Il est évident que vous n’en avez besoin que d’une seule pour définir l’orientation souhaitée, c’est pourquoi nous avons arbitrairement fixé α à zéro. Plus précisément, si β = 90°, toute combinaison de α et γ, telle que α + γ = φ, où φ est une valeur quelconque, correspondra à la même orientation et sera émise par le contrôleur Mecademic sous la forme de {0, 90°, φ}. De même, si β = -90°, toute combinaison de α et γ, telle que αγ = φ, où φ est une valeur quelconque, correspondra à la même orientation et sera émise par le contrôleur Mecademic sous la forme {0, -90°, –φ}. Notez cependant que si vous essayez de représenter l’orientation d’un cadre F’  par rapport à un cadre F et que l’axe z’  du cadre F’  est presque parallèle à l’axe x du cadre F (c.-à-d.., β est très proche de ±90°), les angles d’Euler seront très sensibles aux erreurs numériques. Dans ce cas, vous devez saisir autant de chiffres que possible après la virgule lorsque vous définissez l’orientation à l’aide des angles d’Euler.

Considérons la situation suivante, qui a causé des soucis à plusieurs utilisateurs de notre Meca500. Vous fixez l’orientation du cadre de référence de l’outil par rapport au cadre de référence du monde à {0°, 90°, 0°}, ce qui constitue une singularité de représentation. Vous conservez ensuite cette orientation et déplacez l’effecteur dans l’espace sur plusieurs positions. À certaines positions, en raison du bruit numérique, le contrôleur ne détecte pas la condition r1,3 = ±1 (cas 2, comme mentionné ci-dessus) et calcule les angles d’Euler comme si l’orientation ne correspondait pas à une singularité de représentation. Ainsi, le contrôleur renvoie quelque chose comme {41,345°, 90,001°, -41,345°}, ce qui semble totalement erroné et très éloigné de {0°, 90°, 0°}. Ce n’est pas le cas.

Contrairement aux erreurs de position, qui sont mesurées comme √(Δx2 + Δy2 + Δz2), les erreurs d’orientation ne sont pas directement liées aux variations des angles d’Euler, en particulier à proximité des singularités de représentation. Pour mieux comprendre la nature non euclidienne des angles d’Euler, considérons les coordonnées sphériques utilisées pour représenter un lieu sur Terre. Au pôle Nord, la latitude est de 90° (Nord), mais quelle est la longitude ? La longitude n’est pas définie au pôle Nord, ou alors elle peut prendre n’importe quelle valeur. Imaginons maintenant que nous nous éloignions du pôle Nord de seulement 1 mm en direction de Greenwich. Dans ce cas, la latitude sera de 89,99999999°, mais la longitude aura alors la valeur de 0°. Imaginez que vous reveniez au pôle Nord et que vous vous déplaciez de 1 mm en direction de Tokyo. La nouvelle longitude sera d’environ 140°. Entre vos deux endroits, l’erreur de longitude est de 140° ! Cependant, l’erreur angulaire réelle sera d’environ 0,00000002°.

La situation décrite ci-dessus est similaire dans toutes les autres conventions d’angles d’Euler. Selon la convention de l’angle d’Euler, la singularité de représentation correspondante se produit lorsqu’un axe spécifique du cadre F’  est parallèle à un autre axe spécifique du cadre F. Dans une telle singularité de représentation, la première et la troisième rotation deviennent dépendantes.

En conclusion, à moins de maîtriser les angles d’Euler (ou d’utiliser un logiciel de programmation hors ligne sophistiqué), et plus particulièrement la convention utilisée pour programmer votre robot, vous ne serez guère en mesure de programmer autre chose que de simples opérations de prise et de dépose. Parce que la robotique n’est pas simple, nous faisons de notre mieux pour vous aider à comprendre les bases.

© Mecademic Inc. La reproduction de ce tutoriel, en tout ou en partie, est strictement interdite.

Share

Les commentaires sont fermés.