Kalmanfilter

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

Et Kalman-filter 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 verdien. Filteret har fått sitt navn fra Rudolf (Rudy) E. Kálmán, som var delaktig i utviklingen av filteret på slutten av 50- og begynnelsen av 60-tallet. Kalmanfilteret har flere bruksområder i teknologisk sammenheng. Navigasjon i luft- og romfart er et område der Kalman-teori brukes for å forbedre estimater av posisjoner til kjøretø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[rediger | rediger kilde]

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 (dvs. hvit normalfordelt støy). Det finnes flere varianter av Kalmanfilteret (utvided Kalmanfilter, EKF, UKF, osv.), men i utledningene under brukes den opprinnelige versjonen utviklet av Rudolf (Rudy) E. Kálmán som er beregnet for bruk på linære systemer.

Algoritmen blir gjennomført i to steg som kjøres om hverandre i en løkke. Det første steget produserer 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 tidssteget k før den k-ende målingen blir gjennomført. P_{k\mid k-1} er 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 er pådraget. Disse kan variere over tid eller være konstante.

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 optimalt 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]