filtr komplementarnyfuzja danych z czujnikówrozszerzony filtr Kalmana (EKF)
Automatyka 4.5
Rozszerzony filtr Kalmana i fuzja czujników w jednej osi
Skąd dron wie, jak bardzo jest przechylony? Żaden czujnik nie mierzy kąta wprost. Żyroskop mierzy prędkość obrotu, ale jego całka dryfuje. Akcelerometr widzi kierunek grawitacji, ale ten pomiar jest zaszumiony i nieliniowy. Ta lekcja łączy oba czujniki na dwa sposoby: prostym filtrem komplementarnym, który wystarcza wielu dronom, i rozszerzonym filtrem Kalmana, który radzi sobie z nieliniowością i sam szacuje błąd żyroskopu. Zostajemy przy jednej osi. Pełne 3D na kwaternionach jest w kursie dynamiki lotu.
Czas
ok. 2,5 h teorii + ok. 2,5 h zadań
Zadania
11 zadań w treści + 5 do przemyślenia, z odpowiedziami
Źródła
G. Welch, G. Bishop, An Introduction to the Kalman Filter, rozdz. 2; R. Mahony i in., „Nonlinear complementary filters on the special orthogonal group” (2008)
0 Prolog: jak telefon wie, gdzie jest góra
Obróć telefon, a ekran obróci się razem z tobą. Potrząśnij nim, a obraz ani drgnie. Za tym stoją dwa mikroskopijne czujniki MEMS, które kosztują razem kilka złotych: akcelerometr i żyroskop. Każdy z osobna daje kiepską informację o orientacji. Razem, połączone kilkunastoma linijkami kodu, wystarczają do stabilizacji drona, nawigacji w grach i kierowania kamerą.
Pierwsze amatorskie kontrolery lotu używały prostych filtrów komplementarnych: MultiWii w wersji liniowej, wczesne ArduPilot w postaci filtru DCM (Premerlani i Bizard), nieliniowej odmiany z korekcją dryfu typu PI. Profesjonalne systemy, od samolotów po statek Apollo, używają rozszerzonego filtru Kalmana. W tej lekcji zobaczymy oba i sprawdzimy, ile daje ta różnica.
Pytanie na start. Żyroskop drona ma błąd stały 3°/s. Akcelerometr ma szum, który daje błąd kąta ok. 4°. Jakiego błędu kąta można się spodziewać po połączeniu: 4°, 1° czy 0,2°? Odpowiedź w części 4.
1 Dwa czujniki, dwie wady
Jedna oś: przechylenie φ drona.
Żyroskop mierzy prędkość kątową: ωm=φ˙+b+szum, gdzie b to bias (błąd stały, typowo ułamki do kilku stopni na sekundę, zmienny z temperaturą). Całkowanie daje kąt, ale bias całkuje się w dryf: 3°/s to po minucie 180°.
Akcelerometr w zawisie mierzy składową grawitacji: ay=gsinφ+szum+przyspieszenia ruchu. Daje kąt bez dryfu: φ≈arcsin(ay/g), ale z dużym szumem (drgania śmigieł) i z błędem, gdy dron przyspiesza w bok.
Wady są komplementarne: żyroskop jest dobry dla szybkich zmian i zły dla wolnych, akcelerometr odwrotnie. To ta sama sytuacja co barometr i akcelerometr w lekcji 4.4 Filtr Kalmana, tyle że pomiar jest nieliniowy (sinφ).
Zadania · część 1
3 zadania · ok. 15 min
Bias żyroskopu 0,05 rad/s. O ile stopni dryfuje scałkowany kąt po 10 s i po minucie?
Odpowiedź
0,5 rad = 28,6° po 10 s; 3 rad = 172° po minucie.
Akcelerometr ma szum 0,5 m/s². Jaki błąd kąta daje przy φ≈0? A przy φ=60∘?
Odpowiedź
δφ≈δa/(gcosφ): przy 0° ok. 0,051 rad = 2,9°; przy 60° dwa razy więcej, 5,8°. Im większy kąt, tym mniej czuły pomiar.
Dron przyspiesza w bok o 2 m/s² bez przechylania (np. po uderzeniu wiatru w bok). Jaki fałszywy kąt pokaże akcelerometr?
Odpowiedź
arcsin(2/9,81)≈11,8∘. Akcelerometr nie odróżnia grawitacji od przyspieszenia (zasada równoważności). Dlatego przy manewrach trzeba mu mniej ufać.
2 Filtr komplementarny
Najprostsza fuzja: co krok scałkuj żyroskop i lekko pociągnij wynik w stronę kąta z akcelerometru:
Filtr komplementarny
φ^k=α(φ^k−1+ωmT)+(1−α)φacc,k,α=τ+Tτ.
W dziedzinie s: φ^=τs+1τs⋅sωm+τs+11φacc. Żyroskop przez filtr górnoprzepustowy, akcelerometr przez dolnoprzepustowy; suma filtrów to 1.
Nazwa pochodzi właśnie stąd: oba filtry się uzupełniają (sumują do jedności), jak S+T=1 w lekcji 2.5 Zakłócenia, szum i wrażliwość: S, T i kształtowanie pętli. Prawdziwy kąt przechodzi bez zniekształceń, a każdy czujnik dostaje tylko to pasmo, w którym jest dobry. Jedno pokrętło τ wyznacza częstotliwość przejścia 1/τ: poniżej ufamy akcelerometrowi, powyżej żyroskopowi.
Słabość: bias żyroskopu nie znika, tylko zostaje „zatrzymany” na stałym błędzie bτ (zadanie 2.3). Przy τ=0,5 s i biasie 3°/s to ok. 1,4°.
Symulacja 1 Dron przechyla się do ±65° przez minutę. Żyroskop z biasem i szumem, akcelerometr z szumem, pomiary co 0,01 s. Sam żyroskop odpływa, sam akcelerometr szumi. Zmieniaj τ i patrz na błąd filtru: za krótkie przepuszcza szum, za długie zostawia błąd od biasu.
Zadania · część 2
3 zadania · ok. 25 min
T=0,01 s, α=0,98. Jaka jest stała czasowa τ?
Odpowiedź
τ=αT/(1−α)=0,49 s.
Pokaż, że transmitancje τs+1τs (dla ωm/s) i τs+11 sumują się do 1 i co z tego wynika dla prawdziwego kąta.
Odpowiedź
τs+1τs+1=1. Gdy oba czujniki są idealne (ωm/s=φacc=φ), wynik to dokładnie φ bez opóźnienia i zniekształceń, przy każdej częstotliwości.
Pokaż, że stały bias b żyroskopu daje stały błąd bτ.
Odpowiedź
Bias wchodzi jako b/s (całka) przez τs+1τs: τs+1bτ⋅ (skok). Wartość ustalona: bτ. Dla 0,05 rad/s i 0,49 s: 0,0245 rad = 1,4°.
3 Rozszerzony filtr Kalmana
Filtr Kalmana z lekcji 4.4 wymaga modelu liniowego. Tu pomiar to gsinφ. Pomysł Schmidta: linearyzować wokół bieżącej estymaty (lekcja 4.6 Układy nieliniowe, płaszczyzna fazowa i stabilność). Predykcja idzie po prawdziwym, nieliniowym modelu, a do równań na kowariancję i wzmocnienie bierzemy jakobiany:
Predykcja jest tu liniowa, nieliniowy jest tylko pomiar. Jakobian H=gcosφ^ ma prostą interpretację: przy dużym kącie akcelerometr mniej mówi o kącie, więc filtr sam zmniejsza wzmocnienie. Gdybyśmy zamiast tego przyjęli model liniowy h=gφ, przy φ=60∘ akcelerometr pokazałby g⋅0,87, a filtr uznałby, że kąt wynosi 0,87 rad, czyli 50°.
Symulacja 2 Ten sam lot co w symulacji 1. Filtr ze stanem [kąt, bias żyroskopu]. Porównaj EKF z linearyzacją w bieżącej estymacie i zwykły filtr Kalmana z modelem sinφ≈φ. Dolny wykres: estymata biasu na tle prawdziwego.
Zadania · część 3
3 zadania · ok. 25 min
Policz H dla φ^=0∘, 30∘, 80∘.
Odpowiedź
gcosφ^: 9,81; 8,50; 1,70 m/s² na radian. Przy 80° pomiar jest prawie nieczuły na kąt.
Dlaczego w EKF innowację liczymy jako z−h(x^−), a nie z−Hx^−?
Odpowiedź
Hx^ to przybliżenie liniowe h wokół punktu, w którym je liczono, a nie przewidywany pomiar. Prawdziwe przewidywanie to h(x^−)=gsinφ^. Jakobian służy tylko do propagacji niepewności i wzmocnienia.
Czy bias żyroskopu jest obserwowalny, gdy dron cały czas wisi poziomo (φ=0)?
Odpowiedź
Tak: bias powoduje dryf przewidywanego kąta, a akcelerometr pokazuje, że kąt się nie zmienia. Para (F,H) z H=[g0]: Wo=[gg0−gT], rząd 2.
4 Komplementarny czy EKF?
Odpowiedź na pytanie z prologu. Symulacja (60 s, przechylenia do ±65°, bias 2,9°/s, szum akcelerometru 0,5 m/s², błąd liczony w drugiej połowie):
metoda
RMS błędu
największy błąd
sam żyroskop
ok. 130° (dryf)
ok. 170°
sam akcelerometr
4,2°
27°
komplementarny, τ=0,49 s
1,5°
3,0°
KF z sinφ≈φ
3,8°
7,4°
EKF ze stanem biasu
0,21°
0,6°
EKF jest siedem razy dokładniejszy od filtru komplementarnego, głównie dlatego, że szacuje bias (estymata 0,0505 rad/s przy prawdziwym 0,05). Filtr komplementarny można poprawić tym samym pomysłem: dodać człon całkujący, który powoli „uczy się” biasu. To filtr Mahony’ego (2008), w praktyce regulator PI w pętli korekty. Jest prawie tak dobry jak EKF, przy ułamku obliczeń.
Zadania · część 4
2 zadania · ok. 15 min
Dlaczego zwykły KF z modelem liniowym ma w tabeli większy błąd niż filtr komplementarny, choć szacuje bias?
Odpowiedź
Filtr komplementarny korzysta z arcsin(ay/g), czyli z poprawnej nieliniowości. KF z h=gφ ma systematycznie zły model pomiaru przy dużych kątach (60° widzi jako 50°), a ten błąd jeszcze psuje estymatę biasu (0,039 zamiast 0,05).
Filtr komplementarny z członem całkującym: φ^←φ^+(ωm−b^)T+kp(φacc−φ^)T, b^←b^−ki(φacc−φ^)T. Dlaczego b^ dąży do prawdziwego biasu?
Odpowiedź
W stanie ustalonym średnia różnica φacc−φ^ musi być zerowa (inaczej b^ dalej się zmienia). Wtedy estymata kąta nie dryfuje, co jest możliwe tylko przy b^=b. To ten sam mechanizm co całka w PI usuwająca uchyb od stałego zakłócenia (lekcja 1.3).
5 Metoda i przykłady rozwiązane
Metoda: EKF krok po kroku
Stan: wielkości szukane + błędy czujników (biasy).
Model:f (szybkie czujniki jako wejście), h (wolne czujniki), oba nieliniowe dopuszczalne.
JakobianyF, H analitycznie; sprawdź numerycznie różnicami skończonymi.
SzumyQ, R jak w lekcji 4.4; przy manewrach zwiększ R akcelerometru.
Sprawdzenie: spójność błędu z P, obserwowalność biasów, zachowanie przy dużych kątach.
Przykład 5.1 Dobór τ filtru komplementarnego
Bias 0,05 rad/s, szum akcelerometru 0,5 m/s², T=0,01 s. Porównaj τ=0,09; 0,49; 2; 10 s.
τ=0,09 s (α=0,9): RMS 1,0°, ale szczyty do 5,6° (szum akcelerometru).
τ=0,49 s (α=0,98): RMS 1,5°, największy 3,0° (błąd od biasu bτ=1,4∘ plus szum).
Wynik: kąt poprawiony o 1,5°, niepewność kąta spadła z 0,1 do 0,05 rad.
Sprawdzenie:arcsin(5,0/9,81)=0,535 rad: filtr przesunął się w stronę pomiaru, ale nie całkiem, bo pomiar ma swoją niepewność ✓.
6 Błędne intuicje, których trzeba się oduczyć
„Akcelerometr mierzy kąt.”
Mierzy siłę właściwą: przyspieszenie minus przyspieszenie grawitacyjne (w spoczynku pokazuje 1 g w górę). Kąt wynika z niego tylko wtedy, gdy obiekt nie przyspiesza.
„EKF jest optymalny.”
Jest przybliżeniem: linearyzacja w estymacie bywa zła przy dużych niepewnościach. Przy silnej nieliniowości lepsze bywają filtry UKF albo cząsteczkowe.
„Filtr komplementarny to tylko filtr dolnoprzepustowy na akcelerometrze.”
To para filtrów sumujących się do jedności: górnoprzepustowy na żyroskopie jest równie ważny.
„Lepszy żyroskop rozwiąże problem dryfu.”
Zmniejszy go, ale każdy żyroskop ma bias zmienny z temperaturą. Bez czujnika absolutnego (akcelerometr, magnetometr, GPS) całka zawsze ucieknie.
„Jakobian liczy się raz.”
W EKF liczy się go w każdym kroku, w bieżącej estymacie. To właśnie odróżnia EKF od filtru Kalmana dla modelu zlinearyzowanego raz w punkcie pracy.
7 Zadania do przemyślenia
Te zadania wymagają więcej myślenia niż liczenia.
Zadania do przemyślenia
5 zadań · ok. 1,5 godziny
Zakręt samolotu. Samolot w skoordynowanym zakręcie z przechyleniem 30°. Co pokazuje akcelerometr w osi poprzecznej? Co z tego wynika dla filtru komplementarnego?
Rozwiązanie
W zakręcie skoordynowanym wypadkowa grawitacji i siły odśrodkowej leży w płaszczyźnie symetrii samolotu: akcelerometr poprzeczny pokazuje zero, jak w locie poziomym.
Filtr komplementarny powoli „prostuje” estymatę do 0°, choć samolot jest przechylony o 30°. W samolotach korekcję akcelerometrem wyłącza się albo kompensuje przyspieszenie z prędkości i prędkości kątowej (lekcja 3 Fuzja czujników w 3D: estymacja orientacji na kwaternionach).
Magnetometr dla odchylenia. Akcelerometr nie mówi nic o kursie (obrót wokół pionu). Jaki czujnik pełni tę rolę i jakie ma wady?
Rozwiązanie
Magnetometr: kierunek pola magnetycznego Ziemi. Fuzja z żyroskopem osi pionowej, tym samym schematem.
Wady: zakłócenia od silników i przewodów z prądem, metalowych konstrukcji, deklinacja magnetyczna. Dlatego drony często używają też kursu z GPS (z ruchu).
Kiedy linearyzacja zawodzi. EKF startuje z φ^=0, a dron jest przechylony o 150° (prawie do góry nogami). Co się może stać?
Rozwiązanie
ay=gsin150∘=gsin30∘: ten sam pomiar co przy 30°. Filtr zbiegnie do 30°, bo to rozwiązanie bliższe startowi. Pomiar jednej składowej nie rozróżnia φ i 180∘−φ.
Potrzebny drugi pomiar (az=gcosφ, zmienia znak) i ostrożna inicjalizacja. Ogólnie: EKF działa lokalnie, wymaga dobrego startu.
Drgania śmigieł. Silniki dają drgania 150–300 Hz o amplitudzie przyspieszenia rzędu g. Jak to wpływa na fuzję i co z tym robić? (Por. aliasing w lekcji 3.4.)
Rozwiązanie
Drgania złożą się w pobliże zera, jeśli ich częstotliwość leży blisko wielokrotności częstotliwości próbkowania: np. przy próbkowaniu 200 Hz drgania 190–210 Hz wyglądają jak powolne zmiany kąta o częstotliwości 0–10 Hz i filtr komplementarny ich nie odfiltruje (przy 500 Hz drgania 260–300 Hz złożą się tylko do 200–240 Hz).
Rozwiązania: mechaniczne tłumienie czujnika, filtr antyaliasingowy w czujniku, szybkie próbkowanie z filtrami cyfrowymi, filtry wycinające na częstotliwości obrotów silników (znanej z ESC).
Dlaczego kwaterniony? W 3D orientację można opisać trzema kątami (przechylenie, pochylenie, odchylenie). Dlaczego kontrolery lotu wolą cztery liczby (kwaternion)?
Rozwiązanie
Kąty Eulera mają osobliwość (przy pochyleniu 90° przechylenie i odchylenie stają się nieodróżnialne: blokada przegubu, ang. gimbal lock), a ich równania kinematyki zawierają funkcje trygonometryczne.
Modele f, h mogą być nieliniowe; F, H to jakobiany liczone w bieżącej estymacie.
5 Ile wynosi H dla pomiaru gsinφ?
gcosφ^.
6 Jak filtr komplementarny może szacować bias?
Dodać człon całkujący w pętli korekty (filtr Mahony’ego).
9 Karta wzorów i co dalej
Filtr komplementarny
φ^k=α(φ^k−1+ωmT)+(1−α)φacc
α=τ/(τ+T); τs+1τs+τs+11=1
błąd od biasu: bτ
φacc=arcsin(ay/g)
EKF
x^−=f(x^,u), P−=FPFT+Q
K=P−HT(HP−HT+R)−1, x^=x^−+K(z−h(x^−))
przechylenie: F=[10−T1], H=[gcosφ^0]
Do przeczytania
Obowiązkowo: G. Welch, G. Bishop, An Introduction to the Kalman Filter, rozdz. 2 (EKF, kilka stron).
Dla chętnych: R. Mahony, T. Hamel, J.-M. Pflimlin, „Nonlinear complementary filters on the special orthogonal group”, IEEE Trans. Automatic Control 53 (2008); S. Madgwick, raport o filtrze orientacji (2010), oba szeroko używane w dronach.
Mamy komplet narzędzi liniowych: sprzężenie od stanu, obserwatory, LQR, filtr Kalmana i jego nieliniowe rozszerzenie. Ostatnia lekcja części IV, dla chętnych, wychodzi poza świat linearyzacji: jak udowodnić stabilność układu nieliniowego bez rozwiązywania równań (Lapunow) i jak sterować, gdy model jest nieliniowy w całym zakresie pracy.