Primer aplikacije filtra Kalman. Sodobni problemi znanosti in izobraževanja

V procesu avtomatizacije tehnoloških procesov za krmiljenje mehanizmov in enot se je treba ukvarjati z meritvami različnih fizikalnih veličin. To je lahko tlak in pretok tekočine ali plina, hitrost, temperatura in še veliko več. Merjenje fizikalnih veličin se izvaja z analognimi senzorji. Analogni signal je podatkovni signal, v katerem je vsak od reprezentančnih parametrov opisan s funkcijo časa in neprekinjenim nizom možnih vrednosti. Iz kontinuitete vrednostnega prostora sledi, da se kakršna koli interferenca, ki se vnese v signal, ne razlikuje od želenega signala. Zato bo na analogni vhod krmilne naprave poslana napačna vrednost zahtevane fizične količine. Zato je potrebno filtrirati signal, ki prihaja iz senzorja.

Eden od učinkovitih algoritmov filtriranja je Kalmanov filter. Kalmanov filter je rekurzivni filter, ki oceni vektor stanja dinamičnega sistema z uporabo niza nepopolnih in hrupnih meritev. Kalmanov filter uporablja dinamični model sistema (na primer fizikalni zakon gibanja), krmilna dejanja in številne zaporedne meritve za oblikovanje optimalne ocene stanja. Algoritem je sestavljen iz dveh ponavljajočih se faz: napovedovanja in korekcije. Na prvi stopnji se izračuna napoved stanja v naslednjem trenutku (ob upoštevanju netočnosti njihovega merjenja). Na drugem, nova informacija iz senzorja popravi predvideno vrednost (tudi ob upoštevanju netočnosti in hrupa teh informacij).

V fazi napovedi se zgodi naslednje:

  1. Napoved stanja sistema:

kjer je napoved stanja sistema v trenutnem času; - matrika prehodov med stanji (dinamični model sistema); - napoved stanja sistema v prejšnjem trenutku; - matrika uporabe nadzornega delovanja; - nadzorno dejanje v prejšnjem trenutku.

  1. Napovedovanje kovariance napake:

kjer je napoved napake; - napaka v prejšnjem trenutku; - kovariance hrupa procesa.

V fazi prilagajanja se zgodi naslednje:

  1. Izračun Kalmanovega dobička:

kje je Kalmanov dobiček; - matrika meritev, ki prikazuje razmerje meritev in stanj; - kovariance meritve hrupa.

kje je meritev v trenutnem času.

  1. Posodobitev napake kovariance:

kje je matrika identitete.

Če je stanje sistema opisano z eno spremenljivko, potem je = 1 in matrike se degenerirajo v navadne enačbe.

Za nazoren prikaz učinkovitosti Kalmanovega filtra je bil izveden poskus s senzorjem glasnosti AVR PIC KY-037, ki je povezan z mikrokrmilnikom Arduino Uno. Slika 1 prikazuje graf odčitkov senzorja brez filtra (vrstica 1). Kaotična nihanja v izhodu senzorja kažejo na prisotnost šuma.

Slika 1. Graf odčitkov senzorja brez filtra

Za uporabo filtra je potrebno določiti vrednosti spremenljivk in, ki določajo dinamiko sistema in dimenzije. Vzemimo in enako 1 in enako 0, saj v sistemu ni kontrolnih dejanj. Za določitev lastnosti glajenja filtra je potrebno izračunati vrednost spremenljivke in izbrati vrednost parametra.

Spremenljivko bomo izračunali v programu Microsoft Excel 2010. Za to je potrebno izračunati standardni odklon za vzorec odčitkov senzorja. = 0,62. je izbran glede na zahtevano stopnjo filtracije, vzamemo = 0,001. Na sliki 2 je v drugi vrstici prikazan graf odčitkov senzorja z uporabljenim filtrom.

Slika 2. Graf odčitkov senzorja z uporabo Kalmanovega filtra

Iz grafa lahko sklepamo, da se je filter spopadel z nalogo filtriranja motenj, saj so v ustaljenem stanju nihanja odčitkov senzorja, ki so prestala filtriranje, nepomembna.

Vendar ima Kalmanov filter pomembno pomanjkljivost. Če se lahko izmerjena vrednost iz senzorja hitro spremeni, se odčitavanje filtriranega senzorja ne bo spremenilo tako hitro kot izmerjena vrednost. Slika 3 prikazuje odziv Kalmanovega filtra na preskok izmerjene vrednosti.

Slika 3. Reakcija Kalmanovega filtra na preskok izmerjene vrednosti

Ugotovljeno je bilo, da je odziv filtra na preskok izmerjene vrednosti zanemarljiv. Če se izmerjena vrednost bistveno spremeni in se nato ne vrne na prejšnjo vrednost, bodo odčitki filtriranega senzorja ustrezali dejanski vrednosti izmerjene vrednosti šele po daljšem časovnem obdobju, kar je nesprejemljivo za sisteme samodejnega krmiljenja, ki zahtevajo visoke izvedba.

Iz opravljenega poskusa je mogoče sklepati, da je Kalmanov filter priporočljivo uporabiti za filtriranje odčitkov senzorjev v sistemih z nizko hitrostjo.

Bibliografija:

  1. GOST 17657-79. Prenos podatkov. Pogoji in definicije. - Moskva: Založba standardov, 2005. - 2 str.
  2. Kalmanov filter // Wikipedia. ... Datum posodobitve: 26.04.2017. URL: http://ru.wikipedia.org/?oldid=85061599 (datum dostopa: 21. 5. 2017).

Na internetu, tudi na Habréju, lahko najdete veliko informacij o filtru Kalman. Toda težko je najti lahko prebavljivo izpeljavo samih formul. Brez zaključka se vsa ta znanost dojema kot nekakšen šamanizem, formule so videti kot brezličen nabor simbolov, in kar je najpomembneje, številne preproste izjave, ki ležijo na površini teorije, so nerazumljive. Namen tega članka bo govoriti o tem filtru v čim bolj dostopnem jeziku.
Kalmanov filter je zmogljivo orodje za filtriranje podatkov. Njegovo glavno načelo je, da se pri filtriranju uporabljajo informacije o fiziki samega pojava. Če na primer filtrirate podatke iz merilnika hitrosti avtomobila, vam vztrajnost avtomobila daje pravico, da prehitre skoke hitrosti zaznate kot napako pri merjenju. Kalmanov filter je zanimiv, ker je v nekem smislu najboljši filter. Spodaj bomo podrobneje razpravljali o tem, kaj točno pomenijo besede "najboljši". Na koncu članka bom pokazal, da je v mnogih primerih formule mogoče poenostaviti do te mere, da od njih ne ostane skoraj nič.

Izobraževalni program

Preden se seznanim s Kalmanovim filtrom, predlagam, da se spomnimo nekaj preprostih definicij in dejstev iz teorije verjetnosti.

Naključna vrednost

Ko pravijo, da je podana naključna spremenljivka, pomenijo, da lahko ta količina prevzame naključne vrednosti. Zavzame različne vrednosti z različnimi verjetnostmi. Ko vržete, recimo, kocko, bo izpadel ločen niz vrednosti:. Ko gre na primer za hitrost potujočega delca, potem je očitno treba imeti opravka z neprekinjenim nizom vrednosti. "Izpadle" vrednosti naključne spremenljivke bomo označili z, včasih pa bomo uporabili isto črko, ki jo uporabljamo za označevanje naključne spremenljivke:.
V primeru neprekinjenega niza vrednosti je za naključno spremenljivko značilna gostota verjetnosti, ki nam narekuje, da je verjetnost, da bo naključna spremenljivka »izpadla« v majhni soseščini točke z dolžino, enaka. Kot lahko vidimo iz slike, je ta verjetnost enaka površini zasenčenega pravokotnika pod grafom:

Pogosto v življenju so naključne spremenljivke Gaussove, ko je gostota verjetnosti enaka.

Vidimo, da ima funkcija obliko zvona s središčem na točki in z značilno širino reda.
Ker govorimo o Gaussovi porazdelitvi, bi bil greh ne omeniti, od kod prihaja. Tako kot so števila trdno uveljavljena v matematiki in se pojavljajo na najbolj nepričakovanih mestih, je tudi Gaussova porazdelitev globoko zakoreninila v teoriji verjetnosti. Ena izjemna izjava, ki delno pojasnjuje Gaussovo vseprisotnost, je naslednja:
Naj obstaja naključna spremenljivka s poljubno porazdelitvijo (pravzaprav obstajajo nekatere omejitve za to poljubnost, vendar sploh niso stroge). Izvajajmo poskuse in izračunajmo vsoto "izpadlih" vrednosti naključne spremenljivke. Naredimo veliko teh eksperimentov. Jasno je, da bomo vsakič prejeli drugačno vrednost zneska. Z drugimi besedami, ta vsota je sama po sebi naključna spremenljivka s svojim določenim zakonom o porazdelitvi. Izkazalo se je, da se zakon porazdelitve te vsote za dovolj velik nagiba k Gaussovi porazdelitvi (mimogrede, značilna širina "zvona" raste podobno). Preberite več v Wikipediji: Osrednji mejni izrek. V življenju zelo pogosto obstajajo količine, ki so sestavljene iz velikega števila enako porazdeljenih neodvisnih naključnih spremenljivk in so zato porazdeljene po Gaussu.

Pomeni

Povprečna vrednost naključne spremenljivke je tisto, kar dobimo v meji, če izvedemo veliko poskusov in izračunamo aritmetično sredino izpadlih vrednosti. Povprečje označujemo na različne načine: matematiki radi označujejo z (pričakovano), tuji matematiki pa z (pričakovanje). Fiziki so skozi oz. Na tuj način bomo označili:.
Na primer, za Gaussovo porazdelitev je povprečje.

Disperzija

V primeru Gaussove porazdelitve jasno vidimo, da naključna spremenljivka raje pade v bližino svoje srednje vrednosti. Kot je razvidno iz grafa, je značilen razpršitev vrednosti naročila. Kako lahko ocenimo ta razpon vrednosti za poljubno naključno spremenljivko, če poznamo njeno porazdelitev. Lahko narišete graf njegove verjetnostne gostote in na oko ocenite karakteristično širino. Raje pa gremo po algebraični poti. Najdete lahko povprečno dolžino odstopanja (modula) od povprečja:. Ta vrednost bo dobra ocena značilnega razpršenosti vrednosti. Ampak ti in jaz dobro vemo, da je uporaba modulov v formulah en glavobol, zato se ta formula redko uporablja za oceno značilnega razpona.
Lažji način (preprost v smislu izračunov) je iskanje. Ta vrednost se imenuje varianca in se pogosto imenuje. Koren variance se imenuje standardni odklon. Standardni odklon je dobra ocena širjenja naključne spremenljivke.
Na primer, za Gaussovo porazdelitev lahko izračunamo, da je zgoraj definirana varianca popolnoma enaka, kar pomeni, da je standardna deviacija enaka, kar se zelo dobro ujema z našo geometrijsko intuicijo.
Pravzaprav je tu skrita majhna goljufija. Dejstvo je, da je v definiciji Gaussove porazdelitve pod eksponent izraz. Ta dva v imenovalcu je ravno zato, da bi bil standardni odklon enak koeficientu. To pomeni, da je formula Gaussove porazdelitve zapisana v obliki, ki je posebej izostrena, tako da bomo upoštevali njeno standardno deviacijo.

Neodvisne naključne spremenljivke

Naključne spremenljivke so odvisne in ne. Predstavljajte si, da vržete iglo na ravnino in zapišete koordinate obeh koncev. Ti dve koordinati sta odvisni, povezani sta s pogojem, da je razdalja med njima vedno enaka dolžini igle, čeprav sta naključni vrednosti.
Naključne spremenljivke so neodvisne, če je rezultat prve od njih popolnoma neodvisen od rezultata druge. Če so naključne spremenljivke neodvisne, je povprečna vrednost njihovega produkta enaka zmnožku njihovih povprečnih vrednosti:

Dokaz

Na primer, imeti modre oči in končati srednjo šolo z zlato medaljo sta neodvisni naključni spremenljivki. Če so modrooki, recimo, dobitniki zlatih medalj, potem modrooki dobitniki medalj. Ta primer nam pove, da če so naključne spremenljivke podane z njihovo gostoto verjetnosti in je neodvisnost teh vrednosti izražena v dejstvu, da je gostota verjetnosti ( prva vrednost je izpadla, druga) pa najdemo po formuli:

Iz tega takoj sledi, da:

Kot lahko vidite, se dokaz izvede za naključne spremenljivke, ki imajo neprekinjen spekter vrednosti in so podane z njihovo gostoto verjetnosti. V drugih primerih je ideja dokaza podobna.

Kalmanov filter

Formulacija problema

Označimo z vrednostjo, ki jo bomo izmerili, nato pa filtriramo. To je lahko koordinata, hitrost, pospešek, vlaga, smrad, temperatura, tlak itd.
Začnimo s preprostim primerom, ki nas bo vodil k oblikovanju splošnega problema. Predstavljajte si, da imamo radijsko voden avto, ki lahko gre samo naprej in nazaj. Ob poznavanju teže avtomobila, oblike, površine ceste itd. smo izračunali, kako krmilna krmilna palica vpliva na hitrost gibanja.

Potem se bo koordinata avtomobila spremenila v skladu z zakonom:

V resničnem življenju pri naših izračunih ne moremo upoštevati majhnih motenj, ki delujejo na avtomobil (veter, udarci, kamenčki na cesti), zato se bo dejanska hitrost avtomobila razlikovala od izračunane. Desni strani zapisane enačbe je dodana naključna spremenljivka:

Na pisalni stroj imamo nameščen GPS senzor, ki poskuša izmeriti pravo koordinato avtomobila, pa je seveda ne more natančno izmeriti, meri pa jo z napako, ki je tudi naključna spremenljivka. Posledično od senzorja prejmemo napačne podatke:

Naloga je, da ob poznavanju napačnih odčitkov senzorja poiščete dober približek za pravo koordinato avtomobila.
Pri formulaciji splošnega problema je za koordinato lahko odgovorno karkoli (temperatura, vlaga ...), izraz odgovoren za nadzor sistema od zunaj pa bo označen z (v primeru s strojem). Enačbe za odčitke koordinat in senzorjev bodo videti takole:

Podrobno razpravljajmo o tem, kar vemo:

Omeniti velja, da naloga filtriranja ni naloga proti zmanjševanju. Ne poskušamo zgladiti podatkov iz senzorja, poskušamo dobiti čim bližje vrednosti realni koordinati.

Kalmanov algoritem

Argumentirali bomo z indukcijo. Predstavljajte si, da smo v th koraku že našli filtrirano vrednost iz senzorja, ki dobro približa pravo koordinato sistema. Ne pozabite, da poznamo enačbo, ki nadzoruje spremembo neznane koordinate:

torej, če še ne prejmemo vrednosti od senzorja, lahko domnevamo, da se sistem v nekem koraku razvija po tem zakonu in bo senzor pokazal nekaj blizu. Kaj natančnejšega zaenkrat žal ne moremo reči. Po drugi strani pa bomo v koraku imeli na rokah netočno odčitavanje senzorja.
Kalmanova ideja je naslednja. Da bi dobili najboljši približek pravi koordinati, moramo izbrati sredino med odčitkom netočnega senzorja in našo napovedjo, kaj smo od njega pričakovali. Odčitku senzorja bomo dali težo in teža bo ostala na predvideni vrednosti:

Koeficient se imenuje Kalmanov koeficient. Odvisno je od koraka iteracije, zato bi bilo pravilneje, da ga zapišemo, a zaenkrat, da ne bi natrpali računskih formul, bomo njegov indeks izpustili.
Kalmanov koeficient moramo izbrati tako, da bo nastala optimalna koordinatna vrednost najbližja pravi. Na primer, če vemo, da je naš senzor zelo natančen, bomo njegovemu odčitku bolj zaupali in vrednosti dali večjo težo (blizu ena). Če je senzor, nasprotno, popolnoma nenatančen, se bomo bolj osredotočili na teoretično predvideno vrednost.
Na splošno, da bi našli natančno vrednost Kalmanovega koeficienta, morate samo zmanjšati napako:

Uporabimo enačbe (1) (tiste v polju z modrim ozadjem), da prepišemo izraz za napako:

Dokaz

Zdaj je čas, da razpravljamo, kaj pomeni izraz zmanjševanje napak? Navsezadnje je napaka, kot lahko vidimo, sama po sebi naključna spremenljivka in vsakič prevzame drugačne vrednosti. Pravzaprav ni enotnega pristopa za opredelitev, kaj pomeni, da je napaka minimalna. Tako kot v primeru variance naključne spremenljivke, ko smo poskušali oceniti karakteristično širino njenega razprostiranja, bomo tudi tukaj izbrali najenostavnejši kriterij za izračune. Zmanjšali bomo povprečje kvadratne napake:

Zapišimo zadnji izraz:

Dokaz

Iz dejstva, da so vse naključne spremenljivke, vključene v izraz za, neodvisne, sledi, da so vsi "križni" izrazi enaki nič:

Uporabili smo dejstvo, da je potem formula variance videti veliko enostavnejša:.

Ta izraz prevzame najmanjšo vrednost, ko (izvod izenačimo z nič):

Tukaj že napišemo izraz za Kalmanov koeficient z indeksom koraka, pri čemer poudarjamo, da je odvisen od koraka iteracije.
Dobljeno optimalno vrednost nadomestimo v izraz za, ki smo ga minimizirali. Prejemamo;

Naša naloga je opravljena. Dobili smo iterativno formulo za izračun Kalmanovega koeficienta.
Svoje pridobljeno znanje strnimo v en okvir:

Primer

Matlab koda

Počisti vse; N = 100 % število vzorcev a = 0,1 % pospešek sigmaPsi = 1 sigmaEta = 50; k = 1: N x = k x (1) = 0 z (1) = x (1) + normrnd (0, sigmaEta); za t = 1: (N-1) x (t + 1) = x (t) + a * t + normrnd (0, sigmaPsi); z (t + 1) = x (t + 1) + normrnd (0, sigmaEta); konec; % kalmanov filter xOpt (1) = z (1); eOpt (1) = sigmaEta; za t = 1: (N-1) eOpt (t + 1) = sqrt ((sigmaEta ^ 2) * (eOpt (t) ^ 2 + sigmaPsi ^ 2) / (sigmaEta ^ 2 + eOpt (t) ^ 2 + sigmaPsi ^ 2)) K (t + 1) = (eOpt (t + 1)) ^ 2 / sigmaEta ^ 2 xOpt (t + 1) = (xOpt (t) + a * t) * (1-K (t +1)) + K (t + 1) * z (t + 1) konec; graf (k, xOpt, k, z, k, x)

Analiza

Če zasledimo, kako se Kalmanov koeficient spreminja s korakom iteracije, se lahko pokaže, da se vedno stabilizira na določeno vrednost. Na primer, ko se efektivne vrednosti napake senzorja in modela nanašajo drug na drugega kot deset proti ena, potem je graf Kalmanovega koeficienta glede na korak ponovitve videti takole:

V naslednjem primeru bomo razpravljali, kako nam to lahko olajša življenje.

Drugi primer

V praksi se pogosto zgodi, da o tem sploh ne vemo ničesar fizični model kar filtriramo. Na primer, želite filtrirati odčitke vašega najljubšega merilnika pospeška. Vnaprej ne veste, po katerem zakonu nameravate obrniti merilnik pospeška. Največ informacij, ki jih lahko zgrabite, je variacija napake senzorja. V tako težki situaciji se lahko vse nepoznavanje modela gibanja pretvori v naključno spremenljivko:

Toda, odkrito povedano, tak sistem sploh ne izpolnjuje pogojev, ki smo jih naložili naključni spremenljivki, saj je zdaj tam skrita vsa fizika gibanja, ki nam ni znana, in zato ne moremo reči, da je v različnih trenutkih model napake so neodvisne ena od druge in da so njihove srednje vrednosti enake nič. V tem primeru na splošno teorija Kalmanovega filtra ni uporabna. Toda na to dejstvo ne bomo pozorni, ampak neumno uporabite vse kolosalne formule, izbirajte koeficiente na oko, tako da so filtrirani podatki videti srčkani.
Lahko pa ubereš drugačno, veliko enostavnejšo pot. Kot smo videli zgoraj, se Kalmanov koeficient vedno stabilizira proti vrednosti z naraščanjem. Zato lahko namesto, da izberemo koeficiente in in poiščemo Kalmanov koeficient s pomočjo kompleksnih formul, lahko ta koeficient štejemo za vedno konstantnega in izberemo samo to konstanto. Ta predpostavka skoraj nič ne pokvari. Prvič, že zdaj nezakonito uporabljamo Kalmanovo teorijo, in drugič, Kalmanov koeficient se hitro stabilizira na konstanto. Posledično bo vse zelo poenostavljeno. Na splošno ne potrebujemo nobenih formul iz Kalmanove teorije, le najti moramo sprejemljivo vrednost in jo vstaviti v iterativno formulo:

Naslednji graf prikazuje dva filtrirana različne poti podatki iz izmišljenega senzorja. Pod pogojem, da ne vemo ničesar o fiziki pojava. Prvi način je pošten, z vsemi formulami iz Kalmanove teorije. In drugi je poenostavljen, brez formul.

Kot vidimo, so metode skoraj enake. Majhna razlika je opazna le na začetku, ko se Kalmanov koeficient še ni stabiliziral.

Diskusija

Kot smo videli, je glavna ideja Kalmanovega filtra najti koeficient, tako da je filtrirana vrednost

v povprečju bi se najmanj razlikovala od realne vrednosti koordinate. Vidimo lahko, da je filtrirana vrednost linearna funkcija odčitka senzorja in prejšnje filtrirane vrednosti. In prejšnja filtrirana vrednost je linearna funkcija odčitka senzorja in prejšnje filtrirane vrednosti. In tako naprej, dokler se veriga popolnoma ne odpre. To pomeni, da je filtrirana vrednost odvisna od od vseh prejšnje odčitke senzorja linearno:

Zato se Kalmanov filter imenuje linearni filter.
Dokazano je, da je Kalmanov filter najboljši od vseh linearnih filtrov. Najboljši v smislu, da je srednji kvadrat napake filtra minimalen.

Večdimenzionalni primer

Celotno teorijo Kalmanovega filtra lahko posplošimo na večdimenzionalni primer. Formule so tam videti nekoliko bolj strašljive, vendar je sama ideja njihove izpeljave enaka kot v enodimenzionalnem primeru. Ogledate si jih lahko v tem odličnem članku: http://habrahabr.ru/post/140274/.
In v tem čudovitem video analiziran je primer njihove uporabe.

Kalmanov filter je verjetno najbolj priljubljen algoritem filtriranja, ki se uporablja na številnih področjih znanosti in tehnologije. Zaradi svoje preprostosti in učinkovitosti ga najdemo v GPS sprejemnikih, procesorjih odčitkov senzorjev, pri izvedbi krmilnih sistemov itd.

Na internetu je veliko člankov in knjig o Kalmanovem filtru (večinoma v angleščini), vendar imajo ti članki precej velik vstopni prag, veliko je nejasnih mest, čeprav je v resnici zelo jasen in pregleden algoritem. Poskušal vam bom povedati o njem preprost jezik, s postopnim povečevanjem kompleksnosti.

za kaj je to?

Vsaka merilna naprava ima nekaj napake, nanjo lahko vpliva veliko število zunanjih in notranjih vplivov, kar vodi v dejstvo, da so informacije iz nje hrupne. Bolj ko so podatki hrupni, težje jih je obdelati.

Filter je algoritem za obdelavo podatkov, ki odstrani šum in nepotrebne informacije. V Kalmanovem filtru je mogoče določiti a priori informacije o naravi sistema, razmerju spremenljivk in na podlagi tega zgraditi natančnejšo oceno, vendar tudi v najpreprostejšem primeru (brez vnosa a priori informacij ) daje odlične rezultate.

Razmislite najpreprostejši primer- Recimo, da moramo nadzorovati nivo goriva v rezervoarju. Da bi to naredili, je v rezervoar nameščen kapacitivni senzor, ki ga je zelo enostavno vzdrževati, vendar ima nekaj pomanjkljivosti - na primer odvisnost od goriva, ki se polni (dielektrična konstanta goriva je odvisna od številnih dejavnikov, npr. na temperaturo), velik vpliv "izbokline" v rezervoarju. Posledično informacije iz njega predstavljajo tipično "žago" s spodobno amplitudo. Te vrste senzorjev so pogosto nameščeni na težki rudarski opremi (naj vas ne zmede prostornina rezervoarja):

Kalmanov filter

Malo se oddaljimo in se seznanimo s samim algoritmom. Kalmanov filter uporablja dinamični model sistema (na primer fizikalni zakon gibanja), znana krmilna dejanja in številne zaporedne meritve za oblikovanje optimalne ocene stanja. Algoritem je sestavljen iz dveh ponavljajočih se faz: napovedovanja in korekcije. Najprej se izračuna napoved stanja v naslednjem trenutku (ob upoštevanju netočnosti njihovega merjenja). Na drugi strani novi podatki iz senzorja popravijo predvideno vrednost (tudi ob upoštevanju netočnosti in hrupnosti teh informacij):

Enačbe so predstavljene v matrični obliki, če ne poznate linearne algebre - to je v redu, potem bo za primer z eno spremenljivko obstajala poenostavljena različica brez matrik. V primeru ene spremenljivke se matrike degenerirajo v skalarne vrednosti.

Naj najprej razumemo zapis: podpis označuje trenutek v času: k - trenutni, (k-1) - prejšnji, znak minus v nadpisu pomeni, da je predviden vmesna vrednost.

Opisi spremenljivk so predstavljeni na naslednjih slikah:

Dolgo in dolgočasno je mogoče opisovati, kaj vse te skrivnostne prehodne matrike pomenijo, vendar je po mojem mnenju bolje poskusiti uporabiti algoritem z resničnim primerom - da bi abstraktne vrednosti dobile pravi pomen.

Poskusimo v akciji

Vrnimo se k primeru s senzorjem nivoja goriva, saj stanje sistema predstavlja ena spremenljivka (volumen goriva v rezervoarju), se matrike degenerirajo v običajne enačbe:
Definiranje modela procesa
Za uporabo filtra je potrebno določiti matrike / vrednosti spremenljivk, ki določajo dinamiko sistema in dimenzije F, B in H:

F- spremenljivka, ki opisuje dinamiko sistema, v primeru goriva - to je lahko koeficient, ki določa porabo goriva v prostem teku v času vzorčenja (čas med koraki algoritma). Vendar pa poleg porabe goriva obstaja tudi dolivanje goriva ... zato bomo zaradi preprostosti to spremenljivko vzeli enako 1 (to pomeni, da nakazujemo, da bo predvidena vrednost enaka prejšnjemu stanju).

B- spremenljivka, ki določa uporabo nadzornega delovanja. Če bi imeli dodatne informacije o vrtilni frekvenci motorja ali stopnji pritiska na stopalko za plin, bi ta parameter določal, kako se bo poraba goriva spremenila v času vzorčenja. Ker v našem modelu ni kontrolnih dejanj (ni podatkov o njih), vzamemo B = 0.

H- matrika, ki določa razmerje med meritvami in stanjem sistema, za zdaj bomo brez pojasnila vzeli tudi to spremenljivko enako 1.

Definiranje lastnosti glajenja
R- merilno napako je mogoče določiti s testiranjem merilnih instrumentov in določitvijo napake njihovega merjenja.

Q- Določitev hrupa procesa je težja naloga, saj je treba določiti varianco procesa, kar pa ni vedno mogoče. V vsakem primeru lahko izberete ta parameter, da zagotovite zahtevano raven filtracije.

Implementacija v kodi
Da bi odpravili preostalo nerazumljivost, implementirajmo poenostavljen algoritem v C # (brez matrik in kontrolnih dejanj):

razred KalmanFilterSimple1D
{
javni dvojni X0 (dobi; zasebni niz;) // predvideno stanje
javni dvojni P0 (get; zasebni niz;) // predvidena kovarianca

Javni dvojni F (get; zasebni niz;) // faktor realne vrednosti na prejšnjo realno vrednost
javni dvojni Q (dobi; zasebni niz;) // merjenje hrupa
public double H (get; private set;) // faktor izmerjene vrednosti na realno vrednost
javni dvojni R (dobi; zasebni niz;) // hrup okolja

Javna dvojna država (dobi; zasebni niz;)
javna dvojna kovarianca (dobi; zasebni niz;)

Javni KalmanFilterSimple1D (dvojni q, dvojni r, dvojni f = 1, dvojni h = 1)
{
Q = q;
R = r;
F = f;
H = h;
}

Public void SetState (dvojno stanje, dvojna kovarianca)
{
Država = država;
Kovarianca = kovarianca;
}

Javna neveljavnost Popravi (dvojni podatki)
{
// posodobitev časa - napoved
X0 = F * stanje;
P0 = F * Kovarianca * F + Q;

// meritev posodobitev - popravek
var K = H * P0 / (H * P0 * H + R);
Stanje = X0 + K * (podatki - H * X0);
Kovarianca = (1 - K * H) * F;
}
}

// Aplikacija ...

Var gorivaData = GetData ();
var filtriran = nov seznam ();

Var kalman = nov KalmanFilterSimple1D (f: 1, h: 1, q: 2, r: 15); // niz F, H, Q in R
kalman.SetState (fuelData, 0,1); // Nastavi začetne vrednosti za stanje in kovariance
foreach (var d v fuelData)
{
kalman.Pravilno (d); // Uporabi algoritem

Filtriran.Add (kalman.State); // Shrani trenutno stanje
}

Rezultat filtriranja s temi parametri je prikazan na sliki (za prilagoditev stopnje glajenja - lahko spremenite parametra Q in R):

Najbolj zanimiva stvar je izven obsega članka - uporaba Kalmanovega filtra za več spremenljivk, nastavitev razmerja med njimi in samodejno prikazovanje vrednosti za neopazne spremenljivke. Bom poskušal nadaljevati temo takoj, ko bo čas.

Upam, da se opis ni izkazal za zelo dolgočasen in zapleten, če imate kakršna koli vprašanja ali pojasnila - dobrodošli v komentarjih)


Ta filter se uporablja na različnih področjih – od radiotehnike do ekonomije. Tukaj bomo razpravljali o glavni ideji, pomenu, bistvu ta filter... Predstavljen bo na najenostavnejši možni način.
Recimo, da moramo izmeriti nekaj količin predmeta. V radijski tehniki se najpogosteje ukvarjajo z meritvami napetosti na izhodu določene naprave (senzor, antena ipd.). V primeru z elektrokardiografom (glej) imamo opravka z meritvami biopotencialov na človeškem telesu. V ekonomiji so na primer izmerjena vrednost lahko menjalni tečaji. Vsak dan je menjalni tečaj drugačen, t.j. vsak dan nam "njegove meritve" dajejo drugačno vrednost. In če posplošimo, potem lahko rečemo, da se večina človekove dejavnosti (če ne vse) zreducira ravno na stalne meritve-primerjanja določenih količin (glej knjigo).
Torej, recimo, da nenehno nekaj merimo. Predpostavimo tudi, da naše meritve vedno pridejo z napako – to je razumljivo, saj idealnih merilnih instrumentov ni in vsaka daje rezultat z napako. V najpreprostejšem primeru lahko opisano zmanjšamo na naslednji izraz: z = x + y, kjer je x prava vrednost, ki jo želimo izmeriti in bi jo izmerili, če bi imeli idealno merilno napravo, y je merilna napaka, ki jo vnese merilna naprava, in z - vrednost, ki smo jo izmerili. Torej je naloga Kalmanovega filtra, da po izmerjenem z ugane (določi), kolikšna je bila prava vrednost x, ko smo prejeli naš z (v katerem »sedita« prava vrednost in merilna napaka). Treba je filtrirati (odstraniti) pravo vrednost x iz z - odstraniti popačen hrup y iz z. Se pravi, če imamo pri roki samo znesek, moramo uganiti, kateri pogoji so dali ta znesek.
Glede na zgoraj navedeno bomo zdaj vse formulirali na naslednji način. Recimo, da obstajata samo dve naključni številki. Dobimo samo njihovo vsoto in po tej vsoti moramo določiti, kakšni so pogoji. Na primer, dobili smo številko 12 in pravijo: 12 je vsota številk x in y, vprašanje je, čemu sta enaka x in y. Za odgovor na to vprašanje sestavimo enačbo: x + y = 12. Dobili smo eno enačbo z dvema neznankama, zato, strogo gledano, ni mogoče najti dveh številk, ki sta dali to vsoto. A o teh številkah lahko še kaj rečemo. Lahko rečemo, da sta bili številki 1 in 11, ali 2 in 10, ali 3 in 9, ali 4 in 8 itd., Prav tako je bodisi 13 in -1, bodisi 14 in -2 ali 15 in - 3 itd. To pomeni, da z vsoto (v našem primeru 12) lahko določimo množico možne možnosti ki seštejejo natanko 12. Ena od teh možnosti je par, ki ga iščemo, ki je zdaj dejansko dal 12. Omeniti velja tudi, da vse možnosti za pare števil, ki seštejejo do 12, tvorijo ravno črto, prikazano na sl. 1 , ki je podana z enačbo x + y = 12 (y = -x + 12).

Slika 1

Tako leži par, ki ga iščemo, nekje na tej ravni črti. Ponavljam, med vsemi temi možnostmi je nemogoče izbrati par, ki je dejansko bil - ki je dal številko 12, ne da bi imeli dodatne namige. ampak, v situaciji, za katero je bil izumljen Kalmanov filter, obstajajo takšni namigi... O naključnih številkah je nekaj znanega vnaprej. Zlasti je tam znan tako imenovani histogram porazdelitve za vsak par številk. Običajno ga dobimo po precej dolgem opazovanju pojavljanja teh zelo naključnih števil. To je, na primer, iz izkušenj je znano, da v 5 % primerov običajno izpade par x = 1, y = 8 (ta par označujemo kot: (1,8)), v 2 % primerov par x = 2, y = 3 ( 2,3), v 1 % primerov par (3.1), v 0,024 % primerov par (11.1) itd. Spet je ta histogram nastavljen za vse pareštevilk, vključno s tistimi, ki tvorijo skupaj 12. Tako lahko za vsak par, ki daje skupaj 12, lahko rečemo, da na primer par (1, 11) izpade v 0,8 % primerov par ( 2, 10) - v 1% primerov, par (3, 9) - v 1,5% primerov itd. Tako lahko s histogramom ugotovimo, v kolikšnem odstotku primerov je vsota pogojev para 12. Recimo, da je na primer v 30 % primerov vsota 12. V preostalih 70 % pa preostali pari padejo ven - to so (1,8), (2, 3), (3,1) itd. - tiste, ki seštejejo do številk, ki niso 12. In naj na primer par (7,5) izpade v 27 % primerov, medtem ko vsi drugi pari, ki skupaj znesejo 12, izpadejo v 0,024 % + 0,8 % + 1 % + 1,5 % +… = 3 % primerov. Tako smo glede na histogram ugotovili, da številke, ki dajejo skupno 12, izpadejo v 30% primerov. Hkrati vemo, da če je 12 padlo, je najpogosteje (v 27% od 30%) razlog za to par (7,5). Se pravi, če že Z razvaljanimi 12 lahko rečemo, da je v 90 % (27 % od 30 % - ali, kar je 27-krat od vsakih 30 enako), razlog za vrženo 12 par (7,5). Ker vemo, da je najpogosteje razlog za pridobitev vsote 12 par (7,5), je logično domnevati, da je najverjetneje zdaj padel. Seveda še vedno ni dejstvo, da zdaj dejansko število 12 tvori prav ta par, vendar naslednjič, če naletimo na 12, in spet predpostavimo par (7,5), potem nekje v 90% primerov od 100% bomo imeli prav. Če pa predpostavimo par (2, 10), potem bomo imeli prav le 1 % od 30 % časa, kar je 3,33 % pravilnih ugibanj v primerjavi z 90 %, če predpostavimo par (7,5). To je vse - to je bistvo algoritma Kalmanovega filtra. To pomeni, da Kalmanov filter ne zagotavlja, da se ne bo zmotil pri določanju vsote, zagotavlja pa, da se bo zmotil najmanjkrat (verjetnost napake bo minimalna), saj uporablja statistiko - histogram manjkajočih parov številk. Prav tako je treba poudariti, da se v algoritmu Kalmanovega filtriranja pogosto uporablja tako imenovana gostota porazdelitve verjetnosti (PDF). Vendar morate razumeti, da je pomen enak pomenu histograma. Poleg tega je histogram funkcija, zgrajena na podlagi PDF-ja in je njen približek (glej na primer).
Načeloma lahko ta histogram predstavimo kot funkcijo dveh spremenljivk – torej kot površino nad ravnino xy. Kjer je površina višja, obstaja večja verjetnost ustreznega para. Slika 2 prikazuje takšno površino.


slika 2

Kot lahko vidite nad premico x + y = 12 (ki je varianta parov, ki daje skupno 12), se točke površine nahajajo na različnih višinah in najvišji višini za varianto s koordinatami (7.5). In ko naletimo na vsoto, enako 12, je v 90 % primerov razlog za pojav te vsote ravno par (7,5). tiste. prav ta par, ki daje skupno 12, ima največjo verjetnost za pojav, pod pogojem, da je vsota 12.
Tako je tukaj opisana ideja za Kalmanov filter. Na njej so zgrajene vse vrste njegovih modifikacij - enostopenjske, ponavljajoče se v več korakih itd. Za poglobljeno študijo Kalmanovega filtra priporočam knjigo: Van Tries G. Theory of detection, estimation and modulation.

p.s. Za tiste, ki jih zanima razlaga pojmov matematike, kar se imenuje "na prste", lahko priporočite to knjigo in še posebej poglavja iz njenega razdelka "Matematika" (samo knjigo ali posamezna poglavja lahko kupite pri to).

Kalmanov filter

Kalmanov filter se pogosto uporablja v inženirskih in ekonometričnih aplikacijah: od radarjev in vizualnih sistemov do ocenjevanja parametrov makroekonomskih modelov. Kalmanova filtracija je pomemben del teorije krmiljenja, igra veliko vlogo pri ustvarjanju krmilnih sistemov. Kalmanov filter skupaj z linearno-kvadratičnim krmilnikom omogoča reševanje linearno-kvadratnega Gaussovega krmilnega problema. Kalmanov filter in linearno-kvadratični krmilnik sta možni rešitvi najbolj temeljnih problemov v teoriji krmiljenja.

V večini aplikacij je število parametrov, ki definirajo stanje predmeta, večje od števila opazovanih parametrov, ki so na voljo za merjenje. Kalmanov filter z uporabo modela predmeta za številne razpoložljive meritve omogoča, da dobimo oceno notranjega stanja.

Kalmanov filter je namenjen rekurzivnemu ponovnemu vrednotenju vektorja stanja a priori znanega dinamičnega sistema, torej za izračun trenutnega stanja sistema je potrebno poznati trenutno meritev, pa tudi prejšnje stanje filtra. sama. Tako je Kalmanov filter, tako kot mnogi drugi rekurzivni filtri, implementiran v časovni in ne frekvenčni predstavitvi.

Ilustrativen primer zmogljivosti filtra je pridobivanje natančnih, nenehno posodobljenih ocen položaja in hitrosti predmeta na podlagi rezultatov časovne serije netočnih meritev njegove lokacije. V radarju je na primer naloga sledenja tarči, določanja njene lokacije, hitrosti in pospeška, medtem ko rezultati meritev prihajajo postopoma in so zelo hrupni. Kalmanov filter uporablja verjetnostni model ciljne dinamike, ki določa vrsto verjetnega gibanja predmeta, kar omogoča zmanjšanje učinka hrupa in dobre ocene položaja predmeta v sedanjem, prihodnjem ali preteklem trenutku. .

Uvod

Kalmanov filter deluje s konceptom vektorja stanja sistema (skupina parametrov, ki opisujejo stanje sistema v določenem trenutku) in njegovim statističnim opisom. V splošnem primeru je dinamika določenega vektorja stanja opisana z gostotami verjetnosti porazdelitve njegovih komponent v vsakem trenutku. Ob prisotnosti določenega matematičnega modela opazovanih opazovanj sistema, pa tudi modela apriorne spremembe parametrov vektorja stanja (in sicer kot proces Markovskega oblikovanja), je mogoče napisati enačbo za posteriorna verjetnostna gostota vektorja stanja v vsakem trenutku. Ta diferencialna enačba se imenuje Stratonovičeva enačba. Stratonovičeva enačba v splošni obliki ni rešena. Analitična rešitev je mogoče dobiti le v primeru številnih omejitev (predpostavk):

  • Gausovska gostota a priori in posteriorne verjetnosti vektorja stanja v katerem koli trenutku (vključno z začetnim)
  • Gaussov šum oblikovanja
  • Gaussianost opazovalnega šuma
  • belina opazovalnega hrupa
  • linearnost modela opazovanja
  • linearnost modela procesa oblikovanja (kar, spomnimo, mora biti Markov proces)

Klasični Kalmanov filter je enačba za izračun prvega in drugega momenta posteriorne gostote verjetnosti (v smislu vektorja matematičnih pričakovanj in matrike varianc, vključno z medsebojnimi) pri teh omejitvah. Glede na to, da za normalno gostoto verjetnosti matematično pričakovanje in matrika variance v celoti določata gostoto verjetnosti, lahko rečemo, da Kalmanov filter izračuna posteriorno gostoto verjetnosti vektorja stanja v vsakem trenutku. To pomeni, da v celoti opisuje vektor stanja kot naključno vektorsko količino.

V tem primeru so izračunane vrednosti matematičnih pričakovanj optimalne ocene glede na merilo povprečne kvadratne napake, ki določa njegovo široko uporabo.

Obstaja več različic Kalmanovega filtra, ki se razlikujejo po približkih in trikih, ki jih je treba uporabiti, da filter zmanjšamo na opisano obliko in zmanjšamo njegovo dimenzijo:

  • Razširjeni Kalmanov filter (EKF). Redukcija nelinearnih opazovalnih modelov in proces oblikovanja z linearizacijo s pomočjo razširitve Taylorjeve serije.
  • Kalmanov filter brez vonja (UKF). Uporablja se pri težavah, pri katerih preprosta linearizacija vodi do uničenja uporabnih povezav med komponentami vektorja stanja. V tem primeru "linearizacija" temelji na transformaciji brez vonja.
  • Ansambel Kalmanov filter (EnKF). Uporablja se za zmanjšanje razsežnosti problema.
  • Možne so različice z nelinearnim dodatnim filtrom, ki omogoča normalizacijo ne-Gaussovih opazovanj.
  • Možne so različice s filtrom za "beljenje", ki vam omogočajo delo z "barvnim" hrupom
  • itd.

Uporabljen dinamični sistemski model

Kalmanovi filtri temeljijo na časovno diskretiziranih linearnih dinamičnih sistemih. Takšne sisteme modelirajo Markove verige z uporabo linearnih operaterjev in normalno porazdeljenih izrazov. Stanje sistema opisujemo z vektorjem končne dimenzije – vektorjem stanja. V vsakem časovnem koraku linearni operater deluje na vektor stanja in ga pretvori v drug vektor stanja (deterministična sprememba stanja), doda se določen vektor normalnega šuma (naključni faktorji) in v splošnem primeru krmilni vektor, ki simulira delovanje nadzornega sistema. Kalmanov filter lahko gledamo kot analog skritih Markovih modelov, s to razliko, da so spremenljivke, ki opisujejo stanje sistema, elementi neskončnega niza. realne številke(v nasprotju s končnim nizom prostora stanj v skritih Markovih modelih). Poleg tega lahko skriti Markovi modeli uporabljajo poljubne porazdelitve za naslednje vrednosti vektorja stanja, v nasprotju s Kalmanovim filtrom, ki uporablja normalno porazdeljen model šuma. Obstaja močna povezava med enačbami Kalmanovega filtra in skritim Markovim modelom. Te in druge modele sta pregledala Roweis in Chahramani (1999).

Pri uporabi Kalmanovega filtra za pridobivanje ocen vektorja stanja procesa iz serije hrupnih meritev je treba predstaviti model ta proces v skladu s strukturo filtra - v obliki matrične enačbe določene vrste. Za vsak utrip k delovanja filtra, je treba določiti matrike v skladu s spodnjim opisom: razvoj procesa F k; matrika opazovanja H k; procesna kovariančna matrika Q k; matrika kovariance za merjenje hrupa R k; ob prisotnosti kontrolnih dejanj - matrika njihovih koeficientov B k .

Ilustracija delovanja filtra. Matrice so označene s kvadratki. Elipse označujejo matrike multivariatnih normalnih porazdelitev (vključno s srednjimi vrednostmi in kovarianco). Vektorji niso orisani. V najpreprostejšem primeru se nekatere matrike sčasoma ne spremenijo (niso odvisne od indeksa k), vendar jih filter še vedno uporablja pri vsakem taktu.

Sistem/procesni model predpostavlja, da je trenutno stanje resnično k se pridobi iz trenutnega resničnega stanja k−1 v skladu z enačbo:

,
  • F k- matrika razvoja procesa/sistema, ki vpliva na vektor x k−1 (vektor stanja v tem trenutku k−1 );
  • B k- krmilna matrika, ki se uporablja za vektor krmilnih dejanj u k ;
  • w k- normalni naključni proces z ničelnim matematičnim pričakovanjem in kovariančno matriko Q k, ki opisuje naključno naravo razvoja sistema/procesa:

V trenutku k opazovanje (merjenje) z k vektor resničnega stanja x k, ki so povezani z enačbo:

kje H k- merilno matriko, ki povezuje dejanski vektor stanja in vektor opravljenih meritev, v k- beli Gaussov šum meritev z ničelnim matematičnim pričakovanjem in kovariančno matriko R k :

Začetno stanje in vektorji naključnih procesov v vsakem urnem ciklu ( x 0 , w 1 , …, w k , v 1 , …, v k) veljajo za neodvisne.

Veliko resničnih dinamičnih sistemov s tem modelom ni mogoče natančno opisati. V praksi lahko dinamika, ki ni upoštevana v modelu, resno pokvari delovanje filtra, zlasti pri delu z neznanim stohastičnim signalom na vhodu. Poleg tega lahko dinamika, ki ni upoštevana v modelu, povzroči nestabilnost filtra. Po drugi strani pa neodvisen beli šum kot signal ne bo povzročil razhajanja algoritma. Problem ločevanja merilnega hrupa od dinamike, ki ni upoštevana v modelu, je težaven, rešujemo ga s pomočjo teorije robustnih krmilnih sistemov.

Kalmanov filter

Kalmanov filter je neke vrste rekurzivni filter. Za izračun ocene stanja sistema za trenutni cikel dela potrebuje oceno stanja (v obliki ocene stanja sistema in ocene napake pri določanju tega stanja) pri prejšnji cikel dela in meritve v trenutnem ciklu. Ta lastnost ga razlikuje od paketnih filtrov, ki zahtevajo poznavanje zgodovine meritev in/ali ocen v trenutnem ciklu ure. V nadaljevanju z notacijo mislimo na oceno resničnega vektorja v tem trenutku n ob upoštevanju meritev od trenutka začetka dela in do trenutka m vključeno.

Stanje filtra nastavita dve spremenljivki:

Iteracije Kalmanovega filtra so razdeljene v dve fazi: ekstrapolacija in korekcija. Med ekstrapolacijo filter prejme predhodno oceno stanja sistema (v literaturi v ruskem jeziku je pogosto navedeno, kjer pomeni "ekstrapolacija" k je številka cikla, v katerem je bil prejet) za trenutni korak glede na končno oceno stanja iz prejšnjega koraka (ali predhodna ocena za naslednji cikel glede na končno oceno trenutnega koraka, odvisno od razlaga). Ta predhodna ocena se imenuje tudi a priori ocena stanja, saj se opazovanja ustreznega koraka ne uporabljajo za njeno pridobitev. V fazi korekcije se a priori ekstrapolacija dopolni z ustreznimi meritvami toka za popravo ocene. Prilagojena ocena se imenuje tudi ocena posteriornega stanja ali preprosto ocena vektorja stanja. Običajno se ti dve fazi izmenjujeta: ekstrapolacija se izvede glede na rezultate popravka do naslednjega opazovanja, popravek pa se opravi skupaj z opazovanji, ki so na voljo v naslednjem koraku, itd. se preskoči in izvede ekstrapolacija na neprilagojeno oceno (a priori ekstrapolacija). Podobno, če so neodvisne meritve na voljo le v določenih časovnih korakih, so popravki še vedno možni (običajno z uporabo druge matrike opazovanja H k ).

Korak ekstrapolacije

Faza korekcije

Odstopanje prejetega koraka k opažanja iz opazovanja, ki se pričakujejo od izvedene ekstrapolacije:
Kovariacijska matrika za vektor odstopanja (vektor napake):
Kalmanova optimalna matrika dobička, oblikovana na podlagi kovariančnih matrik razpoložljive ekstrapolacije vektorja stanja in dobljenih meritev (s pomočjo kovariančne matrike vektorja odstopanja):
Popravek predhodno pridobljene ekstrapolacije vektorja stanja - pridobitev ocene vektorja stanja sistema:
Izračun kovariančne matrike ocene vektorja stanja sistema:

Izraz za kovariančno matriko ocene vektorja stanja sistema je veljaven le, če uporabimo reduciran optimalni vektor koeficientov. Na splošno ima ta izraz bolj zapleteno obliko.

Nespremenljive

Če je model popolnoma natančen in so začetni pogoji in so določeni popolnoma natančno, se po poljubnem številu ponovitev delovanja filtra shranijo naslednje vrednosti - so nespremenljive:

Matematična pričakovanja ocen in ekstrapolacije vektorja stanja sistema, matrike napak so ničelni vektorji:

kje je matematično pričakovanje.

Izračunane matrike kovariance ekstrapolacij, ocene stanja sistema in vektor napak sovpadajo z resničnimi matrikami kovariance:

Primer izdelave filtra

Predstavljajte si voziček, ki stoji na neskončno dolgih tirnicah brez trenja. Sprva leži v položaju 0, vendar pod vplivom naključnih faktorjev nanj deluje naključni pospešek. Izmerimo položaj vozička na vsak ∆ t sekunde, vendar so meritve netočne. Želimo dobiti ocene položaja vozička in njegove hitrosti. Za ta problem uporabimo Kalmanov filter, definiramo vse potrebne matrike.

V tem problemu so matrice F , H , R in Q niso odvisni od časa, njihove indekse izpustimo. Poleg tega minecar ne nadzorujemo, zato je krmilna matrika B odsoten.

Koordinata in hitrost vozička sta opisani z vektorjem v linearnem prostoru stanj

kjer je hitrost (prva izpeljanka koordinate glede na čas).

Predvidevamo, da med ( k−1) th in k-th ticks voziček se premika s konstantnim pospeškom a k porazdeljeno po normalnem zakonu z ničelnim matematičnim pričakovanjem in standardnim odklonom σ a... Po Newtonovi mehaniki lahko pišemo

.

Kovariacijska matrika naključnih dejanj

(σ a je skalar).

Pri vsakem ciklu dela se izmeri položaj vozička. Recimo, da je merilna napaka v k ima normalno porazdelitev z ničelnim matematičnim pričakovanjem in standardnim odklonom σ z... Potem

in kovariacijska matrika opazovalnega šuma ima obliko

.

Začetni položaj vozička je natančno znan

, .

Če sta položaj in hitrost vozička znani le približno, potem je mogoče matriko disperzije inicializirati z dovolj velikim številom L tako da število presega varianco meritev koordinate

, .

V tem primeru bo filter pri prvih taktnih ciklih uporabil rezultate meritev z večjo težo od razpoložljivih predhodnih informacij.

Izpeljava formul

Kovariačna matrika ocene vektorja stanja

Po definiciji kovariančne matrike P k|k

nadomestite z izrazom za vrednotenje vektorja stanja

in zapiši izraz za vektor napak

in merilni vektorji

odstranimo vektor merilne napake v k

saj vektor merilne napake v k ni v korelaciji z drugimi argumenti, dobimo izraz

v skladu z lastnostmi vektorske kovariance se ta izraz pretvori v obliko

zamenjava izraza za kovariančno matriko ekstrapolacije vektorja stanja z P k|k−1 in določitev kovariančne matrike opazovalnega šuma na R k, dobimo

Dobljeni izraz velja za poljubno matriko koeficientov, če pa deluje kot matrika koeficientov, optimalna po Kalmanu, potem lahko ta izraz za kovariančno matriko poenostavimo.

Optimalna matrika dobička

Kalmanov filter minimizira vsoto kvadratov pričakovanih napak ocene vektorja stanja.

Vektor napake ocene vektorja stanja

Naloga je minimalizirati vsoto matematičnih pričakovanj kvadratov komponent danega vektorja

,

kar je enakovredno minimiziranju sledi kovariančne matrike ocene vektorja stanja P k|k... Obstoječe izraze nadomestimo z izrazom za kovariančno matriko ocene vektorja stanja in ga dopolnimo do polnega kvadrata:

Upoštevajte, da je zadnji člen kovariančna matrika neke naključne spremenljivke, zato njena sled ni negativna. Najnižja vrednost sledi je dosežena, ko je zadnji člen ničel:

Trdi se, da je ta matrika želena in, če se uporablja kot matrika koeficientov v Kalmanovem filtru, minimizira vsoto povprečnih kvadratov napak ocene vektorja stanja.

Kovariacijska matrika ocene vektorja stanja z uporabo optimalne matrike koeficientov

Izraz za kovariančno matriko ocene vektorja stanja P k|k pri uporabi optimalne matrike koeficientov bo imela obliko:

Ta formula je računsko enostavnejša in se zato skoraj vedno uporablja v praksi, pravilna pa je le pri uporabi optimalne matrike koeficientov. Če se zaradi nizke računske natančnosti pojavi problem z računsko stabilnostjo ali če se uporabi matrika koeficientov, ki ni optimalna, je treba uporabiti splošno formulo za kovariančno matriko ocene vektorja stanja.



Povezani članki: