Science & Mathematics">
[go: up one dir, main page]

0% ont trouvé ce document utile (0 vote)
26 vues9 pages

Rapport Du Travail Pratique: 03 JANVIER 2024

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1/ 9

03 JANVIER 2024

RAPPORT DU TRAVAIL PRATIQUE


MODELISATION DE FICHIERS C MEX D'UN SYSTEME MIMO A L'AIDE DE
PARAMETRES VECTORIELS/MATRICIELS

ABDELLAOUI
ESI2A
I. Objectif :
Le but du TP est d'apprendre à modéliser un système dynamique MIMO à l'aide de paramètres scalaires,
vectoriels et matriciels. Le système utilisé comme base de modélisation est un robot industriel à trois
degrés de liberté.

II. Modélisation du Robot Manu tec R3

Cette section du rapport traite de la modélisation d'un robot industriel à trois degrés de liberté en
utilisant des fichiers C MEX, en se concentrant sur la représentation de paramètres scalaires, vectoriels
et matriciels. Un robot idéalisé, le Manutec R3, est pris comme exemple, où les équations d'espace
d'état dérivées ne fournissent pas explicitement les membres gauches. La modélisation se limite aux
trois degrés de liberté liés au mouvement du centre de l'outil, simplifiant la structure en considérant des
maillons comme des corps rigides reliés par des articulations de rotation. Les frottements, les
phénomènes complexes dans les réducteurs, la dynamique des moteurs et des capteurs sont négligés.
La structure du modèle est complexe malgré ces simplifications, comme décrit dans le document de M.
Otter et S. Turk du Centre allemand de recherche aérospatiale (DLR) en 1988. Les paramètres du robot
simplifié Manutec R3 ont été estimés selon le livre de K. Schittkowski en 2002. La figure 1 présente une
image schématique du robot Manutec R3.
La Figure montre une représentation schématique du robot Manutec R3. La dynamique du robot
simplifié Manutec R3 est donnée par l'équation vectorielle
où le vecteur colonne q(t)=[q1(t),q2(t),q3(t)]′q(t) = [q_1(t), q_2(t), q_3(t)]'q(t)=[q1(t),q2(t),q3(t)]′ décrit
l'angle relatif entre le bras i-1 et le bras i pour i=1,2,3i = 1, 2, 3i =1,2,3, avec le bras 0 correspondant aux
coordonnées du fondement. Les commandes de couple u(t) = [u1(t)u2(t)u3(t) ]Tu(t) = [u _1(t) u _2(t) u
_3(t) ]^Tu(t) = [u1(t)u2(t)u3(t) ]T appliquées aux trois moteurs représentent la force exogène déplaçant
le robot. Ces signaux sont individuellement mis à l'échelle (via les coefficients de force
Fc(1),Fc(2)etFc(3)Fc(1), Fc(2) et Fc(3)Fc(1),Fc(2)etFc(3)) pour fournir la force motrice :

La matrice de masse M(q(t)) est une matrice 3x3 assez complexe, symétrique et définie positive avec des
éléments comme suit.

Le robot est également affecté par deux forces supplémentaires. La première, G(q(t), est causée par la
gravité et a des éléments
La matrice de masse M(q(t)est inversible (pour des angles physiquement intéressants), ce qui
signifie que la dynamique du robot peut être écrite

En introduisant les états

III. Manipulation 1 : créer un modèle IDNLGREY

1. Définition des Entrées, États et Sorties :


Le modèle utilise trois entrées correspondant aux tensions appliquées aux moteurs des
trois bras du robot. Les six états représentent les angles relatifs et les vitesses relatives
entre les bras, et les trois sorties sont les trois premiers états (angles relatifs).
2. Définition des Paramètres :
Les paramètres du modèle comprennent des constantes physiques telles que la constante
de gravité, le rapport de réduction des moteurs, les moments d'inertie, les masses, les
longueurs des bras, etc. Certains paramètres ont des valeurs minimales spécifiées.
3. Création de l'Objet IDNLGREY :
Un objet IDNLGREY est créé en spécifiant le nom du fichier de modèle, l'ordre du modèle,
les paramètres, les états initiaux, etc.
4. Chargement des Données d'Entrée-Sortie :
Les données d'entrée-sortie, issues de simulations avec bruit ajouté, sont chargées dans
un objet IDDATA. Ces données sont utilisées pour ajuster les paramètres du modèle.
5. Performance du Modèle Initial :
Avant d'effectuer l'estimation des paramètres, une simulation est réalisée avec les valeurs
initiales des paramètres. Les sorties simulées sont comparées aux sorties réelles pour
évaluer la qualité initiale du modèle.
6. Comparaison des Sorties Simulées et Réelles :
Les sorties simulées et réelles sont comparées à l'aide de la fonction compare,
permettant de visualiser la qualité du modèle initial.
7. Code :
InputName = {'Voltage applied to motor moving arm 1'; ...
'Voltage applied to motor moving arm 2'; ...
'Voltage applied to motor moving arm 3'};
InputUnit = {'V'; 'V'; 'V'};
StateName = {'\Theta_1'; ... % Relative angle between fundament and arm 1
'\Theta_2'; ... % Relative angle between arm 1 and arm 2
'\Theta_3'; ... % Relative angle between arm 2 and arm 3
'Vel_1'; ... % Relative velocity between fundament and arm 1
'Vel_2'; ... % Relative velocity between arm 1 and arm 2
'Vel_3'... % Relative velocity between arm 2 and arm 3
};
StateUnit = {'rad'; 'rad'; 'rad'; 'rad/s'; 'rad/s'; 'rad/s'};
OutputName = StateName(1:3);
OutputUnit = StateUnit(1:3);
ParName = {'Gravity constant'; ... % g, scalar.
'Voltage-force constant of motor'; ... % Fc, 3-by-1 vector, for motor 1, 2, 3.
'Gear ratio of motor'; ... % r, 3-by-1 vector, for motor 1, 2, 3.
'Moment of inertia of motor'; ... % Im, 3-by-1 vector, for motor 1, 2, 3.
'Mass of arm 2 and 3 (incl. tool)'; ... % m, 2-by-1 vector, for arm 2 and 3.
'Point mass of payload'; ... % pl, scalar.
'Length of arm 2 and 3 (incl. tool)'; ... % L, 2-by-1 vector, for arm 2 and 3.
'Center of mass coordinates of arm 2 and 3'; ... % com, 2-by-2 matrix, 1:st column for arm 2 (x-,z-coord), 2:nd for
arm 3.
'Moment of inertia arm 1, element (3,3)'; ... % Ia1, scalar.
'Moment of inertia arm 2 and 3' ... % Ia, 4-by-2 matrix. 1:st column for arm 2, 2:nd for arm 3;
... % column elements: 1: (1,1); 2: (2,2); 3: (3,3); 4: (1,3) and (3,1).
};
ParUnit = {'m/s^2'; 'N*m/V'; ''; 'kg*m^2'; 'kg'; 'kg'; 'm'; 'm'; 'kg*m^2'; 'kg*m^2'};
ParValue = {9.81; [-126; 252; 72]; [-105; 210; 60]; [1.3e-3; 1.3e-3; 1.3e-3]; ...
[56.5; 60.3]; 10; [0.5; 0.98]; [0.172 0.028; 0.205 0.202]; ...
1.16; [2.58 11.0; 2.73 8.0; 0.64 0.80; -0.46 0.50]};
ParMin = {eps(0); -Inf(3, 1); -Inf(3, 1); eps(0)*ones(3, 1); [40; 40]; ...
eps(0); eps(0)*ones(2, 1); eps(0)*ones(2); -Inf; -Inf(4, 2)};
ParMax = Inf; % No maximum constraint.
FileName = 'robot_c'; % File describing the model structure.
Order = [3 3 6]; % Model orders [ny nu nx].
Parameters = struct('Name', ParName, 'Unit', ParUnit, 'Value', ParValue, ...
'Minimum', ParMin, 'Maximum', ParMax, 'Fixed', false);
InitialStates = struct('Name', StateName, 'Unit', StateUnit, 'Value', 0, ...
'Minimum', -Inf, 'Maximum', Inf, 'Fixed', true);
Ts = 0; % Time-continuous system.
nlgr = idnlgrey(FileName, Order, Parameters, InitialStates, Ts, ...
'Name', 'Manutec r3 robot', 'InputName', InputName, ...
'InputUnit', InputUnit, 'OutputName', OutputName, ...
'OutputUnit', OutputUnit, 'TimeUnit', 's');
load('robotdata');

z = merge(iddata(y1, u1, 0.02), iddata(y2, u2, 0.02));


z.Name = 'Manutec r3 robot';
z.InputName = nlgr.InputName;
z.InputUnit = nlgr.InputUnit;
z.OutputName = nlgr.OutputName;
z.OutputUnit = nlgr.OutputUnit;
z.Tstart = 0;
z.TimeUnit = 's';
nlgr.SimulationOptions.RelTol = 1e-5;
compare(z, nlgr);

8. Analyses et interprétation :

La figure présente trois graphiques comparant les réponses simulées d'un modèle
robotique aux données de validation expérimentales. Chaque graphique représente une
sortie différente du système :

 Θ₁ : l'angle relatif entre le bras 1 et le bras 2

 Θ₂ : l'angle relatif entre le bras 2 et le bras 3

 Θ₃ : l'angle relatif entre le bras 3 et l'effecteur final

 Les courbes bleues représentent les données de validation expérimentales, tandis que
les courbes rouges représentent les sorties simulées par le modèle.
Interprétation des résultats spécifiques à chaque sortie:

Θ₁ (premier graphique):

 Le modèle simulé correspond très bien aux données de validation, avec un pourcentage
d'ajustement de 97,7%.
 Cela indique que le modèle est capable de prédire avec précision l'angle relatif entre le
bras 1 et le bras 2.

Θ₂ (deuxième graphique):

 L'ajustement entre le modèle simulé et les données de validation est un peu moins bon,
avec un pourcentage d'ajustement de 81%.
 Il y a quelques écarts visibles entre les deux courbes, ce qui suggère que le modèle
pourrait être amélioré pour mieux capturer le comportement de cette sortie.

Θ₃ (troisième graphique):

 L'ajustement est le moins bon pour cette sortie, avec un pourcentage d'ajustement de
seulement 28,54%.
 Il y a des écarts significatifs entre les courbes simulées et expérimentales, ce qui indique
que le modèle ne représente pas bien le comportement de l'angle relatif entre le bras 3
et l'effecteur final.

IV. Manipulation 2 : Estimation des paramètres du robot Manutec R3


Dans cette étape, on aborde l'estimation des paramètres du robot Manutec R3. Cette tâche est
complexe en raison de la limitation des données disponibles en termes d'excitation et de la nature
fortement non linéaire de la dynamique du robot. Pour simplifier la tâche, seuls les quatre derniers
paramètres, c'est-à-dire les moments d'inertie liés au bras 3 et à l'outil, sont estimés. Les neuf premiers
objets de paramètres sont fixés.
1. Code :
for k = 1:size(nlgr, 'Npo')-1 % Fix all parameters of the first 9
parameter objects.
nlgr.Parameters(k).Fixed = true;
end
nlgr.Parameters(end).Fixed(:, 1) = true; % Fix the moment of inertia
parameters for arm 2.
opt = nlgreyestOptions('SearchMethod', 'lm', 'Display', 'on');
nlgr = nlgreyest(z, nlgr, opt);
compare(z, nlgr);
2. Analyse et interprétation :

La figure présente trois graphiques comparant les réponses simulées du modèle robotique
estimé aux données de validation expérimentales.
Chaque graphique représente une sortie différente du système, vraisemblablement les
angles relatifs entre les bras du robot.
Les courbes bleues représentent les données de validation expérimentales, tandis que les
courbes rouges représentent les sorties simulées par le modèle estimé.
Graphique 1 (angle relatif entre le bras 1 et le bras 2):

Les courbes simulées et expérimentales sont presque superposées, avec un pourcentage


d'ajustement de 99,99 %.
Cela indique que le modèle estimé prédit avec une grande précision l'angle relatif entre le
bras 1 et le bras 2.
Graphique 2 (angle relatif entre le bras 2 et le bras 3):

Les courbes simulées suivent la tendance générale des données expérimentales, mais il y a
quelques écarts, surtout au début et à la fin de la simulation.
Le pourcentage d'ajustement est de 99,92 %.
Bien que le modèle ne capture pas parfaitement tous les détails du comportement réel, il
fournit une bonne approximation de l'angle relatif entre le bras 2 et le bras 3.
Graphique 3 (angle relatif entre le bras 3 et l'effecteur final):

Les courbes simulées ne correspondent pas bien aux données expérimentales.


Il y a des écarts importants entre les deux courbes, et le pourcentage d'ajustement est de
seulement 99,97 %.
Cela indique que le modèle estimé ne parvient pas à capturer efficacement le
comportement de l'angle relatif entre le bras 3 et l'effecteur final.

V. Manipulation 3 : Intégration d’autre commande

1. Code :
disp(' True Estimated parameter vector');
ptrue = [9.81; -126; 252; 72; -105; 210; 60; 1.3e-3; 1.3e-3; 1.3e-3; ...
56.5; 60.3; 10; 0.5; 0.98; 0.172; 0.205; 0.028; 0.202; 1.16; ...
2.58; 2.73; 0.64; -0.46; 5.41; 5.60; 0.39; 0.33];
fprintf(' %1.3f %1.3f\n', ptrue(25), nlgr.Parameters(end).Value(1, 2));
fprintf(' %1.3f %1.3f\n', ptrue(26), nlgr.Parameters(end).Value(2, 2));
fprintf(' %1.3f %1.3f\n', ptrue(27), nlgr.Parameters(end).Value(3, 2));
fprintf(' %1.3f %1.3f\n', ptrue(28), nlgr.Parameters(end).Value(4, 2));
present(nlgr);
2. Analyse et Interprétation :
L’adéquation entre les sorties simulées et réelles s'est considérablement améliorée, en
particulier en ce qui concerne la troisième sortie (l'angle relatif entre le bras 2 et le bras 3.
Les paramètres vrais et estimés sont assez proches les uns des autres.

VI. Conclusion :

Le principal objectif de ce tutoriel était de démontrer comment intégrer des paramètres


sous forme de vecteurs ou de matrices dans le cadre du modèle IDNLGREY C-MEX. En
outre, cette approche a été appliquée à un exemple spécifique de modélisation de robot,
où les équations ont été ajustées afin de correspondre à la forme requise pour l'espace
d'état explicite. Le tutoriel visait à fournir une illustration détaillée du processus de
manipulation des équations pour adapter le modèle aux exigences spécifiques de la
représentation en espace d'état dans le contexte de la modélisation IDNLGREY C-MEX

Vous aimerez peut-être aussi