FIltro di Kalman

Il filtro di Kalman

Durante le missioni Apollo la stima ed il controllo delle traiettorie ottimali Terra – Luna erano condizione critiche in molte fasi di volo, per esempio:

  • Il CSM doveva entrare in orbita lunare (LOI, Lunar Orbit Insertion) con molta precisione ad un’altezza di soli 60 miglia nautiche, intorno ad un corpo celeste che si muove a circa 1 Km/s.
  • Durante l’allunaggio: i dati provenienti dal radar di Terra dovevano trovare un’analogia con i valori dei radar di allunaggio (LR, Landing Radar) montato sul LM per capire se proseguire o abortire la missione.
  • In fase di ritorno in atmosfera: il CM doveva imboccare un corridoio di rientro con un angolo di volo di 6,5°± 1° rispetto all’orizzonte.

La conoscenza a priori e la possibilità di stimare il consumo di beni e materiali, oltre ad aspetti pratici, serviva anche per ragioni di riduzione costi (consumo di carburante) e per adempiere ai criteri di sicurezza dell’equipaggio. In ogni caso il problema più sentito per l’equipaggio a bordo (e al MOCR a Houston) era l’esigenza di poter controllare che l’Apollo si muovesse lungo il percorso stabilito dalla traiettoria in uno spazio di riferimento, così come in qualsiasi altra situazione di volo.

La capsula CM dell’Apollo era equipaggiata con sensori (giroscopi e accelerometri) e strumentazione (telescopio, sestante spaziale) per poter prendere delle misure angolari rispetto alle stelle fisse, al Sole, a punti particolari sull’orizzonte terrestre ed altro le quali venivano inviate al computer per i calcoli di posizione. I sensori sono soggetti a diversi tipi di errore:  casuali, di deriva o di imperfezioni di costruzione.

Analogalmente le equazioni del moto (modello dinamico) usato per descrivere la traiettoria è soggetta ad errori nel modello non deterministici ove non è possibile valutarne a priori la quantita’ in maniera precisa: per esempio è difficile considerare le perturbazioni del moto lunare, l’esatta spinta ottenuta dall’accensione dei RCS, l’influenza della distribuzione della massa terrestre/lunare sul CSM …

Il problema che la NASA doveva affrontare era: quante e quali misure bisognava effettuare al fine di garantire una navigazione corretta nello spazio cislunare?

La risposta a questa domanda significava identificare il numero minimo ed ottimale di misure da effettuare, quali correzioni erano necessarie e quando effettuarle. La procedura ideale poteva essere descritta come segue:

  1. Utilizzando i sensori del CM, identificare posizione e velocità attuali, cioè i vettori di stato \vec{\textbf{r}} = [r_{x}, r_{y}, r_{z}] e \vec{\textbf{v}} = [v_{x}, v_{y}, v_{z}]
  2. informare il computer di bordo (AGC) dello stato corrente
  3. in base ad alcune regole “statistiche” decidere se:
    • intraprendere una correzione orbitale sulla traiettoria
    • non effettuare alcuna correzione
  4. aggiornare i vettori di stato
  5. tornare al punto 1

Dato che ogni misura è affetta da incertezza (ambiente rumoroso) era necessario valutare in senso statistico le azioni da intraprendere ad ogni ripetizione. Maximilian Schuler nei primi anni del Novecento fu tra i primi matematici a studiare il problema; in particolare gli errori oscillatori generati dai sensori IMU indotti dal campo gravitazionale in cui i giroscopi lavorano. In seguito altri matematici quali Richard Battin (1925 – 2014) del MIT e Norbert Wiener cercarono di affrontare il problema ma fu con Rudolf Kalman (1930 – 2016) che la NASA ebbe la possibilità di implementare l’algoritmo che ancora oggi porta il suo nome: il filtro di Kalman.

Egli riuscì a trovare una soluzione ottima per la stima dell’errore lavorando nel dominio del tempo, anziché in frequenza (come fece Wiener) in modo da renderlo gestibile in tempo reale da un computer ed implementarlo nel software di volo.


Il filtro di Kalman è un metodo statistico per l’ottimizazione del controllo, in particolare è un filtro ricorsivo per la stima di uno stato interno del sistema dinamico a partire da una serie di misure rumorose.

L’ipotesi di base di funzionamento del filtro prevede sorgenti di errori indipendenti provenienti da distribuzione statistica Normale N (μ, σ) a media nulla.

Dato che al fine di individuare la traiettoria ottima è necessario stimare l’errore (predizione in senso statistico) e gestirlo nelle equazioni dinamiche del sistema (parte deterministica del sistema), quindi il fattore principale del processo di filtraggio è la misura dell’errore. L’algoritmo si compone in due fasi:

  • una predizione basata sul modello ideale del modello ideale di volo per una prima stima di $latex $V_{k|k-1}$ nell’istante successivo del sistema.
  • una misura dai sensori del LM/CSM (SXT/TEL)
  • Il confronto/correzione con la predizione iniziale per ottenere la stima ottima  finale V_{k}

Lo stato interno del sistema si trova più vicino al valore nominale.

La parte di osservazione consiste nella lettura dei sensori anch’essi affetti da errore, l’aggiornamento consiste nella minimizzazione della differenza fra la previsione e l’osservazione, quindi l’errore viene corretto da un fattore K il quale viene usato per aggiornare le equazioni del sistema dinamico.

L’algoritmo consiste in cinque fasi applicate in maniera iterativa:

  1. Predizione: si prevede lo stato corrente V_{k|k-1} in base al modello dinamico affetto da rumore N (0, σ)
  2. Osservazione dello stato: si effettua la misura Z_{k}  dei sensori affetti anch’essi da rumore N (0, ξ)
  3. Minimizzazione dell’errore $latex e_{k}$ fra la previsione del modello dinamico e la sua osservazione. L’errore si chiama innovazione del sistema
  4. Aggiornamento calcolo della covarianza dell’errore e del guadagno K per la previsione dello stato successivo del sistema dinamico. 
  5. Integrazione: del parametro K nel modello dinamico e stima ottima V_{k}
  6. Ritorna al punto 1

Ci sono molti modi per calcolare K: se il sistema dinamico e lineare con rumori gaussiani a media nulla (descritti nei punti 1 e 2) allora esiste un algoritmo ottimale per il calcolo di K.

Principio di funzionamento del filtro di Kalman implementato nel CGC
Fonte: Apollo On board navigation technique, NASA

Il filtro venne inizialmente implementato nei mainframe IBM704 che usavano un’aritmetica a virgola mobile a 36 bit, quindi grazie al lavoro di J.E. Potter, riuscì a trovare un’implementazione con un’aritmetica a virgola fissa a 15 bit per poterlo farlo funzionare sul computer dell’Apollo. Un’operazione di filter tuning condotta a terra con altre simulazioni numeriche ha fornito alla NASA le condizioni iniziali di funzionamento del filtro: a questo punto mancava solo un test in campo.

Ideato inizialmente per funzionare con problemi di stima lineari, la NASA fu in grado di estendere il campo di lavoro del filtro anche per problemi non lineari, come quello di mandare un’equipaggio sulla Luna.

Questa seconda versione implementata per il progetto Apollo si chiama filtro di Kalman esteso (EKF).

Esso fornisce un’approssimazione della stima ottima, poichè viene effettuata una linearizzazione del sistema nell’intorno dell’ultima stima dello stato. Il processo di trasformazione dello spazio non lineare in uno spazio lineare avviene tramite una trasformazione Jacobiana basata sull’approssimazione in serie di Taylor del primo ordine.


Patch Apollo 7

La prima prova del funzionamento del filtro avenne nell’ottobre 1968, con la missione Apollo 7 ove il filtro di Kalman venne implementato nel software del AGC Block II, al suo primo test di volo. Si trattò di un volo particolare: durante la missione l’equipaggio si impratichì a recuperare il LM ma ci furono tensioni fra gli astronauti e il personale di Terra, in quanto gli astronauti si dimostrarono poco collaborativi ma il filtro fece il suo dovere.

Il filtro di Kalman ha rappresentato un’evoluzione tecnologica fondamentale nel campo dell’avionica, ed oggi viene implementato in moltissimi campi, come nei sistemi di navigazione, nella guida autonoma e tanti altri settori ove si tratta di effettuare una stima ottimale con sorgenti affetti da rumore.

Disegno che mostra la differenza fra traiettoria reale affetta da errore (puntini rossi) e la traiettoria ottimale filtrata da Kalman

Per il suo contributo al progetto Apollo, l’ingegner Rudolf Kalman ha ricevuto la “National Medal of Science” nel 2009.

Bibliografia

Altri articoli

1 risposta »