Smoothing e algoritmo Rauch–Tung–Striebel

Finora sono stati discussi algoritmi di filtraggio il cui obiettivo è stimare lo stato corrente del sistema sulla sola base delle osservazioni disponibili fino all'istante corrente. Più formalmente, il problema del filtraggio consiste nel determinare la distribuzione

\begin{displaymath}
p(\mathbf{x}_k\vert\mathbf{z}_{1:k})
\end{displaymath} (3.45)

dello stato all'istante $k$ date le osservazioni disponibili fino allo stesso istante.

Nell'ambito della stima bayesiana ricorsiva è in effetti possibile distinguere tre problemi differenti:

Mentre i filtri di Kalman forniscono una stima causale dello stato, in molte applicazioni offline l'intera sequenza di osservazioni è già disponibile. In questo caso è possibile ottenere una stima più accurata degli stati passati sfruttando anche le osservazioni future. Tale problema prende il nome di smoothing.

Nel caso lineare-gaussiano una soluzione ottima è fornita dall'algoritmo di Rauch–Tung–Striebel (RTS) (RTS65). L'algoritmo esegue dapprima una normale fase forward di filtraggio di Kalman, ottenendo per ogni istante la stima filtrata $\hat{\mathbf{x}}_{k\vert k}$ e la relativa covarianza $\mathbf{P}_{k\vert k}$. Successivamente viene effettuata una passata backward che propaga verso gli stati precedenti l'informazione contenuta nelle osservazioni future.

Definito il guadagno di smoothing

\begin{displaymath}
\mathbf{G}_k =
\mathbf{P}_{k\vert k}
\mathbf{A}_k^\top
\mathbf{P}_{k+1\vert k}^{-1}
\end{displaymath} (3.46)

dove $\mathbf{A}_k$ è la matrice di transizione dello stato del modello lineare e $\mathbf{G}_k$ il guadagno di smoothing. Le stime smussate sono ottenute ricorsivamente come
\begin{displaymath}
\hat{\mathbf{x}}_{k\vert N}
=
\hat{\mathbf{x}}_{k\vert k}
+
...
...athbf{x}}_{k+1\vert N}
-
\hat{\mathbf{x}}_{k+1\vert k}
\right)
\end{displaymath} (3.47)

e
\begin{displaymath}
\mathbf{P}_{k\vert N}
=
\mathbf{P}_{k\vert k}
+
\mathbf{G}_k...
...1\vert N}
-
\mathbf{P}_{k+1\vert k}
\right)
\mathbf{G}_k^\top.
\end{displaymath} (3.48)

L'algoritmo RTS può essere interpretato come una correzione retroattiva delle stime ottenute dal filtro di Kalman: se le osservazioni future indicano che una traiettoria stimata localmente non era plausibile, parte di tale informazione viene propagata agli stati precedenti. Ne consegue una riduzione dell'errore di stima e una maggiore coerenza temporale della traiettoria.

Lo smoothing è particolarmente utile nei problemi di ricostruzione di traiettorie, navigazione, fusione sensoriale e analisi offline dei dati, dove la causalità non rappresenta un vincolo e tutta la sequenza delle osservazioni è disponibile prima della fase di elaborazione.

Dal punto di vista concettuale lo smoothing RTS può essere visto come una soluzione intermedia tra il filtraggio causale e una ottimizzazione batch della traiettoria. Come nel caso batch, le osservazioni future influenzano la stima degli stati passati; tuttavia, invece di risolvere un problema globale ai minimi quadrati, RTS sfrutta una passata forward di filtraggio seguita da una passata backward di correzione. Nel caso lineare-gaussiano il risultato coincide con la soluzione bayesiana ottima del problema di smoothing e viene ottenuto con complessità lineare nel numero di campioni.

Sebbene l'algoritmo RTS sia definito per il caso lineare-gaussiano, il concetto di smoothing si estende naturalmente ai sistemi non lineari. In tali contesti vengono spesso impiegate varianti basate su EKF o UKF, oppure formulazioni batch ai minimi quadrati nelle quali l'intera traiettoria viene stimata simultaneamente. Molti problemi moderni di SLAM, visual odometry e pose graph optimization possono essere interpretati come problemi di smoothing non lineare.

Paolo medici
2026-11-02