Matematyka i fizyka od podstaw
PLEN

Dynamika lotu › I. Orientacja i bryła sztywna w 3D › 1 szkic · PDF do druku

Zanim zaczniesz Matematyka 2.2 Przekształcenia liniowe: obroty, zmiana bazy, transformacja LorentzaMatematyka 2.3 Wartości i wektory własneFizyka 4 Ruch obrotowy i bryła sztywna

Nowe pojęcia w tej lekcji (2)

kwaternion jednostkowykąty Eulera (odchylenie, pochylenie, przechylenie)

Dynamika lotu 1

Orientacja w 3D: macierz obrotu, kąty Eulera, oś i kąt, kwaterniony

Pozycję samolotu opisują trzy liczby i nikt się nad tym nie zastanawia. Z orientacją jest gorzej: trzy kąty, którymi posługuje się pilot, w pewnym położeniu przestają działać, a obrotów nie da się dodawać jak wektorów. Ta lekcja zestawia cztery sposoby zapisu orientacji, pokazuje, gdzie każdy z nich się psuje, i kończy na tym, którego używa prawie każdy kontroler lotu, od drona po stację kosmiczną: kwaternionie. To czysta kinematyka. Siły i momenty, które orientację zmieniają, przyjdą w następnej lekcji.

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
H. Schaub, J. L. Junkins, Analytical Mechanics of Aerospace Systems, rozdz. 3.1–3.4; F. L. Markley, J. L. Crassidis, Fundamentals of Spacecraft Attitude Determination and Control, rozdz. 2.7–2.9 i 3.1–3.2

0 Prolog: czwarty przegub na Gwiazdkę

Statek Apollo wiedział, jak jest zorientowany, dzięki platformie żyroskopowej zawieszonej w trzech pierścieniach kardanowych. Platforma trzymała stały kierunek w przestrzeni, a kąty między pierścieniami odczytywane z czujników to były wprost trzy kąty orientacji statku. Inżynierowie wiedzieli, że przy jednym ustawieniu dwa pierścienie układają się w jednej płaszczyźnie i platforma traci jeden stopień swobody. Zamiast dodawać czwarty pierścień, woleli prostszy i lżejszy układ z ostrzeżeniem: komputer sygnalizował zbliżanie się do tego położenia, a dalej zamrażał platformę i trzeba ją było ustawiać na nowo według gwiazd. Michael Collins, który w czasie pobytu modułu księżycowego Apollo 11 na Księżycu krążył samotnie po orbicie i sam pilnował orientacji statku, zażartował w rozmowie z Houston, czy ktoś nie przysłałby mu czwartego przegubu na Gwiazdkę.

Ta sama osobliwość siedzi w trzech kątach, którymi opisujemy orientację samolotu na co dzień. Nie jest wadą konkretnego urządzenia, tylko geometrii: żaden zapis orientacji trzema liczbami nie działa wszędzie. Dlatego kontrolery lotu liczą na czterech liczbach.

Pytanie na start. Obracasz książkę o 90∘90^\circ wokół osi północ–południe, a potem o 90∘90^\circ wokół pionu. Czy da się ją przeprowadzić z położenia wyjściowego do końcowego jednym obrotem? Jeśli tak, wokół jakiej osi i o jaki kąt? Odpowiedź w części 3 i w przykładzie 6.2.

1 Układy odniesienia i macierz orientacji

Potrzebujemy dwóch układów osi.

  • Układ nawigacyjny NED (ang. north, east, down): oś xx na północ, yy na wschód, zz w dół. Przy lotach blisko Ziemi i na krótkich odcinkach traktujemy go jak układ inercjalny. Oś zz w dół wygląda dziwnie, ale ma zalety: wysokość to −z-z, a dodatni kąt pochylenia oznacza nos do góry.
  • Układ ciała, sztywno związany z samolotem: xx do przodu przez nos, yy wzdłuż prawego skrzydła, zz w dół przez podłogę kabiny. Prędkość kątową samolotu zapisujemy w tych osiach jako ω=(p,q,r)\boldsymbol\omega = (p, q, r): przechylanie, pochylanie, odchylanie. To mierzą żyroskopy przykręcone do kadłuba.

Orientacja to położenie układu ciała względem układu nawigacyjnego. Najpełniejszy jej opis to macierz, która przelicza składowe dowolnego wektora z osi ciała na osie NED. W lekcji 2.2 Przekształcenia liniowe: obroty, zmiana bazy, transformacja Lorentza widzieliśmy, że macierz przekształcenia ma w kolumnach obrazy wektorów bazy. Tu oznacza to coś bardzo konkretnego:

Macierz orientacji (macierz kosinusów kierunkowych)

vn=R vb,R=[xbnybnzbn],RTR=I,det⁡R=1.\mathbf v^{n} = R\,\mathbf v^{b},\qquad R = \begin{bmatrix} \mathbf x_b^{n} & \mathbf y_b^{n} & \mathbf z_b^{n}\end{bmatrix},\qquad R^{\mathsf T}R = I,\quad \det R = 1 .

Kolumny RR to osie samolotu zapisane w osiach NED. Pierwsza kolumna mówi, gdzie wskazuje nos. Przeliczenie w drugą stronę to transpozycja: vb=RTvn\mathbf v^{b} = R^{\mathsf T}\mathbf v^{n}.

Każdy element RijR_{ij} to iloczyn skalarny dwóch wektorów jednostkowych, czyli kosinus kąta między osią ii układu NED a osią jj układu ciała. Stąd druga nazwa: macierz kosinusów kierunkowych (ang. direction cosine matrix, DCM).

Macierz ma 9 liczb, ale nie są niezależne. Warunek RTR=IR^{\mathsf T}R = I to 6 równań (trzy kolumny mają długość 1, trzy pary kolumn są prostopadłe). Zostają 3 stopnie swobody, tyle co w intuicji: orientację wyznaczają trzy liczby. Macierz jest zapisem nadmiarowym, ale bez żadnych osobliwości i z prostym składaniem: obrót R1R_1, a po nim obrót R2R_2 (oba opisane w osiach stałych) to R2R1R_2R_1.

Zadania · część 1

3 zadania · ok. 20 min

  1. Pierwsza kolumna macierzy orientacji samolotu to [0,814; 0,470; −0,342][0{,}814;\ 0{,}470;\ -0{,}342]. W którą stronę świata leci samolot i czy nos jest uniesiony?

    Odpowiedź

    Nos wskazuje na północny wschód (azymut atan2⁡(0,470; 0,814)=30∘\operatorname{atan2}(0{,}470;\ 0{,}814) = 30^\circ) i do góry, bo składowa „w dół” jest ujemna: arcsin⁡0,342=20∘\arcsin 0{,}342 = 20^\circ nad poziomem.

  2. Ile niezależnych równań daje warunek RTR=IR^{\mathsf T}R = I dla macierzy 3×33\times 3? Dlaczego nie 9?

    Odpowiedź

    6. Macierz RTRR^{\mathsf T}R jest symetryczna, więc równania pod przekątną powtarzają te nad nią: 3 na przekątnej (długości kolumn) i 3 nad nią (prostopadłość par). Zostaje 9−6=39 - 6 = 3 stopnie swobody.

  3. W osiach NED przyspieszenie grawitacyjne to [0; 0; g][0;\ 0;\ g]. Jakie składowe ma w osiach ciała? Policz dla pochylenia 20∘20^\circ i przechylenia 10∘10^\circ (macierz z przykładu 6.1, trzeci wiersz [−0,342; 0,163; 0,925][-0{,}342;\ 0{,}163;\ 0{,}925]).

    Odpowiedź

    gb=RT[0;0;g]\mathbf g^b = R^{\mathsf T}[0;0;g] to gg razy trzecia kolumna RTR^{\mathsf T}, czyli trzeci wiersz RR: g [−0,342; 0,163; 0,925]g\,[-0{,}342;\ 0{,}163;\ 0{,}925]. Ogólnie g [−sin⁡θ; sin⁡φcos⁡θ; cos⁡φcos⁡θ]g\,[-\sin\theta;\ \sin\varphi\cos\theta;\ \cos\varphi\cos\theta]. Ten wzór zobaczymy jeszcze raz w lekcji 3 Fuzja czujników w 3D: estymacja orientacji na kwaternionach: z niego akcelerometr „wie”, gdzie jest dół.

2 Kąty Eulera i blokada przegubu

Pilot nie myśli macierzą. Myśli trzema kątami: kurs, pochylenie, przechylenie. W lotnictwie to kąty Eulera w kolejności 3-2-1 (oś zz, potem yy, potem xx). Zaczynamy od samolotu ustawionego osiami zgodnie z NED i obracamy go kolejno:

  1. o kąt odchylenia ψ\psi wokół pionu (kurs);
  2. o kąt pochylenia θ\theta wokół nowej osi skrzydeł;
  3. o kąt przechylenia φ\varphi wokół nowej osi nosa.

Kąty Eulera 3-2-1 (odchylenie, pochylenie, przechylenie)

R=Rz(ψ) Ry(θ) Rx(φ)=[cθcψsφsθcψ−cφsψcφsθcψ+sφsψcθsψsφsθsψ+cφcψcφsθsψ−sφcψ−sθsφcθcφcθ]R = R_z(\psi)\,R_y(\theta)\,R_x(\varphi) = \begin{bmatrix} c_\theta c_\psi & s_\varphi s_\theta c_\psi - c_\varphi s_\psi & c_\varphi s_\theta c_\psi + s_\varphi s_\psi\\ c_\theta s_\psi & s_\varphi s_\theta s_\psi + c_\varphi c_\psi & c_\varphi s_\theta s_\psi - s_\varphi c_\psi\\ -s_\theta & s_\varphi c_\theta & c_\varphi c_\theta \end{bmatrix}

(cθ=cos⁡θc_\theta = \cos\theta, sθ=sin⁡θs_\theta = \sin\theta itd.) Kąty z macierzy: θ=−arcsin⁡R31\theta = -\arcsin R_{31},   φ=atan2⁡(R32,R33)\;\varphi = \operatorname{atan2}(R_{32}, R_{33}),   ψ=atan2⁡(R21,R11)\;\psi = \operatorname{atan2}(R_{21}, R_{11}). Zakresy: ψ,φ∈(−180∘,180∘]\psi, \varphi \in (-180^\circ, 180^\circ], θ∈[−90∘,90∘]\theta \in [-90^\circ, 90^\circ].

Dlaczego macierze w tej kolejności? Obroty „wokół nowych osi” można zastąpić obrotami wokół osi stałych wykonanymi w odwrotnej kolejności: najpierw φ\varphi wokół xx, potem θ\theta wokół yy, na końcu ψ\psi wokół zz, wszystkie wokół osi NED. Obrót wykonany jako pierwszy stoi w iloczynie po prawej, stąd RzRyRxR_zR_yR_x. Tę zamianę warto sprawdzić samemu na dwóch obrotach o 90∘90^\circ (zadanie 2.1).

Gdzie się psuje? Przy θ=±90∘\theta = \pm 90^\circ nos wskazuje pion, czyli oś pierwszego obrotu (ψ\psi) i oś ostatniego (φ\varphi) się pokrywają. Zmiana ψ\psi i zmiana φ\varphi dają wtedy ten sam obrót wokół pionu, a macierz zależy tylko od różnicy ψ−φ\psi - \varphi (zadanie 2.2). Mamy trzy liczby, ale tylko dwa niezależne kierunki obrotu. To jest blokada przegubu (ang. gimbal lock). W platformie Apollo trzy kąty były fizycznymi kątami pierścieni, więc blokada oznaczała prawdziwą utratę stopnia swobody mechanizmu. W komputerze nic się nie blokuje, ale wzory na pochodne kątów dzielą przez cos⁡θ\cos\theta (część 5).

Symulacja 1 Samolot ustawiony kątami Eulera, z trzema osiami, wokół których te kąty obracają. Pełna oś to pion (oś ψ\psi), przerywane to oś skrzydeł po odchyleniu (oś θ\theta) i oś nosa (oś φ\varphi). Ustaw θ=90∘\theta = 90^\circ i porównaj działanie suwaków ψ\psi i φ\varphi.

Zadania · część 2

4 zadania · ok. 35 min

  1. Sprawdź na książce albo telefonie: obrót o 90∘90^\circ wokół osi zz, a potem o 90∘90^\circ wokół nowej osi yy daje to samo położenie co obrót o 90∘90^\circ wokół stałej osi yy, a potem o 90∘90^\circ wokół stałej osi zz.

    Odpowiedź

    Tak. W macierzach oba opisy dają Rz(90∘)Ry(90∘)R_z(90^\circ)R_y(90^\circ). Obroty wokół osi związanych z ciałem składa się „od lewej do prawej” w kolejności wykonywania, wokół osi stałych „od prawej do lewej”.

  2. Wstaw θ=90∘\theta = 90^\circ do macierzy z ramki i pokaż, że zależy ona tylko od ψ−φ\psi - \varphi.

    Odpowiedź

    cθ=0c_\theta = 0, sθ=1s_\theta = 1: R=[0sφcψ−cφsψcφcψ+sφsψ0sφsψ+cφcψcφsψ−sφcψ−100]=[0sin⁡(φ−ψ)cos⁡(φ−ψ)0cos⁡(φ−ψ)−sin⁡(φ−ψ)−100]R = \begin{bmatrix} 0 & s_\varphi c_\psi - c_\varphi s_\psi & c_\varphi c_\psi + s_\varphi s_\psi\\ 0 & s_\varphi s_\psi + c_\varphi c_\psi & c_\varphi s_\psi - s_\varphi c_\psi\\ -1 & 0 & 0\end{bmatrix} = \begin{bmatrix} 0 & \sin(\varphi - \psi) & \cos(\varphi - \psi)\\ 0 & \cos(\varphi - \psi) & -\sin(\varphi - \psi)\\ -1 & 0 & 0\end{bmatrix}. Np. (ψ,φ)=(40∘,10∘)(\psi, \varphi) = (40^\circ, 10^\circ) i (50∘,20∘)(50^\circ, 20^\circ) dają tę samą macierz. Kąty Eulera nie są tu jednoznaczne.

  3. Odczytaj kąty Eulera z macierzy R=[0−10100001]R = \begin{bmatrix} 0 & -1 & 0\\ 1 & 0 & 0\\ 0 & 0 & 1\end{bmatrix}.

    Odpowiedź

    θ=−arcsin⁡0=0\theta = -\arcsin 0 = 0, φ=atan2⁡(0,1)=0\varphi = \operatorname{atan2}(0, 1) = 0, ψ=atan2⁡(1,0)=90∘\psi = \operatorname{atan2}(1, 0) = 90^\circ. Lot poziomy na wschód.

  4. Samolot jest w ustalonym zakręcie: przechylenie φ=30∘\varphi = 30^\circ, pochylenie 00, kurs zmienia się o ψ˙=0,1\dot\psi = 0{,}1 rad/s. Jakie prędkości kątowe p,q,rp, q, r mierzą żyroskopy na kadłubie? (Wzory na p,q,rp, q, r w części 5.)

    Odpowiedź

    p=φ˙−ψ˙sin⁡θ=0p = \dot\varphi - \dot\psi\sin\theta = 0,   q=θ˙cos⁡φ+ψ˙cos⁡θsin⁡φ=0,05\;q = \dot\theta\cos\varphi + \dot\psi\cos\theta\sin\varphi = 0{,}05 rad/s,   r=−θ˙sin⁡φ+ψ˙cos⁡θcos⁡φ=0,087\;r = -\dot\theta\sin\varphi + \dot\psi\cos\theta\cos\varphi = 0{,}087 rad/s. Obrót wokół pionu widziany z przechylonego samolotu rozkłada się na pochylanie i odchylanie. Dlatego w zakręcie trzeba ściągnąć drążek: samolot musi się stale pochylać w swoich osiach.

3 Twierdzenie Eulera: oś i kąt

Euler udowodnił w 1775 roku coś, co wcale nie jest oczywiste: każdą zmianę orientacji bryły można wykonać jednym obrotem wokół pewnej osi. Niezależnie od tego, ile obrotów i w jakiej kolejności wykonaliśmy po drodze. Dowód jest krótki, jeśli znamy wartości własne (lekcja 2.3 Wartości i wektory własne).

  • RR zachowuje długości, więc każda wartość własna ma moduł 1: ∣λ∣=1|\lambda| = 1.
  • Wielomian charakterystyczny jest stopnia 3 o współczynnikach rzeczywistych, więc ma co najmniej jeden pierwiastek rzeczywisty, a zespolone występują w parach sprzężonych.
  • Iloczyn wartości własnych to det⁡R=1\det R = 1. Możliwości: {1,eiα,e−iα}\{1, e^{i\alpha}, e^{-i\alpha}\} albo {1,−1,−1}\{1, -1, -1\} (to drugie to szczególny przypadek α=180∘\alpha = 180^\circ). W obu jest λ=1\lambda = 1.
  • Wektor własny n\mathbf n dla λ=1\lambda = 1 spełnia Rn=nR\mathbf n = \mathbf n: ten kierunek nie zmienia się przy obrocie. To oś obrotu. W płaszczyźnie prostopadłej do niej RR działa jak obrót płaski o kąt α\alpha.

Oś i kąt (wzór Rodriguesa)

R=I+sin⁡α [n]×+(1−cos⁡α) [n]×2,[n]×=[0−n3n2n30−n1−n2n10].R = I + \sin\alpha\,[\mathbf n]_\times + (1 - \cos\alpha)\,[\mathbf n]_\times^2,\qquad [\mathbf n]_\times = \begin{bmatrix} 0 & -n_3 & n_2\\ n_3 & 0 & -n_1\\ -n_2 & n_1 & 0\end{bmatrix} .

W drugą stronę: tr⁡R=1+2cos⁡α\operatorname{tr}R = 1 + 2\cos\alpha, a dla 0<α<180∘0 < \alpha < 180^\circ:   n=12sin⁡α [R32−R23; R13−R31; R21−R12]\;\mathbf n = \dfrac{1}{2\sin\alpha}\,[R_{32} - R_{23};\ R_{13} - R_{31};\ R_{21} - R_{12}].

Macierz [n]×[\mathbf n]_\times zapisuje iloczyn wektorowy: [n]×v=n×v[\mathbf n]_\times\mathbf v = \mathbf n\times\mathbf v. Wzór Rodriguesa rozkłada wektor na część wzdłuż osi (nie zmienia się) i część prostopadłą (obraca się o α\alpha w płaszczyźnie). Ślad wynika wprost z wartości własnych: 1+eiα+e−iα=1+2cos⁡α1 + e^{i\alpha} + e^{-i\alpha} = 1 + 2\cos\alpha.

Oś i kąt to cztery liczby z jednym więzem (∣n∣=1|\mathbf n| = 1) albo trzy, jeśli zapiszemy je jako jeden wektor αn\alpha\mathbf n (wektor obrotu). Ten zapis jest najbardziej naturalny dla człowieka, ale ma kłopoty: przy α=0\alpha = 0 oś jest nieokreślona, a przy α=180∘\alpha = 180^\circ wektory αn\alpha\mathbf n i −αn-\alpha\mathbf n dają tę samą orientację. Składanie dwóch obrotów w tym zapisie jest uciążliwe. Wszystkie te kłopoty usuwa jedna sztuczka: zamiast kąta używać połowy kąta.

Zadania · część 3

3 zadania · ok. 30 min

  1. Ślad macierzy orientacji wynosi 2,62. O jaki kąt trzeba obrócić samolot jednym obrotem, żeby przejść do tej orientacji z położenia zerowego?

    Odpowiedź

    cos⁡α=(2,62−1)/2=0,81\cos\alpha = (2{,}62 - 1)/2 = 0{,}81, α=35,9∘\alpha = 35{,}9^\circ (dokładnie, dla macierzy z przykładu 6.1: 35,8∘35{,}8^\circ).

  2. Znajdź oś i kąt dla R=Rx(90∘) Rz(90∘)R = R_x(90^\circ)\,R_z(90^\circ) (najpierw 90∘90^\circ wokół stałej osi zz, potem wokół stałej osi xx).

    Odpowiedź

    R=[0−1000−1100]R = \begin{bmatrix} 0 & -1 & 0\\ 0 & 0 & -1\\ 1 & 0 & 0\end{bmatrix}, tr⁡R=0\operatorname{tr}R = 0, więc cos⁡α=−12\cos\alpha = -\tfrac12, α=120∘\alpha = 120^\circ. n=12⋅0,866[0−(−1); 0−1; 0−(−1)]=[1; −1; 1]/3\mathbf n = \frac{1}{2\cdot 0{,}866}[0 - (-1);\ 0 - 1;\ 0 - (-1)] = [1;\ -1;\ 1]/\sqrt3. Odwrotna kolejność (przykład 6.2) daje inną oś, [1;1;1]/3[1;1;1]/\sqrt3: obroty nie są przemienne.

  3. Dlaczego wzór na n\mathbf n z ramki zawodzi przy α=180∘\alpha = 180^\circ? Jak wtedy znaleźć oś?

    Odpowiedź

    sin⁡α=0\sin\alpha = 0 i RR jest symetryczna, więc licznik i mianownik są zerowe. Przy α=180∘\alpha = 180^\circ wzór Rodriguesa daje R=I+2[n]×2=2nnT−IR = I + 2[\mathbf n]_\times^2 = 2\mathbf n\mathbf n^{\mathsf T} - I, więc nnT=(R+I)/2\mathbf n\mathbf n^{\mathsf T} = (R + I)/2: każda niezerowa kolumna R+IR + I jest równoległa do osi. To samo pokazuje wektor własny dla λ=1\lambda = 1.

4 Kwaterniony

Hamilton przez lata szukał liczb, które robią w przestrzeni to, co liczby zespolone robią na płaszczyźnie (lekcja 1.7 Liczby zespolone i fazory: obrót o θ\theta to mnożenie przez eiθe^{i\theta}). Znalazł je w 1843 roku, w czterech wymiarach: q=q0+q1i+q2j+q3kq = q_0 + q_1\mathbf i + q_2\mathbf j + q_3\mathbf k, gdzie i2=j2=k2=ijk=−1\mathbf i^2 = \mathbf j^2 = \mathbf k^2 = \mathbf{ijk} = -1. Dla nas wygodniejszy jest zapis „skalar plus wektor”: q=(q0,q)q = (q_0, \mathbf q).

Kwaternion jednostkowy jako obrót

q=(cos⁡α2, nsin⁡α2),q02+∣q∣2=1.q = \left(\cos\tfrac{\alpha}{2},\ \mathbf n\sin\tfrac{\alpha}{2}\right),\qquad q_0^2 + |\mathbf q|^2 = 1 .

Iloczyn:   p⊗q=(p0q0−p⋅q,  p0q+q0p+p×q)\;p\otimes q = \left(p_0q_0 - \mathbf p\cdot\mathbf q,\ \ p_0\mathbf q + q_0\mathbf p + \mathbf p\times\mathbf q\right). Sprzężenie: q∗=(q0,−q)q^* = (q_0, -\mathbf q).

Obrót wektora:   (0,vn)=q⊗(0,vb)⊗q∗\;(0, \mathbf v^n) = q\otimes(0, \mathbf v^b)\otimes q^*. Składanie (osie stałe, najpierw q1q_1, potem q2q_2):   q=q2⊗q1\;q = q_2\otimes q_1, dokładnie jak R=R2R1R = R_2R_1.

Macierz: R=[q02+q12−q22−q322(q1q2−q0q3)2(q1q3+q0q2)2(q1q2+q0q3)q02−q12+q22−q322(q2q3−q0q1)2(q1q3−q0q2)2(q2q3+q0q1)q02−q12−q22+q32]R = \begin{bmatrix} q_0^2 + q_1^2 - q_2^2 - q_3^2 & 2(q_1q_2 - q_0q_3) & 2(q_1q_3 + q_0q_2)\\ 2(q_1q_2 + q_0q_3) & q_0^2 - q_1^2 + q_2^2 - q_3^2 & 2(q_2q_3 - q_0q_1)\\ 2(q_1q_3 - q_0q_2) & 2(q_2q_3 + q_0q_1) & q_0^2 - q_1^2 - q_2^2 + q_3^2\end{bmatrix}.

Co zyskujemy?

  • Brak osobliwości. Każda orientacja ma kwaternion i każdy kwaternion jednostkowy jest orientacją. Przy α=0\alpha = 0 kwaternion to po prostu (1,0)(1, \mathbf 0), bez nieokreślonej osi.
  • Tanie składanie. Iloczyn kwaternionów to 16 mnożeń, iloczyn macierzy 27.
  • Jeden więz zamiast sześciu. Błędy numeryczne usuwa się, dzieląc przez normę.
  • Prosta kinematyka, liniowa w qq (część 5).

Ceną jest podwójne pokrycie: qq i −q-q dają tę samą macierz, bo RR jest kwadratowa w składowych qq. Obrót o 360∘360^\circ zmienia kwaternion z (1,0)(1, \mathbf 0) na (−1,0)(-1, \mathbf 0), a do wartości wyjściowej wraca on dopiero po 720∘720^\circ. To nie jest artefakt rachunku. Obrót o 360∘360^\circ i obrót o 720∘720^\circ są naprawdę różne jako drogi w przestrzeni orientacji: trzymając talerz na płasko na dłoni, możesz obrócić go dwa razy wokół pionu i wrócić z ręką w położeniu wyjściowym, a po jednym obrocie ramię zostaje skręcone (tzw. sztuczka z talerzem). W praktyce sterowania wynika z tego jedna reguła: przed porównaniem dwóch kwaternionów wybierz znak tak, żeby q0≥0q_0 \ge 0, bo inaczej regulator „obróci samolot naokoło” o prawie 360∘360^\circ (więcej w kursie astronautyki, przy sterowaniu orientacją satelity).

Symulacja 2 Wybierz oś obrotu i kąt. Rysunek 3D: samolot obrócony wokół tej osi (blady: położenie wyjściowe, czerwona linia: droga nosa). Wykres: składowe kwaternionu w funkcji kąta. Porównaj kąty 120∘120^\circ i 480∘480^\circ: ta sama orientacja, przeciwne znaki kwaternionu.

Zadania · część 4

3 zadania · ok. 30 min

  1. Zapisz kwaternion obrotu o 90∘90^\circ wokół osi zz. Podnieś go do kwadratu (pomnóż przez siebie). Jaki obrót otrzymałeś?

    Odpowiedź

    q=(cos⁡45∘,0,0,sin⁡45∘)=(0,707; 0; 0; 0,707)q = (\cos 45^\circ, 0, 0, \sin 45^\circ) = (0{,}707;\ 0;\ 0;\ 0{,}707). q⊗q=(0,5−0,5, 2⋅0,707⋅0,707 k+0)=(0,0,0,1)q\otimes q = (0{,}5 - 0{,}5,\ 2\cdot 0{,}707\cdot 0{,}707\,\mathbf k + \mathbf 0) = (0, 0, 0, 1): obrót o 180∘180^\circ wokół zz, bo cos⁡90∘=0\cos 90^\circ = 0, sin⁡90∘=1\sin 90^\circ = 1.

  2. Obróć wektor v=[1;0;0]\mathbf v = [1; 0; 0] kwaternionem q=(0,707; 0; 0; 0,707)q = (0{,}707;\ 0;\ 0;\ 0{,}707) ze wzoru q⊗(0,v)⊗q∗q\otimes(0, \mathbf v)\otimes q^*.

    Odpowiedź

    q⊗(0,v)=(−0, 0,707 v+q×v)=(0; 0,707; 0,707; 0)q\otimes(0, \mathbf v) = (-0,\ 0{,}707\,\mathbf v + \mathbf q\times\mathbf v) = (0;\ 0{,}707;\ 0{,}707;\ 0) (bo k×i=j\mathbf k\times\mathbf i = \mathbf j). Mnożąc przez q∗=(0,707; 0; 0; −0,707)q^* = (0{,}707;\ 0;\ 0;\ -0{,}707): (0; 0; 1; 0)(0;\ 0;\ 1;\ 0). Wynik [0;1;0][0; 1; 0], zgodnie z obrotem o 90∘90^\circ wokół zz.

  3. Pokaż, że qq i −q-q dają tę samą macierz RR. Czy to samo jest prawdą dla wzoru q⊗(0,v)⊗q∗q\otimes(0, \mathbf v)\otimes q^*?

    Odpowiedź

    Każdy element RR to iloczyn dwóch składowych qq; zmiana znaku wszystkich składowych nie zmienia iloczynów. We wzorze z mnożeniem qq występuje dwa razy (qq i q∗q^*), więc znaki się znoszą: tak, wynik ten sam.

5 Kinematyka: jak orientacja zmienia się w czasie

Żyroskopy mierzą ω=(p,q,r)\boldsymbol\omega = (p, q, r) w osiach ciała. Żeby wiedzieć, jak samolot jest zorientowany, trzeba z nich policzyć zmianę orientacji i scałkować. Jak zależy od ω\boldsymbol\omega pochodna każdego z zapisów?

Kinematyka orientacji (ω\boldsymbol\omega w osiach ciała)

Macierz:   R˙=R [ω]×\;\dot R = R\,[\boldsymbol\omega]_\times.

Kwaternion:   q˙=12 q⊗(0,ω)\;\dot q = \tfrac12\,q\otimes(0, \boldsymbol\omega).

Kąty Eulera 3-2-1:

φ˙=p+(qsin⁡φ+rcos⁡φ)tan⁡θ,θ˙=qcos⁡φ−rsin⁡φ,ψ˙=qsin⁡φ+rcos⁡φcos⁡θ.\dot\varphi = p + (q\sin\varphi + r\cos\varphi)\tan\theta,\qquad \dot\theta = q\cos\varphi - r\sin\varphi,\qquad \dot\psi = \frac{q\sin\varphi + r\cos\varphi}{\cos\theta} .

Odwrotnie: p=φ˙−ψ˙sin⁡θp = \dot\varphi - \dot\psi\sin\theta,   q=θ˙cos⁡φ+ψ˙cos⁡θsin⁡φ\;q = \dot\theta\cos\varphi + \dot\psi\cos\theta\sin\varphi,   r=−θ˙sin⁡φ+ψ˙cos⁡θcos⁡φ\;r = -\dot\theta\sin\varphi + \dot\psi\cos\theta\cos\varphi.

Skąd wzór na R˙\dot R? Wektor v\mathbf v przyklejony do samolotu ma stałe składowe w osiach ciała, a w osiach NED zmienia się jak punkt bryły obracającej się z prędkością ω\boldsymbol\omega: v˙n=ωn×vn\dot{\mathbf v}^n = \boldsymbol\omega^n\times\mathbf v^n (lekcja Dział 4: Ruch obrotowy i bryła sztywna). Wstawiając vn=Rvb\mathbf v^n = R\mathbf v^b i ωn=Rωb\boldsymbol\omega^n = R\boldsymbol\omega^b, dostajemy R˙vb=R(ωb×vb)\dot R\mathbf v^b = R(\boldsymbol\omega^b\times\mathbf v^b) dla każdego vb\mathbf v^b.

Porównajmy trzy wzory.

  • Kąty Eulera: nieliniowe, z cos⁡θ\cos\theta w mianowniku. Przy θ→±90∘\theta \to \pm 90^\circ pochodne ψ˙\dot\psi i φ˙\dot\varphi rosną bez ograniczeń, nawet gdy samolot obraca się powoli. Np. przy θ=85∘\theta = 85^\circ i powolnym odchylaniu r=0,1r = 0{,}1 rad/s kurs zmienia się o 66∘66^\circ/s, a przy 89∘89^\circ o 328∘328^\circ/s.
  • Macierz: liniowa w RR, bez osobliwości, ale 9 równań, a błędy całkowania psują ortogonalność. Prosty schemat Eulera z krokiem 0,01 s przy ω=(0,3; 0,5; 0,2)\boldsymbol\omega = (0{,}3;\ 0{,}5;\ 0{,}2) rad/s po minucie daje det⁡R=1,26\det R = 1{,}26: „samolot” rozciągnął się o 12% w każdym kierunku prostopadłym do ω\boldsymbol\omega (wzdłuż ω\boldsymbol\omega nie zmienił się).
  • Kwaternion: liniowy w qq, cztery równania, jeden więz łatwy do przywrócenia normalizacją. Bez normalizacji ten sam schemat odchodzi od ∣q∣=1|q| = 1 o 3%, z normalizacją błąd znika.
Symulacja 3 Samolot robi pętlę (q=0,5q = 0{,}5 rad/s) i przy okazji lekko się przechyla (pp). Prędkość kątowa w osiach ciała jest stała, więc prawdziwą orientację znamy dokładnie. Ten sam integrator (RK4, stały krok) całkuje kąty Eulera i kwaternion. Zmniejsz pp do ok. 0,005 rad/s: nos przechodzi bliżej pionu, a błąd kątów Eulera rośnie o rzędy wielkości.

Zjawisko w symulacji ma prosty opis: przy p=0,005p = 0{,}005 rad/s nos mija pion o 0,6∘0{,}6^\circ, kąty ψ\psi i φ\varphi w ułamku sekundy przeskakują o 180∘180^\circ, a ich pochodne sięgają dziesiątek radianów na sekundę. RK4 z krokiem 0,1 s robi na tym odcinku błąd kilkunastu stopni, który zostaje do końca pętli. Kwaternion przy tym samym kroku ma błąd poniżej 10−510^{-5} stopnia. Dlatego kontroler lotu całkuje kwaternion (albo macierz), a kąty Eulera liczy z niego tylko do wyświetlenia na ekranie.

Twierdzenie Stuelpnagla (1964) mówi, że tak musi być: żaden zapis orientacji trzema liczbami nie jest jednocześnie globalny (jednoznaczny dla wszystkich orientacji) i wszędzie nieosobliwy. Cztery liczby z jednym więzem to najmniejszy zapis bez osobliwości.

Zadania · część 5

2 zadania · ok. 20 min

  1. Samolot startuje z q=(1,0)q = (1, \mathbf 0) i obraca się ze stałą prędkością ω=(0,0,r)\boldsymbol\omega = (0, 0, r). Sprawdź, że q(t)=(cos⁡rt2,0,0,sin⁡rt2)q(t) = \left(\cos\frac{rt}{2}, 0, 0, \sin\frac{rt}{2}\right) spełnia równanie q˙=12q⊗(0,ω)\dot q = \tfrac12 q\otimes(0, \boldsymbol\omega).

    Odpowiedź

    q˙=r2(−sin⁡rt2,0,0,cos⁡rt2)\dot q = \frac r2\left(-\sin\frac{rt}{2}, 0, 0, \cos\frac{rt}{2}\right). Prawa strona: 12(−sin⁡rt2⋅r, cos⁡rt2 (0,0,r)+q×ω)\frac12\left(-\sin\frac{rt}{2}\cdot r,\ \cos\frac{rt}{2}\,(0, 0, r) + \mathbf q\times\boldsymbol\omega\right), a q×ω=0\mathbf q\times\boldsymbol\omega = 0, bo oba wektory leżą na osi zz. Wyniki się zgadzają.

  2. Samolot leci z pochyleniem θ=85∘\theta = 85^\circ (prawie pionowo), φ=0\varphi = 0, i powoli odchyla się z r=0,1r = 0{,}1 rad/s. Policz ψ˙\dot\psi i φ˙\dot\varphi. Co zobaczy pilot na sztucznym horyzoncie?

    Odpowiedź

    ψ˙=r/cos⁡85∘=1,15\dot\psi = r/\cos 85^\circ = 1{,}15 rad/s =66∘= 66^\circ/s,   φ˙=rtan⁡85∘=1,14\;\dot\varphi = r\tan 85^\circ = 1{,}14 rad/s. Samolot obraca się powoli (0,1 rad/s), ale kurs i przechylenie wirują. Wskaźnik kursu przy locie w pionie jest bezużyteczny, a przyrządy z mechanicznymi przegubami mogą się „rozkręcić”.

6 Metoda i przykłady rozwiązane

Metoda: praca z orientacją

  1. Ustal konwencje: osie (NED czy ENU), kierunek macierzy (ciało → NED czy odwrotnie), kolejność kątów, położenie skalara w kwaternionie. Sprawdź na obrocie o 90∘90^\circ.
  2. Licz i całkuj na kwaternionie albo macierzy; normalizuj co krok.
  3. Składaj obroty mnożeniem (R2R1R_2R_1, q2⊗q1q_2\otimes q_1); nigdy nie dodawaj kątów.
  4. Kąty Eulera licz tylko na wyjściu, dla człowieka. Pamiętaj o osobliwości przy θ=±90∘\theta = \pm 90^\circ.
  5. Sprawdzenie: RTR=IR^{\mathsf T}R = I, det⁡R=1\det R = 1, ∣q∣=1|q| = 1, tr⁡R=1+2cos⁡α=4q02−1\operatorname{tr}R = 1 + 2\cos\alpha = 4q_0^2 - 1.

Przykład 6.1 Od kątów Eulera do osi, kąta i kwaternionu

Samolot: kurs ψ=30∘\psi = 30^\circ, pochylenie θ=20∘\theta = 20^\circ, przechylenie φ=10∘\varphi = 10^\circ. Policz macierz orientacji, oś i kąt obrotu oraz kwaternion.

  1. Z ramki w części 2: R=[0,814−0,4410,3790,4700,8830,018−0,3420,1630,925]R = \begin{bmatrix} 0{,}814 & -0{,}441 & 0{,}379\\ 0{,}470 & 0{,}883 & 0{,}018\\ -0{,}342 & 0{,}163 & 0{,}925\end{bmatrix}.
  2. Ślad: 2,6222{,}622, więc cos⁡α=0,811\cos\alpha = 0{,}811, α=35,8∘\alpha = 35{,}8^\circ.
  3. Oś: n=12sin⁡α[0,163−0,018; 0,379+0,342; 0,470+0,441]=[0,124; 0,616; 0,778]\mathbf n = \frac{1}{2\sin\alpha}[0{,}163 - 0{,}018;\ 0{,}379 + 0{,}342;\ 0{,}470 + 0{,}441] = [0{,}124;\ 0{,}616;\ 0{,}778].
  4. Kwaternion: q0=cos⁡17,9∘=0,9515q_0 = \cos 17{,}9^\circ = 0{,}9515, q=sin⁡17,9∘ n=[0,038; 0,189; 0,239]\mathbf q = \sin 17{,}9^\circ\,\mathbf n = [0{,}038;\ 0{,}189;\ 0{,}239].

Wynik: q=(0,9515; 0,038; 0,189; 0,239)q = (0{,}9515;\ 0{,}038;\ 0{,}189;\ 0{,}239); jeden obrót o 35,8∘35{,}8^\circ wokół osi skierowanej głównie w dół i na wschód.

Sprawdzenie: 4q02−1=2,622=tr⁡R4q_0^2 - 1 = 2{,}622 = \operatorname{tr}R ✓. Ten sam kwaternion daje iloczyn qz(30∘)⊗qy(20∘)⊗qx(10∘)q_z(30^\circ)\otimes q_y(20^\circ)\otimes q_x(10^\circ) ✓. Uwaga: kąt 35,8∘35{,}8^\circ to nie suma 30+20+1030 + 20 + 10 ani długość wektora (30,20,10)(30, 20, 10), równa 37,437{,}4.

Przykład 6.2 Dwa obroty o 90°, jeden obrót o 120°

Pytanie z prologu: obrót o 90∘90^\circ wokół stałej osi xx, a potem o 90∘90^\circ wokół stałej osi zz. Jaki jeden obrót daje ten sam efekt?

  1. qx=(0,707; 0,707; 0; 0)q_x = (0{,}707;\ 0{,}707;\ 0;\ 0),   qz=(0,707; 0; 0; 0,707)\;q_z = (0{,}707;\ 0;\ 0;\ 0{,}707).
  2. q=qz⊗qxq = q_z\otimes q_x: skalar 0,5−0=0,50{,}5 - 0 = 0{,}5; wektor 0,707⋅(0,707;0;0)+0,707⋅(0;0;0,707)+(0;0;0,707)×(0,707;0;0)=(0,5; 0,5; 0,5)0{,}707\cdot(0{,}707;0;0) + 0{,}707\cdot(0;0;0{,}707) + (0;0;0{,}707)\times(0{,}707;0;0) = (0{,}5;\ 0{,}5;\ 0{,}5).
  3. q0=0,5=cos⁡(α/2)q_0 = 0{,}5 = \cos(\alpha/2), więc α=120∘\alpha = 120^\circ; oś ∝(0,5; 0,5; 0,5)\propto(0{,}5;\ 0{,}5;\ 0{,}5), czyli n=[1;1;1]/3\mathbf n = [1;1;1]/\sqrt3.

Wynik: jeden obrót o 120∘120^\circ wokół przekątnej sześcianu. Trzy osie układu zamieniają się cyklicznie miejscami: x→y→z→xx\to y\to z\to x.

Sprawdzenie: Rz(90∘)Rx(90∘)=[001100010]R_z(90^\circ)R_x(90^\circ) = \begin{bmatrix} 0 & 0 & 1\\ 1 & 0 & 0\\ 0 & 1 & 0\end{bmatrix} (lekcja 2.2 Przekształcenia liniowe: obroty, zmiana bazy, transformacja Lorentza), ślad 0=1+2cos⁡120∘0 = 1 + 2\cos 120^\circ ✓.

Przykład 6.3 Ile kosztuje osobliwość

W symulacji 3 samolot robi pętlę z q=0,5q = 0{,}5 rad/s i przechyla się z p=0,005p = 0{,}005 rad/s. Jak blisko pionu przechodzi nos i co dzieje się z kątami Eulera?

  1. Prędkość kątowa ω=(0,005; 0,5; 0)\boldsymbol\omega = (0{,}005;\ 0{,}5;\ 0) jest stała, więc samolot obraca się wokół jednej osi, odchylonej od osi skrzydeł o arctan⁡(0,005/0,5)=0,57∘\arctan(0{,}005/0{,}5) = 0{,}57^\circ. Nos zatacza stożek i po π/(2⋅0,5)=3,1\pi/(2\cdot 0{,}5) = 3{,}1 s mija pion właśnie o 0,57∘0{,}57^\circ.
  2. W tym miejscu cos⁡θ\cos\theta spada do 0,010{,}01, a ψ\psi i φ\varphi muszą w kilka setnych sekundy przeskoczyć o prawie 180∘180^\circ (nos przechodzi „przez biegun”). Pochodne sięgają dziesiątek rad/s; w symulacji największe ∣ψ˙∣|\dot\psi| to 40–70 rad/s, zależnie od tego, gdzie wypadają kroki.
  3. RK4 z krokiem 0,1 s nie rozdziela tego przeskoku: błąd orientacji po pętli ≈15∘\approx 15^\circ (wynik jest bardzo czuły na dokładną wartość pp); z krokiem 0,02 s ≈0,004∘\approx 0{,}004^\circ. Kwaternion: poniżej 10−510^{-5} stopnia przy obu krokach.

Wynik: kąty Eulera wymagają tym mniejszego kroku, im dokładniej samolot przechodzi przez pion. Kwaternion nie ma takiego miejsca.

Sprawdzenie: przy p=0p = 0 (pętla idealnie w płaszczyźnie) φ\varphi i ψ\psi są stale zerowe i kąty Eulera całkują się bezbłędnie; kłopot robi dopiero mała składowa „w bok” ✓.

7 Błędne intuicje, których trzeba się oduczyć

„Kąty Eulera to wektor obrotu.”
Nie da się ich dodawać ani składać po współrzędnych, a ich pochodne nie są prędkością kątową: (φ˙,θ˙,ψ˙)≠(p,q,r)(\dot\varphi, \dot\theta, \dot\psi) \ne (p, q, r). W zakręcie z przechyleniem żyroskop pochylania pokazuje q≠0q \ne 0, choć θ\theta się nie zmienia.
„Blokada przegubu to problem starych platform mechanicznych.”
To własność każdego zapisu trzema liczbami. W oprogramowaniu objawia się dzieleniem przez cos⁡θ\cos\theta i skokami kątów, nie zatrzymaniem mechanizmu.
„Kwaternion to cztery kąty.”
To oś pomnożona przez sinus połowy kąta plus kosinus połowy kąta. Ma jeden więz, więc niesie trzy stopnie swobody, tyle co orientacja.
„Obrót o 360° to to samo co brak obrotu.”
Dla orientacji tak, dla kwaternionu nie: qq zmienia znak. Regulator, który porównuje kwaterniony bez sprawdzenia znaku, może wykonać zbędny pełny obrót.
„Kolejność obrotów nie ma znaczenia, jeśli kąty są małe.”
Dla małych kątów różnica jest małego rzędu drugiego (iloczyn kątów). Dlatego małe obroty można dodawać, i na tym opiera się linearyzacja w lekcjach o samolocie. Dla kątów rzędu dziesiątek stopni różnica jest duża.

8 Zadania do przemyślenia

Te zadania wymagają więcej myślenia niż liczenia.

Zadania do przemyślenia

5 zadań · ok. 1,5 godziny

  1. Kwaternion z macierzy. Z ramki: q0=121+tr⁡Rq_0 = \tfrac12\sqrt{1 + \operatorname{tr}R},   q=14q0[R32−R23; R13−R31; R21−R12]\;\mathbf q = \frac{1}{4q_0}[R_{32} - R_{23};\ R_{13} - R_{31};\ R_{21} - R_{12}]. Kiedy ten wzór jest numerycznie zły i jak sobie wtedy poradzić?

    Rozwiązanie
    1. Gdy q0→0q_0 \to 0 (obrót o prawie 180∘180^\circ): dzielimy małe różnice przez małą liczbę i błędy zaokrągleń rosną.
    2. Rozwiązanie (metoda Shepperda): z przekątnej policz kwadraty wszystkich czterech składowych, np. 4q12=1+R11−R22−R334q_1^2 = 1 + R_{11} - R_{22} - R_{33}, wybierz największą i z niej licz pozostałe. Największa składowa ma kwadrat co najmniej 1/41/4, więc dzielenie jest bezpieczne.
  2. Małe obroty. Pokaż, że dla małych kątów R≈I+[δ]×R \approx I + [\boldsymbol\delta]_\times, gdzie δ=(δφ,δθ,δψ)\boldsymbol\delta = (\delta\varphi, \delta\theta, \delta\psi), a q≈(1,δ/2)q \approx (1, \boldsymbol\delta/2). Dlaczego to ważne dla filtru Kalmana orientacji?

    Rozwiązanie
    1. Wzór Rodriguesa z sin⁡α≈α\sin\alpha\approx\alpha, 1−cos⁡α≈01 - \cos\alpha\approx 0: R≈I+α[n]×=I+[δ]×R\approx I + \alpha[\mathbf n]_\times = I + [\boldsymbol\delta]_\times, gdzie δ=αn\boldsymbol\delta = \alpha\mathbf n. Kąty Eulera dla małych obrotów są składowymi δ\boldsymbol\delta (kolejność nie ma znaczenia w pierwszym rzędzie). Kwaternion: cos⁡(α/2)≈1\cos(\alpha/2)\approx 1, sin⁡(α/2)≈α/2\sin(\alpha/2)\approx\alpha/2.
    2. Filtr Kalmana potrzebuje stanu w przestrzeni wektorowej (dodawanie, kowariancja). Dlatego w lekcji 3 Fuzja czujników w 3D: estymacja orientacji na kwaternionach estymujemy nie kwaternion, tylko mały wektor błędu orientacji δ\boldsymbol\delta wokół bieżącej estymaty, i składamy go z kwaternionem mnożeniem.
  3. Inna kolejność kątów. Dla satelitów i bąków używa się często kątów 3-1-3 (precesja, nutacja, obrót własny). Gdzie mają osobliwość? Dlaczego dla samolotu lepsze są 3-2-1?

    Rozwiązanie
    1. Kąty 3-1-3 mają osobliwość przy nutacji 00 i 180∘180^\circ: wtedy pierwszy i trzeci obrót są wokół tej samej osi zz. Dla bąka (lekcja Dział 4: Ruch obrotowy i bryła sztywna) to rzadki przypadek pionowej osi, a nutacja ma czytelny sens fizyczny.
    2. Samolot prawie zawsze lata blisko poziomu (θ≈0\theta \approx 0), a kąty 3-2-1 są tam najdalej od osobliwości i mają sens dla pilota. Kąty 3-1-3 miałyby osobliwość właśnie w locie poziomym.
  4. Najkrótsza droga. Regulator orientacji dostaje błąd qe=qzad∗⊗qq_e = q_\text{zad}^*\otimes q. Prawdziwy błąd to obrót o 350∘350^\circ wokół pewnej osi. Co się stanie, jeśli regulator będzie dążył do qe=(1,0)q_e = (1, \mathbf 0), a co, jeśli zaakceptuje też (−1,0)(-1, \mathbf 0)?

    Rozwiązanie
    1. Obrót o 350∘350^\circ to ta sama orientacja co obrót o −10∘-10^\circ. Kwaternion qeq_e ma wtedy q0=cos⁡175∘<0q_0 = \cos 175^\circ < 0.
    2. Regulator dążący tylko do (1,0)(1, \mathbf 0) „odkręci” 350∘350^\circ naokoło. Zmiana znaku qeq_e, gdy q0<0q_0 < 0, daje obrót o 10∘10^\circ w drugą stronę. Markley i Crassidis nazywają niechciany pełny obrót unwinding.
  5. Sprawdzian telefonem. Telefon z aplikacją pokazującą kąty orientacji (wiele aplikacji z czujnikami ma taki tryb) połóż płasko, a potem podnieś do pionu ekranem do siebie. Co dzieje się z kątem „kursu” i „przechylenia” tuż przy pionie i dlaczego?

    Rozwiązanie
    1. Przy pionie (pochylenie ±90∘\pm 90^\circ) kąty kursu i przechylenia zaczynają skakać albo zmieniać się gwałtownie przy drobnych ruchach: to osobliwość kątów Eulera.
    2. Telefon wewnętrznie liczy na kwaternionie lub macierzy (system Android udostępnia „wektor obrotu” właśnie w tej postaci), a kąty to tylko przeliczenie na wyjściu. Dlatego sam obraz w grach i aplikacjach AR się nie psuje.

9 Sprawdź się

Odpowiedz w myślach, zanim rozwiniesz odpowiedź.

1 Co jest w kolumnach macierzy orientacji RR (ciało → NED)?

Osie samolotu zapisane w osiach NED; pierwsza kolumna to kierunek nosa.

2 Ile stopni swobody ma orientacja i ile liczb ma każdy zapis?

3 stopnie swobody. Macierz: 9 liczb, 6 więzów. Kąty Eulera: 3 (osobliwość). Kwaternion: 4, jeden więz.

3 Gdzie kąty Eulera 3-2-1 mają osobliwość i dlaczego?

Przy θ=±90∘\theta = \pm 90^\circ: osie obrotów ψ\psi i φ\varphi się pokrywają, macierz zależy tylko od ψ∓φ\psi\mp\varphi, a w kinematyce dzielimy przez cos⁡θ\cos\theta.

4 Jak z macierzy obrotu odczytać kąt obrotu?

tr⁡R=1+2cos⁡α\operatorname{tr}R = 1 + 2\cos\alpha; oś to wektor własny dla λ=1\lambda = 1.

5 Jak wygląda kwaternion obrotu o α\alpha wokół n\mathbf n?

(cos⁡α2, nsin⁡α2)(\cos\frac\alpha2,\ \mathbf n\sin\frac\alpha2). Kwaterniony qq i −q-q to ta sama orientacja.

6 Jaka jest kinematyka kwaternionu?

q˙=12q⊗(0,ω)\dot q = \frac12 q\otimes(0, \boldsymbol\omega), z ω\boldsymbol\omega w osiach ciała; liniowa w qq, bez osobliwości. Po każdym kroku normalizacja.

10 Karta wzorów i co dalej

Macierz i kąty Eulera

vn=Rvb\mathbf v^n = R\mathbf v^b, RTR=IR^{\mathsf T}R = I, det⁡R=1\det R = 1

R=Rz(ψ)Ry(θ)Rx(φ)R = R_z(\psi)R_y(\theta)R_x(\varphi)

θ=−arcsin⁡R31\theta = -\arcsin R_{31}, φ=atan2⁡(R32,R33)\varphi = \operatorname{atan2}(R_{32}, R_{33}), ψ=atan2⁡(R21,R11)\psi = \operatorname{atan2}(R_{21}, R_{11})

ψ˙=qsφ+rcφcθ\dot\psi = \frac{q s_\varphi + r c_\varphi}{c_\theta}, θ˙=qcφ−rsφ\dot\theta = qc_\varphi - rs_\varphi, φ˙=p+(qsφ+rcφ)tan⁡θ\dot\varphi = p + (qs_\varphi + rc_\varphi)\tan\theta

R˙=R[ω]×\dot R = R[\boldsymbol\omega]_\times

Oś, kąt, kwaternion

R=I+sin⁡α[n]×+(1−cos⁡α)[n]×2R = I + \sin\alpha[\mathbf n]_\times + (1 - \cos\alpha)[\mathbf n]_\times^2

tr⁡R=1+2cos⁡α=4q02−1\operatorname{tr}R = 1 + 2\cos\alpha = 4q_0^2 - 1

q=(cos⁡α2,nsin⁡α2)q = (\cos\frac\alpha2, \mathbf n\sin\frac\alpha2), q≡−qq \equiv -q

p⊗q=(p0q0−p⋅q, p0q+q0p+p×q)p\otimes q = (p_0q_0 - \mathbf p\cdot\mathbf q,\ p_0\mathbf q + q_0\mathbf p + \mathbf p\times\mathbf q)

(0,vn)=q⊗(0,vb)⊗q∗(0, \mathbf v^n) = q\otimes(0, \mathbf v^b)\otimes q^*; składanie q2⊗q1q_2\otimes q_1

q˙=12q⊗(0,ω)\dot q = \frac12 q\otimes(0, \boldsymbol\omega)

Do przeczytania

  • Obowiązkowo: H. Schaub, J. L. Junkins, Analytical Mechanics of Aerospace Systems, rozdz. 3.1–3.4 (macierz kosinusów kierunkowych, kąty Eulera, wektor obrotu, parametry Eulera, czyli kwaterniony).
  • Dla chętnych: F. L. Markley, J. L. Crassidis, Fundamentals of Spacecraft Attitude Determination and Control, rozdz. 2.7–2.9 (kwaterniony i wszystkie zapisy orientacji, także parametry Rodriguesa) oraz 3.1–3.2 (ich kinematyka, z blokadą przegubu w ogólnej postaci). Uwaga na ich konwencję kwaternionu.

Wiemy już, jak opisać orientację i jak ją całkować, gdy znamy prędkość kątową. Ale skąd się bierze prędkość kątowa? Z momentów sił i z tego, jak masa jest rozłożona w bryle. W następnej lekcji zobaczymy, że w trzech wymiarach moment pędu i prędkość kątowa nie muszą być równoległe, a obrót wokół jednej z trzech osi bryły jest niestabilny. Klucz francuski rzucony w stanie nieważkości to pokazuje.

Korzystają z tej lekcji 2 Bryła w 3D: tensor bezwładności, równania Eulera i oś pośrednia3 Fuzja czujników w 3D: estymacja orientacji na kwaternionach10 Symulacja 6 stopni swobody: składamy samolot