Si vous utilisez un bras robotisé à six axes, comme le Meca500 de Mecademic utilisé dans ce tutoriel à titre d’exemple, vous êtes très probablement intéressé par le positionnement de son outil (effecteur final) dans différentes orientations. En d’autres termes, vous devez être capable de programmer votre robot pour qu’il déplace son effecteur à la fois vers une position désirée ET vers une orientation désirée (c’est-à-dire vers une pose désirée). Bien sûr, vous pouvez toujours déplacer l’effecteur de votre robot ou le guider à la main jusqu’à la position souhaitée, mais cette 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 le 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.
Vous devez connaître les angles d’Euler pour définir le cadre de référence de votre outil.
Dans l’espace 3D, il faut au moins 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éfinie 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 mondial. 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. Le 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 loin, 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.
Définition détaillée des angles d’Euler
La manière 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 de loin l’utilisation des 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 roulis, tangage 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 en faisant pivoter le repère mobile
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,
puis autour de l’axe x, y, ou z du cadre fixe ou x’, y’, ou z’ du cadre mobile, de β degrés,
et enfin autour de l’axe x, y, ou z du cadre fixe ou 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 : x→y→z, y→y→z, z→y→z, x’→y→z, y’→y→z, z’→y→z, etc. Toutefois, une séquence de trois rotations dans laquelle deux rotations consécutives se font autour du même axe (par exemple, y→y→z) ne peut pas décrire une orientation générale. En outre, 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 z→y→x, x’→y’→z’, y→z’→x et y→x→z’. 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 y→z’→x et y→x→z’).
Ainsi, bien qu’il existe douze conventions d’angle d’Euler différentes, chacune est typiquement 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 x→y→z, 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. Par ailleurs, 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 d’angle d’Euler XYZ mobile ».
Chez Mecademic, nous utilisons la convention d’angle d’Euler XYZ mobile, 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 (voir la vidéo), 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.
Notre applet ci-dessous vous aidera à comprendre les angles d’Euler. Vous pouvez sélectionner l’une des douze conventions d’angles 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 du cadre mobile, 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.
var imgsvg = document.getElementById("svg");
var wdth = imgsvg.offsetWidth;
imgsvg.height=wdth/2.4;
α :
β :
γ :
R = Rx(0°) Rx(0°) Rx(0°) =
n/a
n/a
n/a
n/a
n/a
n/a
n/a
n/a
n/a
Calcul des angles d’Euler via 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 voulez 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(α) =
1
0
0
0
cos(α)
−sin(α)
0
sin(α)
cos(α)
,
Ry(β) =
cos(β)
0
sin(β)
0
1
0
−sin(β)
0
cos(β)
,
Rz(γ) =
cos(γ)
−sin(γ)
0
sin(γ)
cos(γ)
0
0
0
1
.
Nous appellerons ces matrices des matrices de rotation de base. Pour obtenir le produit de matrices rotation de base correspondant à une séquence de rotations, commencez par écrire la matrice rotation de base correspondant à la première rotation. Par exemple, si la première rotation se fait autour de l’axe x (ou x’), on écrit 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 du cadre F’ par rapport au cadre F. (Rappelons que nous représentons toujours l’axe x en rouge, l’axe y en vert et l’axe z en bleu).
Exemple de représentation de l’orientation d’un cadre de référence par rapport à un autre
Ici, il est facile de voir que si l’on aligne un troisième référentiel avec le F, qui servira de référentiel mobile, puis que l’on fait pivoter ce référentiel autour de son axe z’ à θ – 90°, puis que l’on fait pivoter ce référentiel autour de son axe y’ à φ degrés, on obtiendra l’orientation du 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(φ)
0
cos(φ)
.
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.
Soit l’orientation souhaitée d’un cadre F’ par rapport à un cadre F représentée par la matrice de rotation suivante :
Rdesired =
r1,1
r1,2
r1,3
r2,1
r2,2
r2,3
r3,1
r3,2
r3,3
.
Les angles d’Euler (en degrés), conformément à la convention XYZ mobile utilisée par Mecademic, sont alors 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).
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 l’intervalle semi-ouvert (-180°, 180°). Cependant, il est inutile de calculer les deux ensembles de solutions, c’est pourquoi 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 à une singularité dite 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 fameux gimbal lock), qui correspondent à des problèmes physiques réels (par exemple, la perte d’un degré de liberté).
Exercice 1
Considérez la situation réelle suivante qui nous est apparue. 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 s’est pas soucié 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
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 axi-symétriques, il est courant d’aligner l’axe z de l’outil avec l’axe de l’outil. Ceci est particulièrement utile avec la convention d’angle d’Euler XYZ mobile, puisque la rotation redoutable 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.-à-d. loin des singularités).
« Lors de l’utilisation d’outils axi-symétriques, il est courant d’aligner l’axe z de l’outil avec l’axe de l’outil ».
Reprenant notre exemple, nous allons montrer maintenant 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 suite des deux rotations suivantes : R = Rz(45°)Ry(45°). A partir de là, nous pouvons extraire les angles d’Euler selon la convention XYZ mobile à l’aide des équations décrites précédemment et obtenir : α = -35,264°, β = 30,000°, γ = 54,735°.
Etes-vous convaincu que vous devez maîtriser les angles d’Euler pour des situations comme celle-ci ?
Exercice 2
Voici un autre exemple concret, inspiré par l’un de nos clients. Un cadre de référence d’outil (TRF) devait être défini à l’aide d’angles d’Euler, de sorte que son axe z se situe le long d’un outil axisymétrique. Les axes x et y de ce cadre n’étaient pas pertinents. Pour des raisons que nous ne pouvons pas divulguer, la direction de l’axe z du TRF a été définie par les angles que ses projections sur les plans xz et yz du cadre de référence de la bride (FRF) font avec l’axe z du FRF. Ceci est illustré dans la figure ci-dessous, où les axes du FRF sont désignés par x0, y0 et z0, et l’axe z du TRF est désigné par z1.
Encore un exemple concret de la difficulté de trouver les angles d’Euler
Dans un premier temps, nous pensions qu’une TRF définie par la matrice de rotation suivante respectait les conditions de notre client : R = Rx(-30°)Ry(60°). Ensuite, nous avons affirmé qu’une TRF définie par la matrice de rotation suivante respectait également les conditions : R = Ry(60°)Rx(-30°). Nous nous sommes lourdement trompés. La solution est un peu plus complexe…
Soit ax, ay et az les coordonnées du vecteur unitaire le long de l’axe z1 exprimé dans la FRF. Puisque nous avons ax/az = tan(60°) et ay/az = tan(30°), et bien sûr ax2 + ay2 + az2 = 1, nous pouvons trouver ax = 0,832, ay = 0,277, et az = 0,480. Ces trois paramètres sont en fait les éléments r1,3, r2,3 et r3,3, respectivement, de la matrice de rotation définissant la TRF par rapport à la FRF. En utilisant les équations données ci-dessus pour les angles d’Euler utilisés par Mecademic, c’est-à-dire α = atan2(-r2,3, r3,3) et β = asin(r1,3), nous pouvons trouver que α = -30°, et β = 56,310°. L’angle γ est arbitraire.
Faut-il donner d’autres exemples pour vous montrer l’importance de la maîtrise des angles d’Euler ?
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 repère F’ est parallèle à l’axe x du repère 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’est-à-dire que β est très proche de ±90°), les angles d’Euler seront très sensibles aux erreurs numériques. Dans un tel cas, vous devez entrer 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 définissez l’orientation du cadre de référence de l’outil par rapport au cadre de référence mondial sur {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 cette 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 des angles d’Euler, la singularité de représentation correspondante se produit lorsqu’un axe spécifique du repère F’ est parallèle à un autre axe spécifique du repère 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.
Ilian Bonev, Ph.D., Eng.
Si vous utilisez un bras robotisé à six axes, comme le Meca500 de Mecademic utilisé dans ce tutoriel à titre d’exemple, vous êtes très probablement intéressé par le positionnement de son outil (effecteur final) dans différentes orientations. En d’autres termes, vous devez être capable de programmer votre robot pour qu’il déplace son effecteur à la fois vers une position désirée ET vers une orientation désirée (c’est-à-dire vers une pose désirée). Bien sûr, vous pouvez toujours déplacer l’effecteur de votre robot ou le guider à la main jusqu’à la position souhaitée, mais cette 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 le 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.
Dans l’espace 3D, il faut au moins 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éfinie 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 mondial. 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. Le 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 loin, 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.
Définition détaillée des angles d’Euler
La manière 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 de loin l’utilisation des 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 roulis, tangage 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 en faisant pivoter le repère mobile
L’ordre dans lequel les trois rotations sont effectuées est important. Ainsi, nous avons un total de 216 (63) séquences possibles : x→y→z, y→y→z, z→y→z, x’→y→z, y’→y→z, z’→y→z, etc. Toutefois, une séquence de trois rotations dans laquelle deux rotations consécutives se font autour du même axe (par exemple, y→y→z) ne peut pas décrire une orientation générale. En outre, 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 z→y→x, x’→y’→z’, y→z’→x et y→x→z’. 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 y→z’→x et y→x→z’).
Ainsi, bien qu’il existe douze conventions d’angle d’Euler différentes, chacune est typiquement 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 x→y→z, 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. Par ailleurs, 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 d’angle d’Euler XYZ mobile ».
Chez Mecademic, nous utilisons la convention d’angle d’Euler XYZ mobile, 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 (voir la vidéo), 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.
Notre applet ci-dessous vous aidera à comprendre les angles d’Euler. Vous pouvez sélectionner l’une des douze conventions d’angles 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 du cadre mobile, 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.
var imgsvg = document.getElementById("svg");
var wdth = imgsvg.offsetWidth;
imgsvg.height=wdth/2.4;
Calcul des angles d’Euler via 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 voulez 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 :
Nous appellerons ces matrices des matrices de rotation de base. Pour obtenir le produit de matrices rotation de base correspondant à une séquence de rotations, commencez par écrire la matrice rotation de base correspondant à la première rotation. Par exemple, si la première rotation se fait autour de l’axe x (ou x’), on écrit 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 :
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 du cadre F’ par rapport au cadre F. (Rappelons que nous représentons toujours l’axe x en rouge, l’axe y en vert et l’axe z en bleu).
Ici, il est facile de voir que si l’on aligne un troisième référentiel avec le F, qui servira de référentiel mobile, puis que l’on fait pivoter ce référentiel autour de son axe z’ à θ – 90°, puis que l’on fait pivoter ce référentiel autour de son axe y’ à φ degrés, on obtiendra l’orientation du F’. La matrice de rotation recherchée est donc la suivante :
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.
Soit l’orientation souhaitée d’un cadre F’ par rapport à un cadre F représentée par la matrice de rotation suivante :
Les angles d’Euler (en degrés), conformément à la convention XYZ mobile utilisée par Mecademic, sont alors 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 l’intervalle semi-ouvert (-180°, 180°). Cependant, il est inutile de calculer les deux ensembles de solutions, c’est pourquoi 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 à une singularité dite 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 fameux gimbal lock), qui correspondent à des problèmes physiques réels (par exemple, la perte d’un degré de liberté).
Exercice 1
Considérez la situation réelle suivante qui nous est apparue. 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 s’est pas soucié 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°.
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 axi-symétriques, il est courant d’aligner l’axe z de l’outil avec l’axe de l’outil. Ceci est particulièrement utile avec la convention d’angle d’Euler XYZ mobile, puisque la rotation redoutable 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.-à-d. loin des singularités).
« Lors de l’utilisation d’outils axi-symétriques, il est courant d’aligner l’axe z de l’outil avec l’axe de l’outil ».
Reprenant notre exemple, nous allons montrer maintenant 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 suite des deux rotations suivantes : R = Rz(45°)Ry(45°). A partir de là, nous pouvons extraire les angles d’Euler selon la convention XYZ mobile à l’aide des équations décrites précédemment et obtenir : α = -35,264°, β = 30,000°, γ = 54,735°.
Etes-vous convaincu que vous devez maîtriser les angles d’Euler pour des situations comme celle-ci ?
Exercice 2
Voici un autre exemple concret, inspiré par l’un de nos clients. Un cadre de référence d’outil (TRF) devait être défini à l’aide d’angles d’Euler, de sorte que son axe z se situe le long d’un outil axisymétrique. Les axes x et y de ce cadre n’étaient pas pertinents. Pour des raisons que nous ne pouvons pas divulguer, la direction de l’axe z du TRF a été définie par les angles que ses projections sur les plans xz et yz du cadre de référence de la bride (FRF) font avec l’axe z du FRF. Ceci est illustré dans la figure ci-dessous, où les axes du FRF sont désignés par x0, y0 et z0, et l’axe z du TRF est désigné par z1.
Dans un premier temps, nous pensions qu’une TRF définie par la matrice de rotation suivante respectait les conditions de notre client : R = Rx(-30°)Ry(60°). Ensuite, nous avons affirmé qu’une TRF définie par la matrice de rotation suivante respectait également les conditions : R = Ry(60°)Rx(-30°). Nous nous sommes lourdement trompés. La solution est un peu plus complexe…
Soit ax, ay et az les coordonnées du vecteur unitaire le long de l’axe z1 exprimé dans la FRF. Puisque nous avons ax/az = tan(60°) et ay/az = tan(30°), et bien sûr ax2 + ay2 + az2 = 1, nous pouvons trouver ax = 0,832, ay = 0,277, et az = 0,480. Ces trois paramètres sont en fait les éléments r1,3, r2,3 et r3,3, respectivement, de la matrice de rotation définissant la TRF par rapport à la FRF. En utilisant les équations données ci-dessus pour les angles d’Euler utilisés par Mecademic, c’est-à-dire α = atan2(-r2,3, r3,3) et β = asin(r1,3), nous pouvons trouver que α = -30°, et β = 56,310°. L’angle γ est arbitraire.
Faut-il donner d’autres exemples pour vous montrer l’importance de la maîtrise des angles d’Euler ?
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 repère F’ est parallèle à l’axe x du repère 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’est-à-dire que β est très proche de ±90°), les angles d’Euler seront très sensibles aux erreurs numériques. Dans un tel cas, vous devez entrer 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 définissez l’orientation du cadre de référence de l’outil par rapport au cadre de référence mondial sur {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 cette 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 des angles d’Euler, la singularité de représentation correspondante se produit lorsqu’un axe spécifique du repère F’ est parallèle à un autre axe spécifique du repère 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 Robotics. La reproduction de ce tutoriel, en tout ou en partie, est strictement interdite.