**Kalmanfilter** er en algoritme som bruker forskjellige målinger over tid, og produserer et estimat av en mer nøyaktig måling. Disse målingene kan inneholde støy og andre unøyaktigheter, og Kalmanfilteret vil gjennom en rekursiv metode beregne et statistisk optimalt estimat av målingen. Filteret har fått sitt navn fra Rudolf (Rudy) E. Kálmán, som var delaktig i utviklingen av filteret på slutten av 1950- og begynnelsen av 1960-tallet. Kalmanfilteret har flere bruksområder i teknologisk sammenheng. Navigasjon i sjø-, luft- og romfart er ett område der Kalmanfilter brukes for å forbedre estimater av posisjoner til kjøretøyer, fartøy, fly og romskip. Filteret kan benyttes for å samle data fra forskjellige uavhengige kilder til å produsere et mer nøyaktig og helhetlig estimat enn kildene kan produsere hver for seg.

Implementasjon
--------------

Formelt sett er Kalmanfilteret en rekursiv tilstandsestimator til en prosess som er forutsatt påvirket av stokastiske (tilfeldige) forstyrrelser og av stokastisk (tilfeldig) støy (herunder hvit støy (normalfordelt)). Det finnes flere varianter av Kalmanfilteret (utvided Kalmanfilter, EKF, UKF og flere), men i utledningene under brukes den opprinnelige versjonen utviklet av Rudolf (Rudy) E. Kálmán som er beregnet for bruk på lineære systemer.

Algoritmen blir gjennomført i to steg som kjøres om hverandre i en løkke. Det første steget produserer tilstandsestimater ut i fra nåværende tilstand og observasjoner som ble gjort. Deretter blir disse korrigert ved hjelp av en kovariansrest som blir beregnet og oppdatert ved hver iterasjon ved hjelp av målingene som blir gjort.

Følgende forkortelser brukes i formlene:

* {\displaystyle {\hat {x}}\_{k\mid k-1}} beskriver tilstandsestimatet ved tidssteget *k* før den *k*-ende målingen blir gjennomført, gitt at en kjenner tilstandsestimater ved tidssteget k-1.
* {\displaystyle P\_{k\mid k-1}} er den tilhørende usikkerheten i modellen, gitt at en kjenner usikkerheten ved tidssteget k-1.
* **F***k* er tilstandsovergangmodellen;
* **H***k*, er målingsmodellen;
* **Q***k*, er kovariansen av prosesstøy;
* **R***k*, er kovariansen av målestøy og
* **B***k* er pådraget.
* zk =?

Disse kan variere over tid eller være konstante.

### Prediksjon

|  |  |
| --- | --- |
| Anslått (*a priori*) tilstandsestimat ved tidssteget *k* | {\displaystyle {\hat {\textbf {x}}}\_{k\mid k-1}={\textbf {F}}\_{k}{\hat {\textbf {x}}}\_{k-1\mid k-1}+{\textbf {B}}\_{k}{\textbf {u}}\_{k}} |
| Predikerte (*a priori*) anslått kovarians ved tidssteget *k* | {\displaystyle {\textbf {P}}\_{k\mid k-1}={\textbf {F}}\_{k}{\textbf {P}}\_{k-1\mid k-1}{\textbf {F}}\_{k}^{\text{T}}+{\textbf {Q}}\_{k}} |

### Korrigeringer

|  |  |
| --- | --- |
| Innovasjonssteget | {\displaystyle {\tilde {\textbf {y}}}\_{k}={\textbf {z}}\_{k}-{\textbf {H}}\_{k}{\hat {\textbf {x}}}\_{k\mid k-1}} |
| Rest-kovarians | {\displaystyle {\textbf {S}}\_{k}={\textbf {H}}\_{k}{\textbf {P}}\_{k\mid k-1}{\textbf {H}}\_{k}^{\text{T}}+{\textbf {R}}\_{k}} |
| *Optimal* Kalman forsterkning | {\displaystyle {\textbf {K}}\_{k}={\textbf {P}}\_{k\mid k-1}{\textbf {H}}\_{k}^{\text{T}}{\textbf {S}}\_{k}^{-1}} |
| Korrigerte (*a posteriori*) tilstandsestimat | {\displaystyle {\hat {\textbf {x}}}\_{k\mid k}={\hat {\textbf {x}}}\_{k\mid k-1}+{\textbf {K}}\_{k}{\tilde {\textbf {y}}}\_{k}} |
| Korrigerte (*a posteriori*) kovariansestimat | {\displaystyle {\textbf {P}}\_{k|k}=(I-{\textbf {K}}\_{k}{\textbf {H}}\_{k}){\textbf {P}}\_{k|k-1}} |

Optimalitet og ytelse
---------------------

Det er kjent fra teorien at Kalmanfilteret er optimalt ved følgende forutsetninger:[]

* modellen passer perfekt til det underliggende systemet
* støyen er normalfordelt
* kovariansene av støyen er nøyaktig kjent

Flere fremgangsmåter for støy- og kovarians-estimering har blitt foreslått gjennom årene. Etter at kovariansene er identifisert, er det nyttig å vurdere ytelsen av filteret, det vil si om det er mulig å forbedre kvaliteten til tilstandsestimasjonene. Det er velkjent at dersom Kalmanfilteret fungerer optimalt, er innovasjonsekvensen normalfordelt støy. En av fordelene til Kalmanfilteret er at kjøretiden og minnebruk på datamaskiner er uavhengig av datamengden. Dette vil si at minneforbruket er konstant og ikke øker over tid og at algoritmen har samme beregningskompleksitet på alle datamålinger som blir brukt.

Det er flere mulige feilkilder som:

* Ikke-lineære prosesser
* Ikke normalfordelte prosesser
* Avhengigheter mellom datakildene
* Støyen er helt eller delvis ikke tilfeldige (det vil si systematisk)
* Støyen er frekvensavhengig

Noter
-----

1. ↑  Harveen Singh: Extended Kalman Filter: Why do we need an Extended Version? -  Besøkt 9.4.2019.

Referanser
----------

* A New Approach to Linear Filtering and Prediction Problems, av R. E. Kalman, 1960
* Høyskolen i Telemark innføring i Kalman Filter, 2012

|  |  |
| --- | --- |
| Oppslagsverk/autoritetsdata | Store Danske Encyklopædi **·** GND **·** LCCN **·** NDL **·** NKC
 |