Vous êtes sur la page 1sur 7

Travail Pratique #4

ELE8203 - Robotique

Commande d’un manipulateur à 3 DDL

Département de génie électrique


Polytechnique Montréal

Automne 2023
Travail à remettre avant le début du TP5

Présentation de votre rapport : il est conseillé mais pas requis d’écrire votre rapport à
l’ordinateur. Si vous l’écrivez à la main, il faudra scanner le document de façon à ce qu’il
reste bien lisible. Dans tous les cas, soignez votre présentation, car des points pourront être
retirés à un document mal présenté (voir le plan de cours). À la limite, un document illisible
où pour lequel la correction demanderait un effort exagéré pourrait se voir attribuer la note
0. Vous devriez tenir compte des conseils généraux suivants.
— Page ou section de présentation : Le nom et le matricule de chacun des membres de
l’équipe (2 étudiants par équipe, sauf exception), le numéro du cours, le numéro de
la section et le nom du laboratoire effectué sont correctement indiqués.
— Qualité des figures et tableaux : La présentation des figures et des tableaux est
claire et soignée. Chaque figure ou tableau est accompagné d’un titre clair et sa
présence est justifiée par une discussion y renvoyant dans le texte du rapport. Les
différents éléments présentés sur une figure ou dans une image doivent être claire-
ment différentiables.
— Qualité des développements mathématiques : Les développements mathématiques sont
clairs et complets, simples à comprendre et à suivre.
— Qualité du texte et des explications : Le rapport est facile à lire et les idées sont
clairement énoncées, dans un français de qualité.
— Utilisation de variables et symboles : La signification des variables ou des symboles
utilisés ainsi que leurs unités respectives sont clairement indiquées dans le rapport.
— Professionnalisme : Le rapport comprend une introduction ainsi qu’une conclusion
résumant les objectifs à atteindre et commentant leur réalisation. Dans l’ensemble le
rapport fait preuve d’une démarche professionnelle.
Sauf mention contraire, toutes les questions dans l’énoncé qui suit doivent faire l’objet d’une
discussion, même brève, dans votre rapport, afin d’expliquer de manière concise la solution
que vous avez implémenté dans votre simulation.
Pendant la séance 5 de T.P., votre instructeur pourra vous demander de lui décrire les
éléments que vous aurez implémenté et d’exécuter vos simulations illustrants vos résultats.

ELE8203 - Travail Pratique #4 Page de couverture Automne 2023


1 Objectifs
Ce TP met en application les notions introduites dans les chapitres 7, 8 et 9 des notes de cours, qui concernent
le suivi de trajectoires simples. Un premier objectif est de comparer en simulation les performances de trois types
de contrôleurs effectuant une commande en couple appliquée à un robot planaire à trois degrés de liberté et soumis
à la pesanteur. Ce travail se fera sous MATLAB-Simulink, en complétant un modèle de départ fourni dans le fichier
RRRplanaire.mdl (note : il faut mettre le fichier de visualisation LRMate200iC.wrl dans le même répertoire que
RRRplanaire.mdl).
Un second objectif est de tester sur le robot Gen3 lite une stratégie de commande en vitesse, implémentée à
l’aide de l’API de haut niveau fournie par Kinova.

2 Déroulement de la séance
Commencez par revoir le modèle cinématique du robot RRR présenté à la section 3 et lisez les instructions de
la section 7. Ensuite, lorsque votre équipe aura accès à un des robots Gen3 lite, effectuez les tâches décrites dans
cette dernière section.
Le reste du temps sera consacré à travailler sur la simulation et la commande du robot RRR dans MATLAB-
Simulink.

3 Modèle dynamique du robot RRR

ye xe

l3 θ3

C3

m3 g

θ2
C2
l1

ys m2 g
l2
C1
θ1
xs
m1 g

Figure 1 – Robot Planaire RRR.

Pour simplifier l’étude, nous considérons dans ce TP un robot planaire à trois degrés de liberté, évoluant dans
un plan vertical. Le robot à contrôler est illustré à la figure 1. Les longueurs, masses et inerties des segments sont
2
données dans la table 1. La gravité agit selon l’axe des y négatifs du repère {s}, avec g = 9.81 m/s . Puisque le
modèle est planaire, on peut travailler en deux dimensions, les matrices de rotation sont dans SO(2), les poses dans
SE(2), les torseurs cinématiques sont de la forme V = [ω, vx , vy ]T (avec ω la vitesse angulaire autour d’une direction
zs perpendiculaire au plan), etc.

ELE8203 - Travail Pratique #4 Page 1 of 6 Automne 2023


htpb !

Table 1 – Paramètres du robot planaire RRR


Paramètres segment 1 segment 2 segment 3

mi 1 kg 1 kg 0.5 kg

li 0.3 m 0.32 m 0.08 m

1 1 1
Ii m1 l12 m2 l22 m3 l32
12 12 12

l1 l2 l3
Ci
2 2 2

N.B. : Le fichier RRRplanaire.mdl fourni adopte une convention différente de celle des notes de cours, en plaçant
les variables de position avant les variables angulaires. Ainsi certaines lignes de vos matrices ou vecteurs doivent être
permutées lors de l’implémentation.
La cinématique du robot planaire RRR a été traitée à l’exemple 5.2.5 des notes de cours. Dans sa configuration
de repos, on a θ1 = 0◦ , θ2 = 0◦ et θ3 = 0◦ et le robot est allongé le long de l’axe des x positifs du repère stationnaire
s. Avec les données de la figure 1, le modèle de cinématique direct est donné par
 
c123 −s123 l3 c123 + l2 c12 + l1 c1
Tes (θ) = s123 c123 l3 s123 + l2 s12 + l1 s1  ,
0 0 1

avec θ = [θ1 , θ2 , θ3 ]T . En particulier, l’angle ϕ entre xs et xe est égal à ϕ = θ1 + θ2 + θ3 . On dénote les coordonnées
dans s du centre E du repère effecteur simplement x, y.
On avait aussi trouvé pour la jacobienne (représentée au centre E du repère effecteur)
 
1 1 1
JEs = −(L1 s1 + L2 s12 + L3 s123 ) −(L2 s12 + L3 s123 ) −L3 s123  , (1)
L1 c1 + L2 c12 + L3 c123 L2 c12 + L3 c123 L3 c123

si bien que   
  ϕ̇ θ̇1
ωe/s
s
vE/s = vE,x  = JEs θ̇2  .
vE,y θ̇3
La cinématique inverse a été traitée à la section 6.1.1. des notes de cours. On utilisera ici seulement la solution
“coude haut”, que l’on rappelle ici. Si xd , yd sont les coordonnées désirées pour le point E et ϕd l’orientation désirée
pour l’effecteur, on définit
q
Wx := xd − l3 cos ϕd , Wy := yd − l3 sin ϕd , d := Wx2 + Wy2 .

Les angles des articulations sont alors donnés par


 2
d − l12 − l22
 2
d + l12 − l22
 
θ2 = − arccos , θ1 = atan2(Wy , Wx ) + arccos , θ 3 = ϕd − θ 2 − θ 1 . (2)
2l1 l2 2 d l1
Le modèle dynamique du robot n’est pas reproduit ici, mais les éléments nécessaires pour le calculer se trouvent
dans le bloc Systeme - Controleurs du fichier Simulink, voir la figure 2. Les frottements sont négligés. Rappelons

ELE8203 - Travail Pratique #4 Page 2 of 6 Automne 2023


xd xd qd Qd Out1 Articulation_2.rotation

xdp xdp qdp Qdp Q In1 Out2 Articulation_3.rotation

xdpp xdpp qdpp Qdpp Out3 Articulation_4.rotation

Trajectoire CinematiqueInverse Systeme ï Controleurs Rotations VirtualReality

q x

XY Graph
Terminator
CinematiqueDirecte

Figure 2 – Le modèle Simulink fourni.

que ce modèle dynamique prend la forme


M (θ)θ̈ + C(θ, θ̇)θ̇ + g(θ) = τ ,
avec M la matrice d’inertie, C la matrice de Coriolis, τ le couple appliqué par les moteurs et g(θ) le terme représentant
les couples associés à la pesanteur.
1. [1 point] Complétez le module de cinématique directe dans le fichier Simulink.
2. [2 points] Donnez l’expression analytique de g(θ), en fonction des paramètres du problème, en expliquant votre
approche. Notez qu’il est possible de vérifier votre réponse à l’aide des éléments fournis dans le fichier Simulink.
N.B. : Vous n’avez pas à re-calculer les expressions fournies dans le fichier pour les autres termes de la dynamique.

4 Trajectoire désirée
L’objectif est de faire suivre des trajectoires au point E du robot. Deux trajectoires seront considérées : un point
fixe et une trajectoire circulaire dans l’espace cartésien montrée sur la figure 3. Cette dernière trajectoire est donnée
par
xd (t) = x0 + A cos(ωt)
(3)
yd (t) = y0 + A sin(ωt)
De plus, l’orientation désirée ϕd le long de la trajectoire est égale à 0◦ en tout temps. Le point fixe peut être considéré
comme un cas particulier de la trajectoire circulaire, avec A = 0. La trajectoire circulaire est définie par ω = 1 rad/s,
x0 = 40 cm, y0 = 30 cm et A = 10 cm. Dans vos simulations, le robot partira de la configuration θ1 = 90◦ , θ2 = −90◦
et θ3 = −90◦ à l’instant t = 0, avec des vitesses articulaires nulles.
Comme la trajectoire est spécifiée, on peut calculer θd (t) en fonction de xd (t), yd (t) et ϕd (t) par la cinématique
inverse. On peut aussi calculer les vitesses articulaires désirées par la cinématique inverse différentielle :
 
ϕ̇d (t)
θ̇d (t) = (JEs (θd ))−1 ẋd (t) . (4)
ẏd (t)
Finalement, pour obtenir les accélérations désirées, on peut écrire
   
ϕ̇d (t) ϕ̈d (t)
ẋd (t) = JEs (θd )θ̇d (t) donc ẍd (t) = JEs (θd )θ̈d (t) + J˙Es (θd , θ̇d )θ̇d (t),
ẏd (t) ÿd (t)
et ainsi
  
 ϕ̈d (t) 
θ̈d (t) = (JEs (θd ))−1 ẍd (t) − J˙Es (θd , θ̇d )θ̇d (t) .
ÿd (t)
 

ELE8203 - Travail Pratique #4 Page 3 of 6 Automne 2023


Figure 3 – Trajectoire circulaire à suivre (dans le repère {s}).

3. [1 point] Calculez l’expression analytique de la matrice J˙Es (θ, θ̇) = d s


dt JE (θ).
4. [1 point] Complétez le module de génération de trajectoire dans le fichier Simulink (notez encore un fois l’ordre
différent des variables dans ces fichiers : [xd , yd , ϕd ]T ). Il est possible d’utiliser des sources de signaux sinusoı̈daux.
5. [2 points] Complétez le module de cinématique inverse dans le fichier Simulink.

5 Contrôleurs
Les lois de commande suivantes sont discutées dans le chapitre 9 des notes de cours.

5.1 PID axe par axe


Le premier contrôleur à réaliser est un contrôleur PID axe par axe. Dans ce cas, la commande est donnée par
Z t
τ = Kp (θd − θ) + Ki (θd − θ)dt + Kd (θ̇d − θ̇),
0

où Kp , Ki et Kd sont des matrices diagonales dont les éléments sont les gains PID pour chacun des axes.

5.2 PD avec compensation de gravité


Le deuxième contrôleur à réaliser est un contrôleur PD avec compensation de gravité. Dans ce cas, la commande
est donnée par

τ = Kp (θd − θ) + Kd (θ̇d − θ̇) + g(θ),

où Kp et Kd sont des matrices diagonales dont les éléments sont les gains PD pour chacun des axes. Ainsi, la
pesanteur est compensée en utilisant le modèle, et non plus traitée comme une perturbation.

5.3 Commande par couple pré-calculé


Pour ce contrôleur, la dynamique est compensée et découplée en utilisant la loi de commande suivante :
h i
τ = M (θ) θ̈d + Kd (θ̇d − θ̇) + Kp (θd − θ) + C(θ, θ̇)θ̇ + g(θ),

où Kp et Kd sont des matrices diagonales dont les éléments sont les gains PD pour chacun des axes. Ce contrôleur
et son réglage est décrit à la section 9.3.3 des notes de cours.
6. [2 points] Complétez le module du contrôleur à couple pré-calculé dans le fichier Simulink. Vous devez pour cela
réutiliser (copier/coller) les blocs implémentant M (θ), C(θ, θ̇)θ̇ et g(θ), déjà inclus dans le modèle.

ELE8203 - Travail Pratique #4 Page 4 of 6 Automne 2023


6 Réglage des contrôleurs
Pour chacun des trois contrôleurs présentés ci-dessus, choisissez des gains qui stabilisent le système et donnent
des performances raisonnables pour les deux trajectoires (cherchez à atteindre un temps de réponse d’environ 3
sec pour le point fixe et un dépassement de moins de 20%). Les mêmes gain doivent être utilisés pour les
deux trajectoires. Indiquez clairement les valeurs choisies pour les gains de chacun des contrôleurs. De plus, le
couple fourni par les moteurs ne doit pas dépasser 40 Nm. La configuration initiale du robot pour toutes
les simulations est θ1 = π2 , θ2 = − π2 et θ3 = − π2 .
N.B. : À titre d’indication, pour le réglage des gains du PID, maintenir Kp < 40, Ki < 20, Kd < 20. Notez qu’il
est possible en simulation d’obtenir des résultats apparemment satisfaisants mais avec des valeurs irréalistes, qui ne
passeraient pas à l’implémentation.
Afin de comparer les contrôleurs efficacement, il est préférable de sauvegarder les données dans Matlab et de
générer ensuite les graphiques suivants :
— la trajectoire XY de l’outil (Y en fonction de X) ;
— l’orientation ϕ de l’outil ;
— l’erreur de position en fonction du temps (distance entre la position de l’outil et la position désirée) ;
— dans trois graphiques contigus (idéalement des sous-graphiques), les trois variables articulaires θ en fonction
du temps ;
— les couples appliqués aux moteurs en fonction du temps (afin de vérifier que la limite n’est pas dépassée) ;
Les figures doivent présenter les courbes superposées des trois contrôleurs et la courbe désirée (à l’exception
des couples). Assurez-vous de varier les traits afin que les courbes soient facilement distinguables. Ainsi,
vous devriez avoir 5 figures par trajectoire, donc 10 figures en tout.
7. [5 points] Donnez les valeurs de vos gains et attachez les 10 figures demandées. S’il est difficile de distinguer le
transient sur une figure, générez une figure supplémentaire montrant les éléments intéressants de la trajectoire et
expliquez brièvement ce que vous avez voulu montrer sur cette figure supplémentaire. Si un ou des contrôleurs ne
rencontrent pas les spécifications demandées, mentionnez-le. Il faut éviter d’ajouter une saturation sur le signal
de commande pour rencontrer la spécification sur le couple ; cependant, si vous ne pouvez pas faire autrement,
mentionnez-le aussi.
8. [2 points] En vous appuyant sur vos figures et votre démarche de conception, comparez vos contrôleurs en termes
de performance, de complexité d’implémentation, de valeurs des gains nécessaires, et autres caractéristiques que
vous jugerez pertinentes.

7 Commande en vitesse du robot Gen3 lite


Dans la partie expérimentale de ce laboratoire, vous allez commander 3 des articulations du robot Gen3 lite en
vitesse, afin d’obtenir un robot planaire RRR dont l’effecteur suit une trajectoire circulaire similaire à celle de la
figure 3. On considère tout d’abord la commande en vitesse du manipulateur RRR précédent. La trajectoire voulue
pour le centre de l’effecteur est donnée par (3), avec A = 5 cm et ω = 1 rad/s. Le robot démarre initialement avec
θ1 = π/2, θ2 = −π/2, θ3 = 0, et dans cette configuration le centre du repère effecteur définit le centre (x0 , y0 ) du
cercle. L’orientation désirée demeure ϕd = 0◦ , constante.
On obtient la trajectoire articulaire désirée θd (t) par application de la cinématique inverse explicite (2). D’autre
part, la vitesse articulaire désirée est donnée par (4). On peut donc appliquer la loi de commande en vitesse dans le
domaine articulaire donnée dans la section 7.3.2 des notes de cours
Z t
θ̇ = θ̇d + Kprop (θd − θ) + Kint (θd (τ ) − θ(τ )) dτ. (5)
0

Pour implémenter la loi de commande, tous les termes θd pourraient être précalculés, mais ici on peut juste les obtenir
en temps réel, puisque toutes les formules sont analytiques sauf peut-être l’inversion de la jacobienne nécessaire pour
calculer θ̇d dans (4) (une formule analytique de l’inverse pourrait être développée, mais il est plus simple ici de
résoudre un système linéaire numériquement).
9. [1 point] Dénotons les variables articulaires du Gen3 lite q = [q1 , . . . , q6 ]T . Expliquer, pourquoi en fixant q1 =
q6 = 0, q4 = −π/2, puis en établissant la correspondance q2 = θ1 − π/2, q3 = −θ2 , q5 = θ3 , on obtient un
manipulateur RRR comme représenté sur la figure 1, dont le repère de base est centré sur l’axe de l’articulation

ELE8203 - Travail Pratique #4 Page 5 of 6 Automne 2023


2 du Gen3 lite. Inclure un schéma du Gen3 lite dans une configuration où q1 = q6 = 0, q4 = −π/2, afin d’illustrer
votre explication. Expliquez quelle est la correspondance entre les directions du repère {s} de la figure 1 et les
directions du repère “Base frame” de la figure 64 du manuel utilisateur du Gen3 lite. Indiquez sur votre schéma
les valeurs ℓ1 , ℓ2 , ℓ3 du manipulateur RRR obtenu.
10. [1 point] On commande donc les articulations 2, 3 et 5 du Gen3 lite en vitesse, au moyen d’un script Python
qui vous est fourni sur Moodle. Complétez dans le script la ligne qui permet de calculer la vitesse articulaire
désirée θ̇d , au moyen de la fonction linalg.solve de la librairie Numpy. Une fois que cela est fait, validez avec
l’instructeur, avant d’exécuter le script pour commander le robot.
N.B. : Ne modifiez aucune autre ligne du script. Une personne de votre équipe doit toujours être prête à effectuer
un arrêt d’urgence du robot lorsque le script est lancé.
11. [2 points] Exécutez une trajectoire pendant environ 40 s, pour la commande en boucle ouverte tout d’abord,
(Kprop = Kint = 0), puis avec rétroaction en utilisant les gains fournis dans le fichier script. Pour chaque cas,
incluez dans votre rapport une figure avec les trajectoires xd (t) et x(t) superposées d’une part, et une figure
avec zd (t) et z(t) superposées d’autre part, où (x, z) sont les coordonnées du centre de l’effecteur dans le repère
“Base frame” de la figure 64 du manuel utilisateur. Vous devez donc avoir 4 figures au total. Commentez sur les
trajectoires observées dans chacun des deux cas, et tentez d’expliquer le comportement et l’origine des erreurs
de suivi éventuelles que vous observerez.
N.B. : Notez que les fonctions nécessaires à l’enregistrement des données et au traçage des figures vous sont déjà
fournies.

8 Travail à remettre
Votre rapport est à remettre avant le début du TP5 sur Gradescope. Il doit répondre aux questions ci-dessus. De
plus, vous devrez fournir votre fichier Simulink complété dans l’espace prévu à cet effet dans Moodle. Sur la base
de votre rapport, vous devriez pouvoir expliquer rapidement vos résultats au chargé de laboratoire lors du TP5 et
exécuter les simulations illustrant vos résultats, s’il/elle le demande.

ELE8203 - Travail Pratique #4 Page 6 of 6 Automne 2023

Vous aimerez peut-être aussi