ENIB 5A — Mécatronique
2006–2007 Robotique 2
TP Génération de trajectoires
Rendre 1 compte rendu par groupe de 2 étudiants maximum avant le mercredi 20 décembre 2006
à 18h (des points de pénalité seront retirés après cette date).
Dans ce TP on souhaite générer des trajectoires pour le robot ABB. Les trajectoires seront géné-
rées dans Scilab sous forme discrète, c’est-à-dire un ensemble de point dans l’espace articulaire.
Cet ensemble de point sera ensuite traduit en programme RAPID (langage de programmation
robot).
Ce programme RAPID sera chargé dans le logiciel de simulation et de développement RobotStu-
dio pour y être testé et analysé.
Au final, les trajectoires correctes pourront être envoyées sur le vrai robot.
Mouvements
eels
Test et
simulation
des
trajectoires
en´eration
d’un
programme
RAPID
en´eration
de
Trajectoires Ensemble de
coord. articulaires
par lesquelles le
robot doit passer
Programme
RAPID
(fichier txt)
Transfert sur
la baie de
commande
Scilab Robot ABBRobotStudio
FIG. 1 – Vue d’ensemble du TP
On définit par M= (xM, yM, zM)le point terminal du robot (voir figure 2). Dans ce TP nous nous
intéressons seulement au mouvement de ce point sans tenir compte ni de l’orientation ni des contacts
éventuels d’autres points du robot avec des obstacles.
OUTILS FOURNIS :
Deux fonctions Scilab sont fournies :
X=direct(q) : donne le modèle géométrique direct du robot,
qreprésente les coordonnées articulaires du robot en radians (dim(q) = 6)
Xreprésente les coordonnées cartésiennes du point M(dim(X) = 3)
J=jacobienne(q) : donne la matrice jacobienne du robot au point qtelle que ˙
X=J˙q,
qreprésente les coordonnées articulaires du robot en radians (dim(q) = 6)
Xreprésente les coordonnées cartésiennes du point M(dim(X) = 3). La matrice Ja été
obtenue à partir de la fonction précédente J=direct(q)
q .
M= (xM, yM, zM)T
z
x
y
FIG. 2 – Robot ABB
Pour pouvoir utiliser ces deux commandes vous devez ajouter les deux lignes suivantes à votre
programme Scilab et décompresser l’archive GenerationModeles.zip1dans votre répertoire de travail :
exec GenerationModeles/loader.sce;
exec GenerationModeles/loader-func.sce;
PARTIE I : GÉNÉRATION DUN MOUVEMENT EN LIGNE DROITE DANS LESPACE OPÉRATIONNEL
Dans cette partie on souhaite générer un déplacement du point Men ligne droite dans l’espace de
travail, sans avoir la connaissance du modèle géométrique inverse du robot.
Soit le point de départ défini dans l’espace articulaire par
qD=
18°
27°
-2°
(1)
et le point d’arrivé souhaité défini dans l’espace de travail par
XA=
600mm
-300mm
760mm
(2)
1 – A l’aide des fonctions Scilab proposées, calculer les coordonnées opérationnelle du point de
départ (soit X0ces cordonnées).
2 – Admettons que le point terminal du robot soit à la position Xkconnue. A partir de Xket de
1l’archive peut être téléchargée à l’adresse http://www.enib.fr/~bourgeot/Cours.php
2
XAcalculer le vecteur suivant lequel le robot devrait se déplacer pour rejoindre le point d’arri XA.
Soit ˙
Xce vecteur vitesse de déplacement désiré.
Les vitesses articulaires et opérationnelles sont liées par la relation suivante :
˙
X=J˙q(3)
Pour obtenir la vitesse articulaire désirée ˙qnécessaire pour rejoindre XA, il faut donc inverser la rela-
tion (3). Or la matrice Jn’est pas carré (dim X= 3 et dim q= 6), il existe possiblement une infinité
de solution, le robot est dit redondant. Une solution possible est donnée par la pseudo-inverse2:
˙q=J˙
X(4)
avec J=JT(JJT)1(5)
3 – A partir de la relation (4) déterminer la vitesse articulaire que le robot devrait avoir pour
aller vers XA, soit ˙qcette vitesse. La relation 3 n’est valable qu’à un instant tdonné. La vitesse
désirée n’est donc valable que sur un intervalle de temps δt. Si la vitesse ˙qest appliquée pendant t,
quelle est la nouvelle position articulaire du robot qk+1(en fonction de t,qket ˙q). Avec le modèle
géométrique directe on peut en déduire Xk+1.
4 – En partant du point q0=qD, et en répétant les étapes des questions 1 à 3 jusqu’à obtenir
||Xk+1 XA|| < ǫ, on peut générerde proche en proche un ensemble de point dans l’espace articulaire
(les points qk) qui forme la trajectoire désirée. De plus si on se trouve loin des singularités du robot et
si test choisi assez petit, alors la trajectoire correspondante dans l’espace de travail est rectiligne.
5 – Programmer un script Scilab qui permette de générer une telle trajectoire. Ce script doit vous
fournir (au minimum, un tableau de point correspondant à tout les qk).
6 – En fonction de la valeur de tchoisie, le tableau obtenu à la question 5 peut avoir une taille
très importante. Ré-échantillonné votre trajectoire pour n’avoir qu’une vingtaine de points.
7 – Visualisé vos trajectoires dans l’espace de travail (et dans l’espace articulaire). A l’aide des
fonctions scilab suivantes : clf();param3d1(X,Y,Z,45,45,"x@y@z"); X,Yet Zsont
des vecteurs contenants les coordonnées (x, y, z)des points à afficher.
On souhaite maintenant pouvoir utiliser cette trajectoire sur le robot. Pour cela on va générer un
programme (dans le langage propre au robot) qui va le déplacer au point q0, puis q1,··· jusqu’à qn.
Un programme RAPID faisant cela est de la forme (les symboles \\ indiquent que l’on se trouve
sur la même ligne) :
2Pour information, c’est la solution qui minimise || ˙q||
3
%%%
VERSION:1
LANGUAGE:ENGLISH
%%%
MODULE GeneTraj
VAR num i:=1;
PROC main()
Gene_Trajectoire;
ENDPROC
PROC Gene_Trajectoire()
CONST jointtarget POC:=[[0,0,0,0,0,0],
\\[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST jointtarget Position1:=[[18.00,27.00,-2.00,0.00,0.00,0.00],
\\[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST jointtarget Position2:=[[q1,q2,q3,q4,q5,q6],
\\[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST jointtarget Position3:=[[q1,q2,q3,q4,q5,q6],
\\[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
.
.
.
CONST jointtarget Position20:=[[q1,q2,q3,q4,q5,q6],
\\[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
SingArea\Wrist;
ConfL\Off;
ConfJ\Off;
MoveAbsJ POC,v1000,fine,tool0;
MoveAbsJ Position1,v1000,fine\Inpos:=inpos100,tool0;
WaitTime 2;
MoveAbsJ Position2,v100,fine\Inpos:=inpos100,tool0;
MoveAbsJ Position3,v100,fine\Inpos:=inpos100,tool0;
MoveAbsJ Position4,v100,fine\Inpos:=inpos100,tool0;
.
.
.
MoveAbsJ Position19,v100,fine\Inpos:=inpos100,tool0;
MoveAbsJ Position20,v100,fine\Inpos:=inpos100,tool0;
WaitTime 2;
MoveAbsJ POC,v1000,fine,tool0;
ENDPROC
ENDMODULE
4
q1,q2,q3,q4,q5 et q6 représentent les coordonnées articulaires de chaque point de passage
exprimé en degrés.
8 – A l’aide des fonctions Scilab mopen et mfprintf générer automatiquement un programme
RAPID sous forme de fichier texte (le fichier générer devra avoir l’extension .prg).
9 – Importer ce programme dans RobotStudio ;
ouvrir RobotStudio ABB Automation/Robot Studio/RobotStudio
charger le robot IRB140_M2000 Fichier/Importer/Bibliothèque
démarrer le système de commande en faisant un clic droit sur composant/Irb140_M2000
charger votre programme Fichier/Importer/Programme
et exécuter ce programme (bouton play). Vérifier la conformité de la trajectoire avec la trajec-
toire désirée. La trace du mouvement peut être obtenue en cochant la case Trace dans le menu
Simulation/Moniteur. Vous pouvez utiliser les outils de RobotStudio pour tracer la ligne droite
de référence (
Créer/Composants 2D/Ligne). Si la trajectoire n’est pas rectiligne, expliquer pourquoi, com-
ment remédier à cela?
Remarque :
Dans le cadre d’une application sur le robot industrielle IRB140, cette méthode ne présente que peu
d’intérêt puisque un mouvement rectiligne dans l’espace opérationnel peut directement être obtenu
grâce à la commande RAPID "MOVEL". Néanmoins cette méthode reste applicable pour contrôler
n’importe quel autre robot dont vous ne connaîtriez pas le modèle géométrique inverse.
PARTIE II : EVITEMENT DOBSTACLE
On souhaite maintenant modifier la méthode utilisée dans la partie 1, pour générer des trajectoires
qui évitent des obstacles.
Soit un obstacle sphérique3de rayon r= 60 cm et d’origine Xobs = (600,50,630)T.
Dans l’algorithme précédent on souhaite modifier la façon de calculer la vitesse désirée ˙qpour
pouvoir éviter des collisions. On propose de calculer ˙qavec la relation suivante :
˙q=K1J(XAX)
|{z }
Terme 1
+K2JΨ(X, Xobs)
|{z }
Terme 2
(6)
K1et K2sont deux gains, et Ψ(X, Xobs)une fonction de pénalisation à déterminer.
Le terme 1permet de générer une composante de la vitesse en direction de la position souhaitée
tel qu’étudié dans la 1ère partie du TP. Le terme 2permet de générer une une composante de la vitesse
qui tend à éloigner le point Mde l’obstacle.
3Si l’obstacle n’est pas sphérique, nous pouvons toujours considérer la plus petite sphère englobant l’obstacle.
5
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !