Matematyka i fizyka od podstaw
PLEN

Dynamika lotu › II. Samolot › 10 szkic · PDF do druku

Zanim zaczniesz Matematyka 6.2 Metody numeryczne: Python i C++1 Orientacja w 3D: macierz obrotu, kąty Eulera, oś i kąt, kwaterniony2 Bryła w 3D: tensor bezwładności, równania Eulera i oś pośrednia9 Autopilot: pętle wewnętrzne i zewnętrzne

Nowe pojęcia w tej lekcji (1)

równania ruchu o 6 stopniach swobody

Dynamika lotu 10

Symulacja 6 stopni swobody: składamy samolot

Dziewięć lekcji opisywało samolot kawałkami: orientację, bryłę sztywną, aerodynamikę ruchu podłużnego i bocznego, tłumiki, autopilota. Prawie zawsze w postaci liniowej, przy małych zaburzeniach. Ta lekcja jest projektem: składamy wszystko w jeden nieliniowy symulator sześciu stopni swobody, trymujemy go, sprawdzamy na modelach liniowych, a potem lecimy tam, gdzie modele liniowe przestają działać: w przeciągnięcie, w ciasny zakręt i w powolną spiralę.

Czas
ok. 2 h teorii + ok. 3 h projektu i zadań
Zadania
14 zadań w treści + 5 do przemyślenia, z odpowiedziami
Źródła
P. H. Zipfel, Modeling and Simulation of Aerospace Vehicle Dynamics; B. L. Stevens, F. L. Lewis, E. N. Johnson, Aircraft Control and Simulation, rozdz. 2–3; lekcje 1–9 tej części

0 Prolog: niebieskie pudło Edwina Linka

Pod koniec lat dwudziestych Edwin Link, syn producenta organów, zbudował z mieszków organowych i pomp kabinę, która przechylała się i pochylała w odpowiedzi na drążek. Lotnicy traktowali ją jak atrakcję wesołego miasteczka, dopóki w 1934 roku armia amerykańska, po serii wypadków pilotów wożących pocztę w chmurach, nie kupiła pierwszych trenażerów do nauki lotu według przyrządów. W czasie wojny przez „niebieskie pudła” przeszły setki tysięcy pilotów.

Trenażer Linka nie liczył żadnych równań: odtwarzał tylko, z grubsza, odczucia i wskazania przyrządów. Dzisiejszy symulator to program, który całkuje równania ruchu bryły sztywnej z siłami aerodynamicznymi i jest podstawowym narzędziem projektanta: na nim testuje się autopilota, zanim samolot oderwie się od ziemi. Ta lekcja buduje taki program od zera, z elementów, które już znamy.

Pytanie na start. Model liniowy z lekcji 4–5 i symulacja nieliniowa dają dla małego podmuchu prawie ten sam przebieg. Po co więc symulacja nieliniowa? Wymień trzy sytuacje, w których model liniowy na pewno zawiedzie. Odpowiedź w części 4.

1 Równania ruchu: 13 stanów

Samolot to bryła sztywna (lekcja 2 Bryła w 3D: tensor bezwładności, równania Eulera i oś pośrednia) o masie mm i tensorze bezwładności II. Jej stan opisuje 13 liczb:

Stan symulatora 6 DOF

vb=[u; v; w]\mathbf v_b = [u;\,v;\,w] — prędkość w osiach ciała (x w nos, y w prawe skrzydło, z w dół), m/s;

ω=[p; q; r]\boldsymbol\omega = [p;\,q;\,r] — prędkość kątowa w osiach ciała, rad/s;

q=[q0; q1; q2; q3]\mathbf q = [q_0;\,q_1;\,q_2;\,q_3] — kwaternion orientacji ciało →\to NED (lekcja 1 Orientacja w 3D: macierz obrotu, kąty Eulera, oś i kąt, kwaterniony), ∣q∣=1|\mathbf q| = 1;

p=[xN; yE; zD]\mathbf p = [x_N;\,y_E;\,z_D] — położenie w układzie NED, m (wysokość h=−zDh = -z_D).

Równania ruchu to cztery wektorowe równania pierwszego rzędu:

v˙b=Fa+FTm+RT ⁣[00g]−ω×vb,ω˙=I−1(Ma−ω×Iω),\dot{\mathbf v}_b = \frac{\mathbf F_a + \mathbf F_T}{m} + R^{\mathsf T}\!\begin{bmatrix}0\\0\\g\end{bmatrix} - \boldsymbol\omega\times\mathbf v_b,\qquad \dot{\boldsymbol\omega} = I^{-1}\big(\mathbf M_a - \boldsymbol\omega\times I\boldsymbol\omega\big), q˙=12 q⊗(0,ω),p˙=R(q) vb.\dot{\mathbf q} = \tfrac12\,\mathbf q\otimes(0,\boldsymbol\omega),\qquad \dot{\mathbf p} = R(\mathbf q)\,\mathbf v_b .

Pierwsze równanie to druga zasada dynamiki zapisana w obracającym się układzie ciała: człon −ω×vb-\boldsymbol\omega\times\mathbf v_b pojawia się dlatego, że osie, w których mierzymy prędkość, same się obracają (lekcja 2 Bryła w 3D: tensor bezwładności, równania Eulera i oś pośrednia). Grawitacja jest prosta w NED, więc przenosimy ją do osi ciała macierzą RTR^{\mathsf T}. Drugie równanie to równania Eulera bryły sztywnej. Trzecie to kinematyka kwaternionu z lekcji 1, czwarte zamienia prędkość w osiach ciała na ruch po mapie.

Dlaczego kwaternion, a nie kąty Eulera? Kąty Eulera mają osobliwość przy θ=±90∘\theta = \pm 90^\circ (lekcja 1): symulacja pętli albo pionowego wznoszenia by się wysypała. Kwaternion nie ma osobliwości, kosztem jednej nadmiarowej liczby i więzu ∣q∣=1|\mathbf q| = 1, który po każdym kroku przywracamy, dzieląc przez normę. Kąty ψ,θ,φ\psi,\theta,\varphi liczymy z kwaternionu tylko do wyświetlania i dla autopilota.

Zadania · część 1

3 zadania · ok. 20 min

  1. Bryła sztywna ma 6 stopni swobody. Dlaczego symulator ma 13 stanów, a nie 12?

    Odpowiedź

    Sześć stopni swobody to 12 stanów (3 położenia, 3 kąty, 3 prędkości, 3 prędkości kątowe). Orientację opisujemy jednak kwaternionem, czyli czterema liczbami związanymi więzem ∣q∣=1|\mathbf q| = 1. Stąd 13 liczb przy 12 niezależnych stanach.

  2. Samolot leci poziomo, bez przechylenia, z pochyleniem θ=4,26∘\theta = 4{,}26^\circ (równym kątowi natarcia). Ile wynosi składowa siły ciężkości wzdłuż osi xx ciała przy m=1100m = 1100 kg? Co musi ją zrównoważyć?

    Odpowiedź

    RT[0;0;mg]R^{\mathsf T}[0;0;mg] ma składową xx równą −mgsin⁡θ=−1100⋅9,81⋅0,0743=−802-mg\sin\theta = -1100\cdot 9{,}81\cdot 0{,}0743 = -802 N. Nos jest w górę, więc ciężar „ciągnie” samolot do tyłu wzdłuż osi xx. Równoważy ją prawie w całości składowa siły nośnej: siła nośna jest prostopadła do prędkości, a nie do osi xx, więc ma składową Lsin⁡α≈mgsin⁡α=802L\sin\alpha \approx mg\sin\alpha = 802 N do przodu wzdłuż osi ciała (w locie poziomym θ=α\theta = \alpha). Ciąg równoważy opór.

  3. Samolot leci z prędkością u=55u = 55 m/s i zaczyna podnosić nos z q=0,1q = 0{,}1 rad/s, przy stałych v=0v = 0 i ww. Jakie przyspieszenie wzdłuż osi zz ciała musi wytworzyć siła aerodynamiczna (ponad ciężar), i co to oznacza fizycznie?

    Odpowiedź

    Składowa zz wyrażenia −ω×vb-\boldsymbol\omega\times\mathbf v_b to −(pv−qu)=qu=5,5-(pv - qu) = qu = 5{,}5 m/s². Żeby w˙=0\dot w = 0, siły muszą dać −5,5-5{,}5 m/s², czyli dodatkową siłę nośną 0,56 mg0{,}56\,mg (w górę, czyli w −z-z). Fizycznie: tor zakrzywia się z prędkością kątową qq, a do tego potrzebna jest siła dośrodkowa mUqmUq. Przeciążenie wynosi wtedy ok. 1,561{,}56 g.

2 Model aerodynamiczny: współczynniki, przeciągnięcie, opóźnienie

Całą fizykę samolotu zawierają siły Fa\mathbf F_a i momenty Ma\mathbf M_a. Symulator liczy je w każdym kroku z bieżącego stanu: najpierw prędkość V=∣vb∣V = |\mathbf v_b|, kąt natarcia α=atan2⁡(w,u)\alpha = \operatorname{atan2}(w, u), kąt ślizgu β=arcsin⁡(v/V)\beta = \arcsin(v/V) i ciśnienie dynamiczne qˉ=12ρ(h)V2\bar q = \tfrac12\rho(h)V^2 z gęstością z atmosfery wzorcowej, a potem współczynniki. Używamy dokładnie samolotu z lekcji 4 Stateczność statyczna i trym: dlaczego samolot ma ogon–7 Ruch boczny: przechylenie, spirala i holendrowanie:

Model aerodynamiczny symulatora

Skrzydło: CL,w=awαC_{L,w} = a_w\alpha do αs=14∘\alpha_s = 14^\circ, dalej spada z nachyleniem −1,5-1{,}5/rad (przeciągnięcie).

Usterzenie: αH=α(1−dεdα)+dεdα α˙ lHV+i′+τδe+q lHV\alpha_H = \alpha(1 - \tfrac{d\varepsilon}{d\alpha}) + \tfrac{d\varepsilon}{d\alpha}\,\dot\alpha\,\tfrac{l_H}{V} + i' + \tau\delta_e + q\,\tfrac{l_H}{V},   CL,H=aHαH\;C_{L,H} = a_H\alpha_H.

Całość: CL=CL,w+ηSHSCL,HC_L = C_{L,w} + \eta\tfrac{S_H}{S}C_{L,H},   Cm=Cm,ac+(h−hac)CL−ηVHCL,H\;C_m = C_{m,ac} + (h - h_{ac})C_L - \eta V_H C_{L,H}.

Opór: CD=CD0+CL,w2πeA+1,0⋅max⁡(0, ∣α∣−αs)C_D = C_{D0} + \dfrac{C_{L,w}^2}{\pi e A} + 1{,}0\cdot\max(0,\,|\alpha| - \alpha_s).

Ruch boczny: CYC_Y, ClC_l, CnC_n liniowe w β\beta, p^\hat p, r^\hat r, δa\delta_a, δr\delta_r z pochodnymi z lekcji 7 (np. Cnp=−CL/8C_{n_p} = -C_L/8, Clr=CL/4+…C_{l_r} = C_L/4 + \dots).

Siły w osiach ciała: X=Lsin⁡α−Dcos⁡α+TX = L\sin\alpha - D\cos\alpha + T,   Z=−Lcos⁡α−Dsin⁡α\;Z = -L\cos\alpha - D\sin\alpha,   Y=qˉSCY\;Y = \bar qSC_Y.

Trzy rzeczy w tym modelu są nowe w porównaniu z modelami liniowymi. Po pierwsze, przeciągnięcie: powyżej 14∘14^\circ siła nośna skrzydła maleje, a opór gwałtownie rośnie. To bardzo uproszczony model (prawdziwe przeciągnięcie ma histerezę, zależy od α˙\dot\alpha, jest niesymetryczne i potrafi przejść w korkociąg), ale wystarcza, żeby zobaczyć granicę obszaru, w którym działa linearyzacja. Po drugie, prędkość wpływa przez qˉ\bar q i VV w mianownikach dokładnie, a nie przez pochodne XuX_u, ZuZ_u. Po trzecie, ruch podłużny i boczny są w jednych równaniach: w przechyleniu siła nośna nie jest pionowa, a to sprzęga oba ruchy.

Człon z α˙\dot\alpha wymaga uwagi. Strumień odchylony przez skrzydło dociera do usterzenia po czasie lH/Vl_H/V (lekcja 5 Lot w płaszczyźnie symetrii: model podłużny i pochodne stateczności: pochodna Mα˙M_{\dot\alpha}). W symulatorze α˙\dot\alpha zależy od w˙\dot w, a w˙\dot w od sił, które zależą od α˙\dot\alpha: pętla algebraiczna. Najprostsze wyjście, stosowane w wielu symulatorach, to wziąć α˙\dot\alpha z poprzedniego kroku, z różnicy wstecznej (αk−αk−1)/Δt(\alpha_k - \alpha_{k-1})/\Delta t. Przy kroku 0,01 s opóźnienie o jeden krok jest pomijalne wobec stałej czasowej lH/V=0,08l_H/V = 0{,}08 s.

Zadania · część 2

3 zadania · ok. 25 min

  1. Ile wynosi największy współczynnik siły nośnej skrzydła w modelu (aw=4,94a_w = 4{,}94/rad)? Oszacuj prędkość przeciągnięcia samolotu o masie 1100 kg i powierzchni 16,2 m² na poziomie morza, pomijając siłę na usterzeniu.

    Odpowiedź

    CL,max⁡=4,94⋅14⋅π/180=1,21C_{L,\max} = 4{,}94\cdot 14\cdot\pi/180 = 1{,}21. Vs=2mg/(ρSCL,max⁡)=21 582/(1,225⋅16,2⋅1,21)=30V_s = \sqrt{2mg/(\rho S C_{L,\max})} = \sqrt{21\,582/(1{,}225\cdot 16{,}2\cdot 1{,}21)} = 30 m/s. W lekcji 4 przyjęliśmy CL,max⁡=1,5C_{L,\max} = 1{,}5 (z klapami) i Vs=27V_s = 27 m/s; nasz model nie ma klap.

  2. Dlaczego symulator nie może po prostu policzyć α˙\dot\alpha z bieżącego w˙\dot w w tym samym wywołaniu funkcji prawej strony? Podaj dwa sposoby rozwiązania problemu inne niż „α˙\dot\alpha z poprzedniego kroku”.

    Odpowiedź

    Bo w˙\dot w dopiero liczymy z sił, a siły zależą od α˙\dot\alpha, czyli od w˙\dot w: równanie jest uwikłane. Rozwiązania: (1) człon z α˙\dot\alpha jest liniowy, więc można go przenieść na lewą stronę i rozwiązać układ liniowy dla v˙b\dot{\mathbf v}_b (tak robi się w linearyzacji w części 3); (2) iteracja: policzyć siły z α˙=0\dot\alpha = 0, wyznaczyć w˙\dot w, policzyć α˙\dot\alpha i powtórzyć dwa, trzy razy. Trzeci, częsty w praktyce: modelować opóźnienie strumienia jawnie, np. jako dodatkowy stan z filtrem pierwszego rzędu.

  3. Policz współczynnik oporu w trymie (α=4,26∘\alpha = 4{,}26^\circ) i przy α=19,4∘\alpha = 19{,}4^\circ (największy kąt w symulacji silnego wyrwania). Przyjmij CD0=0,03C_{D0} = 0{,}03, πeA=18,4\pi eA = 18{,}4.

    Odpowiedź

    Trym: CL,w=4,94⋅0,0744=0,367C_{L,w} = 4{,}94\cdot 0{,}0744 = 0{,}367, opór indukowany 0,3672/18,4=0,00730{,}367^2/18{,}4 = 0{,}0073, razem CD=0,037C_D = 0{,}037. Przy 19,4∘19{,}4^\circ: CL,w=1,21−1,5⋅0,094=1,07C_{L,w} = 1{,}21 - 1{,}5\cdot 0{,}094 = 1{,}07, indukowany 0,0620{,}062, przeciągnięcie 0,0940{,}094, razem CD=0,19C_D = 0{,}19, ok. pięć razy więcej. Samolot w przeciągnięciu szybko traci prędkość.

3 Architektura symulatora: trym, całkowanie, linearyzacja

Symulator ma cztery części, które warto pisać osobno i testować osobno (tak radzi też Zipfel):

Elementy symulatora

1. Prawa strona x˙=f(x,u)\dot{\mathbf x} = f(\mathbf x, \mathbf u): model aerodynamiczny, atmosfera, równania ruchu. Funkcja bez pamięci.

2. Trym: szukamy α\alpha, δe\delta_e, TT, przy których u˙=w˙=q˙=0\dot u = \dot w = \dot q = 0 w locie poziomym. Trzy niewiadome, trzy równania, metoda Newtona (lekcja 6.2 Metody numeryczne: Python i C++) z jakobianem z różnic skończonych.

3. Całkowanie: RK4 ze stałym krokiem Δt=0,01\Delta t = 0{,}01 s, normalizacja kwaternionu po każdym kroku.

4. Pętla symulacji: co krok odczyt stanu, regulatory (autopilot) liczą sterowanie, sterowanie stoi przez cały krok (próbkowanie z podtrzymaniem), zapis wyników.

Trym daje dla naszego samolotu przy 55 m/s: α=4,261∘\alpha = 4{,}261^\circ, δe=−2,639∘\delta_e = -2{,}639^\circ, T=1123T = 1123 N. Model liniowy z lekcji 4 dawał 4,292∘4{,}292^\circ i −2,672∘-2{,}672^\circ. Różnica jest prawdziwa i ma prosty powód: w symulatorze ciąg działa wzdłuż osi kadłuba, więc ma składową pionową Tsin⁡α=83T\sin\alpha = 83 N, która odciąża skrzydło (przykład 6.1).

Ostatni element to linearyzacja numeryczna: macierz A=∂f/∂xA = \partial f/\partial\mathbf x w punkcie trymu z różnic centralnych, kolumna po kolumnie. To pozwala porównać symulator z modelami liniowymi z lekcji 4–7. Jest jedna pułapka: ff zależy też od α˙\dot\alpha. Linearyzacja, która to pomija, dostaje dla modu krótkookresowego −3,81±5,05i-3{,}81 \pm 5{,}05i (ζ=0,60\zeta = 0{,}60), a lekcja 4 miała −4,92±4,11i-4{,}92 \pm 4{,}11i (ζ=0,77\zeta = 0{,}77). Brakuje tłumienia od Mα˙M_{\dot\alpha}. Poprawnie: x˙=Ax+b α˙\dot{\mathbf x} = A\mathbf x + \mathbf b\,\dot\alpha, gdzie α˙=cTx˙\dot\alpha = \mathbf c^{\mathsf T}\dot{\mathbf x}, więc

x˙=(I−b cT)−1A x,b=∂f∂α˙,cTx˙=uw˙−wu˙u2+w2.\dot{\mathbf x} = \big(I - \mathbf b\,\mathbf c^{\mathsf T}\big)^{-1}A\,\mathbf x,\qquad \mathbf b = \frac{\partial f}{\partial\dot\alpha},\quad \mathbf c^{\mathsf T}\dot{\mathbf x} = \frac{u\dot w - w\dot u}{u^2 + w^2}.

Z tym poprawionym wzorem: mod krótkookresowy −4,80±4,05i-4{,}80 \pm 4{,}05i, fugoida −0,0166±0,208i-0{,}0166 \pm 0{,}208i; lekcja 4: −4,92±4,11i-4{,}92 \pm 4{,}11i i −0,0165±0,206i-0{,}0165 \pm 0{,}206i. Fugoida zgadza się prawie dokładnie, mod krótkookresowy do 2–3%; resztę wyjaśniają uproszczenia lekcji 4 (np. opór liczony z całkowitego CLC_L, inny kierunek ciągu).

Druga pułapka linearyzacji dotyczy kwaternionu. Żeby porównać bieguny z lekcjami 4–7, sprowadzamy 13 stanów do zmiennych fizycznych (u,w,q,θ)(u, w, q, \theta) i (v,p,r,φ)(v, p, r, \varphi): x=x0+Tz\mathbf x = \mathbf x_0 + T\mathbf z, gdzie kolumny TT to pochodne stanu po θ\theta, φ\varphi itd., i Az=T+ATA_z = T^{+}AT. Wybranie z macierzy samych wierszy i kolumn q1q_1 albo q2q_2 jest błędem: przy θ0≠0\theta_0 \ne 0 zmiana przechylenia porusza kilka składowych kwaternionu naraz. Co więcej, w ruchu bocznym trzeba dołączyć do TT także kierunek ψ\psi (i potem go odrzucić, bo kurs nie wpływa na dynamikę): przy θ0≠0\theta_0 \ne 0 kierunki „zmiana φ\varphi” i „zmiana ψ\psi” w przestrzeni kwaternionów nie są prostopadłe, a rzut na samo φ\varphi myli zmianę kursu ze zmianą przechylenia. Pierwsza wersja skryptu do tej lekcji popełniła ten błąd i dostała mod spiralny trzy razy za szybki. Najpewniejszy test: wartości własne całej macierzy 13×1313\times 13 (pięć z nich to zera od położenia, kursu i normy kwaternionu) muszą zawierać wszystkie bieguny modeli zredukowanych.

Python · szkielet symulatora (pełna wersja: tools/verify/l10.py)
import numpy as np

def f(x, u, ald):
    """Prawa strona: x = [u v w p q r q0 q1 q2 q3 xN yE zD], u = [de da dr T]."""
    vb, w, q, pos = x[0:3], x[3:6], x[6:10], x[10:13]
    F, M = aero(x, u, ald)                    # model z części 2, osie ciała
    R = q2R(q)                                # ciało -> NED (lekcja 1)
    vdot = (F + R.T @ [0, 0, m*g]) / m - np.cross(w, vb)
    wdot = np.linalg.solve(I, M - np.cross(w, I @ w))
    qdot = 0.5 * qmul(q, np.r_[0, w])
    return np.r_[vdot, wdot, qdot, R @ vb]

def rk4(x, u, dt, ald):
    k1 = f(x, u, ald); k2 = f(x + dt/2*k1, u, ald)
    k3 = f(x + dt/2*k2, u, ald); k4 = f(x + dt*k3, u, ald)
    x = x + dt/6*(k1 + 2*k2 + 2*k3 + k4)
    x[6:10] /= np.linalg.norm(x[6:10])        # więz |q| = 1
    return x

def simulate(x0, ctrl, TF, dt=0.01):
    x, st, out = x0.copy(), {}, []
    al_prev, ald = np.arctan2(x[2], x[0]), 0.0
    for k in range(int(round(TF/dt)) + 1):
        u = ctrl(k*dt, x, st, dt)             # autopilot: próbkowanie co krok
        out.append(np.r_[k*dt, x, u])
        x = rk4(x, u, dt, ald)
        al = np.arctan2(x[2], x[0]); ald = (al - al_prev)/dt; al_prev = al
    return np.array(out)

Zadania · część 3

3 zadania · ok. 25 min

  1. Trym szuka trzech niewiadomych z trzech równań u˙=w˙=q˙=0\dot u = \dot w = \dot q = 0. Dlaczego nie trzeba sprawdzać pozostałych trzech równań dynamiki (v˙\dot v, p˙\dot p, r˙\dot r)?

    Odpowiedź

    Lot poziomy bez przechylenia i ślizgu jest symetryczny: przy β=p=r=0\beta = p = r = 0 i δa=δr=0\delta_a = \delta_r = 0 wszystkie siły i momenty boczne są zerowe z definicji modelu, więc v˙=p˙=r˙=0\dot v = \dot p = \dot r = 0 automatycznie. Dla trymu w zakręcie albo z bocznym wiatrem trzeba by dołożyć δa\delta_a, δr\delta_r, φ\varphi i te równania.

  2. Najszybszy mod naszego samolotu to przechylenie z λ=−12,5\lambda = -12{,}5/s. Obszar stateczności RK4 na osi rzeczywistej sięga λΔt≈−2,79\lambda\Delta t \approx -2{,}79. Jaki największy krok jest jeszcze stateczny? Dlaczego używamy dużo mniejszego?

    Odpowiedź

    Δt<2,79/12,5=0,22\Delta t < 2{,}79/12{,}5 = 0{,}22 s. Stateczność to za mało: błąd RK4 rośnie jak Δt4\Delta t^4, a przy λΔt=−2\lambda\Delta t = -2 wynik jest stateczny, ale niedokładny. Krok 0,01 s daje λΔt=−0,125\lambda\Delta t = -0{,}125, z błędem na krok rzędu 10−710^{-7}. Do tego regulatory pracują w tym samym kroku, a regulator cyfrowy z próbkowaniem 100 Hz zachowuje się prawie jak ciągły.

  3. Linearyzacja bez członu α˙\dot\alpha daje mod krótkookresowy −3,81±5,05i-3{,}81 \pm 5{,}05i, z członem −4,80±4,05i-4{,}80 \pm 4{,}05i. Oblicz ωn\omega_n i ζ\zeta w obu przypadkach. Który parametr zmienia się bardziej i dlaczego?

    Odpowiedź

    Bez: ωn=6,32\omega_n = 6{,}32 rad/s, ζ=0,60\zeta = 0{,}60. Z: ωn=6,28\omega_n = 6{,}28, ζ=0,76\zeta = 0{,}76. Częstość prawie się nie zmienia, tłumienie rośnie o jedną czwartą. Zgadza się to z lekcją 5: Mα˙M_{\dot\alpha} działa razem z MqM_q jak tłumienie, a sztywność MαM_\alpha pozostaje ta sama.

4 Walidacja i manewry nieliniowe

Symulator, który nie został sprawdzony, to generator przekonujących wykresów. Kolejność sprawdzania: najpierw testy bez aerodynamiki (bryła swobodna zachowuje energię i moment pędu, lekcja 2), potem trym (f=0f = 0 w trymie; u nas reszta 2⋅10−152\cdot10^{-15}), potem zgodność z modelem liniowym dla małych zaburzeń, a dopiero potem manewry, których model liniowy nie opisuje.

Mały podmuch. Pionowy podmuch zwiększa kąt natarcia skokowo o 2∘2^\circ. Symulacja nieliniowa i model liniowy z lekcji 4 różnią się najwyżej o 0,010∘0{,}010^\circ. Przy 8∘8^\circ różnica rośnie do 0,038∘0{,}038^\circ, prawie dokładnie czterokrotnie. To ważna wskazówka: gdyby różnica pochodziła z nieliniowości, rosłaby jak kwadrat amplitudy (szesnastokrotnie). Rośnie liniowo, więc pochodzi z drobnych różnic między modelami (ciąg wzdłuż kadłuba, opór), a nie z nieliniowości.

Wyrwanie. Ster w górę o Δδe\Delta\delta_e przez 3 s, potem z powrotem. Przy 4∘4^\circ: największy kąt natarcia 7,1∘7{,}1^\circ, prędkość spada do 40,9 m/s, wysokość rośnie o 73 m. Przy 8∘8^\circ: 9,9∘9{,}9^\circ, 27,6 m/s, 116 m. Przy 12∘12^\circ: 19,4∘19{,}4^\circ, czyli przeciągnięcie, prędkość 15,8 m/s. Model liniowy (z uu jako małym zaburzeniem) już przy 4∘4^\circ rozjeżdża się w prędkości: spadek o 14 m/s to nie jest małe zaburzenie prędkości 55 m/s.

Ciasny zakręt. Autopilot z lekcji 9 Autopilot: pętle wewnętrzne i zewnętrzne zadaje przechylenie i trzyma wysokość, z kompensacją qq w zakręcie: w ustalonym zakręcie samolot obraca się w pochyleniu z q=(g/V)tan⁡φsin⁡φq = (g/V)\tan\varphi\sin\varphi, i pętla tłumienia nie może z tym walczyć. Przy 30∘30^\circ wszystko jest łagodne: samolot traci najwyżej 19,5 m. Przy 60∘60^\circ przeciążenie wynosi 1/cos⁡60∘=21/\cos 60^\circ = 2 g; siła nośna musi się podwoić, więc opór indukowany rośnie czterokrotnie. Z automatem ciągu: ciąg chwilowo do 2458 N, strata wysokości najwyżej 39 m; całka automatu ciągu ustala się powoli i dopiero po ok. 200 s zakręt jest naprawdę ustalony: ciąg 1790 N, kąt natarcia 8,5∘8{,}5^\circ. Bez automatu ciągu ten sam autopilot ciągnie coraz mocniej, aż do kąta natarcia 20∘20^\circ, za przeciągnięciem: samolot traci 610 m. Modele liniowe, osobne dla ruchu podłużnego i bocznego, nie widzą tego sprzężenia w ogóle.

Puszczone stery. Samolot wytrymowany, przechylony o 20∘20^\circ, stery puszczone. Spirala z lekcji 7 Ruch boczny: przechylenie, spirala i holendrowanie jest stateczna, więc przechylenie maleje: w symulacji do 16,7∘16{,}7^\circ po 10 s, 14,8∘14{,}8^\circ po 30 s i 11,7∘11{,}7^\circ po 60 s. Model liniowy z lekcji 7 daje 15,8∘15{,}8^\circ, 10,8∘10{,}8^\circ i 6,1∘6{,}1^\circ. Linearyzacja symulatora wyjaśnia różnicę: mod przechylenia −12,46-12{,}46/s (lekcja 7: −12,65-12{,}65) i holendrowanie −0,68±3,05i-0{,}68 \pm 3{,}05i (−0,58±3,04i-0{,}58 \pm 3{,}04i) zgadzają się nieźle, ale mod spiralny ma −0,0067-0{,}0067/s, czyli stałą czasową 149 s zamiast 52 s. Przyczyna: lekcja 7 liczy w osiach stateczności (z zerowym IxzI_{xz} w tych osiach), a symulator przykłada te same pochodne do prędkości kątowych w osiach ciała, nachylonych o α0=4,3∘\alpha_0 = 4{,}3^\circ, z zerowym IxzI_{xz} w osiach ciała. To dwa trochę różne samoloty. Sprawdzenie numeryczne: gdy w symulatorze liczyć momenty boczne z prędkości kątowych w osiach stateczności i przeliczyć tensor bezwładności (Ixz=−102I_{xz} = -102 kg·m² w osiach ciała), linearyzacja daje −12,65-12{,}65, −0,58±3,04i-0{,}58 \pm 3{,}04i i −0,0193-0{,}0193, czyli dokładnie lekcję 7. Spirala, która jest różnicą dwóch małych iloczynów pochodnych (lekcja 7), wychwytuje taką niespójność pierwsza.

Symulacja 1 Nieliniowy symulator 6 DOF samolotu z lekcji 4–7, liczony w przeglądarce (RK4, krok 0,01 s). Cztery scenariusze: podmuch (porównanie z modelem liniowym), wyrwanie sterem wysokości (do przeciągnięcia), zakręt z autopilotem z lekcji 9 (z automatem ciągu i bez) i puszczone stery w przechyleniu. Suwak czasu przesuwa samolot po torze.

Odpowiedź na pytanie z prologu: model liniowy zawiedzie wszędzie tam, gdzie zaburzenie nie jest małe (prędkość zmienia się o kilkadziesiąt procent, kąt natarcia dochodzi do przeciągnięcia), gdzie ruch podłużny i boczny się sprzęgają (zakręt z dużym przechyleniem, korkociąg) i gdzie działają ograniczenia (nasycenie sterów i ciągu, logika trybów autopilota). Do tego dochodzą efekty, których nie ma w modelu w ogóle, ale to już kwestia modelu, a nie linearyzacji.

Zadania · część 4

3 zadania · ok. 30 min

  1. W symulacji wyrwania sterem o 8∘8^\circ prędkość spada z 55 do 27,6 m/s, a wysokość rośnie najwyżej o 115,8 m. Sprawdź bilansem energii, czy te liczby są spójne. Co to mówi o różnicy ciągu i oporu w tym manewrze?

    Odpowiedź

    12(552−27,62)=1131\tfrac12(55^2 - 27{,}6^2) = 1131 J/kg, co odpowiada 1131/9,81=115,31131/9{,}81 = 115{,}3 m. Zgodność z 115,8 m oznacza, że praca ciągu i oporu w sumie prawie się znosi: ciąg 1123 N i opór, który przy mniejszej prędkości maleje, ale przy większym kącie natarcia rośnie. Manewr to w praktyce czysta zamiana energii kinetycznej na potencjalną.

  2. Oszacuj ciąg potrzebny w ustalonym zakręcie z przechyleniem 60∘60^\circ przy 55 m/s. Przyjmij, że w locie poziomym opór 1123 N składa się z oporu indukowanego ok. 220 N i reszty niezależnej od siły nośnej. Porównaj z symulacją.

    Odpowiedź

    Przeciążenie n=2n = 2, opór indukowany ∝CL2\propto C_L^2 rośnie czterokrotnie: 4⋅220=8804\cdot 220 = 880 N, czyli o 660 N. Szacunek: 1123+660≈17801123 + 660 \approx 1780 N. Ustalony zakręt w symulacji (po ok. 200 s) wymaga 1790 N: szacunek jest bardzo dobry, bo prawie całą dodatkową siłę nośną daje skrzydło. Wartość ok. 1620 N, którą widać w pierwszych 80 s, to jeszcze nieustalony stan: całka automatu ciągu dopiero narasta, a samolot powoli traci energię.

  3. W symulacji z puszczonymi sterami przechylenie po 60 s wynosi 11,7∘11{,}7^\circ, a w modelu liniowym 6,1∘6{,}1^\circ. Spirala ma w linearyzacji symulatora −0,0067-0{,}0067/s, a w lekcji 7 −0,0191-0{,}0191/s. Ile wynoszą stałe czasowe spirali w obu modelach i jaki byłby wynik z samego modu spiralnego, startując od 20∘20^\circ?

    Odpowiedź

    1/0,0067=1491/0{,}0067 = 149 s i 1/0,0191=521/0{,}0191 = 52 s. Sam mod spiralny: 20∘e−60/149=13,4∘20^\circ e^{-60/149} = 13{,}4^\circ i 20∘e−60/52=6,3∘20^\circ e^{-60/52} = 6{,}3^\circ. Model liniowy prawie dokładnie odtwarza drugi wynik. W symulatorze przechylenie spada najpierw szybciej (do 16,7∘16{,}7^\circ w 10 s), bo start z β=0\beta = 0 nie leży na wektorze własnym spirali: przez pierwsze sekundy działa holendrowanie i narasta ślizg. Dalej spada już w tempie spirali: 16,7∘e−50/149=11,9∘16{,}7^\circ e^{-50/149} = 11{,}9^\circ, wobec 11,7∘11{,}7^\circ w symulacji.

5 Monte Carlo i projekt

Jeden przebieg symulatora odpowiada jednemu samolotowi w jednych warunkach. Prawdziwy samolot lata z różnym załadunkiem, a środek ciężkości przesuwa się z paliwem i pasażerami. Analiza Monte Carlo losuje parametry z ich rozkładów, dla każdego losowania trymuje i linearyzuje (albo symuluje manewr) i patrzy na rozrzut wyników. W naszym przykładzie: położenie środka ciężkości h∼N(0,30; 0,042)h \sim N(0{,}30;\ 0{,}04^2), masa jednostajnie od 900 do 1250 kg, bezwładności skalowane z masą, 400 losowań (ziarno 7).

Wyniki Monte Carlo (400 losowań)

Wylosowane hh od 0,187 do 0,401; punkt neutralny hn=0,51h_n = 0{,}51, więc wszystkie przypadki są statecznie statycznie i żaden mod nie jest niestateczny.

Ster wysokości w trymie od −5,4∘-5{,}4^\circ do −0,4∘-0{,}4^\circ; najbardziej ujemny przy przednim środku ciężkości i dużej masie.

Tłumienie modu krótkookresowego ζsp\zeta_{sp}: najmniejsze 0,65 (mediana 0,76). Tłumienie fugoidy: najmniejsze 0,071 (mediana 0,081).

Najgorszy przypadek dla tłumienia krótkookresowego to przedni środek ciężkości (h=0,20h = 0{,}20) z dużą masą: duża sztywność MαM_\alpha przy tym samym tłumieniu MqM_q podnosi częstość, a nie tłumienie. Wynik jest spójny z lekcją 6 (wymagania MIL dla ζsp\zeta_{sp} od 0,35 są spełnione z dużym zapasem). Monte Carlo nie dodaje fizyki; dodaje odpowiedź na pytanie „czy w całym zakresie”, którego jeden przebieg nie daje. Ma dwa ograniczenia: wynik jest tylko tak dobry, jak przyjęte rozkłady, a rzadkie zdarzenia (np. z prawdopodobieństwem 10−410^{-4}) wymagają ogromnej liczby losowań.

Projekt: rozbuduj symulator

  1. Test integratora. Wyłącz aerodynamikę i grawitację, nadaj bryle obrót wokół osi pośredniej (lekcja 2). Sprawdź zachowanie energii i momentu pędu dla kroków 0,01 i 0,1 s.
  2. Trym w zakręcie. Rozszerz trym o φ\varphi, δa\delta_a, δr\delta_r, β\beta i warunek ψ˙=\dot\psi = const. Porównaj ciąg z symulacją z autopilotem.
  3. Wiatr. Dodaj prędkość wiatru w NED: aerodynamika ma liczyć siły od prędkości względem powietrza vb−RTwNED\mathbf v_b - R^{\mathsf T}\mathbf w_{NED}. Sprawdź, że stały wiatr tylko przesuwa tor.
  4. Turbulencja. Dodaj podmuchy z filtru pierwszego rzędu sterowanego szumem (lekcja 9) i zbadaj Monte Carlo rozrzut wysokości w zakręcie 30∘30^\circ.
  5. Tłumiki i autopilot. Dołącz tłumik odchylenia z lekcji 8 i sprawdź ślizg w zakręcie 60∘60^\circ.

Zadania · część 5

2 zadania · ok. 20 min

  1. Położenie środka ciężkości ma rozkład N(0,30; 0,042)N(0{,}30;\ 0{,}04^2), a punkt neutralny jest w hn=0,51h_n = 0{,}51. Jakie jest prawdopodobieństwo, że losowanie da samolot statycznie niestateczny? Czy Monte Carlo z 400 losowaniami może to wykryć?

    Odpowiedź

    z=(0,51−0,30)/0,04=5,25z = (0{,}51 - 0{,}30)/0{,}04 = 5{,}25; P(Z>5,25)≈8⋅10−8P(Z > 5{,}25) \approx 8\cdot10^{-8}. Przy 400 losowaniach spodziewana liczba takich przypadków to 3⋅10−53\cdot10^{-5}: praktycznie zero. Monte Carlo nie wykryje zdarzeń tak rzadkich; tu wystarczy rachunek, bo granica jest znana (lekcja 4). Do tego w rzeczywistości położenie środka ciężkości nie ma rozkładu normalnego, tylko ograniczenia z instrukcji załadunku.

  2. Chcesz oszacować metodą Monte Carlo prawdopodobieństwo p≈1%p \approx 1\%, że autopilot w turbulencji przekroczy dopuszczalną stratę wysokości, z błędem standardowym 20% wartości. Ile losowań potrzeba?

    Odpowiedź

    Błąd standardowy estymatora to p(1−p)/N\sqrt{p(1-p)/N}. Warunek p(1−p)/N=0,2p\sqrt{p(1-p)/N} = 0{,}2p daje N=(1−p)/(0,04p)=0,99/0,0004≈2500N = (1-p)/(0{,}04p) = 0{,}99/0{,}0004 \approx 2500 losowań. Przy p=0,1%p = 0{,}1\% już ok. 25 000: koszt rośnie odwrotnie proporcjonalnie do pp.

6 Metoda i przykłady rozwiązane

Metoda: budowa i sprawdzenie symulatora

  1. Konwencje na piśmie: układy (NED, osie ciała), znaki sterów, kolejność stanów, jednostki. Większość błędów symulatorów to błędy znaków.
  2. Prawa strona jako funkcja bez pamięci; aerodynamika osobno od równań ruchu.
  3. Testy bez aerodynamiki: spadek swobodny, bryła swobodna (energia, moment pędu).
  4. Trym i sprawdzenie f=0f = 0; porównanie z ręcznym rachunkiem.
  5. Linearyzacja (z członami zależnymi od pochodnych stanu) i porównanie biegunów z modelami liniowymi.
  6. Małe zaburzenia nieliniowo kontra liniowo; potem manewry duże, ze sprawdzeniem bilansów energii.

Przykład 6.1 Skąd różnica trymu

Model liniowy z lekcji 4 daje w trymie α=4,292∘\alpha = 4{,}292^\circ, symulator 4,261∘4{,}261^\circ. Wyjaśnij różnicę rachunkiem.

  1. W lekcji 4 siła nośna równoważy cały ciężar: L=mg=10 791L = mg = 10\,791 N.
  2. W symulatorze ciąg T=1123T = 1123 N jest wzdłuż osi kadłuba, nachylonej o α\alpha do toru: jego składowa prostopadła do toru to Tsin⁡α=1123⋅0,0743=83T\sin\alpha = 1123\cdot 0{,}0743 = 83 N.
  3. Siła nośna potrzebna jest mniejsza o 83 N. Przy qˉS=30 016\bar qS = 30\,016 N i nachyleniu krzywej nośności całego samolotu a=5,39a = 5{,}39/rad (lekcja 4) to Δα=83/(30 016⋅5,39)=5,1⋅10−4\Delta\alpha = 83/(30\,016\cdot 5{,}39) = 5{,}1\cdot10^{-4} rad =0,029∘= 0{,}029^\circ.

Wynik: 4,292∘−0,03∘≈4,26∘4{,}292^\circ - 0{,}03^\circ \approx 4{,}26^\circ, zgodnie z symulatorem.

Sprawdzenie: gdy w symulatorze skierować ciąg wzdłuż prędkości, trym daje dokładnie 4,292∘4{,}292^\circ i −2,672∘-2{,}672^\circ jak lekcja 4 ✓. Ciąg 1123 N wobec oporu 1111 N z lekcji 4 to już inna sprawa: nachylenie ciągu daje tu tylko ok. 3 N, resztę daje nieco inny model oporu (opór indukowany liczony z siły nośnej skrzydła, a nie całego samolotu).

Przykład 6.2 Zakręt 60° bez automatu ciągu

Autopilot zadaje przechylenie 60∘60^\circ i trzyma wysokość sterem wysokości, przepustnica stoi na 1123 N. Przewidź, co się stanie, i porównaj z symulacją.

  1. W zakręcie n=2n = 2: potrzeba ok. 1600–1800 N ciągu (zadanie 4.2), jest 1123 N. Brakuje ok. 660 N, czyli E˙/(mg)=−ΔT V/(mg)≈−660⋅55/10 791≈−3,4\dot E/(mg) = -\Delta T\,V/(mg) \approx -660\cdot 55/10\,791 \approx -3{,}4 m/s.
  2. Pętla wysokości podnosi nos, żeby nie tracić wysokości. Samolot zwalnia, przy mniejszej prędkości potrzeba większego CLC_L, opór indukowany rośnie dalej: sprzężenie zwrotne dodatnie.
  3. Kąt natarcia rośnie do przeciągnięcia, siła nośna przestaje rosnąć, samolot opada mimo nosa w górę.

Wynik: symulacja: kąt natarcia do 20,1∘20{,}1^\circ, prędkość do 41 m/s, strata 610 m w 80 s.

Sprawdzenie: średnio 610/80=7,6610/80 = 7{,}6 m/s opadania, ponad dwa razy więcej niż oszacowane 3,4 m/s, bo za przeciągnięciem opór jest kilkukrotnie większy (zadanie 2.3) ✓. To jest scenariusz „drugiej strony krzywej oporu” z lekcji 9.

Przykład 6.3 Jak dużo daje człon α˙\dot\alpha w podmuchu

Po skokowym podmuchu Δα=2∘\Delta\alpha = 2^\circ symulator i model liniowy dają po 0,3 s Δα=0,394∘\Delta\alpha = 0{,}394^\circ i 0,384∘0{,}384^\circ. Czy pominięcie Mα˙M_{\dot\alpha} zmieniłoby ten wynik bardziej niż różnica modeli?

  1. Bez α˙\dot\alpha mod krótkookresowy ma −3,81±5,05i-3{,}81 \pm 5{,}05i zamiast −4,80±4,05i-4{,}80 \pm 4{,}05i: słabsze tłumienie, ale też wyższa częstość tłumiona.
  2. Prosty rachunek z samej obwiedni e−ζωnte^{-\zeta\omega_n t} sugerowałby, że bez α˙\dot\alpha odpowiedź po 0,3 s będzie większa (0,320{,}32 wobec 0,240{,}24). To mylący skrót: po 0,3 s jesteśmy w okolicy pierwszego przejścia przez zero, a o wartości decyduje faza drgań, czyli częstość tłumiona.
  3. Symulacja z α˙\dot\alpha wymuszonym na zero daje po 0,3 s Δα=0,175∘\Delta\alpha = 0{,}175^\circ zamiast 0,394∘0{,}394^\circ: różnica 0,22∘0{,}22^\circ.

Wynik: pominięcie członu α˙\dot\alpha zmienia odpowiedź ok. dwudziestokrotnie bardziej (0,22∘0{,}22^\circ) niż różnica między modelem nieliniowym a liniowym (0,010∘0{,}010^\circ).

Sprawdzenie: to dlatego linearyzacja numeryczna musi uwzględniać α˙\dot\alpha: bez tego „walidacja” porównywałaby dwa różne samoloty. Przy okazji: oszacowanie z obwiedni pomyliło się co do znaku efektu, więc liczby, które dają się policzyć, lepiej policzyć ✓.

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

„Symulacja nieliniowa jest dokładniejsza niż model liniowy.”
Dokładniej całkuje równania, ale model sił może być tak samo niepewny. Dla małych zaburzeń oba modele dają to samo; różnica w spirali (część 4) pochodzi z drobnej niespójności modelu, a nie z nieliniowości.
„Skoro symulacja daje gładkie wykresy, jest poprawna.”
Błąd znaku albo zamienione osie dają gładkie, przekonujące i całkowicie fałszywe wyniki. Poprawność pokazują testy: trym, bilanse energii, zgodność z modelem liniowym.
„Mniejszy krok zawsze daje lepszy wynik.”
Po pewnym progu błąd całkowania jest dużo mniejszy niż błąd modelu i niczego już nie zmienia, a przy bardzo małym kroku rosną błędy zaokrągleń i czas obliczeń. Krok dobiera się do najszybszych modów i do częstotliwości regulatorów.
„Kwaternion nie wymaga normalizacji, bo RK4 jest dokładny.”
Każdy integrator powoli wyprowadza kwaternion z jednostkowej sfery. Normalizacja po kroku jest tania i konieczna.
„Monte Carlo znajdzie każdy groźny przypadek.”
Znajdzie typowe przypadki z przyjętych rozkładów. Zdarzenia rzadkie wymagają ogromnej liczby losowań albo analizy najgorszego przypadku; zdarzenia spoza modelu nie pojawią się wcale.

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. Dwa samoloty pod jedną nazwą. Lekcja 7 i symulator mają te same pochodne boczne, a różne mody spiralne (−0,0191-0{,}0191 i −0,0067-0{,}0067/s). Zaproponuj eksperyment numeryczny, który rozstrzygnie, czy przyczyną jest wybór osi, i przewidź jego wynik.

    Rozwiązanie
    1. Pochodne z lekcji 7 dotyczą osi stateczności. W symulatorze trzeba więc: (a) przeliczyć prędkości kątowe ciała na osie stateczności (obrót o α0\alpha_0 wokół osi yy), policzyć z nimi ClC_l, CnC_n i obrócić momenty z powrotem; (b) przeliczyć tensor bezwładności: Ixz,b=(Ixx−Izz)sin⁡α0cos⁡α0=−102I_{xz,b} = (I_{xx} - I_{zz})\sin\alpha_0\cos\alpha_0 = -102 kg·m² (jeśli w osiach stateczności Ixz=0I_{xz} = 0).
    2. Wynik (sprawdzony): samo (a) przesuwa spiralę do −0,0193-0{,}0193/s, samo (b) poprawia głównie mod przechylenia i holendrowanie; oba razem dają −12,65-12{,}65, −0,58±3,04i-0{,}58 \pm 3{,}04i, −0,0193-0{,}0193, czyli lekcję 7. Wniosek: przyczyną jest niespójność osi, a nie nieliniowość ani sprzężenie z ruchem podłużnym.
  2. Przeciągnięcie w modelu. Nasz model przeciągnięcia jest symetryczny i bez histerezy. Wymień trzy zjawiska z rzeczywistego przeciągnięcia, których symulator nie pokaże, i jak można by je przybliżyć.

    Rozwiązanie
    1. Histereza: oderwany przepływ przylega z powrotem przy mniejszym kącie niż ten, przy którym się oderwał. Przybliżenie: dodatkowy stan „stopień oderwania” z dynamiką pierwszego rzędu (modele typu Goman–Khrabrov).
    2. Asymetria: jedno skrzydło przeciąga się pierwsze (ślizg, obrót), co daje gwałtowne przechylenie i wejście w korkociąg. Przybliżenie: liczyć siłę nośną osobno dla kilku pasków skrzydła z lokalnym kątem natarcia (z pp i β\beta).
    3. Spadek skuteczności sterów i trzęsienie (ang. buffet). Przybliżenie: współczynniki sterów zależne od α\alpha, szum w siłach powyżej αs\alpha_s.
  3. Dlaczego autopilot bez automatu ciągu ciągnie do przeciągnięcia. Ułóż prosty argument, że w zakręcie 60∘60^\circ przy stałym ciągu pętla wysokości działa jak sprzężenie dodatnie, i wskaż, które ograniczenie w autopilocie by to przerwało.

    Rozwiązanie
    1. Brak energii (zadanie 4.2) sprawia, że samolot opada. Pętla wysokości podnosi nos: kąt natarcia rośnie, opór indukowany rośnie, deficyt energii się powiększa, samolot zwalnia, potrzeba jeszcze większego CLC_L.
    2. Przerwałoby to ograniczenie kąta natarcia (ochrona przed przeciągnięciem, jak w układach fly-by-wire z lekcji 8) albo ograniczenie przechylenia zależne od dostępnego ciągu, albo przejście pętli wysokości na pętlę prędkości (tryb zmiany poziomu lotu z lekcji 9): oddać wysokość, zachować prędkość.
  4. Krok symulacji i regulator. Autopilot w symulatorze liczy sterowanie co 0,01 s. Prawdziwy komputer pokładowy pracuje np. z 50 Hz, a serwo ma stałą czasową 0,05 s. Jak to zamodelować i czego się spodziewać?

    Rozwiązanie
    1. Regulator wywoływać co 2 kroki symulacji (próbkowanie 50 Hz, podtrzymanie zerowego rzędu), a serwo dodać jako stan z równaniem δ˙=(δzad−δ)/0,05\dot\delta = (\delta_\text{zad} - \delta)/0{,}05, z ograniczeniem prędkości i wychylenia.
    2. Oba elementy dodają opóźnienie fazowe: próbkowanie ok. Δt/2=0,01\Delta t/2 = 0{,}01 s, serwo ok. 0,05 s. Przy pętli pochylenia o paśmie kilku rad/s to kilka do kilkunastu stopni zapasu fazy (lekcja 2.4 automatyki): tłumienie pętli wewnętrznych spadnie.
  5. Weryfikacja a walidacja. Inżynierowie symulacji odróżniają weryfikację („czy dobrze rozwiązujemy równania”) od walidacji („czy to dobre równania”). Które z testów w tej lekcji są którymi i czego brakuje do walidacji?

    Rozwiązanie
    1. Weryfikacja: zachowanie energii bez sił, f=0f = 0 w trymie, zbieżność przy zmniejszaniu kroku, zgodność z modelem liniowym tego samego samolotu (to sprawdza kod, nie fizykę).
    2. Walidacja wymaga porównania z rzeczywistością: z danymi z tunelu i z prób w locie (np. zarejestrowany mod krótkookresowy po impulsie sterem). Tego nasz kurs nie ma: model samolotu jest oszacowany, więc symulator jest zweryfikowany, ale nie zwalidowany.

9 Sprawdź się

Odpowiedz w myślach, zanim rozwiniesz odpowiedź.

1 Jakie 13 stanów ma symulator 6 DOF?

Prędkość w osiach ciała (3), prędkość kątowa (3), kwaternion orientacji (4), położenie w NED (3).

2 Skąd w równaniu prędkości człon −ω×vb-\boldsymbol\omega\times\mathbf v_b?

Prędkość mierzymy w obracających się osiach ciała; to pochodna wektora w układzie obracającym się.

3 Jak symulator trymuje samolot?

Newtonem na α\alpha, δe\delta_e, TT z warunków u˙=w˙=q˙=0\dot u = \dot w = \dot q = 0, z jakobianem z różnic skończonych.

4 Dlaczego linearyzacja musi uwzględniać α˙\dot\alpha?

Bo inaczej gubi Mα˙M_{\dot\alpha}, czyli część tłumienia modu krótkookresowego (ζ\zeta 0,60 zamiast 0,76).

5 Jak odróżnić, czy różnica dwóch modeli pochodzi z nieliniowości?

Sprawdzić, jak rośnie z amplitudą: nieliniowość daje różnicę rosnącą jak kwadrat amplitudy, niespójność modeli liniowo.

6 Do czego służy Monte Carlo i czego nie potrafi?

Do rozrzutu wyników przy losowych parametrach w całym zakresie; nie znajdzie zdarzeń bardzo rzadkich ani spoza modelu.

10 Karta wzorów i co dalej

Równania 6 DOF

v˙b=(Fa+FT)/m+RTg−ω×vb\dot{\mathbf v}_b = (\mathbf F_a + \mathbf F_T)/m + R^{\mathsf T}\mathbf g - \boldsymbol\omega\times\mathbf v_b

ω˙=I−1(Ma−ω×Iω)\dot{\boldsymbol\omega} = I^{-1}(\mathbf M_a - \boldsymbol\omega\times I\boldsymbol\omega)

q˙=12q⊗(0,ω)\dot{\mathbf q} = \tfrac12\mathbf q\otimes(0,\boldsymbol\omega),   p˙=Rvb\;\dot{\mathbf p} = R\mathbf v_b

α=atan2⁡(w,u)\alpha = \operatorname{atan2}(w,u), β=arcsin⁡(v/V)\beta = \arcsin(v/V), qˉ=12ρV2\bar q = \tfrac12\rho V^2

X=Lsin⁡α−Dcos⁡α+TX = L\sin\alpha - D\cos\alpha + T, Z=−Lcos⁡α−Dsin⁡αZ = -L\cos\alpha - D\sin\alpha

Narzędzia

trym: Newton na (α,δe,T)(\alpha,\delta_e,T), u˙=w˙=q˙=0\dot u = \dot w = \dot q = 0

RK4: stateczny dla λΔt≳−2,79\lambda\Delta t \gtrsim -2{,}79, błąd ∝Δt4\propto\Delta t^4

linearyzacja z α˙\dot\alpha: x˙=(I−bcT)−1Ax\dot{\mathbf x} = (I - \mathbf b\mathbf c^{\mathsf T})^{-1}A\mathbf x

Monte Carlo: błąd p(1−p)/N\sqrt{p(1-p)/N}

zakręt: n=1/cos⁡φn = 1/\cos\varphi, opór indukowany ∝n2\propto n^2

Do przeczytania

  • Obowiązkowo: B. L. Stevens, F. L. Lewis, E. N. Johnson, Aircraft Control and Simulation (Wiley, wyd. 3), rozdz. 2–3: model samolotu, trym, linearyzacja i symulacja; wzorcowy przykład w kodzie.
  • Dla chętnych: P. H. Zipfel, Modeling and Simulation of Aerospace Vehicle Dynamics (AIAA): części o symulacjach 5 i 6 DOF, w tym z obracającą się, kulistą Ziemią; tegoż autora Building Aerospace Simulations in C++ o architekturze symulatorów.

Samolot jest złożony: od kwaternionu po autopilota, w jednym programie, który umie powiedzieć, kiedy prostsze modele kłamią. Kolejna część zamienia skrzydła na silnik: rakieta nie ma siły nośnej, która by ją stabilizowała, ma za to ciąg, który można obracać. Ta sama bryła sztywna i te same pętle sterowania, ale z masą, która znika w trakcie lotu.