Kalmanfilter

Fra Wikipedia, den frie encyklopedi
Gå til: navigasjon, søk

Et 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 da gjennom en rekursiv metode beregne en statistisk optimal estimat av verdien. Filteret får navnet sitt fra Rudolf (Rudy) E. Kálmán, som utviklet teorien i 1960. Kalmanfilteret har flere hendvendelser i teknologiske sammenheng. Navigasjon i luft- og romfart er et kjent bruksområde der Kalmanteori brukes for å forbedre estimater på posisjoner til kjøretøy, fly og romskip. Filteret kan benyttes for å samle data fra flere forskjellige uavhengige kilder til å produsere et mer nøyaktig og helhetlig estimat enn det kildene kan produsere hver for seg.

Implementasjon[rediger | rediger kilde]

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

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

\hat{x}_{k\mid k-1} beskriver tilstandsestimatet ved tidsteget k før den k-ende målingen blir gjennomført. P_{k\mid k-1} er da den tilhørende usikkerheten i modellen. Fk, er tilstandsovergangmodellen; Hk, er målingsmodellen; Qk, er kovariansen av prosessstøy; Rk, er kovariansen av målestøy; og Bk, som er pådraget. Disse kan variere over tid eller være konstante avhengig av implementasjonen.

Prediksjon[rediger | rediger kilde]

Predikerte (a priori) tilstandsestimat \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) estimatkovarians \textbf{P}_{k\mid k-1} =  \textbf{F}_{k} \textbf{P}_{k-1\mid k-1} \textbf{F}_{k}^{\text{T}} + \textbf{Q}_{k}

Korriger[rediger | rediger kilde]

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

Optimalitet og ytelse[rediger | rediger kilde]

Det er kjent fra teorien om at Kalmanfilteret er optimal ved følgende krav:

  1. modellen passer perfekt til det underliggende systemet
  2. støyen som blir introdusert er normalfordelt
  3. kovariansene av støyen er nøyaktig kjent

Flere fremgangsmåter for støy kovarians estimering har blitt foreslått i løpet av de siste tiår. Etter kovariansene 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 det innovasjonsekvensen er normalfordelt støy. En av fordelene til Kalmanfilteret er at kjøretiden og minnebruk er uavhengig av datamengde. 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.

Referanser[rediger | rediger kilde]