Moduł 00 · wprowadzenie

Wprowadzenie do sterowania

Sprzężenie zwrotne, klasyfikacja kontrolerów (klasyczne / nieliniowe / predykcyjne), wskaźniki jakości i mapa kursu.

1. Manualna regulacja zbiornika — po co w ogóle automatyka

Najlepszy argument za sterowaniem automatycznym to spróbuj zrobić to sam. Poniżej zbiornik z dopływem qinq_{in}, regulowanym przez Ciebie suwakiem, i wypływem proporcjonalnym do h\sqrt{h} (równanie Torricellego). Twoje zadanie: utrzymać poziom h=r=0.5h = r = 0.5 m przez 30 sekund.

h˙  =  1A(qin(t)    c(t)h),A=1m2.\dot h \;=\; \frac{1}{A}\Big(q_{in}(t) \;-\; c(t)\,\sqrt{h}\Big), \qquad A = 1\,\mathrm{m^2}.

Haczyk: współczynnik wypływu c(t)c(t) nie jest stały. Zmienia się powoli sinusoidalnie — c(t)=c0+c1sin(ωt)c(t) = c_0 + c_1\sin(\omega t), z c0=0.05c_0 = 0.05, c1=0.02c_1 = 0.02, ω=0.4\omega = 0.4 rad/s. Ty tego nie widzisz; widzisz tylko skutek (poziom dryfuje, choć dopływ trzymasz stały). Po 30 s porównamy Twój całkowy błąd absolutny IAE=0Thrdt\mathrm{IAE} = \int_0^T |h - r|\,dt z wynikiem PID dostrojonego ręcznie pod identyczne zaburzenie.

t = 0.00 / 30 s
q_inr = 0.5h = 0.500 m

sterowanie ręczne

q_in (dopływ)0.035 m³/s
00.250.50.7510612182430r = 0.5h (poziom)q_in (sterowanie)t [s]h [m] · q_in [m³/s]

Cel: utrzymaj poziom hh w paśmie 0.45h0.550.45 \le h \le 0.55 m przez T=30T = 30 s, regulując ręcznie dopływ qinq_{in}. Wewnątrz zbiornika kryje się zaburzenie: c(t)=c0+c1sin(ωt)c(t) = c_0 + c_1\sin(\omega t) — współczynnik wypływu zmienia się powoli, a Ty nie wiesz jak. Po 30 s ujawnimy IAE=0Thrdt\mathrm{IAE} = \int_0^T |h - r|\, dt i porównamy z wynikiem PID dostrojonego pod ten sam plant.

Dlaczego ten eksperyment ma sens

To nie jest test umiejętności manualnej — to argument informacyjny. Człowiek widzi tylko poziom, a nie współczynnik wypływu. Każda korekta dopływu trafia do układu z latencją obserwacyjno-decyzyjną rzędu 200 ms i jest dawkowana w skokach 0.001 m³/s. Regulator PID widzi błąd e=rhe = r - h co milisekundę i odpowiada gładko proporcjonalnie do błędu, jego całki i pochodnej. Różnica IAE rzędu 5–10× to nie magia — to przewaga pasma decyzyjnego i ciągłej akcji.

W modułach 2–5 rozłożymy tę przewagę na czynniki pierwsze: P (proporcjonalność do błędu) → I (eliminacja błędu ustalonego) → D (kompensacja prędkości błędu) → SMC (gwarancja zbieżności nawet pod zaburzeniem) → MPC (uwzględnienie ograniczeń 0qinqmax0 \le q_{in} \le q_{\max} w sposób optymalny).

2. Otwarta pętla vs sprzężenie zwrotne

Drugi argument za sterowaniem zwrotnym jest formalniejszy: gdy model jest dokładny, sterowanie zaplanowane z góry (open-loop / feedforward) wystarcza. Gdy nie jest — różnica wychodzi natychmiast. Plant (obiekt sterowania — patrz moduł 1): drugi rząd masa-sprężyna-tłumik.

mx¨+cx˙+kx=u+d,m=1kg,  c=2Nsm,  k=4Nm.m\,\ddot x + c\,\dot x + k\,x = u + d, \qquad m=1\,\mathrm{kg},\; c=2\,\tfrac{\mathrm{Ns}}{\mathrm{m}},\; k=4\,\tfrac{\mathrm{N}}{\mathrm{m}}.

Cel: pozycja xx ma trafić w referencję r=1r = 1 m. Dwa identyczne planty stoją obok siebie:

  • open-loop dostaje stały feedforward uOL=kru_{OL} = k\,r, idealnie wyliczony z modelu nominalnego. Bez sprzężenia. Nie wie, że istnieje wyjście.
  • closed-loop dostaje feedforward + człon proporcjonalny: uCL=Kp(rx)+kru_{CL} = K_p (r - x) + k\,r z Kp=8K_p = 8. Widzi xx na bieżąco i koryguje błąd.

Bez zaburzeń oba osiągają rr. Naciśnij „zaburz" w trakcie biegu — wstrzykniemy stałe zaburzenie siły d=3d = 3 N i zobaczymy, kto się utrzyma.

t = 0.00 / 12 s
open-loopx = 0.000 mclosed-loopx = 0.000 mr = 1
-0.40.321.051.782.502.44.87.29.612r (cel)x — open-loopx — closed-loop (P + ff)t [s]x [m]-226101402.44.87.29.612u — open-loopu — closed-loopt [s]u [N]

Matematyka błędu ustalonego

W stanie ustalonym x¨=x˙=0\ddot x = \dot x = 0, więc dla open-loop:

kxss=uOL+d=kr+d    essOL=rxss=dk.k\,x_{ss} = u_{OL} + d = k\,r + d \;\Longrightarrow\; e_{ss}^{OL} = r - x_{ss} = -\frac{d}{k}.

Błąd jest liniowy w zaburzeniu — dwa razy większe dd daje dwa razy większy błąd. Dla closed-loop:

kxss=Kp(rxss)+kr+d    essCL=dk+Kp.k\,x_{ss} = K_p(r - x_{ss}) + k\,r + d \;\Longrightarrow\; e_{ss}^{CL} = -\frac{d}{k + K_p}.

Błąd nadal niezerowy, ale pomniejszony (k+Kp)/k(k + K_p)/k razy. Dla naszych liczb to 12/4=3×12/4 = 3\times. Większe KpK_p daje mniejszy błąd, ale za to ryzykuje niestabilność i większe przeregulowanie. Pełna eliminacja esse_{ss} wymaga członu całkującego — to PID, moduł 2.

3. Co znaczy „dobrze sterować" — wskaźniki jakości

Mając regulator z § 2 możemy go ocenić tylko przy konkretnej definicji jakości. Cztery klasyczne wskaźniki dla odpowiedzi skokowej (krok referencji rr z 0 do 1 w t=0t = 0):

  • czas wzrostu trt_r — od 10 % do 90 % wartości docelowej. Mówi „jak szybko reaguje".
  • czas ustalania tst_s — moment, od którego trajektoria pozostaje na trwałe w paśmie ±2 % rr. Mówi „jak szybko się uspokaja".
  • przeregulowanie Mp=(xmaxr)/rM_p = (x_{max} - r)/r — jak bardzo przeskoczył cel. Im wyższe, tym agresywniejszy, ale ryzykowniejszy (ograniczenia, kolizje).
  • IAE =0Tedt= \int_0^T |e|\,dt — łączny błąd całkowity. Jedna liczba zamiast czterech, ale traci informację o profilu czasowym.

Pociągnij suwakami i obserwuj kompromis: większe KpK_p skraca trt_r, ale zwiększa MpM_p i wymagane sterowanie. Większe tłumienie cc tłumi oscylacje, ale wydłuża tst_s. Nie ma „najlepszych" parametrów — są tylko najlepsze pod zadane wymagania. To jest to, co uczy się dostrajać w kolejnych modułach.

parametry regulatora i plant

K_p (wzmocnienie)8.0
c (tłumienie)2.0 Ns/m
zlinearyzowany reżim (układ zamknięty)
ω_n3.46 rad/sζ (tłumienie)0.289
niedotłumiony — będzie oscylować
00.511.5201.22.43.64.86t_r (90%)t_sM_p = 39.0%r (cel)x (odpowiedź)t [s]x [m]
t_r (rise 10→90%)
0.380 s
czas wzrostu z 10% do 90% r
t_s (settling ±2%)
3.210 s
wejście w pasmo tolerancji
M_p (overshoot)
39.0 %
(x_max − r) / r
IAE
0.711 m·s
∫ |e| dt — łączny wskaźnik

Skąd biorą się te wzory

Plant z § 2 z regulatorem P + feedforward daje układ zamknięty drugiego rzędu:

mx¨+cx˙+(k+Kp)x=(Kp+k)r.m\,\ddot x + c\,\dot x + (k + K_p)\,x = (K_p + k)\,r.

Jego częstość naturalna i tłumienie:

ωn=k+Kpm,ζ=c2m(k+Kp).\omega_n = \sqrt{\frac{k + K_p}{m}}, \qquad \zeta = \frac{c}{2\sqrt{m\,(k + K_p)}}.

Klasyczne formuły dla układu drugiego rzędu (dla ζ<1\zeta < 1):

Mp=exp ⁣(πζ1ζ2),ts4ζωn.M_p = \exp\!\left(-\frac{\pi\,\zeta}{\sqrt{1 - \zeta^2}}\right), \qquad t_s \approx \frac{4}{\zeta\,\omega_n}.

Możesz porównać przewidywanie analityczne z odczytaną wartością z symulacji — w paśmie środkowym ζ(0.3,0.8)\zeta \in (0.3, 0.8) zgodność jest na poziomie kilku procent. Gdy ζ>1\zeta > 1 wzór na MpM_p traci sens (nie ma przeregulowania) i musisz odczytać tst_s z dwóch eksponent superpozycji — symulacja w tym pomaga.

4. Klasyfikacja — mapa rodzin algorytmów

Tradycyjna taksonomia metod sterowania (klasyczne / nowoczesne, liniowe / nieliniowe) jest historyczna i nie pomaga w wyborze algorytmu pod konkretny problem. Bardziej praktyczne pytanie brzmi: co wiem o obiekcie, jak chcę kształtować sygnał i czy parametry kontrolera mają się zmieniać w czasie. To trzy osie poniższej mapy:

  • oś X · informacja o plant — od brak modelu (PID dostraja się empirycznie), przez liniowy (LQR/MPC ze zlinearyzowanym układem), po uczony (RL z modelem zastępczym).
  • oś Y · forma sygnału sterowania algebraiczna formuła (PID, LQR), przełączające z funkcją sign(s)\mathrm{sign}(s) (SMC), albo wynik optymalizacji rozwiązywanej online (MPC: QP per krok).
  • oś Z · parametry w czasiestałe (zaprojektowane raz), adaptacyjne (wolno aktualizowane online — MRAC, gain scheduling), albo online learning (RL, ILC z błędu poprzedniej iteracji).

W kursie omawiamy 8 kontrolerów rozsianych po tej mapie (kropki wypełnione, klik → moduł). Pozostałe 10 to atlas — krótkie hasła w /topics/<slug> z paragrafem „co", paragrafem „kiedy" i odnośnikami do klasycznej literatury. Atlas jest punktem startowym dla studenta, który chce wyjść poza kurs, oraz miejscem, do którego trafiają hasła kandydujące do awansu na pełny moduł (oznaczone ).

Domyślnie mapa rzutuje oś X (model) na poziom i oś Y (forma) na pion; oś Z (parametry) jest zakodowana stylem ramki kropki — ciągła = stałe, kreskowana = adaptacyjne, kropkowana = online learning. Trzy przyciski powyżej wykresu pozwalają zamienić, które dwie z trzech osi tworzą rzut.

Mapa kontrolerów

brakliniowynieliniowyuczonyoś X · informacja o plantformułaprzełączanieoptymalizacjaoś Y · forma sygnału sterowaniaoś Z (kodowana stylem ramki) · parametry w czasie:stałeadaptacyjneonlinePIDSMCSMC*MPCLQRMRACGSRLLQGH∞PPBSFBLFlatPBCImpILCESC
filtry:
w kursie (klik → moduł)atlas (klik → /topics)kolejny kandydat na pełny moduł

Co wynika z położenia

Lewy-dolny róg domyślnego rzutu (model × forma) to PID, ILC i ESC — metody, które nie wymagają jawnego modelu. PID dostraja się empirycznie; ILC poprawia sygnał z próby na próbę; ESC sonduje kosztową hiperpowierzchnię modulacją sinusoidalną. Wspólny mianownik: brak modelu = brak gwarancji optymalności, ale praktyczna odporność na drobne mismatchy.

Środek-góra to MPC (i LQR jako jego graniczny przypadek): wymaga modelu liniowego (lub ze zlinearyzowanego), ale daje optymalność i łatwą obsługę ograniczeń jako liniowych nierówności w QP.

Prawa kolumna (modele nieliniowe) to SMC, backstepping, feedback linearization, flatness-based, passivity-based i impedance — różniące się głównie tym, jakiej własności modelu używają. SMC potrzebuje tylko jawnego ograniczenia niepewności; feedback linearization — pełnej znajomości i dokładności modelu; passivity-based — pasywności (lub konstruowalnej funkcji magazynowej).

Górny rząd (parametry adaptacyjne / online-learning) to MRAC, gain scheduling i RL. Tu klucz to czas reakcji na zmianę modelu: gain scheduling przełącza w stałych zaplanowanych punktach; MRAC adaptuje wolno, jeśli sygnał jest „bogaty" (persistent excitation); RL uczy w skali eksperymentów.

↪ Wszystkie hasła atlasu listą

5. Zapowiedź — sześć kontrolerów na cart-pole

Wszystko, co zobaczyłeś dotąd, było w jednym wymiarze (zbiornik) lub dwóch (masa-sprężyna). Cart-pole — wahadło odwrócone na wózku — to standardowy benchmark sterowania nieliniowego (4D, niestabilna dynamika). Stan: [x,x˙,θ,θ˙][x, \dot x, \theta, \dot\theta], gdzie θ\theta to odchylenie od pionu. Bez sterowania wahadło spada, bo równowaga jest niestabilna.

Galeria poniżej pokazuje sześć kontrolerów rozwiązujących ten sam scenariusz: start z θ0=0.3\theta_0 = 0.3 rad, w t=2t = 2 s impulsowe zaburzenie kątowe Δθ˙=+0.6\Delta \dot\theta = +0.6. Czas symulacji 5 s, model zlinearyzowany wokół pionu (pełna nieliniowa dynamika z funkcjami sin,cos\sin, \cos w module 1). Najedź na panel — link prowadzi do odpowiedniego modułu.

Wszystkie panele: identyczny scenariusz — θ₀ = 0.3 rad, impuls Δθ̇ = +0.6 w t = 2 s, model zlinearyzowany wokół pionu. Galeria pokazuje charakter zachowania — pełne implementacje (z nieliniowym modelem, prawdziwym QP dla MPC, dowodem Lapunowa dla SMC) trafiają do modułów 2–5.

Co warto zauważyć

  • PID i PID + anti-windup dają niemal identyczną trajektorię, gdy sterowanie nie wchodzi głęboko w saturację. AW staje się krytyczne, gdy umaxu_{\max} jest mniejsze, a zaburzenie większe — bez niego całkujący człon „wybija się" i układ ma długi przeregulowany powrót.
  • SMC klasyczne ma chattering widoczny w trajektorii sterowania u(t)u(t) — szybkie oscylacje wokół powierzchni s=0s = 0. To jest cecha algorytmu, a nie błąd numeryczny: sgn(s)\mathrm{sgn}(s) przełącza się przy każdym przejściu zera ss.
  • SMC super-twisting daje gładkie sterowanie kosztem złożoności (drugiego rzędu sliding-mode). Dla większości aplikacji praktycznych — pierwszy wybór z rodziny SMC.
  • LQR i MPC dzielą tę samą funkcję sprzężenia u=Kxu = K x — różnią się tym, co dzieje się przy uumax|u| \to u_{\max}. LQR niczego nie wie o tym ograniczeniu i jeśli zażąda 50 N, „dostanie" 50 N. MPC traktuje ograniczenie jako część zadania optymalizacji per krok; w tej galerii uproszczone do prostego przycięcia, ale w module 5 zobaczysz pełne sformułowanie QP.