Fuzja czujników w 3D: estymacja orientacji na kwaternionach
W lekcji 4.5 automatyki łączyliśmy żyroskop z akcelerometrem w jednej osi. Samolot ma trzy osie, a kursu akcelerometr w ogóle nie widzi. Ta lekcja buduje pełny układ odniesienia orientacji i kursu (AHRS): trzy żyroskopy, trzy akcelerometry i magnetometr, połączone na kwaternionie. Najpierw prostym filtrem komplementarnym, potem filtrem Kalmana, który szacuje mały błąd orientacji zamiast samego kwaternionu. Na końcu najważniejsza pułapka: w zakręcie akcelerometr kłamie, i to w sposób, którego żaden filtr sam nie wykryje.
Czas
ok. 2,5 h teorii + ok. 2,5 h zadań
Zadania
15 zadań w treści + 5 do przemyślenia, z odpowiedziami
Źródła
R. Mahony, T. Hamel, J.-M. Pflimlin, „Nonlinear complementary filters on the special orthogonal group” (2008); F. L. Markley, J. L. Crassidis, Fundamentals of Spacecraft Attitude Determination and Control, rozdz. 6.2
0 Prolog: lot bez widoczności
We wrześniu 1929 roku Jimmy Doolittle wystartował, okrążył lotnisko i wylądował z kabiną zakrytą płótnem, patrząc tylko na przyrządy. Kluczowym z nich był sztuczny horyzont firmy Sperry: żyroskop na przegubach, którego wirnik trzymał kierunek pionu, a mechanizm wahadłowy powoli korygował jego dryf. Bez takiego przyrządu pilot w chmurach traci orientację w ciągu minut, bo zmysł równowagi w zakręcie mówi to samo co akcelerometr: że samolot leci prosto.
Dzisiejsze samoloty lekkie mają w miejscu kilku wirujących przyrządów jeden moduł AHRS (ang. attitude and heading reference system) z czujnikami MEMS, a obliczenia, które w 1929 roku robił mechanizm, robi kilkanaście linijek kodu. Ten kod musi rozwiązać dokładnie ten sam problem co mechanizm Sperry’ego: żyroskop dryfuje, a jedyny czujnik pionu na pokładzie mierzy nie grawitację, tylko siłę.
Pytanie na start. Samolot leci w ustalonym zakręcie skoordynowanym z przechyleniem 30∘. Jakie przechylenie pokazuje akcelerometr, jeśli liczymy je tak jak na ziemi? Odpowiedź w części 5.
Żyroskopy:ωm=ω+b+wg (prędkość kątowa plus bias plus szum).
Akcelerometry mierzą siłę właściwą, czyli przyspieszenie minus grawitację: fm=RT(an−gn)+wa, gn=[0;0;g].
Magnetometr:mm=RTBn+wm, gdzie Bn to pole Ziemi w osiach NED.
W locie niezakłóconym (an=0) akcelerometr pokazuje f=−RTgn: wektor „do góry” zapisany w osiach ciała. Czyli −f wskazuje pion w dół, a jego składowe niosą przechylenie i pochylenie (zadanie 1.3 z lekcji 1 Orientacja w 3D: macierz obrotu, kąty Eulera, oś i kąt, kwaterniony). Obrót wokół pionu nie zmienia go wcale, więc kursu akcelerometr nie widzi. Do tego potrzebny jest drugi kierunek odniesienia, a jedyny łatwo dostępny to pole magnetyczne Ziemi. W Polsce jest nachylone pod kątem ok. 66–70∘ w dół (więcej na północy), więc jego składowa pozioma to tylko 35–40% całości, a każdy kawałek żelaza i każdy przewód z prądem w pobliżu czujnika je zniekształca.
Zadania · część 1
3 zadania · ok. 15 min
Samolot stoi poziomo na płycie lotniska. Co pokazują trzy akcelerometry (osie: x do przodu, y w prawo, z w dół)?
Odpowiedź
f=−RTgn=[0;0;−9,81] m/s². Akcelerometr osi z pokazuje −g: siła reakcji podłoża działa w górę, czyli w stronę −z.
Co pokazują akcelerometry w swobodnym spadku (np. w locie po paraboli w samolocie do symulacji nieważkości)?
Odpowiedź
Zero: an=gn, więc f=0. Z akcelerometru nie da się wtedy wyznaczyć pionu.
Samolot stoi z nosem uniesionym o 10∘ (bez przechylenia). Policz f.
Odpowiedź
f=−g[−sinθ;sinφcosθ;cosφcosθ]=[gsin10∘;0;−gcos10∘]=[1,70;0;−9,66] m/s². Akcelerometr osi x „czuje” składową grawitacji wzdłuż kadłuba: nie odróżni jej od przyspieszania samolotu.
2 Orientacja z dwóch wektorów
Gdy samolot nie przyspiesza, orientację można wyznaczyć bez żadnego filtru, z dwóch pomiarów naraz.
Przechylenie, pochylenie i kurs z czujników (postój lub lot niezakłócony)
φ=atan2(−fy,−fz),θ=atan2(fx,fy2+fz2).
Kompensacja przechylenia magnetometru:mh=Ry(θ)Rx(φ)mm (wektor m sprowadzony do poziomu), ψ=atan2(−mh,y,mh,x) plus deklinacja magnetyczna.
Skąd te wzory? Z trzeciego wiersza macierzy R: −f/g=[−sinθ;sinφcosθ;cosφcosθ]. Kurs: Ry(θ)Rx(φ)RT=Rz(ψ)T, więc po „cofnięciu” przechylenia i pochylenia zostaje tylko obrót o kurs. Ten sam pomysł (dwa wektory odniesienia znane w obu układach wyznaczają orientację) w ogólnej postaci to algorytm TRIAD, używany w satelitach (kurs astronautyki, lekcja 12 Wyznaczanie orientacji: czujniki, TRIAD i filtr).
Bez kompensacji przechylenia kompas magnetyczny jest bardzo czuły na przechylenie, bo pole jest prawie pionowe: przy przechyleniu 20∘ i pochyleniu 10∘ kurs 60∘ może wyjść jako −6∘ (przykład 6.2). To jest źródło znanych pilotom błędów kompasu w zakrętach.
Symulacja 1 Samolot w dowolnej orientacji i to, co widzą jego czujniki: kierunek −f z akcelerometrów (czerwony) i pole magnetyczne (zielone). Porównaj kurs z magnetometru bez kompensacji i z kompensacją. Potem zaznacz zakręt skoordynowany.
Zadania · część 2
3 zadania · ok. 25 min
Akcelerometry pokazują f=[0;4,905;−8,496] m/s². Jakie przechylenie i pochylenie wynika z tego, jeśli samolot nie przyspiesza?
Odpowiedź
φ=atan2(−4,905;8,496)=−30∘ (lewe skrzydło w dół), θ=atan2(0;9,81)=0.
Szum akcelerometru 0,3 m/s², szum magnetometru 0,02 (w jednostkach ∣B∣), nachylenie pola 67∘. Oszacuj błędy przechylenia i kursu z pojedynczego pomiaru.
Odpowiedź
Przechylenie: 0,3/9,81=0,031 rad ≈1,8∘. Kurs: liczy się tylko składowa pozioma pola, cos67∘=0,39, więc 0,02/0,39=0,051 rad ≈2,9∘. Kurs z magnetometru jest mniej dokładny niż pion z akcelerometru, choć czujnik jest „lepszy” (2% wobec 3%).
Dlaczego z samego akcelerometru nie da się wyznaczyć kursu, a z samego magnetometru da się wyznaczyć tylko dwa kąty? Który obrót jest „niewidoczny” dla każdego z nich?
Odpowiedź
Pomiar jednego kierunku nie zmienia się przy obrocie wokół tego kierunku. Akcelerometr nie widzi obrotu wokół pionu (kursu), magnetometr nie widzi obrotu wokół linii pola. Dwa nierównoległe kierunki wyznaczają orientację jednoznacznie, im bliżej prostopadłości, tym dokładniej.
3 Filtr komplementarny na kwaternionie
Pomysł z jednej osi przenosi się wprost: całkujemy żyroskop (dokładny w krótkim okresie), a powolny dryf korygujemy pomiarami kierunków (dokładnymi w długim okresie). Różnica: w 3D błąd orientacji to obrót, a nie liczba. Jak zmierzyć, o ile i wokół jakiej osi estymata odbiega od prawdy? Porównujemy kierunek zmierzony vm z kierunkiem przewidywanym przez estymatę v^=R^Tvn. Iloczyn wektorowy vm×v^ ma długość sin kąta między nimi i wskazuje oś, wokół której trzeba obrócić estymatę.
dm=−fm/∣fm∣ (pion zmierzony), d^=R^T[0;0;1] (pion przewidywany), m^=R^TBn. Wektory magnetyczne znormalizowane. Wzmocnienia: kP (proporcjonalne) i kI (całkujące); w symulacji 2 kI=0,05kP.
To jest regulator PI w pętli korekty, dokładnie jak w filtrze z członem całkującym z lekcji 4.5 Rozszerzony filtr Kalmana i fuzja czujników w jednej osi: człon kPe ciągnie estymatę do pomiaru z czasem odpowiedzi ok. 1/kP, a człon całkujący uczy się biasu żyroskopów. Dwa szczegóły odróżniają porządną implementację:
błąd z magnetometru rzutujemy na kierunek pionu: magnetometr ma poprawiać tylko kurs, żeby zakłócenia magnetyczne nie psuły przechylenia i pochylenia;
kwaternion po każdym kroku normalizujemy, a krok całkowania robimy dokładnie (obrót o ∣ω∣T wokół ω), nie metodą Eulera.
Zadania · część 3
3 zadania · ok. 25 min
Pion zmierzony to dm=[0;0;1], a estymata przewiduje d^=[0;0,1;0,995]. Policz dm×d^. Wokół której osi i o jaki kąt filtr obróci estymatę?
Odpowiedź
[0⋅0,995−1⋅0,1;1⋅0−0;0]=[−0,1;0;0]: wokół osi x (przechylenie), długość 0,1=sin5,7∘. Estymata ma przechylenie błędne o ok. 5,7∘ i filtr koryguje je z prędkością kP⋅0,1 rad/s.
Filtr bez członu całkującego (kI=0), bias żyroskopu b=0,5∘/s, kP=1 1/s. Jaki jest ustalony błąd orientacji? Porównaj z błędem bτ z lekcji 4.5 automatyki.
Odpowiedź
W stanie ustalonym korekta znosi bias: kPδ=b, więc δ=b/kP=0,5∘. To ten sam wynik co bτ z τ=1/kP. Człon całkujący usuwa ten błąd.
Dlaczego błąd z magnetometru rzutujemy na pion? Co by się stało bez rzutowania, gdy samolot przelatuje nad linią wysokiego napięcia?
Odpowiedź
Zakłócone pole odchyla zmierzony wektor m w dowolnym kierunku, także w pionie. Bez rzutowania filtr próbowałby wyjaśnić to obrotem wokół osi poziomej, czyli zmianą przechylenia lub pochylenia. Po rzutowaniu zakłócenie może zepsuć tylko kurs, a ten jest mniej krytyczny dla utrzymania samolotu w powietrzu.
4 Filtr Kalmana dla orientacji (MEKF)
Rozszerzony filtr Kalmana z lekcji 4.5 Rozszerzony filtr Kalmana i fuzja czujników w jednej osi szacuje stan w przestrzeni wektorowej: dodaje poprawki i liczy kowariancję. Kwaternion do tego nie pasuje. Ma cztery składowe i jeden więz ∣q∣=1, więc jego macierz kowariancji 4×4 jest osobliwa, a dodanie poprawki q^+δq wyprowadza poza sferę jednostkową. Rozwiązanie, używane w satelitach od lat 70. (Lefferts, Markley i Shuster, 1982), nazywa się multiplikatywnym EKF (MEKF): filtr szacuje nie orientację, tylko mały błąd orientacji wokół bieżącej estymaty.
Multiplikatywny filtr Kalmana (MEKF)
Stan błędu:δx=[δθ;δb] (6 liczb), gdzie q=q^⊗(1,21δθ), δb=b−b^.
Korekta pomiarem kierunku y o wartości odniesienia rn: y^=R^Trn, H=[[y^]×0], K=PHT(HPHT+Rv)−1, δx^=K(y−y^).
Wcielenie poprawki:q^←q^⊗(1,21δθ^), normalizacja, b^←b^+δb^, P←(I−KH)P. Błąd znowu wynosi zero.
Skąd H=[y^]×? Dla małego błędu R=R^(I+[δθ]×) (zadanie 8.2 z lekcji 1 Orientacja w 3D: macierz obrotu, kąty Eulera, oś i kąt, kwaterniony), więc y=RTrn≈(I−[δθ]×)y^=y^+y^×δθ. Pomiar jest liniowy w błędzie, czego potrzebuje filtr Kalmana. Macierz Φ wynika z kinematyki błędu: δθ˙=−ω^×δθ−δb.
Co MEKF daje w porównaniu z filtrem komplementarnym? Wzmocnienia dobiera sam z kowariancji i wie, które składowe błędu są aktualnie obserwowalne. Bias żyroskopu osi pionowej jest np. obserwowalny tylko dzięki magnetometrowi, a w zakrętach także dzięki akcelerometrowi. Cena: macierze 6×6 i odwracanie 3×3 w każdym kroku, co dla współczesnego mikrokontrolera nie jest problemem.
Zadania · część 4
3 zadania · ok. 30 min
Dlaczego kowariancja kwaternionu 4×4 jest osobliwa?
Odpowiedź
Kwaternion jednostkowy leży na sferze ∣q∣=1; błędy wzdłuż q (zmieniające normę) są zabronione, więc wariancja w tym kierunku jest zerowa. Macierz ma wartość własną 0. Orientacja ma 3 stopnie swobody i stan błędu powinien mieć 3 składowe.
Samolot leci poziomo, prosto, z jednym pomiarem kierunku: pionem y^=[0;0;1]. Policz H dla części δθ. Która składowa błędu orientacji jest nieobserwowalna?
Odpowiedź
[y^]×=010−100000. Kolumna dla δθz jest zerowa: błąd kursu nie wpływa na pomiar pionu. Wiersz 3 też zerowy: składowa z pomiaru nie niesie informacji w pierwszym rzędzie (długość wektora jest stała).
Dlaczego po każdej korekcie stan błędu „wraca do zera” i co by się stało, gdybyśmy zapomnieli wcielić poprawkę do q^?
Odpowiedź
Poprawka zostaje przeniesiona do q^ i b^, więc nowa estymata błędu to 0, a linearyzacja zostaje dokładna (błąd zawsze mały). Bez wcielenia filtr akumulowałby duży δθ, model R≈R^(I+[δθ]×) przestałby obowiązywać i filtr by się rozjechał.
5 Zakręt, czyli akcelerometr kłamie
W ustalonym zakręcie skoordynowanym samolot nie ślizga się na boki, więc wypadkowa sił aerodynamicznych leży w płaszczyźnie symetrii. Akcelerometr mierzy właśnie siłę (bez grawitacji) podzieloną przez masę, więc pokazuje f=[0;0;−ng], gdzie n=1/cosφ to przeciążenie. Wzór z części 2 daje przechylenie 0∘. Pilot czuje to samo: siedzi wciśnięty w fotel, ale „w pionie”. Odpowiedź na pytanie z prologu: zero.
Filtr, który ufa akcelerometrowi, w długim zakręcie powoli „prostuje” swoją estymatę do 0∘, i to tym szybciej, im większe ma wzmocnienie korekty. Zły pion psuje następnie kompensację magnetometru i kurs. Rozwiązania są trzy, wszystkie stosowane w praktyce:
Kompensacja przyspieszenia. Jeśli prędkość lotu V jest znana (rurka Pitota, GPS) i samolot leci nosem w kierunku ruchu, przyspieszenie dośrodkowe w osiach ciała wynosi ab=Vω×ex=V[0;r;−q]. Odejmujemy je: fc=fm−V[0;r;−q] i znowu mamy pion.
Bramkowanie. Gdy ∣f∣ wyraźnie różni się od g albo prędkość kątowa jest duża, korektę akcelerometrem wyłączamy lub mocno osłabiamy.
Małe wzmocnienie. Korekta o stałej czasowej kilkudziesięciu sekund zdąży tylko trochę „wyprostować” estymatę w typowym zakręcie. Ceną jest wolniejsze usuwanie dryfu.
Symulacja 2 Dwie minuty lotu przy 55 m/s: zakręt z przechyleniem 30∘ w prawo, powrót, zakręt 45∘ w lewo, krótkie wznoszenie. Żyroskopy z biasem, akcelerometry i magnetometr z szumem. Porównaj sam żyroskop, filtr komplementarny i MEKF, bez kompensacji przyspieszenia i z nią. Dla filtru komplementarnego zmieniaj kP.
Wyniki symulacji (RMS błędów od 20. sekundy, te same szumy dla wszystkich filtrów):
filtr
kompensacja
przechylenie
pochylenie
kurs
tylko żyroskop
nie dotyczy
6,8°
6,5°
26°
Mahony, kP=1 1/s
nie
28°
2,7°
64°
Mahony, kP=0,1 1/s
nie
23°
14°
18°
Mahony, kP=1 1/s
tak
0,36°
0,13°
1,6°
MEKF
tak
0,12°
0,13°
0,19°
Bez kompensacji żadne wzmocnienie nie jest dobre: duże ufa kłamiącemu akcelerometrowi, małe nie zdąży usunąć dryfu. Z kompensacją filtr komplementarny i MEKF dają przechylenie z dokładnością ułamka stopnia. MEKF jest jeszcze trzy razy dokładniejszy w przechyleniu i osiem razy w kursie, bo wzmocnienia dobiera z kowariancji, a bias osi pionowej szacuje i z magnetometru, i z akcelerometru w zakrętach. W MEKF trzeba przy tym pamiętać, że kompensacja używa żyroskopów: błąd biasu δbr przesuwa zmierzony pion o Vδbr/g, co trzeba wpisać do macierzy H (zadanie 5.3). Bez tego członu filtr w tej symulacji przez pierwsze kilkanaście sekund gubi orientację (błąd kursu do ok. 75∘), zanim ustali się estymata biasu, a potem jest wyraźnie gorszy (RMS kursu 2,6∘ zamiast 0,19∘).
Zadania · część 5
3 zadania · ok. 30 min
Zakręt skoordynowany z przechyleniem 30∘ przy 55 m/s. Policz prędkość zmiany kursu ψ˙=gtanφ/V, promień zakrętu V2/(gtanφ) i to, co pokazują akcelerometry.
Odpowiedź
ψ˙=9,81⋅0,577/55=0,103 rad/s (5,9∘/s, pełny okrąg w ok. 61 s); promień 534 m; f=[0;0;−9,81/cos30∘]=[0;0;−11,33] m/s², przeciążenie 1,155.
Wyprowadź kompensację: samolot leci z prędkością V wzdłuż osi x ciała, V stałe. Pokaż, że przyspieszenie w osiach ciała to V[0;r;−q].
Odpowiedź
vn=R[V;0;0], więc an=R˙[V;0;0]=R[ω]×[V;0;0]=R(ω×Vex). W osiach ciała: V(p,q,r)×(1,0,0)=V[0;r;−q]. Przy niezerowym kącie natarcia i ślizgu trzeba użyć pełnego wektora prędkości w osiach ciała.
Żyroskop odchylania ma bias 0,4∘/s. Jaki błąd przechylenia wprowadza kompensacja przy 55 m/s? Jak to wpisać do macierzy H w MEKF?
Odpowiedź
Błąd kompensacji Vδbr=55⋅0,007=0,38 m/s² w osi y, czyli przechylenie błędne o arctan(0,38/9,81)=2,2∘. Pomiar pionu y=−fc/g (bez normalizacji; po normalizacji trzeba by jeszcze odrzucić składową wzdłuż y^) zależy więc od błędu biasu: ∂y/∂δb=gV00000−1010, i to jest prawy blok H dla akcelerometru zamiast zer.
6 Metoda i przykłady rozwiązane
Metoda: projekt AHRS
Modele czujników w osiach ciała; skalibruj magnetometr (przesunięcie od żelaza twardego, macierz od miękkiego) i osie akcelerometrów.
Inicjalizacja na postoju: przechylenie i pochylenie z akcelerometrów, kurs z magnetometru z kompensacją.
Propagacja kwaternionu żyroskopami z odjętym biasem, dokładny krok obrotu, normalizacja.
Korekta: pion z akcelerometrów (z kompensacją przyspieszenia lub bramkowaniem), kurs z magnetometru (tylko obrót wokół pionu); Mahony albo MEKF.
Sprawdzenie: długi zakręt, pętla, przejście przez pion, zakłócenie magnetyczne; błędy porównaj z kowariancją.
Przykład 6.1 Przechylenie i pochylenie z akcelerometrów
Samolot stoi na płycie. Akcelerometry: f=[1,70;−0,85;−9,63] m/s². Wyznacz przechylenie i pochylenie.
Wynik: nos w górę o 10∘, prawe skrzydło niżej o 5∘.
Sprawdzenie:∣f∣=9,816≈g: samolot rzeczywiście nie przyspiesza, więc wzory obowiązują ✓.
Przykład 6.2 Kurs z magnetometru przy przechyleniu
Samolot: kurs 60∘, pochylenie 10∘, przechylenie 20∘. Pole magnetyczne o nachyleniu 67∘ (bez deklinacji), znormalizowane. Policz kurs z magnetometru bez kompensacji i z kompensacją.
Bn=[cos67∘;0;sin67∘]=[0,391;0;0,921], m=RTBn=[0,033;0,004;0,9995]. Pole w osiach ciała jest prawie dokładnie wzdłuż osi z.
Bez kompensacji: ψ=atan2(−0,004;0,033)=−6,4∘.
Z kompensacją: mh=Ry(10∘)Rx(20∘)m=[0,195;−0,338;0,921], ψ=atan2(0,338;0,195)=60,0∘.
Wynik: bez kompensacji błąd 66∘, z kompensacją zero.
Sprawdzenie: składowa pionowa mh to 0,921=sin67∘ ✓, pozioma 0,1952+0,3382=0,391=cos67∘ ✓.
Przykład 6.3 Kompensacja w zakręcie
Zakręt skoordynowany z przechyleniem 30∘ przy 55 m/s, lot poziomy. Pokaż, że po kompensacji akcelerometr daje poprawne przechylenie.
ψ˙=0,103 rad/s; prędkości kątowe w osiach ciała: q=ψ˙sinφ=0,0515, r=ψ˙cosφ=0,0892 rad/s.
Akcelerometry: f=[0;0;−11,33]; wzór z części 2 daje φ=0.
Wynik: po odjęciu przyspieszenia dośrodkowego zostaje sama grawitacja, ∣fc∣=9,81, i poprawne przechylenie.
Sprawdzenie: to dokładnie składowe −g w osiach ciała przy φ=30∘: −g[0;sin30∘;cos30∘] ✓.
7 Błędne intuicje, których trzeba się oduczyć
„Akcelerometr wskazuje pion.”
Wskazuje kierunek siły właściwej. Pion tylko wtedy, gdy samolot nie przyspiesza. W zakręcie skoordynowanym wskazuje „pion samolotu”, a nie pion Ziemi.
„Magnetometr to kompas, więc daje kurs.”
Daje wektor pola w osiach ciała, prawie pionowy na naszych szerokościach. Kurs wychodzi dopiero po sprowadzeniu wektora do poziomu, czyli po znajomości przechylenia i pochylenia.
„Filtr Kalmana dla kwaternionu to zwykły EKF z czterema stanami.”
Taki filtr ma osobliwą kowariancję i łamie więz ∣q∣=1. Poprawny jest filtr błędu (MEKF) z trzema składowymi błędu orientacji.
„Wystarczy zmniejszyć zaufanie do akcelerometru i zakręty przestaną szkodzić.”
Mniejsze wzmocnienie zmniejsza błąd w zakręcie, ale wydłuża usuwanie dryfu i uczenie się biasu. Bez kompensacji przyspieszenia albo bramkowania nie ma dobrego kompromisu.
„MEKF jest zawsze lepszy od filtru komplementarnego.”
Przy dobrze dobranych wzmocnieniach różnica w przechyleniu i pochyleniu jest mała. MEKF wygrywa tam, gdzie obserwowalność zmienia się w czasie (bias osi pionowej), i daje kowariancję, czyli ocenę własnej wiarygodności.
8 Zadania do przemyślenia
Te zadania wymagają więcej myślenia niż liczenia.
Zadania do przemyślenia
5 zadań · ok. 1,5 godziny
Złudzenie w chmurach. Pilot w chmurach powoli wchodzi w zakręt z rosnącym przechyleniem. Błędnik działa jak akcelerometr z bardzo małym wzmocnieniem korekty plus „żyroskop” (kanały półkoliste), który nie czuje powolnych obrotów. Co pilot czuje i dlaczego to prowadzi do tzw. spirali śmierci?
Rozwiązanie
Powolne przechylanie jest poniżej progu kanałów półkolistych, a „akcelerometr” błędnika pokazuje pion samolotu. Pilot czuje lot prosto, mimo przechylenia.
Samolot w przechyleniu bez zwiększenia ciągu i kąta natarcia traci wysokość; pilot widzi spadek wysokości i ciągnie drążek, co przy przechyleniu zacieśnia zakręt. Spirala przyspiesza. Jedyną obroną jest zaufanie przyrządom, czyli sztucznemu horyzontowi z prawidłową fuzją.
Bramkowanie. Zaproponuj regułę: kiedy i jak bardzo osłabiać korektę akcelerometrem. Jakie dwie wielkości są łatwo dostępne i dlaczego żadna sama nie wystarczy?
Rozwiązanie
∣f∣−g i ∣ω∣. Np. ka=k0exp(−(∣f∣−g)2/σf2), dodatkowo zero, gdy ∣ω∣ przekracza próg.
Sam ∣f∣ zawodzi przy łagodnych zakrętach (n=1,02 przy 11∘) i przy przyspieszaniu wzdłuż kadłuba, gdzie ∣f∣ prawie się nie zmienia, a kierunek tak. Sama ∣ω∣ zawodzi w długim ustalonym zakręcie (mała prędkość kątowa, stały błąd). Dlatego najlepsza jest kompensacja z prędkością lotu.
Filtry działają na kwaternionie i wektorach, nie na kątach, więc nie mają osobliwości. Kąty Eulera liczy się tylko do wyświetlenia.
Wzory z części 2 (atan2 i obroty Ry(θ)Rx(φ)) są w kątach Eulera: przy θ=±90∘ przechylenie i kurs stają się nieokreślone. Inicjalizację na postoju robi się tymi wzorami, ale korekta w locie musi być wektorowa, jak w filtrze Mahony’ego.
Kalibracja magnetometru. Magnetometr w kokpicie pokazuje mm=ARTBn+c, gdzie c to stałe pole od namagnesowanych części (żelazo twarde), a A to zniekształcenie od miękkich materiałów magnetycznych. Jak wyznaczyć c, obracając samolot (albo czujnik) we wszystkich kierunkach?
Rozwiązanie
Przy A=I punkty mm leżą na sferze o środku c i promieniu ∣B∣. Środek sfery dopasowanej metodą najmniejszych kwadratów (lekcja o dopasowaniu w matematyce) to c.
Przy A=I punkty leżą na elipsoidzie; dopasowanie elipsoidy daje i c, i A (z dokładnością do obrotu). To robi procedura „kompensacji kompasu” w aplikacjach naziemnych dronów.
Inicjalizacja w locie. AHRS zrestartował się w zakręcie. Jakim kątem przechylenia się zainicjalizuje i jak szybko filtr Mahony’ego z kompensacją dojdzie do prawdy? A bez kompensacji?
Rozwiązanie
Wzory statyczne bez kompensacji dają przechylenie 0° (zakręt skoordynowany). Z kompensacją (prędkości kątowe są dostępne od razu z żyroskopów) da się zainicjalizować poprawnie.
Jeśli start był błędny, filtr z kompensacją zbiega w czasie kilku 1/kP. Bez kompensacji pozostanie przy błędzie aż do końca zakrętu, a po wyprostowaniu skrzydeł wróci do prawdy z czasem 1/kP. Po restarcie w chmurach to bardzo niebezpieczne kilkadziesiąt sekund.
9 Sprawdź się
Odpowiedz w myślach, zanim rozwiniesz odpowiedź.
1 Co mierzy akcelerometr?
Siłę właściwą f=RT(an−gn): przyspieszenie minus grawitacja, w osiach ciała.
2 Jak policzyć przechylenie i pochylenie z akcelerometru?
φ=atan2(−fy,−fz), θ=atan2(fx,fy2+fz2), tylko gdy samolot nie przyspiesza.
3 Po co kompensacja przechylenia magnetometru?
Pole Ziemi jest prawie pionowe; kurs wynika z jego składowej poziomej, więc trzeba je najpierw sprowadzić do poziomu.
4 Jak filtr Mahony’ego mierzy błąd orientacji?
Iloczynem wektorowym kierunku zmierzonego i przewidywanego: oś i sinus kąta błędu. Korekta PI dodana do prędkości kątowej.
5 Czym MEKF różni się od zwykłego EKF?
Szacuje mały błąd orientacji (3 składowe) wokół estymaty, wciela go mnożeniem kwaternionów i zeruje; macierz pomiaru H=[y^]×.
6 Co pokazuje akcelerometr w zakręcie skoordynowanym i jak to naprawić?
Przechylenie 0° i przeciążenie 1/cosφ. Naprawa: odjąć V[0;r;−q] (kompensacja z prędkością lotu) albo bramkować korektę.
Obowiązkowo: R. Mahony, T. Hamel, J.-M. Pflimlin, „Nonlinear complementary filters on the special orthogonal group”, IEEE Trans. Automatic Control 53 (2008), części o filtrze „pasywnym” i z biasem.
Dla chętnych: F. L. Markley, J. L. Crassidis, Fundamentals of Spacecraft Attitude Determination and Control, rozdz. 6.2 (MEKF w wersji satelitarnej, z gwiazdami zamiast akcelerometru); E. J. Lefferts, F. L. Markley, M. D. Shuster, „Kalman filtering for spacecraft attitude estimation” (1982).
Część I jest zamknięta: umiemy opisać orientację, policzyć jej zmiany z momentów sił i oszacować ją z czujników. Teraz potrzebujemy momentów. W części II wchodzi aerodynamika: dlaczego samolot w ogóle leci nosem do przodu, a nie koziołkuje, i co robi z nim ogon. Zaczniemy od statyki, jak u Palletta i Newmana: zanim zapytamy, jak samolot się porusza, zapytamy, czy po zaburzeniu w ogóle chce wrócić.