Przejdź do głównej zawartości

Moduł 4 — Teoria sterowania i kontroler lotu

To, że quad — układ z natury niestabilny — czuje się „przyspawany", zawdzięczamy 60-letniemu algorytmowi działającemu bardzo, bardzo szybko.

🟢 Fundamenty. Pętla otwarta: wydaj komendę i miej nadzieję. Pętla zamknięta: mierz uchyb e=wartosˊcˊ zadanapomiare = \text{wartość zadana} - \text{pomiar} i napieraj przeciw niemu. Koniem roboczym jest PID:

u(t)=Kpe(t)+Ki ⁣0tedτ+Kddedtu(t) = K_p\,e(t) + K_i\!\int_0^t e\,d\tau + K_d\,\frac{de}{dt}

  • P to sprężyna — pcha proporcjonalnie do uchybu. Za dużo → oscylacje.
  • I to pamięć — usuwa stały offset (wiatr, niewyważona rama). Za dużo → powolne bujanie, windup.
  • D to tłumik — opiera się szybkości zmian, dodaje hamowanie. Za dużo → wzmacnia szum, grzeje silniki.

W Twoim quadzie działa to na prędkości obrotowej, tysiące razy na sekundę: pozycja drążka = zadane °/s, żyroskop = rzeczywiste °/s.

🟡 Praktyk. Prawdziwe firmware używa postaci dyskretnej, z dwoma produkcyjnymi detalami: pochodna liczona jest z pomiaru (żeby skok drążka nie strzelał w D), a integrator jest ograniczany (anti-windup):

float pid_step(float sp, float meas, float dt) {
float e = sp - meas;
integ += Ki * e * dt;
integ = clamp(integ, -I_MAX, I_MAX); // anti-windup
float d = -(meas - meas_prev) / dt; // pochodna z pomiaru
meas_prev = meas;
return Kp * e + integ + Kd * d; // (+ feedforward, patrz niżej)
}

Nowoczesne firmware dodaje feedforward — człon proporcjonalny do szybkości zmian wartości zadanej, więc quad zaczyna reagować, zanim uchyb w ogóle narośnie. Sterowanie jest kaskadowe: pętle zewnętrzne wystawiają wartości zadane pętlom wewnętrznym, szybszym:

Tryb acro = tylko pętla rate. Tryb angle dodaje pętlę kąta. Tryby GPS piętrzą wszystkie.

🔴 Zaawansowany. Przejdź do dziedziny częstotliwości. Zamknięta pętla drugiego rzędu zachowuje się jak masa–sprężyna–tłumik z pulsacją własną ωn\omega_n i współczynnikiem tłumienia ζ\zeta; przeregulowanie odpowiedzi skokowej to

Mp=eπζ/1ζ2M_p = e^{-\pi\zeta/\sqrt{1-\zeta^2}}

(ζ=0,7\zeta = 0{,}7 → ≈ 4,6 % przeregulowania — czucie „ostro, ale bez odbicia"). Poznaj transmitancje, wykresy Bodego i zapasy wzmocnienia/fazy: każdy dodany filtr (moduł 9) opóźnia sygnał, zjada zapas fazy i pcha pętlę ku oscylacjom — najgłębszy kompromis strojenia quada. Zrozum, czemu D-term jest różniczkującym, a więc górnoprzepustowym wzmacniaczem szumu.

⚫ Mistrz. Poza PID: LQR (optymalne sprzężenie od stanu), MPC (optymalizacja trajektorii w horyzoncie w każdym kroku) i INDI — przyrostowa nieliniowa inwersja dynamiki, wykorzystująca zmierzone przyspieszenie kątowe do kasowania błędu modelu, napędzająca współczesne badania autonomicznych wyścigów dronów. Wykonujesz identyfikację własnego quada (wstrzyknij przemiatanie częstotliwości, dopasuj transmitancję z blackboxa) i projektujesz nastawy zamiast je zgadywać.

Lista mistrzowska

  • Przewidź, zanim polecisz, co podwojenie D zrobi z szumem i z propwashem — i miej rację.
  • Naszkicuj konsekwencję na Bodem dodania lowpassa 100 Hz na D-term.
  • Zaimplementuj PID trybu rate na mikrokontrolerze i ustabilizuj nim gimbal na stole.

🖼️ Pomysły na zdjęcia: własne zrzuty odpowiedzi skokowej z blackboxa; schematy „PID controller" z Wikimedia Commons (istnieją wersje PD).

📚 Darmowe źródła: Brian Douglas „Control System Lectures" (YouTube); dokumentacja Betaflight „PID tuning"; dokumentacja deweloperska ArduPilota o sterowaniu orientacją; MIT OCW 6.302.