Denavit-Hartenberg

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

La convention, ou notation, de Denavit-Hartenberg permet de caractériser la position relative de deux solides avec seulement quatre paramètres (au lieu de six). Ceci au prix de certaines restrictions dans le choix des systèmes de coordonnées (repères). En robotique, on rencontre en fait deux définitions[1] qui diffèrent légèrement :

  • La convention de Denavit-Hartenberg [2], qui fut introduite en 1955, par Jacques Denavit et Richard S. Hartenberg.
  • La convention de Denavit-Hartenberg modifiée, appelée aussi convention de Khalil-Kleinfinger[3], qui est préconisée depuis 1986[4], (parce qu'elle permet un allègement[5] du formalisme dans les exposés[6], portant sur les méthodes numériques par récurrence de la dynamique des robots).

Les deux notations sont couramment utilisées pour la modélisation des chaînes cinématiques constituées par des corps solides reliés entre eux par des articulations rotoïdes ou prismatiques, (pivots ou glissières). Pour chaque articulation on peut définir l'axe de sa liaison[7] et sa variable articulaire[8].

  • À chaque corps Cn de la chaîne est associé un repère (trièdre) orthonormé Rn. Corps et repères sont affectés d'un numéro dénominatif dans un ordre croissant, n = 1, 2.......N-1, N ; (généralement de la base vers l'extrémité de la chaîne).
  • Chaque transformation faisant passer du trièdre Rn-1 au trièdre Rn est le produit de deux rotations et de deux translations[9] rangées dans un certain ordre alterné.

Notation de Denavit-Hartenberg[modifier | modifier le code]

Les axes de coordonnées sont définis par les règles[10] suivantes :

  1. L' axe \overrightarrow{z_{n-1}} est porté par l'axe de la liaison reliant le corps Cn-1au corps Cn. (\overrightarrow{z_{n}} est donc porté par l'axe de la liaison reliant le corps Cnau corps Cn+1).
  2. L' axe \overrightarrow{x_n} est porté par la normale commune à \overrightarrow{z_{n - 1}} et \overrightarrow{z_n} soit : \overrightarrow{x_n} = \overrightarrow{z_{n-1}} \wedge \overrightarrow{z_{n}} .
  3. L'axe \overrightarrow{y_n} est choisi de manière à former un trièdre direct avec l'axe \overrightarrow{z_n} et \overrightarrow{x_n} \, , \quad soit : \overrightarrow{y_n} =  \overrightarrow{z_n}\wedge\overrightarrow{x_n} .
Exemple de la chaîne cinématique d'un robot avec système de coordonnées et paramètres selon Denavit&Hartenberg.

La transformation entre les corps successifs Cn-1 et Cn est décrite par les quatre paramètres[11] ci-dessous:

  1. d=d_{n}, la distance selon l'axe \overrightarrow{z_{n-1}} entre les axes \overrightarrow{x_{n-1}} et \overrightarrow{x_{n}} . C'est la variable articulaire dans le cas glissière .
  2. \theta = \theta_{n} , l'angle entre autour de l'axe \overrightarrow{z_{n-1}} entre les axes \overrightarrow{x_{n-1}} et \overrightarrow{x_{n}} . C'est la variable articulaire dans le cas pivot .
  3. r=r_{n} (ou a=a_{n} ), la distance selon l'axe \overrightarrow{x_n} entre les axes \overrightarrow{z_{n-1}} et \overrightarrow{z_{n}}. C'est donc également la longueur de la normale commune.
  4. \alpha=\alpha_{n}, l'angle autour de l'axe \overrightarrow{x_{n}} entre les axes \overrightarrow{z_{n-1}} et \overrightarrow{z_{n}}

Ici r=r_{n} et \alpha=\alpha_{n} sont des paramètres constitutifs qui caractérisent le corp Cn .

En multipliant les matrices (4x4) de rotation et de translation élémentaire (autour ou le long d'un seul axe) en coordonnées homogènes, on obtient la matrice de passage en coordonnées homogènes entre les corps Cn-1 et Cn :

\mathfrak{P}_{n-1,n}=\begin{pmatrix}
cos(\theta) & -cos(\alpha)sin(\theta)&  sin(\alpha)sin(\theta) & r \,cos(\theta)\\
sin(\theta) &  cos(\alpha)cos(\theta)& -sin(\alpha)cos(\theta) & r \,sin(\theta)\\
0           &  sin(\alpha)           &  cos(\alpha)            & d              \\
0           &  0                     &  0                      & 1
\end{pmatrix}\; ..

La matrice inverse s'écrit :

 \mathfrak{P}^{-1}_{n-1,n} = \mathfrak{P}_{n,n-1} = \begin{pmatrix}
 cos(\theta)             &  sin(\theta)           & 0           & -r              \\
-cos(\alpha) sin(\theta) &  cos(\alpha)cos(\theta)& sin(\alpha) & -d\, sin(\alpha)\\
 sin(\alpha) sin(\theta) & -sin(\alpha)cos(\theta)& cos(\alpha) & -d\, cos(\alpha)\\
 0                       &     0                  & 0           & 1
\end{pmatrix}\;.

Convention de Khalil-Kleinfinger[modifier | modifier le code]

À l'instar de la convention de Denavit-Hartenberg, chaque transformation faisant passer du trièdre Rn-1 au trièdre Rn est le produit de deux rotations et de deux translations rangées dans un certain ordre alterné; et formellement les notations sont ressemblantes.

Deux axes et les 4 paramètres de Khalil-Kleinfinger qui caractérisent leur position relative
Khalil-Kleinfinger; CHANGEMENT DES NOTATIONS \scriptstyle\text{Image} \Rightarrow\text{Article}\;{:}\;\vec z_{i}\Rightarrow\vec z_{n}\,,\alpha_{i-1}\Rightarrow\alpha\,,a_{i-1}\Rightarrow{d}\,,d_{i}\Rightarrow{r} \,,\theta_{i}\Rightarrow\theta\,.

Les axes de coordonnées sont définis par les règles suivantes :

  1. L' axe \overrightarrow{z_{n}} [12] est porté par l'axe de la liaison reliant le corps Cn-1au corps Cn.
  2. L' axe \overrightarrow{x_n} est porté par la normale commune à \overrightarrow{z_{n - 1}} et \overrightarrow{z_n} soit : \overrightarrow{x_n} = \overrightarrow{z_{n-1}} \wedge \overrightarrow{z_{n}} .
  3. L'axe \overrightarrow{y_n} est choisi de manière à former un trièdre direct avec l'axe \overrightarrow{z_n} et \overrightarrow{x_n} soit : \overrightarrow{y_n} =  \overrightarrow{z_n}\wedge\overrightarrow{x_n} .

Chaque transformation entre les corps successifs Cn-1 et Cn est décrite[13] par quatre paramètres :

  1. \alpha , l'angle autour de l'axe \overrightarrow{x_{n-1}} entre les axes \overrightarrow{z_{n-1}} et  \overrightarrow{z_{n}}\, .
  2. d , ou a, la distance le long de l'axe \overrightarrow {x_{n-1}} entre les axes \overrightarrow{z_{n-1}} et \overrightarrow{z_{n}}. C'est donc également la longueur de la normale commune.
  3. r, la distance le long de l'axe \overrightarrow{z_{n}} entre les axes \overrightarrow{x_{n-1}} et \overrightarrow{x_{n}} . C'est la variable articulaire dans le cas glissière .
  4. \theta , l'angle entre autour de l'axe \overrightarrow{z_{n}} entre les axes \overrightarrow{x_{n-1}} et \overrightarrow{x_{n}} . C'est la variable articulaire dans le cas pivot .

La notation de Khalil-Kleinfinger est bien adaptée aux algorithmes numériques de la modélisation et aux chaines arborescentes, mais elle présente une certaine lourdeur dans l'attribution des indices:

  • Dans le cas pivot, on est amené à poser \theta = \theta_{n} pour la variable articulaire et pour les paramètres constitutifs constants caractérisant le corps Cn-1 : \alpha=\alpha_{n-1} \, , \;   d=d_{n-1}  \, , \;   r=r_{n-1} \, .
  • De même, dans le cas glissière, on est amené à poser  r = r_{n} pour la variable articulaire et pour les paramètres constitutifs caractérisant le corps Cn-1 : \alpha=\alpha_{n-1} \, , \;   d=d_{n-1}  \, , \; \theta = \theta_{n-1} \, .

En multipliant les matrices (4x4) de rotation et de translation élémentaire (autour ou le long d'un seul axe) en coordonnées homogènes, on obtient la matrice de passage en coordonnées homogènes entre les corps Cn-1 et Cn :

 \mathfrak{P}_{n-1,n}  = \begin{pmatrix}
 cos(\theta)             &  -sin(\theta)          &  0           &  d             \\
 cos(\alpha) sin(\theta) &  cos(\alpha)cos(\theta)& -sin(\alpha) & -r\,sin(\alpha)\\
 sin(\alpha) sin(\theta) &  sin(\alpha)cos(\theta)&  cos(\alpha) &  r\,cos(\alpha)\\
 0                       &     0                  &  0           &  1
\end{pmatrix}\;.

La matrice inverse[14] s'écrit :

 \mathfrak{P}^{-1}_{n-1,n} = \mathfrak{P}_{n,n-1} = \begin{pmatrix}
cos(\theta) &  cos(\alpha)sin(\theta)&  sin(\alpha)sin(\theta) & -d \,cos(\theta)\\
-sin(\theta)&  cos(\alpha)cos(\theta)&  sin(\alpha)cos(\theta) &  d \,sin(\theta)\\
0           & -sin(\alpha)           &  cos(\alpha)            & -r              \\
0           &  0                     &  0                      &  1\\
\end{pmatrix}\;.

Remarque : on sait[15] que  \mathcal{P}^{-1}= \mathcal{P}^{t}\, et en posant :
 \mathfrak{P}_{n-1,n}  =  \begin{pmatrix}
\mathcal {P}_{(33)} &  \mathcal {T}_{(31)}    \\
\bold 0_{(13)}      &              1\\
\end{pmatrix}\; , \; alors la matrice inverse s'écrit :  \mathfrak{P}^{-1}_{n-1,n} = \mathfrak{P}_{n,n-1} = \begin{pmatrix}
\mathcal {P}^{t}  & -\mathcal {P}^{t}\mathcal {T} \\
\bold 0_{(13)}    &                1              \\
\end{pmatrix}\; .

Notes et références[modifier | modifier le code]

  1. Attention aux confusions possibles !
  2. Voir par exemple [1]. École d'Ingénieurs de la Chambre de commerce et d'industrie de région Paris Île-de-France.
  3. Cours du Groupement de Recherche (GdR) en Robotique (créé en 2007 par le CNRS) [2] Bases de la modélisation et de la commande des robots-manipulateurs de type série Wisama KHALIL et Etienne DOMBRE.
  4. Article historique : «Khalil, W. & Kleinfinger, J.F. (1986). A new geometric notation for open and closed loop robots, IEEE Int. Conf. On Robotics and Automation, p. 1147-1180, San Francisco USA, April 1986 » .
  5. [3] DYNAMIC MODELING OF ROBOTS USING RECURSIVE NEWTON-EULER TECHNIQUES, Wisama KHALIL École Centrale de Nantes, IRCCyN UMR CNRS 6597.
  6. Page 25 : [4] ISTIA, Université Angers - Jean-Louis Boimond.
  7. L'axe du pivot, ou une droite dans la direction de la translation de la glissière.
  8. Angle de rotation, ou longueur du déplacement en translation.
  9. C'est le produit de deux déplacements hélicoïdaux, dans lesquels on peut échanger l'ordre rotation-translation.
  10. Des cas particuliers sont précisés en [5] Cours Kuchenbecker,MEAM Department,SEAS, University of Pennsylvania.
  11. Schèmas sur [6] University of West Florida, Rachid Manseur.
  12. Remarquez la différence avec Denavit-Hartenberg 1955.
  13. Schèma page 15, [7] Universite Louis Pasteur de Strasbourg ´IUP Technologies Avancees des Sciences du Vivant, CoursBernard BAYLE, annee 2004–200
  14. Cours robotique, voir pages 24-28,[8] ou aussi [9] ISTIA, Université Angers, Jean-Louis Boimond .
  15. La matrice (3x3) représentant les termes de rotation est une matrice orthogonale : l'inverse est égale à la transposée.

Articles connexes[modifier | modifier le code]