Académique Documents
Professionnel Documents
Culture Documents
I. BUT DE L’ETUDE
L’objectif de cette manipulation consiste élaborer des lois de commandes par PID et par
découplage non linéaire pour un robot plan à trois axes permettant :
- La stabilisation du robot dans l’espace articulaire autour de tout point de fonctionnement.
- La poursuite d’une trajectoire servant de référence pour l’organe terminal : commande dans
l’espace opérationnel.
II. DESCRIPTION
Soit le bras du robot rigide a trois degrés de liberté suivant :
On notera :
𝑢 = [𝑢1 𝑢2 𝑢3]𝑇 : Vecteur des commandes délivrées par les moteurs électriques
L1, L2, L3 : longueurs des segments
m1, m2, m3 : masses suspendues aux extrémités des segments.
1
ENSEM 2016/2017
𝜎𝑖 𝛼𝑗 𝑑𝑗 𝜃𝑗 𝑟𝑗
1 0 0 0 𝜃1 0
2 0 0 L1 𝜃2 0
3 0 0 L2 𝜃3 0
𝑗 −1
Matrice élémentaire 𝑇𝑗 𝑎𝑣𝑒𝑐 𝑗 = 1,2,3, 𝑚3 voir
cos 𝜃1 − sin 𝜃1 0 0 cos 𝜃2 − sin 𝜃2 0 𝐿1
0 sin 𝜃1 cos 𝜃1 0 0 1 sin 𝜃2 cos 𝜃2 0 0
𝑇1 = ; 𝑇2 =
0 0 1 0 0 0 1 0
0 0 0 1 0 0 0 1
cos 𝜃3 − sin 𝜃3 0 𝐿2 1 0 0 𝐿3
2 sin 𝜃3 cos 𝜃3 0 0 3 0 1 0 0
𝑇3 = ; 𝑇𝑚3 =
0 0 1 0 0 0 1 0
0 0 0 1 0 0 0 1
𝑈𝑜 = 0𝑇𝑚3 = 0𝑇1 × 1𝑇2 × 2𝑇3 × 3𝑇𝑚3 Avec
𝒔𝒙 𝒏𝒙 𝒂𝒙 𝑷𝒙
𝒔𝒚 𝒏𝒚 𝒂𝒚 𝑷𝒚
𝑼𝟎 =
𝒔𝒛 𝒏𝒛 𝒂𝒛 𝑷𝒛
𝟎 𝟎 𝟎 𝟏
On obtient la matrice en multipliant le terme de la droite vers la gauche:
𝑈3 = 3𝑇𝑚3 ;
𝑈2 = 2𝑇3 × 𝑈3;
𝑈1 = 1𝑇2 × 𝑈2
𝑈0 = 0𝑇1 × 𝑈1Une fois cette matrice déterminée il suffit de faire par identification.
On pourra directement déterminer cette matrice sur le plan du robot (voir figure) :
On aura alors
cos 𝜃1 + 𝜃2 + 𝜃3 0 0 𝑃𝑥
0 cos 𝜃1 + 𝜃2 + 𝜃3 0 𝑃𝑦
𝑈0 = 3𝑇𝑚3 = Avec :
0 0 cos 𝜃1 + 𝜃2 + 𝜃3 0
0 0 0 1
𝑷𝒙 𝑳𝟏 𝐜𝐨𝐬 𝜽𝟏 + 𝑳𝟐 𝐜𝐨𝐬 𝜽𝟏 + 𝜽𝟐 + 𝑳𝟑 𝐜𝐨𝐬 𝜽𝟏 + 𝜽𝟐 + 𝜽𝟑
𝑷𝒚 = 𝑳𝟏 𝐬𝐢𝐧 𝜽𝟏 + 𝑳𝟐 𝐬𝐢𝐧 𝜽𝟏 + 𝜽𝟐 + 𝑳𝟑 𝐬𝐢𝐧 𝜽𝟏 + 𝜽𝟐 + 𝜽𝟑
𝜽 𝜽𝟏 + 𝜽𝟐 + 𝜽𝟑
Ainsi avec les coordonnées articulaires 𝑞 = [𝜃1 𝜃2 𝜃3]𝑇 ; on pourra determiner les
coordonnées operationnelles 𝑋 = [𝑃𝑥 𝑃𝑦 𝜃]𝑇
2
ENSEM 2016/2017
𝑍12 + 𝑍22 − 𝑋 2 − 𝑌² 𝐵1 × 𝑍1 + 𝐵2 × 𝑍2
𝜃𝑗 = 𝜃2 = cos −1 𝑒𝑡 𝜃𝑖 = 𝜃1 = cos−1 𝑒𝑡 𝜃3
2𝑋𝑌 𝐵12 + 𝐵2²
= 𝜃 − 𝜃2 − 𝜃1
On fera la simulation de ces modelés sur Matlab.
2. Modélisation dynamique
2.1. Matrice de l’équation de mouvement
𝒙𝟐 𝟎𝟑.𝟑
𝑥 = 𝑓 𝑥 + 𝑔 𝑥 .𝑢 𝒙= −𝟏 + .𝒖
Qui devient : 𝒈𝒂𝒎𝒎𝒂 𝒙𝟏 × 𝒈𝒂𝒎𝒎𝒂𝟏(𝒙𝟏, 𝒙𝟐) 𝒈𝒂𝒎𝒎𝒂−𝟏 (𝒙𝟏)
𝑦 = 𝑐𝑥
𝒚 = 𝒙𝟏
4
ENSEM 2016/2017
𝑡
𝑢 = 𝐾𝑝 𝑞𝑐 − 𝑞 + 𝐾𝑑 𝑞𝑐 − 𝑞 + 𝐾𝐼 𝑞𝑐 − 𝑞 𝑑𝑡
𝑡0
Avec :
[𝑞𝑐 𝑞𝑐 ] =
𝑥1𝑐 𝑥2𝑐 𝑥3𝑐 𝑥4𝑐 𝑥5𝑐 𝑥6𝑐 𝑞𝑢𝑖 𝑠𝑜𝑛𝑡 𝑙𝑒𝑠 𝑐𝑜𝑛𝑠𝑖𝑔𝑛𝑒𝑠 𝑑𝑒𝑠 𝑝𝑜𝑠𝑖𝑡𝑖𝑜𝑛𝑠 𝑒𝑡 𝑣𝑖𝑡𝑒𝑠𝑠𝑒 𝑑𝑎𝑛𝑠 𝑙 ′ 𝑒𝑠𝑝𝑎𝑐𝑒 𝑎𝑟𝑡𝑖𝑐𝑢𝑙𝑎𝑖𝑟𝑒
𝑡
On a:𝑢𝑗 = 𝐾𝑝𝑗 𝑞𝑐 − 𝑞 + 𝐾𝑑𝑗 𝑞𝑐 − 𝑞 + 𝐾𝐼𝑗 𝑡0
𝑞𝑐 − 𝑞 𝑑𝑡 𝑎𝑣𝑒𝑐𝑗 = 1,2,3
𝑲𝒑𝒋 = 𝟑. 𝒂𝒋 . 𝒘𝟐𝒋
On en déduit alors : 𝒌𝒅𝒋 = 𝟑. 𝒂𝒋 . 𝒘𝒋
𝑲𝑰𝒋 = 𝒂𝒋 . 𝒘𝟐𝒋
plot([-0.5 0.5 0.5 -0.5 -0.5],[0.5 0.5 0.8 0.8 0.5], 'r');
5
ENSEM 2016/2017
PXR=-0.5:0.01:0.5; PYR=0.15*sin(8*PXR)+0.65;
plot(PXR,PYR,'g'),grid;
holdon
for PXR=-0.5:0.01:0.5; PYR=0.15*sin(8*PXR)+0.65;
tetaR=pi/2;
Z1=PXR-L3*cos(tetaR); Z2=PYR-L3*sin(tetaR);
X=L1; Y=L2;
teta2(i)=acos((Z1^2+Z2^2-X^2-Y^2)/(2*X*Y));
B1=X+Y*cos(teta2(i)); B2=Y*sin(teta2(i));
teta1(i)=acos((B1*Z1+B2*Z2)/(B1^2+B2^2));
teta3(i)=tetaR-teta1(i)-teta2(i);
i=i+1;
end
fori=1:length(teta1);
X11=L1*cos(teta1(i)); Y11=L1*sin(teta1(i));
X12=X11 + L2*cos(teta1(i)+teta2(i));
Y12=Y11 + L2*sin(teta1(i)+teta2(i));
X13=X12 + L3*cos(teta1(i)+teta2(i)+teta3(i));
Y13=Y12 + L3*sin(teta1(i)+teta2(i)+teta3(i));
plot([-0.5 0.5 0.5 -0.5 -0.5],[0.5 0.5 0.8 0.8 0.5], 'r');
PXR=-0.5:0.01:0.5;
PYR=0.15*sin(8*PXR)+0.65;
holdon
plot(PXR,PYR,'g'),grid;
end
Voirprogramme :
clearall; close all; clc;
L1=0.75; L2=0.50; L3=0.25; m1=7.5; m2=5; m3=2.5; w1=8; w2=12; w3=15;
a11=(m1+m2+m3)*L1^2+(m2+m3)*L2^2+m3*L3^2+2*(m2+m3)*L1*L2+2*m3*L1*L3+2*m3*L2*L3;
a22=(m2+m3)*L2^2+m3*L3^2+2*m3*L2*L3;
a33=m3*L3^2;
% premiere articulation
6
ENSEM 2016/2017
Interprétation :
- si on donne lamême pulsation w aux articulations, on aura le mêmetemps de
réponse.
- La troisième articulation possède un temps de réponse plus rapide
- On remarque que la variation du paramètrean’a pas d’influence sur le système, car le
dynamique du système et la pulsation est fixer par l’opérateur.
7
ENSEM 2016/2017
Pour se faire on utilisera la commande ode45 qui se fait par l’exécution de deux programmes
Fonction principale :
clearall; close all;clc
t0=0;tf=2;
x0=[pi/2,pi/4,pi/8,0,0,0,0,0,0];
[t,x]=ode45('test2',t0,tf,x0)
figure(1)
plot(t,x(:,1));grid; xlabel('temps'); ylabel('gain')
figure(2)
plot(t,x(:,2));grid; xlabel('temps'); ylabel('gain')
figure(3)
plot(t,x(:,3));grid; xlabel('temps'); ylabel('gain')
figure(4)
plot(t,x(:,4));grid; xlabel('temps'); ylabel('gain')
figure(5)
plot(t,x(:,5));grid; xlabel('temps'); ylabel('gain')
figure(6)
plot(t,x(:,6));grid; xlabel('temps'); ylabel('gain')
Fonction secondaire
FunctionXd=test2(t,x);
x1=x(1); x10=pi/2; x1c=pi/3; x8=x(8);
x2=x(2); x20=pi/4; x2c=pi/4; x9=x(9);
x3=x(3); x30=pi/8; x3c=pi/2;
x4=x(4); x40=0; x4c=0; L1=0.75; L2=0.50; L3=0.25 ;m1=7.5; m2=5; m3=2.5;
x5=x(5); x50=0; x5c=0;
x6=x(6); x60=0; x6c=0; w1=8; w2=12; w3=15; g=10;
x7=x(7);
% expression de f et g
% notons que q=[x1 x2 x3 x4 x5 x6]
f=[x4;x5;x6;inv(gamma)*gamma1];
g=[zeros(3); inv(gamma)];
8
ENSEM 2016/2017
Xd=[f+g*u;Ki1*(x1c-x1);Ki2*(x2c-x2);Ki3*(x3c-x3)];
Résultat et interpretation
CONCLUSION
Ce TP a pour but la visualisation de toutes les configurations du robot sur l’écran graphique
de la poursuite de trajectoire de l’organe terminal d’un robot par la loi de la commande
élaborée dans l‘espaceopérationnel.
En effet on observe le domaine total de travail du robot prédéfini, le robot suivra la
trajectoire de référence 𝑃𝑦 = 𝑎 ∗ sin 𝑤 ∗ 𝑃𝑥 + 𝑏