📊 Modélisation et Analyse des Systèmes Linéaires et Représentation d’État - S5

Année: 2022-2023 (Semestre 5)
Crédits: 3 ECTS
Type: Automatique et Systèmes
Enseignant: Subias


PART A: PRÉSENTATION GÉNÉRALE

Objectifs du cours

Ce cours constitue une formation avancée en théorie des systèmes linéaires et en représentation d’état, piliers de l’automatique moderne. L’objectif est de maîtriser les techniques de modélisation mathématique, l’analyse de comportement des systèmes dynamiques, et les méthodes de commande par retour d’état.

Compétences visées

Organisation


PART B: EXPÉRIENCE, CONTEXTE ET FONCTION

Contenu pédagogique

Le cours s’articule autour de trois axes principaux: la modélisation des systèmes, l’analyse de stabilité et performances, et la synthèse de lois de commande.

1. Modélisation des systèmes linéaires

Représentation par fonction de transfert

La fonction de transfert relie l’entrée U(s) à la sortie Y(s) en transformée de Laplace :

H(s) = Y(s) / U(s) = N(s) / D(s)

Exemple de système du second ordre (moteur DC) :

H(s) = Km / (Tm*s + 1)

Avec Km = gain statique, Tm = constante de temps.

Représentation d’état

Forme générale pour un système SISO :

dx/dt = A*x + B*u  (équation d'état)
y = C*x + D*u      (équation de sortie)

Matrices d’état :

Exemple concret d’un système d’ordre 2 :

A = [0 1; -10 -6.316]
B = [0; 1]
C = [k/0.1001 0]
D = 0

2. Stabilité des systèmes

Critère de Routh-Hurwitz

Pour le polynôme caractéristique D(s) = ans^n + … + a1s + a0, on construit le tableau de Routh :

s^n an an-2 an-4
s^n-1 an-1 an-3 an-5
s^n-2 b1 b2

Avec b1 = (an-1an-2 - anan-3) / an-1

Condition de stabilité : tous les éléments de la première colonne doivent être strictement positifs.

Implémentation MATLAB disponible avec la fonction routh.m :

function RA=routh(poli,epsilon)
% Calcule le tableau de Routh pour un polynôme
% Gère les cas particuliers (première colonne nulle, ligne de zéros)

Analyse par les pôles

Un système est stable si tous les pôles (racines de D(s)) ont une partie réelle négative :

Re(pi) < 0 pour tout i

Classification :

3. Analyse fréquentielle

Diagrammes de Bode

Représentation du gain (en dB) et de la phase (en degrés) en fonction de la fréquence :

Gain(dB) = 20*log10(|H(jω)|)
Phase(°) = arg(H(jω)) * 180/π

Exemple de TP1 avec fonction de transfert H(s) = 0.717 / (0.0033*s + 1) :

H = tf([0.717], [0.0033 1]);
bode(H)

Mesures expérimentales effectuées :

Marges de stabilité

Marge de gain (Gm) : gain additionnel avant instabilité à la fréquence de coupure de phase -180°

Marge de phase (Pm) : phase additionnelle avant instabilité à la fréquence de coupure de gain 0dB

Commande MATLAB :

[Gm, Pm, Wcg, Wcp] = margin(sys);

Critères de robustesse :

4. Commande par retour d’état

Placement de pôles

Pour un système commandable, on peut imposer les pôles en boucle fermée avec un retour d’état u = -K*x + r.

La matrice de gain K est calculée pour placer les pôles désirés :

K = place(A, B, poles_desired)

Exemple du TP3 avec pôles complexes conjugués :

K = place(A, B, [-2+2i, -2-2i])

Les pôles choisis déterminent les performances :

Commandabilité

Un système est commandable si on peut amener l’état de n’importe quelle condition initiale à n’importe quel état désiré en temps fini.

Critère de Kalman : rang de la matrice de commandabilité = n

Matrice de commandabilité :

Mc = [B | A*B | A^2*B | ... | A^(n-1)*B]

Test MATLAB :

Mc = ctrb(A, B);
rank_Mc = rank(Mc);
% Système commandable si rank_Mc == n

5. Observateurs d’état

Principe

Lorsque tous les états ne sont pas mesurables, on utilise un observateur pour reconstruire l’état complet à partir de la sortie mesurée y.

Équation de l’observateur de Luenberger :

dx_hat/dt = A*x_hat + B*u + L*(y - y_hat)
y_hat = C*x_hat

Avec L : gain de l’observateur.

Observabilité

Un système est observable si on peut déterminer l’état initial x(0) à partir de la connaissance de u(t) et y(t) sur un intervalle fini.

Critère de Kalman : rang de la matrice d’observabilité = n

Matrice d’observabilité :

Mo = [C; C*A; C*A^2; ...; C*A^(n-1)]

Test MATLAB :

Mo = obsv(A, C);
rank_Mo = rank(Mo);
% Système observable si rank_Mo == n

Placement des pôles de l’observateur

Les pôles de l’observateur sont choisis plus rapides (2 à 5 fois) que ceux de la commande pour garantir une convergence rapide de l’estimation.

Exemples du TD :

L1 = [-0.365, -0.78]   % Pôles lents
L2 = [0.59, 0.32]      % Pôles rapides

6. Analyse modale et formes canoniques

Décomposition modale

Si A est diagonalisable, on peut écrire :

A = P * Λ * P^(-1)

Avec Λ matrice diagonale des valeurs propres et P matrice des vecteurs propres.

Changement de variable z = P^(-1)*x :

dz/dt = Λ*z + P^(-1)*B*u
y = C*P*z

Chaque mode évolue indépendamment selon zi(t) = exp(λi*t).

Formes canoniques

Forme commandable : matrices A et B ont une structure particulière facilitant le placement de pôles.

Forme observable : matrices A et C ont une structure facilitant la conception d’observateurs.


C. Aspects techniques et pratiques

1. Travaux Pratiques MATLAB

TP1 : Identification expérimentale

Manipulation d’un système réel (moteur ou servomoteur) pour mesurer sa réponse fréquentielle.

Code de traitement des données :

% Données expérimentales
Vg = [-3.93, -2.39, -1.17, -0.44, 0, 0.37, ...];
O = [-292*(2*pi/60)*9, -179*(2*pi/60)*9, ...]; % Vitesse en rad/s

% Tracé caractéristique statique
plot(O, Vg);
xlabel('Vitesse angulaire (rad/s)');
ylabel('Tension (V)');

% Analyse fréquentielle
G = [0.669, 0.659, 0.609, 0.528, ...];
G_dB = 20*log10(G);
freq = [0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 7.5, 10];

semilogx(freq, G_dB);
xlabel('Fréquence (Hz)');
ylabel('Gain (dB)');

Modèle identifié : H(s) = 0.717 / (0.0033*s + 1)

TP2 : Analyse de stabilité en boucle fermée

Système avec capteur, moteur et retour :

Ks = 1.55;   % Gain capteur
Km = 47.8;   % Gain moteur
Kg = 0.015;  % Gain réducteur
Tm = 0.3;    % Constante de temps moteur
K = 0.887;   % Gain global

% Fonction de transfert en boucle fermée
num = [Km*K/9];
den = [Tm, 1, Km*K*Ks/9];
sys = tf(num, den);

% Analyse de stabilité
[Gm, Pm, Wcg, Wcp] = margin(sys);
disp(['Marge de gain : ', num2str(Gm), ' (', num2str(20*log10(Gm)), ' dB)']);
disp(['Marge de phase : ', num2str(Pm), '°']);

% Calcul des pôles
P = pole(sys);
disp('Pôles du système :');
disp(P);

Résultats typiques :

TP3 : Commande par retour d’état

Système d’ordre 2 avec placement de pôles :

k = 5;
A = [0 1; -10 -6.316];
B = [0; 1];
C = [k/0.1001 0];

% Création du modèle d'état
sys = ss(A, B, C, 0);

% Placement de pôles en -2±2j
poles_desired = [-2+2i, -2-2i];
K = place(A, B, poles_desired);

disp('Gain de retour d''état K :');
disp(K);

% Système en boucle fermée
A_cl = A - B*K;
sys_cl = ss(A_cl, B, C, 0);

% Réponse indicielle
step(sys_cl);
title('Réponse en boucle fermée avec retour d''état');

2. Projet : Robot auto-équilibré (NXT Way)

Modélisation du robot Lego Mindstorms EV3

Paramètres physiques du fichier NXP_robot_parameters.m :

Paramètre Valeur Unité Description
m 0.03 kg Masse d’une roue
R 0.042 m Rayon des roues
Jw m*R²/2 kg·m² Inertie d’une roue
M 0.67 kg Masse du corps
H 0.152 m Hauteur du corps
L H/2 m Distance centre de masse / axe roues
Jpsi M*L²/3 kg·m² Inertie en tangage
g 9.81 m/s² Accélération de la gravité

Moteur DC :

Le projet utilise NXTwaySim.slx pour simuler le comportement du robot avec :

Objectif : stabiliser le robot en position verticale (θ = 0°) malgré les perturbations.

3. Outils MATLAB essentiels

Fonctions de base

% Création de modèle
sys = tf(num, den);              % Fonction de transfert
sys = ss(A, B, C, D);            % Représentation d'état

% Conversion
[A, B, C, D] = tf2ss(num, den);  % TF → État
[num, den] = ss2tf(A, B, C, D);  % État → TF

% Analyse
pole(sys);                       % Calcul des pôles
zero(sys);                       % Calcul des zéros
eig(A);                          % Valeurs propres de A
rank(ctrb(A, B));               % Test de commandabilité
rank(obsv(A, C));               % Test d'observabilité

% Réponses temporelles
step(sys);                       % Réponse indicielle
impulse(sys);                    % Réponse impulsionnelle
lsim(sys, u, t);                % Réponse à une entrée quelconque

% Analyse fréquentielle
bode(sys);                       % Diagrammes de Bode
nyquist(sys);                    % Diagramme de Nyquist
nichols(sys);                    % Diagramme de Black-Nichols
margin(sys);                     % Marges de stabilité

% Synthèse
K = place(A, B, poles);          % Placement de pôles
L = place(A', C', poles)';       % Observateur (dualité)

4. Méthodes de conception

Choix des pôles en boucle fermée

Pour un système d’ordre 2, forme canonique :

H(s) = ωn² / (s² + 2ζωn*s + ωn²)

Paramètres de performance :

Relation avec les pôles :

p1,2 = -ζωn ± jωn*sqrt(1-ζ²)

Recommandations :

Séparation des dynamiques

Principe de séparation : on peut concevoir indépendamment le retour d’état K et l’observateur L, puis les combiner.

Règle pratique : placer les pôles de l’observateur 2 à 5 fois plus rapides que ceux de la commande.

Exemple :


D. Analyse et perspectives

1. Applications industrielles

Systèmes de régulation

Exemples concrets

Segway / robots auto-équilibrés : application directe du projet NXT Way avec pendule inversé et commande par retour d’état.

Quadrirotors : modèle d’état avec 12 états (position, vitesse, angles, vitesses angulaires), commande hiérarchique avec boucles imbriquées.

2. Liens avec d’autres cours

Cours Semestre Lien avec Modélisation Systèmes Linéaires
Circuits et Filtres Analogiques S5 Analyse fréquentielle, Bode, systèmes du 1er et 2e ordre
Fondements Électronique Numérique S5 Échantillonnage pour commande numérique
Systèmes Bouclés S5 Asservissements, correcteurs PID
Commande Numérique S8 Discrétisation, commande échantillonnée
Temps Réel S8 Implémentation de lois de commande
Processus Stochastiques S8 Filtre de Kalman (extension de l’observateur)

3. Extensions et sujets avancés

Commande optimale

Minimisation d’un critère de performance (LQR - Linear Quadratic Regulator) :

J = ∫[x'Qx + u'Ru] dt

Conduit à un gain optimal K calculé via équation de Riccati.

Systèmes non-linéaires

Pour les systèmes non-linéaires, linéarisation autour d’un point d’équilibre :

dx/dt = f(x, u) ≈ f(x0, u0) + ∂f/∂x|(x0,u0) * (x-x0) + ∂f/∂u|(x0,u0) * (u-u0)

Obtention d’un modèle linéaire tangent exploitable avec les techniques du cours.

Systèmes multivariables (MIMO)

Extension à plusieurs entrées et sorties :

4. Compétences professionnelles développées

Ce cours a permis de développer des compétences clés en automatique moderne, essentielles pour la carrière d’ingénieur en systèmes embarqués, robotique, ou automatisation industrielle.

Modélisation:

Analyse:

Synthèse:

Outils informatiques:

5. Méthodologie de résolution de problèmes

Démarche type pour un problème d’automatique

  1. Modélisation : établir les équations différentielles ou fonction de transfert
  2. Mise sous forme d’état : définir les variables d’état pertinentes
  3. Analyse du système en boucle ouverte :
    • Stabilité (Routh, pôles)
    • Commandabilité et observabilité
    • Performances (réponse indicielle)
  4. Conception de la commande :
    • Choix des pôles désirés selon cahier des charges
    • Calcul du gain K par placement de pôles
    • Vérification des performances
  5. Conception de l’observateur (si nécessaire) :
    • Choix des pôles de l’observateur (plus rapides)
    • Calcul du gain L
  6. Simulation et validation :
    • Test avec Simulink
    • Analyse de robustesse
    • Ajustements si nécessaire

6. Pièges à éviter

L’expérience des TDs et du projet a permis d’identifier plusieurs erreurs courantes en automatique.

Pièges théoriques:

Pièges pratiques:

Pièges MATLAB:

7. Ressources et approfondissements

Documentation MATLAB

Ouvrages de référence

Logiciels alternatifs

Mon opinion

Ce cours représente un pilier fondamental de l’automatique moderne et s’avère indispensable pour tout ingénieur travaillant dans les domaines des systèmes embarqués, de la robotique, ou de l’automatisation industrielle.

Pourquoi ce cours est essentiel:

  1. Approche moderne: la représentation d’état est la base de l’automatique contemporaine (vs approche classique par fonction de transfert)
  2. Systèmes multivariables: traitement naturel des systèmes MIMO (Multiple Input Multiple Output)
  3. Connexion avec l’informatique: structure matricielle facilite l’implémentation numérique
  4. Base pour sujets avancés: commande optimale (LQR/LQG), commande robuste (H∞), commande prédictive (MPC)

Apports du projet robot NXT Way:

Le projet de robot auto-équilibré a été particulièrement formateur:

Connexions avec autres cours:

L’automatique est une discipline transversale qui s’appuie sur de nombreux autres cours:

Évolution technologique:

L’automatique évolue rapidement avec les nouvelles technologies:

Tendances actuelles:

Applications émergentes:

Recommandations pour réussir:

  1. Comprendre avant de calculer: visualiser le comportement physique du système
  2. Maîtriser MATLAB: indispensable pour l’automatique (industrie + recherche)
  3. Penser “états”: raisonner en variables d’état plutôt qu’en entrées/sorties
  4. Simuler systématiquement: valider les calculs avant implémentation réelle
  5. Tenir compte des limitations: saturation, bruit, échantillonnage

Applications professionnelles:

Ces compétences sont très recherchées dans de nombreux secteurs:

Automobile:

Aéronautique/Spatial:

Robotique:

Industrie:

Perspectives de carrière:


Bilan personnel: Ce cours a fourni les outils mathématiques et pratiques pour analyser et commander des systèmes dynamiques linéaires. L’approche état constitue une méthodologie puissante pour les systèmes multivariables et la commande moderne. Les TPs MATLAB et le projet robot ont permis de concrétiser ces concepts théoriques sur des applications réelles d’automatique. C’est un cours exigeant mais absolument fondamental pour une carrière en automatique, robotique, ou systèmes embarqués.