filtru Kalman, microtechnics, versiunea mobilă

Așa cum sa întâmplat ca îmi place foarte mult tot felul de algoritmi, care au o bază clară și logică matematică), dar de multe ori descrierea lor pe Internet este atât de supraîncărcat cu formule și calcule că sensul general al algoritmului este pur și simplu imposibil de înțeles. Dar înțelegerea principiului și funcționarea dispozitivului / mașină / algoritm este mai important decât memorarea formule foarte mare. Poate părea banal, dar chiar și memorarea sute de formule nu va ajuta dacă nu știi cum și unde să le aplice 😉 De fapt, ce totul. Am decis să stârnească o descriere a unor algoritmi cu care m-am confruntat în practică. Voi încerca să nu supraîncărcați calculele matematice pe care materialul este clar și ușor de citit.

Și astăzi vom vorbi despre filtrul Kalman. Vedem ce este, de ce și modul în care aceasta este aplicată.

filtru Kalman.

Să începem cu un mic exemplu. Să sarcina noastră este de a determina coordonatele unui avion. Și, desigur, coordonatele (numesc) trebuie să fie determinată cât mai exact posibil.

filtru Kalman, microtechnics, versiunea mobilă

Cu avionul, trebuie să pornim senzorul, care ne oferă datele necesare cu privire la locația, dar, ca orice altceva în această lume, senzorul nostru nu este ideal. Prin urmare, în locul valorii obținem:

în cazul în care - eroare de senzor, adică o variabilă aleatoare. Astfel, din cauza citiri incorecte ale echipamentului de măsurare, ar trebui să obțineți valoarea coordonatelor (), cât mai aproape posibil de poziția reală a aeronavei.

Sarcina este setată, continuați să se ocupe de ea.

Să ne cunoaștem acțiunea de control (), prin care aeronava este de zbor (pilot ne-a spus ce pârghie el trage 😉). Apoi, cunoscând coordonăm etapa k, putem obține valoarea în etapa (k + 1):

S-ar părea, aici este, ceea ce avem nevoie! Și nu este nevoie de nici un filtru Kalman aici. Dar nu toate atât de simplu. În realitate, nu putem lua în considerare toți factorii externi care afectează zborul, astfel încât formula ia forma următoare:

în cazul în care - eroare cauzată de o acțiune externă, non-idealul și așa mai departe a motorului.

Deci, ce avem? În etapa (k + 1), avem, în primul rând, o indicație inexactă a senzorului, iar valoarea în al doilea rând, inexact calculată derivată din valoarea în etapa anterioară.

Ideea filtrului Kalman este faptul că dintre cele două valori inexacte (luându-le cu ponderi diferite) pentru a obține o estimare exactă a poziției dorite (în cazul nostru). În general, valoarea măsurată poate fi absolut orice (temperatura, viteza ..). Iată ce se întâmplă:

Prin calcule matematice putem obține o formulă pentru calculul coeficientului Kalman la fiecare pas, dar, așa cum sa convenit la începutul acestui articol, nu vom merge în calcul, cu atât mai mult că, în practică, ea a constatat că coeficientul Kalman cu k tinde întotdeauna la o valoare definită. Obținem prima simplificare a formulei noastre:

Acum, să presupunem că comunicarea cu pilotul nu, și noi nu știm acțiunea de control. S-ar părea că, în acest caz, filtrul Kalman, nu putem folosi, dar nu este 😉 pur și simplu „arunca“ cu formula este că noi nu știm dacă

Ia formula cea mai simplificată Kalman, care cu toate acestea, în ciuda unei astfel de „greu“ simplifica, se descurcă cu sarcina sa. Dacă sunt prezente rezultatele grafic, veți obține ceva de genul:

filtru Kalman, microtechnics, versiunea mobilă

În cazul în care senzorul nostru este foarte precis, este factorul de ponderare naturală K ar trebui să fie aproape de unitate. În cazul în care situația este inversată, adică senzorul nu sunt foarte bune, atunci K trebuie să fie aproape de zero.

articole similare