Académique Documents
Professionnel Documents
Culture Documents
TP 1 - Transformations homogènes
et modèle géométrique d'un robot
Le but de ce TP est de développer des fonctions sous Matlab qui permettent de définir des
transformations homogènes et de calculer le modèle géométrique direct (MGD) d’un
manipulateur. Le modèle géométrique inverse (MGI) d’un simple manipulateur à 2 DDL sera
aussi consideré.
Un compte rendu avec les méthodes proposées ainsi que les résultats intermédiaires est à rendre
à la fin de la séance par chaque étudiant. Il est à noter que du simple code n’est pas un compte
rendu: commentez vos fonctions et motivez vos choix dans votre rapport final.
Attention: Sélectionner la version à 64 bits au démarrage de Windows.
Une brève introduction à Matlab
Le logiciel Matlab est un logiciel de manipulation de données numériques et de programmation
dont le champ d’application est essentiellement les sciences appliquées. Son objectif, par
rapport aux autres langages, est de simplifier au maximum la transcription en langage
informatique d’un problème mathématique, en utilisant une écriture la plus proche possible du
langage naturel scientifique.
Matlab est un logiciel interprété (donc sans phase préliminaire de compilation) qui exécute les
opérations demandées séquentiellement, avec possibilité de boucle, test et saut. Il ne manipule
que des données numériques et ne sait effectuer aucun calcul formel à priori.
L'écran de base comprend l'écran de contrôle, le Command Window, ainsi que des fenêtres
complémentaires permettant de suivre le fonctionnement général d'une application. Les
instructions frappées (ou collées) dans la Command Windows s'exécutent directement.
Les commandes peuvent être relancées dans la fenêtre Matlab simplement en remontant la liste
par ↑ et en validant la ligne par Return.
L'exécution d'une ligne provoque automatiquement l'affichage des résultats sous forme d'une
liste de données numériques. Cette fonctionnalité peut être bloquée en mettant un ";" à la fin de
chaque ligne de programme (préférable lorsque le calcul concerne une matrice de grande
dimension).
Tout programme enregistré sous l'extension ".m" peut être lancé depuis la Commande Windows
de Matlab, en frappant son nom (sous réserve que le chemin d'accès au fichier soit déclaré sous
Matlab, voir la commande Set Path du menu Fichiers.
La commande "help" ou "help nom-de-fonction" permet d'obtenir une aide sur le logiciel en
général, un Toolbox (ou boîte à outils) ou une fonction particulière. Toute variable utilisée est
rangée dans l'espace mémoire appelé workspace et y reste à moins d'effacer le workspace par
la commande "clear all". Le contenu du workspace peut être affiché par l'instruction "who"
(nom seul des variables) ou "whos" (noms avec description du type).
1. Ajouter l'entête suivant au texte :
function [sortie1, sorite2,...] = nom_fonction(par_entree1,par_entree2,...)
Instruction 1 % Commentaire à l'instruction 1
1
Maher MKHININI & Talel Zouari
ESPRIT Année universitaire 2021/2022
Instruction 2
...
End
Exemple :
Par exemple, si on souhaite faire une fonction produit, qui calcule et renvoie en sortie le produit
de deux scalaires pass´es en param`etre, on ´ecrira dans le fichier produit.m :
>>function x=produit(a,b)
>>x=a*b
>>end
Pour tester cette fonction, placez-vous (`a l’aide de l’explorateur de fichiers Matlab) dans le
r´epertoire qui contient le fichier produit.m et on ´ecrira dans la fenˆetre de commande :
>> produit(2,3)
2.Sauvegarder le texte avec comme nom de fichier le nom ma_fonction.m (l'extension ".m" est
obligatoire pour être reconnue comme fonction) dans un répertoire accessible à Matlab. Une
fois sauvegardée, la fonction est utilisable dans tout programme, comme toute autre fonction
du noyau Matlab.
Pratique :
Créer un fichier.m qui s’intitule TP1AtelierRobotique.m
Rotations et transformations de matrices
Cet exemple montre comment effectuer des rotations et des transformations en 3D à l'aide de
Symbolic Math Toolbox™ et des matrices.
Définir et tracer une surface paramétrique
Définissez la surface paramétrique x(u,v), y(u,v), z(u,v) comme suit.
>>syms u v
>>x = cos(u)*sin(v);
>>y = sin(u)*sin(v);
>>z = cos(v)*sin(v);
2
Maher MKHININI & Talel Zouari
ESPRIT Année universitaire 2021/2022
>>fsurf(x,y,z)
>>axis equal
fsurf(f) crée un graphique de surface de la fonction z = f(x,y) sur l'intervalle par défaut [-5 5]
pour x et y.
Rotation autour de chaque axe en trois dimensions
Tout d'abord, faites pivoter la surface autour de l'axe des x de 45 degrés dans le sens inverse
des aiguilles d'une montre.
>>xyzRx = Rx*[x;y;z];
>>Rx45 = subs(xyzRx, t, pi/4);
snew = subs(s,old,new) retourne une copie de s, en remplaçant toutes les occurrences de old par
new, puis évalue s
Faites une rotation autour de l'axe z de 90 degrés dans le sens des aiguilles d'une montre.
>>xyzRz = Rz*Rx45;
>>Rx45Rz90 = subs(xyzRz, t, -pi/2);
Faites une rotation autour de l'axe des y de 45 degrés dans le sens des aiguilles
d'une montre.
>>xyzRy = Ry*Rx45Rz90;
>>Rx45Rz90Ry45 = subs(xyzRy, t, -pi/4);
3
Maher MKHININI & Talel Zouari
ESPRIT Année universitaire 2021/2022
4
Maher MKHININI & Talel Zouari
ESPRIT Année universitaire 2021/2022
Problème géométrique inverse: déterminer le vecteur des variables articulaires q d'un robot
permettant d'obtenir une situation désirée pour l’effecteur.
Le modèle géométrique direct du robot planaire en Fig. 2 est:
𝑃𝑥 = 𝑑2 𝑐𝑜𝑠𝜃1
𝑃𝑦 = 𝑑2 𝑠𝑖𝑛𝜃1
5
Maher MKHININI & Talel Zouari
ESPRIT Année universitaire 2021/2022
𝑃𝑦
𝜃1 = arctan( )
𝑃𝑥
𝑑2 = √𝑝𝑥2 + 𝑝𝑦2
Écrire une fonction Matlab, appelée [theta1, d2] = MGI_RP(px, py), qui prend en entrée les
coordonnées du point P (voir la Fig. 2) et renvoie les variables articulaires du robot.
Remarque: Pour plus de robustesse dans le calcul de θ1, la fonction arc tangente à
2 arguments (tapez "help atan2" sous Matlab) est à préférer.
6
Maher MKHININI & Talel Zouari