Vous êtes sur la page 1sur 19

Matrices de Transformations

Réalisé par :

BECHIM AMEL
But de TP :
Le but de cette tâche pratique consiste à effectuer des calculs de matrices de rotation et d'angles
d'Euler en utilisant la convention d'Euler et la convention d'Euler inverse à l'aide du logiciel MATLAB.
De plus, nous allons utiliser la boîte à outils Toolbox Robotics (RT), développée par Peter Corke, pour
obtenir les matrices de rotation et les angles d'Euler.
Introduction :
L'étude de la robotique requiert des connaissances de base en géométrie. Lorsqu'on
souhaite contrôler un robot, il est essentiel de positionner ses différentes parties mobiles
les unes par rapport aux autres. Pour cela, on associe un repère à chaque composant du
robot (base, effecteur, articulations). La transition d'un repère à un autre (position,
orientation) s'exprime sous la forme d'une matrice de rotation. La géométrie, et plus
précisément les coordonnées et transformations homogènes, sont des outils
indispensables et largement utilisés en robotique.
Avec le logiciel MATLAB, la conception et la programmation d'un robot sont rapides et
faciles en utilisant la boîte à outils Toolbox Robotics.

1- La partie théorique :
Les angles d’Euler :

Figure1 : Z-Y-X les angles d’Euler

 Les angles d’Euler classiques permettent de décrire l’orientation d’un solide par trois
rotations successives donnant au solide l’orientation en question. Les rotations
successives, conformément à la figure précédente, sont R(𝑍̂ , 𝛼), R(𝑌̂′, 𝛽) et enfin
𝐴 𝐵
R(X̂𝐵 ′′, 𝛾) ou les angles 𝛼, 𝛽 et 𝛾 sont connus respectivement sous les termes de
précession, nutation et rotation propre. Chaque nouvelle rotation étant effectuée par
rapport à un repère ayant tourné :
R = R(𝑍̂ , 𝛼)* R(𝑌̂′, 𝛽) *R(X̂ ′′, 𝛾)
𝐴
𝐵 𝐵

Telle que :

𝑐𝑜𝑠𝛼 −𝑠i𝑛𝛼 0 𝑐𝑜𝑠𝛽 0 𝑠i𝑛𝛽


̂
R(𝑍 𝐴 , 𝛼)= [ 𝑠i𝑛𝛼 𝑐𝑜𝑠𝛼 ̂
0] , R(𝑌𝐵′, 𝛽)= [ 0 1 0 ]
0 0 1 −𝑠i𝑛𝛽 0 𝑐𝑜𝑠𝛽

1 0 0
Et R(X̂ 𝐵 ′′,𝛾)= [0 𝑐𝑜𝑠𝛾 −𝑠i𝑛𝛾]
0 𝑠i𝑛𝛾 𝑐𝑜𝑠𝛾

C’est-à-dire

𝑐𝑜𝑠𝛼 −𝑠i𝑛𝛼 0 𝑐𝑜𝑠𝛽 0 𝑠i𝑛𝛽 1 0 0


R=[𝑠i𝑛𝛼 𝑐𝑜𝑠𝛼 0] *[ 0 1 0 ] *[0 𝑐𝑜𝑠𝛾 −𝑠i𝑛𝛾]
0 0 1 −𝑠i𝑛𝛽 0 0 𝑠i𝑛𝛾 𝑐𝑜𝑠𝛾
𝑐𝑜𝑠𝛽

Et finalement

𝑐𝑜𝑠𝛼𝑐𝑜𝑠𝛽 𝑐𝑜𝑠𝛼𝑠i𝑛𝛽𝑠i𝑛𝛾 − 𝑠i𝑛𝛼𝑐𝑜𝑠𝛾 𝑐𝑜𝑠𝛼𝑠i𝑛𝛽𝑐𝑜𝑠𝛾 + 𝑠i𝑛𝛼𝑠i𝑛𝛾


R=[𝑠i𝑛𝛼𝑐𝑜𝑠𝛽 𝑠i𝑛𝛼𝑠i𝑛𝛽𝑠i𝑛𝛾 + 𝑐𝑜𝑠𝛼𝑐𝑜𝑠𝛾 𝑠i𝑛𝛼𝑠i𝑛𝛽𝑐𝑜𝑠𝛾 − 𝑐𝑜𝑠𝛼𝑠i𝑛𝛾]
−𝑠i𝑛𝛽 𝑐𝑜𝑠𝛽𝑠i𝑛𝛾 𝑐𝑜𝑠𝛽𝑠i𝑛𝛾

 La matrice obtenue R c’est une matrice de rotation de dimension 3 × 3, les éléments


de cette matrice sont appelés cosinus directeurs, les colonnes de R sont orthogonales
entre elles et par conséquent la connaissance de deux colonnes suffit, ainsi que les
colonnes de R formant une base orthonormée

Si R=[r1 r2 r3] telle que r1,r2,r3 :sont les colonnes de R .alors ces colonnes sont de norme
unité et donc : ‖𝑟1‖ = ‖𝑟2‖ = ‖𝑟3‖ = 1

 La transformation inverse permet d’établir les angles d’Euler à partir des cosinus
directeurs :
2 2
𝛽 = 𝑎𝑡𝑎𝑛2(-𝑅31,√𝑅11 + 𝑅21 )
𝛼 = 𝑎𝑡𝑎𝑛2(𝑅21/𝑐𝑜𝑠𝛽, 𝑅11/𝑐𝑜𝑠𝛽)
𝛾= 𝑎𝑡𝑎𝑛2(𝑅32/𝑐𝑜𝑠𝛽, 𝑅33/𝑐𝑜𝑠𝛽)

Il existe une deuxième solution, en utilisant la racine carrée positive dans le de calcule de β,
nous calculons toujours la première solution pour laquelle −90,0◦ ≤ β ≤ 90,0◦. Cependant,
dans certains cas, il est important de calculer toutes les solutions Si β = ±90,0◦ la solution
précédente dégénère. Une convention possible est de choisir α = 0

Si β = 90,0◦, alors une solution peut être calculée pour être :

β = 90.0◦,

α = 0°

γ = atan2(𝑅12, 𝑅22).

Si β = −90,0◦, alors une solution peut être calculée pour être

β = −90.0◦,

α = 0°.

γ = -atan2(𝑅12, 𝑅22).

2- Manipulation :
a-En utilisant la convention d'Euler pour les angles Z—Y—X (α—β—γ), le programme
MATLAB pour calculer la matrice de rotation R lorsque l'utilisateur saisit les
angles d'Euler α—β—γ est le suivant :

Le test sur les deux exemples :

Sur le premier exemple :

i) α = 10°, β = 20°, γ = 30° :

alors le programme nous demande tout d’abord d’introduissez les valeurs de α—β—γ ;
apres d’avoir introduisser les valeurs des angles on aura R : la matrice de rotation

Sur le 2éme exemple :

ii) α = 30°, β = 90°, γ = -55°.

Pour le cas (i), démonstration des six contraintes pour les matrices de rotation orthonormée
unitaire (c'est-à-dire qu'il y a neuf nombres dans une matrice 3 x 3, mais seulement trois sont
indépendants)

 les colonnes de R sont orthogonales entre elles et par conséquent la connaissance


de deux colonnes suffit.
Telle que : R=[r1 r2 r3]

On a :
0.9254 0.0180 0.3785
r1×r2= ( 0.1632 ) × (0.8826)=(−0.4410)=r3
−0.3420 0.4698 0.8138

 les colonnes de la matrice de rotation R sont de norme unité et donc :

0.9254
‖𝑟1‖=‖ 0.1632 ‖=√0.92542 + 0.16322 + (−0.3420)2=1.
−0.3420

0.0180
‖𝑟2‖=‖0.8826‖=√0.01802 + 0.88262 + (0.4698)2=1
0.4698
0.3785
‖𝑟3‖=‖−0.4410‖=√0.37852 + (−0.4410)2 + 0.81382=1.
0.8138

Démonstration de ces 6 contraintes sur matlab :

Code matlab :

Les résultats :
Démonstration de la belle propriété: 𝐵𝑅=𝐴𝑅−1=𝐴𝑅𝑇 pour le premier exemple
𝐴 𝐵 𝐵

0.9254 0.0180 0.3785 − 1 0.9254 0.1632 −0.3420


0.4698 ]=𝐵𝑅
𝐴 𝑇
𝐴
𝐵
𝑅= 𝐵𝑅 =[ 0.1632
𝐴 −1
0.8826 −0.4410] =[0.0180 0.8826
−0.3420 0.4698 0.8138 0.3785 −0.4410 0.8138

b- le programme MATLAB pour calculer les angles d'Euler α—β—γ lorsque


l'utilisateur introduit la matrice de rotation R (le problème inverse) :
On remarqu bien que ce programme permet de calculer deux solution possible : la 2eme
solution existe si on prend la partie positive de la racine dans la formule de
β(𝑒𝑛 𝑟𝑎𝑑i𝑎𝑛𝑠′𝑏′) .

Démonstration de cette solution inverse pour les deux cas de la partie (a) :

(En utilisant une vérification circulaire pour vérifier nos résultats)

 Tout d’abord on exécute le programme de la partie a : et on aura la matrice de


rotation R qui sera l’entré de code b

Pour le premier cas on aura les résultats suivants :


Pour le 2eme cas :(après d’avoir entré les angles d’Euler dans le code a) on aura R qui sera
l’entrée de code b

On résumera tout ça dans ce tableau :

SOLUTIONS α 𝖰 𝛾

Solution 1 10 20 30

CAS i Solution 2 -170 160 -150

Solution 1 30 90 -50

CAS ii Solution 2 -150 90 125

Vérification de la 2eme solution :

Et si on prend les angles de la 2eme solution comme des entrées de code a :

On aura :

 pour le premier cas :


On remarque bien que c’est la même matrice de rotation obtenu avant (dans le cas α=10,
𝖰 = 20 et 𝛾 = 30)

 pour le deuxième cas :

On remarque bien que c’est la même matrice de rotation obtenu avant (dans le cas α=30°,
𝖰 = 90° et 𝛾 = −55°)

c) Pour une rotation simple β autour de l'axe Y uniquement, pour β = 20° et 𝐵𝑃 = [1 0 1]𝑇

Calcule de 𝐴𝑃:

On prend : α=0° et 𝛾 = 0°
On a: 𝐴𝑃 =𝐴𝑅*𝐵𝑃 on doit tout d’abord calculer la matrice de rotation 𝐴𝑅 en utilisant le
𝐵 𝐵
code a

0.9397 0 0.3420 1 1.2817


Donc 𝐴𝑃 =𝐴𝐵𝑅*𝐵𝑃 = [ 0 1.0000 0 ]*[0]=[ 0 ]
−0.3420 0 0.9397 1 0.5977
Le croquis :

Le programme matlab :

Résultats :
d) on vérifie tous les résultats à l’aide du Toolbox Corke MATLAB Robotics. En Essayant
les fonctions rpy2tr() , tr2rpy(), rotx() et rotz()

Tout d’abord avant d’écrire ce programme on doit installer robotics system toolbox qui
propose des outils et des algorithmes pour concevoir ,simuler ,tester et déployer des
applications de robots .Pour les robots manipulateurs la toolbox offre des algorithmes de
détection de collision, de planification et de génération de trajectoire, de cinématique directe
et inverse, mais aussi de dynamique qui utilisent des représentations d'arbre à corps rigides.
Pour les robots mobiles, elle propose des algorithmes de cartographie, de localisation, de
planification et de suivi de trajectoires, et de contrôle du mouvement.

Le rôle de chaque fonction :

Rpy2tr ( ) : cette fonction nous donne la matrice de transformation homogène SE(3) (4x4)
équivalente aux angles de roulis, de tangage et de lacet spécifiés.

Tel que T = rpy2tr(roll, pitch, yaw, options) Ceux-ci correspondent à des rotations autour
des axes X, Y, Z respectivement,

tr2rpy( ) : cette fonction nous donne les angles (en radians) de roulis-tangage-lacet (1x3)
correspondant à la partie rotation d’une transformation homogène T. Les 3
angles rpy=[R,P,Y] correspondent à des rotations séquentielles autour des axes X, Y et Z
respectivement.

rotx( ) :nous donne la matrice de rotation R autour de l’axe x (avec une angle en dégrée )

roty( ) : nous donne la matrice de rotation R autour de l’axe y (avec une angle en dégrée)

rotz( ): nous donne la matrice de rotation R autour de l’axe z (avec une angle en dégrée)

Le programme (de vérification) :


Les résultats :

De premier cas :
de 2eme cas :
Remarque :

Ces résultats nous confirment que les résultats précédents sont corrects (on a trouvé les même
résultats).

Et pour la question b on a trouvé uniquement une seule solution (la fonction tr2rpy( ) donne
une seule solution ),et pour le 2eme cas cette fonction nous a donnée α=85°, 𝖰 = 90° et 𝛾 =

Si on met cette solution comme entree de notre code (d) on aura la meme matrice de
rotation d’avant

Vérification de la question (a) en utilisant la fonction : eul2rotm

eul2rotm ( ) : convertit un ensemble d’angles d’Euler, eul, en matrice de rotation,rotm,l’ordre


par défaut pour les rotations d’angle d’Euler est Z-Y-X.

Le code matlab :
Les resultats :

De premier cas :

De 2em cas :

On remarque bien que les résultats obtenu sont similaires à celles d’avant

Vérification de la question (b) en utilisant la fonction : rotm2eul()

rotm2eul(): une fonction qui convertit une matrice de rotation, rotm, en angles d’Euler
correspondants (les angles obtenue sont en radians )

Le code matlab :
Les résultats

De premier cas :

De deuxième cas :
Conclusion:
La Robotics Toolbox est une boîte à outils qui propose de nombreuses fonctions utiles pour
l'étude et la simulation des robots industriels. Parmi ces fonctions, certaines sont
spécifiquement conçues pour faciliter le calcul de la matrice de transformation (en extrayant
la matrice de rotation à partir de T) ainsi que les angles d'Euler.

Dans le cadre de MATLAB, on peut également trouver deux fonctions utiles pour le calcul de
la matrice de rotation et des angles d'Euler : eu2rotml() et rotm2eul(). Cependant, la plupart
des fonctions essentielles pour la conception, la simulation, le test et le déploiement
d'applications robotiques se trouvent généralement dans la Robotics Toolbox..

Vous aimerez peut-être aussi