Dlaczego potrzebuję filtra Kalmana?

61

Projektuję bezzałogowy statek powietrzny, który będzie zawierał kilka rodzajów czujników:

  • 3-osiowy akcelerometr
  • 3-osiowy żyroskop
  • 3-osiowy magnetometr
  • czujnik horyzontu
  • GPS
  • USG skierowane w dół.

Mój przyjaciel powiedział mi, że będę musiał przepuścić wszystkie dane z czujników przez filtr Kalmana, ale nie rozumiem dlaczego. Dlaczego nie mogę po prostu umieścić tego prosto w moim mikrokontrolerze. W jaki sposób filtr Kalmana pomaga mi w zakresie danych czujnika?

Rocketmagnet
źródło

Odpowiedzi:

52

Państwo ma połączyć wszystkie te czujniki bezpośrednio do mikrokontrolera. Filtr Kalmana nie jest filtrem elektronicznym, takim jak filtr LRC, który przechodzi między czujnikami a mikrokontrolerem. Filtr Kalmana jest filtrem matematycznym zaimplementowanym jako procedura programowa wewnątrz mikrokontrolera.

Wymienione czujniki dają mikrokontrolerowi 14 lub 15 nieprzetworzonych liczb za każdym razem, gdy wszystkie są aktualizowane.

Kiedy latam małym samolotem, tak naprawdę chcę wiedzieć, jakie jest jego położenie i orientacja oraz jak daleko jest nad ziemią - 7 liczb.

Potrzebuję czegoś , co da mi te 7 liczb.

Idealnie chciałbym za każdym razem uzyskać nową ocenę tych 7 liczb za pośrednictwem mojej pętli sterowania. Aktualizacje raz na sekundę, które otrzymuję z mojego taniego GPS, nie są wystarczająco szybkie. (Ludzie przy jakiej częstotliwości potrzebuje moja pętla aktualizacji wyjścia-sens-oblicz-wyliczyć-wyjście, aby pozostać stabilna? Mówią mi, że nawet 50 razy na sekundę nie będzie wystarczająco szybka).

W jakiś sposób będę musiał zmniejszyć te 14 lub 15 nieprzetworzonych liczb, które mam, z których niektóre tylko czasami aktualizuję, do (szacunkowych) 7 liczb, które naprawdę chcę.

Jak zauważył Josh, istnieje wiele doraźnych sposobów na przekształcenie surowych liczb w użyteczne dane. Każda procedura, która konwertuje 15 liczb na 7 liczb, można opisać jako „filtr”.

Nie musisz używać optymalnego filtra. Ale użyjesz pewnego rodzaju filtru - tj. Czegoś, co konwertuje z 15 liczb surowych danych, które masz (szacunkowe) na 7 liczb, których naprawdę chcesz.

Kalman Filter jest w pewnych warunkach „optimum” filtr, najlepszym sposobem przekształcania że surowe dane do numerów 7 naprawdę chcę.

Korzystanie z filtra Kalmana, który ktoś już napisał i debugował, może zająć mniej pracy, niż napisanie innego filtru od zera, debugowanie go i dodawanie kolejnych elementów, dopóki nie będzie można go użyć - filtr, który będzie nieuchronnie okazują się nieoptymalne.

David Cary
źródło
28

Krótka, złośliwa odpowiedź brzmi: „spróbuj bez niej”. Lepszą odpowiedzią jest przykład: gdy twoje akcelerometry mówią, że jesteś o 10 stopni od pionu, ale twój żyroskop mówi, że nie obróciłeś się od pionu, a twoje magnetometry zgłaszają przesunięcie o 30 stopni od północy, ale twój żyroskop wskazuje 32 stopnie. Jaki jest obecny kurs i pochylenie?

Prawdopodobnie znajdziesz milion sposobów ad-hoc, które wydają się działać w jednym przykładzie, ale w innych nie. Filtr Kalmana (rozszerzony filtr Kalmana (EKF) do tego zadania!) Zapewni ci rygorystyczny sposób odpowiedzi na te pytania. Jakość odpowiedzi jest wciąż badana - choć wyniki EKF są bardzo dobre - ale przynajmniej wszyscy zgodzą się, jakie odpowiedzi .

Josh Vander Hook
źródło
1
Dokładnie takiej odpowiedzi szukałem. „Co by się stało, gdybym nie korzystał z Kalmana Filter”. Dzięki!
Manav Kataria
22

Dane czujnika są zaszumione. Jeśli go nie przefiltrujesz, twój pojazd będzie działał co najmniej chaotycznie, gdyby był nawet wystarczająco stabilny, aby latać. Filtrowanie, za pomocą filtra Kalmana lub w inny sposób, może zmniejszyć hałas, gdy jest wykonane poprawnie, poprawiając stabilność z kolei.

Filtr Kalmana jest szczególnie wydajny filtr. Wymaga modelu systemu i modeli hałasu zarówno dla systemu, jak i czujników. Następnie szacuje stan pojazdu na podstawie dostarczonego oszacowania stanu i kontroli zastosowanych w dowolnym momencie. Ten szacowany stan będzie dokładniejszy niż raport czujników.

DaemonMaker
źródło
8

Możesz również użyć filtrów cząstek. Aby zapoznać się z podstawowym wprowadzeniem do filtrów cząstek, zapoznaj się z filmami profesora Thrun w sekcji Programowanie samochodu robotycznego.

http://www.youtube.com/watch?v=H0G1yslM5rc

http://www.youtube.com/watch?v=QgOUu2sUDzg

Filtry cząstek są bardziej niezawodne i mają znacznie mniejsze prawdopodobieństwo błędu zamknięcia pętli, co często występuje podczas implementacji EKF.

Filmy wideo opisują działanie filtra cząstek stałych.

Naresh
źródło
Zasadniczo odpowiedzi, które zawierają nie więcej niż link, nie są preferowane. Jeśli mógłbyś napisać akapit lub dwa na samym początku filmu, byłoby miło ..
Manishearth,
mów za siebie. Widzę niewielki zysk dzięki przekształceniu informacji w innym łączu. Link może zawierać informacje, których nie znałem i ktoś nie musi ich ponownie wpisywać, aby mnie o tym poinformować. Mogę klikać i czytać bardzo łatwo, dziękuję.
Spiked3
8

Filtr Kalmana jest algorytmem powszechnie stosowanym w bezzałogowych statkach powietrznych do łączenia wielu pomiarów czujników w celu zapewnienia „optymalnej” oceny położenia i / lub orientacji UAV. Na przykład filtr Kalmana może łączyć pomiary akcelerometru, żyroskopu i magnetometru z oszacowaniem prędkości w celu oszacowania odchylenia, pochylenia i przechylenia UAV.

Aby uzyskać więcej informacji na temat czujników i algorytmów wykorzystywanych do szacowania stanu UAV, zapoznaj się z samodzielnym artykułem Podstawy małego bezzałogowego lotu statku powietrznego .

Artykuł zawiera także linki do towarzyszącego kodu Matlaba implementującego opisane algorytmy oceny stanu UAV filtra Kalmana.

użytkownik486
źródło