Filtro di Kalman

Il filtro di Kalman è un efficiente filtro ricorsivo che valuta lo stato di un sistema dinamico a partire da una serie di misure soggette a rumore. Per le sue caratteristiche intrinseche è un filtro ottimo per rumori e disturbi agenti su sistemi gaussiani a media nulla. Trova utilizzo come osservatore dello stato, come loop transfer recovery (LTR) e come sistema di identificazione parametrica. Il problema della progettazione del filtro di Kalman è il problema duale del regolatore lineare quadratico (LQR).

Storia

Il filtro prende il nome da Rudolf E. Kalman, sebbene in realtà Thorvald Nicolai Thiele[1] e Peter Swerling abbiano sviluppato un algoritmo simile in precedenza. Stanley Schmidt è generalmente riconosciuto essere stato il primo a sviluppare una realizzazione pratica di un filtro di Kalman. Durante una visita di Kalman al Centro di Ricerche Ames della NASA Schmidt vide l'applicabilità delle idee di Kalman al problema della stima delle traiettorie per il programma Apollo e finì con l'includerlo nel programma del computer di bordo dell'Apollo. Il filtro fu sviluppato in articoli scientifici da Swerling (1958), Kalman (1960) e Kalman e Bucy (1961).

In seguito, partendo dalla formulazione originaria di Kalman che ora è chiamata il filtro semplice di Kalman, sono stati sviluppati numerosi tipi di filtro di Kalman; alcuni esempi sono il filtro esteso di Schmidt, il filtro di informazione e diversi filtri a radice quadrata sviluppati da Bierman, Thornton e molti altri. Anche l'anello ad aggancio di fase (PLL), circuito elettronico usato in innumerevoli applicazioni quali la radio, i calcolatori elettronici e la trasmissione dati, può essere considerato un filtro di Kalman.

Filtro di Kalman a tempo continuo

Definizione del problema

Si consideri l'applicazione del problema ad un generico sistema MIMO: dato un sistema dinamico lineare stazionario soggetto a rumore di processo v x ( t ) {\displaystyle {\boldsymbol {v}}_{x}(t)} e rumore di misura v y ( t ) {\displaystyle {\boldsymbol {v}}_{y}(t)} , si scrivono le equazioni caratteristiche come:

x ˙ ( t ) = A x ( t ) + B u ( t ) + v x ( t ) y ( t ) = C x ( t ) + D u ( t ) + v y ( t ) {\displaystyle {\begin{aligned}{\boldsymbol {\dot {x}}}(t)&=A{\boldsymbol {x}}(t)+B{\boldsymbol {u}}(t)+{\boldsymbol {v}}_{x}(t)\\{\boldsymbol {y}}(t)&=C{\boldsymbol {x}}(t)+D{\boldsymbol {u}}(t)+{\boldsymbol {v}}_{y}(t)\end{aligned}}}     con    v ( t ) = [ v x ( t ) v y ( t ) ] {\displaystyle {\boldsymbol {v}}(t)={\begin{bmatrix}{\boldsymbol {v}}_{x}(t)\\{\boldsymbol {v}}_{y}(t)\end{bmatrix}}}

dove i rumori v x ( t ) {\displaystyle {\boldsymbol {v}}_{x}(t)} e v y ( t ) {\displaystyle {\boldsymbol {v}}_{y}(t)} sono incorrelati nel tempo, congiuntamente gaussiani a media nulla. Senza troppa perdita di generalità si può considerare D = 0 {\displaystyle D=0} (caso di un sistema strettamente proprio). Dato il rumore, si scriva una matrice V {\displaystyle V} detta matrice di covarianza come:

V = [ Q ~ Z Z R ~ ] {\displaystyle V={\begin{bmatrix}{\tilde {Q}}&Z\\Z&{\tilde {R}}\end{bmatrix}}\,}

dove

Z = C o v [ v x ( t ) , v y ( t ) ] {\displaystyle Z=\mathrm {Cov} [{\boldsymbol {v}}_{x}(t),{\boldsymbol {v}}_{y}(t)]}
Q ~ = V a r [ v x ( t ) ] {\displaystyle {\tilde {Q}}=\mathrm {Var} [{\boldsymbol {v}}_{x}(t)]}
R ~ = V a r [ v y ( t ) ] {\displaystyle {\tilde {R}}=\mathrm {Var} [{\boldsymbol {v}}_{y}(t)]}

Come ipotesi aggiuntive si prendano: R ~ 0 {\displaystyle {\tilde {R}}\succ 0} (definita positiva), ovvero la componente di rumore di misura è a covarianza non nulla su ogni uscita, Z = 0 {\displaystyle Z=0} , ovvero i rumori su stato e uscita sono incorrelati; lo stato è modellizzato come una variabile casuale gaussiana tale che:

x 0 = x ( 0 ) {\displaystyle {\boldsymbol {x}}_{0}={\boldsymbol {x}}(0)}
E [ x ( 0 ) ] = x ¯ 0 {\displaystyle \mathrm {E} [{\boldsymbol {x}}(0)]={\overline {\boldsymbol {x}}}_{0}}
E [ ( x 0 x ¯ 0 ) ( x 0 x ¯ 0 ) ] = P ~ 0 {\displaystyle \mathrm {E} [({\boldsymbol {x}}_{0}-{\overline {\boldsymbol {x}}}_{0})({\boldsymbol {x}}_{0}-{\overline {\boldsymbol {x}}}_{0})']={\tilde {P}}\succeq 0}

e inoltre i rumori e lo stato sono incorrelati, ovvero:

E [ x 0 v ] = 0 {\displaystyle \mathrm {E} [{\boldsymbol {x}}_{0}{\boldsymbol {v}}']=0}

Osservatore dello stato

Si consideri a questo punto l'osservatore

d x ^ ( t ) d t = x ^ ˙ ( t ) = A x ^ ( t ) + B u ( t ) + L ( t ) [ y ( t ) C x ^ ( t ) ] {\displaystyle {\frac {\mathrm {d} {\boldsymbol {\hat {x}}}(t)}{\mathrm {d} t}}={\boldsymbol {\dot {\hat {x}}}}(t)=A{\boldsymbol {\hat {x}}}(t)+B{\boldsymbol {u}}(t)+L(t)[{\boldsymbol {y}}(t)-C{\boldsymbol {\hat {x}}}(t)]}

Da qui, con semplici passaggi algebrici per sostituzione, è possibile scrivere la dinamica dell'errore nel seguente modo:

e ˙ ( t ) = x ˙ ( t ) x ^ ˙ ( t ) {\displaystyle {\boldsymbol {\dot {e}}}(t)={\boldsymbol {\dot {x}}}(t)-{\boldsymbol {\dot {\hat {x}}}}(t)}
e ˙ ( t ) = A c ( t ) e ( t ) + B c ( t ) v ( t ) {\displaystyle {\boldsymbol {\dot {e}}}(t)=A_{c}(t){\boldsymbol {e}}(t)+B_{c}(t){\boldsymbol {v}}(t)}

dove si definiscono

A c ( t ) = A L ( t ) C {\displaystyle A_{c}(t)=A-L(t)C}
B c ( t ) = I L ( t ) {\displaystyle B_{c}(t)=I-L(t)}

Scrivendo ora

e ¯ ( t ) = E [ e ( t ) ] {\displaystyle {\overline {\boldsymbol {e}}}(t)=\mathrm {E} [{\boldsymbol {e}}(t)]}
e ˙ ¯ ( t ) = A c ( t ) e ¯ ( t ) + B c E [ v ( t ) ] = A c ( t ) e ¯ ( t ) {\displaystyle {\overline {\boldsymbol {\dot {e}}}}(t)=A_{c}(t){\overline {\boldsymbol {e}}}(t)+B_{c}\mathrm {E} [{\boldsymbol {v}}(t)]=A_{c}(t){\overline {\boldsymbol {e}}}(t)}

Il valore atteso dell'errore segue una dinamica in evoluzione libera non forzata, come nel caso di un sistema autonomo. Si definisca in questo caso la matrice di covarianza dell'errore

P ~ ( t ) = E [ e ( t ) e ( t ) ] {\displaystyle {\tilde {P}}(t)=\mathrm {E} [{\boldsymbol {e}}(t){\boldsymbol {e}}(t)']}
P ~ ( 0 ) = P ~ 0 {\displaystyle {\tilde {P}}(0)={\tilde {P}}_{0}}

L'obiettivo di ottimizzazione è quindi trovare L ( t ) {\displaystyle L(t)} che minimizza la cifra di merito

min L ( t ) γ P ~ ( t ) γ = min L ( t ) γ P ~ ( t ) 2 {\displaystyle \min _{L(t)}{\boldsymbol {\gamma }}'{\tilde {P}}(t){\boldsymbol {\gamma }}=\min _{L(t)}\|{\boldsymbol {\gamma }}\|_{{\tilde {P}}(t)}^{2}}

con γ {\displaystyle {\boldsymbol {\gamma }}} vettore generico di dimensioni opportune.


Forma del filtro di Kalman

Si dimostra che il guadagno L ( t ) {\displaystyle L(t)} che risolve il problema di ottimizzazione ha la forma

L ( t ) = P ~ ( t ) C R ~ 1 {\displaystyle L(t)={\tilde {P}}(t)C'{\tilde {R}}^{-1}}

dove P ~ ( t ) {\displaystyle {\tilde {P}}(t)} è la soluzione dell'equazione di Riccati scritta nella forma

P ~ ˙ ( t ) = A P ~ ( t ) + P ~ ( t ) A + Q ~ P ~ ( t ) C R ~ 1 C P ~ ( t ) {\displaystyle {\dot {\tilde {P}}}(t)=A{\tilde {P}}(t)+{\tilde {P}}(t)A'+{\tilde {Q}}-{\tilde {P}}(t)C'{\tilde {R}}^{-1}C{\tilde {P}}(t)}

con condizione iniziale

P ~ ( 0 ) = P ~ 0 {\displaystyle {\tilde {P}}(0)={\tilde {P}}_{0}}

Si tratta esattamente del caso duale del problema di ottimizzazione per il controllo LQ.

Proprietà del filtro di Kalman

Si studiano qui le proprietà del filtro di Kalman su orizzonte temporale infinito. Un risultato importante riguarda la stabilità del filtro: si definisca la matrice B q {\displaystyle B_{q}} come partizione della matrice Q ~ {\displaystyle {\tilde {Q}}} , ovvero tale che

B q B q = Q ~ {\displaystyle B_{q}B_{q}'={\tilde {Q}}}

Allora il filtro di Kalman risulta stabile se la coppia ( A ,   B q ) {\displaystyle (A,\ B_{q})} è raggiungibile e se la coppia ( A ,   C ) {\displaystyle (A,\ C)} è osservabile.

Sotto queste ipotesi lo stimatore ottimo è:

x ^ ˙ ( t ) = A x ^ ( t ) + B u ( t ) + L [ y ( t ) C x ^ ( t ) ] {\displaystyle {\boldsymbol {\dot {\hat {x}}}}(t)=A{\boldsymbol {\hat {x}}}(t)+B{\boldsymbol {u}}(t)+L^{*}[{\boldsymbol {y}}(t)-C{\boldsymbol {\hat {x}}}(t)]}

con

L = P ~ C R ~ 1 {\displaystyle L^{*}={\tilde {P}}^{*}C'{\tilde {R}}^{-1}}

dove P ~ {\displaystyle {\tilde {P}}^{*}} è l'unica soluzione definita positiva dell'equazione stazionaria di Riccati

0 = A P ~ + P ~ A + Q ~ P ~ C R ~ 1 C P ~ {\displaystyle 0=A{\tilde {P}}^{*}+{\tilde {P}}^{*}A'+{\tilde {Q}}-{\tilde {P}}^{*}C'{\tilde {R}}^{-1}C{\tilde {P}}^{*}}

Stabilità asintotica

Sotto le ipotesi considerate il filtro di Kalman è asintoticamente stabile, in quanto si verifica che tutti i poli del filtro hanno parte reale negativa, ovvero gli autovalori della matrice ( A L C ) {\displaystyle (A-L^{*}C)} sono a parte reale negativa.

Filtro di Kalman a tempo discreto

Abbozzo matematicaQuesta sezione sull'argomento matematica è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento.

Definizione del problema

Si consideri l'applicazione del problema a un generico sistema MIMO: dato un sistema dinamico lineare stazionario soggetto a rumore di processo v x ( k ) {\displaystyle {\boldsymbol {v}}_{x}(k)} e rumore di misura v y ( k ) {\displaystyle {\boldsymbol {v}}_{y}(k)} , si scrivono le equazioni caratteristiche come:

x ( k + 1 ) = A x ( k ) + B u ( k ) + v x ( k ) y ( k ) = C x ( k ) + v y ( k ) {\displaystyle {\begin{aligned}{\boldsymbol {x}}(k+1)&=A{\boldsymbol {x}}(k)+B{\boldsymbol {u}}(k)+{\boldsymbol {v}}_{x}(k)\\{\boldsymbol {y}}(k)&=C{\boldsymbol {x}}(k)+{\boldsymbol {v}}_{y}(k)\end{aligned}}}     con    v ( k ) = [ v x ( k ) v y ( k ) ] {\displaystyle {\boldsymbol {v}}(k)={\begin{bmatrix}{\boldsymbol {v}}_{x}(k)\\{\boldsymbol {v}}_{y}(k)\end{bmatrix}}}

dove i rumori v x ( k ) {\displaystyle {\boldsymbol {v}}_{x}(k)} e v y ( k ) {\displaystyle {\boldsymbol {v}}_{y}(k)} sono incorrelati, gaussiani a media nulla.

Ne risultano le formule (stima filtrata dello stato, varianza dell'errore di stima filtrata, predittore dello stato, varianza dell'errore di predizione):

x ^ ( k | k ) = x ^ ( k | k 1 ) + L ( k ) e ( k ) P ( k | k ) = ( I L ( k ) C ) P ( k | k 1 ) x ^ ( k + 1 | k ) = F x ^ ( k | k ) + Z R 1 y ( k ) P ( k + 1 | k ) = F P ( k | k ) F + M {\displaystyle {\begin{aligned}{\boldsymbol {\hat {x}}}(k|k)&={\boldsymbol {\hat {x}}}(k|k-1)+L(k)e(k)\\P(k|k)&=\left(I-L(k)C\right)P(k|k-1)\\{\boldsymbol {\hat {x}}}(k+1|k)&=F{\boldsymbol {\hat {x}}}(k|k)+ZR^{-1}y(k)\\P(k+1|k)&=FP(k|k)F'+M\\\end{aligned}}}

Dove:

L ( k ) = P ( k | k 1 ) C [ C P ( k | k 1 ) C + R ] 1 e ( k ) = y ( k ) C x ^ ( k | k 1 ) N ( k ) = C P ( k | k 1 ) C + R F = A Z R 1 C M = Q Z R 1 Z {\displaystyle {\begin{aligned}L(k)&=P(k|k-1)C'[CP(k|k-1)C'+R]^{-1}\\e(k)&=y(k)-C{\boldsymbol {\hat {x}}}(k|k-1)\\N(k)&=CP(k|k-1)C'+R\\F&=A-ZR^{-1}C\\M&=Q-ZR^{-1}Z'\end{aligned}}}

Note

  1. ^ Steffen L. Lauritzen, Thiele: Pioneer in Statistics Archiviato il 13 ottobre 2008 in Internet Archive., Oxford University Press, 2002. ISBN 0-19-850972-3.

Bibliografia

  • Magni L., Scattolini R., Complementi di controlli automatici, Pitagora Editrice, Bologna, 2006.
  • Colaneri P., Locatelli A., Controllo robusto in RH2/RH, Pitagora Editrice, Bologna, 1993.
  • K. Zhou, J. C. Doyle, K. Glover, Robust and optimal control, Prentice Hall, 1996.
  • P. Dorato, C. Abdallah, V. Cerone Linear quadratic control: an introduction, Prentice Hall, 1995.

Voci correlate

Altri progetti

Altri progetti

  • Wikimedia Commons
  • Collabora a Wikimedia Commons Wikimedia Commons contiene immagini o altri file su filtro di Kalman
Controllo di autoritàThesaurus BNCF 52885 · LCCN (EN) sh85071360 · GND (DE) 4130759-8 · J9U (ENHE) 987007538686705171 · NDL (ENJA) 001096900
  Portale Ingegneria
  Portale Matematica