Vous êtes sur la page 1sur 148

Commande par espace dtat

Luc Jaulin
18 octobre 2007
2 Commande par espace dtat
Table des matires
1 Introduction 13
2 Modlisation des systmes 17
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 Reprsentation dtat de quelques systmes linaires . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.1 Intgrateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.2 Systme dordre 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3 Modlisation des systmes mcaniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.1 Mthodologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.2 Modlisation dun satellite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.3 Modlisation dun systme masses-ressorts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3.4 Modlisation dun pendule simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3.5 Modlisation dun pendule invers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4 Modlisation des vhicules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.4.1 Modlisation dun monocycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.4.2 Modlisation dun char . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.4.3 Modlisation dune voiture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4.4 Modlisation dun voilier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.5 Systmes hydrauliques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.1 Rappel sur la relation de Bernouilli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.2 Ecoulement dans trois bacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.3 Modlisation dun vrin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.6 Systme lectrique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3
4 Commande par espace dtat
2.6.1 Circuit RLC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.6.2 Moteur courant continu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.7 Systme de Fibonacci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3 Simulation 39
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2 Notion de champ de vecteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2.1 Exemple dune fonction linaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.2 Exemple dune fonction de type gradient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.3 Champ de vecteur associ un systme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.3.1 Systme proies-prdateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.3.2 Pendule simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4 Reprsentation graphique des systmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.4.1 Motif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.4.2 Matrice de rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4.3 Coordonnes homognes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4.4 Dessin de la voiture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.4.5 Dessin dun bras manipulateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.5 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.5.1 Mthode dEuler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.5.2 Simulation dun pendule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.5.3 Simulation dune voiture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.6 Ajout de linteractivit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4 Systmes linaires 57
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2 Solution des quations dtat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2.1 Systme temps continu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2.2 Systme temps discret . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.3 Stabilit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Table des matires 5
4.3.1 Solution des quations dtat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.3.2 Critre de stabilit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.3.3 Polynme caractristique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.4 Changement de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.4.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.4.2 Exemple de changement de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.5 Dune reprsentation dtat vers une reprsentation entres-sorties . . . . . . . . . . . . . . . . . . 62
4.6 Dune reprsentation entres-sorties vers une reprsentation dtat . . . . . . . . . . . . . . . . . . 64
4.6.1 Forme canonique de commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.6.2 Forme canonique dobservation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.6.3 Forme modale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.6.4 Forme de Jordan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5 Commande des systmes linaires 71
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.2 Commandabilit et observabilit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.2.1 Rappel sur les quations linaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.2.2 Commandabilit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.2.3 Observabilit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.4 Dcomposition de Kalman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.3 Commande par retour dtat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.3.1 Equation de placement de ples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.3.2 Rsolution de lquation de placement de ples . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.3.3 Rajout dun eet intgral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.4 Commande par retour de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.4.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.4.2 Calcul de la matrice de correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.4.3 Reprsentation dtat du rgulateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.5 Principe de sparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.5.1 Equation dtat du systme boucl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6 Commande par espace dtat
5.5.2 Changement de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.5.3 Polynme caractristique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.6 Insertion dun prcompensateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6 Commande linaire des systmes non linaires 87
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 Linarisation dun systme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2.1 Rappel sur la linarisation dune fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2.2 Linarisation du systme autour dun point . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.2.3 Linarisation du systme autour dun point de fonctionnement . . . . . . . . . . . . . . . . 89
6.2.4 Exemple du systme proies-prdateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.2.5 Exemple du pendule simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.2.6 Exemple du vrin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.3 Stabilisation dun systme non linaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.3.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.3.2 Avec un observateur tendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.4 Stabilisation du pendule invers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.5 Stabilisation dun monocycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.6 Conduite automatique dune voiture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6.6.1 Fonction dobservation pour le systme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
6.6.2 Fonction dobservation pour le rgulateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6.6.3 Bouclage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7 Commande non linaire des systmes non linaires 107
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.2 Un petit exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.3 Principe de la linarisation par bouclage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.3.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.3.2 Commande dune chane dintgrateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.4 Rgulation des trois bacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Table des matires 7
7.5 Rgulation du char . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
7.6 Rgulation de la voiture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
7.6.1 Voiture dcrivant un hexagone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
7.6.2 Voiture dcrivant un cercle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
7.7 Rgulation du bateau voile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
7.7.1 Drivations successives des variables dtat . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
7.7.2 Linarisation par bouclage du bateau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
7.7.3 Rgulateur hybride . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
8 Identication 125
8.1 Fonctions quadratiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
8.1.1 Dnition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
8.1.2 Drive dune forme quadratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
8.1.3 Valeurs propres dune fonction quadratique . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.1.4 Minimisation dune fonction quadratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.2 Mthode des moindres-carrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
8.2.1 Introduction lestimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
8.2.2 Mthode des moindres carrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
8.2.3 Exemple de la parabole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
8.2.4 Moteur courant continu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
8.2.5 Estimation dune fonction de transfert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
8.2.6 Cas non-linaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
8.3 Localisation dun robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
8.4 Moindres-carrs rcursifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
8.4.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
8.4.2 Premire simplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
8.4.3 Deuxime simplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
8.5 Filtrage de Kalman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
8.5.1 Matrice de covariance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
8.5.2 Distribution Gaussienne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Table des matires 11
8.5.3 Filtre de Kalman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
8.6 Application lestimation en temps rel dune fonction de transfert . . . . . . . . . . . . . . . . . . 138
8.6.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
8.6.2 Perspectives : commande adaptative, surveillance . . . . . . . . . . . . . . . . . . . . . . . . 140
8.7 Localisation dun robot sous-marin dans une piscine . . . . . . . . . . . . . . . . . . . . . . . . . . 141
8.7.1 Prsentation du problme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
8.7.2 Dtection des murs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
8.7.3 Localisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
8.7.4 Reprsentation graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Bibliographie 146
Glossaire 149
Index 150
12 Commande par espace dtat
Chapitre 1
Introduction
Une trs grande classe de systmes physiques, biologiques, conomiques, etc. qui nous entourent peuvent tre
dcrits par une quation direntielle du type
_
x(t) = f (x(t), u(t))
y(t) = g(x(t), u(t)),
(1.1)
sous lhypothse que le temps t dans lequel volue le systme est continu (cest--dire appartient R). Le vecteur
u(t) est lentre (ou commande) du systme. Sa valeur peut tre choisie arbitrairement pour tout t. Le vecteur
y(t) est la sortie du systme et peut tre mesur avec une certaine prcision. Le vecteur x(t) est appel tat du
systme. Comme nous lillustrerons dans la suite, il reprsente la mmoire du systme, cest--dire, lensemble des
informations dont le systme a besoin pour prdire son propre avenir, pour une entre u(t) connue. La premire
des deux quations de (1.1) sappelle quation dvolution. Il sagit dune quation direntielle qui permet de
savoir vers o va se diriger ltat x(t) sachant sa valeur linstant prsent t et la commande u(t) que nous sommes
en train dexercer. La deuxime quation sappelle quation dobservation. Elle permet de calculer le vecteur de
sortie y(t), connaissant ltat et la commande linstant t. Attention, contrairement lquation dvolution, cette
quation nest pas une quation direntielle car elle ne fait pas intervenir les drives des signaux. Les quations
(1.1) forment la reprsentation dtat du systme.
Il est parfois utile de considrer aussi un temps k discret, o k sera un lment de Z, lensemble des entiers relatifs.
En eet, si lunivers que nous considrons est un ordinateur, il est concevable de considrer que le temps k qui
le rgit est discret, synchronis sur lhorloge du microprocesseur. De tels systmes, dits temps discret, obissent
gnralement une quation de rcurrence du type
_
x(k + 1) = f (x(k), u(k))
y(k) = g(x(k), u(k)).
(1.2)
Dans ce cours (qui est fortement inspir de mon livre [8], paru en 2005), sauf mention particulire, nous allons
uniquement nous intresser aux systmes temps continu (cest--dire de type (1.1)).
Le premier objectif de ce cours est de bien comprendre cette reprsentation dtat. Pour cela, nous allons considrer
dans le chapitre 2 un grand nombre dexemples varis et montrer comment naturellement nous arrivons une
reprsentation dtat pour modliser le systme qui nous intresse. Ensuite, nous montrerons au chapitre 3 comment
simuler sur ordinateur un systme pour lequel une reprsentation dtat est connue.
13
14 Commande par espace dtat
Le second objectif de ce cours est de proposer des mthodes pour commander les systmes dcrits par des qua-
tions dtat. Cest--dire que nous allons tenter de fabriquer des machines automatiques (o lhomme nintervient
quasiment pas, sauf pour donner ses ordres, o consignes), appeles rgulateurs capables de domestiquer (changer
le comportement dans le sens que lon souhaite) les systmes considrs. Pour cela, le rgulateur devra calculer
les entres u(t) appliquer au systme partir de la connaissance (plus ou moins bruites) des sorties y(t) et de
la consigne w(t) donne (voir gure).
Principe de la rgulation dun systme
Vu de lutilisateur, le systme, dit systme boucl, dentre w(t) et de sortie y(t) aura un comportement convenable.
On dira que lon a asservi le systme.
Dans cet objectif de rgulation, nous allons, dans une premire phase, nous intresser uniquement aux systmes
linaires, cest--dire que les fonctions f et g sont supposes linaires. Ainsi, dans le cas du temps continu, (1.1)
scrit
_
x(t) = Ax(t) +Bu(t),
y(t) = Cx(t) +Du(t),
(1.3)
et dans le cas du temps discret, (1.2) devient
_
x(k + 1) = Ax(k) +Bu(k),
y(k) = Cx(k) +Du(k).
(1.4)
Les matrices A, B, C, D sont appeles matrices dvolution, de commande, dobservation et directe. Une analyse
dtaille de ces systmes sera faite au chapitre 4. Nous expliquerons ensuite, dans le chapitre 5 comment stabiliser
ces systmes.
Dans une seconde phase, nous montrerons, au chapitre 6, quautour de certains points, dits de fonctionnement,
les systmes non linaires se comportent comme des systmes linaires et quil alors possible de les stabiliser par
des mthodes dveloppes pour le cas linaire. Nous donnerons aussi dautres types dapproches, moins gnrales
mais plus adaptes, pour stabiliser des systmes non linaires.
Les programmes informatiques utiliss pour tester nos rgulateurs et eectuer nos simulations seront tous donns
pour un environnement Scii.i[2]. Ces derniers sont disponibles sur
http ://www.hermes-science.com/jaulin/progscilab.zip.
Rappelons que Scii.i est un logiciel de calcul numrique qui intgre les oprations courantes du calcul matriciel
(tout comme M.1i.i), et ore lavantage dtre gratuit (contrairement M.1i.i). Il peut tre tlcharg
ladresse
http ://www-rocq.inria.fr /scilab/.
Le calcul formel sera quant lui eectu sous Mi.[1] qui est un logiciel proche de M.iii. Notons que
contrairement M.iii, Mi. est gratuit et peut tre tlcharg sur
http ://www.mupad.com.
Dans le chier compress progscilab.zip, vous trouverez les programmes Scii.i suivants :
Introduction 15
BacsAsservi.sce, BacsLibres.sce,
BateauHybride, BateauLibre.sce,
BrasManipulateur, CharLibre,
PenduleInverseAsservi.sce, PenduleInverseLibre.sce,
PenduleSimpleChamp.sce, PenduleSimpleLibre.sce,
PenduleSimpleTrajectoire.sce, SegWayAsservi,
SegwayLibre, VerinLibre,
VoitureAsservieCircuit, VoitureAsservieCycle,
VoitureAsservieHexagone.sce, VoitureAsservieNord,
VoitureChampCycle.sce, VoitureLibre.sce,
VoitureLibreCircuit.sce, VoitureLibreNord.sce,
VolterraChamp.sce.
Dans les noms des chiers, on retrouve le nom du systme trait (voiture, pendule, etc), un qualicatif (libre
signie non asservi) et lextension sce rattache aux programmes Scii.i.
16 Commande par espace dtat
Chapitre 2
Modlisation des systmes
2.1 Introduction
Rappelons que de nombreux systmes peuvent se mettre sous une reprsentation dtat,
_
x(t) = f (x(t), u(t))
y(t) = g(x(t), u(t)),
pour les systmes temps continus et
_
x(k + 1) = f (x(k), u(k))
y(k) = g(x(k), u(k)),
pour les systmes temps discret. Nous appellerons modlisation ltape qui consiste trouver une reprsentation
dtat, plus ou moins prcise, du systme qui nous intresse. En gnral, apparaissent dans les quations dtats des
paramtres constants (comme la masse ou le moment dinertie dun corps, le coecient du frottement visqueux,
la capacit dun condensateur, etc). Dans de tels cas, une tape didentication peut savrer ncessaire. Dans ce
cours, nous supposerons que tous les paramtres sont connus et dans le cas contraire, nous invitons le lecteur
consulter le livre dEric Walter et Luc Pronzato [7] pour une panoplie des mthodes didentication.
Bien sr, il nexiste pas de mthodologie systmatique appliquer pour modliser un systme. Le but de ce chapitre
est de prsenter sur quelques exemples varis comment arriver une reprsentation dtat an de permettre au
lecteur dacqurir une certaine exprience qui laidera modliser ses propres systmes.
2.2 Reprsentation dtat de quelques systmes linaires
Dans ce paragraphe, nous prsentons quelques exemples de systmes linaires temps continus, qui, rappelons-le,
peuvent tre dcrits par les quations dtat
_
x(t) = Ax(t) +Bu(t),
y(t) = Cx(t) +Du(t).
17
18 Commande par espace dtat
2.2.1 Intgrateur
Lintgrateur est un systme linaire dcrit par lquation direntielle y = u. Une reprsentation dtat possible
pour ce systme est
_
x(t) = u(t)
y(t) = x(t).
Les matrices associes ce systme sont A = (0), B = (1), C = (1) et D = (0) . Elles sont toutes de dimension
1 1.
2.2.2 Systme dordre 2
Soit le systme dentre u et de sortie y dcrit par lquation direntielle suivante
y +a
1
y +a
0
y = bu.
Puisque,
_
y
y
_
=
_
y
a
1
y a
0
y +bu
_
,
y = y,
en posant x = (y, y), cette quation direntielle peut scrire sous la forme
_
x
1
x
2
_
=
_
x
2
a
1
x
2
a
0
x
1
+bu
_
,
y = x
1
,
ou encore, sous une forme standard faisant apparatre les matrices dtat A, B, C et D :
x =
_
0 1
a
0
a
1
_
x +
_
0
b
_
u
y =
_
1 0
_
x.
2.3 Modlisation des systmes mcaniques
2.3.1 Mthodologie
Le principe fondamental de la dynamique permet de trouver simplement les quations dtat de systmes mca-
niques (ou robots). Les calculs engendrs sont relativement lourds pour les systmes complexes et lutilisation du
logiciel de calcul formel (Mi. par exemple) peut savrer utile. La mthode sera illustre travers plusieurs
exemples.
Pour obtenir les quations dtat dun systme mcanique compos de plusieurs sous-systmes o
1
, o
2
, . . . , o
m
,
supposs rigides, on procde en trois tapes.
Modlisation des systmes 19
1. Obtention des quations direntielles. Il faut appliquer pour chaque sous-systme o
k
, de masse m et de
matrice dinertie J, les relations

i
f
i
= ma

i
/
f
i
= J
o les f
i
sont les forces agissant sur le sous-systme o
k
, /
f
i
reprsente le moment engendr par la force f
i
sur
o
k
, par rapport son centre de gravit. Le vecteur a reprsente lacclration tangentielle de o
k
et le vecteur
reprsente lacclration angulaire de o
k
. Aprs dcomposition de ces 2 m quations vectorielles suivant
leurs composantes, on obtient 6 m quations direntielles scalaires dont certaines peuvent tre dgnres
(cest--dire du type 0 = 0).
2. Suppression des composantes des forces intrieures. Dans les quations direntielles interviennent des forces,
dites de liaisons, qui sont intrieures au systme mcanique global, bien quextrieures chaque sous-systme
qui le compose. Elles reprsentent laction dun sous-systme o
k
sur un autre sous-systme o

. Daprs le
principe daction-raction, lexistence dune telle force, notons la f
k,
, implique lexistence dune autre force
f
,k
, reprsentant laction de o

sur o
k
, telle que f
,k
= f
k,
. Par une manipulation formelle des quations
direntielles et en prenant en compte les quations dues au principe daction-raction, il est possible de se
dbarrasser des composantes f
x
, f
y
et f
z
de ces forces intrieures. Le nombre des quations direntielles
rsultantes doit se rduire au nombre n de degr de libert q
1
, . . . , q
n
du systme.
3. Obtention des quations dtat. Il nous faut alors isoler les drives secondes q
1
, . . . , q
n
de lensemble des n
quations direntielles de faon obtenir une relation vectorielle du type
q = f (q, q, u) ,
o u est le vecteur des forces extrieures et ne drivant pas dun potentiel (cest--dire, celles que nous
appliquons au systme). Les quations dtat scrivent alors
d
dt
_
q
q
_
=
_
q
f (q, q, u)
_
.
Le lecteur intress par plus de dtails sur la modlisation des systmes mcaniques pourra consulter [5] et
[13]. Nous allons maintenant illustrer la mthodologie prsente sur divers exemples.
2.3.2 Modlisation dun satellite
Considrons le satellite, reprsent sur la gure ci dessous, et repr par ses coordonnes (x
1
, x
2
). Ce satellite est
en orbite autour de la terre.
Satellite en orbite autour de la terre
20 Commande par espace dtat
La loi de gravitation universelle de Newton arme que la terre exerce une force dattraction f sur le satellite
donne par
f = G
Mm
x
2
1
+x
2
2
u =G
Mm
x
2
1
+x
2
2
.
1

x
2
1
+x
2
2
_
x
1
x
2
_
= G
Mm

x
2
1
+x
2
2
3
_
x
1
x
2
_
,
o M est la masse de la terre, m est celle du satellite, G = 6.67 10
11
Nm
2
kg
2
est la constante de gravitation
de Newton et u est le vecteur unitaire pointant vers le satellite. Daprs la seconde loi de Newton (cest--dire le
principe fondamental de la dynamique),
f = m
dv
dt
= m
_
x
1
x
2
_
,
o v est le vecteur vitesse du satellite. Ainsi
_
x
1
x
2
_
= G
M
_
x
2
1
+x
2
2
3
_
x
1
x
2
_
.
Puisque
_
x
1
= x
3
x
2
= x
4
,
les quations dtat scrivent
_

_
x
1
= x
3
x
2
= x
4
x
3
=
GMx
1

x
2
1
+x
2
2
3
x
4
=
GMx
2

x
2
1
+x
2
2
3
.
2.3.3 Modlisation dun systme masses-ressorts
(a) systme au repos, (b) systme dans un tat quelconque
On considre le systme dentre f et de sortie z
1
de la gure ci-dessus (f : force applique sur le deuxime
chariot, z
i
cart du iime chariot par rapport sa position dquilibre, k
i
raideur du iime ressort, coecient
de frottement visqueux). Prenons pour vecteur dtat
x = (z
1
, z
1
, z
2
, z
2
)
T
.
Modlisation des systmes 21
Le principe fondamentale de la dynamique appliqu au chariot 2 puis au chariot 1 donne
_
f z
2
k
2
(z
2
z
1
) = m
2
z
2
,
k
1
z
1
z
1
+k
2
(z
2
z
1
) = m
1
z
1
.
Nous avons donc la reprsentation dtat suivante
_

_
x =
_
_
_
_
_
0 1 0 0

k
1
+k
2
m
1


m
1
k
2
m
1
0
0 0 0 1
k
2
m
2
0
k
2
m
2


m
2
_
_
_
_
_
x +
_
_
_
_
_
0
0
0
1
m
2
_
_
_
_
_
f
z
1
=
_
1 0 0 0
_
x
qui est celle dun systme linaire.
2.3.4 Modlisation dun pendule simple
On considre le pendule de la gure ci dessous. Lentre de ce systme est le couple c exerc sur le pendule. La
sortie est y(t), la distance entre la masse m et laxe vertical. Cherchons les quations dtat de ce systme.
Pendule simple
Daprs le principe fondamental de la dynamique,
mg sinq +c = J q,
o est la longueur du pendule. Or, pour notre exemple, J = m
2
, donc
m
2
q +mg sinq = c.
Comme indiqu au point 3 du paragraphe 2.3.1 de la page 18, nous devons prendre pour vecteur dtat x = (q, q).
Les quations dtat du systme scrivent alors :
d
dt
_
q
q
_
=
_
q
mg sinq+c
m
2
_
,
y = sinq.
(2.1)
Remarque 2.3.1 Lnergie mcanique du pendule est donne par
E
m
=
1
2
m
2
q
2
. .
nergie cintique
+mg (1 cos q)
. .
nergie potentielle
.
22 Commande par espace dtat
Lorsque le couple c est nul, on a
dEm
dt
=
1
2
m
2
(2 q q) +mg q sinq
= m
2
_
q
mg sinq
m
2
_
+mg q sinq = 0.
Lnergie mcanique du pendule reste donc bien constante, ce qui est cohrent avec le fait que le pendule sans
frottement est un systme conservatif.
2.3.5 Modlisation dun pendule invers
Pendule invers
On considre le systme, appel pendule invers, form dun pendule pos en quilibre instable sur un chariot
roulant, comme reprsent sur la gure. La quantit u est la force exerce sur le chariot de masse M, x indique
la position du chariot, est langle entre le pendule et la verticale et

R est la force exerce par le chariot sur le
pendule. A lextrmit B du pendule est xe une masse m. On ngligera la masse de la tige du pendule. Enn,
A est le point darticulation entre la tige et le chariot et

=

k est le vecteur de rotation associ la tige.


Pour obtenir les quations dtat de ce systme, nous allons nouveau suivre la procdure prsente au paragraphe
2.3.1 de la page 18. Le principe fondamental de la dynamique appliqu sur le chariot et le pendule nous donne
(u R
x
)

i = M x

i (chariot en translation)
R
x

i +R
y

j mg

j = m v
B
(pendule en translation)
R
x
cos +R
y
sin = 0

. (pendule en rotation)
(2.2)
o v
B
est le vecteur vitesse du point B. Pour la troisime quation, le moment dinertie du pendule a t pos
nul. Puisque

OB = (x sin)

i + cos

j,
nous avons
v
B
=
_
x

cos
_

sin

j.
Donc, lacclration du point B est donne par
v
B
=
_
x

cos +

2
sin
_

i
_

sin +

2
cos
_

j.
Aprs dcomposition scalaire des quations de la dynamique (2.2), on obtient
_

_
M x = u R
x
, (i)
R
x
= m
_
x

cos +

2
sin
_
, (ii)
R
y
mg = m
_

sin +

2
cos
_
, (iii)
R
x
cos +R
y
sin = 0. (iv)
Modlisation des systmes 23
Ces quatre quations dcrivent respectivement (i) le chariot en translation, (ii) le pendule en translation suivant

i, (iii) le pendule en translation suivant

j et (iv) le pendule en rotation. On vrie bien que le nombre de degr de


libert (ici x et ) additionn au nombre de composantes des forces intrieures (ici R
x
et R
y
) est gal au nombre
dquations. Sous forme matricielle, ces quations scrivent
_
_
_
_
_
M 0 1 0
m m cos 1 0
0 m sin 0 1
0 0 cos sin
_
_
_
_
_
_
_
_
_
_
x

R
x
R
y
_
_
_
_
_
=
_
_
_
_
_
u
m

2
sin
mg m

2
cos
0
_
_
_
_
_
.
Donc
_
x

_
=
_
1 0 0 0
0 1 0 0
_
.
_
_
_
_
_
M 0 1 0
m m cos 1 0
0 m sin 0 1
0 0 cos sin
_
_
_
_
_
1
.
_
_
_
_
_
u
m

2
sin
mg m

2
cos
0
_
_
_
_
_
.
Ce calcul se fait aisment grce Mi. par les instructions suivantes
B :=matrix([u,m*l*w^2*sin(a),m*g-m*l*w^2*cos(a),0])
P :=matrix([[1,0,0,0],[0,1,0,0]])
A :=matrix([[M,0,1,0],[-m,m*l*cos(a),1,0],
[0,m*l*sin(a),0,1],[0,0,cos(a),sin(a)]])
normal(P/A*B)
Linstruction normal(P/A*B) renvoie la matrice PA
1
B avec des coecients rduits au mme dnominateur.
Mi. nous donne
_
x

_
=
_
_
msin(

2
g cos )
M+msin
2

sin((M+m)gm

2
cos )
(M+msin
2
)
_
_
+
_

(M+msin
2
)
cos
(M+msin
2
)
_
u.
Les quations dtat scrivent donc
d
dt
_
_
_
_
_
x

_
_
_
_
_
=
_
_
_
_
_
_
x

msin(

2
g cos )
M+msin
2

sin((M+m)gm

2
cos )
(M+msin
2
)
_
_
_
_
_
_
+
_
_
_
_
_
_
0
0

(M+msin
2
)
cos
(M+msin
2
)
_
_
_
_
_
_
u. (2.3)
24 Commande par espace dtat
2.4 Modlisation des vhicules
2.4.1 Modlisation dun monocycle
Le Segway possde deux roues et un seul
essieu
Le Segway reprsent sur la gure est un vhicule deux roues pour un seul essieu. Il est stable car il est rgul.
Dans une phase de modlisation, nous allons bien sr supposer que lengin nest pas rgul. Son comportement
en boucle ouverte est trs proche du monocycle planaire reprsent sur la gure ci-dessous. Sur cette gure, u
reprsente le couple exerc entre le corps et la roue.
Monocycle constitu dune roue et dune tige lies par une liaison pivot
La liaison entre ces deux lments est une liaison pivot. Nous noterons B le centre de gravit du corps et A celui
de la roue. C est un point x sur le disque. Notons langle entre le vecteur

AC et lhorizontale et langle entre
le corps du monocycle et la verticale. Ce systme possde deux degrs de libert et . Daprs les explications
donnes au paragraphe 2.3.1 de la page 18, ltat de notre monocycle est donn par le vecteur x =
_
, , ,

_
.
Les paramtres de notre systme sont
pour le disque : sa masse M, son rayon a, son moment dinertie J
M
,
pour le pendule : sa masse m, son moment dinertie J
p
, la distance entre son centre de gravit et le centre du
disque.
Modlisation des systmes 25
An de trouver les quations dtat, nous appliquons le principe fondamental de la dynamique sur chaque sous-
systme, savoir la roue et le corps. Nous avons :
_

_
R
x
+F
x
= Ma (roue en translation)
F
x
a +u = J
M
(roue en rotation)
R
x

i +R
y

j mg

j = m v
B
(corps en translation)
R
x
cos +R
y
sin u = J
p

(corps en rotation),
(2.4)
o v
B
, le vecteur vitesse du point B. Puisque

OB = (a sin)

i + ( cos +a)

j,
par drivation, nous obtenons
v
B
=
_
a

cos
_

sin

j.
ou encore
v
B
=
_
a

cos +

2
sin
_

i
_

sin +

2
cos
_

j.
Aprs dcomposition scalaire, des quations de la dynamique (2.4), on obtient
_

_
R
x
+F
x
= Ma
F
x
a +u = J
M

R
x
= m(a

cos +

2
sin)
R
y
mg = m(

sin +

2
cos )
R
x
cos +R
y
sin u = J
p

On vrie bien que le nombre de degr de libert (ici et ) additionn au nombre de composantes des forces
intrieures (ici R
x
, R
y
et F
x
) est gal au nombre dquations. Sous forme matricielle, ces quations scrivent
_
_
_
_
_
_
_
Ma 0 1 0 1
J
M
0 0 0 a
ma m cos 1 0 0
0 m sin 0 1 0
0 J
p
cos sin 0
_
_
_
_
_
_
_
_
_
_
_
_
_
_

R
x
R
y
F
x
_
_
_
_
_
_
_
=
_
_
_
_
_
_
_
_
0
u
m

2
sin
mg m

2
cos
u
_
_
_
_
_
_
_
_
.
Donc
_
x

_
=
_
1 0 0 0 0
0 1 0 0 0
_
.
_
_
_
_
_
_
_
Ma 0 1 0 1
J
M
0 0 0 a
ma m cos 1 0 0
0 m sin 0 1 0
0 J
p
cos sin 0
_
_
_
_
_
_
_
1
.
_
_
_
_
_
_
_
_
0
u
m

2
sin
mg m

2
cos
u
_
_
_
_
_
_
_
_
.
Ce calcul se fait grce Mi. par les instructions suivantes
B :=matrix([0,u,m*l*w^2*sin(T),m*g-m*l*w^2*cos(T),u])
P :=matrix([[1,0,0,0],[0,1,0,0]])
A :=matrix([[M*a,0,-1,0,1],[JM,0,0,0,-a],
[m*a,m*l*cos(T),1,0,0],[0,m*l*sin(T),0,1,0],
[0,-Jp,l*cos(T),l*sin(T),0]])
N0 :=normal(P/A*B),
N1 :=subs(N0,sin(T)^2=1-cos(T)^2)
N2 :=normal(N1)
26 Commande par espace dtat
Mi. nous donne
_

_
=

3

g
cos

sin+(
2
+
3
cos )u

2
3
cos
2

2
3

2
cos

sin(
1
+
3
cos )u

2
3
cos
2

avec

1
= J
M
+a
2
(m+M) ,
2
= J
p
+m
2
,

3
= aml,
g
= glm.
Les quations dtat scrivent donc
d
dt
_
_
_
_
_

_
_
_
_
_
=
_
_
_
_
_
_
_
_

g
cos

sin+(
2
+
3
cos )u

2
3
cos
2

2
3

2
cos

sin(
1
+
3
cos )u

2
3
cos
2

_
_
_
_
_
_
_
_
. (2.5)
2.4.2 Modlisation dun char
Fauteuil roulant (ou char), vu de dessus
Le char (ou le fauteuil roulant) de la gure comprend deux chenilles (ou roues) parallles motrices dont les
acclrations (qui forment les entres u
1
et u
2
du systme) sont commandes par deux moteurs indpendants.
Dans le cas o le fauteuil roulant est considr, la stabilit du systme est assure par une ou deux roues folles,
non reprsentes sur la gure. Les variables dtat sont constitues par les coordonnes x, y du centre de lessieu,
de lorientation du char, et des vitesses v
1
et v
2
du centre de chacune des roues motrices. Remarquons que le
vecteur dtat ne peut tre choisi gal
_
x, y, , x, y,

_
, ce qui pourtant nous aurait sembl naturel au regard de
la thorie lagrangienne brivement rappele au paragraphe 2.3.1. En, eet, si tel tait notre choix, certains tats
nauraient aucune signication physique. Par exemple ltat
_
x = 0, y = 0, = 0, x = 1, y = 1,

= 0
_
na pas de sens car le char nest pas autoris draper. Ce phnomne est d lexistence des roues qui entrane
des contraintes entre les variables dtat naturelles. Ici, nous avons ncessairement la contrainte de dite de non
holonomie :
y = xtan.
Les systmes mcaniques pour lesquels il existe de telles contraintes dgalits sur les variables dtat naturelles
(par variable dtat naturelles, nous entendons le vecteur (q, q) o q est le vecteur des degrs de libert de notre
Modlisation des systmes 27
systme) sont dit non holonomes. Lorsquune telle situation arrive, il convient dutiliser ces contraintes an de
rduire le nombre de variables dtat et ceci, jusqu ce quaucune contrainte de non holonomie ne subsiste. Ici,
nous choisissons pour vecteur dtat (x, y, , v
1
, v
2
). Ce choix se comprend aisment dans le sens o ces variables
nous permettent de dessiner le char (x, y, ) et la connaissance de v
1
,v
2
nous permet de calculer les variables x, y,

.
De plus, tout choix arbitraire du vecteur (x, y, , v
1
, v
2
) correspond une situation physiquement possible. Les
quations dtat du systme sobtiennent directement sans aucun calcul.
Elles scrivent
_
_
_
_
_
_
_
x
y

v
1
v
2
_
_
_
_
_
_
_
=
_
_
_
_
_
_
_
v
1
+v
2
2
cos
v
1
+v
2
2
sin
v
2
v
1

Ru
1
Ru
2
_
_
_
_
_
_
_
.
2.4.3 Modlisation dune voiture
Voiture se dplaant sur un plan (vue de dessus)
Le conducteur de la voiture reprsente sur la gure gauche possde deux commandes : lacclration des
roues avant (supposes motrices) et la vitesse de rotation du volant. Le frein apparat ici comme une acclration
ngative. Nous noterons langle entre les roues avant et laxe de la voiture, langle que fait la voiture par rapport
lhorizontale et (x, y) les coordonnes du milieu de lessieu arrire. En raisonnant comme dans le paragraphe
2.4.2, il est clair que les variables dtat de notre systme sont constitues par
les coordonnes de position, cest--dire, toute la connaissance ncessaire pour dessiner la voiture, savoir les
coordonnes x, y du centre de lessieu arrire, lorientation de la voiture, et langle des roues avant ;
et la coordonne cinmatique v reprsentant la vitesse du milieu de lessieu avant (en eet, la seule connaissance
de cette quantit et des coordonnes de position permet de retrouver toutes les vitesses de tous les autres
lments de la voiture).
Obtention des quations dtat [12]. Supposons pour simplier que les deux roues avant tournent la mme
vitesse v. Comme illustr sur la gure droite, tout de passe comme sil existait seulement deux roues virtuelles
situes au centre des essieux. Considrons un observateur xe par rapport au sol. Daprs la rgle de composition
des vitesses, nous avons
v
A
= v
M
+

AM

,
28 Commande par espace dtat
o

est le vecteur de rotation instantane de la voiture. Dans le repre de la voiture, cette quation scrit :
_
_
_
v cos
v sin
0
_
_
_ =
_
_
_
v
M
0
0
_
_
_+
_
_
_
L
0
0
_
_
_
_
_
_
0
0

_
_
_,
o L est la distance entre les trains avant et arrire. Soit
_
v cos
v sin
_
=
_
v
M
0
_
+
_
0
L

_
.
Ainsi,

=
v sin
L
,
et
_
x = v
M
cos = v cos cos
y = v
M
sin = v cos sin.
Lquation dvolution de la voiture scrit donc
_
_
_
_
_
_
_
x
y

_
_
_
_
_
_
_
=
_
_
_
_
_
_
_
v cos cos
v cos sin
v sin
L
u
1
u
2
_
_
_
_
_
_
_
. (2.6)
Nous reverrons cette voiture au paragraphe 6.6 page 98 et au paragraphe 7.6 page 114 pour tenter de la rguler.
Rajoutons une remorque cette voiture dont le point dattache est le milieu de lessieu arrire de la voiture. Les
quations rgissant la remorque peuvent tre obtenues directement partir de celles de la voiture.
Une voiture suivie dune remorque
En saidant de la gure, on obtient, pour la remorque les quations suivantes
_
_
_
x
r
y
r

r
_
_
_
=
_
_
_
v
r
cos
r
cos
r
v
r
cos
r
sin
r
vr sinr
Lr
_
_
_
avec
v
r
=
_
x
2
+ y
2
=
_
(v cos cos )
2
+ (v cos sin)
2
= v cos ,

r
=
r
.
Modlisation des systmes 29
Le paramtre L
r
reprsente la distance entre le point dattache et le milieu de lessieu de la remorque. Or seule

r
doit tre rajoute comme variable dtat celles de la voiture. En eet, il est clair que x
r
, y
r
, v
r
,
r
, x
r
, y
r
, . . .
peuvent tre obtenues analytiquement partir des seules connaissances de ltat de la voiture et de langle
r
.
Ainsi, les quations dtat du systme voiture-remorque sont donnes par
_
_
_
_
_
_
_
_
_
x
y

r
v

_
_
_
_
_
_
_
_
_
=
_
_
_
_
_
_
_
_
_
_
v cos cos
v cos sin
v sin
L
v cos sin(r)
Lr
u
1
u
2
_
_
_
_
_
_
_
_
_
_
.
2.4.4 Modlisation dun voilier
Bateau voile que lon cherche modliser
La gure reprsente le voilier que nous voulons modliser. Le vecteur dtat x, de dimension 7, est compos
des coordonnes de position, cest--dire les coordonnes x, y du centre de gravit G du bateau (la drive se
trouve en G), lorientation , et les angles
v
et
g
de la voile et du gouvernail,
et des coordonnes cinmatiques v et reprsentant respectivement la vitesse du centre de gravit G et la
vitesse angulaire du bateau autour de G.
Les entres u
1
et u
2
du systme sont les drives des angles
v
et
g
. Les paramtres (supposs connus et constants)
sont
V la vitesse du vent,
r
g
la distance du gouvernail G,
30 Commande par espace dtat
r
v
la distance du mt G,

g
la portance du gouvernail (si le gouvernail se trouve perpendiculaire la marche du bateau, leau exerce une
force de
g
v Newton sur le gouvernail),

v
la portance de la voile (si la voile se trouve immobile, perpendiculaire au vent, ce dernier exerce une force
de
v
V Newton),

f
le coecient de frottement du bateau sur leau dans le sens de la marche (leau exerce sur le bateau une
force oppose au sens de la marche gale
f
v),

le coecient angulaire de frottement (leau exerce sur le bateau un couple de frottement gal

; tant
donn la forme du bateau, plutt prol pour garder un cap,

sera grand devant


f
),
J le moment dinertie du bateau,
la distance entre le centre de pousse de la voile et le mt,
le coecient de drive (lorsque la voile du bateau est relche, le bateau tend driver, dans le sens du vent,
une vitesse gale V ).
Cherchons obtenir des quations dtat pour notre systme, cest--dire, une quation direntielle de la forme
x = f (x, u),
o x = (x, y, ,
v
,
g
, v, )
T
et u = (u
1
, u
2
)
T
. Pour cela, nous allons utiliser le principe fondamental de la dy-
namique [14] en translation (an dobtenir une expression de lacclration tangentielle v) puis en rotation (an
dobtenir une expression de lacclration angulaire ).
Acclration tangentielle v : Le vent exerce sur la voile une force orthogonale celle-ci et dintensit gale
f
v
=
v
(V cos ( +
v
) v sin
v
) .
Quant leau, elle exerce sur le gouvernail une force gale
f
g
=
g
v sin
g
,
orthogonale celui-ci. La force de frottement quelle exerce sur le bateau est suppose visqueuse, cest--dire
dintensit proportionnelle la vitesse. Lquation fondamentale de la dynamique, projete suivant laxe du bateau
donne
m v = sin
v
f
v
sin
g
f
g

f
v.
Lacclration radiale peut tre considre comme nulle si nous supposons que la drive est parfaite.
Lacclration angulaire : Parmi les forces qui agissent sur la rotation du bateau, on trouve les forces f
v
et f
g
exerces par la voile et le gouvernail, mais aussi une force de frottement angulaire que nous supposons visqueuse.
Lquation fondamentale de la dynamique nous donne
J = d
v
f
v
d
g
f
g

,
o
_
d
v
= r
v
cos
v
d
g
= r
g
cos
g
.
Les quations dtat du bateau scrivent donc
Modlisation des systmes 31
_

_
x = v cos , (i)
y = v sin V, (ii)

= , (iii)

v
= u
1
, (iv)

g
= u
2
, (v)
v =
f
v
sin
v
f
g
sin
g

f
v
m
, (vi)
=
(rv cos v)fvrg cos gfg

J
, (vii)
f
v
=
v
(V cos ( +
v
) v sin
v
) , (viii)
f
g
=
g
v sin
g
. (ix)
(2.7)
Notons que les deux dernires quations ne sont pas direntielles mais algbriques. An de coller compltement
avec une quation dtat comme dnie par lquation (1.1) de la page 13, il conviendrait de faire disparatre ces
deux quations ainsi que les deux forces internes f
v
et f
g
apparaissant dans les quations (vi) et (vii). Nous allons
toutefois les garder an de conserver des quations relativement simples et de pouvoir visualiser ces forces lors de
nos simulations. Nous reviendrons plus tard cet exemple du bateau voile pour sa rgulation.
2.5 Systmes hydrauliques
2.5.1 Rappel sur la relation de Bernouilli
On considre 2 bacs disposs comme sur la gure.
Systme hydraulique form de deux bacs remplis deau relis par un canal
Dans le bac de gauche, leau scoule sans frottement en direction du bac de droite. Dans le bac de gauche, leau
scoule de faon uide, contrairement au bac de droite, o des turbulences existent. Ce sont ces turbulences qui
absorbent lnergie cintique de leau et la transforme en chaleur. Sans ces turbulences, nous aurions un ternel
mouvement de va et vient de leau entre les deux bacs. Dans le but dappliquer la relation de Bernouilli dans le
bac de gauche, considrons un tube de courant, cest dire, une tube virtuel (voir gure) lintrieur duquel leau
possde un mouvement uide et ne traverse pas les parois. La relation de Bernouilli nous dit que dans ce tube, en
32 Commande par espace dtat
tout point,
P +
v
2
2
+gz = constante,
o P est la pression au point considr, z son altitude, v la vitesse de leau en ce point. Le coecient est la
masse volumique de leau et g est la constante de gravitation. Daprs la relation de Bernouilli, nous avons
P
D
+
v
2
D
2
+gz
D
= P
A
+
v
2
A
2
+gz
A
,
cest--dire
P
D
= P
A
+g (z
A
z
D
)
v
2
D
2
. (2.8)
De plus, nous pouvons supposer que C est loin de la zone de turbulence et que leau ne bouge pas. Ainsi, nous
avons, daprs Bernouilli
P
C
+gz
C
= P
B
+gz
B
,
cest--dire
P
C
= P
B
+g (z
B
z
C
) . (2.9)
Or, dans cette zone de turbulence, leau se trouve ralentie, mais nous pouvons supposer que la pression de varie
pas, cest--dire, P
C
= P
D
. Ainsi, daprs (2.8) et (2.9), nous avons
P
B
+g (z
B
z
C
) = P
A
+g (z
A
z
D
)
v
2
D
2
.
Comme P
A
= P
B
= P
atm
, et que z
C
= z
D
, cette quation se traduit par
g (z
A
z
B
) =
v
2
D
2
,
ou encore
v
D
=
_
2g (z
A
z
B
).
Dans le cas ou le niveau du bac droit est suprieur celui du bac gauche, une tude similaire nous donne
v
D
=
_
2g (z
B
z
A
).
Le signe moins de lexpression indique que le courant circule maintenant du bac droit vers le bac gauche. Donc,
la relation gnrale pour la vitesse de leau dans le canal est
v
D
= sign(z
A
z
B
)
_
2g[z
A
z
B
[.
Si a est la section du canal, le dbit deau du bac droit vers le bac gauche est
Q
D
= a.sign(z
A
z
B
)
_
2g[z
A
z
B
[. (2.10)
2.5.2 Ecoulement dans trois bacs
Considrons maintenant le systme comprenant trois bacs et reprsent sur la gure.
Modlisation des systmes 33
Systme constitu de trois bacs contenant de leau et relis par deux canaux
Leau des bacs 1 et 3 peut se dverser vers le bac 2, mais aussi vers lextrieur se trouvant pression atmosphrique.
Les dbits associs sont, daprs la relation (2.10), donns par
Q
1ext
= a.

2gh
1
,
Q
3ext
= a.

2gh
3
.
De mme le dbit dun bac i vers un bac j est donn par
Q
ij
= a.sign(h
i
h
j
)
_
2g[h
i
h
j
[.
Les variables dtat de ce systme qui peuvent tre considres sont les hauteurs dans les bacs. Pour simplier,
nous supposerons que la surface des bacs sont toutes gales 1 m
2
, ainsi, le volume deau dans un bac se confond
avec la hauteur. Les quations dtat sont obtenues en crivant que la variation du volume deau dans un bac est
gale la somme des dbits entrants moins la somme des dbits sortants, cest--dire,

h
1
= Q
1ext
Q
12
+u
1
,

h
2
= Q
12
Q
23
,

h
3
= Q
3ext
+Q
23
+u
2
,
ou encore

h
1
= a.

2gh
1
a.sign(h
1
h
2
)
_
2g[h
1
h
2
[ +u
1

h
2
= a.sign(h
1
h
2
)
_
2g[h
1
h
2
[ a.sign(h
2
h
3
)
_
2g[h
2
h
3
[

h
3
= a.

2gh
3
+a.sign(h
2
h
3
)
_
2g[h
2
h
3
[ +u
2
.
Nous reprendrons cet exemple pour eectuer sa rgulation au paragraphe 7.4 page 112.
2.5.3 Modlisation dun vrin
On considre le vrin pneumatique avec ressort de rappel reprsent sur la gure. Un tel vrin est souvent quali
de simple eet car lair sous pression nexiste que dans une des deux chambres.
34 Commande par espace dtat
Vrin simple eet
Ce type de vrin est dusage courant en robotique pour bouger les lments mcaniques. Les paramtres de ce
systme sont la raideur du ressort k, la surface du piston a et la masse m en bout de piston (les masses de tous
les autres objets sont ngliges). On suppose que tout se passe temprature constante T
0
. Nous prendrons pour
vecteur dtat x = (z, z, p) o z est la position du vrin, z sa vitesse et p la pression dans la chambre. Pour
simplier, nous supposerons que le vide rgne dans la chambre du ressort et que lorsque pour z = 0 (le vrin est
en bute gauche) le ressort se trouve en position dquilibre. Lentre du systme est le dbit volumique u dair
vers la chambre du vrin. Nous avons donc
u =
_
V
n
_
n, (2.11)
o n est le nombre de moles de gaz dans la chambre et V est le volume de la chambre. Pour bien comprendre la
relation (2.11), il sut de considrer le petit volume dair V qui sapprte entrer dans la chambre entre linstant
t et t +t. la loi des gaz parfait applique au petit volume et la chambre, tous les deux la mme pression, nous
donne
p.V = n.R.T
0
et p.V = n.R.T
0
.
Do
n
V
=
n
V
, cest--dire V =
V
n
n. Donc
u
V
t
=
_
V
n
_
n
t
=
_
V
n
_
n,
qui se trouve tre la relation (2.11). Attention, ici, nous avons approxim
n
t
par n car n correspond bien un
accroissement de n. En revanche, nous naurions pas pu crire

V =
V
t
car V ne correspond pas ncessairement
un accroissement du volume V . On peut par exemple concevoir un V positif alors que le volume V diminue. Le
principe fondamental de la dynamique nous donne pa kz = m z. Donc, les deux premires quations dtat sont
_
z = z,
z =
apkz
m
.
La loi des gaz parfaits (pV = nRT) est donne par pza = nRT. En direnciant, on obtient
a( pz +p z) = R
_
nT +n

T
_
.
En supposant lvolution isotherme, cette relation se traduit par
a( pz +p z) = R nT
(2.11)
= R
nu
V
T = pu.
En isolant p, on obtient la troisime quation dtat pour notre systme, savoir
p =
p
z
_
u
a
z
_
.
Modlisation des systmes 35
Les quations dtat du systme sont donc
_

_
z = z
z =
apkz
m
p =
p
z
_
u
a
z
_
ou bien, puisque x = (z, z, p) ,
_

_
x
1
= x
2
x
2
=
ax
3
kx
1
m
x
3
=
x
3
x
1
_
x
2

u
a
_
.
2.6 Systme lectrique
2.6.1 Circuit RLC
Le systme de la gure ci-dessous a pour entre la tension u(t) et pour sortie la tension y(t). Cherchons modliser
ce systme.
Circuit lectrique modliser
Equations direntielles qui rgissent le systme
Soit i
1
le courant lectrique dans la rsistance R
1
(de haut en bas). Daprs les lois des mailles et des nuds, on a
_

_
u(t) v(t) R
1
i
1
(t) = 0 (loi des mailles)
L
di
dt
+R
2
i(t) R
1
i
1
(t) = 0 (loi des mailles)
i(t) +i
1
(t) C
dv
dt
= 0 (loi des nuds).
Equations dtat pour ce systme
Intuitivement on peut comprendre que la mmoire du systme correspond la charge du condensateur et au
ux lectomagntique dans la bobine. En eet, si ces quantits sont connues linstant t = 0, pour une entre
connue, le futur du systme est dtermin de faon unique. Ainsi des variables dtat possibles sont donnes par
les quantits i(t) (proportionnelle au ux) et v(t) (proportionnelle la charge). On obtient les quations dtat en
cherchant se dbarrasser de i
1
dans les quations prcdentes et en isolant
di
dt
et
dv
dt
. Bien sr, une quation doit
disparatre. On obtient
_
dv
dt
=
1
CR
1
v(t) +
1
C
i(t) +
1
CR
1
u(t)
di
dt
=
1
L
v(t)
R
2
L
i(t) +
1
L
u(t).
36 Commande par espace dtat
Or, la sortie est donne par y(t) = R
2
i(t). Finalement, nous arrivons la reprsentation dtat dun systme
linaire donne par
d
dt
_
v(t)
i(t)
_
=
_

1
CR
1
1
C

1
L

R
2
L
_ _
v(t)
i(t)
_
+
_
1
CR
1
1
L
_
u(t)
y(t) =
_
0 R
2
_
_
v(t)
i(t)
_
.
2.6.2 Moteur courant continu
Un moteur courant continu peut tre dcrit par la gure suivante, o u est la tension dalimentation du moteur,
i est le courant absorb par le moteur, R est la rsistance de linduit, L est linductance de linduit, e est la force
lectromotrice, est le coecient de frottement dans le moteur, est la vitesse angulaire du moteur et T
r
est le
couple exerc par le moteur sur la charge.
Moteur courant continu
Les quations qui rgissent le systme sont donnes par
u = Ri +L
di
dt
+e (partie lectrique)
J = T T
r
(partie mcanique).
Or les quations dune machine courant continu sont e = K et T = Ki. Donc
u = Ri +L
di
dt
+K
J = Ki T
r
.
Dans le cas dun moteur excitation indpendante, ou aimants permanents, est constant. On alors les quations
dtat linaires suivantes
_
di
dt
=
R
L
i
K
L
+
u
L
=
K
J
i

J

Tr
J
o les entres sont u et T
r
et les variables dtat sont i et . Ces quations peuvent scrire sous forme matricielle
d
dt
_
i

_
=
_

R
L

K
L
K
J

J
__
i

_
+
_
1
L
0
0
1
J
__
u
T
r
_
.
Dans le cas dun moteur excitation srie, le ux est proportionnel i, cest--dire = ki. On obtient les
quations dtat suivantes
_
di
dt
=
R
L
i
Kk
L
i +
u
L
=
Kk
J
i
2


J

Tr
J
Modlisation des systmes 37
qui sont devenues non-linaires. De tels moteurs sont utiliss lorsque lon souhaite un fort couple au dmarrage,
comme par exemple pour dmarrer les moteurs explosion.
Lorsque le moteur fonctionne, le couple T
r
devient impos. La table suivante donne quelques caractristiques
mcaniques, en rgime permanent, du couple (T
r
, ).
T
r
= C
te
moteur utilis pour le levage
T
r
= locomotive, mixeur, pompe
T
r
=

machine outil (tour, fraiseuse)


T
r
=
2
ventilateur, voiture rapide.
En fonctionnement, un moteur est donc un systme qui ne possde plus quune seule entre qui est la tension
dinduit u(t).
2.7 Systme de Fibonacci
Bien que dans ce cours, nous ayons dcid de nous limiter aux systmes temps continu, nous allons, dans ce
paragraphe, modliser un exemple de systme temps discret. Ceci permettra dillustrer que la mthodologie
utilise pour les systmes temps continus peut stendre aisment au cas discret.
Il sagit dtudier lvolution du nombre y(k) de couples de lapins dans un levage en fonction de lanne k. Lanne
0, il y a un seulement un couple de lapins nouveau-ns dans llevage (donc y(0) = 1). Les lapins ne deviennent
fertiles que un an aprs leur naissance. Donc lanne 1, il y a toujours un seul couple de lapins, mais ce couple
est fertile (donc y(1) = 1). Un couple fertile donne naissance chaque anne un autre couple de lapins. Donc
lanne 2, il y a un couple de lapin fertile et un couple de nouveaux-ns. Cette volution peut tre dcrite par le
tableau suivante, o N signie nouveau n et A signie adulte.
k = 0 k = 1 k = 2 k = 3 k = 4
N A A A A
N A A
N A
N
N
Appelons x
1
(k) le nombre de couples nouveaux-ns, x
2
(k) le nombre de couples fertiles et y(k) le nombre total de
couples. Les quations dtat sont donnes par
_

_
x
1
(k + 1) = x
2
(k)
x
2
(k + 1) = x
1
(k) +x
2
(k)
y(k) = x
1
(k) +x
2
(k),
avec x
1
(0) = 1 et x
2
(0) = 0 pour conditions initiales. Ce systme est appel systme de Fibonacci. Cherchons
maintenant trouver la relation de rcurrence associe ce systme. Il nous faut pour cela exprimer y(k), y(k+1) et
38 Commande par espace dtat
y(k + 2) en fonction de x
1
(k) et x
2
(k). Le calcul rsultant est le suivant
y(k) = x
1
(k) +x
2
(k),
y(k + 1) = x
1
(k + 1) +x
2
(k + 1) = x
1
(k) + 2x
2
(k)
y(k + 2) = x
1
(k + 2) +x
2
(k + 2) = x
1
(k + 1) + 2x
2
(k + 1)
= 2x
1
(k) + 3x
2
(k)
Cest--dire
_
_
_
y(k)
y(k + 1)
y(k + 2)
_
_
_ =
_
_
_
1 1
1 2
2 3
_
_
_
_
x
1
(k)
x
2
(k)
_
.
En liminant x
1
(k) et x
2
(k) de ce systme de trois dquations linaires, on obtient plus quune seule quation
donne par
y(k + 2) y(k + 1) y(k) = 0.
Les conditions initiales sont y(0) = y(1) = 1. Cest gnralement sous cette forme quest dcrit le systme de
Fibonacci.
Chapitre 3
Simulation
3.1 Introduction
Dans ce chapitre, nous allons montrer comment eectuer une simulation sur ordinateur dun systme non linaire
dcrit par ses quations dtat
_
x(t) = f (x(t), u(t)),
y(t) = g(x(t), u(t)).
Cette tape est importante pour tester le comportement dun systme (rgul ou non). De plus, les techniques que
nous prsenterons aux chapitres 5 et 6 nous permettront dobtenir des quations dtat pour les rgulateurs que
nous concevrons. Lordinateur pourra nous tre utile pour raliser nos rgulateurs et devra pour cela simuler ces
derniers.
Avant de prsenter la mthode de simulation, nous introduirons dans les paragraphes 3.2 et 3.3 la notion de
champ de vecteur. Cette notion nous permettra de mieux comprendre la mthode de simulation qui sera prsente
au paragraphe 3.5 ainsi que certains comportements pouvant apparatre dans les systmes non linaires. Au
paragraphe 3.4, nous donnerons quelques notions de graphisme ncessaires la reprsentation graphique de nos
systmes. Lintrt de linteractivit dans les programmes de simulation ainsi que la faon de limplmenter seront
prsents au paragraphe 3.6.
3.2 Notion de champ de vecteur
Dans ce paragraphe, nous allons prsenter la notion de champ de vecteur et montrer en quoi elle est utile pour
mieux comprendre les dirents comportements des systmes. Nous invitons le lecteur consulter louvrage de
Lamnabhi-Lagarrigue [10] pour plus dtails ce sujet.
Nous appellerons champ de vecteur une fonction continue f de R
n
vers R
n
. Lorsque n = 2, une reprsentation
graphique de la fonction f peut tre imagine. Nous allons maintenant traiter deux exemples an dillustrer la
notion de champ de vecteur. Le premier traite le cas dune fonction linaire et nous permettra de donner une
interprtation graphique de la notion de vecteur propre. Pour le deuxime exemple, la fonction f reprsente le
gradient dune fonction valeur dans R.
39
40 Commande par espace dtat
Programme ChampLineaire.sce
1 a=0.5
2 x1=-2 :a :2 ; x2=-2 :a :2 ;
3 deff(z=f1(u,v),z=u+v) ;
4 deff(z=f2(u,v),z=u-v) ;
5 y1=feval(x1,x2,f1) ; y2=feval(x1,x2,f2) ;
6 champ(x1,x2,y1,y2) ;
Tableau 3.1: Programme pour tracer un champ de vecteur
3.2.1 Exemple dune fonction linaire
Considrons la fonction
f :
R
2
R
2
_
x
1
x
2
_

_
x
1
+x
2
x
1
x
2
_
.
Une illustration graphique de cette fonction est donne par la gure ci-dessous. Pour obtenir cette gure, nous
avons pris un ensemble de vecteurs de lensemble de dpart, suivant un maillage. Puis, pour chacun des vecteurs
du maillage x, nous avons dessin son vecteur image f (x) en lui donnant pour origine le vecteur x.
Champ de vecteur associ une application linaire
Le programme Scii.i qui nous a permis de faire ce dessin est donn par le tableau 3.1. Au pas 2, on dnit le
maillage pour x
1
et x
2
, a reprsente la prcision du maillage. Aux pas 3 et 4, on dnit les fonctions coordonnes
f
1
(u, v) = u + v et f
2
(u, v) = u v de notre fonction f . Ici, u et v sont des variables muettes. Le pas 5 eectue
lvaluation de f sur tout le maillage. Enn le pas 6 trace le champ de vecteur.
Essayons maintenant dinterprter le champ de vecteurs reprsent sur la gure. La matrice de notre application
linaire est donne par
A =
_
1 1
1 1
_
.
Simulation 41
Ses valeurs propres sont

2 et

2 et les vecteurs propres associs sont


v
1
=
_
0.9239
0.3827
_
et v
2
=
_
0.3827
0.9239
_
.
Pour obtenir ce rsultat sous Scii.i, il faut dabord saisir la matrice en faisant A=[1 1 ;1 -1]. Puis on excute
linstruction [D,V]=bdiag(A). La matrice D contient la matrice diagonale (et donc les valeurs propres de A) alors
que V est la matrice de passage dont les colonnes sont les vecteurs propres. Notons que le vecteur x reprsent
sur la gure nest pas un vecteur propre car x et f (x) ne sont pas colinaires. En revanche, tous les vecteurs
appartenant aux sous-espaces propres (reprsents en pointill sur la gure) sont des vecteurs propres. Le long du
sous-espace propre associ la valeur propre ngative, les vecteurs du champ tendent pointer vers 0 alors que
ces vecteurs pointent vers linni le long du sous-espace propre associ la valeur propre positive.
3.2.2 Exemple dune fonction de type gradient
Considrons la fonction
f :
R
2
R
_
x
1
x
2
_
x
1
exp
_
x
2
1
x
2
2
_
.
Son gradient est donn par
_
f
x
1
f
x
2
_
=
_
(1 2x
2
1
) exp(x
2
1
x
2
2
)
2x
1
x
2
exp(x
2
1
x
2
2
)
_
.
Le champ de vecteur associ est donn par la gure ci-dessous. Notons que le gradient sannule en deux points,
reprsents par les petits disques noirs de la gure. Celui de droite correspond au maximum de la fonction f (le
maximum se trouve l o convergent les ches) alors que celui de gauche correspond au minimum (l o les
ches divergent). Notons que si nous simulons le systme
_
x
1
x
2
_
=
_
(1 2x
2
1
) exp(x
2
1
x
2
2
)
2x
1
x
2
exp(x
2
1
x
2
2
)
_
,
nous avons une forte chance de converger vers le maximum de la fonction f. Simuler le systme x =

grad f(x),
dans le but de trouver le maximum de f correspond la mthode du gradient.
42 Commande par espace dtat
Champ de vecteur associ au gradient une fonction scalaire f, reprsent dans le plan (x
1
, x
2
)
3.3 Champ de vecteur associ un systme
Considrons un systme autonome (cest--dire sans entre) dont lvolution est donne par lquation x(t) =
f (x(t)). Lorsque f est une fonction de R
2
vers R
2
, nous pouvons obtenir une reprsentation graphique de f en
traant le champ de vecteur associ f . Le graphique nous permettra alors de mieux comprendre le comportement
de notre systme. A titre dillustration nous allons considrer deux exemples : le systme proies-prdateurs et le
pendule simple.
3.3.1 Systme proies-prdateurs
Le systme proies-prdateurs aussi appel systme de Lotka-Volterra est donn par
_
x
1
(t) = (1 x
2
(t)) x
1
(t)
x
2
(t) = (1 +x
1
(t)) x
2
(t)
,
o = 0.01 et = 0.02. Les variables dtat x
1
(t) et x
2
(t) reprsentent la taille des populations des proies et
des prdateurs. Le terme quadratique reprsente des interactions entre les deux espces. Notons que la population
des proies augmente de faon exponentielle lorsque quil ny a pas de prdateur. De mme, la population des
prdateurs dcrot lorsquil ny a pas de proie. Pour tracer le champ de vecteur associ la fonction dvolution
f (x) =
_
(1 x
2
(t)) x
1
(t)
(1 +x
1
(t)) x
2
(t)
_
,
sur le pav [0, 100] [0, 200], on tape le programme du tableau 3.2 et on obtient la gure ci-dessous. Cette gure
illustre le comportement du systme. En eet, lvolution du vecteur dtat du systme se fait dans le sens des
ches (car x = f (x)). Ainsi, nous pouvons comprendre que lvolution de systme est priodique et que ltat
parcourt une courbe quasi-circulaire (dont le centre est (50, 100)) dans le sens direct trigonomtrique. Le point
(50, 100) semble tre un point dquilibre pour notre systme. Vrions-le par calcul. Les points dquilibre se
Simulation 43
Programme ChampVolterra.sce
a=10 ; x1=0 :a :100 ; x2=0 :a :200 ;
deff(z=f1(u,v),z=(1-0.01*v)*u) ;
deff(z=f2(u,v),z=(-1+0.02*u)*v) ;
y1=feval(x1,x2,f1) ; y2=feval(x1,x2,f2) ;
champ(x1,x2,y1,y2) ;
Tableau 3.2: Programme Scilab pour tracer le champ de vecteur associ au systme proies-prdateurs
trouvent l o le champ de vecteur sannule. Il y en a deux, reprsents par les petits disques noirs sur la gure.
Ils satisfont lquation f (x) = 0, cest--dire
_
(1 x
2
) x
1
= 0,
(1 + x
1
) x
2
= 0.
Le premier point dquilibre est
_
x
1
x
2
_
=
_
0
0
_
qui correspond une situation o aucune des deux espces nexiste. Le deuxime est donn par
_
x
1
x
2
_
=
_
1

_
=
_
50
100
_
,
qui correspond une situation dquilibre cologique.
Champ de vecteur associ au systme de Lotka-Volterra, dans le plan (x
1
, x
2
)
La notion de point dquilibre sera revue de faon plus approfondie dans le paragraphe 6.2 de la page 87.
3.3.2 Pendule simple
Considrons le pendule simple modlis au chapitre prcdent au paragraphe 2.3.4 page 21. On suppose ici que
le couple dentre est nul. Avec Scii.i, traons le champ de vecteur associ la fonction dvolution f (x), pour
44 Commande par espace dtat
Programme ChampPendule.sce
a=0.4 ; x1=-7 :a :7 ; x2=-4 :a :4 ;
L=2 ;g=9.81 ;m=1 ;
deff(y1=f1(x1,x2),y1=x2) ;
deff(y2=f2(x1,x2),y2=-g*sin(x1)) ;
y1=feval(x1,x2,f1) ; y2=feval(x1,x2,f2) ;
champ(x1,x2,y1,y2) ;
Tableau 3.3: Programme pour tracer le champ de vecteur associ au pendule
u = 0, m = 1, g = 9.81 et L = 1. Le programme ChampPendule.sce, qui eectue cette tche, est donn sur le
tableau 3.3.
Ce programme gnre la gure ci-dessous.
Champ de vecteur associ au pendule simple dans le plan (,

)
Les petits disques noirs reprsentent les points dquilibre. Le premier, le troisime et le dernier correspondent la
situation o le pendule est en bas, en quilibre stable. Le deuxime et le quatrime correspondent la situation o
le pendule est en haut, en quilibre instable. Autour dun point dquilibre stable, le vecteur dtat tend tourner
autour de ce point, formant ainsi un cycle. Si on initialise le pendule en haut de la gure (par exemple en (7, 3)),
ce qui correspond une situation o

est lev, la variable tendra crotre indniment. Cela correspond
une situation o le pendule tourne toujours dans le sens direct trigonomtrique autour de son axe et sans jamais
sarrter.
3.4 Reprsentation graphique des systmes
Dans ce paragraphe, nous donnons quelques notions ncessaires la reprsentation graphique des systmes lors
des simulations.
Simulation 45
3.4.1 Motif
Un motif est une matrice deux ou trois lignes (suivant que lobjet est dans le plan ou lespace) et n colonnes
qui reprsentent les n sommets dun polygone indformable, cens reprsenter lobjet. Il est important que lunion
de tous les segments forms par deux points conscutifs du motif forme toutes les artes du polygone que lon
souhaite reprsenter.
Exemple 3.4.1 Le motif M du chssis (voir gure ci-dessous) de la voiture (avec les roues arrires) est donn
par
_
1 4 5 5 4 1 1 0 0 1
2 2 1 1 2 2 2 2 3 3
1 0 0 1 1 0 0 3 3 3
3 3 3 3 3 3 2 2 3 3
_
(3.1)
Il est clair que sur le dessin de la voiture en mouvement, les roues avant peuvent bouger par rapport au chssis,
mais aussi lune par rapport lautre. Elles ne peuvent donc tre incorpores au motif du chssis. Pour le dessin
de la voiture, nous devrons donc utiliser 3 motifs : celui du chssis, celui de la roue avant gauche et celui de la
roue avant droit. Sous Scii.i, le motif M (ici en deux dimensions) peut tre dessin par linstruction
xpoly(M(1, :),M(2, :)).
Sous Scii.i, M(i, :) renvoie la i ime ligne de la matrice M.
Dessin de la voiture que nous cherchons simuler
Exemple 3.4.2 Le motif
M =
_
_
_
0 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1
0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 0
0 0 1 1 0 0 0 1 1 0 1 1 1 1 0 0
_
_
_ (3.2)
est associ au cube unit [0, 1]
3
de R
3
. Notons que ce motif dispose de 16 colonnes, alors quon aurait pu sattendre
13 colonnes (en eet, le cube possde 12 artes). Cela vient du fait que pour dessiner dans lespace toutes les
artes dun cube, sans lever le stylo, nous devons ncessairement passer par un minimum de 16 sommets du cube.
Il est parfois utile de concevoir un modeleur an de faciliter llaboration de nos motifs. Voici un exemple simple
de modeleur
M=[ ] ;isoview(-10,10,-10,10) ;
for k=1 :10,
M=[M,round(locate(1))] ;
xpoly(M(1, :),M(2, :)) ;
endfunction
46 Commande par espace dtat
La fonction locate(1) retourne les coordonnes du point de la fentre graphique cliqu la souris. Aprs 10 clics,
la programme sarrte. La matrice M contient alors les coordonnes des 10 points cliqus.
3.4.2 Matrice de rotation
Rappelons que la jime colonne de la matrice dune application linaire de R
n
R
n
reprsente limage du jime
vecteur e
j
de la base canonique. Ainsi, lexpression dune matrice de rotation dangle dans le plan R
2
est bien
videmment donne (voir gure ci-dessous) par
R =
_
cos sin
sin cos
_
. (3.3)
En ce qui concerne les rotations dans lespace R
3
, il est important de prciser laxe de rotation. Nous pouvons
distinguer 3 rotations principales : la rotation dangle autour de laxe Ox, celle autour de Oy et celle autour de
Oz. Les matrices associes sont respectivement donnes par
Rotation dangle
R
x
=
_
_
_
1 0 0
0 cos sin
0 sin cos
_
_
_, R
y
=
_
_
_
cos 0 sin
0 1 0
sin 0 cos
_
_
_ et R
z
=
_
_
_
cos sin 0
sin cos 0
0 0 1
_
_
_. (3.4)
3.4.3 Coordonnes homognes
Le dessin dobjets bidimensionnels ou tridimensionnels sur un cran ncessite une suite de transformations anes
(rotations, translations, homothties) de la forme
f
i
:
R
n
R
n
x A
i
x +b
i
avec n = 2 ou 3. Or, la manipulation de compositions de fonctions anes est moins aise que celle dapplications
linaires. Lide la transformation en coordonnes homognes est de transformer un systme dquations anes
en systme dquations linaires. Remarquons tout dabord quune quation ane du type y = Ax +b peut se
rcrire
_
y
1
_
=
_
A b
0 1
__
x
1
_
.
Simulation 47
Nous dnirons donc la transformation homogne dun vecteur comme suit
x x
h
=
_
x
1
_
.
Ainsi, une quation du type
y = A
3
(A
2
(A
1
x +b
1
) +b
2
) +b
3
,
o intervient la composition de 3 transformations anes pourra se rcrire
y
h
=
_
A
3
b
3
0 1
__
A
2
b
2
0 1
__
A
1
b
1
0 1
_
x
h
.
En nous aidant des matrices de la formule (3.4), nous pouvons crire une fonction Scii.i pour gnrer une matrice
homogne de rotation de R
3
autour du iime axe de la base canonique.
function R=Rot(a,i)
R=eye(4,4) ;
J=modulo([i,i+1],3)+[1,1] ;
R(J,J)=[cos(a) -sin(a) ;sin(a) cos(a)] ;
endfunction
La fonction eye gnre une matrice identit de dimension 4 4. La fonction modulo(a,b) renvoie le reste de la
division euclidienne de a par b (puisque ici a est un vecteur, ce calcul se fait composante par composante). Le
vecteur J correspond aux indices de la matrice modier. Par exemple, si i = 1, alors J= [2, 3], si i = 2, alors
J= [3, 1], et si i = 3, alors J= [1, 2].
Une fonction pour gnrer une matrice homogne de translation dun vecteur v dans R
3
est donne ci-dessous
function T=Trans(v)
T=eye(4,4) ;
T(1 :3,4)=v ;
endfunction
3.4.4 Dessin de la voiture
Pour dessiner le chssis de la voiture, il nous faut tout dabord prendre le motif de la voiture (voir quation (3.1))
et le rendre homogne, en lui rajoutant une ligne de 1. Le motif M ainsi obtenu est donn par
_
_
_
1 4 5 5 4 1 1 0 0 1
2 2 1 1 2 2 2 2 3 3
1 1 1 1 1 1 1 1 1 1
1 0 0 1 1 0 0 3 3 3
3 3 3 3 3 3 2 2 3 3
1 1 1 1 1 1 1 1 1 1
_
_
_
Ensuite, il nous faut lui faire subir une rotation dangle et une translation de vecteur (x, y). Pour il sut de
multiplier M gauche par la matrice
R =
_
_
_
cos sin x
sin cos y
0 0 1
_
_
_.
48 Commande par espace dtat
1 function draw_voiture(x)
2 M=[-1,4,5,5,4,-1,-1,-1,0,0,-1,
3 1,0,0,-1,1,0,0,3,3,3 ;
4 -2,-2,-1,1,2,2,-2,-2,-2,-3,-3,
5 -3,-3,3,3,3,3,2,2,3,-3 ;
6 ones(1 :21)] ;
7 Rav=[-1 1 ;0 0 ;1 1] ;
8 R=[cos(x(3)),-sin(x(3)),x(1) ;
9 sin(x(3)),cos(x(3)),x(2) ;0,0,1] ;
10 M=R*M ;
11 Ravd=R*[cos(x(5)),-sin(x(5)),3 ;
12 sin(x(5)),cos(x(5)),3 ;0 0 1]*Rav ;
13 Ravg=R*[cos(x(5)),-sin(x(5)) 3 ;
14 sin(x(5)),cos(x(5)) -3 ;0 0 1]*Rav ;
15 xbasc() ;xset(thickness,2) ;
16 isoview(-20,40,-10,30) ;
17 xpoly(M(1, :),M(2, :)) ;
18 xpoly(Ravd(1, :),Ravd(2, :)) ;
19 xpoly(Ravg(1, :),Ravg(2, :)) ;
20 endfunction ;
Tableau 3.4: Fonction de dessin dune voiture
Pour dessiner la roue avant gauche, on dnit son motif (en coordonnes homognes)
M =
_
_
_
1 1
0 0
1 1
_
_
_.
On lui aecte une rotation dangle suivie dune translation de (3, 3), puis nouveau une rotation de suivi
dune translation de (x, y). La matrice de transformation rsultante est
_
_
_
cos sin x
sin cos y
0 0 1
_
_
_
_
_
_
cos sin 3
sin cos 3
0 0 1
_
_
_.
Une matrice similaire peut tre obtenue pour la roue avant droite. Sur ces principes, une fonction Scii.i qui
dessine la voiture dans un tat donn peut tre conue. La fonction draw_voiture du tableau 3.4 en donne un
exemple. Les lignes 2 6 dnissent le motif du chssis de la voiture et des roues arrires. La ligne 7 dnit le
motif dune roue avant.
Simulation 49
3.4.5 Dessin dun bras manipulateur
Robot manipulateur trois degrs de libert
Le robot manipulateur reprsent sur la gure est compos de trois bras en srie. Le premier, de longueur 3, peut
pivoter en lorigine autour de laxe Oz. Le second, de longueur 2, plac au bout du premier peut lui aussi pivoter
autour de laxe Oz. Quant au troisime, de longueur 1, plac au bout du second, il peut pivoter autour de laxe
form par le second bras. Ce robot admet 3 degrs de libert x = (
1
,
2
,
3
), o les
i
reprsentent les angles
forms par chacun des bras. Le motif de base choisi pour la reprsentation de chacun des bras est le cube unit.
Chacun des bras est suppos tre un paralllpipde dpaisseur 0.3. An de prendre la forme du bras, le motif
doit subir une anit, reprsente par une matrice diagonale. Ensuite, il doit subir une suite de rotations et de
translations an de le positionner correctement.
Le tableau 3.5 reprsente la suite des transformations faire subir au motif an de reprsenter chaque bras.
Comme indiqu sur ce tableau, le bras 2 doit subir, au nal, toutes les transformations faites au bras 1 et le bras
3 doit subir toutes celles faites au bras 2. Le tableau 3.6 donne le programme Scii.i qui simule un dplacement
de ce bras.
Bras 1 Bras 2 Bras 3
Diag(3, 0.3, 0.3) Diag(2, 0.3, 0.3) Diag(1, 0.3, 0.3)
Rot
z
(
1
) Rot
z
(
2
) Rot
x
(
3
)
Rot
x
(0.5) Trans(3, 0, 0) Trans(2, 0, 0)
Rot
z
(
1
) Rot
z
(
2
)
Rot
x
(0.5) Trans(3, 0, 0)
Rot
z
(
1
)
Rot
x
(0.5)
Tableau 3.5: Tableau des transformations eectuer pour chacun des bras
50 Commande par espace dtat
Programme BrasManipulateur.sce
function draw(x)
M=[0 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 ;
0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 0 ;
0 0 1 1 0 0 0 1 1 0 1 1 1 1 0 0 ;
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1] ;
M=[1 0 0 0 ;0 1 0 -0.5 ; 0 0 1 -0.5 ;0 0 0 1]*M ;
M1=diag([3,0.3,0.3,1])*M ; R1=Rot(0.5,1)*Rot(x(1),3) ;
M2=diag([2,0.3,0.3,1])*M ; R2=Rot(x(2),3) ;
M3=diag([1,0.3,0.3,1])*M ; R3=Rot(x(3),1) ;
T2=Trans([3 ;0 ;0]) ; T3=Trans([2 ;0 ;0]) ;
M1=R1*M1 ; M2=R1*T2*R2*M2 ; M3=R1*T2*R2*T3*R3*M3 ;
xbasc() ;xset(thickness,2) ;
isoview(-4,4,-3,3) ;
xpoly(M1(1, :),M1(3, :)) ;
xpoly(M2(1, :),M2(3, :)) ;
xpoly(M3(1, :),M3(3, :))
endfunction ;
x=[0 ;1 ;0] ;w=[3 ;-1 ;7] ; dt=0.001
for k=1 :10000, x=x+dt*w ; draw(x) ;end ;
Tableau 3.6: Programme de simulation dun bras manipulateur
3.5 Simulation
Dans ce paragraphe, nous allons prsenter la mthode dEuler pour eectuer une simulation sur ordinateur dun
systme non linaire dcrit par ses quations dtat
_
x(t) = f (x(t), u(t)),
y(t) = g(x(t), u(t)).
(3.5)
Cette mthode est assez approximative, mais reste simple comprendre et sut pour dcrire les comportements
de la plupart des systmes. Aprs avoir brivement prsent cette mthode, nous traiterons la simulation dun
pendule simple puis dune voiture.
3.5.1 Mthode dEuler
Soit dt, un nombre trs petit devant les constantes de temps du systme et qui correspond la priode dchan-
tillonnage de la mthode (par exemple dt = 0.01). Lquation dvolution de lquation (3.5) sapproxime par
x(t+dt)x(t)
dt
f (x(t), u(t)),
cest--dire
x(t +dt) x(t) +f(x(t), u(t)).dt.
Cette quation peut tre interprte comme une formule de Taylor lordre 1. On en dduit lalgorithme de
simulation (dit mthode dEuler) du tableau 3.7. Lchantillonneur produit une interruption priodique toutes
Simulation 51
Algorithme Liin(in : x
0
)
1 x := x
0
; t := 0; dt = 0.01;
2 rpter
3 saisir u lentre de lordinateur ;
4 y := g(x, u);
5 sortir y;
6 x := x +f(x, u).dt;
7 attendre une interruption de lchantillonneur ;
8 t = t +dt;
9 ternellement.
Tableau 3.7: Algorithme de simulation par la mthode dEuler
les dt secondes. Ainsi, si lordinateur est susamment rapide, la simulation se droule la mme vitesse que
notre systme physique. On parlera alors de simulation temps rel . Dans certaines circonstances, ce qui nous
intresse est dobtenir le rsultat de la simulation le plus rapidement possible (par exemple pour prdire comment
va se comporter un systme dans le futur). Dans ce cas, il nest pas ncessaire de ralentir lordinateur pour le
synchroniser avec notre temps physique.
On appelle erreur locale la quantit
e
t
= [[x(t +dt) x(t +dt)[[ sachant que x(t) = x(t).
o x(t+dt) est la solution exacte de lquation direntielle x = f (x, u) et x(t+dt) est la valeur estime du vecteur
dtat, pour le schma dintgration utilisis. Pour la mthode dEuler, on peut montrer que e
t
est dordre 1, cest-
-dire e
t
= o(dt). Il existe des mthodes dintgration plus ecaces o lerreur locale est dordre 2 o plus. Cest le
cas de la mthode de Runge Kutta lordre 2, qui consiste remplacer la rcurence x(t+dt):= x(t)+f ( x(t), u(t)).dt
par
x(t +dt) = x(t) +dt.
_
1
4
.f ( x(t), u(t) +
3
4
.f
_
x(t) +
2.dt
3
.f ( x(t), u(t)), u(t +
2.dt
3
)
__
.
Lerreur locale e
t
est ici dordre 2 et la mthode dintgration est par consquent beaucoup plus prcise.
3.5.2 Simulation dun pendule
On considre nouveau le pendule de longueur de masse ngligeable et portant une masse m son extrmit
(voir paragraphe 2.3.4 page 21). Rappelons, que, en son axe, on peut exercer un couple u et que sa reprsentation
dtat est donne par
_
x
1
x
2
_
=
_
x
2

sinx
1
+
u
m
2
_
.
Le programme Scii.i PenduleSimpleLibre.sce du tableau 3.8 simule ce pendule par la mthode dEuler. Ce
programme, qui dbute en ligne 8, est compos des fonctions draw_pendule(x), qui dessine le pendule, et de la
fonction dvolution f(x,u). Le pas 8 initialise les constantes et le vecteur initial. La boucle 9-12 lance la mthode
dEuler.
La gure ci-dessous reprsente la trajectoire du pendule dans lespace dtat pour la condition initiale = 1 et

= 0. Sur cet exemple, le pendule, qui ne possde aucun frottement, devrait normalement eectuer un cycle. Or,
52 Commande par espace dtat
Programme PenduleSimpleLibre.sce
1 function draw_pendule(x)
2 xbasc() ;isoview(-4,4,-3,3) ;
3 xpoly([0,L*sin(x(1))],[0 -L*cos(x(1))])
4 endfunction ;
5 function v=f(x,u)
6 v=[x(2) ; -g/L*sin(x(1))+u/(m*L^2)] ;
7 endfunction ;
8 L=2 ;g=9.81 ;m=1 ;u=0 ;dt=0.006 ;x=[1 ;0] ;
9 for k=1 :1500,
10 draw_pendule(x) ;
11 x=x+f(x,u)*dt ;
12 end ;
Tableau 3.8: Simulation dun pendule simple
la mthode dEuler donne chaque pas un peu dnergie au pendule, ce qui explique sa trajectoire qui tend
diverger. Cela vient du fait que le champ, bien que tangent la trajectoire du systme, tend sortir vers lextrieur
celle-ci. Le programme PenduleSimpleTrajectoire.sce, qui nous a permis de dessiner la gure ci-dessous, illustre
ce phnomne. Il apparat clairement que la mthode dEuler ne doit pas tre utilise pour simuler des systmes
conservatifs (comme le systme plantaire), qui nont pas de frottements et tendent eectuer des cycles. En
revanche, pour les systmes dissipatifs (avec frottements), une mthode dEuler savre souvent susante pour
dcrire correctement le comportement du systme. Pour notre pendule, la mthode dEuler tend donner de
lnergie au pendule, qui, aprs une dizaine doscillations, se met eectuer des rvolutions compltes autour de
son axe, dans le sens indirect trigonomtrique.
Trajectoire du pendule dans lespace dtat
Simulation 53
Programme VoitureLibre.sce
1 function v=f(x,u)
2 v=[x(4)*cos(x(5))*cos(x(3)) ;
3 x(4)*cos(x(5))*sin(x(3)) ;
4 x(4)*sin(x(5))/3 ; u(1) ;u(2) ] ;
5 endfunction ;
6 x=[0 ;0 ;0 ;7 ;0] ;u=[0 ;0.2] ;dt=0.02 ;
7 for k=1 :3000,
8 draw_voiture(x) ; x1=x+f(x,u)*dt ; x=x1 ;
9 end ;
Tableau 3.9: Programme de simulation dune voiture
3.5.3 Simulation dune voiture
Considrons nouveau la voiture modlise au paragraphe 2.4.3 de la page 27. Nous allons ici tenter de la simuler
et visualiser graphiquement son mouvement. Rappelons que les quations dtat de cette voiture sont donnes par
_
_
_
_
_
_
_
x
y

_
_
_
_
_
_
_
=
_
_
_
_
_
_
_
v cos cos
v cos sin
v sin
L
u
1
u
2
_
_
_
_
_
_
_
.
A un vecteur dtat donn x = (x, y, , v, )
T
correspond une conguration possible pour la voiture. Le programme
complet de la simulation de la voiture est donn par le tableau 3.9. En plus de la fonction draw_voiture qui dessine
la voiture, il appelle la fonction dvolution du systme. Ltat initial de la voiture est (0 0 0 7 0)
T
, ce qui signie
qu linstant 0, la voiture est centre lorigine, avec un angle nul, sa vitesse est de 7 ms
1
et les roues avant sont
parallles laxe de la voiture. La commande vectorielle u(t) reste constante et gale (0 0.2)
T
. Ce qui signie que
la voiture nacclre pas (car u
1
= 0) et que le volant tourne une vitesse constante de 0.2 rad.s
1
(car u
2
= 0.2).
3.6 Ajout de linteractivit
Au moment de tester le programme de simulation, il est fondamental de pouvoir agir sur le programme de faon
dceler des ractions anormales du systme, comprendre mieux son comportement, dtecter dventuelles er-
reurs de programmation. Dans ce but, nous pouvons autoriser lutilisateur crer des vnements (par exemple en
appuyant sur une touche du clavier, ou en bougeant la souris) qui seront interprtes par le programme grce un
gestionnaire dvnement (eventhandler). Le gestionnaire dvnement tourne en parallle avec le programme prin-
cipal. Il attend quun vnement se produise et sexcute ds que cela arrive. Le programme (VoitureLibre.sce)
list et comment ci-dessous simule une voiture avec gestion dvnement. Ce programme contient trois fonctions
et un programme principal. Lorsque lutilisateur appuie sur une touche, la fonction my_eventhandler sexcute
immdiatement. Cette dernire modie une variable globale (u, sortie ou ech) en permettant ainsi lutilisateur
dagir sur le programme. An de se rapprocher dun comportement temps rel de notre voiture, nous chronom-
trons, laide dun timer qui compte en microsecondes, le temps de calcul dun parcours de la boucle while. La
valeur de ce temps de calcul est alors aecte la variable dt.
54 Commande par espace dtat
//---------------------------------------------
function my_eventhandler(win,x,y,a)
//variable partagees avec le programme principal
global u sortie ech;
xinfo(Volant:w,x; Acceleration:p,l; Zoom:z,Z; Fin:F)
if ascii(a)==l then u=[-500,0]; end //freinage
if ascii(a)==p then u=[ 500,0]; end //acceleration
if ascii(a)==w then u=[0,20]; end //a gauche
if ascii(a)==x then u=[0,-20]; end //a droite
if ascii(a)==z then ech=ech*0.95; end //zoom in
if ascii(a)==Z then ech=ech/0.95; end //zoom out
if ascii(a)==F then sortie=%T; end //fin
endfunction
//---------------------------------------------
function draw_voiture(x)
//Chassis
M=[-1 4 5 5 4 -1 -1 -1 0 0 -1 1 0 0 -1 1 0 0 3 3 3;
-2 -2 -1 1 2 2 -2 -2 -2 -3 -3 -3 -3 3 3 3 3 2 2 3 -3;
ones(1:21)] ;
Rav=[-1 1;0 0;1 1]; //motif dune roue avant
R=[cos(x(3)),-sin(x(3)),x(1);
sin(x(3)), cos(x(3)),x(2);
0 0 1] ;
M=R*M;
Ravd=R*[cos(x(5)),-sin(x(5)) 3;
sin(x(5)),cos(x(5)) 3 ;
0 0 1]*Rav; // roue avant droite
Ravg=R*[cos(x(5)),-sin(x(5)) 3;
sin(x(5)),cos(x(5)) -3;
0 0 1]*Rav; // roue avant gauche
xbasc(); // efface lecran
xset(thickness,2); // regle lepaisseur du stylo//
isoview(-ech,ech,-ech,ech); // regle les echelles
xpoly(M(1,:),M(2,:));
xpoly(Ravd(1,:),Ravd(2,:))
xpoly(Ravg(1,:),Ravg(2,:))
endfunction;
//---------------------------------------------
function Dx=f(x,u) //fonction devolution
Dx=[x(4)*cos(x(5))*cos(x(3));
Simulation 55
x(4)*cos(x(5))*sin(x(3));
x(4)*sin(x(5))/3;
u(1);
u(2) ];
endfunction;
//---------------------------------------------
//debut du programme principal
//---------------------------------------------
global u sortie ech; // partagees avec my_eventhandler
x=[0;0;0;7;0]; // etat initial
ech=60; // echelle
dt=0.002; // dt initial
u=[0;0];
sortie=%F; // variable qui faut vrai (%T) si on veut sortir
//active le gestionnaire devenement my_eventhandler
seteventhandler(my_eventhandler);
while sortie==%F,
pvm_set_timer(); //initialise le chronometre
draw_voiture(x);
x=x+f(x,u)*dt; //methode dEuler
u=[0;0];
//converti en seconde la valeur du chronometre
dt=pvm_get_timer()/1000000;
end;
seteventhandler( ) //supprime le gestionnaire devenement
xdel(); //ferme la fenetre graphique
//---------------------------------------------
56 Commande par espace dtat
Chapitre 4
Systmes linaires
4.1 Introduction
Dans ce chapitre, nous allons tudier les systmes linaires (voir page 14, formule (1.3) et (1.4)). Les notions
prsentes seront fondamentales pour la bonne comprhension des chapitres qui suivent et plus particulirement
pour la conception de rgulateurs linaires prsente au chapitre 5. Les systmes linaires sont, rappelons-le, de la
forme
_
x(t) = Ax(t) +Bu(t)
y(t) = Cx(t) +Du(t),
(4.1)
pour les systmes temps continu et
_
x(k + 1) = Ax(k) +Bu(k)
y(k) = Cx(k) +Du(k),
(4.2)
pour les systmes temps discret. Nous allons tout dabord donner une solution analytique pour ces quations
dtat au paragraphe 4.2. Ces solutions seront utilises au paragraphe 4.2 pour tablir des critres de stabilit.
Ensuite, au paragraphe 4.4, nous montrerons que la reprsentation dtat dun systme linaire nest pas unique
et comment il est possible de passer dune reprsentation dtat une autre. Enn aux paragraphes 4.5 et 4.6,
nous expliciterons les liens forts qui existent entre la reprsentation entres-sorties (utilisant la notion de matrice
de transfert) et la reprsentation dtat.
4.2 Solution des quations dtat
Dans ce paragraphe, nous allons chercher calculer sous forme analytique la solution des quations dtat. Rap-
pelons que ces dernires sont composes de lquation direntielle (4.1), dans le cas continu, ou de lquation de
rcurrence (4.2) dans le cas discret.
4.2.1 Systme temps continu
Rappel sur les exponentielles de matrices. An de rsoudre notre quation direntielle, nous allons utiliser
la notion dexponentielle de matrice, que nous allons brivement rappeler. Lexponentielle dune matrice carre M
57
58 Commande par espace dtat
de dimension n se dnit par son dveloppement en sries entire :
e
M
= I
n
+M+
1
2!
M
2
+
1
3!
M
3
+ =

i=0
1
i!
M
i
,
o I
n
est la matrice identit de dimension n. Il est clair que e
M
est de la mme dimension que M. Voici quelques-
unes des proprits importantes concernant les exponentielles de matrices. Si 0
n
est la matrice nulle de dimension
n n et si M et N sont deux matrices n n, alors
e
0n
= I
n
,
e
M
.e
N
= e
M+N
, (si les matrices commutent)
d
dt
_
e
Mt
_
= Me
Mt
.
Thorme 4.2.1 Notons x(t
0
), ltat linstant initial t
0
. Pour le systme linaire temps continu (4.1), ltat
linstant t est donn par
x(t) = e
A(tt
0
)
x(t
0
) +
_
t
t
0
e
A(t)
Bu()d, (4.3)
et la sortie sexprime par
y(t) = Ce
A(tt
0
)
x(t
0
) +
_
t
t
0
Ce
A(t)
Bu()d +Du(t).
La fonction Ce
A(tt
0
)
x(t
0
) est appele solution homogne, libre ou transitoire. La fonction
_
t
t
0
Ce
A(t)
Bu()d +
Du(t) est appele solution force.
Preuve. Posons z(t) = e
At
x(t). On a donc x(t) = e
At
z(t) et donc, par drivation x(t) = Ae
At
z(t) + e
At
z(t).
Lquation dvolution x(t) = Ax(t) +Bu(t), se transforme en
Ae
At
z(t) +e
At
z(t) = Ae
At
z(t) +Bu(t),
soit, aprs simplication
z(t) = e
At
Bu(t).
Aprs intgration, nous obtenons
z(t) = z (t
0
) +
_
t
t
0
e
A
Bu()d,
o t
0
est arbitraire. Donc
x(t) = e
At
_
z (t
0
) +
_
t
t
0
e
A
Bu()d
_
= e
At
z (t
0
) +
_
t
t
0
e
At
e
A
Bu()d
= e
At
e
At
0
x(t
0
) +
_
t
t
0
e
A(t)
Bu()d
= e
A(tt
0
)
x(t
0
) +
_
t
t
0
e
A(t)
Bu()d.
Pour obtenir la sortie, il sut de noter que y(t) = Cx(t) +Du(t).
4.2.2 Systme temps discret
Thorme 4.2.2 Notons x(k
0
) ltat linstant initial k
0
. Pour le systme linaire temps discret (4.2), ltat
linstant k est donn par
x(k) = A
kk
0
x(k
0
) +
k1

=k
0
A
k
Bu(), (4.4)
Systmes linaires 59
et donc la sortie sexprime par
y(k) = CA
kk
0
x(k
0
) +
k1

=k
0
CA
k
Bu() +Du(k).
De mme que dans le cas continu, la fonction CA
(kk
0
)
x(t
0
) est la solution homogne

k
=k
0
CA
(k)
Bu()+Du(k)
est la solution force.
Preuve. La preuve peut se faire aisment par rcurrence. Tout dabord, si k = k
0
, la relation (4.4) est vrie.
Vrions que si elle est vri pour k elle lest aussi pour k + 1. On a
x(k + 1) = A.x(k) +Bu(k)
(4.4)
= A
_
A
kk
0
x(k
0
) +

k1
=k
0
A
k
Bu()
_
+Bu(k)
= A
k+1k
0
x(k
0
) +

k1
=k
0
A
k+1
Bu() +Bu(k)
= A
k+1k
0
x(k
0
) +

k
=k
0
A
k+1
Bu().
La relation est donc aussi valide pour k +1. Pour obtenir la sortie, il sut de noter que y(k) = Cx(t) +Du(t).
4.3 Stabilit
4.3.1 Solution des quations dtat
Supposons que linstant initial soit nul (cest--dire t
0
= 0 et k
0
= 0). Ltat dun systme linaire sexprime par
(voir quation (4.3))
x(t) = e
At
x(0) +
_
t
0
e
A(t)
Bu()d, (4.5)
pour les systmes temps continu et par (voir quation (4.4))
x(k) = A
k
x(0) +
k1

=0
A
k
Bu(), (4.6)
pour les systmes temps discret. Un systme linaire est stable (appel aussi asymptotiquement stable dans la
littrature) si, au bout dun temps susamment long, ltat ne dpend plus des conditions initiales et ceci, quelles
que soient ces dernires. Cela revient dire que
lim
t
e
At
= 0
n
si le systme temps continu,
lim
k
A
k
= 0
n
si le systme temps discret.
(4.7)
4.3.2 Critre de stabilit
Nous allons maintenant cherchez proposer un critre de stabilit ne dpendant que de la matrice A. Pour cela,
on rappelle tout dabord le thorme de correspondance des valeurs propres. Ensuite, nous donnerons le critre
de stabilit.
60 Commande par espace dtat
Thorme 4.3.1 Si f est un polynme (ou plus gnralement une srie entire) et si A est une matrice de R
nn
.
Les vecteurs propres de A sont aussi des vecteurs propres pour f(A). De plus si les valeurs propres de A sont

1
, . . . ,
n
alors celles de f(A) sont f (
1
) , . . . , f(
n
) .
Preuve. Soit x un vecteur propre de A de valeur propre . Nous allons montrer par induction que x est aussi
un vecteur propre de f(A) de valeur propre f(). Tout dabord, cette proprit est vraie si f(A) = A
i
. En eet,
puisque
A
i
.x = A.A. . . . ..A.x =
i
.x.
nous avons bien la proprit f(A).x = f().x. Supposons que cette proprit soit vraie pour deux polynmes f
1
et f
2
, nous allons maintenant montrer quelle lest aussi pour f
1
+f
2
et f
1
. Puisque quelle est vraie pour f
1
et
f
2
, on a
f
1
(A).x = f
1
().x
f
2
(A).x = f
2
().x
et donc
(f
1
(A) +f
2
(A)) .x = f
1
(A).x +f
2
(A).x = f
1
().x +f
2
().x = (f
1
() +f
2
()) .x,
(.f
1
(A)) .x = . (f
1
(A).x) = .f
1
().x = (.f
1
()) .x.
Par rcurrence, nous pouvons en dduire que la proprit est vraie pour toutes les fonctions f(A) qui peuvent
tre gnres partir des A
i
par compositions dadditions et de multiplications par un scalaire, cest--dire pour
les fonctions f qui sont des polynmes.
Thorme 4.3.2 Un systme linaire temps continu est stable si et seulement si toutes les valeurs propres de
sa matrice dvolution A sont parties relles strictement ngatives. Un systme linaire temps discret est stable
si et seulement si toutes les valeurs propres de A sont strictement dans le cercle unit.
Preuve. Commenons par le cas du temps continu. Si on prend f(A) = e
At
=

i=0
1
i!
(At)
i
, le thorme 4.3.1
(que nous supposrons sappliquer mme pour des polynmes de degr inni, cest--dire, des sries entires), nous
dit que les valeurs propres de e
At
sont de la forme e

i
t
. La stabilit du systme qui se traduit par la condition
lim
t
e
At
= 0
n
(voir (4.7)) se produit si toutes les valeurs propres e

i
t
de la matrice e
At
convergent vers zro,
cest--dire les
i
sont parties relles strictement ngatives.
Dans le cas discret, il nous faut prendre f(A) = A
k
. On aura stabilit si lim
k
A
k
= 0
n
, cest--dire si toutes les
valeurs propres
k
i
de la matrice A
k
convergent vers zro, cest--dire si toutes les
i
sont de module strictement
infrieur un.
4.3.3 Polynme caractristique
Que ce soit pour les systmes temps continu (4.1) ou temps discret (4.2), la position des valeurs propres de A
est dune importance capitale pour ltude de la stabilit dun systme linaire. Le polynme caractristique dun
systme linaire est dni comme tant le polynme caractristique de la matrice A qui est donn par la formule
P(s) = det (sI
n
A) .
Ses racines sont les valeurs propres de A. En eet, si s est une racine de P(s), alors det (sI
n
A) = 0, cest--dire
quil existe un vecteur v non nul tel que (sI
n
A) v = 0. Ce qui signie que sv Av = 0 ou encore Av =sv.
Donc s est une valeur propre de A. Un corollaire du thorme 4.3.2 est donc le suivant.
Systmes linaires 61
Corollaire 4.3.1 Un systme linaire temps continu est stable si et seulement si toutes les racines de son
polynme caractristique sont parties relles ngatives. Un systme linaire temps discret est stable si et
seulement si toutes les racines de son polynme caractristique sont dans le cercle unit.
4.4 Changement de base
4.4.1 Principe
Considrons le systme linaire temps continu donn par ses quations dtat
_
x = Ax +Bu
y = Cx +Du.
(4.8)
Tous les dveloppements qui vont suivre sappliquent de la mme faon au cas des systmes linaires temps
discret. Posons v = P
1
x, o P est une matrice de passage (cest--dire carre et inversible). Remplaons x par
Pv. On obtient
_
P v = APv +Bu
y = CPv +Du,
cest--dire
_
v = P
1
APv +P
1
Bu
y = CPv +Du.
Si on pose

A = P
1
AP,

B = P
1
B,

C = CP et

D = D, (4.9)
le systme scrit
_
v =

Av +

Bu
y =

Cv +

Du
(4.10)
qui est bien une reprsentation dtat. Ainsi, un systme linaire possde autant de reprsentations dtat quil
existe de matrices de passage. Bien sr certaines reprsentations sont prfrables suivant lapplication vise. Le
paragraphe 4.5, qui suit, dcrit certaines formes remarquables.
Remarque 4.4.1 Si nous disposons de deux reprsentations dtat donnes par (4.8) et (4.10), censes reprsenter
un mme systme, la matrice de passage qui relie ces deux reprsentations peut tre obtenue en rsolvant le systme
linaire
P

A = AP,
P

B = B,

C = CP,
o les n
2
inconnues sont les coecients p
ij
de la matrice de passage P. Puisque ce systme est linaire en les
coecients p
ij
, sa rsolution est aise. Si aucune solution nest obtenue, il est clair que les deux reprsentations
ne sont pas quivalentes.
62 Commande par espace dtat
4.4.2 Exemple de changement de base
Considrons un systme avec une entre. Ainsi, la matrice B deviendra un vecteur b. Prenons pour matrice de
changement de base
P =
_
b [ Ab [ A
2
b [ . . . [ A
n1
b
_
, (4.11)
qui sera suppose inversible. Notons que si e
i
dsigne le vecteur ne contenant que des zros, sauf un 1 la position
i, on a Pe
i
= A
i1
b, soit
e
i
= P
1
.A
i1
b. (4.12)
Ainsi,

b
(4.9)
= P
1
b
(4.12)
= e
1
.
Pour lobtention de

A, nous crivons,

A =
_
a
1
[ a
2
[ a
3
[ . . . [ a
n1
[ a
n
_
(4.9)
= P
1
AP
(4.11)
=
_
P
1
Ab [ P
1
A
2
b [ P
1
A
3
b [ . . . [ P
1
A
n1
b [ P
1
A
n
b
_
(4.12)
=
_
e
2
[ e
3
[ e
4
[ . . . [ e
n
[ P
1
A
n
b
_
,
o les a
i
dsignent les iimes colonnes de A. Or, le thorme de Cayley-Hamilton nous dit que
A
n
+a
n1
A
n1
+ +a
1
A+a
0
I = 0.
Ainsi, en isolant A
n
, en multipliant gauche par P
1
et droite par b, on obtient
P
1
A
n
b = P
1
_
a
n1
A
n1
b + a
1
Ab a
0
b
_
(4.11)
= P
1
.P
_
_
_
a
0
. . .
a
n1
_
_
_ =
_
_
_
a
0
. . .
a
n1
_
_
_.
En conclusion, aprs changement de base, nous obtenons une quation dvolution du type
_

_
v =
_
_
_
_
_
_
0 0 0 a
0
1 0 0 a
1
0
.
.
. 0 . . .
0 0 1 a
n1
_
_
_
_
_
_
v+
_
_
_
_
_
_
1
0
.
.
.
0
_
_
_
_
_
_
u.
La matrice dvolution, est appele matrice compagne . Une telle matrice possde une sous-diagonale compose
de un, et, sur sa dernire colonne, fait apparatre les coecients du polynme caractristique.
4.5 Dune reprsentation dtat vers une reprsentation entres-sorties
Le but de ce paragraphe est de montrer comment obtenir les quations direntielles entre-sortie (cest--dire
que ltat nintervient pas) dun systme linaire donn par ses quations dtat :
_
x = Ax +Bu
y = Cx +Du.
Systmes linaires 63
La transforme de Laplace de la reprsentation dtat est donne par
_
s x = A x +B u,
y = C x +D u.
(4.13)
La variable de Laplace est ici note s. Elle reprsente loprateur de drivation
d
dt
. La premire quation de (4.13)
peut se rcrire s x A x = B u, cest--dire sI x A x = B u, o I est la matrice identit. Do, en factorisant,
(sI A) x = B u (attention, une criture du type s x A x = (sA) x nest pas autorise car s est un scalaire
alors que A est une matrice). Ainsi, (4.13) est quivalent
_
x = (sI A)
1
B u,
y = C x +D u.
Donc
y =
_
C(sI A)
1
B+D
_
u. (4.14)
La matrice
G(s) = C(sI A)
1
B+D (4.15)
est appele matrice de transfert. Il sagit dune matrice de fonctions de transfert (cest--dire de fonctions ra-
tionnelles en s) dont tous les dnominateurs sont des diviseurs du polynme caractristique P
A
(s) de A. En
multipliant de chaque ct par P
A
(s) et en remplaant s par
d
dt
on obtient un systme dquations direntielles
entres-sorties pour notre systme. Ltat x ny apparat plus.
Exemple 4.5.1 On considre le systme linaire temps continu dcrit par sa reprsentation dtat :
_

_
x(t) =
_
1 3
2 0
_
x(t) +
_
1
1
_
u(t),
y(t) =
_
1 2
1 0
_
x(t) +
_
2
0
_
u(t).
Sa matrice de transfert G(s) est donne par
G(s)
(4.15)
= C(sI A)
1
B+D
=
_
1 2
1 0
__
s 1 3
2 s
_
1
_
1
1
_
+
_
2
0
_
=
_
2s
2
+s7
s
2
s6
s+3
s
2
s6
_
.
(4.16)
Ce calcul peut tre eectu directement sous Scii.i en tapant les lignes suivantes :
s=poly(0,s)
A=[13,20] ; B=[1,1] ; C=[12 ;10] ;
D=[2 ;0] ; I=eye(2,2)
G=C*(s*I-A)^(-1)*B+D
La premire de ces lignes a pour but de crer le polynme P(s) = s qui a pour unique racine 0. La fonction
eye(2, 2) gnre une matrice identit de dimension 2 2. Remarquons que Scii.i est ici capable deectuer un
64 Commande par espace dtat
peu de calcul symbolique (la variable s est ici un symbole). Mais les capacits de Scii.i dans ce domaine ne vont
pas beaucoup plus loin. Ainsi, daprs (4.16), la relation y = G(s) u scrit
_
s
2
s 6
_
y =
_
2s
2
+s 7
s + 3
_
u.
Soit, en substituant s par
d
dt
,
_
y
1
y
1
6y
1
= 2 u + u 7
y
2
y
2
6y
2
= u + 3u.
Exemple 4.5.2 Considrons nouveau le systme linaire form deux masses relies par un ressort introduit au
paragraphe 2.3.3 de la page 20. A partir de sa reprsentation dtat, la relation (4.14) nous dit que sa matrice de
transfert est
_
1 0 0 0
_
_
_
_
_
_
_
_
_
_
_
s 0 0 0
0 s 0 0
0 0 s 0
0 0 0 s
_
_
_
_
_

_
_
_
_
_
0 1 0 0

k
1
+k
2
m
1


m
1
k
2
m
1
0
0 0 0 1
k
2
m
2
0
k
2
m
2


m
2
_
_
_
_
_
_
_
_
_
_
1
_
_
_
_
_
0
0
0
1
m
2
_
_
_
_
_
.
La matrice de transfert est donc une fonction de transfert. Pour ce calcul, Scii.i ne peut rien faire. En revanche,
il peut tre eectu aisment par Mi. grce aux instructions suivantes
M :=Dom : :Matrix() ;
A :=matrix([[0,1,0,0],[-(k1+k2)/m1,-a/m1,k2/m1,0],
[0,0,0,1],[k2/m2,0,-k2/m2,-a/m2]]) ;
B :=matrix([0,0,0,1/m2]) ;
C :=matrix([1,0,0,0]) ;C :=M : :transpose(C) ;
Id :=matrix([[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]]) ;
G :=C*(s*Id-A)^(-1)*B ;
Nous obtenons
1
m
1
m
2
k
2
s
4
+
m
1
+m
2
k
2
s
3
+
_
m
1
+

2
k
2
+
k
1
+k
2
k
2
m
2
_
s
2
+
2k
2
+k
1
k
2
s +k
1
.
Lquation direntielle entre sortie est donc
m
1
m
2
k
2
d
4
y
dt
4
+
m
1
+m
2
k
2
d
3
y
dt
3
+
_
m
1
+

2
k
2
+
k
1
+k
2
k
2
m
2
_
y
+
2k
2
+k
1
k
2
y +k
1
y = u.
4.6 Dune reprsentation entres-sorties vers une reprsentation dtat
Dans ce paragraphe, nous montrons, dans le cas des systmes linaires monovariables (cest--dire avec une seule
entre et une seule sortie), comment obtenir une reprsentation dtat partir dune quation direntielle. Plu-
sieurs mthodes sont proposes aboutissant chacune une forme dirente.
Systmes linaires 65
4.6.1 Forme canonique de commande
On considre le systme linaire dordre 3 (bien que tout le raisonnement puisse tre eectu pour un ordre
quelconque) avec une seule entre et une seule sortie, dcrit par lquation direntielle suivante :
d
3
y
dt
3
+a
2
d
2
y
dt
2
+a
1
y +a
0
y = b
2
d
2
u
dt
2
+b
1
du
dt
+b
0
u. (4.17)
La fonction de transfert de notre systme est
G(s) =
b
2
s
2
+b
1
s +b
0
s
3
+a
2
s
2
+a
1
s +a
0
.
Ce qui signie que, y(s) = G(s) u(s), o y et u reprsentent les transformes de Laplace des signaux y(t) et u(t).
On a
y(s) =
_
b
2
s
2
+b
1
s +b
0
_
1
s
3
+a
2
s
2
+a
1
s +a
0
u(s),
qui peut se mettre sous la forme
_
x
1
(s) =
1
s
3
+a
2
s
2
+a
1
s+a
0
. u(s)
y(s) =
_
b
2
s
2
+b
1
s +b
0
_
x
1
(s).
Cest--dire,
_
s
3
x
1
= u a
2
s
2
x
1
a
1
s x
1
a
0
x
1
y = b
2
s
2
x
1
+b
1
s x
1
+b
0
x
1
.
(4.18)
Cherchons dessiner le cblage associ ces deux quations. Le seul oprateur direntiel que lon sautorise
est lintgrateur, de fonction de transfert
1
s
. On construit dabord une chane de 3 intgrateurs an de fabriquer
s
3
x
1
, s
2
x
1
et s x
1
. Puis, on cble les deux quations (4.18). On obtient le cblage de la gure ci dessous.
Forme canonique de commande pour un systme dordre 3
Les variables dtat de ce cblage sont les valeurs x
1
, x
2
, x
3
mmorises par chacun des intgrateurs (les addi-
tionneurs et les amplicateurs ne mmorisent rien). En lisant le schma, on peut directement crire les quations
dtat de ce systme
_

_
_
_
_
x
1
x
2
x
3
_
_
_ =
_
_
_
0 1 0
0 0 1
a
0
a
1
a
2
_
_
_
_
_
_
x
1
x
2
x
3
_
_
_+
_
_
_
0
0
1
_
_
_u
y =
_
b
0
b
1
b
2
_
_
_
_
x
1
x
2
x
3
_
_
_.
(4.19)
66 Commande par espace dtat
Rappelons que ce raisonnement peut sappliquer an de trouver la reprsentation dtat pour tout systme linaire
monovariable dordre n quelconque. Cette forme particulire pour la reprsentation dtat, qui fait apparatre dans
les matrices les coecients de la fonction de transfert est appele forme canonique de commande.
Remarque 4.6.1 Pour obtenir la forme canonique de commande quivalente un systme linaire monovariable
donn, il nous faut calculer sa fonction de transfert (voir paragraphe 4.5) sous sa forme dveloppe. Ensuite, nous
crivons directement sa forme canonique de commande en nous inuenant par exemple de la formule (4.19). La
matrice de passage peut, elle-aussi, tre obtenue aisment en rsolvant un systme dquations linaires comme
expliqu en remarque 4.4.1 page 61.
4.6.2 Forme canonique dobservation
Considrons nouveau le systme dcrit par lquation
d
3
y
dt
3
+a
2
d
2
y
dt
2
+a
1
y +a
0
y = b
2
d
2
u
dt
2
+b
1
du
dt
+b
0
u.
Dans le domaine de Laplace, cette quation direntielle devient
s
3
y +a
2
s
2
y +a
1
s y +a
0
y = b
2
s
2
u +b
1
s u +b
0
u.
En divisant de chaque ct par s
3
et en isolant y, nous obtenons
y =
a
2
s
y
a
1
s
2
y
a
0
s
3
y +
b
2
s
u +
b
1
s
2
u +
b
0
s
3
u,
cest--dire
y =
1
s
_
(b
2
u a
2
y) +
1
s
_
(b
1
u a
1
y) +
1
s
(b
0
u a
0
y)
__
.
De lquation prcdente, on dduit immdiatement le cblage de la gure ci dessous. Remarquons que ce schma
ressemble trangement celui de la gure prcdente, cens reprsent le mme systme. On passe de lun
lautre en changeant le sens des ches, en remplaant les additionneurs par des soudures et les soudures par des
additionneurs.
Forme canonique dobservation pour un systme dordre 3
Systmes linaires 67
De ce schma, nous pouvons directement en dduire les quations dtat du systme :
_

_
_
_
_
x
1
x
2
x
3
_
_
_
=
_
_
_
0 0 a
0
1 0 a
1
0 1 a
2
_
_
_
_
_
_
x
1
x
2
x
3
_
_
_
+
_
_
_
b
0
b
1
b
2
_
_
_
u
y =
_
0 0 1
_
_
_
_
x
1
x
2
x
3
_
_
_.
Cette forme particulire pour la reprsentation dtat sappelle forme canonique dobservation. Notons que la
transformation A A
T
, B C
T
, C B
T
, nous donne la forme canonique de commande (4.19).
Cherchons expliquer maintenant pourquoi cette transformation, qui nous fait passer de la forme canonique de
commande celle dobservation et vice-versa, ne change pas le systme. Pour cela, considrons le systme dont les
matrices dtat sont (A, B, C, D) et le systme

dont les matrices dtat sont


_
A

= A
T
, B

= C
T
, C

= B
T
, D

= D
T
La matrice de transfert associe est
G(s)
(4.15)
= C(sI A)
1
B+D.
Celle associe

est
G

(s)
(4.15)
= C

(sI A

)
1
B

+D

= B
T
_
sI A
T
_
1
C
T
+D
T
= B
T
_
(sI A)
1
_
T
C
T
+D
T
=
_
C(sI A)
1
B
_
T
+D
T
=
_
C(sI A)
1
B+D
_
T
= G
T
(s).
Or G(s) est un scalaire et donc G(s) = G
T
(s). Ainsi, la transformation A A
T
, B C
T
, C B
T
, D D
T
ne
change pas la fonction de transfert du systme si ce dernier possde une seule entre et une seule sortie.
4.6.3 Forme modale
Systme linaire sous forme modale
68 Commande par espace dtat
Un systme linaire monovariable est sous forme modale sil scrit sous la forme :
_

_
x =
_
_
_
_
_

1
0 0
0
2
0

0 0
n
_
_
_
_
_
x +
_
_
_
_
_
_
1
1
.
.
.
1
_
_
_
_
_
_
u
y =
_
c
1
c
2
c
n
_
x + d u.
(4.20)
Son cblage est donn par la gure ci-dessus. La fonction de transfert du systme est donne par
G(s) = C(sI A)
1
B+d
=
_
c
1
c
n
_
_
_
_
s
1
0 . . .
0
.
.
. 0
. . . 0 s
n
_
_
_
1
_
_
_
_
_
1
1

1
_
_
_
_
_
+d
=
_
c
1
c
n
_
_
_
_
_
_
_
1
s
1
0 0
0
1
s
2
0

.
.
.

0 0
1
s
n
_
_
_
_
_
_
_
_
_
_
_
1
1

1
_
_
_
_
_
+d
=
c
1
s
1
+
c
2
s
2
+ +
c
n
s
n
+d.
Notons que son polynme caractristique donn par det(sI A), cest--dire
det
_
_
_
_
_
s
1
0 0
0 s
2
0

0 0 s
n
_
_
_
_
_
= (s
1
) (s
2
) . . . (s
n
)
possde pour racines les
i
. Ce sont aussi les valeurs propres de A.
Remarque 4.6.2 Si nous disposons dun systme linaire monovariable donn par sa reprsentation dtat et si
nous souhaitons obtenir sa forme modale, il nous faudra calculer sa fonction de transfert (voir paragraphe 4.5)
et la dcomposer en lments simples. Si tous ces lments simples sont de premire espce (cest--dire que la
fonction de transfert a la forme
c
1
s
1
+
c
2
s
2
+ +
cn
sn
+d) il est possible de mettre le systme sous forme modale
(attention, frquemment, cela nest pas possible). On peut crire directement cette forme modale en sinuenant
par exemple de la formule (4.20). La matrice de passage P peut tre obtenue aisment en rsolvant un systme
linaire comme expliqu en remarque 4.4.1. Notons enn que cette matrice P a pour colonnes les vecteurs propres
de la matrice dvolution A.
Systmes linaires 69
4.6.4 Forme de Jordan
Le systme dcrit par les quations dtat
x =
_
_
_
_
_
_
_
2 1 0 0 0
0 2 1 0 0
0 0 2 0 0
0 0 0 3 1
0 0 0 0 3
_
_
_
_
_
_
_
x +
_
_
_
_
_
_
_
0
0
1
0
1
_
_
_
_
_
_
_
u
y =
_
2 1 3 4 7
_
x + 2u
est sous forme de Jordan car sa matrice dvolution A est une matrice de Jordan. Cest--dire quelle est diagonale
par bloc et que chaque bloc (ici il y en a deux) possde des zros partout, sauf sur sa diagonale, qui contient des
lments tous gaux et sur sa sur-diagonale qui ne contient que des uns. De plus, la matrice de commande ne
possde, pour lment non nuls, que des uns (autant que de blocs), positionns au niveau de la dernire ligne de
chaque bloc. Un cblage pour ce systme est donn sur la gure ci-dessous.
Systme sous sa forme de Jordan
Sa fonction de transfert est donc donne par
G(s) = 2 +
3
s + 2

1
(s + 2)
2

2
(s + 2)
3
+
7
s + 3

4
(s + 3)
2
.
Pour mettre un systme linaire sous sa forme Jordan (si cela est possible), on peut procder comme expliqu en
remarque 4.6.2.
Exemple. Considrons le systme dcrit par les quations dtat suivantes
_

_
x =
_
_
_
4
1
2

1
2
4 1 1
4 2 2
_
_
_x +
_
_
_
1
2
4
_
_
_u
y =
_
2 1 1
_
x.
On cherche obtenir une reprsentation plus simple, cest--dire, avec plus de zros et plus de uns, an de limiter
de nombre dampli-op ncssaires la ralisation du circuit. La dcomposition sous forme de jordan de la matrice
70 Commande par espace dtat
dvolution est
_
_
_
1 1 1
2 1 2
2 1 0
_
_
_
1
. .
P
1
_
_
_
4
1
2

1
2
4 1 1
4 2 2
_
_
_
. .
A
_
_
_
1 1 1
2 1 2
2 1 0
_
_
_
. .
P
=
_
_
_
2 1 0
0 2 0
0 0 3
_
_
_
. .

A
.
Ainsi, la nouvelle reprsentation dtat est
_

_
x =
_
_
_
2 1 0
0 2 0
0 0 3
_
_
_x +
_
_
_
2
0
1
_
_
_u
y =
_
6 4 4
_
x.
Chapitre 5
Commande des systmes linaires
5.1 Introduction
Dans ce chapitre, nous allons tudier la conception de rgulateurs pour les systmes donns par des quations
dtat linaires. Nous montrerons dans le chapitre suivant quautour de points bien particuliers de lespace dtat,
dit points de fonctionnement, de nombreux systmes non linaires se comportent comme de vritables systmes
linaires. Les techniques dveloppes dans ce chapitre seront alors utilises pour la commande de systmes non
linaires.
Considrons donc le systme linaire suivant
_
x = Ax +Bu
y = Cx.
(5.1)
Notons m, n, p les dimensions respectives des vecteurs u, x et y. Rappelons que A est appele matrice dvolution,
B est la matrice de commande et C est la matrice dobservation.
Remarque 5.1.1 Nous avons ici suppos, dans un but de simplication que la matrice directe D intervenant
dans lquation dobservation (voir 1.3 page 14) tait nulle. Cest souvent le cas en pratique. Si une telle matrice
directe existe, on peut facilement sen dbarrasser. En eet, considrons le systme
_
x = Ax +Bu
y = Cx +Du,
et ralisons la nouvelle sortie z = y Du comme indiqu sur la gure. On obtient un nouveau systme dont les
quations dtat sont
_
x = Ax +Bu
z = Cx.
On retombe dans la situation dcrite par lquation (5.1).
71
72 Commande par espace dtat
Cblage permettant de supprimer la matrice
directe D dans les quations dtat
Aprs avoir dni les notions fondamentales de commandabilit et dobservabilit dans les paragraphes 5.2.2 et
5.2.3, nous proposerons deux approches pour la conception de rgulateurs. Tout dabord, dans le paragraphe
5.3, nous allons supposer que ltat x est accessible la mesure. Bien que cette hypothse ne soit gnralement
pas vrie, elle nous permettra dtablir les principes de la mthode par placement de ples. Dans une deuxime
phase, nous ne supposerons plus que ltat est accessible. Il nous faudra alors dvelopper des estimateurs dtat, au
paragraphe 5.4, capables destimer le vecteur tat an de pouvoir utiliser les outils dvelopps lors de la premire
phase.
Le lecteur pourra consulter louvrage de Philippe de Larminat [4] pour avoir une vision large de lensemble des
mthodes utilises pour la commande des systmes linaires. Un cours complet et pdagogique accompagn de
nombreux exercices peut tre trouv dans les livres de Maurice Rivoire et Jean-Louis Ferrier [6].
5.2 Commandabilit et observabilit
5.2.1 Rappel sur les quations linaires
Ce petit rappel nous sera utile pour comprendre certains lments de ce paragraphe comme par exemple les preuves
des critres de commandabilit et dobservabilit. Le systme linaire
Ax = b
o la matrice A et de rang plein admet
une et une seule solution, donne par x = A
1
b, si la matrice est carre ;
une innit de solutions, si la matrice est rectangulaire horizontale (plus de colonnes que de lignes) ;
au plus une solution, si la matrice est rectangulaire verticale (plus de lignes que de colonnes). Si cette dernire
existe, elle est donne par x =
_
A
T
A
_
1
A
T
b.
5.2.2 Commandabilit
Il existe de multiples dnitions quivalentes pour la commandabilit des systmes linaires. Une dnition simple
pour la commandabilit est la suivante.
Dnition 5.2.1 Le systme linaire (5.1) est dit commandable si pour tout couple de vecteur dtat (x
0
, x
1
),
on peut trouver un temps t
1
et une commande u(t), t [0, t
1
], tel que le systme, initialis en x
0
, atteigne ltat
x
1
, linstant t
1
.
Commande des systmes linaires 73
Thorme 5.2.1 (critre de commandabilit) Le systme linaire 5.1 est commandable si et seulement si
rang
_
B [ AB [ A
2
B [ . . . [ A
n1
B
_
= n,
cest--dire que la matrice
com
, dite de commandabilit, obtenue en juxtaposant les unes ct des autres les n
matrices B, AB, . . . , A
n1
B, est de rang plein.
La dnition et le thorme sont aussi valables pour les systmes linaires temps discret.
Exemple 5.2.1 Considrons le systme
x(t) =
_
_
_
1 1 0
0 1 0
0 0 1
_
_
_x(t) +
_
_
_
0 0
1 0
1 0
_
_
_u(t).
La matrice de commandabilit est donne par

com
=
_
_
_
0 0 1 0 2 0
1 0 1 0 1 0
1 0 1 0 1 0
_
_
_.
Le rang de
com
est gal 2 (les deux dernires lignes sont identiques) : le systme est donc non commandable.
En revanche, pour une matrice de commande donne par
B =
_
_
_
0 0
1 0
1 1
_
_
_,
la matrice de commandabilit devient

com
=
_
_
_
0 0 1 0 2 0
1 0 1 0 1 0
1 1 1 1 1 1
_
_
_.
Le rang de
com
est gal trois car on peut engendrer les trois vecteurs e
1
= (1 0 0)
T
, e
2
= (0 1 0)
T
, e
3
= (0 0 1)
T
par combinaisons linaires des vecteurs colonnes v
i
de (
1
. En eet, e
1
= v
3
v
2
, e
2
= v
1
v
2
et e
3
= v
2
. Ainsi,
le systme est commandable.
Preuve du critre de commandabilit. Nous allons nous limiter donner une preuve pour les systmes
linaires temps discret x(k + 1) = Ax(k) + Bu(k), la dmonstration dans le cas continu ntant pas aussi
simple. Pour cela, nous allons montrer que lon peut imposer arbitrairement x(k + n) en jouant sur les entres
u(k), . . . , u(k + n 1) et ceci quel que soit x(k). Si x(k + n) peut tre choisi comme on le dsire, il semble clair
quil est possible de se diriger dans lespace dtat, et donc que le systme est commandable. Nous avons
x(k + 1) = Ax(k) +Bu(k)
x(k + 2) = Ax(k + 1) +Bu(k + 1) = A
2
x(k)+ABu(k) +Bu(k + 1)
x(k + 3) = Ax(k + 2) +Bu(k + 2) = A
3
x(k)+A
2
Bu(k) +ABu(k + 1) +Bu(k + 2)
.
.
.
x(k +n) = A
n
x(k)+A
n1
Bu(k) +A
n2
Bu(k + 1) + +ABu(k +n 2) +Bu(k +n 1).
74 Commande par espace dtat
Ainsi,
x(k +n) = A
n
x(k)+
_
B [ AB [ . . . [ A
n1
B
_
. .
com
_
_
_
_
_
_
_
_
u(k +n 1)
u(k +n 2)
.
.
.
u(k + 1)
u(k)
_
_
_
_
_
_
_
_
= A
n
x(k) +
com
v,
o
com
est la matrice de commandabilit de dimension n mp et v le vecteur de dimension mp des entres (et
des entres futures) que lon cherche. An dimposer x(k +n) arbitrairement, il nous faut rsoudre le systme de
n quations linaires

com
v = x(k +n) A
n
.x(k)
mp inconnues. Si
com
est rang plein (cest--dire que ses vecteurs colonnes forment une famille gnratrice de
R
n
) il existe toujours au moins une solution v pour ce systme.
5.2.3 Observabilit
Une dnition simple pour lobservabilit dun systme linaire est la suivante.
Dnition 5.2.2 Le systme linaire 5.1 est dit observable si la connaissance de y(t) et de u(t) pour t R nous
permet de dterminer de faon unique ltat x(t), pour tout t.
Une multitude dautres dnitions quivalentes auraient pu tre donnes.
Thorme 5.2.2 (critre dobservabilit) Le systme linaire 5.1 est observable si
rang
_
_
_
_
_
_
C
CA
.
.
.
CA
n1
_
_
_
_
_
_
= n
cest--dire que la matrice, dite d observabilit
obs
, obtenue en mettant les une en dessous des autres les n
matrices C, CA, . . . , CA
n1
, est de rang plein.
Ce thorme est aussi valable pour les systmes linaires temps discret.
Preuve du critre dobservabilit. Pour donner une ide de la preuve de ce critre, nous allons montrer que
la connaissance des n1 premires drives des sorties et des n2 drives des entres nous permet de retrouver
le vecteur dtat. Pour cela, drivons n 1 fois lquation dobservation. Nous obtenons
y = Cx
y = CAx +CBu
y = CA
2
x +CABu +CB u
.
.
.
y
(n1)
= CA
n1
x +CA
n2
Bu +CA
n3
B u + +CABu
(n3)
+CBu
(n2)
.
Commande des systmes linaires 75
Soit, sous forme matricielle
_
_
_
_
_
_
_
_
y
y
y
.
.
.
y
(n1)
_
_
_
_
_
_
_
_
=
_
_
_
_
_
_
_
_
C
CA
CA
2
.
.
.
CA
n1
_
_
_
_
_
_
_
_
x +
_
_
_
_
_
_
_
_
0 0 0 0
CB 0 0 0
CAB CB 0
.
.
.
.
.
.
.
.
.
CA
n2
B CAB CB
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
u
u
u
.
.
.
u
(n2)
_
_
_
_
_
_
_
_
.
Cette quation peut scrire sous la forme
z =
obs
x + v,
o z est le vecteur de toutes les sorties et de leurs drives, v le vecteur de toutes les entres et leurs drives,

obs
la matrice dobservabilit et la matrice restante. Le systme quil nous faut rsoudre pour retrouver ltat
x est donn par

obs
x = z v.
Cette quation admet au plus une solution si
obs
est de rang plein. Labsence de solution signierait que v et z
sont incompatibles avec les quations de notre systme, ce qui est incompatible avec nos hypothses. Cette solution
est donne par
x =
_

T
obs

obs
_
1

T
obs
. (z v) .
La matrice
_

T
obs

obs
_
1

T
obs
sappelle linverse gnralise de la matrice
obs
. Elle nexiste que si
obs
est de rang
plein.
5.2.4 Dcomposition de Kalman
La dcomposition de Kalman va nous permettre de mieux comprendre comment interviennent les problmes de
commandabilit et dobservabilit dans les systmes linaires.
Un systme linaire peut toujours se dcomposer en 4 sous-systmes o
1
, o
2
, o
3
, o
4
o o
1
est commandable et obser-
vable, o
2
est non commandable et observable, o
3
est commandable et non observable et o
4
nest ni commandable
ni observable. Les dpendances entre les sous-systmes peuvent tre rsumes par la gure ci-dessous.
Principe de la dcomposition de Kalman;
C : commandable, O : observable,

C : non-commandable,

O : non observable
Notons que sur la gure, il nexiste aucun chemin (en respectant le sens des ches) qui mne de lentre u vers
un systme non commandable. De mme, il nexiste aucun chemin qui mne dun systme non observable vers
y. Le schma de la gure ci-dessous montre, sous une forme dveloppe la dcomposition en 4 sous-systmes o
i
,
76 Commande par espace dtat
chacun tant associ au sous-vecteur dtat x
i
. Daprs ce schma, nous pouvons en dduire quun systme linaire
temps continu peut toujours se mettre (aprs un changement de base adquat) sous la forme suivante :
_

_
x(t) =
_
_
_
_
_
A
11
A
12
0 0
0 A
22
0 0
A
31
A
32
A
33
A
34
0 A
42
0 A
44
_
_
_
_
_
x(t) +
_
_
_
_
_
B
1
0
B
3
0
_
_
_
_
_
u(t)
y(t) =
_
C
1
C
2
0 0
_
x(t) + (D) u(t)
o les A
ij
, B
i
, C
j
et D sont des matrices.
Dtail de la dcomposition de Kalman pour les systmes linaires
5.3 Commande par retour dtat
5.3.1 Equation de placement de ples
On considre le systme suppos commandable x = Ax +Bu et on cherche un rgulateur pour ce systme de la
forme u = wKx, o w est la nouvelle entre. Cela suppose que x soit accessible, ce qui nest normalement pas
le cas. Nous verrons dans le paragraphe 5.4, qui suit, comment se dbarrasser de cette hypothse gnante. Les
Commande des systmes linaires 77
quations dtat du systme boucl scrivent :
x = Ax +B(wKx) = (ABK)x +Bw.
Il est lgitime de vouloir choisir la matrice de rgulation K de faon imposer les ples du systme boucl. Ce
problme est quivalent imposer le polynme caractristique du systme. Soit P
com
(s) le polynme dsir, que
lon supposera bien sr de degr n. Il nous faut rsoudre lquation polynomiale
det(sI A+BK) = P
com
(s) (5.2)
dite de placement de ples. Cette quation peut se traduire en n quations scalaires. Rappelons en eet que deux
polynmes de degr n et unitaires s
n
+a
n1
s + +a
0
et s
n
+b
n1
s + +b
0
sont gaux si et seulement si leurs
coecients sont tous gaux, cest--dire si a
n1
= b
n1
, . . . , a
0
= b
0
. Notre systme de n quations possde m.n
inconnues qui sont les coecients k
ij
, i 1, . . . , m, j 1, . . . , n. En fait, une seule matrice solution K nous
sut. On peut donc xer (m 1) lments de K an quil ne nous reste plus que n inconnues. Mais le systme
obtenu nest pas toujours linaire. Linstruction ppol de Scii.i permet de rsoudre lquation (5.2).
Tout est simple lorsque le systme possde une seule entre. En eet, lquation polynomiale (5.2) se traduit
forcment par un systme de n quations linaires n inconnues qui admet une et une seule solution (car le
systme est commandable).
Dans le cas o le systme possde m entres, on peut choisir K de la forme
K =

K+

BK
1
o les matrices

K(m n) et

B(m 1) sont choisies arbitrairement de faon conserver la commandabilit et,
par exemple, solliciter les entres les moins coteuses. La quantit K
1
= (k
1
, . . . , k
n
) est la matrice 1 n
dterminer. Le systme polynmial (5.2) se traduit alors par un systme linaire.
5.3.2 Rsolution de lquation de placement de ples
Nous allons ici illustrer la rsolution de lquation polynomiale (5.2), lorsque le systme nadmet quune seule
entre. Les mthodes proposes ici ncessitent des calculs assez fastidieux. Un logiciel de calcul formel comme
Mi. peut savrer bien utile. Considrons par exemple le systme
x =
_
_
_
1 4 1
6 1 3
2 2 5
_
_
_x +
_
_
_
2
3
1
_
_
_u,
que lon cherche stabiliser ce systme par un retour dtat de la forme
u = w Kx,
avec
K =
_
k
1
k
2
k
3
_
.
Cherchons K de faon ce que ce polynme caractristique P
com
(s) du systme en boucle ferme ait pour racines
1, 1 2i, 1 + 2i, cest--dire,
P
com
(s) = (s + 1)(s + 1 + 2i)(s + 1 2i)
= s
3
+ 3s
2
+ 7s + 5.
78 Commande par espace dtat
Lquation de placement de ples (5.2) scrit
det
_
_
_
_
_
_
s 0 0
0 s 0
0 0 s
_
_
_
_
_
_
1 4 1
6 1 3
2 2 5
_
_
_+
_
_
_
2
3
1
_
_
_
_
k
1
k
2
k
3
_
_
_
_
= s
3
+ 3s
2
+ 7s + 5,
cest--dire
det
_
_
_
s 1 + 2k
1
4 + 2k
2
1 + 2k
3
6 + 3k
1
s + 1 + 3k
2
3 + 3k
3
2 k
1
2 k
2
s + 5 k
3
_
_
_
= s
3
+ 3s
2
+ 7s + 5
ou encore
s
3
+ (2k
1
+ 3k
2
k
3
+ 5) s
2
+ (25k
1
+ 21k
2
+ 10k
3
29) s
+41k
1
+ 72k
2
+ 71k
3
129 = s
3
+ 3s
2
+ 7s + 5.
On obtient le systme linaire suivant
_
_
_
2 3 1
25 21 10
41 72 71
_
_
_
_
_
_
k
1
k
2
k
3
_
_
_+
_
_
_
5
29
129
_
_
_ =
_
_
_
3
7
5
_
_
_.
Ainsi,
_
_
_
k
1
k
2
k
3
_
_
_=
_
_
_
2 3 1
25 21 10
41 72 71
_
_
_
1
_
_
_
_
_
_
3
7
5
_
_
_
_
_
_
5
29
129
_
_
_
_
_
_ =
_
_
_
1.4227
0.94158
2.0206
_
_
_.
Soit
K =
_
1.4227 0.94158 2.0206
_
.
Nous aurions obtenir directement ce rsultat en utilisant linstruction ppol (pole placement) de Scii.i en tapant
A = [1, 4, 1; 6, 1, 3; 2, 2, 5];
B = [2; 3; 1];
K = ppol(A, B, [1, 1 2 %i, 1 +2 %i]);
5.3.3 Rajout dun eet intgral
On considre le systme x = Ax +Bu +p o p est un vecteur de perturbation inconnu et constant, cens
reprsenter une perturbation extrieure qui na pu tre prise en compte dans la modlisation (vent, pente du
terrain, poids des personnes dans un ascenseur, . . . ). Un rgulateur par retour dtat avec eet intgral est de la
forme
u = K
i
_
t
0
(wx
c
) dt Kx,
o w est la consigne et x
c
est un vecteur de mme dimension que u reprsentant les variables dtat consignes
(cest--dire celles que lon souhaite commander directement par lintermdaire de w). Cette notion de variables
consignes sera revue plus en dtail au paragraphe 5.6. Le vecteur x
c
est reli ltat x par la relation x
c
= Ex,
o E est une matrice connue. Le systme en boucle ferm peut donc scrire par les quations suivantes
_

_
x = Ax +Bu +p
z = wEx
u = K
i
z Kx.
Commande des systmes linaires 79
Les quations dtat du systme boucl scrivent donc
_
x = (ABK) x BK
i
z +p
z = wEx
ou, sous forme matricielle :
_
x
z
_
=
_
ABK BK
i
E 0
_ _
x
z
_
+
_
p
w
_
.
Puisque
_
ABK BK
i
E 0
_
=
_
A 0
E 0
_

_
B
0
_
_
K K
i
_
,
le choix de K et K
i
se fera par placement de ples par lintermdiaire de la fonction ppol de Scii.i. Pour une
consigne w et une perturbation p constantes, en rgime permanent, nous avons :
_
0 = (ABK) x BK
i
z +p
0 = wEx
cest--dire
w = Ex = x
c
p = (ABK) x +BK
i
z
Ainsi, la condition de consigne est respecte (x
c
= w) et nous sommes capables de retrouver la perturbation
(p = Ax +BKx +BK
i
z). Au nal, les quations dtat du rgulateur par retour dtat avec eet intgral sont
_
z = Ex +w
u = K
i
z Kx.
5.4 Commande par retour de sortie
5.4.1 Principe
Principe dun rgulateur par retour de sortie
80 Commande par espace dtat
Dans ce paragraphe, nous cherchons toujours stabiliser le systme
_
x = Ax +Bu
y = Cx
mais cette fois-ci, ltat x du systme nest plus suppos accessible la mesure. Seules la consigne w et la sortie du
systme y peuvent tre utilises par le rgulateur. Nous allons chercher estimer ltat an de pouvoir calculer la
commande u. Pour cela, on intgre notre rgulateur un simulateur de notre systme. Lerreur
y
entre la sortie
du simulateur y et la sortie du systme y nous permet de venir corriger, par lintermdiaire dune matrice de
correction L, lvolution de ltat estim x. Le simulateur corrig sappelle observateur. Son seul rle est de nous
donner une bonne estimation du vecteur dtat x(t) an que lon puisse appliquer une technique de retour dtat.
Le schma de principe du rgulateur par retour de sortie est donn sur la gure. Les inconnues du rgulateur
sont les matrices K et L. Pour le calcul K nous pouvons utiliser la mthode par placement de ples dcrite
prcdemment, qui consiste rsoudre det(sI A+BK) = P
com
(s), o P
com
(s) est le polynme caractristique
de degr n choisi pour la dynamique de commande. Il nous reste maintenant trouver la matrice de correction L.
5.4.2 Calcul de la matrice de correction
An de calculer L, extrayons du systme rgul de la gure, le sous-systme dentre u (voir gure ci-dessous).
Principe de lobservateur
Les quations dtat qui dcrivent ce systme sont
_
x = Ax +Bu
d
dt
x = A x +Bu L(C x Cx)
(5.3)
o le vecteur dtat est (x, x). Crons, uniquement par la pense, la quantit
x
= x x, comme reprsente sur
la gure et prenons comme nouveau vecteur dtat : (x,
x
). En soustrayant les deux quations dvolution dans
(5.3), nous obtenons :
d
dt
( x x) = A x +Bu L(C x Cx) Ax Bu = A( x x) LC( x x).
Commande des systmes linaires 81
Ainsi, les nouvelles quations dtat scrivent
_
x = Ax +Bu

x
= A
x
LC
x
cest--dire, sous forme matricielle
_
x

x
_
=
_
A 0
0 ALC
_ _
x

x
_
+
_
B
0
_
u (5.4)
Les ples de ce systme correspondent aux valeurs propres de A et celles de ALC. La structure de lquation
(5.4) nous montre que
x
est un sous-vecteur dtat non commandable. Il obit lquation direntielle

x
= (ALC)
x
(5.5)
sur laquelle la commande u nintervient pas. Lerreur destimation
x
sur ltat tends vers zro si toutes les valeurs
propres de ALC sont parties relles ngatives. Imposer la dynamique de lerreur (cest--dire, sa rapidit de
convergence) revient rsoudre
det (sI A+LC) = P
obs
(s),
o P
obs
(s) est choisi comme on le dsire, de faon avoir les ples requis. Puisque le dterminant dune matrice
est gal celui de sa transpose, cette quation est quivalente
det
_
sI A
T
+C
T
L
T
_
= P
obs
(s).
On obtient une quation de type placement de ples (voir quation (5.2) page 77). La mme mthode que celle
expose la section 5.3 page 76 peut donc sappliquer pour trouver L
T
et donc L. On pourra donc utiliser la
fonction ppol de Scii.i.
5.4.3 Reprsentation dtat du rgulateur
Rappelons que le rgulateur possde pour vecteur dtat x et pour entres la consigne w et la sortie du systme
rguler y. La sortie du rgulateur est la commande u. La reprsentation dtat du rgulateur sexprime par
_
d
dt
x = A x +B(wK x) L(C x y)
u = wK x,
ou sous forme simplie
_
d
dt
x = (ABKLC) x +Bw+Ly
u = K x +w.
Sous forme matricielle, cette quation scrit :
_

_
d
dt
x = (ABKLC) x +
_
B L
_
_
w
y
_
u = K x +
_
I 0
_
_
w
y
_
.
Ce sont les quations quil nous faut cbler ou programmer pour rguler notre systme. La mthode pour fabriquer
un rgulateur par retour de sortie. est rcapitule sur le tableau 5.1, o p
com
et p
obs
sont les vecteurs des ples
dsirs pour le rgulateur et pour lobservateur.
82 Commande par espace dtat
Algorithme IioiKL(in : A, B, C, p
com
, p
obs
; out : )
1 K := iioi(A, B, p
com
) ;
2 L := iioi
_
A
T
, C
T
, p
obs
_
T
;
3 :=
_

_
d
dt
x = (ABKLC) x +
_
B L
_
_
w
y
_
,
u = K x +
_
I 0
_
_
w
y
_
.
Tableau 5.1: Calcul dun rgulateur par retour de sortie
Exemple. Considrons le systme dcrit par lquation dtat suivante
_
x = 3x + 2u
y = 4x
et cherchons un rgulateur par retour de sortie qui place tous les ples en 1. Pour trouver K et L il nous faut
rsoudre
det (s 3 + 2K) = s + 1
det (s 3 +L.4) = s + 1
On obtient donc K = 2 et L = 1. Le rgulateur recherch est donc donn par
:=
_
d
dt
x = 3 x + 2w +y
u = 2 x +w
Le systme boucl est dcrit par les quations dvolution suivantes
_
x = 3x 4 x + 2w
d
dt
x = 4x 5 x + 2w.
On peut alors vrier que les ples de ce systme sont bien ceux qui nous avions placs ( savoir 1 et 1). Ce
phnomne est expliqu dans le paragraphe suivant.
5.5 Principe de sparation
Les ples p
com
placs pour la conception du rgulateur par retour dtat et ceux p
obs
placs pour lobservateur
sont-ils bien les ples du systme en boucle ferme ? Le but de ce paragraphe est de rpondre (positivement)
cette question.
5.5.1 Equation dtat du systme boucl
Les quations dvolution associes au systme boucl dentre w et de sortie y sont donnes par
_
x = Ax +B(wK x)
d x
dt
= (ABKLC) x +LCx +Bw.
(5.6)
Commande des systmes linaires 83
Insistons sur le fait que le systme boucl possde pour vecteur dtat ceux du systme, rangs dans x, et ceux du
rgulateur rangs dans x. Son vecteur dtat est donc donn par (x
T
x
T
)
T
. Sous forme matricielle, (5.6) scrit
d
dt
_
x
x
_
=
_
A BK
LC ABKLC
__
x
x
_
+
_
B
B
_
w
5.5.2 Changement de base
Posons
x
= x x. Puisque
_
x

x
_
=
_
I 0
I I
__
x
x
_
ou de faon quivalente
_
x
x
_
=
_
I 0
I I
__
x

x
_
,
un autre vecteur dtat possible pour le systme boucl est (x,
x
). Les quations dtat deviennent aprs change-
ment de base
_
x

x
_
=
_
I 0
I I
__
A BK
LC ABKLC
__
I 0
I I
__
x

x
_
+
_
I 0
I I
__
B
B
_
w
ou encore
_
x

x
_
=
_
ABK BK
0 ALC
__
x

x
_
+
_
B
0
_
w (5.7)
Notons que lentre w ne peut pas agir sur
x
, ce qui est compatible avec le fait que
x
nest toujours pas
(voir quation 5.5) un sous-vecteur commandable (le fait de boucler le systme ne peut, bien sr, pas rendre
commandable une variable dtat non commandable).
5.5.3 Polynme caractristique
Le polynme caractristique du systme boucl est
P(s) = det
_
sI
_
ABK BK
0 ALC
__
= det
_
sI A+BK BK
0 sI A+LC
_
= det (sI A+BK) . det (sI A+LC) = P
com
(s).P
obs
(s).
Donc les ples du systme boucl sont constitus des ples placs pour la commande et des ples placs pour
lobservation. Cest le principe de sparation.
5.6 Insertion dun prcompensateur
Lalgorithme prsent sur le tableau 5.1 page 82 pour synthtiser un rgulateur nous assure que si le vecteur de
consigne w est nul, ltat du systme x va converger vers 0 avec une dynamique dtermine par les ples placs.
Lorsque w nest plus nul, ltat converge vers une valeur qui nest plus forcment nulle. Un prcompensateur est
une matrice carre H, que lon place juste aprs le vecteur de consigne, comme sur la gure.
84 Commande par espace dtat
Insertion dun prcompensateur
Ce prcompensateur ne change pas les ples du systme boucl. Il permet de mettre en correspondance certaines
composantes de la consigne avec certaines variables dtat pralablement choisies. Les quations dvolution du
systme boucl (voir quation (5.7) o w a t remplac par Hw) sont
d
dt
_
x

x
_
=
_
ABK BK
0 ALC
__
x

x
_
+
_
BH
0
_
w.
Si w(t) est une constante w, une fois atteint le point dquilibre, nous avons
0 =
_
ABK BK
0 ALC
__
x

x
_
+
_
BH
0
_
w.
Puisque (ALC) est inversible (car tous les ples placs pour lobservateur sont strictement stables),
x
est
ncessairement nul. Lquation prcdente devient
(ABK) x +BH w = 0.
Puisque ABK est aussi inversible (car tous les ples placs pour la commande sont strictement stables), nous
avons
x =(ABK)
1
BH w. (5.8)
On appelle variables consignes, x
c
un ensemble de m variables dtat (o m = dim(w) = dim(u)) pour lesquelles
on souhaiterait que, pour w = w constant, x
c
converge vers x
c
= w. Supposons que ces variables puissent tre
obtenues par une combinaison linaire des composantes de x par une relation du type
x
c
= Ex,
o E est une matrice mn, dite de consigne. A lquilibre, nous avons,
x
c
= E x
(5.8)
= E(ABK)
1
BH w.
Ainsi
x
c
= w E(ABK)
1
BH = I H =
_
E(ABK)
1
B
_
1
.
Commande des systmes linaires 85
Linsertion dun prcompensateur permet donc dassigner chacune des consignes, constituant w, une variable
dtat particulire. Les variables ainsi consignes peuvent tre alors commandes indpendamment les unes des
autres. Lalgorithme du tableau 5.2 rcapitule la mthode permettant de calculer un rgulateur par retour de
sortie avec prcompensateur. La fonction Scii.i associe est donne par le tableau 5.3.
Algorithme IioiKLH(in : A, B, C, E, p
com
, p
obs
; out : )
1 K := iioi(A, B, p
com
) ;
2 L := iioi
_
A
T
, C
T
, p
obs
_
T
;
3 H :=
_
E(ABK)
1
B
_
1
;
4 :=
_

_
d
dt
x = (ABKLC) x +
_
BH L
_
_
w
y
_
u = K x +
_
H 0
_
_
w
y
_
.
Tableau 5.2: Algorithme de calcul dun rgulateur par retour de sortie avec prcompensateur
function [Ar,Br,Cr,Dr]=RegulKLH(A,B,C,E,pcom,pobs) ;
K=ppol(A,B,pcom)
L=ppol(A,C,pobs)
H=-inv(E*inv(A-B*K)*B)
Ar=A-B*K-L*C
Br=[B*H L]
Cr=-K
Dr=[H,zeros(C*B)]
endfunction ;
Tableau 5.3: Fonction Scilab permettant de construire un rgulateur pour un systme linaire
86 Commande par espace dtat
Chapitre 6
Commande linaire des systmes non
linaires
6.1 Introduction
Au chapitre 5, nous avons montr comment concevoir des rgulateurs pour les systmes linaires. Or, en pratique,
les systmes sont rarement linaires. En revanche si leur vecteur dtat reste localis dans une zone de petite taille
de lespace dtat, le systme peut tre assimil un systme linaire et les techniques dveloppes au chapitre
5 peuvent alors tre utilises. Dans le paragraphe 6.2, nous allons tout dabord montrer comment linariser un
systme non linaire autour dun point donn de lespace dtat. Ensuite, au paragraphe 6.3, nous montrerons
comment stabiliser les systmes non linaires par les rgulateurs proposs au chapitre prcdent. Quelques exemples
illustratifs seront alors traits en dtail aux paragraphes 6.4, 6.5 et 6.6.
6.2 Linarisation dun systme
6.2.1 Rappel sur la linarisation dune fonction
Soit f : R
n
R
p
une fonction direntiable. Au voisinage dun point x R
n
le dveloppement de Taylor de f au
premier ordre autour de x nous donne
f (x) f ( x) +
df
dx
( x) (x x) , (6.1)
avec
df
dx
( x) =
_
_
_
_
_
_
f
1
x
1
( x)
f
1
x
2
( x) . . .
f
1
xn
( x)
f
2
x
1
( x)
f
2
x
2
( x) . . .
f
2
xn
( x)
.
.
.
.
.
.
.
.
.
fp
x
1
( x)
fp
x
2
( x) . . .
fp
xn
( x)
_
_
_
_
_
_
.
Cette matrice est appele matrice jacobienne. Considrons par exemple la fonction
f
_
x
1
x
2
_
=
_
x
2
1
x
2
x
2
1
+x
2
2
_
.
87
88 Commande par espace dtat
La matrice jacobienne de f en x est
df
dx
(x) =
_
f
1
x
1
(x)
f
1
x
2
(x)
f
2
x
1
(x)
f
2
x
2
(x)
_
=
_
2x
1
x
2
x
2
1
2x
1
2x
2
_
.
Autour du point x = (1, 2), on a, daprs (6.1),
f
_
x
1
x
2
_

_
2
5
_
+
_
4 1
2 4
__
x
1
1
x
2
2
_
=
_
4 + 4x
1
+x
2
5 + 2x
1
+ 4x
2
_
.
Le calcul de matrice jacobienne est facilit par le calcul formel. Mi. peut ainsi dobtenir cette matrice par les
instructions suivantes :
export(linalg)
J :=jacobian([x1^2*x2,x1^2+x2^2],[x1,x2])
J0 :=subs(J(x1,x2),x1=1,x2=2)
o J et J0 reprsentent respectivement les matrices
df
dx
(x) =
_
2x
1
x
2
x
2
1
2x
1
2x
2
_
et
df
dx
( x) =
_
4 1
2 4
_
.
6.2.2 Linarisation du systme autour dun point
Considrons le systme dcrit par ses quations dtat
o :
_
x = f (x, u)
y = g(x, u),
o x est de dimension n, u est de dimension m et y est de dimension p. Posons
z =
_
x
u
_
et h(x, u) =
_
f(x, u)
g(x, u)
_
.
La fonction h(x, u) sera appele la fonction dvolution/observation. Autour du point z = ( x, u), nous avons
h(z) h(z) +
dh
dz
(z) (z z) ,
avec
dh
dz
(z) =
_
_
_
h
1
z
1
(z)
h
1
z
2
(z) . . .
h
2
z
1
(z)
h
2
z
2
(z) . . .
.
.
.
.
.
.
_
_
_.
Cette matrice jacobienne peut se mettre sous la forme
dh
dz
(z) =
_
A B
C D
_
,
o A, B, C, D sont respectivement de dimension nn, nm, pn et p m. Notons que cette dnition pour les
matrices A, B, C, D est quivalente la suivante, plus classique :
A =
f
x
( x, u) , B =
f
u
( x, u) ,
C =
g
x
( x, u) , D =
g
u
( x, u) .
Commande linaire des systmes non linaires 89
Ainsi, autour du point z = ( x, u), nous avons
_
f (x, u)
g(x, u)
_
= h(x, u)
h( x, u) +
dh
dz
(z)
_
x x
u u
_
=
_
f ( x, u)
g( x, u)
_
+
_
A B
C D
__
x x
u u
_
.
Autour du point ( x, u), le comportement de o sapproxime donc par les quations dtat suivantes :
_
x = f ( x, u) +A(x x) +B(u u)
y = g( x, u) +C(x x) +D(u u) .
Il sagit dun systme ane (car sa fonction dvolution/observation est ane) qui est appel systme tangent
o au point ( x, u).
6.2.3 Linarisation du systme autour dun point de fonctionnement
Un point ( x, u) est un point de fonctionnement (aussi appel point de polarisation) si f ( x, u) = 0. Si u = 0, on
parle de point dquilibre. Remarquons tout dabord que si x = x et si u = u, alors x = 0, cest--dire que le
systme nvolue plus si on maintient la commande u = u et sil est dans ltat x. Dans ce cas, la sortie y a pour
valeur y = y = g( x, u). Autour du point de fonctionnement ( x, u), le systme o admet pour systme tangent :
_
x = A(x x) +B(u u)
y = y +C(x x) +D(u u) .
Posons u = u u, x = x x et y = y y. Ces vecteurs sont appels les variations de u, x et y. Pour des petites
variations u, x, y, on a
_
d
dt
x = A x +B u
y = C x +D u.
Le systme ainsi form est appel systme linaris de o autour du point de fonctionnement ( x, u).
6.2.4 Exemple du systme proies-prdateurs
Considrons nouveau le systme proies-prdateurs de Lotka-Volterra, dj vu au paragraphe 3.3.1 page 42, et
donn par
o :
_
x
1
= (1 x
2
) x
1
x
2
= (1 +x
1
) x
2
.
Rappelons que
_
x
1
x
2
_
=
_
1

_
.
90 Commande par espace dtat
est un point dquilibre. Autour de ce dernier,
f (x) f ( x) +
df
dx
( x) (x x)
=
_
1 x
2
x
1
x
2
1 + x
1
__
x
1
x
1
x
2
x
2
_
=
_
0

0
__
x
1

x
2

_
.
Le systme linaris sobtient en posant x
1
= x
1
x
1
et x
2
= x
2
x
2
. Il est donn par
d
dt
x =
_
0

0
_
x.
Les valeurs propres sobtiennent en calculant les racines du polynme caractristique. Puisque
det
_
s

s
_
= s
2
+ 1,
les valeurs propres sont i. Elles correspondent un systme oscillant. Sous Mi. le calcul prcdent se traduit
par :
export(linalg)
J :=jacobian([(1-a*x2)*x1,(-1+b*x1)*x2],[x1,x2])
J0 :=subs(J(x1,x2),x1=1/b,x2=1/a)
charpoly(J0,s)
o charpoly(J0,s) calcule le polynme caractristique de la matrice J0.
6.2.5 Exemple du pendule simple
On rappelle (voir page 21) que les quations dtat dun pendule simple sont donnes par
_

_
_
x
1
x
2
_
= f (x, u) =
_
x
2
mg sinx
1
+u
m
2
_
y = g(x, u) = sinx
1
.
Puisque la matrice jacobienne de h(x, u), la fonction volution/observation, est
dh
d(x,u)
(x, u) =
_
_
_
0 1 0
g cos x
1

0
1
m
2
cos x
1
0 0
_
_
_,
au point ( x = (0, 0), u = 0), le systme linaris est dcrit par les quations dtat suivantes :
_

_
x =
_
0 1

0
_
x +
_
0
1
m
2
_
u
y =
_
0
_
x.
Commande linaire des systmes non linaires 91
Sous Mi., ce calcul peut tre eectu grce aux instructions suivantes :
export(linalg)
J :=jacobian([x2,(-l*m*g*sin(x1)+u)/(m*l^2),l*sin(x1)]
,[x1,x2,u])
J0 :=subs(J(x1,x2,u),x1=0,x2=0,u=0)
simplify(J0)
6.2.6 Exemple du vrin
On considre nouveau le vrin modlis au paragraphe 2.5.3 de la page 33. Ses quations dtat sont donnes
par
o :
_

_
x
1
= x
2
x
2
=
ax
3
kx
1
m
x
3
=
x
3
x
1
_
x
2

u
a
_
.
Supposons que x
1
> 0 et calculons lensemble des points de fonctionnement ( x, u) possibles pour o. La condition
x = 0 donne
_

_
x
2
= 0
ax
3
kx
1
= 0
x
1
_
x
2

u
a
_
= 0
soit
_

_
x
2
= 0
ax
3
kx
1
= 0
u = 0
Les points de fonctionnement sont donc de la forme
( x, u) =
_
x
1
, 0,
k
a
x
1
, 0
_
.
Direncions maintenant o autour du point de fonctionnement ( x, u) an den obtenir une approximation ane.
Sous Mi. , on tape
export(linalg)
J :=jacobian([x2,(a*x3-k*x1)/m,-(x3/x1)*(x2-u/a)]
,[x1,x2,x3,u])
J0 :=subs(J(x1,x2,x3,u),x1=x1bar,x2=0,x3=k*x1bar/a,u=0)
simplify(J0)
on obtient
df
d(x,u)
( x, u) =
_
_
_
0 1 0 0

k
m
0
a
m
0
0
k
a
0
k
a
2
_
_
_.
Le systme linaris sexprime donc par
x =
_
_
_
0 1 0

k
m
0
a
m
0
k
a
0
_
_
_(x x) +
_
_
_
0
0
k
a
2
_
_
_u.
92 Commande par espace dtat
On remarque que les coecients des matrices A et B ne dpendent pas de x. Ceci est assez rare, et signie que le
comportement dune commande linaire ne dpendra pas du point de fonctionnement choisi. Notons que labsence
de matrice C et D dans le systme linaris est une consquence du fait que le systme non linaire considr soit
autonome (cest--dire sans sortie).
6.3 Stabilisation dun systme non linaire
6.3.1 Principe
Considrons le systme dcrit par ses quations dtat
o :
_
x = f (x, u)
y = g(x),
(6.2)
dont ( x, u) constitue un point de fonctionnement. Soit x
c
= Ex le sous-vecteur des variables consignes. Rappelons
quautour du point de fonctionnement, o se comporte comme le systme ane suivant
_
x = A(x x) +B(u u)
y = y +C(x x)
o A, B, C sont obtenues par le calcul de la matrice jacobienne de la fonction volution/observation au point
( x, u). Puisque le vecteur x = x x est aussi un vecteur dtat pour ce systme, ce dernier se comporte, autour
de son point de fonctionnement, comme le systme suivant
_
d
dt
x = A x +B(u u)
y = y +C x.
An que notre systme se comporte comme un systme linaire (et non ane), construisons les variables u = u u
et y = y y, comme reprsent sur la gure ci-dessous.
Transformation dun systme ane (au voisinage
du point de fonctionnement) en un systme linaire
Vu de lextrieur, et pour de petites entres, le systme en gris se comporte comme le systme linaire dquations
_
d
dt
x = A x +B u
y = C x,
qui est en fait le systme linaris du systme non linaire (6.2). Nous pouvons alors construire un rgulateur
L
pour ce systme linaire grce lalgorithme IioiKLH(A, B, C, E, p
com
, p
obs
) de la page 85.
Commande linaire des systmes non linaires 93
Nous savons que, lorsque la consigne w entre dans
L
est constante, nous avons E x = w. Or, nous voudrions que
lentre du rgulateur w que nous fabriquons satisfasse w = Ex. Nous allons donc fabriquer un prcompensateur
pour construire w partir de w de telle faon que w = Ex lquilibre. On a
w = E x = E(x x) = w w,
o w = E x. Le rgulateur ainsi obtenu est reprsent sur la gure ci-dessous, dans le cadre pais.
Stabilisation dun systme non-linaire autour
dun point de fonctionnement par un rgulateur linaire
Ce rgulateur stabilise et dcouple notre systme non linaire autour de son point de fonctionnement. Un rcapi-
tulatif de la mthode pour calculer un rgulateur pour un systme non linaire est donn par le tableau 6.1. Cet
algorithme nous renvoie notre rgulateur dentres y, w et de sortie u sous la forme de ses quations dtat.
Algorithme IioiNL(in : f , g, E, p
com
, p
obs
, x, u; out : )
1 Vrier que f ( x, u) = 0;
2 y := g ( x) ; w := E x;
3 A :=
f
x
( x, u) ; B :=
f
u
( x, u) ; C :=
g
x
( x, u) ;
4 K := iioi(A, B, p
com
) ;
5 L :=
_
iioi
_
A
T
, C
T
, p
obs
__
T
;
6 H :=
_
E(ABK)
1
B
_
1
;
7 :=
_
d
dt
x = (ABKLC) x +BH(w w) +L(y y)
u = u K x +H(w w)
Tableau 6.1: Mthodologie suivre pour la conception dun rgulateur linaire pour un systme non-linaire
Exemple 6.3.1 Considrons le systme non linaire donn par les quations dtat
o :
_
x = 2x
2
+u
y = 3x,
que lon cherche stabiliser autour de ltat x = 2. Lintrt de cet exemple est que les vecteurs dtat, dentre
et de sortie sont tous des scalaires. Ainsi, toutes les matrices sont aussi scalaires et les calculs peuvent se faire
la main. An davoir f( x, u) = 0, il nous faut 2 x
2
+u = 0, soit u = 8. Si nous voulons qu lquilibre y = w,
94 Commande par espace dtat
il faudra prendre E = 3. Si de plus nous voulons que tous les ples du systme boucl soient gaux 1, il faudra
p
com
= p
obs
= 1. La linarisation autour de ( x, u) nous donne A = 8, B = 1 et C = 3. Pour K et L, il faut
rsoudre les deux quations polynomiales
_
det (sI A+BK) = s + 1
det
_
sI A
T
+C
T
L
T
_
= s + 1
cest--dire s 8 + K = s + 1 et s 8 + 3L = s + 1. Donc K = 9 et L = 3. De plus y = 6, w = 3 x = 6.
H =
_
3 (8 9)
1
_
1
= 1/3. Donc le rgulateur scrit
:
_
d
dt
x = 10 x + (w 6) /3 + 3 (y 6)
u = 8 9 x + (w 6) /3.
6.3.2 Avec un observateur tendu
Rappelons (voir paragraphe 5.4 de la page 79) que dans le rgulateur renvoy par lalgorithme IioiNL du
tableau 6.1, se cache un simulateur du systme linaris de notre systme non linaire o rguler. Il est possible
de remplacer ce simulateur par un simulateur non linaire ayant les mmes quations que o lui-mme. Le rgulateur
gnr par lalgorithme prcdent peut scrire
:
_
d
dt
x = A x +B(K x +H(w w)) L(C x + y) +Ly
u = u K x +H(w w) .
Or,
A x +B(K x +H(w w)) // voir quation dvolution de
= A x +B(u u) // quation dobservation de
= f ( x, u) +A x +B(u u) // puisque f ( x, u) = 0
f ( x + x, u) // Taylor dordre 1 en ( x, u).
= f ( x + x, u K x +H(w w)) // quation dobservation de
et
C x + y // voir quation dvolution de
= g( x) +C x // puisque y = g ( x)
g( x + x) // Taylor lordre 1 autour du point x.
Nous pouvons donc remplacer le rgulateur par le suivant

e
:=
_
d
dt
x = f ( x + x, u K x +H(w w)) L(g( x + x) +y)
u = u K x +H(w w) ,
qui intgre non pas un simulateur du systme linaris, mais un simulateur du systme non linaire (les matrices
A, B, C napparaissent plus dans ce rgulateur). Lobservateur du rgulateur ainsi obtenu est plus proche de la
ralit et se trompe donc moins. On obtient ainsi un rgulateur plus performant.
6.4 Stabilisation du pendule invers
On considre nouveau le systme modlis au paragraphe 2.3.5 de la page 22. Rappelons que lentre u est la
force exerce sur le chariot de masse M, x est la position du chariot et est langle entre le pendule et la verticale.
Commande linaire des systmes non linaires 95
En prenant pour vecteur dtat x =
_
x, , x,

_
, et en supposant que seule la position du chariot x est mesure,
les quations dtat sont donnes par :
_

_
_
_
_
_
_
x
1
x
2
x
3
x
4
_
_
_
_
_
=
_
_
_
_
_
_
x
3
x
4
msinx
2
(g cos x
2
x
2
4
)+u
M+msin
2
x
2
sinx
2
((M+m)gmx
2
4
cos x
2
)+cos x
2
u
(M+msin
2
x
2
)
_
_
_
_
_
_
y = x
1
(voir (2.3) page 23). An de linariser ce systme, il nous faut calculer la matrice jacobienne de la fonction
volution/observation h(x, u) puis lvaluer au point de fonctionnement x = (0, 0, 0, 0) et u = 0. Nous obtenons
la matrice
dh
d(x,u)
( x, u) =
_
_
_
_
_
_
_
0 0 1 0 0
0 0 0 1 0
0
mg
M
0 0
1
M
0
(M+m)g
M
0 0
1
M
1 0 0 0 0
_
_
_
_
_
_
_
qui nous amne au systme linaris suivant :
_

_
x =
_
_
_
_
_
0 0 1 0
0 0 0 1
0
mg
M
0 0
0
(M+m)g
M
0 0
_
_
_
_
_
x +
_
_
_
_
_
0
0
1
M
1
M
_
_
_
_
_
u
y = (1 0 0 0) x.
Tous ces calculs peuvent tre obtenus par Mi. grce aux instructions suivantes
export(linalg)
J :=jacobian(
[x3, x4,
(m*sin(x2)*(g*cos(x2)-l*x4^2)+u)
/(M+m*sin(x2)^2),
(sin(x2)*((M+m)*g-m*l*x4^2*cos(x2))+cos(x2)*u)
/(l*(M+m*sin(x2)^2)),
x1],[x1,x2,x3,x4,u])
J0 :=subs(J(x1,x2,x3,x4,u),x1=0,x2=0,x3=0,x4=0,u=0)
J1 :=simplify(J0)
Il est ais de vrier que le systme linaris de notre pendule invers est observable et commandable pour
les valeurs nominales des paramtres. Lalgorithme IioiKLH de la page 85 peut donc tre poursuivi an
dobtenir notre rgulateur. Un programme de la simulation du pendule invers rgul est donn dans le chier
PenduleInverseAsservi.sce. Une version complte et comment de ce programme est donne ci-dessous. Le
programme est compos de trois fonctions et du programme principal.
//------------------------------------------------------
// fonction qui dessine le pendule inverse
function draw(x,couleur);
96 Commande par espace dtat
xbasc(); //efface lecran
isoview(-2,3,-1,2); //regle les echelles
//dessin du pendule
xpoly([ x(1), x(1)-l*sin(x(2))], [0, l*cos(x(2))]);
//dessin du chariot
xpoly([x(1)-.5,x(1)+.5,x(1)+.5,x(1)-.5,x(1)-.5],
[0,0,-.25,-.25,0]);
endfunction
//------------------------------------------------------
//fonction pour le calcul du regulateur
function [Ar,Br,Cr,Dr]=RegulKLH(A,B,C,E,pcom,pobs);
K=ppol(A,B,pcom); //matrice pour la regulation
L=ppol(A,C,pobs); //matrice pour lobservation
H=-inv(E*inv(A-B*K)*B); //matrice de pre-compensation
Ar=A-B*K-L*C;Br=[B*H L]; //matrices detat pour
Cr=-K;Dr=[H,zeros(B*C)] //le regulateur
endfunction
//------------------------------------------------------
//fonction devolution du pendule inverse
function v=f(x,u)
v=[x(3);
x(4);
(m*sin(x(2))*(g*cos(x(2))-l*x(4)^2)+u)
/(M+m*sin(x(2))^2);
(sin(x(2))*((M+m)*g-m*l*x(4)^2*cos(x(2)))+u*cos(x(2)))
/(l*(M+m*sin(x(2))^2))];
endfunction;
//------------------------------------------------------
//debut du programme principal
rand(normal); //mode gaussien pour le generateur aleatoire
m=1;M=5;l=1;g=9.81; //initialisation des parametres
dt=0.005; //pas dechantillonnage
//calcul des matrices detat du systeme linearise
//necessaires uniquement pour la conception du regulateur
A=[0 0 1 0;0 0 0 1;0 m*g/M 0 0;0 (M+m)*g/(l*M) 0 0];
B=[0;0;1/M;1/(l*M)];
C=[1 0 0 0];
E=[1 0 0 0]; //matrice de consigne
[Ar,Br,Cr,Dr]=RegulKLH(A,B,C,E,[-2 -2 -2 -2],[-2 -2 -2 -2])
x=[0;0.02;0;0]; //etat initial pour le systeme
xr=[0;0;0;0]; //etat initial pour le regulateur
for k=1:10000
w=2*sign(sin(k*0.001)); //la consigne change par a-coup
y=C*x+0.003*rand(); //la sortie est bruitee
u=Cr*xr+Dr*[w;y]; //calcul de la commande
Commande linaire des systmes non linaires 97
xr=xr+(Ar*xr+Br*[w;y])*dt; //evolution du regulateur
x=x+f(x,u)*dt; //evolution de letat
draw(x); //dessine le pendule inverse
end
//------------------------------------------------------
6.5 Stabilisation dun monocycle
On rappelle (voir quation (2.5) page 26) que les quations dtat du monocycle sont de la forme
_

_
_
_
_
_
_
x
1
x
2
x
3
x
4
_
_
_
_
_
=
_
_
_
_
_
_
_
x
3
x
4

3
(
2
x
2
4

g
cos x
2) sinx
2
+(
2
+
3
cos x
2
)u

2
3
cos
2
x
2
(
1

2
3
x
2
4
cos x
2) sinx
2
(
1
+
3
cos x
2
)u

2
3
cos
2
x
2
_
_
_
_
_
_
_
y = x
1
o
1
,
2
,
3
,
g
sont des constantes. Nous avons rajout lquation dobservation y = x
1
an de supposer une
situation o seul langle de la roue est mesur. Linarisons avec Mi. ce systme autour du point de fonc-
tionnement u = 0, x = 0 :
export(linalg)
J :=jacobian( [
x3, x4,
(m3*(m2*x4^2-mg*cos(x2))*sin(x2)+(m2+m3*cos(x2))*u)
/(m1*m2-m3^2*cos(x2)^2),
((m1*mg-m3^2*x4^2*cos(x2))*sin(x2)-(m1+m3*cos(x2))*u)
/(m1*m2-m3^2*cos(x2)^2),
x1],
[x1,x2,x3,x4,u])
J0 :=subs(J(x1,x2,x3,x4,u),x1=0,x2=0,x3=0,x4=0,u=0)
J1 :=simplify(J0)
On obtient
dh
d (x,u)
( x, u) =
_
_
_
_
_
_
_
_
0 0 1 0 0
0 0 0 1 0
0

3

2
3
0 0

2
+
3

2
3
0

1

2
3
0 0

1
+
3

2
3
1 0 0 0 0
_
_
_
_
_
_
_
_
au point ( x = (0, 0), u = 0). Le systme linaris est dcrit par les quations dtat suivantes :
_

_
x =
_
_
_
_
_
_
0 0 1 0
0 0 0 1
0

3

2
3
0 0
0

1

2
3
0 0
_
_
_
_
_
_
x +
_
_
_
_
_
_
0
0

2
+
3

2
3


1
+
3

2
3
_
_
_
_
_
_
u
y =
_
1 0 0 0
_
x
98 Commande par espace dtat
Lexcution complte de lalgorithme IioiNL du tableau 6.1 page 93 nous gnre ainsi notre rgulateur. Un pro-
gramme complet de la simulation du Segway stabilis par ce rgulateur est donn par le chier SegwayAsservi.sce.
6.6 Conduite automatique dune voiture
La commande des systmes non holonomes (comme les robots roues) est loin dtre facile car souvent il arrive
que le systme considr soit commandable alors que son linaris ne lest pas. Prenons le cas dune voiture
larrt, il est possible de bouger le vhicule latralement par une suite de manuvres semblables celles eectues
lorsquon essaie de garer sa voiture alors la place laisse libre est peine susante. Pourtant, cette mme suite
de manuvres eectues sur le linaris de la voiture nengendrera aucun mouvement latral. Une autre dicult
que nous allons rencontrer dans ce paragraphe est que parfois, on ne souhaite pas stabiliser le systme autour dun
point de fonctionnement mais lui donner un mouvement prcis. Cest le cas pour la conduite automatique : aller
plein nord avec une vitesse de 50 km.h
1
ne correspond pas un point de fonctionnement pour la voiture car sa
variable dtat y nest pas constante (elle augmente une vitesse 50 km.h
1
et tend donc vers linni).
A travers ce paragraphe, nous allons montrer comment utiliser les techniques linaires pour arriver concevoir
un rgulateur pour la conduite automatique. Nous aurons besoin pour cela dimaginer un monde idal pour le
rgulateur o le modle associ admet un point de fonctionnement qui correspond au comportement voulu pour
notre systme rel.
Voiture se dplaant le long dune route
Dans ce paragraphe, nous allons traiter le cas dune voiture (celle modlise au paragraphe 2.4.3 page 27) qui
roule sur une route inconnue. La voiture est quipe
dun tlmtre mesurant la distance latrale d entre le milieu de lessieu arrire de la voiture et le bord de la
route (voir gure),
dun capteur de vitesse qui mesure la vitesse v des roues avant,
et dun capteur dangle qui mesure langle du volant (pour simplier, nous allons supposer que correspond
aussi langle que forment les roues avant avec laxe de la voiture).
On souhaite que la voiture se dplace vitesse constante le long de cette route. Bien sr, il est hors de question
de mettre dans la connaissance du rgulateur la forme de la route car elle est inconnue. De plus, les variables de
position et dorientation de la voiture ne sont pas mesures (cest--dire quon ne dispose ni de boussole, ni de
capteur GPS). Or ces quantits sont souvent inutiles pour atteindre lobjectif x, savoir suivre la route. En
eet, ne sommes nous pas, nous-mmes, capables de conduire une voiture sur une route sans avoir la carte des
environs, sans savoir o nous sommes et o est le nord? Ce qui nous intresse lorsque nous conduisons une voiture,
Commande linaire des systmes non linaires 99
cest la position relative de la voiture par rapport la route. Le monde idal pour le rgulateur est voqu par la
gure.
Modle imagin par le rgulateur : la voiture se dplace lat-
ralement, comme sur un jeu vido, et le bord de la route reste
xe
Il doit tre tel que le modle utilis par le rgulateur possde des variables dtat dcrivant cette position relative
de la voiture par rapport la route et que la constance des variables dtat de ce modle corresponde une
situation relle o la voiture suit la route une vitesse constante.
Tout dabord, dans le paragraphe 6.6.1, nous allons donner la fonction dobservation de notre voiture roulant sur
un circuit en forme de polygone (voir gure).
Systme rel : voiture tournant autour dun polygone
Ensuite, nous imaginerons dans le paragraphe 6.6.2 un monde idal pour le rgulateur. Au paragraphe 6.6.3 nous
implmenterons le rgulateur ainsi conu sur une voiture tournant autour dun circuit.
6.6.1 Fonction dobservation pour le systme
Rappelons que la fonction dvolution de notre voiture est dj connue (voir formule (2.6) page 28). Pour lex-
pression de la fonction dobservation, nous avons besoin de calculer la distance renvoye par le tlmtre et qui
correspond la distance entre le milieu de lessieu arrire et le polygone form par le circuit. Pour cela, le thorme
suivant nous sera utile.
Thorme 6.6.1 Soient m, a, b trois points de R
2
et

u un vecteur. La demi-droite c
_
m,

u
_
de sommet m et
100 Commande par espace dtat
de vecteur directeur

u intersecte le segment [ab] si et seulement si
_
det
_
a m,

u
_
. det
_
b m,

u
_
0
det(a m, b a). det(

u, b a) 0.
(6.3)
Dans ce cas, la distance du point m au segment [ab] suivant le vecteur

u est donne par
d =
det(a m, b a)
det(

u, b a)
.
Remarque 6.6.1 Pour comprendre la preuve qui suit, il est important de se rappeler la signication du signe
du dterminant de deux vecteurs

u et

v de R
2
. On a (i) det(

u,

v ) > 0 si

v est sur la gauche de

u, (ii)
det(

u,

v ) < 0 si

v est sur la droite de

u et (iii) det(

u,

v ) = 0 si

u et

v son colinaires. Ainsi, par exemple,
sur la gure ci-dessous gauche, det(a m,

u) > 0 et det(b m,

u) < 0. Rappelons aussi que le dterminant


est une forme multilinaire, cest--dire que
det(au +bv, cx +dy) = adet(u, cx +dy) +b det(v, cx +dy)
= ac det(u, x) +bc det(v, x)
+addet(u, y) +bddet(v, y).
Preuve : La droite T
_
m,

u
_
qui passe par le point m et de vecteur directeur

u coupe le plan en 2 demi-plans :
ceux qui satisfont det(z m,

u) 0 et ceux qui satisfont det(z m,

u) 0. Elle coupe donc le segment [ab] si


a et b sont dans des demi-plans dirents (voir gure), cest--dire si det
_
a m,

u
_
. det
_
b m,

u
_
0.
La droite T(m, u) coupe le segment [ab]
Dans la situation de gauche, la demi-droite c
_
m,

u
_
de sommet m et de vecteur directeur

u coupe le segment
[ab] . Cela nest pas le cas sur la sous-gure de droite. Cette condition nest donc pas susante pour armer que
c
_
m,

u
_
coupera [ab] . Supposons que det
_
a m,

u
_
.det
_
b m,

u
_
0, cest--dire que la droite T
_
m,

u
_
coupe le segment [ab] . Les points de la demi-droite c
_
m,

u
_
satisfont tous z = m+

u, 0. Comme lillustre
la gure ci-dessous, m sur trouve sur le segment [ab] lorsque les vecteurs m+

ua et b a sont colinaires
(voir gure), cest--dire (voir remarque 6.6.1, (iii)) que lorsque satisfait det(m+

ua, b a) = 0.
Commande linaire des systmes non linaires 101
m se trouve sur le segment [ab] lorsque
les vecteurs m+

ua et b a sont colinaires
Du fait de la multilinarit du dterminant, cette quation se rcrit
det(ma, b a) +det(

u, b a) = 0.
En isolant , on obtient
=
det(a m, b a)
det(

u, b a)
.
Si 0, alors reprsente la distance d parcourue par le faisceau partant de m dans la direction

u avant de
rencontrer le segment. Si < 0, cela signie que le faisceau ne rencontrera jamais le segment car ce dernier est
du mauvais ct. La condition 0 correspond la deuxime ingalit de la condition (6.3).
La fonction dobservation pour notre systme, donne par le programme Scii.i du tableau 6.2, est une cons-
quence directe de ce thorme. Rappelons que cette fonction nous renvoie la distance d mesure par le tlmtre, la
vitesse v des roues avant et langle du volant . La ligne 2 calcule le vecteur u qui indique la direction du tlmtre
laser et le point m, do part le laser. La distance d renvoye doit tre la plus petite (voir ligne 7) parmi toutes
les distances susceptibles (voir lignes 5 et 6) dtre renvoyes par chacun des segments. Dans ce programme, Aj et
Bj reprsentent des matrices contenant les points extrmes a
j
et b
j
des sommets du jime segment. Notons enn
que cette fonction ne sera pas utilise par le rgulateur, mais uniquement an de simuler notre systme rel. En
eet, notre rgulateur ne connat pas la forme du polygone autour duquel la voiture est cense tourner : il pense
que la voiture est en train de longer un mur droit et inni. Sa fonction dobservation est donne au paragraphe
suivant.
6.6.2 Fonction dobservation pour le rgulateur
An de concevoir le modle pour notre rgulateur, intressons nous la position relative de la voiture par rapport
au bord de la route. Nous allons pour cela supposer que notre voiture roule une distance x du bord. Ce modle
doit possder les mmes entres et sorties que le systme rel, savoir deux entres (lacclration des roues avant
v et la vitesse angulaire du volant

) et trois sorties (la distance d du milieu de lessieu arrire au bord de la
route, la vitesse v des roues avant et langle du volant). Du fait que seule la position relative de la voiture nous
intresse, notre modle ne doit possder que quatre variables dtats : x, , v, , comme reprsent sur la gure.
Attention, la signication de la variable x a lgrement chang par rapport au contexte du paragraphe 2.4.3 page
102 Commande par espace dtat
1 function y=g(x)
2 u=[sin(x(3)) ;-cos(x(3))] ; m=[x(1) ;x(2)] ; d=%inf ;
3 for j=1 :size(Aj,2)
4 a=Aj( :,j) ; b=Bj( :,j) ;
5 if (det([a-m u])*det([b-m u]) <= 0)&
6 (det([a-m b-a])*det([u b-a])>=0)
7 d=min(det([a-m b-a])/det([u b-a]),d) ;
8 end
9 end
10 y=[d ;x(4) ;x(5)] ;
11 endfunction
Tableau 6.2: Fonction dobservation de la voiture tournant autour dun polygone
27. En saidant de la modlisation faite au paragraphe 2.4.3, on obtient pour notre modle, les quations dtat
suivantes
_

_
_
_
_
_
_
x

_
_
_
_
_
=
_
_
_
_
_
v cos cos
v sin
L
u
1
u
2
_
_
_
_
_
y =
_
_
_
x
sin
v

_
_
_
,
o L est la distance entre les essieux avant et arrire. Choisissons pour point de fonctionnement
x = (5, /2, 7, 0) et u = (0, 0)
qui correspond une vitesse de 7 ms
1
et une distance de 5 m entre le milieu de lessieu arrire et le bord de la
route. La matrice jacobienne de la fonction dvolution-observation
h :
_

_
R
6
R
7
_
_
_
_
_
_
_
_
_
x

u
1
u
2
_
_
_
_
_
_
_
_
_

_
_
_
_
_
_
_
_
_
_
_
_
v cos cos
v sin
L
u
1
u
2
x
sin
v

_
_
_
_
_
_
_
_
_
_
_
_
est donne par
_
_
_
_
_
_
_
_
_
_
_
_
0 v cos sin cos cos v sin cos 0 0
0 0
sin
L
v
cos
L
0 0
0 0 0 0 1 0
0 0 0 0 0 1
1
sin

x
sin
2

cos 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
_
_
_
_
_
_
_
_
_
_
_
_
.
Commande linaire des systmes non linaires 103
Cette matrice a t obtenue par Mi. grce aux instructions suivantes.
export(linalg)
J :=jacobian([
-v*cos(delta)*cos(theta),
v*sin(delta)/L,
u1, u2, x/sin(theta), v, delta],
[x,theta,v,delta,u1,u2])
Son valuation autour du point de fonctionnement et pour L = 3 est obtenue par
J0 :=subs(J(x,theta,v,delta,u1,u2),
x=5,theta=PI/2,v=7,delta=0,u1=0,u2=0)
J1 :=subs(J0(L),L=3)
J2 :=simplify(J1)
Mi. obtient
dh
d( x, u)
( x, u) =
_
_
_
_
_
_
_
_
_
_
_
_
0 7 0 0 0 0
0 0 0
7
3
0 0
0 0 0 0 1 0
0 0 0 0 0 1
1 0 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
_
_
_
_
_
_
_
_
_
_
_
_
=
_
A B
C D
_
.
Donc les matrices du systme linaris sont
A =
_
_
_
_
_
0 7 0 0
0 0 0
7
3
0 0 0 0
0 0 0 0
_
_
_
_
_
, B =
_
_
_
_
_
0 0
0 0
1 0
0 1
_
_
_
_
_
,
C =
_
_
_
1 0 0 0
0 0 1 0
0 0 0 1
_
_
_
, D =
_
_
_
0 0
0 0
0 0
_
_
_
.
Prenons pour variables consignes x et v, ce qui signie que nous voulons nos consignes w
1
et w
2
correspondent
la distance au bord de la route et la vitesse de la voiture. La matrice de consigne est donc
E =
_
1 0 0 0
0 0 1 0
_
.
En choisissant pour ples
p
com
= p
obs
= (2; 2; 2; 2) ,
lalgorithme IioiKLH(in : A, B, C, E, p
com
, p
obs
) du tableau 5.2 page 85 nous gnre le rgulateur suivant :
_

_
d
dt
x =
_
_
_
_
_
4 7 0 0
0.6 0 0 0
0 0 4 0
0.5 5.1 0 8
_
_
_
_
_
x +
_
_
_
_
_
0 0 4 0 0
0 0 0.6 0 2.3
0 2 0 2 0
0.5 0 0 0 2
_
_
_
_
_
_
w
y
_

_
_
_
_
_
20
2.9
28
2.4
_
_
_
_
_
u =
_
0 0 2 0
0.49 5.14 0 6
_
x +
_
0 2
0.48 0
__
w
_
5
7
__
.
104 Commande par espace dtat
Une simulation du comportement de ce rgulateur sur ce modle de voiture simpli (o un seul mur droit existe)
est donne par le chier VoitureNordAsservie.sce.
6.6.3 Bouclage
Le rgulateur que nous venons juste de proposer a t conu pour un modle idalis de notre voiture, mais qui ne
correspond pas exactement notre systme rel. Rappelons que notre voiture est un systme dordre 5 alors que
sa version idalise utilise par le rgulateur est dordre 4. Or, ces deux systmes admettent les mmes entres (u
1
et u
2
) et les mmes sorties (d, v, ). Il est donc possible de brancher le rgulateur conu pour notre systme idal
sur le systme rel. Il nous reste esprer que le comportement engendr pour notre systme sera convenable.
Le programme de simulation de notre commande est proche de celui du tableau 3.9, page 53. La mme fonction
dvolution f est utilise. En ce qui concerne la fonction draw, il nous faut rajouter le dessin du faisceau lanc par
le tlmtre ainsi que le dessin du circuit. Cela correspond aux instructions suivantes :
Aj=[-10 -10 0 10 20 32 35 30 20 0 ;
-5 5 15 20 20 15 10 0 -3 -6 ] ;
Bj=[Aj( :,2 :$),Aj( :,1)] ;
xfpoly(Aj(1, :),Aj(2, :)) ;
xpoly([x(1),x(1)+sin(x(3))*d],
[x(2),x(2)-cos(x(3))*d]) ;
Le programme de simulation de la voiture sur circuit est donn par le tableau 6.3. En lanant ce programme, on
saperoit que la voiture tourne correctement autour du circuit, mais que lorsquelle franchit un sommet anguleux
du polygone, elle est dstabilise pendant une petite seconde. Ceci est d au fait que le rgulateur (pensant que
la route est droite linni) est surpris par ce changement brutal de direction. Ces changements de direction dans
la route sont considrs par le rgulateur comme des perturbations.
Commande linaire des systmes non linaires 105
Programme VoitureAsservieCircuit.sce
A=[0 7 0 0 ;0 0 0 7/3 ;0 0 0 0 ;0 0 0 0] ;
B=[0 0 ;0 0 ;1 0 ;0 1] ;
C=[1 0 0 0 ;0 0 1 0 ;0 0 0 1] ;
E=[1 0 0 0 ;0 0 1 0] ;
K=ppol(A,B,-2*[1,1,1,1]) ;
L=(ppol(A,C,-2*[1,1,1,1])) ;
H=-inv(E*inv(A-B*K)*B) ;
Ar=A-B*K-L*C ;Br=[B*H L] ;Cr=-K ;
ubar=[0 ;0] ;xbar=[5 ;1.57 ;7 ;0] ;wbar=E*xbar ;
ybar=[xbar(1)/sin(xbar(2)) ;xbar(3) ;xbar(4)] ;
xr=[0 ;0 ;0 ;0] ;w=[5 ;7] ;
x=[-15 ;0 ;%pi/2 ;7 ;0.1] ;dt=0.07 ;
for k=1 :500,
u=ubar+Cr*xr+H*(w-wbar) ;y=g(x) ;
x1=x+f(x,u)*dt ;
xr1=xr+(Ar*xr+Br*[w-wbar ;y-ybar])*dt ;
x=x1 ; xr=xr1 ;
end ;
Tableau 6.3: Simulation de la voiture conduite automatiquement
106 Commande par espace dtat
Chapitre 7
Commande non linaire des systmes non
linaires
7.1 Introduction
Au chapitre 6, nous avons montr comment concevoir des rgulateurs pour les systmes non linaires, lorsque le
vecteur dtat reste localis dans une zone de petite taille de lespace dtat. Lide tait de linariser le systme
non linaire rguler et dutiliser les techniques dveloppes au chapitre 5 pour la rgulation des systmes linaires.
Dans ce chapitre, nous allons chercher proposer des rgulateurs non linaires an de contraindre le vecteur dtat
rester dans une petite zone de lespace dtat. Contrairement lapproche linaire qui ore une mthodologie
gnrale mais limite au voisinage dun point de lespace dtat, les approches non linaires ne sappliquent qu
des classes limites de systmes, mais elles permettent dtendre la plage de bon fonctionnement du systme.
Il nexiste en eet pas de mthode gnrale pour stabiliser globalement les systmes non linaires. En revanche, il
existe une multitude de mthodes qui sappliquent des cas particuliers. Le but de ce chapitre est den prsenter
une assez reprsentative des mthodes existantes. Il sagit de la mthode de linarisation par bouclage. Aprs lavoir
introduite par un petit exemple au paragraphe 7.2 et prsent son principe au paragraphe 7.3, nous appliquerons
cette mthode la rgulation (par retour dtat) du problme des 3 bacs modlis au paragraphe 2.5.2 de la page
32, la commande de la voiture modlise au paragraphe 2.4.3 de la page 27, puis la commande du bateau
voile modlis au paragraphe 2.4.4 page 29.
7.2 Un petit exemple
Considrons le systme que lon cherche rguler :
_
x = x
3
+xu
y = exp(x).
(7.1)
On souhaiterait que sa sortie y soit gale une consigne suppose constante v. En drivant la sortie y nous
obtenons
y = xexp(x) = x
3
exp(x) +xexp(x) u.
107
108 Commande par espace dtat
Posons
u =
1
xexp(x)
_
x
3
exp(x) +v
_
, (7.2)
o v correspond la nouvelle entre (ou consigne). Le bouclage (7.2) transforme le systme (7.1) en un simple
intgrateur dcrit par lquation direntielle
o
L
: y = v.
Le bouclage (7.2) sappelle bouclage linarisant car il transforme le systme non linaire en un systme linaire. Le
systme ainsi obtenu peut tre stabilis par des techniques linaires classiques. Nous choisirons ici une commande
PI (proportionnelle et intgrale) de la forme
v =
P
(w y) +
I
_
t
0
(w() y ()) d
o w est la consigne. Les quations dtat de cette commande PI est donne par
_
z = w y
v =
I
z +
P
(w y) .
o z est la variable dtat associe lintgrateur. Donc les quations dtat dun rgulateur par retour dtat
NL
pour notre systme non linaire (7.1) sont donnes par

NL
:
_
z = w exp(x)
u =
1
xexp(x)
_
x
3
exp(x) +
I
z +
P
(w exp(x))
_
.
Ce bouclage est illustr par la gure.
Commande dun systme non-linaire par
la mthode de linarisation par bouclage
7.3 Principe de la linarisation par bouclage
7.3.1 Principe
Nous cherchons gnraliser ici la mthode dcrite au paragraphe prcdent. Une approche plus dtaille pourra
tre trouve dans le livre dAndra-Novel [3]. Considrons le systme non linaire dcrit par
_
x = f (x) +b(x)u
y = c(x)
dont le nombre dentres et de le nombre de sorties sont tous les deux gaux m. Lide de la linarisation par
bouclage, est de boucler le systme par une commande du type u = r(x, v), o v est la nouvelle entre, aussi
Commande non linaire des systmes non linaires 109
de dimension m. Cette opration ncessite que ltat soit compltement accessible. Si cela nest pas le cas, on se
doit de fabriquer un observateur, mais dans un contexte non linaire, cela est une opration trs dicile. Puisque
ici ltat est suppos accessible, y ne doit pas vraiment tre considre comme une sortie, mais plutt comme le
vecteur des variables consignes.
Pour eectuer ce bouclage, il nous faut exprimer les drives successives de chacun des y
i
en fonction de ltat et
de lentre. On sarrte de driver y
i
, ds que les entres commencent intervenir dans lexpression de la drive.
Nous disposons ainsi dune quation du type
_
_
_
_
y
(k
1
)
1
.
.
.
y
(km)
m
_
_
_
_
= A(x) u +b(x) , (7.3)
o k
i
dsigne le nombre de fois quil nous faut driver y
i
pour y voir apparatre une entre (voir les exemples
dans les paragraphes qui suivent pour une meilleure comprhension). Sous lhypothse que la matrice A(x) soit
inversible, le bouclage suivant
u = A
1
(x) (v b(x)) ,
o v est notre nouvelle entre (voir gure ci-dessous), forme un systme linaire o
L
de m entres m sorties dcrit
par les quations direntielles
o
L
:
_

_
y
(k
1
)
1
= v
1
.
.
. =
.
.
.
y
(km)
m
= v
m
.
Le systme non-linaire, une fois boucl,
devient linaire et dcoupl ;
il devient donc facile commander
Ce systme est linaire et compltement dcoupl (cest--dire que chaque entre v
i
agit sur une et une seule
sortie y
i
). Il est donc trs facile commander par les techniques classiques de commande par retour de sortie (voir
paragraphe 5.4 page 79). Ici, comme le systme commander est constitu de chanes dintgrateurs dcoupls,
nous utiliserons mrgulateurs de types PID (proportionnel intgral et drives) dont nous rappellerons les principes
au paragraphe 7.3.2. Notons que pour utiliser de tels rgulateurs, il est ncessaire de disposer des drives des
sorties. La remarque suivante explique comment les obtenir dans notre contexte de linarisation par bouclage.
110 Commande par espace dtat
Remarque 7.3.1 En analysant bien le cheminement pour obtenir lquation (7.3), on se rend compte que la j
i` eme
drive de la i
i` eme
sortie y
(j)
i
sexprime sous la forme
y
(j)
i
=

b
ij
(x) si j < k
i
y
(j)
i
= a
T
ij
(x).u +

b
ij
(x) si j = k
i
y
(j)
i
= a
ij
(x, u, u, u, . . . ) si j > k
i
Le coecient k
i
sappelle le degr relatif de la i
i` eme
sortie. Si on mesure ltat du systme x et son entre u, on
peut donc disposer de toutes les drives successives des sorties y
(j)
i
, tant que j reste infrieur ou gal k
i
. En
eet, en raison des bruits hautes frquences apparaissant dans les signaux, on ne peut pas disposer de la drive
des signaux par lutilisation de drivateurs de faon able. Nous avons donc une fonction analytique
:
R
m
R
(k
1
+1)...(k
m
+1)
(x, u) (x, u) = (y
1
, y
1
, . . . , y
(k
1
)
1
, y
2
, y
2
, . . . , y
(k
m
)
m
).
qui nous permet de disposer de toutes les drives des sorties (jusqu leur degr relatif ), et ceci sans avoir
utiliser de drivateurs de signaux. Une autre approche pour obtenir les drives des sorties aurait t de construire
un observateur dtat (voir paragraphe 5.4 page 79).
Exemple 7.3.1 Considrons le systme dcrit par
_
x = xu +x
3
y = 2x.
Nous avons
y = 2x
y = 2 x = 2xu + 2x
3
y = 2 xu + 2x u + 6 xx
2
= 2(xu +x
3
)u + 2x u + 6(xu +x
3
)x
2
.
Nous avons donc un degr relatif k = 1 pour la sortie y. On peut donc disposer de y sans avoir utiliser de
drivateurs de signaux. Cela nest pas le cas pour y car disposer de u avec une bonne prcision ne signie pas que
lon dispose de u. Ici,
(x, u) = (2x, 2xu + 2x
3
).
7.3.2 Commande dune chane dintgrateurs
On considre le systme dentre u et de sortie y dcrit par lquation direntielle
y
(n)
= u.
Rgulateur proportionnel et drives. On se propose tout dabord de stabiliser ce systme par un rgulateur
proportionnel et drives du type
u =
0
(w y) +
1
( w y) +
n1
_
w
(n1)
y
(n1)
_
+w
(n)
.
o w est la consigne souhaite pour y. Notons que w nest pas ici suppose constante, mais peut dpendre du
temps. Le fait que ce rgulateur ncessite les drives de y nest pas un problme dans le cadre dni par la
linarisation par bouclage. En eet, toutes ces drives peuvent tre crite comme fonction analytique de ltat
Commande non linaire des systmes non linaires 111
x du systme et de lentre u (voir remarque 7.3.1). En ce qui concerne la consigne w(t), elle est choisie par
lutilisateur et une expression analytique de w(t) peut tre suppose connue (par exemple w(t) = sin(t)). Ainsi,
le calcul des drives de w se fait de faon formelle et aucune sensibilit de loprateur drivation par rapport au
bruit nest craindre.
Le systme boucl est dcrit par lquation direntielle
y
(n)
= u =
0
(w y) +
1
( w y) +
n1
_
w
(n1)
y
(n1)
_
+w
(n)
.
Si on dnit lerreur e entre la consigne w et la sortie y par e = w y, cette quation devient
e
(n)
+
n1
e
(n1)
+ +
1
e +
0
e = 0.
Cette quation direntielle est appele dynamique de lerreur. Son polynme caractristique est donn par
P(s) = s
n
+
n1
s
n1
+ +
1
s +
0
, (7.4)
peut donc tre choisi arbitrairement parmi les polynmes de degr n. Bien sr, on choisira un polynme dont les
racines sont toutes parties relles ngatives, an dassurer la stabilit du systme. Par exemple, si n = 3 et si on
souhaite que tous les ples soient gaux 1, on posera
s
3
+
2
s
2
+
1
s +
0
= (s + 1)
3
= s
3
+ 3s
2
+ 3s + 1,
do

2
= 3,
1
= 3,
0
= 1.
Le rgulateur PI alors obtenu est donn par
u = (w y) + 3 ( w y) + 3 ( w y) +
...
w. (7.5)
Rgulateur proportionnel intgral et drives : An de compenser les perturbations constantes, nous pou-
vons dcider de rajouter un terme intgral. Nous obtenons une commande de type PID de la forme
u =
1
_
t
=0
(w() y()) d (7.6)
+
0
(w y) +
1
( w y) +
n1
_
w
(n1)
y
(n1)
_
+w
(n)
.
Le systme boucl est dcrit par lquation direntielle
y
(n)
=
1
_
t
=0
(w() y()) d
+
0
(w y) +
1
( w y) +
n1
_
w
(n1)
y
(n1)
_
+w
(n)
,
do, en drivant une fois,
e
(n+1)
+
n1
e
(n)
+ +
1
e +
0
e +
1
e = 0.
Le gain statique est toujours gal 1 et le polynme caractristique
P(s) = s
n+1
+
n1
s
n
+ +
1
s
2
+
0
s +
1
peut tre choisi arbitrairement, comme pour la commande proportionnelle et drives.
Pour une tude plus complte des rgulateurs de type PID, le lecteur est encourag consulter le livre de Landau
[11].
112 Commande par espace dtat
7.4 Rgulation des trois bacs
An dillustrer le principe de la linarisation par bouclage, reprenons nouveau le systme compos de trois bacs
modlis au paragraphe 2.5.2 page 32. Les quations dtat obtenues pour ce systme sont
_

h
1
= (h
1
) (h
1
h
2
) +u
1

h
2
= (h
1
h
2
) (h
2
h
3
)

h
3
= (h
3
) +(h
2
h
3
) +u
2
.
y
1
= h
1
y
2
= h
3
(7.7)
o (h) = a.sign(h)
_
2g[h[. Nous avons ici choisi pour sorties les hauteurs dans le premier et le troisime bacs.
Les drives des sorties y
1
et y
2
sexpriment par
y
1
=

h
1
= (h
1
) (h
1
h
2
) +u
1
y
2
=

h
3
= (h
3
) +(h
2
h
3
) +u
2
ou, sous forme vectorielle,
_
y
1
y
2
_
=
_
1 0
0 1
_
. .
A(x)
u+
_
(h
1
) (h
1
h
2
)
(h
3
) +(h
2
h
3
)
_
. .
b(x)
.
Le bouclage suivant
u = A
1
(x) (v b(x)) = v
_
(h
1
) (h
1
h
2
)
(h
3
) +(h
2
h
3
)
_
(7.8)
o v est notre nouvelle entre, rend notre systme linaire. Plus prcisment ce dernier a la forme
o
L
:
_
y
1
= v
1
y
2
= v
2
.
(7.9)
Cherchons maintenant rguler le systme linaire (7.9) par un rgulateur compos de deux rgulateurs PI
(proportionnel et intgrale) de la forme

L
:
_
v
1
(t) =
0
(w
1
(t) y
1
(t)) +
1
_
t
0
(w
1
() y
1
()) d + w
1
v
2
(t) =
0
(w
2
(t) y
2
(t)) +
1
_
t
0
(w
2
() y
2
()) d + w
2
o w
1
et w
2
sont les nouvelles consignes pour y
1
et y
2
. Si on souhaite avoir pour ples uniquement des 1, il faut
(voir quation (??)) que
_
s
2
+
0
s +
1
= (s + 1)
2
= s
2
+ 2s + 1
s
2
+
0
s +
1
= (s + 1)
2
= s
2
+ 2s + 1,
soit

1
=
1
= 1,
0
=
0
= 2.
Les quations dtat pour le rgulateur
L
sont donc

L
:
_

_
z
1
= w
1
y
1
z
2
= w
2
y
2
v
1
= z
1
+ 2 (w
1
y
1
) + w
1
v
2
= z
2
+ 2 (w
2
y
2
) + w
2
.
Commande non linaire des systmes non linaires 113
En prenant en compte lquation (7.8), nous obtenons que les quations dtat dun rgulateur par retour dtat

NL
pour notre systme non linaire (7.7) sont donnes par

NL
:
_

_
z
1
= w
1
h
1
z
2
= w
2
h
3
u
1
= z
1
+ 2 (w
1
h
1
) + w
1
+(h
1
) +(h
1
h
2
)
u
2
= z
2
+ 2 (w
2
h
3
) + w
2
+(h
3
) (h
2
h
3
) .
Le programme bacsasservi.sce eectue une simulation de cette commande, avec le graphisme.
7.5 Rgulation du char
On rappelle que les quations dtat du char (voir paragraphe 2.4.2 page 26) sont donnes par
_
_
_
_
_
_
_
x
y

v
g
v
d
_
_
_
_
_
_
_
=
_
_
_
_
_
_
_
v
g
+v
d
2
cos
vg +v
d
2
sin
v
d
vg

Ru
1
Ru
2
_
_
_
_
_
_
_
.
Prenons pour sortie
y
1
=
y
2
=
vg +v
d
2
,
o y
2
reprsente la vitesse du milieu de lessieu. Drivons successivement y
1
et y
2
jusqu faire apparatre les
entres u
1
ou u
2
. On obtient :
y
1
=

=
v
d
v
g

(on drive encore une fois)


y
1
=

=
R

(u
2
u
1
)
y
2
=
R
2
(u
2
+u
1
) ,
soit
_
y
1
y
2
_
=
_

R

R
2
R
2
_
. .
A(x)
_
u
1
u
2
_
.
Si on eectue le bouclage
_
u
1
u
2
_
= A
1
(x)
_
v
1
v
2
_
=
1
2R
_
2
2
__
v
1
v
2
_
,
o v = (v
1
, v
2
) est le vecteur des nouvelles entres, on obtient le systme
o
L
:
_
y
1
y
2
_
=
_
v
1
v
2
_
114 Commande par espace dtat
qui peut lui aussi tre command par un deuxime bouclage. Choisissons une commande proportionnelle et drive
de faon avoir uniquement des ples gaux 1 :
_
v
1
= (w
1
y
1
) + 2 ( w
1
y
1
) + w
1
= w
1
+ 2
_
w
1

v
d
vg

_
+ w
1
v
2
= w
2
y
2
+ w
2
= w
2

vg +v
d
2
+ w
2
.
Si on souhaite que le char suive une trajectoire en forme de cercle de la forme
_
x
d
= w
1
= cos t
y
d
= w
2
= sint
il nous faudra choisir
_
v
1
= + 2
_
sint
v
d
vg

_
v
2
= sint
vg +v
d
2
+ cos t.
Finalement la commande donner au char est donne par
_
u
1
u
2
_
=
1
2R
_
2
2
__
+ 2
_
sint
v
d
vg

_
sint
vg +v
d
2
+ cos t
_
.
7.6 Rgulation de la voiture
On rappelle que lquation dvolution de la voiture (voir page 28) est donne par
_
_
_
_
_
_
_
x
y

_
_
_
_
_
_
_
=
_
_
_
_
_
_
_
v cos cos
v cos sin
v sin
L
u
1
u
2
_
_
_
_
_
_
_
.
Le but de ce paragraphe est de faire dcrire notre voiture diverses trajectoires en utilisant le principe de la
linarisation par bouclage.
7.6.1 Voiture dcrivant un hexagone
Choisissons pour sortie le vecteur y = (v, )
T
. La drive des sorties y
1
et y
2
sexprime par
y
1
= v = u
1
,
y
2
=

=
v sin
L
.
Comme la drive y
2
de y
2
ne fait pas apparatre lentre, on la redrive une nouvelle fois :
y
2
= v
sin
L
+
v

cos
L
= u
1
sin
L
+u
2
v cos
L
.
Les expressions pour y
1
et y
2
peuvent se rcrire sous forme matricielle
_
y
1
y
2
_
=
_
1 0
sin
L
v cos
L
_
. .
A(x)
_
u
1
u
2
_
.
Commande non linaire des systmes non linaires 115
En imposant le bouclage
u = A
1
(x) v,
o v est la nouvelle entre, notre systme boucl se rcrit,
o
L
:
_
y
1
y
2
_
=
_
v
1
v
2
_
,
et devient donc linaire et dcoupl. Nous avons donc aaire deux systmes monovariables dcoupls. Le premier,
dordre 1, peut tre stabilis par une commande proportionnelle. Pour le second, du deuxime ordre, une commande
de type proportionnelle et drive) est adapte. Si w = (w
1
, w
2
)
T
reprsente la consigne pour y, cette commande
sexprime par

L
:
_
v
1
=
0
(w
1
y
1
) + w
1
v
2
=
0
(w
2
y
2
) +
1
( w
2
y
2
) + w
2
.
Si on souhaite avoir pour ples que des 1, il faut (voir quation (7.4))
s +
0
= s + 1
s
2
+
1
s +
0
= (s + 1)
2
= s
2
+ 2s + 1,
soit

0
=
0
= 1,
1
= 2.
Donc les quations dun rgulateur par retour dtat
NL
pour notre systme non linaire sont donnes par
u =
_
1 0

tan
v
L
v cos
__

0
(w
1
v) + w
1

0
(w
2
) +
1
_
w
2

v sin
L
_
+ w
2
_
(7.10)
Notons que ce rgulateur nadmet aucune variable dtat. Il sagit donc dun rgulateur statique.
Remarque 7.6.1 Remarquons que
det (A(x)) =
v cos
L
ce qui signie quil existe des singularits pour lesquelles la commande u nest pas dnie. Un traitement adapt
doit tre prvu lorsque de telles singularits sont rencontres par le systme.
An de faire parcourir notre voiture un hexagone en marche arrire, une vitesse de 2ms
1
, nous prendrons
pour consigne
w
1
(t) = 2
w
2
(t) =

4
E(t/10) .
Le programme associ a t appel VoitureHexagone.sce. Lexcution de ce programme rend compte du bon
comportement de notre commande.
116 Commande par espace dtat
7.6.2 Voiture dcrivant un cercle
Nous voulons maintenant faire tourner la voiture autour dun cercle de rayon r
0
et la vitesse v
0
. Le nouveau
vecteur de consigne devient c = (r
0
, v
0
). Pour cela, choisissons dans le plan (x, y) un champ de vecteur h donn
par
h :
R
2
R
2
_
x
y
_

1

x
2
+y
2
_
v
r
xtan
1
((r
0

_
x
2
+y
2
)) +v
0
y
v
r
y tan
1
((r
0

_
x
2
+y
2
)) v
0
x
_
.
Ce champ est reprsent sur la gure ci-dessous pour r
0
= 5; v
0
= 3; v
r
= 12; = 0.1.
Champ de vecteur dsir pour la voiture ;
ce champ admet pour cycle limite un cercle de rayon r
0
Le programme qui trace ce champ a t appel VoitureChampCycle.sce. Le systme associ ce champ (cest-
-dire quil est dcrit par lquation direntielle z = h(z)) admet un cycle limite qui est un cercle de rayon r
0
.
Sur ce cercle, nous avons [[ z[[ = v
0
. Les quantits v
r
et indiquent respectivement avec quelle vitesse ltat z se
rapproche du cercle limite lorsque ce dernier est loin ou proche du disque. An de faire suivre aux coordonnes
(x, y) de la voiture, cette dynamique, il semble naturel dimposer
_
x
y
_
= h
_
x
y
_
= h(c, x, y) .
La notation h(c, x, y) nous rappelle la dpendance du champ en c = (r
0
, v
0
) . Or,
_
x
y
_
=
_
v cos cos
v cos sin
_

_
w
1
cos w
2
w
1
sinw
2
_
car w
1
est une consigne pour la vitesse de la voiture et w
2
pour son cap. Pour choisir w nous devons donc tenter
de rsoudre
_
w
1
cos w
2
w
1
sinw
2
_
= h(c, x, y) .
Commande non linaire des systmes non linaires 117
Ainsi, nous obtenons
w
1
= |h(c, x, y)| et w
2
= arg

(h(c, x, y)) ,
o arg retourne langle entre + et + du vecteur h(c, x, y). Ainsi, daprs la formule (7.10), les quations
de notre rgulateur sont
u =
_
1 0

tan
v
L
v cos
__

0
(|h(c, x, y)| v)

0
(arg

(h(c, x, y)) )
1
v sin
L
_
.
Ici, nous avons pris w
2
= 0 alors que w
2
est loin dtre constante. Pour plus de prcision, il faudrait la calculer et
mettre son expression dans celle de la commande u. Le rgulateur obtenu est nouveau un rgulateur statique
(cest--dire, sans tat). Si nous appliquons cette commande, sur la voiture, nous nous apercevons que la voiture
tourne eectivement autour dun cercle, mais quil existe un large biais. Plus prcisment, le rayon du cercle
parcouru et la vitesse de la voiture sur ce cercle sont dirents de ceux rentrs dans la consigne c et que cette
dirence nest pas ngligeable. Ce phnomne est principalement d au fait la consigne a t suppose constante
alors quelle ne lest pas. An de supprimer simplement ce biais, nous pouvons rajouter un eet intgrateur. En
choisissant un coecient de
1
5
pour lintgrateur, les quations dtat obtenues pour le rgulateur sont
_

_
z = c
_
_
x
2
+y
2
v
_
u =
_
1 0

tan
v
L
v cos
__
_
_
h
_
c +
z
5
, x, y
__
_
v
arg

_
h
_
c +
z
5
, x, y
__
2
v sin
L
_
.
La gure reprsente leet obtenu. Le programme associ a t appel VoitureCycle.sce.
Voiture convergeant vers un cercle limite
118 Commande par espace dtat
7.7 Rgulation du bateau voile
Reconsidrons nouveau le bateau voile modlis au paragraphe 2.4.4 de la page 29. Rappelons que les quations
dtat du bateau voile sont donnes par
_

_
x = v cos ,
y = v sin V,

= ,

v
= u
1
,

g
= u
2
,
v =
1
m
(f
v
sin
v
f
g
sin
g

f
v) ,
=
1
J
(( r
v
cos
v
) f
v
r
g
cos
g
f
g

) ,
f
v
=
v
(V cos ( +
v
) v sin
v
) ,
f
g
=
g
v sin
g
.
(7.11)
Nous allons ici chercher stabiliser les valeurs de x et y autour de certaines valeurs dsires x
d
et y
d
. Notons tout
dabord quil nest pas possible dobtenir une stabilisation exacte si V ,= 0, mme dans le cas idal, car on ne
peut annuler simultanment x, y, x, y. On peut le montrer formellement, bien que cette opration soit loin dtre
triviale, mme avec laide dun logiciel de calcul formel comme Mi.[1]. On peut aussi prouver labsence de point
dquilibre grce un solveur numrique utilisant le calcul par intervalles [9]. Puisquune stabilisation exacte ne
peut tre envisage, nous allons tenter une stabilisation approximative de x et y autour des valeurs de consigne.
An de bien comprendre lapproche choisie, considrons la situation dun moniteur de bateau voile, dans son
Zodiac, dictant distance un apprenti (qui apprend manuvrer le bateau) comment amener le bateau sur
une cible (x
d
, y
d
). Le moniteur donnera lapprenti des consignes du type prend la direction de la pointe, ou
bien relche un peu la voile et lapprenti cherchera suivre ces consignes. On fait alors apparatre deux types
de rgulation.
la rgulation de bas niveau, faite par lapprenti qui consiste tirer sur lcoute de la voile et manuvrer le
gouvernail dans le but de respecter les consignes du moniteur ;
la rgulation de haut niveau faite par le moniteur, qui consiste gnrer une suite de consignes (sur le cap et
sur louverture de la voile) dans le but darriver lobjectif choisi, savoir atteindre la cible.
Dans une premire tape, pour raliser la commande de bas niveau, nous allons utiliser une mthode de linarisation
par bouclage statique qui nous permettra de stabiliser le cap du bateau ainsi que louverture de la voile. Dans une
deuxime tape, pour la rgulation de haut niveau, nous proposerons un second rgulateur tats discrets qui
nous permettra de maintenir le bateau dans une zone autour du point (x
d
, y
d
).
7.7.1 Drivations successives des variables dtat
Rappelons que pour appliquer une mthode de linarisation par bouclage, il nous faut tout dabord driver les
variables dtat, une ou plusieurs fois par rapport au temps t, et ceci jusqu faire apparatre les entres u
1
ou u
2
.
Dans les quantits exprimes par les quations (7.11), seules

v
et

g
sont lies algbriquement u. Les autres
quantits sont relies u, mais indirectement (cest--dire direntiellement). Rangeons-les dans la liste / des
variables dpendant algbriquement de u. On a donc / =

v
,

g
. Il nous faut driver uniquement celles qui ne
Commande non linaire des systmes non linaires 119
dpendent pas algbriquement de u, cest--dire, x, y,

, v et . On obtient
_

_
x = v cos v

sin,
y = v sin +v

cos ,

= ,
v =

fv sinv+fvu
1
cos v

fg singfgu
2
cos g
f
v
m
,
=
u
1
rv sinvfv+(rv cos v)

fv
J
+
rg(u
2
singfgcos g

fg)


J
.
(7.12)
avec _

f
v
=
v
V ( +u
1
) sin( +
v
)

v
v sin
v

v
vu
1
cos
v

f
g
=
g
( v sin
g
+vu
2
cos
g
) .
Notons que, puisque les grandeurs v,

, sont des fonctions analytiques de ltat (voir (7.11)), on peut considrer
que nous avons ici une expression analytique de x, y,

, v, en fonction de ltat et des entres. Rangeons dans /


les quantits qui dpendent algbriquement de u, cest--dire v et , do / =

v
,

g
, v, ,

f
v
,

f
g
. Et drivons
nouveau celles qui ne dpendent pas algbriquement de u, cest--dire x, y et

. On obtient
_

_
...
x = v cos 2 v

sin v

sin v

2
cos
...
y
= v sin + 2 v

cos +v

cos v

2
sin
...
= .
(7.13)
Puisque toutes ces quantits dpendent algbriquement de u, on sarrte ici de driver. Notons nouveau, que les
quations (7.13) peuvent sinterprter (via les quations (7.12) et (7.11)) comme des expressions analytiques des
grandeurs
...
x,
...
y
,
...
en fonction de ltat et des entres.
7.7.2 Linarisation par bouclage du bateau
Rappelons que les sorties (ce sont en fait des variables consignes) choisies sont louverture de la voile y
1
=
v
et
le cap y
2
= . Nous avons
_
y
1
...
y
2
_
=
_

v
...

_
=
_
1 0
r
v
J
f
v
sin
v
rg
J
f
g
sin
g
_
. .
A
1
(x)
_
u
1
u
2
_
+
_
0 0

J

rv
J
cos
v

rg
J
cos
g
_
. .
A
2
(x)
_

f
v

f
g
_
+
_
0

J

_
. .
b
1
(x)
.
Or
_

f
v

f
g
_
=
_

v
(V sin( +
v
) +v cos
v
) 0
0
g
v cos
g
_
. .
A
3
(x)
_
u
1
u
2
_
+
_

v
(V sin( +
v
) + v sin
v
)

g
v sin
g
_
. .
b
2
(x)
.
120 Commande par espace dtat
Ainsi, on a une relation de la forme
_
y
1
...
y
2
_
= A
1
u +A
2
(A
3
u +b
2
) +b
1
= (A
1
+A
2
A
3
) u +A
2
b
2
+b
1
= Au +b.
Pour imposer ( y
1
,
...
y
2
) une certaine consigne v = (v
1
, v
2
) , il nous faut prendre
u = A
1
(x) (v b(x)) .
Le systme ainsi boucl est rgi par les quations direntielles
o
L
:
_
y
1
= v
1
,
...
y
2
= v
2
.
(7.14)
qui sont linaires et dcouples. Le systme linaris est dordre 4 au lieu de 7. Nous avons donc perdu le contrle
sur 3 variables qui se trouvent tre x, y et v. La perte de contrle sur x et y tait prvisible (on veut que le bateau
avance et il est naturel que cela corresponde une instabilit pour ces deux variables x et y). Quant la perte
de contrle sur v, elle est sans consquence car la dynamique associe est stable. Comment en eet concevoir que
le bateau puisse maintenir un cap et une ouverture de voile xes, sans que sa vitesse ne converge vers une valeur
nie ?
Dterminons maintenant les singularits de notre bouclage linarisant. On montre aisment que
det (A(x)) =
r
g
J
_
f
g
sin
g
v
g
cos
2

g
_
,
est nul si
v
_
2 sin
2

g
1
_
= 0,
cest--dire si
v = 0 ou bien
g
=

4
+k

2
. (7.15)
Une telle conguration correspond une singularit quil faudra tenter dviter.
Nous avons aaire deux systmes monovariables dcoupls. Notons w = (w
1
, w
2
)
T
la consigne pour y. Nous
noterons parfois w = (

v
,

) pour rappeler que w


1
et w
2
sont les consignes correspondant langle douverture
de la voile et au cap. Choisissons le rgulateur donn de type PID (en fait, il faudrait dire PID2, car la drive
deuxime est utilise) donn par

L
:
_

_
v
1
=
0
(w
1
y
1
) + w
1
,
v
2
=
0
(w
2
y
2
) +
1
( w
2
y
2
)
+
2
( w
2
y
2
) +
...
w
2
.
Si on souhaite avoir pour ples uniquement des 1, (voir quation (??)) il nous faut
s +
0
= s + 1,
s
3
+
2
s
2
+
1
s +
0
= (s + 1)
3
= s
3
+ 3s
2
+ 3s + 1,
soit

0
=
0
= 1,
1
= 3,
2
= 3.
Commande non linaire des systmes non linaires 121
En supposant la consigne w constante, les quations dtat du rgulateur par retour dtat pour notre systme
non linaire sont donnes par
u = A
1
(x)
__
w
1

v
w
2
3

_
b(x)
_
. (7.16)
Or

et

sont des fonctions analytiques de ltat x. En eet, daprs les quations (7.11) et (7.12), on a

= ,

=
(rv cos v)fvrg cos gfg

J
.
Lquation (7.16) peut donc se rcrire sous la forme
u = r (x, w) = r
_
x,

v
,

_
.
Ce rgulateur est statique car il nadmet aucune variable dtat.
7.7.3 Rgulateur hybride
Le rgulateur r
_
x,

v
,

_
dvelopp dans la section prcdente permet de stabiliser notre bateau pour un cap

et
une ouverture de voile

v
dsirs. Or, ce qui nous intresse est de stabiliser le bateau autour dune zone centre en
un point de coordonnes (x
d
, y
d
). En manuvrant le gouvernail et langle douverture de la voile, il est possible
de rester autour du point dsir.
Nous allons ici proposer un automate capable de gnrer les consignes w =
_

v
,

_
pour notre rgulateur an
que notre bateau se trouve comme attir par le point (x
d
, y
d
) . Contrairement aux autres approches de rgulation
classiques, llaboration de cet automate sera guide par une connaissance empirique du pilotage dun voilier, plus
que par une prise en compte des quations dtats du systme.
Ainsi, nous allons considrer quatre caps privilgis ( 2k prs) donns par

1
=
7
4
,

2
=
5
4
,

3
=

6
et

4
=
5
6
,
comme illustr par la gure. A chacun de ces caps dsirs, nous associons un tat discret q 1, 2, 3, 4.
Quatre caps privilgis gnrs par lautomate
122 Commande par espace dtat
Les caps

1
et

2
correspondent une situation de vent arrire alors que

3
et

4
correspondent une situation
de remont au vent. Le passage dun cap dsir lautre se fait suivant la position relative du bateau par rapport
au point dsir. Par exemple, si q = 3 et que x x
d
> a (o a est une constante de tolrance positive), alors, q
prend la valeur 4 (qui fera dcrotre x). Lautomate qui ralise ces changements dtat apparat dans le bloc du
bas de la gure ci-dessous.
Schma du rgulateur qui maintient notre bateau
dans une zone dsire de locan
An dviter le passage brutal dun cap dsir lautre, ce qui risque de dstabiliser notre commande r
_
x,

v
,

_
(qui suppose une consigne constante), il convient dimposer un changement en douceur, cest le rle des systmes
du premier ordre situs dans les cases de lautomate qui eectuent un ltrage des hautes frquences. La fonction
arg
_

i
_
=

i
+ 2.round
_

i
2
_
,
renvoie langle gal

i
( 2k prs), qui est le plus proche de

. Son rle est dviter les sauts brutaux dans la
gnration de

et le phnomne de droulement, qui tend faire tourner inutilement les lments (voile et bateau)
an de respecter scrupuleusement les galits entre les angles alors quune galit 2-prs sut. La sortie de
notre automate est le cap dsir

, il nous reste alors trouver louverture de la voile

v
demander notre
rgulateur. Langle douverture de la voile ne servant qu la propulsion du bateau, il est concevable de la rendre
fonction du cap. Une fonction assez naturelle est celle donne par la gure ci-dessous.
Commande non linaire des systmes non linaires 123
Fonction douverture
_

_
choisie
Son expression est donne par

v
= () = .oor
_

2
+
1
4
_
+

4


2
o oor est la fonction qui renvoie la partie entire dun rel. Notons que lorsque nous demandons au bateau
daller face au vent (

/2 + k), langle douverture demand


v
sera nul ((

) 0) alors quen vent arrire


(

/2+2k), la voile sera grand ouverte ((

) /2+k). Le schma complet du rgulateur ainsi conu est


reprsent en pointill sur la gure ci-dessous. Le systme boucl est admet pour entres x
d
et y
d
et le rgulateur
se charge damener le bateau autour du point dsir et de ly maintenir.
La gure ci-dessous illustre le fait que pour toute condition initiale, le bateau rgul semble converger vers un
cycle limite unique, centr sur le point de consigne.
Trajectoire du bateau voile rgul pour deux conditions initiales direntes
124 Commande par espace dtat
Chapitre 8
Identication
8.1 Fonctions quadratiques
8.1.1 Dnition
Une fonction quadratique f : R
n
R est une fonction de la forme
f(x) = x
T
Qx +Lx +b
o Q est une matrice symtrique. Cette dnition est quivalente dire que f(x) est une combinaison linaire
dune constante b, des x
i
, de leur carr x
2
i
et des produits croiss x
i
x
j
o i ,= j. Par exemple, si f(x
1
, x
2
) =
2x
2
1
6x
1
x
2
+x
2
2
2x
1
+x
2
+ 1, on a
f(x) =(x
1
x
2
)
_
2 3
3 1
__
x
1
x
2
_
+ (2 1)
_
x
1
x
2
_
+ 1 (8.1)
Nous allons montrer dans la suite que la fonction drive de f au point x est une fonction ane. Pour notre
exemple, la drive de f au point x est donne par
df
dx
(x) =
_
f
x
1
(x)
f
x
2
(x)
_
avec
f
x
1
(x) = 4x
1
6x
2
2 et
f
x
2
(x) = 6x
1
+ 2x
2
+ 1, cest--dire
df
dx
(x) = (4x
1
6x
2
2 ; 6x
1
+ 2x
2
+ 1) .
Il sagit dune fonction ane en x. La fonction, x x
T
Qx qui compose f(x) ne comporte que des termes en x
i
x
j
et en x
2
i
. Une telle fonction est appele forme quadratique.
8.1.2 Drive dune forme quadratique
Considrons la forme quadratique
f(x) = x
T
Qx.
125
126 Commande par espace dtat
Le dveloppement de Taylor lordre 1 de f au point x au voisinage de x, nous donne :
f(x+x) =f(x)+
df
dx
(x)x +o ([[x[[) (8.2)
o o ([[x[[) signie "ngligeable devant [[x[[", lorsque x est inniment petit. Bien sur, ici,
df
dx
(x) sera reprsente
par une matrice 1 n car, tout comme la fonction quon linarise, elle va de R
n
vers R. Or,
f(x+x) = (x +x)
T
Q(x +x)
= x
T
Qx +x
T
Qx + (x)
T
Qx + (x)
T
Q(x)
= x
T
Qx + 2x
T
Q(x) +o ([[x[[)
(8.3)
car Q est symtrique et x
T
Qx = o ([[x[[). Par unicit du dveloppement de Taylor, et daprs les formules (8.2)
et (8.3), nous avons
df
dx
(x) =
_
f
x
1
(x), . . . ,
f
x
n
(x)
_
= 2x
T
Q.
Par exemple, la drive de la fonction quadratique (8.1) est donne par
2 (x
1
x
2
)
_
2 3
3 1
_
+ (2 1) = (4x
1
6x
2
2 ; 6x
1
+ 2x
2
+ 1) .
8.1.3 Valeurs propres dune fonction quadratique
Ce sont les valeurs propres de Q. Les valeurs propres sont toutes relles et les vecteurs propres sont tous deux
deux orthogonaux. Les courbes de niveaux dune fonction quadratique f(x) = sont de la forme
x
T
Qx +Lx = b
et sont appeles quadriques. Ce sont des ellipsodes si toutes les valeurs propres sont de mme signe ou des
hyperbolodes si elles ont des signes distincts. Si toutes les valeurs de Q sont positive, on dit que la forme
quadratique x
T
Qx est positive. Si elle sont toutes non-nulles, on dit que la forme quadratique est dnie. Si elles
sont toutes strictement positives, on dira que la forme quadratique est dnie positive. La fonction quadratique f
admet un et un seul minimum si et seulement si sa forme quadratique associe est dnie positive.
8.1.4 Minimisation dune fonction quadratique
Si f(x) = x
T
Qx +Lx +b admet un et un seul minimiseur x

si Q est dnie positive. Dans ce cas,


df
dx
(x

) = 0
Donc
2x
T
Q+L = 0,
cest--dire
x

=
1
2
Q
1
L
T
.
Son minimum est donn par
f(x

) =
_

1
2
Q
1
L
T
_
T
Q
_

1
2
Q
1
L
T
_
+L
_

1
2
Q
1
L
T
_
+b
=
1
4
LQ
1
L
T

1
2
LQ
1
L
T
+b =
1
4
LQ
1
L
T
+b.
Commande non linaire des systmes non linaires 127
Par exemple, pour la fonction (8.1), le minimiseur est donn par
x

=
1
2
_
2 3
3 1
_
1
_
2
1
_
=
_
1
14

2
7
_
.
et son minimum est
f(x

) =
1
4
_
2 1
_
_
2 3
3 1
_
1
_
2
1
_
+ 1 =
11
14
.
8.2 Mthode des moindres-carrs
8.2.1 Introduction lestimation
Estimer, cest obtenir un ordre de grandeur sur certaines quantits dun systme partir de mesures dautres
quantits de ce mme systme. Le problme destimation que nous allons considrer dans ce chapitre est le
suivant. Soit un systme sur lequel on a eectu des mesures y = (y
1
, . . . , y
p
) et un modle /(p) dpendant dun
vecteur de paramtres p. Il nous faut estimer p tel que les sorties y
m
(p) gnres par /(p) ressemblent le plus
possible y.
8.2.2 Mthode des moindres carrs
Supposons que le vecteur des sorties puisse se mettre sous la forme
y
m
(p) = Mp.
Le modle est alors quali de linaire par rapport aux paramtres. Nous voudrions avoir
y
m
(p) = y
mais cela nest gnralement pas possible cause de la prsence du bruit et du fait que le nombre de mesures est
gnralement suprieur au nombre de paramtres (cest--dire dim(y) > dim(p)). Nous allons donc chercher le
meilleur p, cest--dire, celui qui minimise le critre, dit des moindres-carrs,
j(p) = [[y
m
(p) y[[
2
.
Nous avons
j(p) = [[y
m
(p) y[[
2
= [[Mp y[[
2
= (Mp y)
T
(Mp y) =
_
p
T
M
T
y
T
_
(Mp y)
= p
T
M
T
Mp p
T
M
T
y y
T
Mp +y
T
y
= p
T
M
T
Mp 2y
T
Mp +y
T
y.
Or M
T
M est symtrique (car
_
M
T
M
_
T
= M
T
M). On a donc une fonction quadratique. De plus, M
T
M a toutes
ses valeurs propres positives ou nulle. Le minimiseur p sobtient rsolvant
dj
dp
( p) = 0 2 p
T
M
T
M2y
T
M = 0 p
T
M
T
M = y
T
M
M
T
M p = M
T
y p =
_
M
T
M
_
1
M
T
y.
La matrice
_
M
T
M
_
1
M
T
sappelle inverse gnralise de la matrice rectangulaire M.
128 Commande par espace dtat
8.2.3 Exemple de la parabole
On cherche trouver une parabole p
1
t
2
+p
2
t +p
3
qui passe par n points donns dans le tableau suivant
t 3 1 0 2 3 6
y 17 3 1 5 11 46
Pour obtenir ces mesures, nous avons pris p

1
=

2, p

2
= 1, p

3
= 1, pour en dduire les mesures non bruites
y

= (16.72; 3.41; 1; 4.65; 10.73; 45.91)


T
.
Ensuite, nous avons tronqu lentier le plus proche. La ligne dinstruction sous Scii.i est donne par
t=[-3 ;-1 ;0 ;2 ;3 ;6],y1=sqrt(2)*t^2-t+1,y=round(y1)
Le vecteur des mesures est donc y = (17 3 1 5 11 46)
T
et le vecteur des paramtres est p = (p
1
p
2
p
3
)
T
. La sortie
modle est
y
m
(p) =
_
_
_
_
_
_
_
_
_
y
m,1
(p) = 9p
1
3p
2
+p
3
y
m,2
(p) = p
1
p
2
+p
3
y
m,3
(p) = 0p
1
0p
2
+p
3
y
m,4
(p) = 4p
1
+ 2p
2
+p
3
y
m,5
(p) = 9p
1
+ 3p
2
+p
3
y
m,6
(p) = 36p
1
+ 6p
2
+p
3
_
_
_
_
_
_
_
_
_
=
_
_
_
_
_
_
_
_
_
9 3 1
1 1 1
0 0 1
4 2 1
9 3 1
36 6 1
_
_
_
_
_
_
_
_
_
_
_
_
p
1
p
2
p
3
_
_
_
Le vecteur estim au sens des moindres-carrs est
p =
_
M
T
M
_
1
M
T
y =
_
_
_
1.41
0.98
1.06
_
_
_
Les mesures ltres sont
y = y
m
( p) = M p = (16.76 ; 3.46 ; 1.06 ; 4.76 ; 10.84 ; 46.11)
T
.
8.2.4 Moteur courant continu
La vitesse angulaire dun moteur courant continu en rgime permanent dpend linairement de la tension
dalimentation U et du couple rsistant T
r
:
= p
1
U +p
2
T
r
.
On eectue une srie dexpriences sur un moteur particulier. On mesure :
U(V) 40 100 100 130 150 150
T
r
(Nm) 0 0 20 20 10 30
(tr/ min) 490 1210 1090 1410 1730 1630
On a
y
m
(p) = M.p
Commande non linaire des systmes non linaires 129
avec
M =
_
_
_
_
_
_
_
_
_
40 0
100 0
100 20
130 20
150 10
150 30
_
_
_
_
_
_
_
_
_
, p =
_
p
1
p
2
_
et y =
_
_
_
_
_
_
_
_
_
490
1210
1090
1410
1730
1630
_
_
_
_
_
_
_
_
_
.
Donc
p =
_
M
T
M
_
1
M
T
y =
_
11.98
6.02
_
.
Nous pouvons alors en dduire la vitesse angulaire du moteur pour dautres valeurs de U et T
r
. Par exemple pour
U = 200 V et T
r
= 10 Nm, on a

=
_
U T
r
_
p =
_
200 10
_
_
11.98
6.02
_
= 2335tr/ min
8.2.5 Estimation dune fonction de transfert
On considre le systme dcrit par les quations de rcurrence
y(k) +a
1
y(k 1) +a
0
y(k 2) = b
1
u(k 1) +b
0
u(k 2). (8.4)
Sur ce systme, on eectue des mesures plus ou moins bruites de lentre u(k) et la sortie y(k) pour k variant de
0 7. On obtient
k 0 1 2 3 4 5 6 7
u(k) 1 1 1 1 1 1 1 1
y(k) 0 1 2 3 7 11 16 36
A partir ces mesures, on cherche estimer le vecteur des paramtres
p = (a
1
, a
0
, b
1
, b
0
)
T
.
Les quations de rcurrence (8.4) pour k = 2 jusqu 7 sont
y(2) = a
1
y(1) a
0
y(0) +b
1
u(1) +b
0
u(0)
y(3) = a
1
y(2) a
0
y(1) +b
1
u(2) +b
0
u(1)
.
.
.
y(7) = a
1
y(6) a
0
y(5) +b
1
u(6) +b
0
u(5)
Donc la matrice M est donne par
M =
_
_
_
_
_
_
_
_
_
y(1) y(0) u(1) u(0)
y(2) y(1) u(2) u(1)
y(3) y(2) u(3) u(2)
y(4) y(3) u(4) u(3)
y(5) y(4) u(5) u(4)
y(6) y(5) u(6) u(5)
_
_
_
_
_
_
_
_
_
=
_
_
_
_
_
_
_
_
_
1 0 1 1
2 1 1 1
3 2 1 1
7 3 1 1
11 7 1 1
16 11 1 1
_
_
_
_
_
_
_
_
_
=
_
_
_
_
_
_
_
_
_
m
T
2
m
T
3
m
T
4
m
T
5
m
T
6
m
T
7
_
_
_
_
_
_
_
_
_
130 Commande par espace dtat
Le vecteur
m(k) = (y(k 1), y(k 2), u(k 1), u(k 2))
T
contient linformation reliant la kime mesure linconnue p. Il est appel rgresseur. Comme ces k quations ne
sont pas tout--fait satisfaites car les u(i) et les y(i) ne sont connus que de faon approximative, on cherche
trouver le vecteur p qui minimise le critre
j(p) [[Mp y[[
2
avec
y =
_
_
_
y(2)
.
.
.
y(7)
_
_
_
=
_
_
_
_
_
_
_
_
_
2
3
7
11
16
36
_
_
_
_
_
_
_
_
_
et p =
_
_
_
_
_
a
1
a
0
b
1
b
0
_
_
_
_
_
.
Nous devrions avoir p =
_
M
T
M
_
1
M
T
y Or ici, la matrice M est de rang 3. En eet, du fait de la forme
particulire du signal u(k), les deux dernires colonnes de M sont dpendantes. Dans notre cas, nous ne pouvons
donc pas identier p. Cette situation demeure toutefois atypique.
8.2.6 Cas non-linaire
Si y est le vecteur des mesures et si y
m
(p) est la sortie gnre par le modle, alors lestime au sens des moindres
carrs est dni par
p = arg min
pR
n
[[y
m
(p) y[[
2
.
Lorsque y
m
(p) est linaire par rapport p, cest--dire y
m
(p) = Mp alors le vecteur des paramtres p estim au
sens des moindres-carrs est p =
_
M
T
M
_
1
My et le vecteur des mesures ltres est y = M
_
M
T
M
_
1
My. En
gnral, et mme lorsque y
m
(p) est non-linaire, on peut faire linterprtation gomtrique suivante :
le vecteur des mesures ltres y reprsente la projection de y sur lensemble y
m
(R
n
) .
le vecteur estim au sens des moindres carrs p reprsente limage inverse par y
m
(.) du vecteur des mesures
ltres y.
Lorsque y
m
(p) est non-linaire, on peut utiliser un algorithme doptimisation local pour esprer obtenir p. La
table ci-dessous en propose une version simple, qui est cens converger vers un optimum local du critre j(p) =
[[y
m
(p) y[[
2
. La quantit p reprsente un petit vecteur tir alatoirement dans R
n
.
Commande non linaire des systmes non linaires 131
input p
1 j
+
= j(p);
2 q = p + p;
3 if j (q) < j
+
{p = q; j
+
= j(q)} ;
4 goto 2.
8.3 Localisation dun robot
On considre le robot de la gure ci-dessous. Ce robot possde 8 capteurs capables de lui donner les distances des
premiers obstacles suivant les directions dangles
k
4
, k 0, . . . , 7. Les obstacles sont supposs tre n segments
de droites [a
i
b
i
] , i = 1, . . . , n, o les a
i
et b
i
, exprims dans le repre de la pice sont connus du robot. Les 8
distances sont ranges dans le vecteur des mesures y. Proposons nous de retrouver la position et lorientation du
robot partir du vecteur des distances mesures y.
Pour cela, il nous faut, tout dabord, dvelopper un simulateur y
m
(p) qui nous gnre nos 8 distances partir de la
connaissance de p. Ce simulateur peut tre reprsent par un algorithme ayant pour entre le vecteur p =(x, y, )
T
et pour sortie le vecteur form des 8 distances fournies par les capteurs. Dans la suite, les coordonnes du centre
m du robot seront notes (x, y) et u sera un vecteur unitaire reprsentant la direction du faisceau. Pour le kime
capteur, lexpression du vecteur directeur u du faisceau lanc par le capteur est
u =
_
cos
_
k
4
+
_
sin
_
k
4
+
_
_
, k 0, . . . , 7.
132 Commande par espace dtat
En sinspirant de lalgorithme de calcul de distance labor au paragraphe 6.6.1 de la page 99, nous obtenons le
simulateur y
m
(p) donn par la table ci-dessous
input : (x, y, )
for i = 1 to 8
u =
_
cos
_
(i1)
4
+
_
; sin
_
(i1)
4
+
__
;
i
= ;
m =(x y)
T
;
for j = 1 to n
if det (a
j
m, u) . det (b
j
m, u) 0 then next j ;
:=
det(ma
j
m,b
j
a
j
)
det( u,b
j
a
j
)
if < 0 then next j ;

i
:= min(
i
, ) ;
next j
next i;
return (
1
, . . . ,
8
) ;
(8.5)
A laide dune mthode de type Mont-Carlo, on peut retrouver p, loptimiseur au sens des moindres-carrs,
partir de y.
8.4 Moindres-carrs rcursifs
8.4.1 Principe
On considre k quations linaires en p R
n
de la forme m
T
i
p = y(i). Nous supposerons que k n, o n est la
dimension de p. On a
_

_
m
T
0
p = y(0)
m
T
1
p = y(1)
.
.
.
.
.
.
.
.
.
m
T
k1
p = y(k 1)

_
_
_
_
_
_
m
T
0
m
T
1
.
.
.
m
T
k1
_
_
_
_
_
_
p =
_
_
_
_
_
_
y(0)
y(1)
.
.
.
y(k 1)
_
_
_
_
_
_
M
k
p = y
k
(8.6)
Le point p
k
qui minimise le critre
j(p) [[M
k
p y
k
[[
2
=
k1

i=0
_
m
T
i
py(i)
_
2
est donn par
p
k
= (M
T
k
M
k
)
1
M
T
k
y
k
La suite du problme consiste trouver des quations rcursives pour p
k
, cest--dire des quations dtat de la
forme
_
x(k + 1) = f (x(k) , m
k
, y (k))
p
k
= g(x(k))
Commande non linaire des systmes non linaires 133
Posons
k
= M
T
k
M
k
et v
k
= M
T
k
y
k
. Nous avons
_

k+1
=
_
M
T
k
m
k
_
_
M
k
m
T
k
_
= M
T
k
M
k
+m
k
m
T
k
v
k+1
=
_
M
T
k
m
k
_
_
y
k
y(k)
_
= M
T
k
y
k
+m
k
y(k)
p
k
=
1
k
v
k
On peut donc exprimer
k+1
, v
k+1
en fonction de
k
et v
k
et m
k
et y(k). Ainsi, les quations dtat pour gnrer
les p
k
sont donnes par
_

_
(i)
k+1
=
k
+m
k
m
T
k
(ii) v
k+1
= v
k
+m
k
.y(k)
(iii) p
k
=
1
k
v
k
.
(8.7)
Le vecteur dtat x(k) contient les coecients de la matrice
k
et ceux du vecteur v
k
. Les entres de ce systme
sont m
k
et y(k).
8.4.2 Premire simplication
Nous allons maintenant chercher obtenir lquation de la forme
p
k+1
= p
k
+k
k
_
y(k) m
T
k
p
k
_
o apparaissent
la prdiction y(k) = m
T
k
p
k
lerreur de prdiction e(k) = y(k) m
T
k
p
k
le gain de correction ou gain de Kalman k
k
=
_

k
+m
k
m
T
k
_
1
m
k
Pour cela, on procde comme suit :
p
k+1
(8.7,iii)
=
1
k+1
v
k+1
(8.7,ii,iii)
=
1
k+1
(
k
p
k
+m
k
y(k))
= p
k
+
1
k+1
((
k

k+1
) p
k
+m
k
y(k))
(8.7,i)
= p
k
+
1
k+1
.
_
m
k
m
T
k
p
k
+m
k
y(k)
_
(8.7,i)
= p
k
+
_

k
+m
k
m
T
k
_
1
m
k
_
y(k) m
T
k
p
k
_
.
Les quations dtat pour notre estimateur scrivent alors
_

k+1
=
k
+m
k
m
T
k
p
k+1
= p
k
+
_

k
+m
k
m
T
k
_
1
m
k
_
y(k) m
T
k
p
k
_
8.4.3 Deuxime simplication
Lestimateur donn ci-dessus ncessite chaque tape linversion de la matrice
k
+m
k
m
T
k
. Dans le but dviter
une telle inversion, eectuons le changement de variable

k

1
k
134 Commande par espace dtat
et utilisons le lemme dinversion matriciel..
Lemme dinversion matricielle : Si A est une matrice carre n n et inversible, B est une matrice colonne
n 1 et C une matrice ligne 1 n,
(A+BC)
1
= A
1
A
1
B
_
1 +CA
1
B
_
1
CA
1
.
Dmonstration : La dmonstration de ce lemme rsulte du calcul suivant
_
A
1
A
1
B
_
1 +CA
1
B
_
1
CA
1
_
(A+BC)
= A
1
A+A
1
BCA
1
B
_
1 +CA
1
B
_
1
CA
1
AA
1
B
_
1 +CA
1
B
_
1
CA
1
BC
= I +A
1
BCA
1
B
_
1 +CA
1
B
_
1
CA
1
B
_
1 +CA
1
B
_
1
CA
1
BC
= I +A
1
B
_
1
_
1 +CA
1
B
_
1

_
1 +CA
1
B
_
1
CA
1
B
_
C
= I +A
1
B
_
1
_
1 +CA
1
B
_
1
_
1 CA
1
B
_
_
C
= I +A
1
B(1 1) C = I
Appliquons le lemme dinversion matricielle pour calculer linverse de
k+1
=
k
+m
k
m
T
k
. Prenons A =
k
, B = m
k
et C = m
T
k
. On obtient

1
k+1
=
_

k
+m
k
m
T
k
_
1
=
1
k

1
k
m
k
_
1 +m
T
k

1
k
m
k
_
1
m
T
k

1
k
=
1
k


1
k
m
k
m
T
k

1
k
1 +m
T
k

1
k
m
k
soit
_
_
_

k+1
=
k


k
m
k
m
T
k

k
1+m
T
k

k
m
k
p
k+1
= p
k
+
_

k


k
m
k
m
T
k

k
1+m
T
k

k
m
k
_
m
k
_
y(k) m
T
k
p
k
_
.
En remarquant que
_

k


k
m
k
m
T
k

k
1 +m
T
k

k
m
k
_
m
k
=

k
m
k
1 +m
T
k

k
m
k
,
on en dduit que
_
_
_

k+1
=
k


k
m
k
m
T
k

k
1+m
T
k

k
m
k
p
k+1
= p
k
+

k
m
k
1+m
T
k

k
m
k
_
y(k) m
T
k
p
k
_
Ce sont des quations dtat o les entres est y(k) et m
k
et la sortie est p
k
. Remarquons que, tout comme
k
la matrice
k
est symtrique.
Initialisation : Dans un contexte statistique gaussien,
k
reprsente linverse de la matrice de covariance associe
lestim p
k
. Elle caractrise donc lincertitude. Pour ne donner quune vague ide de ce quelle reprsente,
associons au couple ( p
k
,
k
) lellipsode E dquation
(p p
k
)
T

1
k
(p p
k
) 1.
Cette ellipsode, est centr en p
k
et est dautant plus grand que les valeurs propres de
k
sont grandes. Cette
ellipsode contient p
k
avec une trs forte probabilit. A linitialisation, si nous navons aucune ide de la valeur de
Commande non linaire des systmes non linaires 135
p

, il semble assez logique de poser


p
0
= (0, 0, . . . , 0)
T
et
0
=
_
_
_
_
_
_
1

0 0
0
1

0
.
.
.
0
0
1

_
_
_
_
_
_
o est trs proche de zro (par exemple 0.001). Ce qui revient supposer que p

est dans une sphre centre en


zro et de rayon trs grand (
1

).
Remarque (facteur doubli) : Pour donner plus dimportance aux dernires mesures et ainsi prendre en compte
une lgre volution de p

dans le temps, on multiplie chacune des quations m


i
p = y
i
par
ki
, o est un
coecient doubli lgrement infrieur 1 (par exemple 0.99). Ainsi, les quations de rcurence (8.7) deviennent

k+1
=
_

k
m
0
m
k1
m
k
_
_
_
_
_
_
_

k
m
T
0
.
.
.
m
T
k1
m
T
k
_
_
_
_
_
_
=
k

i=0
_

ki
_
2
m
i
m
T
i
=
2
_
k1

i=0
_

(k1)i
_
2
m
i
m
T
i
_
+m
k
m
T
k
=
2

k
+m
k
m
T
k
v
k+1
=
_

k
m
0
m
k1
m
k
_
_
_
_
_
_
_

k
y(0)
.
.
.
y(k 1)
y(k)
_
_
_
_
_
_
=
k

i=0
_

ki
_
2
m
i
y(i)
=
2
k1

i=1
_

(k1)i
_
m
i
y(i) +m
k
y(k) =
2
v
k
+m
k
y(k).
Ainsi, lestimateur devient :
_
_
_

k+1
=
2
_

k


k
m
k
m
T
k

2
+m
T
k

k
m
k
_
p
k+1
= p
k
+
2
_

k
m
k
1+m
T
k

k
m
k
_
_
y(k) m
T
k
p
k
_
8.5 Filtrage de Kalman
8.5.1 Matrice de covariance
Soit x un vecteur alatoire, on dnit la matrice de covariance de x, la matrice dont les lments sont

ij
= E((x
i
x
i
) (x
j
x
j
)) .
Par exemple, traons sous Scii.i un nuage de point gaussien de matrice de covariance gale lidentit. Cela se
fait par la suite dinstruction suivante :
rand(normal),x1=rand(10000,1) ;x2=rand(10000,1) ;plot2d(x1,x2,-1)
136 Commande par espace dtat
Reconstruisons la matrice de covariance grce linstruction :
Gamma=[mean(x1.*x1), mean(x1.*x2) ;mean(x2.*x1), mean(x2.*x2)]
On obtient eectivement une matrice proche de lidentit. Fabriquons maintenant une nouveau vecteur alatoire
y laide de x laide de linstruction suivante :
y1=x1+2*x2 ;y2=2*x2+3*x1 ;plot2d(y1,y2,-1)
Le nuage est donn par la gure ci-dessous.
8.5.2 Distribution Gaussienne
La distribution de probabilit dun vecteur alatoire gaussien x est entirement caractrise par son esprance x
et sa matrice de covariance
x
:
p
x
(x) = (2)

n
2
det(
x
)

1
2
exp
_

1
2
(x x)
T

1
x
(x x)
_
. (8.8)
Commande non linaire des systmes non linaires 137
Le caractre gaussien dune variable alatoire se conserve par toute transformation linaire. Considrons, par
exemple, le vecteur y = Ax, o A est une matrice carre inversible. Un lment de volume dx se transforme, par
lapplication linaire associe la matrice A, en un lment de volume dy = [ det(A)[dx. On a
p
x
(x)dx = p
y
(y)dx.[ det(A)[.
Donc
p
y
(y) =
p
x
(A
1
y)
[ det(A)[
(8.8)
=
1
[ det(A)[
(2)

n
2
det(
x
)

1
2
exp
_

1
2
_
A
1
y A
1
y
_
T

1
x
_
A
1
y A
1
y
_
_
Or
_
A
1
y A
1
y
_
T

1
x
_
A
1
y A
1
y
_
= (y y)
T
_
A
x
A
T
_
1
(y y)
et
det(
x
)

1
2
[ det(A)[
= [ det(A)[

1
2
. det(
x
)

1
2
.[ det(A
T
)[

1
2
= det
_
A
x
A
T
_

1
2
donc
p
y
(y) = (2)

n
2
det(A
x
A
T
)

1
2
exp
_

1
2
(y y)
T
_
A
x
A
T
_
1
(y y)
_
Ainsi, y est aussi une variable alatoire gaussienne. Son esprance est y = A x et sa matrice de covariance est

y
= A.
x
.A
T
.
Cette proprit se gnralise mme lorsque A est rectangulaire, de rang quelconque. Soient x
1
et x
2
sont deux
vecteurs alatoires gaussiens indpendants, desprances x
1
et x
2
et de matrices de covariance
x
1
et
x
2
. Le
vecteur x =
_
x
T
1
, x
T
2
_
T
est aussi gaussien desprance x =
_
x
T
1
, x
T
2
_
T
et de matrice de covariance

x
=
_

x
1
0
0
x
2
_
.
Le vecteur alatoire
y = A
1
x
1
+A
2
x
2
=
_
A
1
A
2
_
_
x
1
x
2
_
satisfait
y =
_
A
1
A
2
_
_
x
1
x
2
_
= A
1
x
1
+A
2
x
2
.
et

y
=
_
A
1
A
2
_
_

x
1
0
0
x
2
__
A
T
1
A
T
2
_
= A
1

x
1
A
T
1
+A
2

x
2
A
T
2
.
Les oprations linaires sur les vecteurs alatoires gaussiens sont donc relativement aises, du fait que la gaussianit
se conserve par transformation linaire. Elles se font par calcul direct sur les esprances et sur les matrices de
covariance, qui susent caractriser la distribution gaussienne considre. Ces oprations se retrouvent dans le
ltre de Kalman auquel nous allons nous intresss.
138 Commande par espace dtat
8.5.3 Filtre de Kalman
Considrons le systme linaire dpendant du temps
_
x(k + 1) = A(k)x(k) +B(k)u(k) +v(k)
y(k) = C(k)x(k) +z(k).
Le ltre de Kalman est le systme dcrit par la reprsentation dtat suivante :
_
x(k + 1) = A(k) ( x(k) +K(k). (y(k) C(k) x(k))) +B(k)u(k)

x
(k + 1) = A(k). (
x
(k) K(k)C(k)
x
(k)) .A
T
(k) +
v
(k)
avec
K(k) =
x
(k).C
T
(k).
_

z
(k) +C(k)
x
(k)C
T
(k)
_
1
.
Le vecteur x(k) reprsente une estime pour le vecteur x(k). Les matrices
x
(k),
v
(k),
z
(k) sont respectivement
les matrices de covariance sur lerreur destimation x(k) x(k), sur le bruit dtat v(k) et sur le bruit de mesure
z(k). La matrice K(k) est appele gain de Kalman.
Initialisation du ltre : En gnral, nous navons aucune ide de la valeur de x(0). Ainsi, il semble assez logique
de poser
x(0) = (0, 0, . . . , 0)
T
et
x
(0) =
_
_
_
_
_
_
1

0 0
0
1

0
.
.
. 0
0
1

_
_
_
_
_
_
o est trs proche de zro (par exemple 0.001). Ce qui revient supposer que x(0) est dans une sphre centre
en zro et de rayon trs grand (
1

).
Cas stationnaire : En stationnaire, on a
x
=
x
(k) =
x
(k + 1), do

x
= A
_

x
C
T
_

z
+C
x
C
T
_
1
_
C
x
_
A
T
+
v
Lquation ci-dessus est une quation de Ricatti que lon peut rsoudre une fois pour toute en lanant litration

x
(k + 1) = A
_

x
(k)
_

x
(k)C
T
_

z
+C
x
(k)C
T
_
1
_
C
x
(k)
_
A
T
+
v
jusqu atteindre lquilibre. Ainsi, dans le cas stationnaire, on peut faire lconomie du calcul en temps rel de

x
(k).
Lien avec les moindres-carrs sans oubli : Remarquons que si A(k) = I, B = 0, x = p, C(k) = m
T
k
,

v
(k) = 0 et
z
(k) = 1 on retrouve les moindres-carrs rcursifs sans oublis :
_
_
_
p(k + 1) = p(k) +
_

x
(k)m
k
_
1 +m
T
k

x
(k)m
k
_
1
_
_
y(k) m
T
k
p(k)
_

x
(k + 1) =
x
(k)
_

x
(k)m
k
_
1 +m
T
k

x
(k)m
k
_
1
_
m
T
k

x
(k) +
v
(k)
8.6 Application lestimation en temps rel dune fonction de transfert
8.6.1 Principe
Soit un systme dentre u(k) et de sortie y(k) dordre 3 dcrit par lquation de rcurrence
y(k) +a
1
y(k 1) +a
2
y(k 2) +a
3
y(k 3) = b
1
u(k 1) +b
2
u(k 2) +b
3
u(k 3).
Commande non linaire des systmes non linaires 139
On cherche estimer en temps rel les coecients de la fonction de transfert du systme, sachant que ceux-ci
voluent doucement dans le temps (voir gure ci-dessous).
Supposons que le vecteur p = (a
1
, a
2
, a
3
, b
1
, b
2
, b
3
)
T
obisse lquation dvolution
p(k + 1) = p(k) +v(k)
o v(k) est un bruit blanc de matrice de covariance
v
(souvent, on la prend diagonale). On peut construire un
observateur de Kalman bas sur le systme
_
p(k + 1) = p(k) +v(k)
y(k) = C(k)p(k) +z(k)
avec
C(k) = (y(k 1), y(k 2), y(k 3), u(k 1), u(k 2), u(k 3))
et o z(k) est le bruit de mesure de variance
z
. Ce ltre est donn par
_
p(k + 1) = p(k) +K(k) (y(k) C(k) p(k))

x
(k + 1) =
x
(k) K(k)C(k)
x
(k) +
v
avec
K(k) =
x
(k).C
T
(k).
_

z
+C(k)
x
(k)C
T
(k)
_
1
=

x
(k)C
T
(k)

z
+C(k)
x
(k)C
T
(k)
.
puisque
_

z
+C(k)
x
(k)C
T
(k)
_
est un scalaire. Il ne nous reste qu trouver une relation rcursive qui nous
gnre les C(k). Puisque
C(k + 1) = (y(k), y(k 1), y(k 2), u(k), u(k 1), u(k 2))
des quations rcursives pour gnrer les C(k) sont donc donnes par
C(k + 1) = C(k)
_
_
_
_
_
_
_
_
_
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 1 0
0 0 0 0 0 1
_
_
_
_
_
_
_
_
_
+ (u(k) y(k))
_
0 0 0 1 0 0
1 0 0 0 0 0
_
140 Commande par espace dtat
que nous noterons
C(k + 1) = C(k)N+ (u(k) y(k)) M
Les quations dtat dun identicateur bas sur le ltre de Kalman sont donc :
_

_
p(k + 1) = p(k) +
x(k)C
T
(k)
z+C(k)x(k)C
T
(k)
(y(k) C(k) p(k))

x
(k + 1) =
x
(k)
x(k)C
T
(k)
z+C(k)x(k)C
T
(k)
C(k)
x
(k) +
v
C(k + 1) = C(k)N+ (u(k) y(k)) M
o les entres sont u(k) et y(k) et la sortie est p(k).
8.6.2 Perspectives : commande adaptative, surveillance
Nous proposons dans cette section deux applications possibles de lestimateur de fonction de transfert.
Commande adaptative : Considrons un systme dordre connu mais de fonction de tranfert inconnu. Le schma
dcrit sur la gure ci-dessous propose un rgulateur permettant de donner au systme le comportement dsir.
Lestimateur de fonction de transfert utilise les moindres-carrs rcursifs pour estimer la fonction de transfert
du processus. Ensuite, le module utilise cette la fonction de transfert estime pour calculer un rgulateur (par
exemple par la mthode du placement de ple). Il vient alors modier les quations dtat du systme du rgulateur
classique.
Surveillance :
Commande non linaire des systmes non linaires 141
8.7 Localisation dun robot sous-marin dans une piscine
8.7.1 Prsentation du problme
On considre un robot sous marin (dont les quations dtat ne sont pas ncessairement connues) se dplaant
dans une piscine rectangulaire de demie longueur R
y
et de demie largeur R
y
. Un sonar positionn juste en dessous
du robot tourne avec une vitesse angulaire constante. Le but de ce paragraphe est de proposer lutilisation dun
ltre de Kalman pour localiser le robot. La profondeur z sobtient facilement avec un capteur de pression et nous
supposerons donc cette grandeur connue. Le robot est suppos tre lest de telle faon que les angles de roulis et de
tangage puissent tre considrs comme nuls. Langle de cap est mesur par une boussole. Dans notre contexte, se
localiser signie donc estimer les coordonnes (x, y) du robot. Lorigine du repre sera pris au centre de la piscine.
Pour cette localisation, nous supposons que nous mesurons langle du sonar relativement au corps du robot,
langle par une boussole et les acclrations tangentielles a
T
et normales a
N
par lintermdiaire dacclromtres.
Le sonar nous renvoie toutes les 0.1s la longueur du faiseau sonar. La gure qui suit reprsente la longueur (t)
du faiseau sonar, obtenue par simulation, lorsque le sonar eectue sept tours sur lui-mme, alors que le robot se
dplace.
8.7.2 Dtection des murs
A partir du signal rcupr par le sonar, et dont la gure ci-dessus donne une allure dans une situation sans
bruit, nous allons devoir dtecter les minimums locaux, qui correspondent la situation o le sonar pointe per-
pendiculairement un des quatre murs de la piscine. Lorsque le sonar pointe sur un mur, la distance renvoye
satisfait
a = . cos , (8.9)
o est langle entre la normale au mur et la faiseau sonar et a est la distance entre le sonar et le mur. Nous allons
supposer que le robot est immobile et que seul le sonar tourne (cela revient supposer que les vitesses tangentielle
142 Commande par espace dtat
v et angulaires

du robot sont ngligeables devant la vitesse de rotation du sonar). Considrons tout dabord,
la situation o linstant t, le sonar est normal au mur. Si est un rel positif susamment petit, cest--dire tel
que linstant t le sonar pointe toujours sur le mme mur, nous devrions avoir, daprs la relation (8.9),
a = (t ). cos ( )
Rappelons que la vitesse de rotation du sonar est suppose connue et constante. Prenons = k, k 0, 1, 2, . . . , N
1, o est la dure sparant deux pings du sonar et N est un entier tel que, linstant t N, le sonar pointe
ncessairement sur le mur qui se trouve orthogonal au faiseau sonar linstant t. Posons
a
k
= (t k). cos (k ) .
La quantit a
k
devrait correspondre la distance a entre le robot et le mur point. Mais du fait de la prsence
dun bruit de mesure, il est prfrable dobtenir une estimation a de la distance a par une moyenne :
a =
1
N
N1

k=0
a
k
.
Nous pouvons vrier le fait que le sonar pointe bien perpendiculairement un mur en vriant que la variance
des a
k
est faible, cest--dire que
1
N
N1

k=1
( a
k
a)
2
< ,
o est un seuil x proche de 0. Il sagit du test de la variance.
Or, en pratique il y a beaucoup de donnes aberrantes. Il nous faut donc modier notre mthode. Une approche
plus robuste que celle prsente prcdemment, consiste calculer la mdiane plutot que la moyenne. Pour cela, il
faut trier les a
k
par ordre croissant. Ensuite, on prend le milieu a de la liste et on supprime de la liste les lments
de cette liste qui sont les plus loigns de a. On en supprime par exemple une moiti. Il sont facile trouver car
ils se trouvent soit en dbut, soit en n de liste. On fait alors la moyenne des lments restant pour obtenir a. On
fait alors de test de la variance sur les lments restant pour vrier que le sonar est normal un mur. Notons
que si le robot dispose dune boussole able, le test de la variance devient inutile. En eet, la boussole nous donne
et langle est connu, ce qui nous permet de savoir si le sonar pointe ou non suivant la normale un mur et
aussi de quel mur il sagit.
8.7.3 Localisation
Nous supposons maintenant que nous ayons recueillies (soit par simulation, soit par une exprience relle) pour
chaque t [0, t
max
], les acclrations (a
T
, a
N
), langle de cap et langle du sonar . Nous allons maintenant
chercher nous localiser et estimer notre vitesse laide dun ltre de Kalman. Nous allons modliser les
relations direntielles entre les mesures par les quations dtat suivantes
_

_
x = v
x
y = v
y
v
x
= a
T
. cos a
N
sin
v
y
= a
T
. sin +a
N
cos
(8.10)
o v
x
= x, v
y
= y. Pour les deux dernires quations il sut de remarquer que lacclration absolue est obtenue
partie de lacclration mesur (a
T
, a
N
) par les acclromtres par une simple rotation dangle :
_
x
y
_
=
_
cos sin
sin cos
__
a
T
a
N
_
.
Commande non linaire des systmes non linaires 143
An de pouvoir utiliser un ltre de Kalman il nous faut tout dabord discrtiser le temps. Remarquons que lorsque
+ est un multiple de

2
, le faiseau sonar est orient face un des quatres murs de la piscine (car cette dernire
est suppose rectangulaire). Dans un tel cas, la longueur mesure peut nous permettre de calculer soit x soit y.
Pour notre problme, le temps k discret sincrmente chaque fois que le faiseau sonar pointe face un mur de
la piscine, cest--dire que k = E(
+
/2
), o E dsigne la partie entire dun nombre rel. Une discrtisation par
Euler de (8.10) se traduit par
_

_
x(k + 1) = x(k) +v
x
(k) T(k)
y(k + 1) = y(k) +v
y
(k) T(k)
v
x
(k + 1) = v
x
(k) + (a
T
(k) cos (k) a
N
(k) sin(k)) T(k)
v
y
(k + 1) = v
y
(k) + (a
T
(k) sin(k) +a
N
(k) cos (k)) T(k)
o T(k) est le temps rel qui sest coul entre deux incrmentations successives de k. Sous forme matricielle, ces
quations dtat deviennent
x(k + 1) =
_
_
_
_
_
1 0 T(k) 0
0 1 0 T(k)
0 0 1 0
0 0 0 1
_
_
_
_
_
x(k) +
_
_
_
_
_
0 0
0 0
T(k) sin(k) T(k) cos (k)
T(k) cos (k) T(k) sin(k)
_
_
_
_
_
u(k)
r(k) = C(k).x(k),
(8.11)
avec
x(k) = (x(k), y(k), v
x
(k), v
y
(k)) et
u(k) = (a
N
(k), a
T
(k)) .
En ce qui concerne lquation de mesure, il nous faut distinguer quatre cas
Cas 0, mur droit ((k) + (k) = 2k). Dans ce cas, nous avons une mesure sur x : r(k) = x(k) R
x
d(k),
o d(k) est la distance retourne par le sonar. Ainsi, la matrice dobservation sera
C(k) =
_
1 0 0 0
_
.
Cas 1, mur fond ((k) +(k) = 2k +

2
). Dans ce cas, nous avons une mesure sur y : r(k) = y(k) R
y
d(k)
et donc
C(k) =
_
0 1 0 0
_
.
Cas 2, mur gauche ((k)+(k) = 2k+). Nous avons nouveau une mesure sur x : r(k) = x(k) R
x
+d(k).
La matrice dobservation sera
C(k) =
_
1 0 0 0
_
.
Cas 3, mur devant ((k) +(k) = 2k +
3
2
). Nous avons une mesure sur y : r(k) = y(k) R
y
+d(k). Ainsi
C(k) =
_
0 1 0 0
_
.
Si nous connaissons +, pour savoir dans quel cas i nous sommes, il faut rsoudre
k N, (k) +(k) = 2k +
i
2
cest--dire
k N,
2

((k) +(k)) = i + 4k
144 Commande par espace dtat
Donc, pour avoir le cas i le plus probable, on calcule lentier le plus proche de la quantit
2

((k) +(k)), et on
regarde le reste de la division euclidienne de cet entier par 4. Sous Scii.i, cela se fait pas le calcul suivant
i=modulo(round((thetak+alphak)*2/%pi),4)
Notons que le systme (8.11) na pas pour but de reproduire le comportement dynamique du systme au niveau
de la commande, mais plutt de permettre lutilisation dun ltre de Kalman, dans le but destimer la position et
la vitesse du robot. Pour cela, nous nous sommes arrangs pour avoir un systme discret dcrit par des quations
dtat linaires. On a donc bien un systme de la forme
_
x(k + 1) = A(k)x(k) +B(k)u(k) +v(k)
r(k) = C(k)x(k) +z(k).
Nous venons de rajouter deux signaux de bruit v et z qui seront supposs blancs, de matrice de covariance
v
et

z
(notons que ici,
z
est un scalaire). Ces deux matrices ont pour but de modliser les incertitudes de modle et
les bruits de mesure. Le ltre de Kalman est donc dcrit par :
_
x(k + 1) = A(k). ( x(k) +K(k) (r(k) C(k) x(k))) +B(k)u(k)

x
(k + 1) = A(k) (
x
(k) K(k)C(k)
x
(k)) A
T
(k) +
v
(k),
avec
K(k) =
x
(k).C
T
(k).
_

z
(k) +C(k).
x
(k).C
T
(k)
_
1
.
8.7.4 Reprsentation graphique
Pour chaque k, le ltre de Kalman nous donne un couple ( x, ), qui peut sinterprter comme un ellipsode de R
4
contenant lensemble des x = (x, y, v
x
, v
y
) compatibles avec nos mesures. Cet ellipsode est donn par
(x x)
T

1
(x x) 1.
En pratique, on ne trace quune reprsentation bi-dimensionnelle de cet ellipsode. Dans notre exemple, on pourra
se limiter aux composantes de x correspondant au sous-vecteur w = (x, y) qui a une signication claire dans
lespace de travail du robot. Ainsi, nous considrerons la matrice de covariance Q, sous matrice de , donne par
Q =
_

11

12

21

22
_
.
On sintresse alors lellipse
(w w)
T
.Q. (w w) 1.
Comme la matrice Q est symtrique dnie positive, elle admet une racine carre, cest--dire, une matrice
symtrique Q
1
2
telle que Q
1
2
.Q
1
2
= Q. Ainsi, lingalit dnissant lellipsode scrit
(w w)
T
Q

1
2
Q

1
2
(w w) 1
ou encore
[[Q

1
2
(w w) [[
2
1.
En posant s = Q

1
2
(w w), cette ingalit devient [[s[[
2
1. Lellipsode en w peut tre considre comme
limage par lapplication ane w(s) = w+Q
1
2
s du disque unit. Pour tracer sa frontire, il sut de rentrer les
instructions Scii.i suivantes
Commande non linaire des systmes non linaires 145
s=0 :0.01 :2*%pi ;
w=w_hat*ones(s)+sqrtm(Q)*[cos(s) ;sin(s)] ;
xpoly(w(1, :),w(2, :)) ;
La gure qui suit reprsente le robot un intant t, le faiseau sonar associ et une suite dellipsodes de conance
engendrs par le ltre de Kalman. Le grand cercle reprsente lellipsode de conance initiale.
Remarque. Soit b une distribution gaussienne centre en zro. On sintresse la probabilit que b appartienne
la sphre de rayon , cest--dire,
P
_
b
T
b
2
_
La variable alatoire z = b
T
b suit une loi du
2
. Sa densit de probabilit est donne par
f
n
(z) =
_
1

2
n
(n/2)
z
n
2
1
exp
_

z
2
_
si z 0
0 sinon
o
(a) =
_

0
e
t
t
a1
dt = (x 1)!
est la fonction dEuler. Par exemple, si on veut que cette probabilit soit gale 0.95, et pour n = 2, laide dune
table du
2
, nous pouvons voir quil nous faut prendre
2
= 6. Si maintenant, on considre un vecteur gaussien
de matrice de covariance et desprance x. On sintresse lellipsode de conance
(x x)
T
.
1
. (x x)
2
cest--dire
[[

1
2
(x x) [[
2

2
.
Le vecteur b =

1
2
(x x) est un vecteur blanc gaussien, donc
P
_
(x x)
T
.
1
. (x x)
2
_
= P([[b[[
2

2
).
Pour n = 2, on obtient on obtient que lellipsode de conance qui contient x avec une probabilit de 0.95 est
donne par
(x x)
T
.
1
. (x x) 6.
146 Commande par espace dtat
Bibliographie
[1] Mupad, www.mupad.com/.
[2] Scilab, www-rocq.inria.fr/scilab/scilab.html.
[3] B. dAndra Novel. Commande non-linaire des robots. Herms, Paris, France, 1988.
[4] P. de Larminat. Automatique, commande des systmes linaires. Herms, Paris, France, trait des nouvelles
technologies edition, 1993.
[5] W. Khalil et E. Dombre. Modlisation, identication et commande des robots, Collection Robotique. Herms,
Paris, 1999.
[6] M. Rivoire et J.L. Ferrier. Cours et exercices dautomatique, Tomes 1, 2 et 3. Eyrolles, Paris, France, 1989.
[7] E. Walter et L. Pronzato. Identication de modles paramtriques partir de donnes exprimentales. Masson,
Paris, France, 1994.
[8] L. Jaulin. Reprsentation dtat pour la modlisation et la commande des systmes (Coll. Automatique de
base). Herms, London, 2005.
[9] L. Jaulin, M. Kieer, O. Didrit, E. Walter. Applied Interval Analysis, with Examples in Parameter and State
Estimation, Robust Control and Robotics. Springer-Verlag, London, 2001.
[10] F. Lamnabhi-Lagarrigue. Analyse des systmes non-linaires. Herms, Paris, France, 1994.
[11] I. D. Landau. Identication et commande des systmes. Herms, Paris, France, 1993.
[12] J.P. Laumond. La robotique mobile. Herms, Paris, France, 2001.
[13] J. P. Merlet. Les robots parallles. Herms, Paris, France, 1990.
[14] D.A. Wells. Lagrangian Mechanics. Schaums outlines, London, 1967.
147
148 Commande par espace dtat
Glossaire
Glossaire Scii.i (pour le calcul numrique)
bdiag(A) : renvoie une matrice diagonale contenant les valeurs propres de A et une matrice dont les colonnes sont
les vecteurs propres de A.
champ(x1,x2,y1,y2) : trace le champ de vecteur (y1,y2) sur la grille forme par les vecteurs x1 et x2.
deff(y=f(x1,x2),y=x1+sin(x2)) : dnit une fonction f laide dune chane de caractre.
eye(n,n) : gnre une matrice identit de dimension n n.
feval(x1,x2,f) : value la fonction f sur la grille forme par les vecteurs x1 et x2. Le rsultat renvoy est une
matrice.
isoview(xmin,xmax,ymin,ymax) : dnit les chelles sur la fentre graphique.
modulo(a,b) : renvoie le reste de la division euclidienne de lentier a par lentier b.
ones(v) : renvoie une matrice de mme dimension que v qui ne contient que des 1.
pvm_set_timer() : initialise le chronomtre.
pvm_get_timer() : renvoie la valeur du chronomtre en microsecondes.
poly([a1,a2,...],s) : renvoie le polynme (s a
1
)(s a
2
) . . .
round(a) : renvoie lentier le plus proche du nombre rel a.
seteventhandler() : active ou dsactive le gestionnaire dvnements.
xbasc() : eace et initialise la fentre graphique.
xdel() : supprime la fentre graphique.
xfpoly(x,y) : trace un polygone, tout comme xpoly, mais cette fois, le polygone est plein.
xpoly(x,y) : trace, sur la fentre graphique, un polygone dont les abscisses et ordonnes sont ranges dans les
vecteur x et y.
xset(thickness,a) : congure lpaisseur a du stylo, lors du dessin graphique.
zeros(v) : renvoie une matrice de mme dimension que v qui ne contient que des 0.
Glossaire Mi. (pour le calcul formel)
charpoly(M,s) : Calcule le polynme caractristique de la matrice carre M.
export(linalg) : rend active la bibliothque dalgbre linaire linalg.
jacobian([x*y,x^2+y^2],[x,y]) : renvoie la matrice jacobienne de la fonction f(x, y) = (xy, x
2
+y
2
).
normal(E) : rduit au mme dnominateur une expression constitue de plusieurs fractions.
simplify(E) : renvoie une version simplie de lexpression E.
subs(E(x,y),x=1,y=2) : substitue dans lexpression E, la variable x par 1 et la variable y par 2.
149
Index
quation dvolution, 13
quation dobservation, 13
tat, 13
asservissement, 14
automatique, 14
bacs, 31
bateau voile, 118
Bernouilli, 31
bouclage linarisant, 108
bras manipulateur, 49
calcul formel, 14
calcul numrique, 14
champ de vecteur, 39
changement de base, 61
char, 26, 113
commandabilit, 72
commande, 13, 14
commande non linaire, 87, 107
commande par retour dtat, 76
commande par retour de sortie, 79
commande proportionnelle et drive, 110, 115
commande proportionnelle et intgrale, 112
conduite automatique, 98
conguration, 53
consigne, 14
coordonnes homognes, 46
critre dobservabilit, 74
critre de commandabilit, 73
cycle, 44
dcomposition de Kalman, 75
dterminant, 100
entre, 13
estimateur dtat, 72
eventhandler, 53
exponentielle de matrice, 57
fauteuil roulant, 26, 113
ltre de Kalman, 138
fonction de transfert, 63
forme canonique dobservation, 67
forme canonique de commande, 66
forme de Jordan, 69
forme modale, 67
gain de Kalman, 138
gestionnaire dvnement, 53
glossaire Mupad, 149
glossaire Scilab, 149
holonome, 27
intgrateur, 18
interactivit, 53
inverse gnralise, 75, 127
linarisation, 87
linarisation par bouclage, 107
linarit par rapport aux paramtres, 127
mthode dEuler, 50
mthode du gradient, 41
Maple, 14
Matlab, 14
matrice compagne, 62
matrice dvolution, 14, 71
matrice dobservabilit, 74
matrice dobservation, 14, 71
matrice de commandabilit, 73
matrice de commande, 14, 71
matrice de consigne, 84
matrice de passage, 61
matrice de rotation, 46
matrice de transfert, 63
matrice directe, 14
matrice jacobienne, 87
modlisation, 13, 17
150
Index 151
modeleur, 45
moindres carrs, 127
moindres carrs rcursifs, 132
monocycle, 24
motif, 45
Mupad, 14
observabilit, 74
observateur, 80
observateur tendu, 94
pendule invers, 22, 94
pendule simple, 21
pendulechamp.sce, 44
pendulesimu.sce, 51
penduletrajectoire.sce, 52
placement de ples, 72, 76
point dquilibre, 42, 89
point de fonctionnement, 14, 71, 89
point de polarisation, 89
polynme caractristique, 60, 90
prcompensateur, 83
principe de sparation, 82
principe fondamental de la dynamique, 18
rgulateur, 14
rgulateur statique, 115, 121
reprsentation dtat, 13, 17
robot manipulateur, 49
robots roues, 24, 98
satellite, 19
Scilab, 14
simulation, 13, 39, 50
solution des quations dtat, 57
solution force, 58, 59
solution homogne, 58, 59
solution libre, 58
solution transitoire, 58
sortie, 13
stabilit, 59
systme temps discret, 37
systme boucl, 14
systme de Fibonacci, 37
systme de Lotka-Volterra, 42, 89
systme linaire, 17, 57
systme linaris, 89
systme monovariable, 64
systme proies-prdateurs, 42, 89
systme tangent, 89
systmes lectriques, 35
systmes hydrauliques, 31
systmes mcaniques, 18
temps continu, 13
temps discret, 13
temps rel, 51
transforme de Laplace, 63
vrin, 33, 91
variables consignes, 84
variations, 89
vecteur propre, 40
voilier, 29
voiture, 27, 53, 98

Vous aimerez peut-être aussi