Vous êtes sur la page 1sur 22

TRAVAIL PERSONEL I

Modelisation d’un bras manipulateur à 2 DDL


Oularbi Houssem Eddine

8 décembre 2017

1 Introduction :
Les robots manipulateurs sont actuellement d’une large utilisation dans les applications industrielles et spatiales
. Ils sont d’une importance majeure .Surtout dans les travaux dangereux , fastidieux et monotones.
On peut trouver deux formes de bras manipulateurs en fonction de la manière dont les liaisons sont connectées :
une forme en série et une autre parallèle .
La plupart des robots utilisés actuellement sont des robots ayant des liaisons connectées en série, ce qu’on va
etudier dans ce travail.

2 Structure mécanique des robots :


On peut la deviser en 2 parties :
Organe terminal :
les táches qui sont dévolues aux robots sont trés variées. Pour chaque opération ou travail spécifique, l’organe
terminal prend un aspect particulier.
Elément porteur :
il est composé d’un ensemble de corps souples ou rigides liés par des articulations, servant á déplacer l’organe
terminal d’une configuration á une autre.
Il ya aussi d’autres notions à définir concenant les robots :
Degré de liberté : nombre de paramètres utilisés pour spécifier la configuration d’un élément de la chaine
cinématique par rapport à un autre.
Degré de mobilité : toute articulation est caractérisée par son degré de mobilité m, c’est-à-dire le nombre de
degrés de liberté entre deux corps successifs de la chaine cinématique (0 =< m =<6)
Espace articulaire : représente l’état des corps composant le robot en fonction des variables articulaires, sa
dimension n est égale au nombre de degrés de liberté du robot.
Espace opératioonel : décrit la position et l’orientation de l’organe terminal du robot par rapport á un repère
de référence, sa dimension m =< 6.

3 Objectif :
Oa a un robot manipulateur à 2 ddl :
*Ecrire son model d’état.
*Linearisation se ce model .
*Etudier ses propriétés (commandabilité,observabilté et stabilité)
*Calculer de la MFT.
*La simulation.

1
4 PARTIE ANALYTIQUE :
4.1 Modelisation :
Pour développer une stratégie de commande performante pour un robot, il est impératif de connaitre la cinématique
et la dynamique du manipulateur considéré. Pour cela on est souvent amené à décrire les différentes relations
mathématiques qui permettent de définir les mouvements de ce dernier dans l’espace.
Dans la pratique courante de robotique, la description du mouvement d’un robot manipulateur dans l’espace est
réalisée en fonction du modèle géométrique, cinématique et dynamique.
Le modèle dynamique c’est le modéle le plus utilisé en simulation car il se prête bien á l’intégration numérique.Il
exprime les accélérations articulaires en fonctions des positions de vitesses et de couple des articulations.
On va représenter le robot manipulateurpar par un modéle dynamique en utilisant le formalisme de Lagrange qui
est l’un des plus utilisés pour le calcul de ce modèle.

4.1.1 Calcul des coordonnées :


x0 = G1 cos(q1 )
y0 = G1 sin(q1 )
x1 = l1 cos(q1 ) + G2 cos(q1 + q2 )
y1 = l1 sin(q1 ) + G2 sin(q1 + q2 )
tel que :
Gi :centre de gravité de ”link i”

2
4.1.2 Calcul de l’energie cinétique :

1 1
Ec = E( c1 ) + E( c2 ) = m1 (V1 )2 + m2 (V2 )2
2 2
1
E( c1 ) = 0.5m1 V12 = 0.5m1 [x˙0 2 + y˙0 2 ] = m1 (G1 q˙1 )2
2
1
E( c2 ) = 0.5m2 V22 = 0.5m2 [x˙1 2 + y˙1 2 ] = m2 [l12 q˙1 2 + G22 (q˙1 + q˙2 )2 + 2l1 G2 q˙1 (q˙1 + q˙2 )cos(q2 )]
2
Donc :
1 1 1
Ec = [G21 m1 + l12 m2 ]q˙1 2 + m2 (G2 q˙1 )2 + m2 (G2 q˙2 )2 + m2 q˙1 q˙2 G22 + m2 l1 G2 cos(q2 )[q˙1 2 + q˙1 q˙2 ]
2 2 2

4.1.3 Calcul de l’energie potentiel :

Ep = −gcos(q1 )[l1 m2 + G1 m1 ] − m2 gG2 cos(q1 + q2 )

4.1.4 Le lagrangien :

1 1 1
L = Ec − Ep = [G21 m1 + l12 m2 ]q˙1 2 + m2 (G2 q˙1 )2 + m2 (G2 q˙2 )2 + m2 q˙1 q˙2 G22 + m2 l1 G2 cos(q2 )[q˙1 2 + q˙1 q˙2 ]
2 2 2
+gcos(q1 )[l1 m2 + G1 m1 ] + m2 gG2 cos(q1 + q2 )

4.1.5 Equation de lagrange :

d dL dL
( )− = fi
dt dq˙i dqi
Après le calcul on trouve les 2 equations suivantes :
EQT 01 :
[m1 G21 + l12 m2 + m2 G22 + 2m2 l1 G2 cos(q2 )]q¨1 + [m2 G22 + m2 l1 G2 cos(q2 )]q¨2
−m2 l1 G2 sin(q2 )[2q˙1 q˙2 + q˙2 2 ] + gm1 G1 sin(q1 ) + gm2 [G2 sin(q1 + q2 ) + l1 sin(q1 )] = τ1
EQT 02 :

[m2 G22 + m2 l1 G2 cos(q2 )]q¨1 + m2 G22 q¨2 + m2 l1 G2 sin(q2 )q˙1 2 + m2 gG2 sin(q1 + q2 ) = τ2

On peut reformuler les 2 equations pour obtenir :

B(q)q̈ + C(q̇, q)q̇ + G(q) = T


tel que :   
[m1 G21 + l12 m2 + m2 G22 + 2m2 l1 G2 cos(q2 )] [m2 G22 + m2 l1 G2 cos(q2 )] b1 b2
B(q) = =
[m2 G22 + m2 l1 G2 cos(q2 )] m2 G22 b2 b3
   0 0
[−m2 l1 G2 sin(q2 )q˙2 ] [−m2 l1 G2 sin(q2 )(q˙1 + q˙2 )] c c
C(q̇, q) = = 10 2
[m2 l1 G2 sin(q2 )q˙1 ] 0 c3 0

3
   
gm1 G1 sin(q1 ) + gm2 [G2 sin(q1 + q2 ) + l1 sin(q1 )] g
G(q) = = 1
m2 gG2 sin(q1 + q2 ) g2
B :Matrice d’inertie
C :Matrice des forces centrifuges,centripète et coriolis
G :Vecteur des efforts gravitationnels

4.1.6 Le model d’état :


eme
La modelisation dynamique représente   le  système
 avec 2 equations de 2 ordre donc dim(X) = 4
q1 x1
 q 2   x2 
On pose le vecteur d’état : X =  q˙1  = x3 
  
q˙2 x4
   
q˙1 x3
q˙2  x4 
Ẋ = 
q¨1  =  q¨1 
  
q¨2 q¨2
 
x3
 x4 
=  b3 (u1 −c1 −g1 )+b22(c2 +g2 −u2 ) 
 
 b1 b3 −b2 
b2 (u1 −c1 −g1 )+b1 (c2 +g2 −u2 )
b22 −b1 b3
tel que :
b1 = m1 G21 + l12 m2 + m2 G22 + 2m2 l1 G2 cos(x2 )]
b2 = [m2 G22 + m2 l1 G2 cos(x2 )]
b3 = m2 G22
c1 = c01 q˙1 + c02 q˙2 = −m2 l1 G2 sin(x2 )(2x3 x4 + x24 )
c2 = c03 q˙1 = m2 l1 G2 sin(x2 )x23
g1 = gm1 G1 sin(x1 ) + gm2 [G2 sin(x1 + x2 ) + l1 sin(x1 )]
g2 = m2 gG2 sin(x1 + x2 )
u1 = τ1
u2 = τ2

4.1.7 Le point d’équilibre :


   
q˙1 0
q˙2  0
Le systeme est en equilibre==>X=constante==> (Ẋ = 0)==>  q¨1  = 0 ce qui donne :
  
q¨2 0
G(q)
 = U   
gm1 G1 sin(x1 ) + gm2 [G2 sin(x1 + x2 ) + l1 sin(x1 )] u1
=
m2 gG2 sin(x1 + x2 ) u2
On va trouver :
sin(x1 + x2 ) = m2ugG 2
2
....(1)
En remplacant (1) dans la première ligne, on peut tirer [x1 ] :
u1 −u2
x1 = arcsin[ gG1 (m 1 +2m2 )
]
et :
x2 = arcsin[ m2ugG
2
2
] − x1

4
Doncles points d’équilibre
h sont : i 
u1 −u2
arcsin gG1 (m1 +2m2 )
 h i h i
u2 u1 −u2
arcsin − arcsin
 
X̄ = 
 m2 gG2 gG1 (m1 +2m2 ) 

 0 
0
Afin de confirmer notre resultat,on remplace les couple par 0. On trouve :
x1 = {0, π, −π}
x2 = {0, π, −π}
Ce qui est logique car si x1 = 0 et x2 = 0==> on obtient un point d’equilibre stable

4.2 Modèle linéaire :


On va lineariser le modèle d’état correspondant au robot manipulateur autour de l’origine ΣL (P0 = 0)
ΣL (P0 = 0) ={

∆Ẋ = A∆X + B∆u


∆y = C∆X
On calcule les matrice A,B et C :

0 0 1 0
 
 0 0 0 1
A=
 − Gg1 2m2 g
0 0

m1 G1
g(G1 +G2 ) g(4m2 G1 +2m2 G2 +m1 G1 )
G1 G2
− m1 G1 G2
0 0
Afin de simplifier le calcul lors de la linearisation, on va supposer les valeurs des paramètres comme sui-
vant :

m1 = m2 = 1
l1 = l2 = 2
G1 = G2 = 1
g = 9.8

 
0 0 1 0
 0 0 0 1
A=
−9.8 19.6

0 0
19.6 −68.6 0 0
0 0
   
0 0
 0 0  0 0
B= b3
 b1 b3 −b2 (P0 ) b2 =
− b1 b3 −b2 (P0 )  1 −3

2 2
− b1 bb32−b2 (P0 ) b1
b b −b2
1 3
(P0 ) −3 10
2 2

tel que :

5
b3 1
b1 b3 −b22
(P0 ) = m1 G21
b2 G2 +2G1
b1 b3 −b22
(P0 ) = m1 G2 G21
b1 m1 +4m2 G2 +4G1
b1 b3 −b22
(P0 ) = m1 m2 G22
+ m1 G2 G21
 
1 0 0 0
C=
0 1 0 0
Donc le modèle linéaire est le suivant :

   
0 0 1 0 0 0
 0 0 0 1
 ∆X +  0 0

∆Ẋ = 
−9.8 19.6 0 0  1 −3 ∆u

19.6 −68.6 0 0 −3 10
 
1 0 0 0
∆y = ∆X
0 1 0 0

4.3 Commandabilité et Observabilité :


4.3.1 Commandabilité :
On a dim(X) = 4 donc :
 
0 0 1 −3 ∗ ∗ ∗ ∗
  0 0 −3 10 ∗ ∗ ∗ ∗
com = B AB A2 B A3 B = 
 1 −3 0

0 ∗ ∗ ∗ ∗
−3 10 0 0 ∗ ∗ ∗ ∗

0
0 1 −3
0 0 −3 10

1 −3 0 = 1 6= 0
0
−3 10 0 0

Donc :|com| = 6 0
==> :rang(com) = 4 = dim(X)
ΣL (P0 = 0) est complètement commandable.
D’aprés le 1er théoreme dde Lyaponov,ΣN L (Robot manipulateur) est localement ”faiblement” comman-
dable

4.3.2 Observabilité :
1 0 0 0
 

   0 1 0 0
C 0 0 1 0
 
 CA  
 0 0 0 1

obs = 
CA2  = 
∗ ∗ ∗ ∗

3 ∗
CA  ∗ ∗ ∗
∗ ∗ ∗ ∗
∗ ∗ ∗ ∗

6

1 0 0 0

0 1 0 0
0 0 1 0 = 1 6= 0


0 0 0 1
Donc rang(obs) = 4 = dim(X)
ΣL est complètement observable
D’aprés le 1er théoreme dde Lyaponov,ΣN L (Robot manipulateur) est localement observable
Conclusion :
D’aprés l’etude faite dans la partie précédante, on a trouvé que ΣL est complétement commandable et
complétement observable,donc il n’ya pas des modes cachés.
==> det(SI − A) = PG (S) =Polunôme caractéristique de G(s)

4.4 La stabilité :
On a le polynôme caractéristique de G(S) :

S
0 −1 0

0 S 0 −1 4 2
PG (S) = det(SI − A) =
= S + 78.4S + 288.12
9.8 −19.6 S 0
−19.6 68.6 0 S
√ √ √ √ √√ √√
7 4− 13 7 4− 13 7 13+4 7 13+4
Les valeurs propres :VP(λ)={− √
5
i, √
5
i, − √
5
i, √5 i}

VP sont des complexes à partie réelle nulle donc c’est une stabilité de type :L.S
On ne peut rien dire sur la stabilité de systeme non linéaire.

4.5 Matrice de transfert :


G(s) = C(SI − A)−1 B

 −1  
  S 0 −1 0 0 0  
1 0 0 0  0 S 0 −1 0 0 α1 α2
G(S) =     =
0 1 0 0  9.8 −19.6 S 0   1 −3 α2 α3
−19.6 68.6 0 S −3 10
tel que :

s2 + 9.8
α1 =
s4 − 1.198 ∗ 10−15 s3 + 78.4s2 + 4.478 ∗ 10−14 s + 288.1
−3s2 − 9.8
α2 =
s4 − 1.198 ∗ 10−15 s3 + 78.4s2 + 4.478 ∗ 10−14 s + 288.1
10s2 + 39.2
α3 =
s4 − 1.198 ∗ 10−15 s3 + 78.4s2 + 4.478 ∗ 10−14s + 288.1

4.6 Commande stabilisante :


Le systm̀ee linearisé est complètement commandable,donc il existe un K pour placer les valeurs propres
de ABF = A − BK arbitrairement

7
Puisque
 c’est
 une systeme multi entrée,on pose K = k1 k2 tel que :
k11
k1 =
k12

k2 = k21 k22 k23 k24

Calcul de k1 :  
0
 0 
On pose :B1 = Bk1 = 
 k11 − 3k12 

−3k11 + 10k12
On calcule :
 
0 k11 − 3k12 0 −68.6k11 + 225.4k12
 0 −3k11 + 10k12 0 225.4k11 − 744.8k12 
com(A, B1 ) = 
 k11 − 3k12

0 −68.6k11 + 225.4k12 0 
−3k11 + 10k12 0 225.4k11 − 744.8k12 0
Il faut choisir k11 etk12 de telle manière le determinant de com est different de 0.
On pose donc :k11 = k12 = 1,ca donne :
 
0 −2 0 156.8
0 7 0 −519.4
com =  −2 0

156.8 0 
7 0 −519.4 0
3
 :|com| = −3.4 ∗ 10 6= 0==>Le paire(A, B1 ) est completement commandable
et par la suite
1
Donc k1 =
1
Calcul de k2 :

Après le
calcul fait dans la partie
 précédente, le systeme devient mono entrée :
0 0 1 0
 0 0 0 1
A= −9.8 19.6 0 0

19.6 −68.6 0 0
 
0
0
B1 = −2

7
-A et B1 ne sont pas canonique donc il faut in changement de base :X̄ = P X
On sait :PG (S) = S 4 + 78.4S 2 + 288.12 = S 4 + a3 S 3 + a2 S 2 + a1 S + a0
P −1 

On calcule  = c1 c2 c3 c4
0
0
c4 = B1 =  −2

7

8
 
−2
7
c3 = AB1 = 
0

0
 
0
 0 
c2 = (A2 + a2 I)B1 = (A2 + 78.4I)B1 
 0 

29.4
 
0
29.4
c1 = (A3 + a2 A)B1 = (A3 + 78.4A)B1  0 

0
Ce qui donne :
   
0 0 −2 0 0.119 0.034 0 0
29.4 0 7 0
P −1 =   ==> P =  0 0 0.119 0.034


 0 0 0 −2  −0.5 0 0 0 
0 29.4 0 7 0 0 −0.5 0

On caclcule k2 pour avoir les VP= {−1, −2, −3, −4}


Donc : PBF (S) = S 4 + 10S 3 + 35S 2 + 50S + 24 = S 4 + α3 S 3 + α2 S 2 + α1 S + α0
k¯1i = αi−1 − ai−1
k¯11 = 24 − 288.12 = −264.12
k¯12 = 50
k¯13 = 35 − 78.4 = −43.4
k¯14 = 10
Et par la suite :  
0.119 0.034 0 0
 0 0 0.119 0.034
k2 = k¯2 P = −264.12 50 −43.4 10   −0.5

0 0 0 
0 0 −0.5 0

k2 = −9.7429 −8.9837 0.9524 1.7007
Au final :
 
−9.7429 −8.9837 0.9524 1.7007
K = k1 k2 =
−9.7429 −8.9837 0.9524 1.7007
On obtient le nouveau systeme aprés la stabilisation de la commande :
ΣL (P0 = 0) ={
∆Ẋ = ABF ∆X + B∆u
∆y = C∆X
tel que :
 
0 0 1 0
 0 0 0 1 
ABF = A − BK = 
−29.2857 1.6327

1.9048 3.4014 
87.8 −5.7143 −6.6667 −11.9048

9
 
0 0
0 0
B= 
1 −3
−3 10
 
1 0 0 0
C=
0 1 0 0

5 PARTIE DE SIMULATION :
Dans cette partie, on va simuler sur Matlab et Simulink ce qu’on a déja fait dans la partie analytique en
utilisant des programmes(Matlab) et des schémas en bloc(Simulink).
La chose en plus qu’on va ajouter dans cette partie c’est d’utiliser ou les précompensateurs ou l’action
intégrale afin que le signal de sortie puisse poursuivre la commande désiré.
On va traiter principalement 4 cas :
I. Le système linéarisé avec une commande stabilisante et un précompensateur.
II. Le système linéarisé avec la commande stabilisante et une action d’intégrale.
III. Le système non linéaire avec une commande stabilisante et un précompensateur.
IV. Le système non linéaire avec une commande stabilisante et une action d’intégrale.

5.1 Cas non stabilisé et non corrigé :


Avant d’entammer les 4 cas mentionnés en dessus, on va simuler le système linéaire sans stabilisation et
sans correction pour, par exemple : U 1 = U 2 = 1
On obtient ces signaux en sortie :{q1, q2}

10
Ce qui est logique et confirme les résultats de la partie analytique car on a trouvé que le syetème est
de stabilité de type :LS, ça veut dire le signal de sortie reste basculer entre 2 bornes sans diverger et sans
converger vers 0 :kxk < R ∀t > 0
Selon la première théorème de lyaponov, on peut rien dire sur la stabilité du système non linéaire en se
basant sur la stabilité du système linéarisé si il est LS, mais quand mème, les signaux sont de mème type en
sortie de NL en simuliant sur Simulink.
Les programmes correspondants :
Les fichiers du simulation en Simulink :
Sys lineaire nn stab.slx
Sys nn lineaire nn stab.slx

5.2 Cas après la commande stabilisante :


cette partie traite le système après l’application un retour d’état afin de le stabilser(le rendre moins
oscillant).Le gain appliqué est celle qu’on a caclculé dans la partie analytique :
 
−9.7429 −8.9837 0.9524 1.7007
K = k1 k2 =
−9.7429 −8.9837 0.9524 1.7007
On obtient en sortie du système linéaire pour U 1 = 0.3 et U 2 = 0.4 :
Fichier de simulation :Sys lineaire cmd stab.slx

11
Concernant le système non linéaire, on trouve pour V 1 = V 2 = 0.2 :
Fichier de simulation :Sys nn lineaire cmd stab.slx

Si on veut augmenter les valeurs des entrées, par exemple 0.3 ,les sorties divergent comme le voir dans la
figure suivante :

12
Les sorties sont de l’ordre de 1037 alors que on a injecté une valeur très petite en entrée, ce qui est très
logique vue qu’on travaille au voisinage de l’origine, donc en s’éloignant de 0, le gain de retour d’état sera
plus valide.

5.3 Le système linéarisé avec une commande stabilisante et un précompensateur :


close all ;
clear ;
t0 = 0; tf = 10; delta = 0.001;
g = 9.8;
A = [0 0 1 0; 0 0 0 1; −9.8 19.6 0 0; 19.6 − 68.6 0 0];
B = [0 0; 0 0; 1 − 3; −3 10];
C = [1 0 0 0; 0 1 0 0];
tx = [ ]; tt = [ ];
x = [0; 0; 0; 0]; v = [0.1; 0.2]; u = [0; 0];
k = place(A, B, [−1 − 2 − 3 − 4]) %calculer le k qui va stabilise la commande en fixant VP

x1 = x(1); x2 = x(2); x3 = x(3); x4 = x(4); u1 = u(1); u2 = u(2); %changement d’écriture

p = inv(C ∗ inv(−A + B ∗ k) ∗ B); %précompensateur

for t = t0 : delta : tf ;
tx = [tx x];
tt = [tt t];
u = −k ∗ x + p ∗ v;
F = A ∗ x + B ∗ u;
x = x + delta ∗ F ;

end

13
subplot(221);
plot(tt, tx(1, :));
title(0 q10 );
subplot(222);
plot(tt, tx(2, :));
title(0 q20 );
subplot(223);
plot(tt, tx(3, :));
title(0 w10 );
subplot(224);
plot(tt, tx(4, :));
title(0 w20 );
Code sur Matlab :Sys lineaire cmd stab precompensateur.m
Si on pose V 1 = 0.1 et V 2 = 0.2, on obtient :

Le précompensateur garante le poursuit des signaux de sortie des signaux d’entrée désirés au voisinage de
0 de tel sorte :
-q1 suit V1
-q2 suit V2
Mème les signaux w1 et w2 obtenus qui représentent les vitesses angulaire sont logique tel que, après un
certain temps, ils reviennent à 0 lorsque le bras se situe dans la postion désirée.
Resulat :
La simulation et le code(Matlab) faites en se basant sur la partie analytique en ajoutant un précompensateur
sont correctes et donnent des resultats cohérants avec le cahier de charge(La stabilisation et le poursuit).

5.4 Le système linéarisé avec une commande stabilisante et une action intégrale :
close all;
clear;

14
t0 = 0; tf = 10; delta = 0.001;
g = 9.8;
A = [0 0 1 0; 0 0 0 1; −9.8 19.6 0 0; 19.6 − 68.6 0 0];
B = [0 0; 0 0; 1 − 3; −3 10];
C = [1 0 0 0; 0 1 0 0];
tx = [ ]; tt = [ ];

Ae = [A zeros(4, 2); −C zeros(2, 2)];


Be = [B; zeros(2, 2)];
Ce = [C zeros(2, 2)];
I = [zeros(4, 2); eye(2, 2)];
x = [0; 0; 0; 0]; v = [0.1; 0.2]; u = [0; 0]; e = [0; 0];
xe = [x; e];
k = place(Ae, Be, [−1 − 2 − 3 − 4 − 5 − 6]); %calculer le k qui va stabilise la commande en fixant VP
x1 = x(1); x2 = x(2); x3 = x(3); x4 = x(4); x5 = xe(5); x6 = xe(6); u1 = u(1); u2 = u(2); %changement
d’écriture

f or t = t0 : delta : tf ;
tx = [tx xe];
tt = [tt t];
u = −k ∗ xe + v;
F = Ae ∗ xe + Be ∗ u + I ∗ v;
xe = xe + delta ∗ F ;
end
subplot(221);
plot(tt, tx(1, :));
title(0 q10 );
subplot(222);
plot(tt, tx(2, :));
title(0 q20 );
subplot(223);
plot(tt, tx(3, :));
title(0 w10 );
subplot(224);
plot(tt, tx(4, :));
title(0 w20 );

Code de Matlab :Sys lineaire cmd stab act integrale.m


On pose V 1 = 0.1 et V 2 = 0.2, on trouve :

15
Resultat :
Comme celles de compensateur, on obtient des resultats corrects et logiques en mème temps,donc en
ajoutant une action intégrale, les signaux de sorties(q1,q2) poursuivent les signaux de référence(les entrées :V1
et V2)
Remarque :
On remarque,concernant les 2 cas linéaires soit avec un compensateur soit une action intégrale, que quelque
soit la valeur donné comme entrée(V1,V2),le système reste toujours stable et poursuit les signaux de référence.

5.5 Le système non linéaire avec une commande stabilisante et un précompensateur :


close all;
clear;
t0 = 0; tf = 10; delta = 0.001;
g = 9.8;
A = [0 0 1 0; 0 0 0 1; −9.8 19.6 0 0; 19.6 − 68.6 0 0];
B = [0 0; 0 0; 1 − 3; −3 10];
C = [1 0 0 0; 0 1 0 0];

tx = [ ]; tt = [ ];
x = [0; 0; 0; 0]; v = [0.1; 0.1]; u = [0; 0];
k = place(A, B, [−1 − 2 − 3 − 4]); % calculer le k qui va stabilise la commande en fixant VP
p = inv(C ∗ inv(−A + B ∗ k) ∗ B);
f or t = t0 : delta : tf
u = −k ∗ x + p ∗ v;
x1 = x(1); x2 = x(2); x3 = x(3); x4 = x(4); u1 = u(1); u2 = u(2); tx = [tx x];
tt = [tt t];
% calcul des paramètres du système non linéaire
b1 = 6 + 4 ∗ cos(x2);

16
b2 = 1 + 2 ∗ cos(x2);
b3 = 1;
c1 = −2 ∗ sin(x2) ∗ (2 ∗ x3 ∗ x4 + (x4)2 );
c2 = 2 ∗ sin(x2) ∗ (x3)3 ;
g1 = 3 ∗ g ∗ sin(x1) + g ∗ sin(x1 + x2);
g2 = g ∗ sin(x1 + x2);
a = u1 − c1 − g1;
b = c2 + g2 − u2;
D = b1 ∗ b3 − (b2)2 ;
% fin d calcul

F = [x3; x4; (b3 ∗ a + b2 ∗ b)/D; −(b2 ∗ a + b1 ∗ b)/D];


x = x + delta ∗ F ;
end
f igure;
subplot(221);
p = plot(tt, tx(1, :));
title(0 q10 );
subplot(222);
plot(tt, tx(2, :));
title(0 q20 );
subplot(223);
plot(tt, tx(3, :));
title(0 w10 );
subplot(224);
plot(tt, tx(4, :));
title(0 w20 );

Code sur Matlab :Sys nn lineaire cmd stab precompensateur.m


Fichier en Simulink :Sys nn lineaire cmd stab precompensateur.slx
On pose comme entrées :V 1 = V 2 = 0.05.On obtient :

17
Remarques : De ces graphes,on peut déduire le précompensateur appliqué sur le système non linéaire
permet le poursuit des signaux de référence donnés,mais en augmentant les valeurs en entrée,on remarque
l’augmentation de l’erreur, ce qui est plus visible sur simulink (V1=V2=0.1) :

Pour V1=V2=0.5 :Le système diverge

18
Resultat :
Le système non linéaire ne peut poursuivre les signaux de référence que au voisinage de 0,donc pour
des valeurs entre 0 et 0.1,le système garde son état stable avec un bon poursuit de la commande sinon il
diverge.Ces resultats sont corrects et logique car l’analyse faite dans la première partie était autour d’un
point de fonctionnement 0,par conséquent en s’éloignant de l’origine on risque d’avoir de resultats érroné et
c’est possible d’endommager le système.
Simulation graphique :
On peut visualiser le bras manipulateur avec l’option ”VR Sink”(fichier de simulation de simulink) comme
le montre la figure suivant :

19
5.6 Le système non linéaire avec une commande stabilisante et une action intégrale :
close all;
clear;
t0 = 0; tf = 10; delta = 0.001;
g = 9.8;
A = [0 0 1 0; 0 0 0 1; −9.8 19.6 0 0; 19.6 − 68.6 0 0];
B = [0 0; 0 0; 1 − 3; −3 10];
C = [1 0 0 0; 0 1 0 0];
tx = [ ]; tt = [ ];
Ae = [Azeros(4, 2); −Czeros(2, 2)];
Be = [B; zeros(2, 2)];
Ce = [C zeros(2, 2)];
I = [zeros(4, 2); eye(2, 2)];
x = [0; 0; 0; 0]; v = [0.3; 0.5]; u = [0; 0]; e = [0; 0]; z = [0; 0];
xe = [x; z];
k = place(Ae, Be, [−1 − 2 − 3 − 4 − 5 − 6]); %calculer le k qui va stabilise la commande en fixant VP
f or t = t0 : delta : tf
u = −k ∗ xe;
x1 = xe(1); x2 = xe(2); x3 = xe(3); x4 = xe(4); x5 = xe(5); x6 = xe(6); u1 = u(1); u2 = u(2); %changement
d’écriture
tx = [tx xe];
tt = [tt t];
e = v − xe(1 : 2, 1); %calculer l’erreur
z = z + delta ∗ e; %calculer l’intégrale de l’erreur

%calcul des paramètres du système non linéaire


b1 = 6 + 4 ∗ cos(x2);

20
b2 = 1 + 2 ∗ cos(x2);
b3 = 1;
c1 = −2 ∗ sin(x2) ∗ (2 ∗ x3 ∗ x4 + (x4)2 );
c2 = 2 ∗ sin(x2) ∗ (x3)3 ;
g1 = 3 ∗ g ∗ sin(x1) + g ∗ sin(x1 + x2);
g2 = g ∗ sin(x1 + x2);
a = u1 − c1 − g1;
b = c2 + g2 − u2;
D = b1 ∗ b3 − (b2)2 ;
%fin d calcul

F = [x3; x4; (b3 ∗ a + b2 ∗ b)/D; −(b2 ∗ a + b1 ∗ b)/D; e];


xe = xe + delta ∗ F ;
end
subplot(221);
plot(tt, tx(1, :));
title(0 q10 );
subplot(222);
plot(tt, tx(2, :));
title(0 q20 );
subplot(223);
plot(tt, tx(3, :));
title(0 w10 );
subplot(224);
plot(tt, tx(4, :));
title(0 w20 );

Code sur Matlab :Sys nn lineaire cmd stab act integrale.m


Simulation en Simulink :Sys nn lineaire cmd stab act integrale.slx
Pour V1=0.3 et V2=0.2, on obtient :

On remarque que en appliquant l’action intégrale, on arrive à poursuivre les signaux de référence tel que

21
q1 poursuit V1 et q2 poursuit V2.
Comme le cas de précompensateur,on voit que en s’éloignant de 0, les sorties commencent à distabiliser
comme on voit sur la figure suivante :pour V1=V2=0.5

On voit que malgré les signaux de sorties prennent de temps avant la stabilisation(après 40s), ils convergent
vers la valeur désiré.mais si on pose de valeurs supérieures de 0.5 le système diverge.
La chose qu’on peut remarquer c’est que avec l’action intégrale,on peut aller jusqu’à 0.5(intervalle de 1
autour de 0) et le sysème reste capable à poursuivre,alors que le précompensateur garante un intervalle 0.1
centré de 0 seulemnt.
resultat :
L’action intégrale donne des resultats plus intéressants que celles du précompensateur et ça est gràce au
fait que l’intégrateur agit directement sur la sortie qu’on veut commander,puis éliminer l’erreur mais toujours
dans un intervalle défini au voisinage de l’origine.
La simulation graphique :
On peut utiliser ”VR sink” pour avoir visualiser la bras manipulateur (fichier de simulation de simulink)

22