Vous êtes sur la page 1sur 28

Chapitre 2 Robotique (Modélisation Géométrique)

Chapitre 2 Modélisation Géométrique

2.1 Introduction
Un manipulateur en boucle ouverte consiste en un certain nombre de liens dont la position
relative est définie par les variables d’articulations. Ces dernières peuvent être des rotations
ou des translations. Puisque chacun des liens constitue un corps rigide, il est logique de lui
associer un référentiel cartésien. La configuration du robot est ainsi définie par la position
relative des référentiels associés à chacun des liens.
Premièrement, la position d’un objet sera définie par l’origine du système de coordonnées.
Cette position sera donc donnée par trois valeurs, ou encore par un vecteur de trois
dimensions:
p = [px, py, pz]T (2.1)
Il est cependant moins évident de trouver comment on représente l’orientation. On remarque
que le système de coordonnées est représenté par trois vecteurs unitaires orthogonaux. On
peut donc penser que si on donne ces trois vecteurs par rapport à un système de référence on
connaîtra l’orientation. On représente alors l’orientation par une matrice 3x3 formée par ces 3
vecteurs.
Z
 xx yx z x  Y
[x y z ] =  x y y y z y  (2.2)
Z0 →
 x z y z z z  P
X
Y0

X0

Fig 2.1

Exemple 2.1
On devrait facilement voir sur la figure que la position du système de coordonnées b par
rapport au système 0 est:
2  xx yx z x 
  
P= 3 et que son orientation est donnée par : x y y y z y

   
0  x z y z z z 

1
Chapitre 2 Robotique (Modélisation Géométrique)

En pratique, il y aura plusieurs systèmes de coordonnées. Il faudra alors préciser par rapport à
quel système on donne la position et l’orientation. Supposons qu on appelle le système de
référence le système 0, la position d’un système de coordonnées par rapport au système 0 sera
écrit:

 0 0 1
et l’orientation: − 1 0 0
 0 − 1 0
On peut donc penser que pour donner une orientation on doit donner 9 valeurs (matrice 3x3).
En réalité ce n’est pas vrai car ces 9 valeurs ne sont pas indépendantes. En effet les 3 vecteurs
doivent être orthogonaux, c-â-d. leur produit scalaire est nul.
x·y=z·x=y·z=0
Ce qui donne 3 relations entre ces 9 valeurs. De plus ces vecteurs sont unitaires. On a donc 3
autres relations :
x·x=y·y=z·z=1
On a donc en réalité que 3 inconnues. On peut donc conclure que la position d’un objet est
donnée par un vecteur (3x1) et l’orientation par une matrice 3x3.

Compte tenu de ce que, par définition, on a

Cette importante relation est du reste une conséquence immédiate de l’orthogonalité de R.


On verra plus tard qu on regroupe en général la position et l’orientation en une seule matrice
4x4.

2.2 Transformations linéaires


si un robot veut aller prendre un objet, le contrôleur du robot doit savoir les transformations
nécessaires pour que le système de coordonnées de l’outil coïncide avec celui de l’objet. Il y a
plusieurs transformations classiques, La plus simple est probablement la translation. En se
referant à la (Fig. 2.2), on voit que

Fig.2.2

2
Chapitre 2 Robotique (Modélisation Géométrique)

0
p2 =0p1 + op (2.3)
Pour trouver le nouvel origine, on n’a donc qu’a faire une addition vectorielle. On remarque
également que L’orientation n’a pas changé. La matrice orientation restera donc identique
après une translation.
Une autre transformation classique est la rotation autour d’un axe. Si on regarde une rotation
autour de l’axe z (Fig. 2.3), pour trouver la position d’un objet après rotation il suffit de
trouver les relations entre les nouveaux axes (x2, y2, z2), par rapport aux anciens (x1, y1, z1). On
trouve facilement que ces relations sont données par:
0
px2 = 0px1 cos Ø − 0py1 sin Ø
0
py2 = 0px1 sin Ø + 0py1 cos Ø (2.4)
0
pz2 = 0pz1
Il sera très intéressant, pour rendre les opérations plus systématiques, de représenter ces
opérations sous forme de matrices. Ainsi la dernière relation peut s’écrire

Fig.2.3
Ou on a remplacé cos par ’’c’’ pour simplifier l’écriture. Cette notation sera suivie dans tout
le reste des notes de cours. Pour trouver la nouvelle orientation, il suffit d’appliquer la même
transformation à chaque vecteur unitaire. On aura ainsi:

O2 = Rotz(Ø)O1
O1, O2 : représentent les matrice d’orientations.
Rotz(Ø) : représente la transformation.

2.2.1 Coordonnées Homogènes


Une transformation appropriée rigide générale d’un corps est donnée par une paire (O(θ),P),
où, O(θ) est une matrice de rotation et P un vecteur de Position, ces paires ont l'effet suivant
sur les vecteurs de position v:

(O(θ),P): v O(θ)v+P
où deux transformations successives donneront :

3
Chapitre 2 Robotique (Modélisation Géométrique)

(O(θ2),P2) : O(θ1)v+P1 O(θ2) O(θ1)v+ O(θ2)P1+P2


C'est équivalent à une transformation rigide simple donnée par la paire :

(O(θ2) O(θ1), O(θ2)P1+P2)


Ainsi nous obtenons une sorte de règle "simple" de multiplication pour ces paires :

(O(θ2),P2)(O(θ1),P1)=(O(θ2) O(θ1), O(θ2)P1+P2)

Noter ici que la translation pure sont représentées par des paires de la forme (I, P), où I est la
matrice d'identité. Les rotations pures, ces des rotations au tour de l'origine, donné par des
paires (O(θ),0).
L'ordre que ces transformation est très important. Par ce que la multiplication n'est pas
commutative. Pour l'exemple, le résultat de la rotation puis de la translation est différent de la
translation d'abord et ensuite la rotation. Dans le premier cas nous avons :

(I, P)( O(θ),0) = (O(θ), P)


Où le contraire donne :
( O(θ),0)(I, P) = (O(θ), O(θ)P)

Alors les coordonnées homogènes. Sont former par une matrice 4x4 qui contienne la matrice
orientation et le vecteur position. On a ainsi

 xx yx zx Px 
x yy zy Py 
 y (2.5)
 xz yz zz Pz 
 
0 0 0 1

 
 O Pos 
 ri
(2.6)
 
 
0 0 0 1
Exemple 2.2 :
une translation dans la direction x d’une grandeur a va donner:

px2 = px1 + a
py2 = px1
pz2 = pz1
Ceci revient au même que d’écrire

p2 = Transx(a)p1

4
Chapitre 2 Robotique (Modélisation Géométrique)

une rotation en z : une rotation en y :

une rotation en x :

Remarque: Ici il faut faire très attention au sens des rotations et de suivre toujours la même
convention pour le sens positif. La convention la plus utilisée est ce qu’on appelle la
convention de la main droite. Pour savoir si un angle de rotation en z est positif, il suffit de
penser qu’on tourne une vis. Si la rotation produit une déplacement de la vis vers l’axe z
positif, l’angle est positif, sinon négatif. On trouve ainsi que le sens positif pour les trois axes
est illustre sur la figure suivante:

fig.2.4

2.2.2 Séries de Transformations


pour trouver la matrice de transformation d’une suite de plusieurs transformations, il suffira
de multiplier les matrices de transformations élémentaires.
Il faudra juste faire attention du sens dans lequel on fait la multiplication car en général la
multiplication de matrices n’est pas commutatif. Regardons un exemple simple d’une rotation
autour de l’axe z de 45° suivie translation dans le sens x de 1 unité. Plaçons-nous dans un plan
pour simplifier. Faisons coïncider un système d’axes de référence fixe et un autre mobile qui
subira les transformations. On a premièrement la matrice de rotation autour de z

5
Chapitre 2 Robotique (Modélisation Géométrique)

a) b)
fig.2.5

et une translation dans le sens x.

Ici on peut se demander si c’est dans l’ancien x ou le nouveau. En fait, on peut tout à fait faire
les deux si on veut mais on voit sur la figure que c’est dans la direction de l’ancien x. Dans ce
cas, on voit qu’il faut multiplier la nouvelle matrice à gauche de l’ancienne.

Ici on doit faire tout de suite une observation importante. La matrice résultante peut être
interprétée d’au moins 2 façons différentes. Premièrement, elle représente la série
d’opérations nécessaires pour faire passer un système de coordonnées à un autre, mais elle
représente également l’orientation et la position du nouveau système d’axes par rapport au
premier. En effet les trois premières colonnes représentent l’orientation et la dernière la
position de l’origine.
Si on avait multiplier par la droite on aurait eu

6
Chapitre 2 Robotique (Modélisation Géométrique)

qui n’aurait pas donné le bon résultat pour la position. Si on regarde la figure de droite
maintenant, on voit qu’on aurait pu arriver au même résultat en commençant par une
translation en x suivi d’une rotation de 45° en z mais autour du nouveau z et non l’ancien.
Comme le résultat est le même, il faut que la matrice soit la même et donc que la
multiplication soit :

La deuxième matrice (Rotation) a donc maintenant été multipliée à droite de l’ancienne car on
a effectué la rotation autour du nouvel axe z. En résumé on a:
- Lorsqu’on effectue une nouvelle transformation par rapport au système de référence fixe, on
multiplie la nouvelle matrice à gauche.
- Lorsqu’on effectue une nouvelle transformation par rapport au nouveau système d’axes, on
multiplie la nouvelle matrice à droite.
Une autre conclusion très importante est qu’on peut interpréter le résultat de deux façons
possibles:
1. Soit la série de transformations nécessaires pour faire passer un système de coordonnées à
un autre
2. ou encore la position et l’orientation du nouveau système d’axes par rapport à l’ancien.
On introduira la notation suivante
(2.8)
pour indiquer la matrice de transformation pour faire passer le système d’axe B au système
d’axe A. ou encore la position et l’orientation de A, par rapport à B. Dans la première
interprétation, la sous-matrice 3x3 de gauche représentait la partie rotation et la 4ème colonne,
une translation (2.7). Dans la deuxième interprétation, on aurait plutôt

 
 O Pos 
 ri
(2.9)
 
 
0 0 0 1

Exemple 2.3
Regardons la transformation obtenue après les 4 transformations élémentaires suivantes:

On peut donc penser faire ces transformations de 2 façons différentes. Premièrement


en allant de droite à gauche en considérant les transformations par rapport au système
d’axes de référence

7
Chapitre 2 Robotique (Modélisation Géométrique)

fig.2.6

On peut également arriver au même résultat en faisant les opérations par rapport aux
nouveaux systèmes d’axes et en multipliant de gauche à droite

8
Chapitre 2 Robotique (Modélisation Géométrique)

fig.2.7

On remarque l’utilité de la notation utilisée. En effet, si on regarde la deuxième approche, les


matrices individuelles sont données par :

On remarque qu’après une première multiplication, on obtient effectivement la matrice


représentant le système 2 par rapport au système de référence. Après la deuxième, le système
3 par rapport au système de référence, etc... Par contre dans la première approche, bien que le
résultat final soit identique, les résultats intermédiaires sont moins faciles à interpréter. En
pratique, on utilisera très peu cette approche et on utilisera surtout la deuxième façon de faire
des transformations composées .
Dans ce dernier exemple, on a également introduit la position d’un point q pour illustrer une
autre application des matrices de transformation. En effet, on remarque sur la figure que la
position du point q par rapport au repère initial est donnée par

Ce même point exprimé par rapport au repère 4 est

9
Chapitre 2 Robotique (Modélisation Géométrique)

En multipliant ce dernier vecteur par la matrice 0T4, on trouve

qui est bien la position du point q, par rapport au premier système de référence.
Symboliquement, on trouve

Où on remarque encore une fois l’intérêt de la notation pour nous aider à faire les calculs dans
le bon sens. On pourrait se demander comment, à partir de 0pq , trouver 4pq mais pour cela on
a besoin de 4T0 qui est l’inverse de ce qu’on a trouvé et on doit attendre à l’autre section. Par
contre, on pourrait regarder ce que ça donne si on multiplie notre matrice à 0pq. Ceci donne

Ceci représente la nouvelle position du point q, q∗ sur le dessin, si on l’attache au système de


coordonnées mobile. Symboliquement la notation est moins descriptive que dans l’autre cas.
On a

Il serait peut-être préférable d’utiliser une autre notation pour la matrice dans ce dernier cas,
quelque chose comme

mais comme on n’utilise pas très souvent cette interprétation, nous garderons toujours la
même notation pour nos matrices de transformations en faisant attention à l’interprétation
qu’on en fait.

2.2.3 Orientation des systèmes de coordonnées


On a dit que l’orientation d’un repère était donné par une matrice 3x3 représentant les 3
vecteurs unitaires. On a cependant indiqué que dans ces 9 valeurs, plusieurs étaient
redondantes et qu’en fait, il était possible de donner l’orientation en donnant simplement 3
valeurs. Supposons, par exemple, qu’on désire avoir un robot qui suive une certaine
trajectoire dans l’espace en lui donnant une centaine de points intermédiaires à passer. Si
chacun des points est donné par 3 positions et une matrice 3x3 (9 chiffres), ça risque de
prendre assez de mémoire. Il est préférable de ne prendre que 3 chiffres pour l’orientation. En
fait il y a une infinité de choix possibles pour définir une orientation d’un repère par rapport `a
un autre. L’idée est de trouver 3 transformations qui vont faire passer le premier dans le
deuxième. Un choix possible est de trouver trois rotations autour des axes du système de
référence.
. une rotation autour de x de ψ (angle de lacet)

10
Chapitre 2 Robotique (Modélisation Géométrique)

. une rotation autour de y de θ (angle de tangage)


. une rotation autour de z de Ø (angle de roulis)

Comme c’est autour des axes de références, on doit multiplier par la gauche.

ou encore, si on regarde seulement la sous-matrice rotation:

(2.10)

Exemple 2.4
Prenons par exemple un objet auquel on attache un repère (voir figure) (xb, yb, zb) et dont on
cherche à définir l’orientation. On peut facilement trouver la matrice de rotation simplement
par inspection. Ainsi on trouve:

Si on veut représenter l’orientation maintenant par les trois angles (ψ, θ , Ø), on peut le faire
de deux façons. Soit en essayant de trouver les trois rotations visuellement ou en comparant
cette dernière matrice à (2.10). Comme ici, c’est relativement simple, on trouve que pour
passer de R à b, on doit avoir ψ = 0, θ = −90◦, Ø = 0. Dans un cas général, il n’est pas possible
de le faire à l’oeil. Il faut utiliser (2.10). Bien que ça ait l’air gros, ce n’est pas si compliqué. Il
suffit de commencer par le plus simple ( la troisième ligne). Ainsi, dans notre exemple, on a

R y

xb
zb

x B yb
fig. 2.8 :
Connaissant maintenant un des angles, on simplifie la matrice initiale par les valeurs de
sθ et cθ. On obtient:

11
Chapitre 2 Robotique (Modélisation Géométrique)

L’élément de la 1ére rangée et 2ème colonne nous dit que −s(Ø + ψ) = 0 alors que l’élément de
la 2ème rangée 2ème colonne donne c(Ø + ψ) = 1 On a alors

En réalité, il y a une infinité de possibilités du moment que Ø + ψ = 0. On prend alors


le plus simple (Ø = ψ = 0)

Il existe plusieurs autres définitions d’angles de rotation possibles (24 en tout). Certaines sont
autour d’axes fixes comme la convention qu’on a choisi et certaines sont autour d’axes
variables, Angles d’Euler.

2.3 Transformation inverse


Comme on vient de le dire, le passage entre différents systèmes de coordonnées se fera par
multiplication de matrices. Dans certains cas on devra inverser des matrices. Ainsi, si on
connaît 0T1 la position (et l’orientation) du repère 1 par rapport à 0 et 0T2, celle du repère 2 par
rapport à 0, pour trouver la position de 2 par rapport à 1, on aura:

Il faudra donc inverser une matrice 4x4. De façon générale, ce n’est pas très facile à faire. En
effet l’inverse d’une matrice est donné par (2.10)
(2 11)

où la matrice adjointe, est la transposée de la matrice formée par les cofacteurs. Sauf que dans
notre cas, notre matrice est très spéciale. Premièrement, dans la dernière rangée, il y toujours
3 zéros. Deuxièmement, les 3 premiers vecteurs sont toujours orthogonaux entre eux. On peut
montrer assez facilement que l’inverse d’une matrice représentant un système de coordonnées
sera donnée par:

(2.12)

Exemple 2.5
Soit la matrice de transformation suivante

12
Chapitre 2 Robotique (Modélisation Géométrique)

trouvons la matrice inverse

Exemple 2.6
En se référant à l’exemple de la section précédente, trouvons la position du point q
par rapport au système de coordonnées 4, connaissant sa position par rapport au système de
référence.
Notre notation nous permet facilement de chercher ce qu’on a besoin. En effet, il suffit de
trouver

Or
qui vient d’être trouvé `a l’exemple précèdent. On a alors

ce qu’on savait déjà par inspection.

3 Modélisation Géométrique
3.1 Modélisation Géométrique direct
Cette partie est consacré à la description géométrique directe des manipulateurs en boucle
ouverte, c’est à dire la liaison entre la position et l’orientation de l’organe terminal du robot et
les variables d’articulations. Nous nous limiterons au cas où chaque articulation a un seul
degré de liberté, de translation ou de rotation (ceci ne constitue pas une limitation physique
puisque une articulation possédant plus d’un degré de liberté peut être modélisée en
introduisant des liens fictifs de longueur nulle).
Pour effectuer la description géométrique du manipulateur, nous associerons un référentiel à
chaque bras du robot, et nous décrirons leur position relative à l’aide des paramètres de
Denavit-Hartenberg. La description géométrique du manipulateur complet est alors obtenue
très simplement, par récurrence.

3.2 Paramètres de Denavit-Hartenberg


Du point de vue géométrique, un lien est un corps rigide qui est entièrement caractérisé par la
position relative de ses axes (figure 2.9). Celle-ci est complètement définie par les deux
paramètres l et θ qui mesurent sa longueur et son vrillage ( pour le lien i−1 sur la figure). l
représente la longueur de la perpendiculaire commune et θ est l’angle de rotation autour de la
perpendiculaire commune permettant de rendre les axes parallèles.

13
Chapitre 2 Robotique (Modélisation Géométrique)

La position relative de deux liens successifs est définie à l’aide des deux paramètres α et d. α
est l’angle de rotation dont il faut tourner autour de l’axe {i} pour amener la perpendiculaire
commune du lien i−1 parallèle à celle du lien i. d est la distance dont il faut ensuite la
translater le long de l’axe i pour l’amener en coïncidence. Un des paramètres α ou d constitue
la variable d’articulation, α pour une articulation de rotation et d pour une articulation de
translation. Les quatre paramètres θ , l , α et d constituent les paramètres de Denavit-
Hartenberg; ils constituent une caractérisation géométrique minimale d’un lien et de sa
relation avec le lien suivant. Il existe de légères variantes dans la définition des paramètres.

Afin d’exprimer formellement la relation géométrique entre liens successifs, il convient de


leur associer des référentiels. On exprimera alors la matrice de transformation homogène en
fonction des paramètres de Denavit-Hartenberg. La convention qui gouverne le choix des
référentiels est exprimée à la figure 2.9. Pour chaque lien, l’axe z est orienté suivant l’axe de
la première articulation et l’axe x est orienté suivant la perpendiculaire commune,

li

Fig 2.9 choix des référentiels

Compte tenu de ce qui précède, la signification des paramètres de Denavit-Hartenberg peut


être résumée comme suit:
li : distance entre zi−1 et zi mesurée le long de xi
αi: angle entre zi−1 et zi mesuré autour de xi
di: distance entre xi−1 et xi mesurée le long de zi-1
θi: angle entre xi−1 et xi mesuré autour de zi-1
La matrice de transformation entre un joint n − 1 et n ainsi obtenue devient alors :
1. une rotation en z d’un angle θ suivi.
2. d’une translation le long du nouveau z d’une distance d suivi.
3. d’une translation le long du nouveau x d’une distance l suivi.
4. d’une rotation le long du nouveau x d’un angle α.

14
Chapitre 2 Robotique (Modélisation Géométrique)

cθ − sθ cα sθ sα lcθ 
 sθ cθ cα − cθ sα lsθ 
= (2.12)
0 sα cα d 
 
0 0 0 1 

En plus de prendre cette convention pour les transformations élémentaires, il sera important
de choisir la même convention pour le choix des axes. Ainsi, pour un joint rotatif, on va
toujours prendre l’axe z dans l’axe de rotation. De même dans le cas d’un joint prismatique,
on choisira l’axe z dans le sens de la translation. Ainsi, dans le cas d’un joint rotatif, la
rotation autour de z va changer. La rotation θ sera donc une variable (appelée variable de joint
et les autres paramètres seront des constantes. Pour un joint prismatique, ce sera d, la
translation selon z, qui sera la variable de joint. Une fois l’axe z choisi, on choisira l’axe x.
Une fois l’axe x choisi, l’axe y est directement donné par la règle de la main droite.

Géométrique directe d’un robot - Méthode générale


1ère étape
- On identifie le nombre de segments du robot (1 à n)
- On identifie le nombre de joints (1 à n)
- On identifie le nombre de systèmes de coordonnées (n + 1) (0 à n)
2ème étape
- On place le robot ( tous ses joints) dans leur position zéro
- Ceci peut être arbitraire, mais il est conseillé de prendre la position suggérée par
le fabricant si il y en a une
3ème étape - Assignation des systèmes de coordonnées
1) On fait coïncider le système de référence (0 ou R) avec le joint 1
2) On place les autres systèmes d’axes à l’extrémité des segments
système 1 coïncide avec le joint 2
système 2 coïncide avec le joint 3 etc...
3) On identifie l’axe z de tous les systèmes de coordonnées
joint rotatif - axe de rotation
joint prismatique - axe de translation
4) On identifie l’axe x
- l’axe xn coïncide avec le segment de droite perpendiculaire à la fois à l’axe zn−1 et à l’axe zn
- Si zn−1 est parallèle à zn ( ce qui est fréquent) on choisit xn de manière le plus simple possible
- Si zn−1 intersecté l’axe à zn on choisit xn perpendiculaire au plan zn−1 et zn passant par le point
d’intersection .
- l’axe yn est trouvé par la règle de la main droite
5) Dans cette convention l’axe zn et l’axe x0 sont arbitraires. On les choisit le plus simple
possible
4ème étape
- On trouve les 4 variables associées à chaque segment
θn : angle de rotation par rapport à zn−1
dn : distance de translation le long de l’axe zn−1

15
Chapitre 2 Robotique (Modélisation Géométrique)

ln : distance de translation le long de l’axe xn


αn : angle de vrillage , rotation par rapport à xn
- On identifie les variables de joints (θn joint rotatif, dn joint prismatique)
5ème étape
- Formation des matrices de transformation

3.3 Paramètres de Denavit-Hartenberg modifié


Les paramètres de Denavit-Hartenberg modifié permettent de disposer d'un paramétrage des
liaisons tel que les matrices de passage aient toutes la même forme littérale, ce qui facilite les
calculs.

Notations :
On numérote les solides par ordre croissant en partant du socle. Ainsi le robot est composé de
n+1 corps, notés C0......... Cn , et de n articulations . Le corps C0 désigne le socle (la base) du
robot,
Le repère Ri est lié au corps Ci du robot.
La variable de l'articulation i, qui lie le corps Ci au corps Ci+1 , est notée qi.

(La convention de Denavit-Hartenberg (non modifié) est telle que l’axe zi du repère Ri est
confondu avec l’axe n° i+1 ,(et non i) du robot.)

Fig.2.10: système d’axes de Denavit-Hartenberg modifié

Le passage du repère R i-1 au repère Ri s'exprime en fonction des 4 paramètres suivants :


- On note αi l'angle de rotation entre les axes zi-1 et zi autour de l'axe xi-1 ,
- On note li la distance entre zi-1 et zi mesurée le long de l'axe xi-1,
- On note θi l'angle de rotation entre les axes xi-1 et xi autour de l'axe zi ,
- On note di la distance entre xi-1 et xi mesurée le long de l'axe zi .

Il en résulte la matrice de transformation homogène i-1 Ti suivante


Ti −1,i = Rot x (α i ) × Trans x (l i ) × Rot z (θ i ) × Trans z (d i )
i −1 i −1 i i

16
Chapitre 2 Robotique (Modélisation Géométrique)

1 0 0 0 1 0 0 l i   cos(θ i ) − sin(θ i ) 0 0 1 0 0 0
       
 0 cos(α i ) − sin(α i ) 0  0 1 0 0   sin(θ i ) cos(θ i ) 0 0 0 1 0 0
= × × ×
0 sin(α i ) cos(α i ) 0  0 0 1 0  0 0 1 0 0 0 1 di 
       
0 1   0   0 1   0 0 0 1 
 0 0 0 0 1  0 0

 cos(θ i ) − sin(θ i ) 0 li 
 
 cos(α i ) sin(θ i ) cos(α i ) cos(θ i ) − sin(α i ) − d i sin(α i ) 
=
sin(α i ) sin(θ i ) sin(α i ) cos(θ i ) cos(α i ) d i cos(α i ) 
 
 
 0 0 0 1 

Exemple 3.1
Prenons le manipulateur simple illustré à la figure suivante: On a 2 joints rotatifs, on aura
donc 3 systèmes d’axes, 2 mobiles et 1 fixe. On prend z0 le long de la première rotation, z1
dans l’axe de la 2éme rotation. z2 est arbitraire. En général, on le prendra le plus simple
possible. Par exemple ici, on le met dans le même sens que

Fig.2.11

z1.Remarquons que bien que l’axe z soit l’axe de rotation, le sens positif est arbitraire.
On peut le prendre d ´un sens ou l’autre
On choisit ensuite les axes x. x0 est arbitraire mais pas x1. Comme z0 et z1 sont parallèles, il y a
une infinité de perpendiculaires communes aux 2 axes. On choisit la plus simple, c’est-à-dire
au centre du joint. On fait la même chose pour x2. Pour x0, on prend également le plus simple
possible, en gardant la même direction que x1 (à la position zéro).
Une fois les systèmes d’axes en place, il suffit de trouver les paramètres de Denavit-
Hartenberg et de remplacer dans (3.1). On trouve ainsi

On forme ensuite les 2 matrices

17
Chapitre 2 Robotique (Modélisation Géométrique)

où pour simplifier davantage l’écriture on a enlevé le θ. On trouve de la même façon

Et

où on a pris comme convention d’écriture

Une fois la matrice trouvée, il est toujours bon de vérifier le résultat en essayant quelques
valeurs d’angles. Ainsi, si on essaie avec θ1 = 0° et θ2 = 90° on aura comme matrice

ce qui a du sens. Il serait bon de faire au moins 2 vérifications.

Exemple 3.2
Refaisons les mêmes étapes avec un manipulateur à deux degrés de liberté indiqué sur la
figure. Les systèmes d’axes lorsque le robot est à l’initialisation sont donnés sur la figure. Les
paramètres sont:

Fig.2.12

18
Chapitre 2 Robotique (Modélisation Géométrique)

et les matrices de transformations sont trouvées de la même façon

En essayant avec par exemple, θ1 = 0, θ2 = 90°, on a

qui est bien ce à quoi on s’attendait

Exemple 3.3
Terminons avec un exemple ayant un joint prismatique à 3 degrés de liberté Les systèmes

Fig.2.13

d’axes sont représentés sur la figure. Ici, il y a évidemment un peu d’arbitraire au niveau de la
position de l’outil `a la position zéro. On peut très bien choisir qu’à l’initialisation, les 3
systèmes d’axes 1,2 et 3 coïncident où mettre le dernier à une certaine distance des 2 autres.
ça n’a pas tellement d’importance. Avec le choix qui a été fait, on obtient:

19
Chapitre 2 Robotique (Modélisation Géométrique)

Les matrices de transformations sont:

On peut encore une fois vérifier en essayant par exemple θ1 = 90°, d2 = 0, θ3 = 90°

Remarque :
Les exemples précédents sont des problèmes de géométrique directe. Ces relations nous
donnent le lien qui existe entre les variables joints(c-à-d θ ou d) et variables cartésiennes (c-
à-d positions et orientations). On dit qu’on passe de l’espace articulaire(joint) à l’espace
opérationnel (cartésien).
A → O
espace articulaire espace opérationnel
Ainsi dans le dernier exemple, si prend par exemple θ1 = 90°,d2 = 4, θ2 = 90°, on en déduit
directement que la position de l’outil est à (−4, 0, d1) de l’origine et que son orientation est (0,
90°, 180°). On verra cependant que c’est souvent le contraire qu’on veut. On devra alors
trouver la géométrique inverse.

3.4 Géométrique inverse


Imaginons qu’on fasse le contrôleur d’un robot ayant trois moteurs. On devra faire une
interface usager permettant à l’utilisateur du robot de lui faire faire des tâches utiles. Si on
offre la possibilité à l’utilisateur de donner une certaine trajectoire, par exemple venant d’un
dessin d’Autocad, comment devrons-nous procéder pour générer la trajectoire. Premièrement,
avec trois degrés de liberté, il sera impossible de fixer la position et l’orientation de l’outil,
alors occupons-nous simplement de la position pour l’instant. La première chose à faire sera
de générer un certain nombre de points par lesquels l’outil de notre robot devra passer. On
devra exprimer ces points en fonction d’un repère de référence connu. Connaissant tous ces
points, on devra envoyer les commandes à nos moteurs de manière à ce que le robot (son outil
en fait) passe par ces oints. Pour cela, comme chaque actionneur (pour nous ce sera surtout
des moteurs) est associé `a un joint, on devra connaître les valeurs de toutes les variables de

20
Chapitre 2 Robotique (Modélisation Géométrique)

joints. Ceci est appelé la géométrique inverse On passe de l’espace opérationnel à l’espace
articulaire.

Exemple 3.4
Reprenons l’exemple (3.1) où la matrice de transformation était donnée par

Ici, on a deux degrés de liberté. On ne peut donc pas imposer six valeurs pour la position et
l’orientation. On peut simplement imposer deux valeurs pour la position ou encore une
position une orientation. Prenons les deux positions px, py. Ici la configuration du
manipulateur impose que pz = 0. L’idée est de trouver θ1, θ2, connaissant px, py.
Identifions donc les deux termes:
px = l1c1 + l2c12
py = l1s1 + l2s12

Bien que ce manipulateur peut paraître très simple, ce n’est pas du tout évident de résoudre
ces deux équations à cause des termes trigonométriques. C’est évidemment ce qui pose
souvent des problèmes lorsqu’on fait la géométrique inverse. Heureusement c’est souvent le
même genre d’équations qui reviennent et en faisant quelques exemples, on finit par
reconnaître des situations semblables. D’ailleurs dans la table suivante, on donne certaines
astuces pour résoudre des équations trigonométriques. Ici on utilise le cas 3. On a alors

En sommant les deux expressions, on trouve:

On trouve alors

Pour trouver θ1, on doit décomposer chacun des termes

On peut isoler s1, c1. On trouve

D’où finalement

21
Chapitre 2 Robotique (Modélisation Géométrique)

Remarque:
On doit faire très attention lorsqu’on utilise des fonctions trigonométriques inverses car ces
fonctions sont `a valeur multiple. En effet, si on évalue tan(45°) et tan(225°) on aura 1 dans
les 2 cas. Donc si on calcule tan−1 1, on devrait avoir un ou l’autre mais en réalité, une
calculatrice et un ordinateur va toujours donner 45°. En réalité, pour savoir dans quel quadrant
on se trouve ,on doit regarder à la fois le signe du sin et le signe du cos et non pas simplement
le rapport entre les deux. A partir de là, on trouve le bon angle. Si on fait un programme
d’ordinateur et qu’on utilise un langage d’ordinateur qui possède que la fonction tangente
inverse, on devra écrire une procédure pour cela. La plupart des langages évolués comme C et
Matlab possèdent déjà ces fonctions, appelées atan 2 dans leur librairies. Il est donc toujours
préférable d’utiliser cette fonction si possible plutôt que les autres. Dans l’exemple précèdent,
on évaluait θ2 en faisant un cosinus inverse car on n’avait pas le choix. Encore là, i l faut faire
attention car il y a deux valeurs possibles. Ainsi, si on a acos(0.5), on pourra avoir 60° ou
−60°. Il faudra garder les deux et vérifier ensuite si les deux sont acceptables ou non. Dans
l’exemple précèdent les deux valeurs sont acceptables. On a ce qu’on appelle une redondance
Connaissant maintenant les variables joints, si on veut on doit en déduire les variables
moteurs. La plupart du temps chaque moteur est associé `a un seul joint. Le moteur peut être
couplé au joint directement ou par l’intermédiaire d’un réducteur ou par des courroies. Dans
tous ces cas la relation est assez simple, ce sera simplement un changement d’échelle qu’on
peut écrire par
(2.13)
x1 représente un changement d’unités. Supposons, par exemple, qu’entre le moteur et l’axe du
joint, on ait un réducteur 10:1, que θ1 est en radians et qu’un tour de moteur correspond à
4000 pulses. On a alors

Finalement y1 est simplement un changement d’origine. En pratique, lorsqu’on fait une mise à
zéro d’un moteur, on le fait tourner jusqu’au moment o`u il passe devant un capteur de fin de
courses, souvent un capteur de proximité et on remet alors son encodeur à zéro. Or ce zéro ne
correspond pas nécessairement à θ1 = 0. On ajuste alors le zéro à l’aide de y1. Toutes ces
valeurs sont trouvées par calibration. Evidemment lorsqu’on utilise un robot déjà fait, on n’a
pas à s’occuper de ces particularités.

Equations trigonométriques utiles pour la solution de la géométrique inverse

• cas : 1 Si on a
sθ = f
cθ = g
alors θ = atan2 (f, g)
• cas : 2 Si on a
a cθ + b sθ = d
On divise par

les coefficients devant le cos et le sin peuvent être considérés comme étant les composantes
d’un vecteur unitaire formant un angle Ø. En posant

22
Chapitre 2 Robotique (Modélisation Géométrique)

,
on trouve

On en déduit θ
• cas : 3 Si on a une paire d’équations du type
a c1 + b c12 = f
a s1 + b s12 = g

on met au carré chaque équation et on additionne pour obtenir

D’où on trouve θ2. Connaissant θ2, on remplace dans c12 et s12 et on retrouve le cas 3

• cas : 4 Si on a une paire d’équations du type


a s12 + b c12 + d c1 = f
-a c12 + b s12 + d s1 = g
on met au carré chaque équation et on additionne pour obtenir
l s2 + mc2 = h
et on trouve θ2 en faisant comme le cas 2.
• cas : 5 Si on a une paire d’équations du type
a1s1 + b1c1 = d1
a2s1 + b2c1 = d2
On résoud le système linéaire et on trouve
θ1 = atan2 (d1b2 − d2b1, a1d2 − a2d1)

Exemple 3.5
Faisons comme 2ème exemple la géométrique inverse du robot de l’exemple 3.2. La matrice de
transformation est donnée par

On a encore ici que deux degrés de liberté. On ne peut donc imposer que deux grandeurs
physiques. On peut par exemple imposer la position px et py. On a alors

px = l2c2c1
py = l2c2s1

On trouve alors facilement que


θ1 = atan2 (py, px)
Pour trouver θ2, une fois qu’on connait θ1, c’est très simple. Par exemple on pourrait
simplement écrire:

23
Chapitre 2 Robotique (Modélisation Géométrique)

Il faudrait cependant faire attention car si θ1 = 90°, on aura une division par zéro. On peut
toujours faire un test mais il est préférable de faire de la façon suivante:

Bien qu’il soit possible de trouver un angle à l’aide d’un sinus inverse ou cosinus inverse, il
est toujours préférable, si on peut d’utiliser la tangente inverse. C’est beaucoup plus précis.
Ainsi dans notre exemple, si on pouvait fixer pz, il serait préférable de trouver également le
sinus de la façon suivante:
s2 = (pz − d1)/l2
θ2 = atan2 (pz − d1, pxc1 + pys1)

Par contre ici on ne peut pas et il faut utiliser le sinus inverse.

Dans ce dernier exemple, ce manipulateur très simple exécute une trajectoire circulaire. Ce
n’est pas très logique d’imposer une position en x et y comme on vient de le faire car on n’a
aucune idée à quel z on sera. Il est plus logique d’imposer les deux coordonnées sphériques.
Ainsi si on a
x = r sin θ cosØ
y = r sin θ sinØ
z = r cos θ
on trouve directement
θ1 = Ø (angle d’azimuth)
θ2 = 90° − θ (angle de zénith)

Encore une fois, dans la plupart des livres, lorsqu’on traite de la géométrique inverse, on
s’arrête là, c’est-à-dire en trouvant la relation entre les variables cartésiennes et les variables
joints. Cependant en pratique, ce sont des moteurs qu’on commande, et il faut, à partir de la
connaissance des variables de joints (ici θ1, θ2), trouver les variables moteurs. Dans l’exemple
précèdent, on a vu que lorsqu’un moteur était directement couplé `a un joint, la relation était
linéaire et tr`es simple. Par contre ce n’est pas toujours le cas. Prenons par exemple le robot
de notre exemple. Sur la figure, la forme est très schématisée, mais une façon pratique de
réaliser le deuxième joint serait possiblement d’avoir un arrangement tel qu’illustré sur la
figure suivante: On remarque que la rotation du joint 2 n’est pas réalisée directement un
moteur couplé sur le joint mais via une vis. La relation entre la variable joint et la variable
moteur est alors un peu plus complexe.

Fig 2.14

24
Chapitre 2 Robotique (Modélisation Géométrique)

Premièrement il faut trouver le lien entre l’angle de joint et la longueur de la vis. Ceci se fait
par la loi des cosinus:

L2 = A2 + B2 − 2AB cos(90 + θ2)


Connaissant, L, la longueur de la vis, la relation entre le boteur et la position de l’écrou est
relativement simple, elle ne dépend que du pas de vis. On trouve une relation linéaire
similaire `a (2.14).
M2 = x2L + y2

où le facteur d’échelle x2, est simplement le nombre de pulses de moteur par tour fois le pas
de vis en mètres par tour. y2 sert à ajuster l’origine.

Exemple 3.6
Faisons la géométrique inverse de l’exemple 3.3. La matrice de transformation était donnée
par:

On a ici trois degrés de liberté. On peut donc imposer 3 grandeurs. On ne peut cependant pas
imposer une valeur de pz car cette grandeur est fixe. On peut donc soit imposer deux
positions px, py et une orientation ou encore une position et deux orientations (Ø, θ, car ψ = 0)
. Si on impose px, py, θ ,on aura:

θ1 = atan2(-px, py)
d2 = pyc1 - pxs1
θ3 = θ

Exemple 3.7
Terminons les exemples de géométrique avec un vrai robot. Le robot ASEA se trouvant au
laboratoire. Commençons par mettre le robot à une position initiale et plaçons les systèmes
d’axes.

Fig.2.15

25
Chapitre 2 Robotique (Modélisation Géométrique)

Les paramètres de Denavit-Hartenberg sont:

On en déduit les matrices de transformation:

Fig.2.16

26
Chapitre 2 Robotique (Modélisation Géométrique)

On effectue ensuite les multiplications en vérifiant si les résultats ont du sens.

Géométrique inverse
Si on veut faire le contrôleur de ce robot, on doit connaître la relation entre les moteurs et les
positions cherchées. Pour trouver ces relations, on pose la matrice de transformation égale à la
matrice voulue

27
Chapitre 2 Robotique (Modélisation Géométrique)

A partir de px, py on trouve

θ1 = atan2 (py, px) (2.14)


On a aussi

(2.15)
On peut réécrire l’équation de px et pz de la façon suivante:
Posons

On a alors

En prenant le carré de chacune de ces expressions on obtient

(2.16)

(2.17)
A partir de (2.18),(2.17),(2.16) on trouve
(2.18)
Finalement on a que si c234 ≠ 0,
(2.19)
Dans le cas contraire, on a

D’où
(2.20)

28

Vous aimerez peut-être aussi