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.
Pierwsze równanie to druga zasada dynamiki zapisana w obracającym się układzie ciała: człon −ω×vb 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ą RT. 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∘ (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, który po każdym kroku przywracamy, dzieląc przez normę. Kąty ψ,θ,φ liczymy z kwaternionu tylko do wyświetlania i dla autopilota.
Zadania · część 1
3 zadania · ok. 20 min
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. Stąd 13 liczb przy 12 niezależnych stanach.
Samolot leci poziomo, bez przechylenia, z pochyleniem θ=4,26∘ (równym kątowi natarcia). Ile wynosi składowa siły ciężkości wzdłuż osi x ciała przy m=1100 kg? Co musi ją zrównoważyć?
Odpowiedź
RT[0;0;mg] ma składową x równą −mgsinθ=−1100⋅9,81⋅0,0743=−802 N. Nos jest w górę, więc ciężar „ciągnie” samolot do tyłu wzdłuż osi x. 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 x, więc ma składową Lsinα≈mgsinα=802 N do przodu wzdłuż osi ciała (w locie poziomym θ=α). Ciąg równoważy opór.
Samolot leci z prędkością u=55 m/s i zaczyna podnosić nos z q=0,1 rad/s, przy stałych v=0 i w. Jakie przyspieszenie wzdłuż osi z ciała musi wytworzyć siła aerodynamiczna (ponad ciężar), i co to oznacza fizycznie?
Odpowiedź
Składowa z wyrażenia −ω×vb to −(pv−qu)=qu=5,5 m/s². Żeby w˙=0, siły muszą dać −5,5 m/s², czyli dodatkową siłę nośną 0,56mg (w górę, czyli w −z). Fizycznie: tor zakrzywia się z prędkością kątową q, a do tego potrzebna jest siła dośrodkowa mUq. Przeciążenie wynosi wtedy ok. 1,56 g.
2 Model aerodynamiczny: współczynniki, przeciągnięcie, opóźnienie
Ruch boczny:CY, Cl, Cn liniowe w β, p^, r^, δa, δr z pochodnymi z lekcji 7 (np. Cnp=−CL/8, Clr=CL/4+…).
Siły w osiach ciała:X=Lsinα−Dcosα+T, Z=−Lcosα−Dsinα, Y=qˉSCY.
Trzy rzeczy w tym modelu są nowe w porównaniu z modelami liniowymi. Po pierwsze, przeciągnięcie: powyżej 14∘ 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 α˙, 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ˉ i V w mianownikach dokładnie, a nie przez pochodne Xu, Zu. 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 α˙ wymaga uwagi. Strumień odchylony przez skrzydło dociera do usterzenia po czasie lH/V (lekcja 5 Lot w płaszczyźnie symetrii: model podłużny i pochodne stateczności: pochodna Mα˙). W symulatorze α˙ zależy od w˙, a w˙ od sił, które zależą od α˙: pętla algebraiczna. Najprostsze wyjście, stosowane w wielu symulatorach, to wziąć α˙ z poprzedniego kroku, z różnicy wstecznej (αk−αk−1)/Δt. Przy kroku 0,01 s opóźnienie o jeden krok jest pomijalne wobec stałej czasowej lH/V=0,08 s.
Zadania · część 2
3 zadania · ok. 25 min
Ile wynosi największy współczynnik siły nośnej skrzydła w modelu (aw=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,21. Vs=2mg/(ρSCL,max)=21582/(1,225⋅16,2⋅1,21)=30 m/s. W lekcji 4 przyjęliśmy CL,max=1,5 (z klapami) i Vs=27 m/s; nasz model nie ma klap.
Dlaczego symulator nie może po prostu policzyć α˙ z bieżącego w˙ w tym samym wywołaniu funkcji prawej strony? Podaj dwa sposoby rozwiązania problemu inne niż „α˙ z poprzedniego kroku”.
Odpowiedź
Bo w˙ dopiero liczymy z sił, a siły zależą od α˙, czyli od w˙: równanie jest uwikłane. Rozwiązania: (1) człon z α˙ jest liniowy, więc można go przenieść na lewą stronę i rozwiązać układ liniowy dla v˙b (tak robi się w linearyzacji w części 3); (2) iteracja: policzyć siły z α˙=0, wyznaczyć w˙, policzyć α˙ 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.
Policz współczynnik oporu w trymie (α=4,26∘) i przy α=19,4∘ (największy kąt w symulacji silnego wyrwania). Przyjmij CD0=0,03, πeA=18,4.
Odpowiedź
Trym: CL,w=4,94⋅0,0744=0,367, opór indukowany 0,3672/18,4=0,0073, razem CD=0,037. Przy 19,4∘: CL,w=1,21−1,5⋅0,094=1,07, indukowany 0,062, przeciągnięcie 0,094, razem CD=0,19, ok. pięć razy więcej. Samolot w przeciągnięciu szybko traci prędkość.
Symulator ma cztery części, które warto pisać osobno i testować osobno (tak radzi też Zipfel):
Elementy symulatora
1. Prawa stronax˙=f(x,u): model aerodynamiczny, atmosfera, równania ruchu. Funkcja bez pamięci.
2. Trym: szukamy α, δe, T, przy których u˙=w˙=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 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∘, δe=−2,639∘, T=1123 N. Model liniowy z lekcji 4 dawał 4,292∘ i −2,672∘. 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α=83 N, która odciąża skrzydło (przykład 6.1).
Ostatni element to linearyzacja numeryczna: macierz A=∂f/∂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: f zależy też od α˙. Linearyzacja, która to pomija, dostaje dla modu krótkookresowego −3,81±5,05i (ζ=0,60), a lekcja 4 miała −4,92±4,11i (ζ=0,77). Brakuje tłumienia od Mα˙. Poprawnie: x˙=Ax+bα˙, gdzie α˙=cTx˙, więc
x˙=(I−bcT)−1Ax,b=∂α˙∂f,cTx˙=u2+w2uw˙−wu˙.
Z tym poprawionym wzorem: mod krótkookresowy −4,80±4,05i, fugoida −0,0166±0,208i; lekcja 4: −4,92±4,11i i −0,0165±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 CL, 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,θ) i (v,p,r,φ): x=x0+Tz, gdzie kolumny T to pochodne stanu po θ, φ itd., i Az=T+AT. Wybranie z macierzy samych wierszy i kolumn q1 albo q2 jest błędem: przy θ0=0 zmiana przechylenia porusza kilka składowych kwaternionu naraz. Co więcej, w ruchu bocznym trzeba dołączyć do T także kierunek ψ (i potem go odrzucić, bo kurs nie wpływa na dynamikę): przy θ0=0 kierunki „zmiana φ” i „zmiana ψ” w przestrzeni kwaternionów nie są prostopadłe, a rzut na samo φ 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×13 (pięć z nich to zera od położenia, kursu i normy kwaternionu) muszą zawierać wszystkie bieguny modeli zredukowanych.
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
Trym szuka trzech niewiadomych z trzech równań u˙=w˙=q˙=0. Dlaczego nie trzeba sprawdzać pozostałych trzech równań dynamiki (v˙, p˙, r˙)?
Odpowiedź
Lot poziomy bez przechylenia i ślizgu jest symetryczny: przy β=p=r=0 i δa=δr=0 wszystkie siły i momenty boczne są zerowe z definicji modelu, więc v˙=p˙=r˙=0 automatycznie. Dla trymu w zakręcie albo z bocznym wiatrem trzeba by dołożyć δa, δr, φ i te równania.
Najszybszy mod naszego samolotu to przechylenie z λ=−12,5/s. Obszar stateczności RK4 na osi rzeczywistej sięga λΔt≈−2,79. Jaki największy krok jest jeszcze stateczny? Dlaczego używamy dużo mniejszego?
Odpowiedź
Δt<2,79/12,5=0,22 s. Stateczność to za mało: błąd RK4 rośnie jak Δt4, a przy λΔt=−2 wynik jest stateczny, ale niedokładny. Krok 0,01 s daje λΔt=−0,125, z błędem na krok rzędu 10−7. Do tego regulatory pracują w tym samym kroku, a regulator cyfrowy z próbkowaniem 100 Hz zachowuje się prawie jak ciągły.
Linearyzacja bez członu α˙ daje mod krótkookresowy −3,81±5,05i, z członem −4,80±4,05i. Oblicz ωn i ζ w obu przypadkach. Który parametr zmienia się bardziej i dlaczego?
Odpowiedź
Bez: ωn=6,32 rad/s, ζ=0,60. Z: ωn=6,28, ζ=0,76. Częstość prawie się nie zmienia, tłumienie rośnie o jedną czwartą. Zgadza się to z lekcją 5: Mα˙ działa razem z Mq jak tłumienie, a sztywność Mα 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=0 w trymie; u nas reszta 2⋅10−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∘. Symulacja nieliniowa i model liniowy z lekcji 4 różnią się najwyżej o 0,010∘. Przy 8∘ różnica rośnie do 0,038∘, 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 przez 3 s, potem z powrotem. Przy 4∘: największy kąt natarcia 7,1∘, prędkość spada do 40,9 m/s, wysokość rośnie o 73 m. Przy 8∘: 9,9∘, 27,6 m/s, 116 m. Przy 12∘: 19,4∘, czyli przeciągnięcie, prędkość 15,8 m/s. Model liniowy (z u jako małym zaburzeniem) już przy 4∘ 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ą q w zakręcie: w ustalonym zakręcie samolot obraca się w pochyleniu z q=(g/V)tanφsinφ, i pętla tłumienia nie może z tym walczyć. Przy 30∘ wszystko jest łagodne: samolot traci najwyżej 19,5 m. Przy 60∘ przeciążenie wynosi 1/cos60∘=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∘. Bez automatu ciągu ten sam autopilot ciągnie coraz mocniej, aż do kąta natarcia 20∘, 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∘, stery puszczone. Spirala z lekcji 7 Ruch boczny: przechylenie, spirala i holendrowanie jest stateczna, więc przechylenie maleje: w symulacji do 16,7∘ po 10 s, 14,8∘ po 30 s i 11,7∘ po 60 s. Model liniowy z lekcji 7 daje 15,8∘, 10,8∘ i 6,1∘. Linearyzacja symulatora wyjaśnia różnicę: mod przechylenia −12,46/s (lekcja 7: −12,65) i holendrowanie −0,68±3,05i (−0,58±3,04i) zgadzają się nieźle, ale mod spiralny ma −0,0067/s, czyli stałą czasową 149 s zamiast 52 s. Przyczyna: lekcja 7 liczy w osiach stateczności (z zerowym Ixz 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∘, z zerowym Ixz 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=−102 kg·m² w osiach ciała), linearyzacja daje −12,65, −0,58±3,04i i −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
W symulacji wyrwania sterem o 8∘ 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ź
21(552−27,62)=1131 J/kg, co odpowiada 1131/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ą.
Oszacuj ciąg potrzebny w ustalonym zakręcie z przechyleniem 60∘ 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=2, opór indukowany ∝CL2 rośnie czterokrotnie: 4⋅220=880 N, czyli o 660 N. Szacunek: 1123+660≈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ę.
W symulacji z puszczonymi sterami przechylenie po 60 s wynosi 11,7∘, a w modelu liniowym 6,1∘. Spirala ma w linearyzacji symulatora −0,0067/s, a w lekcji 7 −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∘?
Odpowiedź
1/0,0067=149 s i 1/0,0191=52 s. Sam mod spiralny: 20∘e−60/149=13,4∘ i 20∘e−60/52=6,3∘. Model liniowy prawie dokładnie odtwarza drugi wynik. W symulatorze przechylenie spada najpierw szybciej (do 16,7∘ w 10 s), bo start z β=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∘, wobec 11,7∘ 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), masa jednostajnie od 900 do 1250 kg, bezwładności skalowane z masą, 400 losowań (ziarno 7).
Wyniki Monte Carlo (400 losowań)
Wylosowane h od 0,187 do 0,401; punkt neutralny hn=0,51, więc wszystkie przypadki są statecznie statycznie i żaden mod nie jest niestateczny.
Ster wysokości w trymie od −5,4∘ do −0,4∘; najbardziej ujemny przy przednim środku ciężkości i dużej masie.
Najgorszy przypadek dla tłumienia krótkookresowego to przedni środek ciężkości (h=0,20) z dużą masą: duża sztywność Mα przy tym samym tłumieniu Mq podnosi częstość, a nie tłumienie. Wynik jest spójny z lekcją 6 (wymagania MIL dla ζ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−4) wymagają ogromnej liczby losowań.
Projekt: rozbuduj symulator
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.
Trym w zakręcie. Rozszerz trym o φ, δa, δr, β i warunek ψ˙= const. Porównaj ciąg z symulacją z autopilotem.
Wiatr. Dodaj prędkość wiatru w NED: aerodynamika ma liczyć siły od prędkości względem powietrza vb−RTwNED. Sprawdź, że stały wiatr tylko przesuwa tor.
Turbulencja. Dodaj podmuchy z filtru pierwszego rzędu sterowanego szumem (lekcja 9) i zbadaj Monte Carlo rozrzut wysokości w zakręcie 30∘.
Tłumiki i autopilot. Dołącz tłumik odchylenia z lekcji 8 i sprawdź ślizg w zakręcie 60∘.
Zadania · część 5
2 zadania · ok. 20 min
Położenie środka ciężkości ma rozkład N(0,30;0,042), a punkt neutralny jest w hn=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,25; P(Z>5,25)≈8⋅10−8. Przy 400 losowaniach spodziewana liczba takich przypadków to 3⋅10−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.
Chcesz oszacować metodą Monte Carlo prawdopodobieństwo p≈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. Warunek p(1−p)/N=0,2p daje N=(1−p)/(0,04p)=0,99/0,0004≈2500 losowań. Przy p=0,1% już ok. 25 000: koszt rośnie odwrotnie proporcjonalnie do p.
6 Metoda i przykłady rozwiązane
Metoda: budowa i sprawdzenie symulatora
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.
Prawa strona jako funkcja bez pamięci; aerodynamika osobno od równań ruchu.
Testy bez aerodynamiki: spadek swobodny, bryła swobodna (energia, moment pędu).
Trym i sprawdzenie f=0; porównanie z ręcznym rachunkiem.
Linearyzacja (z członami zależnymi od pochodnych stanu) i porównanie biegunów z modelami liniowymi.
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∘, symulator 4,261∘. Wyjaśnij różnicę rachunkiem.
W lekcji 4 siła nośna równoważy cały ciężar: L=mg=10791 N.
W symulatorze ciąg T=1123 N jest wzdłuż osi kadłuba, nachylonej o α do toru: jego składowa prostopadła do toru to Tsinα=1123⋅0,0743=83 N.
Siła nośna potrzebna jest mniejsza o 83 N. Przy qˉS=30016 N i nachyleniu krzywej nośności całego samolotu a=5,39/rad (lekcja 4) to Δα=83/(30016⋅5,39)=5,1⋅10−4 rad =0,029∘.
Wynik:4,292∘−0,03∘≈4,26∘, zgodnie z symulatorem.
Sprawdzenie: gdy w symulatorze skierować ciąg wzdłuż prędkości, trym daje dokładnie 4,292∘ i −2,672∘ 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∘ i trzyma wysokość sterem wysokości, przepustnica stoi na 1123 N. Przewidź, co się stanie, i porównaj z symulacją.
W zakręcie n=2: potrzeba ok. 1600–1800 N ciągu (zadanie 4.2), jest 1123 N. Brakuje ok. 660 N, czyli E˙/(mg)=−ΔTV/(mg)≈−660⋅55/10791≈−3,4 m/s.
Pętla wysokości podnosi nos, żeby nie tracić wysokości. Samolot zwalnia, przy mniejszej prędkości potrzeba większego CL, opór indukowany rośnie dalej: sprzężenie zwrotne dodatnie.
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∘, prędkość do 41 m/s, strata 610 m w 80 s.
Sprawdzenie: średnio 610/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 α˙ w podmuchu
Po skokowym podmuchu Δα=2∘ symulator i model liniowy dają po 0,3 s Δα=0,394∘ i 0,384∘. Czy pominięcie Mα˙ zmieniłoby ten wynik bardziej niż różnica modeli?
Bez α˙ mod krótkookresowy ma −3,81±5,05i zamiast −4,80±4,05i: słabsze tłumienie, ale też wyższa częstość tłumiona.
Prosty rachunek z samej obwiedni e−ζωnt sugerowałby, że bez α˙ odpowiedź po 0,3 s będzie większa (0,32 wobec 0,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.
Symulacja z α˙ wymuszonym na zero daje po 0,3 s Δα=0,175∘ zamiast 0,394∘: różnica 0,22∘.
Wynik: pominięcie członu α˙ zmienia odpowiedź ok. dwudziestokrotnie bardziej (0,22∘) niż różnica między modelem nieliniowym a liniowym (0,010∘).
Sprawdzenie: to dlatego linearyzacja numeryczna musi uwzględniać α˙: 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
Dwa samoloty pod jedną nazwą. Lekcja 7 i symulator mają te same pochodne boczne, a różne mody spiralne (−0,0191 i −0,0067/s). Zaproponuj eksperyment numeryczny, który rozstrzygnie, czy przyczyną jest wybór osi, i przewidź jego wynik.
Rozwiązanie
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 wokół osi y), policzyć z nimi Cl, Cn i obrócić momenty z powrotem; (b) przeliczyć tensor bezwładności: Ixz,b=(Ixx−Izz)sinα0cosα0=−102 kg·m² (jeśli w osiach stateczności Ixz=0).
Wynik (sprawdzony): samo (a) przesuwa spiralę do −0,0193/s, samo (b) poprawia głównie mod przechylenia i holendrowanie; oba razem dają −12,65, −0,58±3,04i, −0,0193, czyli lekcję 7. Wniosek: przyczyną jest niespójność osi, a nie nieliniowość ani sprzężenie z ruchem podłużnym.
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
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).
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 p i β).
Spadek skuteczności sterów i trzęsienie (ang. buffet). Przybliżenie: współczynniki sterów zależne od α, szum w siłach powyżej αs.
Dlaczego autopilot bez automatu ciągu ciągnie do przeciągnięcia. Ułóż prosty argument, że w zakręcie 60∘ 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
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 CL.
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ść.
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
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, z ograniczeniem prędkości i wychylenia.
Oba elementy dodają opóźnienie fazowe: próbkowanie ok. Δ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.
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
Weryfikacja: zachowanie energii bez sił, f=0 w trymie, zbieżność przy zmniejszaniu kroku, zgodność z modelem liniowym tego samego samolotu (to sprawdza kod, nie fizykę).
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?
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 α, δe, T z warunków u˙=w˙=q˙=0, z jakobianem z różnic skończonych.
4 Dlaczego linearyzacja musi uwzględniać α˙?
Bo inaczej gubi Mα˙, czyli część tłumienia modu krótkookresowego (ζ 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
ω˙=I−1(Ma−ω×Iω)
q˙=21q⊗(0,ω), p˙=Rvb
α=atan2(w,u), β=arcsin(v/V), qˉ=21ρV2
X=Lsinα−Dcosα+T, Z=−Lcosα−Dsinα
Narzędzia
trym: Newton na (α,δe,T), u˙=w˙=q˙=0
RK4: stateczny dla λΔt≳−2,79, błąd ∝Δt4
linearyzacja z α˙: x˙=(I−bcT)−1Ax
Monte Carlo: błąd p(1−p)/N
zakręt: n=1/cosφ, opór indukowany ∝n2
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.