Vous êtes sur la page 1sur 12

Abdellaoui Soumia

CI3-ESI2A

BRAS ROBOTIQUE
Modélisation du système sous MATLAB
I. Objectif :
L'objectif de ce rapport est de modéliser la dynamique d'un bras robotique industriel à l'aide d'une
identification à boîte grise non-linéaire. Le modèle utilisé est basé sur un modèle flexible à trois
masses décrit dans la figure 1 du document fourni. Il s'agit d'un modèle idéalisé dans le sens où les
mouvements sont supposés se faire autour d'un axe et ne sont pas affectés par la gravité.

II. Modélisation du bras robotique

Le bras robotique est commandé par un couple appliqué 𝒖(𝒕) = 𝑟(𝒕) généré par le moteur
𝒅𝒒𝒎(𝒕)
électrique. La vitesse angulaire résultante du moteur 𝒚(𝒕) = J est la sortie mesurée. Les
𝒅𝒕

positions angulaires des masses après la boîte de vitesses et à l'extrémité de la structure du

bras 𝒒𝒈(𝒕)𝐞𝐭 𝒒𝒂(𝒕), ne sont pas mesurables.


Le modèle inclut une flexibilité dans la boîte de vitesses modélisée par un ressort non linéaire
τs(t) entre le moteur et la deuxième masse, et un ressort "linéaire" entre les deux dernières
masses. La friction du système agit principalement sur la première masse et est modélisée par
un couple de friction non linéaire τf(t).
En introduisant les états :
et en appliquant les équilibres de couples pour les trois masses, on obtient la structure du
modèle d'espace d'état non linéaire suivante :

Où Jm, Jg et Ja sont les moments d'inertie du moteur, de la boîte de vitesses et de la structure


du bras, respectivement. Les paramètres dg et da sont des paramètres d'amortissement, et ka
est la rigidité de la structure du bras.

III. Données d’entrée sortie :

Quatre ensembles de données ont été collectés à partir du bras robotique expérimental, avec
l'un utilisé pour l'estimation du modèle et les autres pour la validation. Les signaux d'entrée
comprennent des signaux multisinusoïdaux avec différentes caractéristiques de fréquence. Les
données sont prétraitées et combinées dans un objet IDDATA pour être utilisées dans le

processus d'identification.

IV. Manipulation 1 :
 Le code :
FileName = 'robotarm_c'; % File describing the model structure.
Order = [1 1 5]; % Model orders [ny nu nx].
Parameters = [ 0.00986346744839 0.74302635727901 ...
3.98628540790595 3.24015074090438 ...
0.79943497008153 0.03291699877416 ...
0.17910964111956 0.61206166914114 ...
20.59269827430799 0.00000000000000 ...
0.06241814047290 20.23072060978318 ...
0.00987527995798]'; % Initial parameter vector.
InitialStates = zeros(5, 1); % Initial states.
Ts = 0; % Time-continuous system.
nlgr = idnlgrey(FileName, Order, Parameters, InitialStates, Ts, ...
'Name', 'Robot arm', ...
'InputName', 'Applied motor torque', ...
'InputUnit', 'Nm', ...
'OutputName', 'Angular velocity of motor', ...
'OutputUnit', 'rad/s', ...
'TimeUnit', 's');
nlgr = setinit(nlgr, 'Name', {'Angular position difference between the motor and the gear-box' ...
'Angular position difference between the gear-box and the arm' ...
'Angular velocity of motor' ...
'Angular velocity of gear-box' ...
'Angular velocity of robot arm'}');
nlgr = setinit(nlgr, 'Unit', {'rad' 'rad' 'rad/s' 'rad/s' 'rad/s'});
nlgr = setpar(nlgr, 'Name', {'Fv : Viscous friction coefficient' ... % 1.
'Fc : Coulomb friction coefficient' ... % 2.
'Fcs : Striebeck friction coefficient' ... % 3.
'alpha: Striebeck smoothness coefficient' ... % 4.
'beta : Friction smoothness coefficient' ... % 5.
'J : Total moment of inertia' ... % 6.
'a_m : Motor moment of inertia scale factor' ... % 7.
'a_g : Gear-box moment of inertia scale factor' ... % 8.
'k_g1 : Gear-box stiffness parameter 1' ... % 9.
'k_g3 : Gear-box stiffness parameter 3' ... % 10.
'd_g : Gear-box damping parameter' ... % 11.
'k_a : Arm structure stiffness parameter' ... % 12.
'd_a : Arm structure damping parameter' ... % 13.
});
nlgr = setpar(nlgr, 'Minimum', num2cell(zeros(size(nlgr, 'np'), 1))); % All parameters >= 0!
for parno = 1:6 % Fix the first six parameters.
nlgr.Parameters(parno).Fixed = true;
end
present(nlgr);
load('robotarmdata');
z = iddata({ye yv1 yv2 yv3}, {ue uv1 uv2 uv3}, 0.5e-3, 'Name', 'Robot arm');
z.InputName = 'Applied motor torque';
z.InputUnit = 'Nm';
z.OutputName = 'Angular velocity of motor';
z.OutputUnit = 'rad/s';
z.ExperimentName = {'Estimation' 'Validation 1' 'Validation 2' 'Validation 3'};
z.Tstart = 0;
z.TimeUnit = 's';
present(z);
figure('Name', [z.Name ': input-output data'],...
'DefaultAxesTitleFontSizeMultiplier',1,...
'DefaultAxesTitleFontWeight','normal',...
'Position',[100 100 900 600]);
for i = 1:z.Ne
zi = getexp(z, i);
subplot(z.Ne, 2, 2*i-1); % Input.
plot(zi.u);
title([z.ExperimentName{i} ': ' zi.InputName{1}],'FontWeight','normal');
if (i < z.Ne)
xlabel('');
else
xlabel([z.Domain ' (' zi.TimeUnit ')']);
end
subplot(z.Ne, 2, 2*i); % Output.
plot(zi.y);
title([z.ExperimentName{i} ': ' zi.OutputName{1}],'FontWeight','normal');
if (i < z.Ne)
xlabel('');
else
xlabel([z.Domain ' (' zi.TimeUnit ')']);
end
end

 Explication du code :

1. Modèle du Bras Robot (robotarm_c.c) :


- Les équations différentielles du modèle du bras robot sont mises en œuvre dans un fichier MEX
appelé `robotarm_c.c`.
- Le code contient des fonctions pour calculer les mises à jour d'état (`compute_dx`) et les sorties
(`compute_y`) du modèle.
2. Paramètres et Variables du Modèle :
- Le modèle prend en compte plusieurs paramètres physiques et coefficients, tels que les
coefficients de friction, les moments d'inertie, les paramètres de flexibilité, etc.
- Ces paramètres sont déclarés comme variables dans les fonctions du fichier MEX.
3. Introduction des États :
- Les états du système sont introduits sous forme d'un vecteur `x` qui représente les positions et
les vitesses angulaires des différentes masses du bras robotique.
4. Équations du Modèle :
- Les équations du modèle sont des équations différentielles non linéaires qui décrivent l'évolution
des états du système au fil du temps.
- Les équations décrivent la dynamique des trois masses flexibles du bras robotique en tenant
compte des ressorts, des frottements, et des couples appliqués.
5. Paramètres du Modèle et Initialisation :
- Les paramètres du modèle sont déclarés dans la fonction `compute_dx` à partir des valeurs
spécifiées dans le fichier MEX.
- Certaines des valeurs sont initialement fixées, tandis que d'autres (par exemple, les paramètres
de flexibilité) sont marquées pour estimation.
6. Création de l'Objet IDNLGREY :
- Les informations du modèle sont utilisées pour créer un objet IDNLGREY dans MATLAB. Cet objet
servira à l'identification des paramètres du modèle à partir des données expérimentales.
7. Données d'Entrée-Sortie :
- Les données expérimentales sont chargées à partir du fichier `robotarmdata.mat`.
- Ces données sont organisées dans un objet IDDATA qui contient les signaux d'entrée (torque
moteur appliqué) et de sortie (vitesse angulaire du moteur).
8. Visualisation des Données :
- Le code inclut des visualisations pour afficher les signaux d'entrée et de sortie des différentes
expériences.
 Les graphes :

 Interprétation et analyses :
Les figures fournies jouent un rôle essentiel pour comprendre le comportement du robot et
l'efficacité du modèle choisi. La figure 1 représente visuellement la structure mécanique du
robot, aidant à l'interprétation du modèle mathématique. Les figures suivantes présentent
les données d'entrée-sortie pour chaque expérience, révélant l'interaction entre les couples
moteurs appliqués et les vitesses angulaires résultantes du moteur. Ces tracés offrent des
informations précieuses sur la réponse du robot à différents signaux d'excitation et mettent
en évidence les défis liés à la modélisation de sa dynamique complexe
V. Manipulation 2 :
 Le code :

 Explication du code :

Utilisons la fonction COMPARE pour simuler les résultats du modèle dans les quatre
expériences et comparons ces résultats avec les mesures réelles correspondantes. Pour les
deux premiers états, nous savons que leurs valeurs sont fixes à 0, tandis que les trois
autres états ont des valeurs

Initiales définies par les mesures au démarrage et ne sont pas fixes. Cependant, COMPARE
estime par défaut toutes les valeurs initiales pour chaque expérience, ce qui signifierait 20
estimations d'états initiaux différentes (4 expériences * 5 états).

Même après avoir corrigé les deux premiers états, il resterait encore 12 estimations
d'états initiaux à faire (4 expériences * 3 états), en suivant la stratégie par défaut du
modèle interne. Étant donné que le jeu de données est assez volumineux, cela entraînerait
des calculs longs. Afin d'éviter cela, nous choisissons d'estimer les 4 * 3 composantes libres
des états initiaux en utilisant la fonction PREDICT. Cela est possible si les états initiaux sont
fournis en tant que structure d'état initial. Nous limitons cette estimation aux données du
premier dixième pour accélérer le processus.

Ensuite, nous demandons à COMPARE d'utiliser la matrice résultante d'états initiaux 5


x 4 X0init sans effectuer de nouvelles estimations d'états initiaux, en maintenant ainsi
la précision tout en réduisant la complexité computationnelle.
 Analyse et Interprétation des résultats :

Comme observé, les performances du modèle initial du bras robotique sont satisfaisantes,
voire bonnes. L'ajustement pour les trois ensembles de données se situe autour de 79 %
pour ye et yv1, 37 % pour yv2, et 95 % pour yv3. Il est important de noter que l'ajustement
plus élevé pour ye/yv1 par rapport à yv2 revêt une signification particulière en raison de la
capacité du modèle initial à reproduire avec précision l'onde carrée, tandis que la
composante multi sinusoïdale n'est pas aussi bien capturée. Pour une analyse plus
approfondie, examinons également les erreurs de prédiction pour les quatre expériences :
 Le code :

 Analyse et Interprétation des résultats :


VI. Manipulation 3 : Estimation des paramètres :
 Le code :

 Explication du code :

Nous explorons à présent la possibilité d'améliorer les performances du modèle initial du


bras robotique en procédant à l'estimation des 7 paramètres variables du modèle, ainsi que
des 3 états initiaux libres de la première expérience de z, qui constitue l'ensemble de
données d'estimation. Il est à noter que cette étape d'estimation pourrait demander un
certain laps de temps, généralement quelques minutes.
VII. Manipulation 4 : Performances du modèle estimé de bras de robot:
 Le code :

 Explication code :
À nouveau, nous employons la fonction COMPARE pour évaluer les performances du
modèle de bras robotique qui a été estimé. Il est important de souligner que, dans cette
étape, nous demandons expressément à COMPARE de ne pas procéder à une nouvelle
estimation de l'état initial. Pour la première expérience, nous substituons l'état initial
deviné par celui estimé à l'aide de NLGREYEST. Quant aux trois expériences suivantes, nous
faisons appel à la fonction PREDICT afin d'estimer l'état initial en se basant sur l'objet
IDDATA réduit, zred.
 Résultat :

 Le code:
 Analyse et Interprétation des résultats:

Le graphique de comparaison met en évidence une amélioration significative avec des


ajustements plus précis. Pour ye et yv1, l'adéquation atteint désormais environ 85 %
(comparé à 79 % précédemment), pour yv2 elle s'élève à environ 63 % (contre 37 %
auparavant), et pour yv3, elle reste légèrement inférieure à 95,5 % (pratiquement
inchangée par rapport à avant, également légèrement inférieure à 95,5 %). Cette
amélioration est particulièrement marquée pour le deuxième ensemble de données de
validation, caractérisé par un signal multisinusoïdal sans onde carrée. Il est à noter que la
capacité du modèle estimé à suivre la composante multisinusoïdale de ye et yv1 a
également connu une amélioration considérable, bien que cela ne soit pas pleinement
reflété dans les chiffres d'ajustement, qui sont davantage influencés par l'adaptation à
l'onde carrée. L'examen graphique des erreurs de prédiction montre également que les
résidus sont généralement de taille réduite par rapport au modèle initial du bras
robotique.

VIII. Conclusion :
En conclusion, les techniques d'identification de systèmes jouent un rôle prépondérant en
robotique. La création de modèles précis de robots est fondamentale pour les approches
modernes de la commande robotique, étant souvent considérée comme indispensable
pour répondre à la demande croissante en termes de vitesse et de précision. Ces modèles
revêtent également une importance cruciale dans diverses applications de diagnostic
robotique, où ils sont utilisés pour anticiper les problèmes liés à l'usure et pour détecter la
véritable cause des dysfonctionnements des robots

Vous aimerez peut-être aussi