Vous êtes sur la page 1sur 11

Abonnez-vous à DeepL Pro pour éditer ce document.

Visitez
Université technique d'État www.DeepL.com/pro
de Moscou pour en
N.E. Bauman Université savoir plus.
technique d'État de Moscou N.E. Bauman
Département des systèmes de contrôle automatique

Conception du filtre de Kalman

Travail de laboratoire n°6 sur le cours de l'UTS


Objectif de l'article : La Control System Toolbox est illustrée par un
exemple de synthèse de filtres de Kalman stationnaires et non stationnaires.
Durée : 4 heures.
Considérons un modèle discret d'un objet de la forme

avec un bruit gaussien additif sur l'entrée et les données suivantes :


A = [0, -0.01 ; 0.01, 0]
B = [1,1]'
C=[1,0]
D=[0]

La tâche consiste à concevoir un filtre de Kalman pour estimer le vecteur


de sortie , étant donné que les mesures d'entrée et de sortie ,
mélangées à du bruit, sont connues.

où est un vecteur de séquences de "bruit blanc" gaussien.


Filtre de Kalman discret
Les équations du filtre de Kalman discret stationnaire pour ce problème
sont définies comme suit :


vecteur estimé , dérivé des mesures effectuées jusqu'à
et y compris ;
- estimation actualisée basée sur des mesures jusqu'à et y compris

Senkin A.V. Synthèse des filtres de Kalman stationnaires et non stationnaires


Université technique d'État de Moscou N.E. Bauman Université technique d'État de Moscou N.E. Bauman
Département des systèmes de contrôle automatique

Cette estimation courante permet de prédire la valeur de l'état pour


l'échantillon suivant (prédiction un pas en avant). Cette prédiction est ensuite
corrigée par une nouvelle mesure . Il en résulte une fonction de
correction qui prend en compte la contribution de la nouvelle dimension et
qui est définie comme la différence

entre la valeur mesurée et la valeur prédite du vecteur de sortie . La


matrice de gain actualisée est choisie pour minimiser la variance de
l'erreur en régime permanent qui dépend de la variance du bruit :

Le modèle ss résultant du filtre de Kalman peut maintenant être écrit :

Le filtre de Kalman génère une estimation optimale pour le


vecteur de sortie avec le vecteur d'état du filtre défini par
Filtre de Kalman stationnaire
Le filtre de Kalman stationnaire décrit ci-dessus peut être conçu à l'aide
de la fonction de Kalman. Tout d'abord, on établit un modèle de l'objet, en
tenant compte des effets du bruit

Ceci peut être réalisé en utilisant l'opérateur suivant, en fixant ce


qui signifie l'entrée d'un modèle discret
Plant = ss(A,[B B],C,0,-1 ,'inputname',{'u' 'w'},'outputname','y') ;

En supposant que
Q=1 ; R=1 ;

synthétiser le filtre de Kalman en appliquant l'opérateur


[kalmf, L, P, M]= kalman(Plante,Q,R)

Senkin A.V. Synthèse des filtres de Kalman stationnaires et non stationnaires


Université technique d'État de Moscou N.E. Bauman Université technique d'État de Moscou N.E. Bauman
Département des systèmes de contrôle automatique

La sortie de l'opérateur est le modèle ss du filtre de Kalman kalmf et la


matrice de coefficients mise à jour M :
M

Les entrées du filtre de Kalman sont les signaux u et yv , et les sorties


sont le vecteur de sortie et l'estimation du vecteur d'état
(figure 1).

Filtre de Kalman

u ye
kalmf
, yv

Fig.1

Puisque seule l'estimation du vecteur de sortie nous intéresse, ne gardons


que la première ligne de l'objet ss kalmf :
kalmf=kalmf(1, :)

Pour voir comment le filtre fonctionne, vous devez générer les signaux
d'entrée et le bruit et comparer la sortie de l'objet y avec la sortie du filtre ye .
Vous pouvez générer chaque réaction séparément ou les générer ensemble.
Pour simuler des réactions séparées, utilisez la fonction lsim pour simuler
d'abord uniquement l'objet, puis la combinaison de l'objet et du filtre.
La simulation de l'articulation est expliquée dans l'organigramme (figure
2).

ye
y yv Filtre
u Objet Kalman

Bruit par Bruit du


entrée capteur
y
Fig.2

Senkin A.V. Synthèse des filtres de Kalman stationnaires et non stationnaires


Université technique d'État de Moscou N.E. Bauman Université technique d'État de Moscou N.E. Bauman
Département des systèmes de contrôle automatique

Selon cet organigramme, un modèle ss peut être formé en utilisant les


fonctions parallèle et de rétroaction. Tout d'abord, nous construisons un
modèle de l'objet P (Fig. 3), dont les entrées sont les signaux u, w, v, et les
sorties les mesures y et yv :
a=A ;
b=[B B 0*B] ;
c=[C;C] ;
d=[0 0 0 ; 0 0 1] ;
P = ss(a,b,c,d,-1, 'inputname',{'u' 'w' 'v'}, 'outputname',{'y' 'yv'}) ;

Utilisez ensuite la fonction parallèle pour former la connexion parallèle


suivante entre l'objet et le filtre (fig. 3) :

y
w

v P
yv
u

Filtre
Kalman ye
yv

Fig.3

sys=parallel(P,kalmf,1,1,[],[]) ;

Enfin, fermez la boucle de mesure en connectant la sortie de l'objet yv à


l'entrée du filtre de rétroaction positive du même nom :
Connectez l'entrée n°4 à la sortie n°2.
SimModel=feedback(sys, 1,4,2,1) ;
%Supprimer yv de la liste des E/S
SimModel = SimModel([1 3], [1 2 3]) ;

Le modèle résultant a des entrées w, v, u et des sorties y,ye :


SimModel.inputname

ans =
'w'
'v'
'u'
SimModel.outputname

ans =

Senkin A.V. Synthèse des filtres de Kalman stationnaires et non stationnaires


Université technique d'État de Moscou N.E. Bauman Université technique d'État de Moscou N.E. Bauman
Département des systèmes de contrôle automatique

'y'
"y_e
Le comportement du filtre de Kalman peut maintenant être simulé.
Générons le signal d'entrée et les vecteurs de bruit w, v :
t=[0:100]' ;
u=sin(t/5) ;
n=longueur(t)

randn('seed',0)
w=sqrt(Q)*randn(longueur(t),1) ;
v=sqrt(R)*randn(longueur(t),1) ;

Faisons une simulation avec la fonction lsim :


[out,x]=lsim(SimModel, [w,v,u]) ;

y=out( :,1) ;
ye=out( :,2) ;
yv=y+v ;

et comparez les sorties de l'objet et du filtre sur le graphique :


subplot(211),plot(t,y,'-',t,ye,'-'),
xlabel('Nombre de mesures'),ylabel('Résultat')
subplot(212),plot(t,y-yv,'-',t,y-ye,'-'),
xlabel('Nombre de mesures'),ylabel('Erreur')

2
Выход

-2

-4
0 20 40 60 80 100
Количество измерений
4

2
Ошибка

-2

-4
0 20 40 60 80 100
Количество измерений

Senkin A.V. Synthèse des filtres de Kalman stationnaires et non stationnaires


Université technique d'État de Moscou N.E. Bauman Université technique d'État de Moscou N.E. Bauman
Département des systèmes de contrôle automatique

Выход
0

-2

-4
0 20 40 60 80 100
Количество измерений
4

2
Ошибка

-2

-4
0 20 40 60 80 100
Количество измерений

Fig.4

Le premier graphique de la figure 4 montre la sortie de l'objet (ligne


pointillée) et la sortie du filtre (ligne pleine) ; le deuxième graphique montre
l'erreur de mesure (ligne pointillée) et l'erreur d'estimation (ligne pleine). Les
graphiques montrent que le niveau de bruit a considérablement diminué
après le filtrage. Ceci est également confirmé par l'estimation de la
variance :
MeasErr=y-yv ;
MeasErrCov=somme(MeasErr.*MeasErr)/longueur(MeasErr)
EstErr=y-ye ;
EstErrCov=somme(EstErr.*EstErr)/longueur(EstErr)

La variance de l'erreur d'estimation est presque quatre fois plus petite


que l'erreur de mesure.

Senkin A.V. Synthèse des filtres de Kalman stationnaires et non stationnaires


Université technique d'État de Moscou N.E. Bauman Université technique d'État de Moscou N.E. Bauman
Département des systèmes de contrôle automatique

Filtre de Kalman discret non stationnaire

Le filtre de Kalman non stationnaire est une généralisation du filtre


stationnaire pour les systèmes à paramètres variables ou lti- systèmes à
perturbations non stationnaires. On suppose que les équations de l'objet et de
la mesure sont données sous la forme :

Dans ce cas, un filtre de Kalman discret non stationnaire est défini


comme suit :


une estimation du vecteur x [n] obtenue à partir de mesures
jusqu'à et y comprisv [n-1] ;
estimation actualisée dérivée des mesures jusqu'à et y comprisv
[n] ;

Pour une meilleure compréhension, nous avons omis les indices


définissant la dépendance temporelle des matrices dans les équations d'état.
En fixant des conditions initiales pour les variables x [1|0] et P [1|0],
nous pouvons commencer à itérer les équations de filtrage ci-dessus. Il est à

Senkin A.V. Synthèse des filtres de Kalman stationnaires et non stationnaires


Université technique d'État de Moscou N.E. Bauman Université technique d'État de Moscou N.E. Bauman
Département des systèmes de contrôle automatique

noter que la mise à jour du vecteur d'état x [n|.] et des matrices de covariance
P [n|.] doit être effectuée à chaque étape.

Synthèse d'un filtre de Kalman discret non stationnaire

Bien que la Control System Toolbox ne comprenne pas de fonction


spéciale pour synthétiser le filtre de Kalman dans le cas non stationnaire, il
est possible d'implémenter ce processus en se basant sur la procédure
récursive décrite ci-dessous.
Considérons un objet de contrôle stationnaire :
A = [1.1269 -0.4940 0.1129
1.0000 0 0
0 1.0000 0 ]
B = [ -0.3832
0.5919
0.5191 ]
C = [ 1 0 0 ] ;
et générer une séquence de mesures de sortie :
t=[0:100]' ;
u=sin(t/5) ;
n=longueur(t)

randn('seed',0)
w=sqrt(Q)*randn(n, 1) ;
v=sqrt(R)*randn(n, 1) ;
sys=ss(A,B,C,0,-1) ;
y=lsim(sys,u+w) ;
yv=y+v ;

Q=1 ; R=1 ;

Compte tenu des conditions initiales , il est


possible de synthétiser un filtre instationnaire en utilisant le cycle suivant :
P=B*Q*B' ;
x=zeros(3, 1) ;
ye=zeros(length(t),1) ;
ycov=zeros(length(t),1) ;
pour j=1:longueur(t)
%Mise à jour des mesures
Mn=P*C'/(C*P*C'+R) ;
x=x+Mn*(yv(j)-C*x) ; %x[n|n]
P=(eye(3)-Mn*C)*P ; %P[n|n]
ye(j)=C*x ;
errcov(j)=C*P*C' ;
Mise à jour de la variable
x=A*x+B*u(j) ; % x[n+1|n]
P=A*P*A'+B*Q*B' ; %P[n+1|n]
fin

subplot(211),plot(t,y,'--',t,ye,'-'),
xlabel('Nombre de mesures'),ylabel('Résultat')

Senkin A.V. Synthèse des filtres de Kalman stationnaires et non stationnaires


Université technique d'État de Moscou N.E. Bauman Université technique d'État de Moscou N.E. Bauman
Département des systèmes de contrôle automatique

subplot(212), plot(t,y-yv, '-.',t,y-ye, '-'),


xlabel('Nombre de mesures'), ylabel('Erreur')

Выход
0

-2

-4
0 20 40 60 80 100
Количество измерений
4

2
Ошибка

-2

-4
0 20 40 60 80 100
Количество измерений

Figure 5
Le premier graphique de la figure 5 montre la sortie de l'objet (ligne
pointillée) et la sortie du filtre (ligne pleine) ; le deuxième graphique montre
l'erreur de mesure (ligne pointillée) et l'erreur d'estimation (ligne pleine).
L'algorithme du filtre de Kalman non stationnaire nous permet
également d'estimer à chaque étape l'écart type de l'erreur d'estimation
errcov :
plot(t(1:21), errcov(1:21)), ylabel('Ecart-type d'erreur'), grid on

2
Выход

-2

-4
0 20 40 60 80 100
Количество измерений
Стандартное отклонение ошибки

0.5

0.4

0.3

0.2

0.1
0 5 10 15 20

Senkin A.V. Synthèse des filtres de Kalman stationnaires et non stationnaires


Université technique d'État de Moscou N.E. Bauman Université technique d'État de Moscou N.E. Bauman
Département des systèmes de contrôle automatique

Fig.6
Il est facile de voir sur ce graphique que l'écart type en régime
permanent est atteint en cinq étapes environ, après quoi les caractéristiques
des filtres non stationnaires et stationnaires coïncident.
Estimons la valeur de l'écart-type à partir des données expérimentales :
EstErr=y-ye ;
EstErrCov=somme(EstErr.*EstErr)/longueur(EstErr)

EstErrCov= 0.2718
Cette valeur est inférieure à la valeur théorique d'errcov et est proche de
l'estimation pour le filtre stationnaire.
Enfin, notons que la dernière valeur de la matrice M[n] et la valeur
réglée de la matrice des coefficients actualisés M coïncident :

Travaux pratiques
1. d'explorer les possibilités du fichier de démonstration kalmdemo.m avec des
exemples de filtres Kalman stationnaires et non stationnaires.
2. Concevez un filtre de Kalman pour un système dont la fonction de transfert
W(s)= K/(T s22 +2xTs+1) lorsque l'entrée est soumise à une action de contrôle et à
une perturbation , si les mesures de sortie sont effectuées avec une erreur . Les
signaux aléatoires et sont des bruits "blancs" d'intensité Q et R, respectivement. Les
valeurs de K, T, x, Q et R peuvent être obtenues à partir du professeur (par exemple,
pour sys=tf(ss([-1 -6.25;16 0],[2 0;0],[0 3.125],0)) la fonction de transfert
100
W(s)= ----------------,
s^2 + s + 100
c'est-à-dire K=1, T=0,1c, =0,05, et matrices Q=1, R=0,01).
3. Tracez la valeur exacte du signal de sortie et son estimation , les tracés
d'erreur de l'estimation du vecteur d'état - , les tracés du signal du capteur et son
estimation , et les tracés d'erreur de mesure - et l'erreur d'estimation - .
4. Tirer des conclusions et démontrer les résultats à l'enseignant.

Formatage du rapport
Le rapport de laboratoire doit contenir :
1. Les équations et un schéma structurel du système en question.
2. Résultats de la simulation du dispositif d'observation.
3. Conclusions des travaux.

Senkin A.V. Synthèse des filtres de Kalman stationnaires et non stationnaires


Université technique d'État de Moscou N.E. Bauman Université technique d'État de Moscou N.E. Bauman
Département des systèmes de contrôle automatique

Questions :
1. Énoncé du problème de conception du filtre de Kalman.
2. Quels problèmes de calcul se posent lors de la résolution du problème de la
recherche d'un filtre de Kalman ?
3. Comment la précision de l'estimation peut-elle être améliorée en utilisant un
filtre de Kalman ?
4. Pourquoi un filtre exige-t-il que le système soit observable pour fonctionner ?
5. Formuler les conditions d'observabilité du système étudié.
6. Quelle fonction Matlab peut être utilisée pour générer la matrice
d'observabilité de l'objet de contrôle ?
8. Comment synthétiser un filtre de Kalman pour un objet de contrôle discret ?
9. Comment peut-on synthétiser un filtre de Kalman non stationnaire à l'aide de
Matlab ?

Senkin A.V. Synthèse des filtres de Kalman stationnaires et non stationnaires

Vous aimerez peut-être aussi