Filtro di Kalman

Da Wikipedia, l'enciclopedia libera.

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[modifica | modifica sorgente]

Il filtro prende il nome da Rudolf E. Kalman, sebbene Thorvald Nicolai Thiele[1] e Peter Swerling in realtà 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. Ciò avvenne durante una visita di Kalman al Centro di Ricerche Ames della NASA, in occasione della quale Schmidt vide l'applicabilità delle idee di Kalman al problema della stima delle traiettorie per il programma Apollo, finendo 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).

Numerosi tipi di filtro di Kalman sono stati in seguito sviluppati, partendo dalla formulazione originaria di Kalman, ora chiamata il filtro semplice 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. Può essere considerato un filtro di Kalman anche l'anello ad aggancio di fase (Phase-locked loop o PLL), circuito elettronico usato ormai in innumerevoli applicazioni, dalla radio ai calcolatori elettronici alle trasmissioni dati.

Filtro di Kalman a tempo continuo[modifica | modifica sorgente]

Definizione del problema[modifica | modifica sorgente]

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



\begin{align}
\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{align}
    con    :\boldsymbol{v}(t) = \begin{bmatrix}
\boldsymbol{v}_x(t) \\
\boldsymbol{v}_y(t)
\end{bmatrix}


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


 V = \begin{bmatrix}
 \tilde{Q} & Z \\
 Z & \tilde{R}
 \end{bmatrix}\,

dove

Z = \mathrm{Cov}[\boldsymbol{v}_x(t), \boldsymbol{v}_y(t)]
\tilde{Q} = \mathrm{Var}[\boldsymbol{v}_x(t)]
\tilde{R} = \mathrm{Var}[\boldsymbol{v}_y(t)]

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

\boldsymbol{x}_0 = \boldsymbol{x}(0)
\mathrm E[\boldsymbol{x}(0)] = \overline\boldsymbol{x}_0
\mathrm E[(\boldsymbol{x}_0 - \overline\boldsymbol{x}_0)(\boldsymbol{x}_0 - \overline\boldsymbol{x}_0)'] = \tilde{P}\geqslant 0

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

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

Osservatore dello stato[modifica | modifica sorgente]

Si considera a questo punto l'osservatore


 \frac{\mathrm d\boldsymbol{\hat{x}}(t)}{\mathrm dt} =
 \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:

\boldsymbol{\dot{e}}(t) = \boldsymbol{\dot{x}}(t) - \boldsymbol{\dot{\hat{x}}}(t)
\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
B_c(t) = I - L(t)

Scrivendo ora

\overline{\boldsymbol{e}}(t) = \mathrm E[\boldsymbol e(t)]
\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)

si nota che il valore atteso dell'errore è un sistema autonomo. Definiamo in questo caso la matrice di covarianza dell'errore

\tilde P(t) = \mathrm E[\boldsymbol e(t)]
\tilde P(0) = \tilde P_0

L'obiettivo di ottimizzazione risulta quindi trovare L(t) che minimizza la cifra di merito


  \min_{L(t)} \boldsymbol\gamma'\tilde P(t) \boldsymbol\gamma =
  \min_{L(t)} \|\boldsymbol\gamma\|^2_{\tilde P(t)}

con \boldsymbol\gamma vettore generico di dimensioni opportune.

Forma del filtro di Kalman[modifica | modifica sorgente]

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


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

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


 \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

\tilde P(0) = \tilde P_0

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

Proprietà del filtro di Kalman[modifica | modifica sorgente]

Si studiano qui le proprietà del filtro di Kalman su orizzonte temporale infinito. Un risultato importante riguarda la stabilità del filtro: definiamo la matrice B_q come partizione della matrice \tilde Q, ovvero tale che

B_qB_q' = \tilde Q

Allora il filtro di Kalman risulta stabile se la coppia (A,\ B_q) è raggiungibile e se la coppia (A,\ C) è osservabile.

Sotto queste ipotesi lo stimatore ottimo è:


 \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^* = \tilde P^* C' \tilde R^{-1}

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

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

Lo standard i filtri di Kalman non è robusto a outliers. A questo Tintinnio di fine, Theodorou e Schaal hanno mostrato recentemente che una modifica del teorema di Masreliez può affrontare outliers.

Stabilità asintotica[modifica | modifica sorgente]

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) sono a parte reale negativa.

Filtro di Kalman a tempo discreto[modifica | modifica sorgente]

Definizione del problema[modifica | modifica sorgente]

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


\begin{align}
\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{align}
    con    
\boldsymbol{v}(k) = \begin{bmatrix}
\boldsymbol{v}_x(k) \\
\boldsymbol{v}_y(k)
\end{bmatrix}

dove i rumori  \boldsymbol{v}_x(k) e \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):


\begin{align}
\boldsymbol{\hat{x}}(k|k) &= \boldsymbol{\hat{x}}(k|k-1) + L(k)e(k)\\
P(k|k)&=P(k|k-1)-L(k)N(k)L'(k)\\
\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{align}

Dove:


\begin{align}
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{align}

Note[modifica | modifica sorgente]

  1. ^ Steffen L. Lauritzen, Thiele: Pioneer in Statistics, Oxford University Press, 2002. ISBN 0-19-850972-3.

Bibliografia[modifica | modifica sorgente]

  • 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[modifica | modifica sorgente]