Probleme moderne ale științei și educației. Portalul de informații de securitate Kalman filtru în identificare

filtru Kalman

Filtrul Kalman este utilizat pe scară largă în aplicații de inginerie și econometrie, de la sisteme radar și de viziune până la estimarea parametrilor modelelor macroeconomice. Filtrarea Kalman este o parte importantă a teoriei controlului și joacă un rol important în crearea sistemelor de control. Împreună cu un controler liniar-quadratic, filtrul Kalman face posibilă rezolvarea problemei controlului liniar-quadratic Gaussian. Filtrul Kalman și controlerul liniar pătratic sunt o soluție posibilă la majoritatea problemelor fundamentale din teoria controlului.

În majoritatea aplicațiilor, numărul de parametri care definesc starea unui obiect este mai mare decât numărul de parametri observabili disponibili pentru măsurare. Folosind un model al unui obiect bazat pe un număr de măsurători disponibile, filtrul Kalman permite obținerea unei estimări a stării interne.

Filtrul Kalman este conceput pentru a estima recursiv vectorul de stare al unui sistem dinamic cunoscut a priori, adică pentru a calcula starea curentă a sistemului, este necesar să se cunoască măsurarea curentă, precum și starea anterioară a filtrului în sine. . Astfel, filtrul Kalman, ca multe alte filtre recursive, este implementat într-o reprezentare în timp, mai degrabă decât într-o frecvență.

Un exemplu clar al capabilităților filtrului este obținerea de estimări precise, actualizate continuu ale poziției și vitezei unui obiect, pe baza rezultatelor unei serii de timp de măsurători inexacte ale locației acestuia. De exemplu, în radar sarcina este de a urmări o țintă, de a determina locația, viteza și accelerația acesteia, în timp ce rezultatele măsurătorilor ajung treptat și sunt foarte zgomotoase. Filtrul Kalman folosește un model probabilistic al dinamicii țintei care specifică tipul de mișcare probabilă a obiectului, care reduce impactul zgomotului și oferă estimări bune ale poziției obiectului în prezent, viitor sau trecut.

Introducere

Filtrul Kalman operează cu conceptul de vector de stare a sistemului (un set de parametri care descriu starea sistemului la un anumit moment în timp) și descrierea sa statistică. În cazul general, dinamica unui anumit vector de stare este descrisă de densitățile de probabilitate ale distribuției componentelor sale în fiecare moment de timp. Dacă aveți un anumit model matematic de observații ale sistemului, precum și un model de modificare a priori a parametrilor vectorului de stare (și anume, ca proces formativ Markov), puteți scrie o ecuație pentru densitatea de probabilitate posterioară a vectorul de stare în orice moment. Această ecuație diferențială se numește ecuația Stratonovich. Ecuația Stratonovich nu poate fi rezolvată în forma sa generală. O soluție analitică poate fi obținută numai în cazul unui număr de restricții (ipoteze):

  • Gaussianitatea densităților de probabilitate a priori și posterioare ale vectorului de stare în orice moment (inclusiv cel inițial)
  • Gaussianitatea zgomotului de modelare
  • Gaussianitatea zgomotului de observare
  • albul zgomotului de observare
  • liniaritatea modelului de observare
  • liniaritatea modelului procesului de formare (care, reamintim, trebuie să fie un proces Markov)

Filtrul Kalman clasic este o ecuație pentru calcularea primului și al doilea moment al densității de probabilitate posterioară (în sensul unui vector de așteptări matematice și a unei matrice de varianțe, inclusiv a celor reciproce) sub restricții date. Datorită faptului că pentru densitatea normală de probabilitate așteptarea matematică și matricea de dispersie definesc complet densitatea de probabilitate, putem spune că filtrul Kalman calculează densitatea de probabilitate posterioară a vectorului de stare în fiecare moment în timp. Aceasta înseamnă că descrie complet vectorul de stare ca o mărime vectorială aleatorie.

Valorile calculate ale așteptărilor matematice în acest caz sunt estimări optime în funcție de criteriul erorii rădăcină-medie-pătrată, care determină utilizarea pe scară largă a acesteia.

Există mai multe varietăți de filtru Kalman, care diferă în aproximări și trucuri care trebuie folosite pentru a reduce filtrul la forma descrisă și pentru a-i reduce dimensiunea:

  • Filtru Kalman extins (EKF). Reducerea modelelor observaționale neliniare și a procesului de modelare folosind liniarizarea prin extinderea seriei Taylor.
  • Filtru Kalman fără parfum (UKF). Folosit în probleme în care liniarizarea simplă duce la distrugerea conexiunilor utile între componentele vectorului de stare. În acest caz, „liniarizarea” se bazează pe transformarea fără parfum.
  • Filtrul Ansamblului Kalman (EnKF). Folosit pentru a reduce dimensiunea unei probleme.
  • Opțiunile sunt posibile cu un filtru suplimentar neliniar, care face posibilă reducerea observațiilor non-Gauss la cele normale.
  • Sunt posibile opțiuni cu filtru de „albire”, permițându-vă să lucrați cu zgomot „colorat”.
  • etc.

Model de sistem dinamic utilizat

Filtrele Kalman se bazează pe sisteme dinamice liniare eșantionate în timp. Astfel de sisteme sunt modelate prin lanțuri Markov folosind operatori liniari și termeni cu o distribuție normală. Starea sistemului este descrisă de un vector de dimensiune finită - vectorul de stare. La fiecare pas de timp, un operator liniar acționează asupra vectorului de stare și îl transferă într-un alt vector de stare (modificare deterministă a stării), se adaugă un anumit vector de zgomot normal (factori aleatori) și, în cazul general, un vector de control care modelează influența sistemului de control. Filtrul Kalman poate fi văzut ca fiind analog modelelor Markov ascunse, cu diferența că variabilele care descriu starea sistemului sunt elemente ale unui set infinit de numere reale (spre deosebire de un set finit de spațiu de stări în modelele Markov ascunse). În plus, modelele Markov ascunse pot folosi distribuții arbitrare pentru valorile vectoriale de stare ulterioare, spre deosebire de filtrul Kalman, care utilizează un model de zgomot distribuit normal. Există o relație strictă între filtrul Kalman și ecuațiile modelului Markov ascunse. O trecere în revistă a acestor și a altor modele este oferită de Roweis și Chahramani (1999).

Când se utilizează un filtru Kalman pentru a obține estimări ale vectorului de stare al unui proces dintr-o serie de măsurători zgomotoase, este necesar să se prezinte un model al acestui proces în conformitate cu structura filtrului - sub forma unei ecuații matriceale a unui anumit tip. Pentru fiecare bătaie k funcţionarea filtrului, este necesară determinarea matricelor în conformitate cu descrierea de mai jos: evoluţia procesului F k; matricea de observatie H k; matricea de covarianță a procesului Q k; matricea de covarianță a zgomotului de măsurare R k; în prezența acțiunilor de control - o matrice a coeficienților acestora B k .

Ilustrație a modului în care funcționează filtrul. Matricele sunt marcate cu pătrate. Elipsele marchează matrice ale distribuțiilor normale multivariate (inclusiv mediile și covarianțele). Vectorii sunt lăsați neîncercuiți. În cel mai simplu caz, unele matrici nu se schimbă în timp (nu depind de index k), dar sunt încă folosite de filtru în fiecare ciclu de operare.

Modelul sistem/proces presupune că starea adevărată la momentul respectiv k este obținută din starea adevărată în momentul de față k−1 conform ecuației:

,
  • F k- matricea de evolutie a procesului/sistemului care afecteaza vectorul X k−1 (vector de stare în acest moment k−1 );
  • B k- matricea de control, care se aplica vectorului actiunilor de control u k ;
  • w k- proces normal aleator cu așteptare matematică zero și matrice de covarianță Q k, care descrie natura aleatorie a evoluției sistemului/procesului:

Pe moment k se face observarea (măsurarea). z k vector de stare adevărată X k, care sunt legate între ele prin ecuația:

Unde H k- matrice de măsurare care conectează vectorul de stare reală și vectorul măsurătorilor efectuate, v k- zgomot gaussian alb al măsurătorilor cu așteptare matematică zero și matrice de covarianță R k :

Starea inițială și vectorii proceselor aleatorii la fiecare ciclu de ceas ( X 0 , w 1 , …, w k , v 1 , …, v k) sunt considerate independente.

Multe sisteme dinamice reale nu pot fi descrise cu acuratețe de acest model. În practică, dinamica care nu este luată în considerare în model poate strica serios performanța filtrului, mai ales atunci când se lucrează cu un semnal de intrare stocastic necunoscut. Mai mult decât atât, dinamica care nu este luată în considerare în model poate face ca filtrul să fie instabil. Pe de altă parte, zgomotul alb independent ca semnal nu va determina divergerea algoritmului. Problema separării zgomotului de măsurare de dinamica care nu este luată în considerare în model este complexă; se rezolvă folosind teoria sistemelor de control robuste.

filtru Kalman

Filtrul Kalman este un tip de filtru recursiv. Pentru a calcula evaluarea stării sistemului pentru ciclul curent de funcționare, este nevoie de o evaluare a stării (sub forma unei evaluări a stării sistemului și a unei estimări a erorii în determinarea acestei stări) la ciclul anterior de funcționare și măsurători la ciclul curent. Această proprietate o diferențiază de filtrele de pachete, care necesită cunoașterea istoricului măsurătorilor și/sau estimărilor în timpul ciclului curent de operare. Mai mult, prin notație vom înțelege estimarea vectorului adevărat în acest moment n luând în considerare măsurătorile din momentul începerii lucrărilor până la m inclusiv.

Starea filtrului este specificată de două variabile:

Iterațiile filtrului Kalman sunt împărțite în două faze: extrapolare și corecție. În timpul extrapolării, filtrul primește o evaluare preliminară a stării sistemului (în literatura în limba rusă este adesea notat , unde înseamnă „extrapolare” și k- numărul ciclului de ceas la care a fost primit) pentru pasul curent pe baza evaluării finale a stării din pasul precedent (sau o estimare preliminară pentru următorul ciclu de ceas pe baza evaluării finale a pasului curent, în funcție de interpretarea). Această estimare preliminară se mai numește și estimare a priori a stării, deoarece nu utilizează observații ale pasului corespunzător pentru a o obține. În faza de corecție, extrapolarea a priori este completată cu măsurători de curent relevante pentru a corecta estimarea. Estimarea ajustată se mai numește și estimarea stării posterioare, sau pur și simplu estimarea vectorului de stare. De obicei, aceste două faze se alternează: extrapolarea se realizează pe baza rezultatelor corecției până la următoarea observație, iar corectarea se realizează împreună cu observațiile disponibile la pasul următor etc. Totuși, este posibilă o altă dezvoltare a evenimentelor, dacă pt. oarecare motiv pentru care observația sa dovedit a fi indisponibilă, atunci etapa de corecție poate fi omisă și extrapolată din estimarea neajustată (extrapolare a priori). De asemenea, dacă măsurătorile independente sunt disponibile numai în anumite cicluri de lucru, corecțiile sunt încă posibile (de obicei folosind o matrice de observație diferită H k ).

Etapa extrapolării

Etapa de corectare

Abatere primită la pas k observații din observația așteptată din extrapolare:
Matricea de covarianță pentru vectorul de abatere (vector de eroare):
Matricea de câștig optim Kalman, formată pe baza matricelor de covarianță ale extrapolării existente a vectorului de stare și a măsurătorilor obținute (prin matricea de covarianță a vectorului de deviație):
Corectarea extrapolării obținute anterior a vectorului de stare - obținerea unei estimări a vectorului de stare a sistemului:
Calculul matricei de covarianță pentru estimarea vectorului de stare a sistemului:

Expresia pentru matricea de covarianță a estimării vectorului de stare a sistemului este valabilă numai atunci când se utilizează vectorul optim de coeficienți dat. În general, această expresie are o formă mai complexă.

Invariante

Dacă modelul este absolut precis și condițiile inițiale și sunt specificate cu absolut exactitate, atunci următoarele valori sunt păstrate după orice număr de iterații ale filtrului - sunt invariante:

Așteptările matematice ale estimărilor și extrapolărilor vectorului de stare a sistemului și matricelor de eroare sunt vectori nuli:

unde este așteptarea matematică.

Matricele de covarianță calculate ale extrapolărilor, estimările stării sistemului și vectorii de eroare coincid cu matricele de covarianță adevărate:

Exemplu de construcție a filtrului

Să ne imaginăm un cărucior stând pe șine infinit de lungi în absența frecării. Inițial, este în repaus în poziția 0, dar sub influența unor factori aleatori este supus unei accelerații aleatorii. Măsurăm poziția căruciorului la fiecare ∆ t secunde, dar măsurătorile sunt inexacte. Dorim să obținem estimări ale poziției căruciorului și vitezei acestuia. Să aplicăm filtrul Kalman acestei probleme și să determinăm toate matricele necesare.

În această problemă matricele F , H , RȘi Q nu depinde de timp, vom omite indicii lor. În plus, nu controlăm căruciorul, deci matricea de control B absent.

Coordonatele și viteza căruciorului sunt descrise de un vector în spațiul liniar al stărilor

unde este viteza (prima derivată a coordonatei în raport cu timpul).

Vom presupune că între ( k−1)-lea și kîn ciclul al treilea căruciorul se deplasează cu accelerație constantă un k, distribuit conform legii normale cu așteptare matematică zero și abatere standard σa. În conformitate cu mecanica newtoniană, putem scrie

.

Matricea de covarianță a efectelor aleatoare

(σ A- scalar).

La fiecare pas de lucru se masoara pozitia caruciorului. Să presupunem că eroarea de măsurare vk are o distribuție normală cu așteptări matematice zero și abatere standard σ z. Apoi

iar matricea de covarianță a zgomotului de observație are forma

.

Poziția inițială a căruciorului este cunoscută exact

, .

Dacă poziția și viteza căruciorului sunt cunoscute doar aproximativ, atunci matricea de varianță poate fi inițializată cu un număr suficient de mare L, astfel încât numărul să depășească varianța măsurătorilor de coordonate

, .

În acest caz, în primele cicluri de funcționare, filtrul va folosi rezultatele măsurătorilor cu o greutate mai mare decât informațiile disponibile a priori.

Formule derivate

Matricea de covarianță a estimării vectorului de stare

Prin definiția matricei de covarianță P k|k

înlocuiți expresia pentru a estima vectorul de stare

și scrieți expresia pentru vectorul de eroare

și vectori de măsurare

scoatem vectorul de eroare de măsurare v k

deoarece vectorul de eroare de măsurare v k nu este corelat cu alte argumente, obținem expresia

în conformitate cu proprietățile covarianței vectoriale, această expresie este transformată în forma

înlocuind expresia pentru matricea de covarianță a extrapolării vectorului de stare cu P k|k−1 și determinarea matricei de covarianță a zgomotului de observație pe R k, primim

Expresia rezultată este valabilă pentru o matrice de coeficienți arbitrare, dar dacă este o matrice de coeficienți optimi Kalman, atunci această expresie pentru matricea de covarianță poate fi simplificată.

Matricea optimă a câștigului

Filtrul Kalman minimizează suma pătratelor așteptărilor matematice ale erorilor de estimare a vectorului de stare.

Vector de eroare de estimare a vectorului de stare

Sarcina este de a minimiza suma așteptărilor matematice ale pătratelor componentelor unui vector dat

,

ceea ce este echivalent cu minimizarea urmei matricei de covarianță a estimării vectorului de stare P k|k. Să substituim expresiile existente în expresia pentru matricea de covarianță a estimării vectorului de stare și să o completăm până la un pătrat complet:

Rețineți că ultimul termen este matricea de covarianță a unei variabile aleatoare, deci urma sa este nenegativă. Minimul de urmărire este atins atunci când ultimul termen este setat la zero:

Se susține că această matrice este cea dorită și, atunci când este utilizată ca matrice de coeficienți în filtrul Kalman, minimizează suma erorilor pătratice medii în estimarea vectorului de stare.

Matricea de covarianță a estimării vectorului de stare folosind matricea coeficienților optimi

Expresia pentru matricea de covarianță a estimării vectorului de stare P k|k atunci când se utilizează matricea coeficienților optimi va lua forma:

Această formulă este mai simplă din punct de vedere computațional și, prin urmare, este aproape întotdeauna utilizată în practică, dar este corectă numai atunci când se utilizează matricea coeficienților optimi. Dacă, din cauza preciziei de calcul scăzute, apare o problemă cu stabilitatea de calcul sau este utilizată în mod specific o matrice de coeficienți, alta decât cea optimă, ar trebui utilizată o formulă generală pentru matricea de covarianță a estimării vectorului de stare.


Acest filtru este utilizat în diverse domenii - de la inginerie radio până la economie. Aici vom discuta despre ideea principală, sensul, esența acestui filtru. Acesta va fi prezentat în cel mai simplu limbaj posibil.
Să presupunem că trebuie să măsurăm unele cantități ale unui anumit obiect. În inginerie radio, ele se ocupă cel mai adesea cu măsurarea tensiunilor la ieșirea unui anumit dispozitiv (senzor, antenă etc.). În exemplul cu un electrocardiograf (vezi), avem de-a face cu măsurători ale biopotențialelor pe corpul uman. În economie, de exemplu, valoarea măsurată poate fi ratele de schimb. În fiecare zi cursul de schimb este diferit, adică în fiecare zi „măsurătorile lui” ne dau o valoare diferită. Și dacă generalizăm, putem spune că cea mai mare parte a activității umane (dacă nu toată) se rezumă la măsurători și comparații constante ale anumitor cantități (vezi cartea).
Deci, să presupunem că măsurăm constant ceva. De asemenea, presupunem că măsurătorile noastre vin întotdeauna cu o eroare - acest lucru este de înțeles, deoarece nu există instrumente de măsurare ideale și fiecare produce rezultate cu o eroare. În cel mai simplu caz, ceea ce este descris se poate reduce la următoarea expresie: z=x+y, unde x este valoarea adevărată pe care dorim să o măsurăm și care ar fi măsurată dacă am avea un aparat de măsurat ideal, y este măsura eroare introdusă de dispozitivul de măsurare, iar z este mărimea pe care am măsurat-o. Deci sarcina filtrului Kalman este să ghicească (determină) din z-ul pe care l-am măsurat, care a fost valoarea adevărată a lui x atunci când am primit z-ul nostru (care conține valoarea adevărată și eroarea de măsurare). Este necesar să se filtreze (înlăturarea) adevărata valoare a lui x din z - pentru a elimina zgomotul de distorsionare y din z. Adică, având în mână doar o sumă, trebuie să ghicim ce termeni au dat această sumă.
În lumina celor de mai sus, să formulăm acum totul după cum urmează. Să fie doar două numere aleatorii. Ni se oferă doar suma lor și ni se cere să folosim această sumă pentru a determina care sunt termenii. De exemplu, ni s-a dat numărul 12 și ei spun: 12 este suma numerelor x și y, întrebarea este cu ce sunt egali x și y. Pentru a răspunde la această întrebare, creăm o ecuație: x+y=12. Am primit o ecuație cu două necunoscute, prin urmare, strict vorbind, nu este posibil să găsim două numere care au dat această sumă. Dar mai putem spune ceva despre aceste cifre. Putem spune că acestea erau fie numerele 1 și 11, fie 2 și 10, fie 3 și 9, fie 4 și 8 etc., de asemenea, erau fie 13 și -1, fie 14 și -2, fie 15 și - 3, etc. Adică, putem folosi suma (în exemplul nostru 12) pentru a determina numeroasele opțiuni posibile care însumează exact 12. Una dintre aceste opțiuni este perechea pe care o căutăm, care de fapt a dat 12 chiar acum. observând că toate variantele de perechi de numere care dau un total de 12 formează o linie dreaptă, prezentată în Fig. 1, care este dată de ecuația x+y=12 (y=-x+12).

Fig.1

Astfel, perechea pe care o căutăm se află undeva pe această linie dreaptă. Repet, este imposibil să alegi dintre toate aceste opțiuni perechea care a existat efectiv – care a dat cifra 12, fără a cunoaște indicii suplimentare. In orice caz, în situația pentru care a fost inventat filtrul Kalman, astfel de indicii există. Se știe ceva dinainte despre numerele aleatoare. În special, așa-numita histogramă de distribuție pentru fiecare pereche de numere este cunoscută acolo. Se obține de obicei după o observare suficient de lungă a apariției acestor numere foarte aleatorii. Adică, de exemplu, se știe din experiență că în 5% din cazuri apare de obicei perechea x=1, y=8 (notăm această pereche astfel: (1,8)), în 2% din cazuri perechea x=2, y=3 ( 2,3), în 1% din cazuri o pereche (3,1), în 0,024% din cazuri o pereche (11,1) etc. Repet, această histogramă este dată pentru toate cuplurile numere, inclusiv cele care însumează 12. Astfel, pentru fiecare pereche care însumează 12, putem spune că, de exemplu, perechea (1, 11) apare 0,8% din timp, perechea ( 2, 10) – în 1% din cazuri, pereche (3, 9) – în 1,5% din cazuri etc. Astfel, putem folosi histograma pentru a determina în ce procent din cazuri suma termenilor unei perechi este egală cu 12. Fie, de exemplu, în 30% din cazuri suma dă 12. Iar în restul de 70%, perechile rămase cad - acestea sunt (1,8), (2, 3), (3,1), etc. – cele care însumează alte numere decât 12. Mai mult, să fie, de exemplu, perechea (7,5) să apară în 27% din cazuri, în timp ce toate celelalte perechi care însumează 12 apar în 0,024%+0,8% +1 %+1,5%+…=3% din cazuri. Deci, din histogramă am aflat că numerele care însumează 12 apar în 30% din cazuri. Mai mult, știm că, dacă se aruncă un 12, atunci cel mai adesea (27% din 30%) motivul pentru aceasta este perechea (7,5). Adică dacă deja Dacă se aruncă un 12, putem spune că în 90% din cazuri (27% din 30% - sau, ceea ce este la fel, de 27 de ori din 30) motivul pentru care se aruncă 12 este perechea (7,5 ). Știind că cel mai adesea motivul primirii unei sume egale cu 12 este perechea (7,5), este logic să presupunem că, cel mai probabil, aceasta a scăzut acum. Desigur, încă nu este un fapt că, de fapt, acum numărul 12 este format din această pereche specială, totuși, data viitoare, dacă întâlnim 12 și presupunem din nou perechea (7,5), atunci în aproximativ 90% de cazuri din 100% vom avea dreptate. Dar dacă ghicim perechea (2, 10), vom avea dreptate doar în 1% din 30% din cazuri, ceea ce este egal cu 3,33% din ghicirile corecte față de 90% când ghicim perechea (7,5). Asta este - acesta este scopul algoritmului de filtru Kalman. Adică, filtrul Kalman nu garantează că nu va face o greșeală în determinarea sumandului prin sumă, dar garantează că va greși de un număr minim de ori (probabilitatea unei erori va fi minimă), deoarece folosește statistici - o histogramă a apariției perechilor de numere. De asemenea, este necesar să subliniem că algoritmul de filtrare Kalman utilizează adesea așa-numita densitate de distribuție a probabilității (PDD). Cu toate acestea, este necesar să înțelegem că sensul acolo este același cu cel al unei histograme. Mai mult, o histogramă este o funcție construită pe baza PDF și este aproximarea acesteia (vezi, de exemplu,).
În principiu, putem descrie această histogramă în funcție de două variabile - adică sub forma unei anumite suprafețe deasupra planului xy. Acolo unde suprafața este mai mare, probabilitatea de a obține perechea corespunzătoare este mai mare. Figura 2 prezintă o astfel de suprafață.


Fig.2

După cum puteți vedea deasupra dreptei x+y=12 (care are variante de perechi de dare în total 12), punctele de suprafață sunt situate la diferite înălțimi, iar cea mai mare înălțime este pentru varianta cu coordonate (7,5). Și când întâlnim o sumă egală cu 12, în 90% din cazuri motivul apariției acestei sume este tocmai perechea (7,5). Acestea. Această pereche, care însumează 12, este cea care are cea mai mare probabilitate de apariție, cu condiția ca suma să fie 12.
Astfel, ideea din spatele filtrului Kalman este descrisă aici. Pe această bază sunt construite tot felul de modificări - într-un singur pas, recurent în mai multe etape etc. Pentru un studiu mai aprofundat al filtrului Kalman, recomand cartea: Van Trees G. Theory of detection, estimation and modulation.

p.s. Pentru cei care sunt interesați de explicațiile conceptelor de matematică, așa cum se spune „pe degete”, le putem recomanda această carte și în special capitolele din secțiunea „Matematică” (puteți achiziționa cartea în sine sau capitole individuale din ea). ).

1

A fost efectuat un studiu al utilizării filtrului Kalman în evoluțiile moderne ale sistemelor de navigație integrate. Este dat și analizat un exemplu de construire a unui model matematic care utilizează un filtru Kalman extins pentru a îmbunătăți acuratețea determinării coordonatelor vehiculelor aeriene fără pilot. Se consideră un filtru parțial. Se face o scurtă trecere în revistă a lucrărilor științifice care utilizează acest filtru pentru a îmbunătăți fiabilitatea și toleranța la erori a sistemelor de navigație. Acest articol ne permite să concluzionam că utilizarea filtrului Kalman în sistemele de localizare a UAV este practicată în multe dezvoltări moderne. Există un număr mare de variații și aspecte ale acestei utilizări, care oferă, de asemenea, rezultate tangibile în creșterea preciziei, mai ales în cazul defecțiunii sistemelor standard de navigație prin satelit. Acesta este principalul factor de influență a acestei tehnologii asupra diferitelor domenii științifice legate de dezvoltarea unor sisteme de navigație precise și tolerante la erori pentru diverse aeronave.

filtru Kalman

navigare

vehicul aerian fără pilot (UAV)

1. Makarenko G.K., Aleshechkin A.M. Studiul unui algoritm de filtrare la determinarea coordonatelor unui obiect folosind semnale de la sistemele de radionavigație prin satelit // Rapoarte TUSUR. – 2012. – Nr 2 (26). – pp. 15-18.

2. Bar-Shalom Y., Li X. R., Kirubarajan T. Estimare cu aplicații

la urmărire și navigare // Teorie algoritmi și software. – 2001. – Vol. 3. – P. 10-20.

3. Bassem I.S. Navigație bazată pe viziune (VBN) a vehiculelor aeriene fără pilot (UAV) // UNIVERSITATEA DIN CALGARY. – 2012. – Vol. 1. – P. 100-127.

4. Conte G., Doherty P. Un sistem integrat de navigație UAV bazat pe potrivirea imaginilor aeriene // Conferință aerospațială. – 2008. –Vol. 1. – P. 3142-3151.

5. Guoqiang M., Drake S., Anderson B. Proiectarea unui filtru Kalman extins pentru localizarea uav // În informații, decizie și control. – 2007. – Vol. 7. – P. 224–229.

6. Optimizarea traiectoriei Ponda S.S pentru localizarea țintei folosind vehicule aeriene mici fără pilot // Massachusetts Institute of Technology. – 2008. – Vol. 1. – P. 64-70.

7. Wang J., Garrat M., Lambert A. Integrarea senzorilor gps/ins/vision pentru a naviga în vehicule aeriene fără pilot // IAPRS&SIS. – 2008. – Vol. 37. – P. 963-969.

Una dintre sarcinile urgente ale navigației moderne a vehiculelor aeriene fără pilot (UAV) este sarcina de a crește precizia determinării coordonatelor. Această problemă este rezolvată prin utilizarea diferitelor opțiuni pentru integrarea sistemelor de navigație. Una dintre opțiunile moderne de integrare este combinația de navigare GPS/GLONASS cu un filtru Kalman extins, care evaluează recursiv acuratețea folosind măsurători incomplete și zgomotoase. În prezent, există și sunt dezvoltate diferite variații ale filtrului Kalman extins, inclusiv un număr divers de variabile de stare. În această lucrare vom arăta cât de eficientă poate fi utilizarea sa în evoluțiile moderne. Să luăm în considerare una dintre reprezentările caracteristice ale unui astfel de filtru.

Construirea unui model matematic

În acest exemplu, vom vorbi doar despre mișcarea UAV-ului în plan orizontal, în caz contrar, vom lua în considerare așa-numita problemă de localizare 2d. În cazul nostru, acest lucru este justificat de faptul că pentru multe situații întâlnite practic, UAV-ul poate rămâne aproximativ la aceeași altitudine. Această ipoteză este utilizată pe scară largă pentru a simplifica simulările dinamicii aeronavelor. Modelul dinamic al UAV este specificat de următorul sistem de ecuații:

unde () sunt coordonatele UAV în plan orizontal în funcție de timp, direcția UAV, viteza unghiulară a UAV și viteza la sol a UAV, funcționează și vor fi considerate constante. Sunt independente reciproc, cu covarianțe cunoscute și , egal cu și respectiv, și sunt utilizate pentru a modela modificările accelerației UAV cauzate de vânt, manevrele pilotului etc. Valorile și sunt derivate din viteza unghiulară maximă a UAV și valorile experimentale ale modificărilor vitezei liniare a UAV, - simbol Kronecker.

Acest sistem de ecuații va fi aproximativ datorită neliniarității modelului și prezenței zgomotului. Cea mai simplă metodă de aproximare în acest caz este metoda de aproximare Euler. Un model discret al sistemului de propulsie dinamică al UAV este prezentat mai jos.

un vector de stare a filtrului Kalman discret care permite aproximarea valorii unui vector de stare continuă. ∆ - interval de timp între k și k+1 măsurători. () și () sunt secvențe de valori ale zgomotului gaussian alb cu medie zero. Matricea de covarianță pentru prima secvență:

În mod similar, pentru a doua secvență:

Făcând substituțiile corespunzătoare în ecuațiile sistemului (2), obținem:

Secvențe și sunt independente reciproc. Ele sunt, de asemenea, secvențe de zgomot gaussian alb cu medie zero cu matrice de covarianță și respectiv. Avantajul acestei forme este că arată modificarea zgomotului discret între fiecare măsurătoare. Ca rezultat, obținem următorul model dinamic discret:

(3)

Ecuația pentru:

= + , (4)

unde, x și y sunt coordonatele UAV-ului în momentul k-time și o secvență gaussiană de parametri aleatori cu valoare medie zero, care este utilizată pentru a seta eroarea. Se presupune că această secvență este independentă de () și ().

Expresiile (3) și (4) servesc ca bază pentru estimarea locației UAV, unde coordonatele k-a sunt obținute folosind filtrul Kalman extins. Modelarea defecțiunii sistemelor de navigație în raport cu acest tip de filtru arată eficacitatea sa semnificativă.

Pentru mai multă claritate, să dăm un mic exemplu simplu. Lăsați un UAV să zboare uniform accelerat, cu o oarecare accelerație constantă a.

Unde, x este coordonata UAV la momentul t, iar δ este o variabilă aleatorie.

Să presupunem că avem un senzor GPS care primește date despre locația unei aeronave. Să prezentăm rezultatul modelării acestui proces în pachetul software MATLAB.

Orez. 1. Filtrarea citirilor senzorului folosind un filtru Kalman

În fig. 1 arată cât de eficientă poate fi utilizarea filtrării Kalman.

Cu toate acestea, în situații reale, semnalele au adesea dinamică neliniară și zgomot anormal. În astfel de cazuri este utilizat filtrul Kalman extins. Dacă variațiile de zgomot nu sunt prea mari (adică, aproximarea liniară este adecvată), utilizarea unui filtru Kalman extins oferă o soluție la problemă cu o precizie ridicată. Cu toate acestea, în cazul în care zgomotul nu este gaussian, filtrul Kalman extins nu poate fi utilizat. În acest caz, se folosește de obicei un filtru parțial, care utilizează metode integrale numerice bazate pe metode Monte Carlo cu lanțuri Markov.

Filtru parțial

Să ne imaginăm unul dintre algoritmii care dezvoltă ideile filtrului Kalman extins - un filtru parțial. Filtrarea parțială este o tehnică de filtrare suboptimă care funcționează prin realizarea de pooling Monte Carlo pe un set de particule care reprezintă distribuția probabilității procesului. Aici, o particulă este un element luat din distribuția anterioară a parametrului estimat. Ideea de bază a unui filtru parțial este că un număr mare de particule poate fi utilizat pentru a reprezenta o estimare a distribuției. Cu cât numărul de particule utilizate este mai mare, cu atât setul de particule va reprezenta mai exact distribuția anterioară. Filtrul de particule este inițializat prin plasarea în el a N particule dintr-o distribuție anterioară a parametrilor pe care dorim să-i estimăm. Algoritmul de filtrare presupune trecerea acestor particule printr-un sistem special și apoi cântărirea lor folosind informațiile obținute din măsurarea acestor particule. Particulele rezultate și masele asociate acestora reprezintă distribuția posterioară a procesului de estimare. Ciclul se repetă pentru fiecare măsurătoare nouă, iar greutățile particulelor sunt actualizate pentru a reprezenta distribuția ulterioară. Una dintre principalele probleme ale abordării tradiționale de filtrare a particulelor este că abordarea are ca rezultat, de obicei, câteva particule având greutăți foarte mari, spre deosebire de majoritatea celorlalte având o greutate foarte mică. Acest lucru duce la instabilitate de filtrare. Această problemă poate fi rezolvată prin introducerea unei rate de eșantionare în care N particule noi sunt luate dintr-o distribuție compusă din particule vechi. Rezultatul estimării se obține prin luarea unui eșantion din valoarea medie a unui set de particule. Dacă avem mai multe eșantioane independente, atunci media eșantionului va fi o estimare precisă a mediei, dând varianța finală.

Chiar dacă filtrul de particule este suboptim, atunci când numărul de particule tinde spre infinit, eficiența algoritmului se apropie de regula de estimare bayesiană. Prin urmare, este recomandabil să aveți cât mai multe particule posibil pentru a obține cel mai bun rezultat. Din păcate, acest lucru duce la o creștere puternică a complexității calculelor și, în consecință, forțează un compromis între precizie și viteza de calcul. Deci, numărul de particule ar trebui selectat pe baza cerințelor pentru sarcina de evaluare a preciziei. Un alt factor important pentru funcționarea unui filtru de particule este limitarea ratei de eșantionare. După cum sa menționat mai devreme, rata de eșantionare este un parametru important pentru filtrarea particulelor și fără ea, algoritmul va deveni în cele din urmă degenerat. Ideea este că dacă greutățile sunt distribuite prea neuniform și pragul de eșantionare este pe cale să fie atins, atunci particulele cu greutate mică sunt aruncate și setul rămas formează o nouă densitate de probabilitate din care pot fi prelevate noi probe. Alegerea unui prag de frecvență de eșantionare este o sarcină destul de dificilă, deoarece o frecvență prea mare face ca filtrul să fie prea sensibil la zgomot, iar o frecvență prea mică provoacă o eroare mare. De asemenea, un factor important este densitatea de probabilitate.

În general, algoritmul de filtrare a particulelor arată performanțe bune de calcul al poziției pentru ținte staționare și în cazul țintelor cu mișcare relativ lentă cu dinamică de accelerație necunoscută. În general, algoritmul de filtrare a particulelor este mai stabil decât filtrul Kalman extins și mai puțin predispus la degenerare și defecțiuni grave. În cazurile de distribuție neliniară, non-Gauss, acest algoritm de filtrare arată o acuratețe foarte bună în determinarea locației țintei, în timp ce algoritmul de filtrare Kalman extins nu poate fi utilizat în astfel de condiții. Dezavantajele acestei abordări includ complexitatea sa mai mare în raport cu filtrul Kalman extins, precum și faptul că nu este întotdeauna evident cum să alegeți parametrii potriviți pentru acest algoritm.

Cercetări promițătoare în acest domeniu

Utilizarea unui model de filtru Kalman, asemănător cu cel pe care l-am prezentat, poate fi observată în, unde este folosit pentru a îmbunătăți performanța unui sistem integrat (GPS + model de computer vision pentru potrivirea cu o bază geografică), precum și situația de este de asemenea simulată defecțiunea echipamentelor de navigație prin satelit. Folosind filtrul Kalman, rezultatele sistemului în caz de defecțiune au fost îmbunătățite semnificativ (de exemplu, eroarea în determinarea înălțimii a fost redusă de aproximativ două ori, iar erorile în determinarea coordonatelor de-a lungul diferitelor axe au fost reduse de aproape 9 ori) . O utilizare similară a filtrului Kalman este, de asemenea, dată în.

O problemă interesantă din punct de vedere al unui set de metode este rezolvată în . De asemenea, folosește un filtru Kalman cu 5 stări, cu unele diferențe în construcția modelului. Rezultatul obtinut depaseste rezultatul modelului pe care l-am prezentat datorita folosirii unor mijloace suplimentare de integrare (se folosesc fotografii si imagini termice). Utilizarea filtrului Kalman în acest caz ne permite să reducem eroarea în determinarea coordonatelor spațiale ale unui punct dat la o valoare de 5,5 m.

Concluzie

În concluzie, observăm că utilizarea filtrului Kalman în sistemele de localizare a UAV este practicată în multe dezvoltări moderne. Există un număr mare de variații și aspecte ale acestei utilizări, până la utilizarea simultană a mai multor filtre similare cu diferiți factori de stare. Una dintre cele mai promițătoare direcții pentru dezvoltarea filtrelor Kalman pare să fie crearea unui filtru modificat, ale cărui erori vor fi reprezentate de zgomot colorat, ceea ce îl va face și mai valoros pentru rezolvarea problemelor reale. De asemenea, de mare interes în domeniu este un filtru parțial care poate filtra zgomotul non-Gauss. Această diversitate și rezultate tangibile în îmbunătățirea preciziei, în special în cazul defecțiunii sistemelor standard de navigație prin satelit, sunt principalii factori în impactul acestei tehnologii asupra diferitelor domenii științifice legate de dezvoltarea unor sisteme de navigație precise și tolerante la erori pentru diverse aeronave. .

Recenzători:

Labunets V.G., Doctor în Științe Tehnice, Profesor, Profesor al Departamentului de Fundamente Teoretice ale Ingineriei Radio, Universitatea Federală Ural numită după primul Președinte al Rusiei B.N. Elțîn, Ekaterinburg;

Ivanov V.E., doctor în științe tehnice, profesor, șef. Departamentul de Tehnologie și Comunicații al Universității Federale Ural numit după primul președinte al Rusiei B.N. Eltsin, Ekaterinburg.

Link bibliografic

Gavrilov A.V. UTILIZAREA FILTRULUI KALMAN PENTRU REZOLVAREA PROBLEMELOR DE RAFINERARE A COORDONATELOR UAV // Probleme moderne ale științei și educației. – 2015. – Nr. 1-1.;
URL: http://science-education.ru/ru/article/view?id=19453 (data acces: 02/01/2020). Vă aducem în atenție reviste apărute la editura „Academia de Științe ale Naturii”

Cumva s-a întâmplat că îmi plac foarte mult tot felul de algoritmi care au o bază matematică clară și logică) Dar adesea descrierea lor pe Internet este atât de supraîncărcată cu formule și calcule încât este pur și simplu imposibil de înțeles sensul general al algoritmului. Dar înțelegerea esenței și principiului de funcționare a unui dispozitiv/mecanism/algoritm este mult mai importantă decât memorarea unor formule uriașe. Oricât de banal ar fi, memorarea chiar și a sutelor de formule nu va ajuta în niciun fel dacă nu știi cum și unde să le aplici 😉 De fapt, la ce sunt toate acestea.. Am decis să fac o descriere a unor algoritmi care A trebuit să întâlnesc în practică. Voi încerca să nu mă supraîncărc cu calcule matematice, astfel încât materialul să fie ușor de înțeles și ușor de citit.

Și astăzi vom vorbi despre filtru Kalman, să ne dăm seama ce este, de ce și cum se folosește.

Să începem cu un mic exemplu. Să ne confruntăm cu sarcina de a determina coordonatele unei aeronave zburătoare. În plus, în mod firesc, coordonatele (să o notăm) ar trebui determinate cât mai precis posibil.

Am instalat în avans un senzor în avion, care ne oferă datele de locație necesare, dar, ca orice pe lumea asta, senzorul nostru este imperfect. Prin urmare, în loc de valoarea obținem:

unde este eroarea senzorului, adică o variabilă aleatorie. Astfel, din citirile inexacte ale echipamentului de masura, trebuie sa obtinem o valoare a coordonatei () cat mai apropiata de pozitia reala a aeronavei.

Sarcina a fost stabilită, să trecem la rezolvarea ei.

Anunțați-ne acțiunea de control () datorită căreia zboară avionul (pilotul ne-a spus ce pârghii trage 😉). Apoi, cunoscând coordonatele la pasul k, putem obține valoarea la pasul (k+1):

S-ar părea că de asta avem nevoie! Și nu este nevoie de filtru Kalman aici. Dar nu totul este atât de simplu.. În realitate, nu putem lua în considerare toți factorii externi care afectează zborul, așa că formula ia următoarea formă:

unde este eroarea cauzată de influențe externe, imperfecțiunea motorului etc.

Deci ce se întâmplă? La pasul (k+1) avem, în primul rând, o citire inexactă a senzorului și, în al doilea rând, o valoare calculată incorect, obținută din valoarea din pasul anterior.

Ideea filtrului Kalman este de a obține o estimare precisă a coordonatei dorite (pentru cazul nostru) din două valori inexacte (luându-le cu coeficienți de ponderare diferiți). În general, valoarea măsurată poate fi absolut orice (temperatură, viteză...). Iată ce se întâmplă:

Prin calcule matematice, putem obține o formulă de calcul a coeficientului Kalman la fiecare pas, dar, așa cum sa convenit la începutul articolului, nu vom aprofunda calculele, mai ales că în practică s-a stabilit că coeficientul Kalman tinde întotdeauna către o anumită valoare pe măsură ce k crește. Obținem prima simplificare a formulei noastre:

Acum să presupunem că nu există nicio legătură cu pilotul și nu cunoaștem acțiunea de control. S-ar părea că în acest caz nu putem folosi filtrul Kalman, dar nu este așa 😉 Pur și simplu „aruncăm” din formulă ceea ce nu știm, atunci

Obținem cea mai simplificată formulă Kalman, care, totuși, în ciuda unor astfel de simplificări „grele”, își face față perfect sarcinii. Dacă prezentați rezultatele grafic, veți obține ceva de genul acesta:

Dacă senzorul nostru este foarte precis, atunci în mod natural coeficientul de ponderare K ar trebui să fie aproape de unitate. Dacă situația este inversă, adică senzorul nostru nu este foarte bun, atunci K ar trebui să fie mai aproape de zero.

Probabil asta e tot, exact așa, ne-am dat seama de algoritmul de filtrare Kalman! Sper că articolul a fost util și de înțeles =)

Pe Internet, inclusiv pe Habré, puteți găsi o mulțime de informații despre filtrul Kalman. Dar este dificil să găsești o concluzie ușor digerabilă la formulele în sine. Fără o concluzie, toată această știință este percepută ca un fel de șamanism, formulele arată ca un set fără chip de simboluri și, cel mai important, multe afirmații simple aflate la suprafața teoriei sunt dincolo de înțelegere. Scopul acestui articol va fi să vorbim despre acest filtru într-o limbă cât mai accesibilă.
Filtrul Kalman este un instrument puternic de filtrare a datelor. Principiul său principal este că filtrarea folosește informații despre fizica fenomenului în sine. Să presupunem că, dacă filtrezi datele din vitezometrul unei mașini, atunci inerția mașinii îți dă dreptul de a percepe salturi prea rapide de viteză ca o eroare de măsurare. Filtrul Kalman este interesant pentru că, într-un fel, este cel mai bun filtru. Vom discuta mai detaliat mai jos ce înseamnă exact cuvintele „cel mai bun”. La sfârșitul articolului voi arăta că în multe cazuri formulele pot fi simplificate în așa măsură încât nu mai rămâne aproape nimic din ele.

Program educativ

Înainte de a face cunoștință cu filtrul Kalman, vă sugerez să amintim câteva definiții și fapte simple din teoria probabilității.

Valoare aleatoare

Când spun că este dată o variabilă aleatoare, înseamnă că această valoare poate lua valori aleatoare. Ia valori diferite cu probabilități diferite. Când aruncați, să zicem, un zar, va apărea un set discret de valori: . Când vorbim, de exemplu, despre viteza unei particule rătăcitoare, atunci, evident, avem de a face cu un set continuu de valori. Vom nota valorile „eliminate” ale unei variabile aleatoare prin , dar uneori vom folosi aceeași literă cu care notăm variabila aleatoare: .
În cazul unui set continuu de valori, o variabilă aleatoare este caracterizată printr-o densitate de probabilitate, care ne dictează că probabilitatea ca o variabilă aleatoare să „cădă” într-o mică vecinătate a unui punct de lungime este egală cu . După cum putem vedea din imagine, această probabilitate este egală cu aria dreptunghiului umbrit de sub grafic:

Destul de des în viață, variabilele aleatoare sunt distribuite gaussian atunci când densitatea de probabilitate este egală cu .

Vedem că funcția are forma unui clopot cu un centru într-un punct și o lățime caracteristică de ordine.
Din moment ce vorbim despre distribuția Gauss, ar fi păcat să nu mai vorbim de unde provine. Așa cum numerele sunt bine stabilite în matematică și se găsesc în locurile cele mai neașteptate, distribuția gaussiană și-a prins rădăcini adânci în teoria probabilității. O afirmație remarcabilă care explică parțial omniprezența gaussiană este aceasta:
Să existe o variabilă aleatorie cu o distribuție arbitrară (de fapt, există unele restricții asupra acestui arbitrar, dar nu sunt deloc stricte). Să efectuăm experimente și să calculăm suma valorilor „abandonate” ale unei variabile aleatorii. Să facem multe astfel de experimente. Este clar că de fiecare dată vom primi o valoare diferită a sumei. Cu alte cuvinte, această sumă este ea însăși o variabilă aleatoare cu propria sa lege specifică de distribuție. Se pare că atunci când este suficient de mare, legea distribuției acestei sume tinde către distribuția gaussiană (apropo, lățimea caracteristică a „clopotului” crește ca ). Citim mai detaliat pe Wikipedia: teorema limitei centrale. În viață, de foarte multe ori există cantități care sunt suma unui număr mare de variabile aleatoare independente distribuite identic și, prin urmare, sunt distribuite gaussian.

Valoarea medie

Valoarea medie a unei variabile aleatoare este ceea ce vom obține în limită dacă efectuăm o mulțime de experimente și calculăm media aritmetică a valorilor scăzute. Valoarea medie este desemnată în moduri diferite: matematicienilor le place să o denote prin (așteptare matematică), iar matematicienilor străini prin (așteptare). Fizicienii prin sau. Îl vom desemna în mod străin: .
De exemplu, pentru o distribuție Gaussiană, media este .

Dispersia

În cazul distribuției gaussiene, vedem clar că variabila aleatoare preferă să se încadreze într-o anumită vecinătate a valorii sale medii. După cum se poate observa din grafic, răspândirea caracteristică a valorilor este de ordinul . Cum putem estima această răspândire a valorilor pentru o variabilă aleatorie arbitrară dacă îi cunoaștem distribuția? Puteți desena un grafic al densității sale de probabilitate și puteți estima lățimea caracteristică cu ochiul. Dar preferăm să mergem pe calea algebrică. Puteți găsi lungimea medie a abaterii (modulul) de la valoarea medie: . Această valoare va fi o bună estimare a răspândirii caracteristice a valorilor. Dar tu și cu mine știm foarte bine că folosirea modulelor în formule este o bătaie de cap, așa că această formulă este rar folosită pentru a estima dispersia caracteristică.
O modalitate mai simplă (simplu din punct de vedere al calculelor) este să găsiți . Această cantitate se numește dispersie și este adesea notată ca . Rădăcina varianței se numește abatere standard. Abaterea standard este o estimare bună a răspândirii unei variabile aleatorii.
De exemplu, pentru distribuția Gaussiană, putem calcula că varianța definită mai sus este exact egală cu , ceea ce înseamnă că abaterea standard este egală cu , ceea ce este de acord foarte bine cu intuiția noastră geometrică.
De fapt, există o mică înșelătorie ascunsă aici. Cert este că în definiția distribuției gaussiene, sub exponent există o expresie. Aceste două se află la numitor tocmai pentru ca abaterea standard să fie egală cu coeficientul. Adică formula de distribuție gaussiană în sine este scrisă într-o formă special adaptată, astfel încât să îi calculăm abaterea standard.

Variabile aleatoare independente

Variabilele aleatoare pot fi dependente sau nu. Imaginați-vă că aruncați un ac într-un avion și înregistrați coordonatele ambelor capete. Aceste două coordonate sunt dependente; ele sunt legate de condiția ca distanța dintre ele să fie întotdeauna egală cu lungimea acului, deși sunt variabile aleatorii.
Variabilele aleatoare sunt independente dacă rezultatul primei este complet independent de rezultatul celei de-a doua. Dacă variabilele aleatoare sunt independente, atunci valoarea medie a produsului lor este egală cu produsul valorilor lor medii:

Dovada

De exemplu, a avea ochi albaștri și a absolvi școala cu o medalie de aur sunt variabile aleatoare independente. Dacă medaliați cu ochi albaștri, să zicem, medaliați cu aur, atunci medaliați cu ochi albaștri. Acest exemplu ne spune că, dacă variabilele aleatoare sunt specificate prin densitățile lor de probabilitate și , atunci independența acestor valori este exprimată prin faptul că densitatea probabilității ( prima valoare a renunțat și a doua) se găsește prin formula:

Din aceasta rezultă imediat că:

După cum puteți vedea, demonstrația a fost efectuată pentru variabile aleatoare care au un spectru continuu de valori și sunt specificate prin densitatea lor de probabilitate. În alte cazuri, ideea de dovadă este similară.

filtru Kalman

Formularea problemei

Să notăm valoarea pe care o vom măsura și apoi o vom filtra. Aceasta ar putea fi poziția, viteza, accelerația, umiditatea, gradul de miros, temperatura, presiunea etc.
Să începem cu un exemplu simplu, care ne va conduce la formularea problemei generale. Imaginați-vă că avem o mașină controlată prin radio care poate merge doar înainte și înapoi. Noi, cunoscând greutatea mașinii, forma, suprafața drumului etc., am calculat modul în care joystick-ul de control afectează viteza de deplasare.

Atunci coordonatele mașinii se vor schimba conform legii:

În viața reală, nu putem ține cont în calculele noastre de micile perturbări care acționează asupra mașinii (vânt, denivelări, pietricele de pe drum), astfel încât viteza reală a mașinii va diferi de cea calculată. O variabilă aleatorie va fi adăugată în partea dreaptă a ecuației scrise:

Avem instalat pe mașină un senzor GPS care încearcă să măsoare adevărata coordonată a mașinii și, desigur, nu o poate măsura cu precizie, ci o măsoară cu o eroare, care este și o variabilă aleatorie. Ca urmare, primim date eronate de la senzor:

Sarcina este ca, cunoscând citirile incorecte ale senzorului, să găsească o bună aproximare pentru coordonatele adevărate a mașinii.
În formularea problemei generale, orice poate fi responsabil de coordonată (temperatură, umiditate...), iar membrul responsabil cu controlul sistemului din exterior îl vom desemna (în exemplul cu mașina). Ecuațiile pentru coordonatele și citirile senzorului vor arăta astfel:

Să discutăm în detaliu ce știm:

Este de remarcat faptul că sarcina de filtrare nu este o sarcină de netezire. Nu încercăm să netezim datele senzorului, încercăm să obținem cea mai apropiată valoare de coordonatele reale.

Algoritmul Kalman

Vom argumenta prin inducție. Imaginați-vă că la pasul al treilea am găsit deja o valoare filtrată de la senzor care aproximează bine coordonatele adevărate a sistemului. Nu uitați că cunoaștem ecuația care controlează modificarea coordonatei necunoscute:

Prin urmare, fără a primi încă valoarea de la senzor, putem presupune că la pas sistemul va evolua conform acestei legi și senzorul va arăta ceva apropiat de . Din păcate, nu putem spune încă nimic mai precis. Pe de altă parte, în timpul pasului vom avea o citire inexactă a senzorului pe mâini.
Ideea lui Kalman este următoarea. Pentru a obține cea mai bună aproximare a coordonatei adevărate, trebuie să alegem o cale de mijloc între citirea inexactă a senzorului și predicția noastră despre ceea ce ne așteptam să vadă. Vom atribui o pondere citirii senzorului și o pondere va rămâne pe valoarea prezisă:

Coeficientul se numește coeficientul Kalman. Depinde de pasul de iterație, deci ar fi mai corect să scriem , dar deocamdată, pentru a nu aglomera formulele de calcul, vom omite indicele acestuia.
Trebuie să alegem coeficientul Kalman astfel încât valoarea coordonatei optime rezultată să fie cea mai apropiată de cea adevărată. De exemplu, dacă știm că senzorul nostru este foarte precis, atunci vom avea mai multă încredere în citirea lui și vom acorda mai multă greutate valorii (aproape de una). Dacă senzorul, dimpotrivă, nu este deloc precis, atunci ne vom concentra mai mult pe valoarea prezisă teoretic.
În general, pentru a găsi valoarea exactă a coeficientului Kalman, trebuie doar să minimizați eroarea:

Folosim ecuațiile (1) (cele din fundalul albastru din cadru) pentru a rescrie expresia erorii:

Dovada

Acum este momentul să discutăm ce înseamnă expresia minimize error? La urma urmei, eroarea, după cum vedem, este ea însăși o variabilă aleatorie și ia valori diferite de fiecare dată. Nu există într-adevăr o abordare unică pentru a defini ce înseamnă să ai o eroare minimă. La fel ca și în cazul dispersiei unei variabile aleatoare, atunci când am încercat să estimăm lățimea caracteristică a dispersiei acesteia, aici vom alege cel mai simplu criteriu de calcul. Vom minimiza media erorii pătrate:

Să notăm ultima expresie:

Dovada

Din faptul că toate variabilele aleatoare incluse în expresia pentru sunt independente, rezultă că toți termenii „încrucișați” sunt egali cu zero:

Am folosit faptul că , atunci formula pentru varianță pare mult mai simplă: .

Această expresie capătă o valoare minimă atunci când (echivalăm derivata cu zero):

Aici scriem deja o expresie pentru coeficientul Kalman cu indicele pasului, prin urmare subliniem că depinde de pasul de iterație.
Inlocuim valoarea optima rezultata in expresia pentru , pe care am minimizat-o. Primim;

Problema noastră este rezolvată. Am obținut o formulă iterativă pentru calcularea coeficientului Kalman.
Să rezumam cunoștințele noastre dobândite într-un singur cadru:

Exemplu

Cod Matlab

Curata tot; N=100% număr de probe a=0,1% accelerare sigmaPsi=1 sigmaEta=50; k=1:N x=k x(1)=0 z(1)=x(1)+normrnd(0,sigmaEta); pentru t=1:(N-1) x(t+1)=x(t)+a*t+normrnd(0,sigmaPsi); z(t+1)=x(t+1)+normrnd(0,sigmaEta); Sfârşit; %kalman filtru xOpt(1)=z(1); eOpt(1)=sigmaEta; pentru 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) capăt; plot(k,xOpt,k,z,k,x)

Analiză

Dacă urmăriți cum se modifică coeficientul Kalman cu pașii de iterație, puteți arăta că se stabilizează întotdeauna la o anumită valoare. De exemplu, atunci când erorile pătratice medii ale senzorului și ale modelului au un raport de zece la unu, atunci graficul coeficientului Kalman în funcție de pasul de iterație arată astfel:

În exemplul următor, vom discuta despre modul în care acest lucru ne poate face viața mult mai ușoară.

Al doilea exemplu

În practică, se întâmplă adesea să nu știm nimic despre modelul fizic al ceea ce filtrem. De exemplu, ați vrut să filtrați citirile din accelerometrul dvs. preferat. Nu știți dinainte după ce lege intenționați să rotiți accelerometrul. Cele mai multe informații pe care le puteți culege este variația erorii senzorului. Într-o situație atât de dificilă, toată ignoranța asupra modelului de mișcare poate fi condusă într-o variabilă aleatorie:

Dar, sincer vorbind, un astfel de sistem nu mai satisface condițiile pe care le-am impus variabilei aleatoare, deoarece acum toată fizica necunoscută a mișcării este ascunsă acolo și, prin urmare, nu putem spune că în diferite momente de timp erorile de model sunt independente de reciproc și că valorile lor medii sunt zero. În acest caz, în general, teoria filtrului Kalman nu este aplicabilă. Dar, nu vom acorda atenție acestui fapt, ci vom aplica în mod prostesc tot colosul de formule, selectând coeficienții cu ochii, astfel încât datele filtrate să arate frumos.
Dar poți lua o cale diferită, mult mai simplă. După cum am văzut mai sus, coeficientul Kalman se stabilizează întotdeauna la valoare pe măsură ce crește. Prin urmare, în loc să selectăm coeficienți și să găsim coeficientul Kalman folosind formule complexe, putem considera că acest coeficient este întotdeauna o constantă și selectam numai această constantă. Această presupunere nu va strica aproape nimic. În primul rând, folosim deja ilegal teoria Kalman, iar în al doilea rând, coeficientul Kalman se stabilizează rapid la o constantă. În cele din urmă, totul va fi mult mai simplu. Nu avem deloc nevoie de formule din teoria lui Kalman, trebuie doar să selectăm o valoare acceptabilă și să o introducem în formula iterativă:

Următorul grafic prezintă datele filtrate în două moduri diferite de la un senzor fictiv. Cu condiția să nu știm nimic despre fizica fenomenului. Prima metodă este sinceră, cu toate formulele din teoria lui Kalman. Iar al doilea este simplificat, fără formule.

După cum putem vedea, metodele nu sunt aproape deloc diferite. O mică diferență se observă doar la început, când coeficientul Kalman nu s-a stabilizat încă.

Discuţie

După cum am văzut, ideea principală a filtrului Kalman este de a găsi un coeficient astfel încât valoarea filtrată

în medie, ar diferi cel mai puțin de valoarea reală a coordonatei. Vedem că valoarea filtrată este o funcție liniară a citirii senzorului și a valorii filtrate anterioare. Și valoarea filtrată anterioară este, la rândul său, o funcție liniară a citirii senzorului și valoarea filtrată anterioară. Și așa mai departe până când lanțul este complet întors. Adică, valoarea filtrată depinde de toata lumea citirile anterioare ale senzorului liniar:

Prin urmare, filtrul Kalman se numește filtru liniar.
Se poate dovedi că dintre toate filtrele liniare, filtrul Kalman este cel mai bun. Cel mai bun în sensul că eroarea pătrată medie a filtrului este minimă.

Caz multidimensional

Întreaga teorie a filtrului Kalman poate fi generalizată la cazul multidimensional. Formulele de acolo arată puțin mai înfricoșătoare, dar ideea de a le deriva este aceeași ca și în cazul unidimensional. Le puteți vedea în acest articol minunat: http://habrahabr.ru/post/140274/.
Și în acest minunat video Este dat un exemplu de utilizare a acestora.