← Control Platform
Fundamenty

Wizualne wprowadzenie do teorii sterowania

Zanim wejdziesz w konkretne algorytmy (PID, SMC, MPC), warto zobaczyć pojęcia fundamentalne. Tu są — z naciskiem na intuicję wizualną i interaktywność, a nie na surowe formuły. Każda sekcja zaczyna się od obrazu, math wchodzi po nim.

1. Czym jest sterowanie — pętla feedbacku

Sterowanie automatyczne to dziedzina inżynierii zajmująca się wpływaniem na zachowanie systemów dynamicznych — utrzymywaniem ich w pożądanym stanie, prowadzeniem po zadanej trajektorii, kompensacją zaburzeń. Pierwsza udana implementacja: regulator odśrodkowy Watta (1788) utrzymujący stałe obroty maszyny parowej. Pierwsza formalna analiza: James Clerk Maxwell „On governors" (1868). Złoty wiek teoretyczny: lata 1940-60 (cybernetyka Wienera, równania Wienera-Hopfa, regulator LQR Kalmana).

Wszystkie te systemy mają jedną wspólną strukturę:

tryb:
Σ+C(s)controllerP(s)plantr (setpoint)e = r − yu (sterowanie)y (wyjście)pętla sprzężenia zwrotnego

Pętla zamknięta (closed-loop): mierzymy wyjście yy, porównujemy z referencją rr żeby uzyskać uchyb e=rye = r - y, regulator CC generuje sterowanie uu, plant PP reaguje, pomiar wraca i koło się zamyka. Każda chwila = nowy cykl, każdy cykl koryguje.

Pętla otwarta (open-loop): brak pomiaru zwrotnego. Regulator strzela na podstawie samej referencji, bez sprawdzania, co rzeczywiście się dzieje. Działa tylko gdy model jest doskonały i nie ma zaburzeń. Wszystkie znane systemy biologiczne (regulacja temperatury ciała, glukozy we krwi, ciśnienia osmotycznego) używają sprzężenia zwrotnego, bo świat zewnętrzny jest nieprzewidywalny.

Co dzieje się na schemacie powyżej: animowane kropki to „pakiety" sygnałów — kolor podpowiada ich rolę. Zielone (referencja rr) wchodzi do węzła sumującego, gdzie odejmowane jest sprzężone wyjście (y-y); wynik to czerwony uchyb (ee). Regulator transformuje go w pomarańczowe sterowanie (uu). Plant produkuje niebieskie wyjście (yy), które wraca przez pętlę do sumatora. Przełącz tryb na „open-loop" — pętli zwrotnej już nie ma, regulator strzela w ciemno.

2. Przestrzeń stanów — geometryczny obraz dynamiki

Każdy system dynamiczny ma stan — minimalną wiązkę liczb, która opisuje jego sytuację w danej chwili tak wyczerpująco, że na jej podstawie wraz z przyszłymi wejściami można wyznaczyć całą przyszłość. Dla wahadła stan to (θ,θ˙)(\theta, \dot\theta) — położenie kątowe i prędkość kątowa. Dla auta: pozycja, prędkość. Dla reaktora chemicznego: temperatura, stężenia.

Stan to punkt w pewnej przestrzeni — przestrzeni stanów Rn\mathbb{R}^n. Trajektoria układu to krzywa w tej przestrzeni. Dynamika to pole wektorowe — z każdego punktu strzałka pokazuje, w którym kierunku stan ruszy następnie.

x˙(t)=f(x(t),u(t)),xRn,  uRm.\dot x(t) = f(x(t), u(t)), \qquad x \in \mathbb{R}^n,\; u \in \mathbb{R}^m.

Dla wahadła bez sterowania (u=0u = 0):

(θ˙θ¨)=(θ˙(g/)sinθ).\begin{pmatrix} \dot\theta \\ \ddot\theta \end{pmatrix} = \begin{pmatrix} \dot\theta \\ -(g/\ell)\sin\theta \end{pmatrix}.

Punkty równowagi to miejsca, gdzie pole wektorowe znika — f(x)=0f(x^*) = 0. Wahadło ma dwie równowagi: θ=0\theta = 0 (góra) i θ=π\theta = \pi (dół). Pierwsza niestabilna (mały błąd → spadanie), druga stabilna (mały błąd → powrót).

Sterowanie zmienia pole wektorowe. Wybór uu w każdej chwili = zmiana, w którym kierunku trajektoria pójdzie z bieżącego stanu. Cały moduł 3 (SMC) to o tym, jak wybierać uu żeby stan trajektoria wpadła na zaprojektowaną krzywą w tej przestrzeni i tam zostawała.

3. Punkty równowagi — galeria sześciu typów

Dla układu liniowego x˙=Ax\dot x = A x punkt równowagi jest jeden: x=0x = 0. Jego typ (czy stabilny, jak trajektorie się do niego zachowują) zależy wyłącznie od wartości własnych macierzy AA. Wszystkie możliwe typy w 2D mieszczą się w sześciu klasach:

węzeł stabilny
trace = -3.0 · det = 2.0
λ₁, λ₂ < 0 (rzeczywiste). Trajektorie zbiegają wprost do origin.
ognisko stabilne
trace = -1.0 · det = 2.0
λ = α ± βi, α < 0. Spirala do środka — oscylacje wygasające.
centrum
trace = 0.0 · det = 2.0
λ = ±βi. Orbity zamknięte — wahania bez tłumienia.
węzeł niestabilny
trace = 3.0 · det = 2.0
λ₁, λ₂ > 0. Trajektorie uciekają wprost od origin.
ognisko niestabilne
trace = 1.0 · det = 2.0
λ = α ± βi, α > 0. Spirala na zewnątrz — oscylacje narastające.
siodło (saddle)
trace = 0.0 · det = -1.0
λ₁ > 0, λ₂ < 0. Niestabilne — wzdłuż jednej osi przyciąga, wzdłuż drugiej odpycha.

Stabilność: wszystkie wartości własne mają ujemne części rzeczywiste (lewa półpłaszczyzna zespolona). Trajektorie zbiegają do origin niezależnie od startu. Węzeł = bez oscylacji, ognisko = z oscylacjami wygasającymi.

Niestabilność: chociaż jedna wartość własna ma dodatnią część rzeczywistą. Trajektorie uciekają.

Siodło — wartości własne rzeczywiste o przeciwnych znakach. Niestabilne, ale ze szczególnym układem: wzdłuż jednego kierunku własnego (eigenvector dla ujemnej λ) trajektorie wchodzą; wzdłuż drugiego — uciekają. Cart-pole zlinearyzowany wokół pionu to dokładnie siodło — trzeba ciągle stabilizować.

Centrum — wartości czysto urojone. Orbity zamknięte (jak planety). Nie ma dyssypacji, więc energia układu jest zachowana. Idealne wahadło bez tarcia, układy hamiltonowskie. W praktyce — graniczny przypadek między stabilnością a niestabilnością; każde realne tarcie zaprzecza centrum.

4. Klasyfikator równowagi — interaktywna mapa

Wartości własne macierzy AA wyznaczone są przez jej ślad tr(A)=a11+a22\mathrm{tr}(A) = a_{11} + a_{22} i wyznacznik det(A)=a11a22a12a21\det(A) = a_{11}a_{22} - a_{12}a_{21}. Wzór:

λ1,2=tr(A)±tr(A)24det(A)2.\lambda_{1,2} = \frac{\mathrm{tr}(A) \pm \sqrt{\mathrm{tr}(A)^2 - 4\det(A)}}{2}.

Dlatego cała klasyfikacja punktu równowagi 2D mieści się na jednej płaszczyźnie (tr,det)(\mathrm{tr}, \det). Klikaj w płaszczyźnie poniżej, żeby zobaczyć każdy typ:

presety
klasyfikacja
ognisko stabilne (stable focus) — spirala do środka
trace-1.00det2.00disc-7.00λ₁-0.50 + 1.32iλ₂-0.50 + -1.32i

Klikaj w płaszczyznę trace-det powyżej (lub wybierz preset), żeby zmienić macierz A. Phase portrait i wartości własne aktualizują się w czasie rzeczywistym.

płaszczyzna trace-det
det = trace²/4stabilnewęzeł / ogniskoniestabilnewęzeł / ogniskosiodłatracedet
wartości własne — płaszczyzna zespolona
Re(λ)Im(λ)stabilne ◀▶ niestabilne
phase portrait — trajektorie w przestrzeni stanu
x₁x₂

Krzywa det=tr2/4\det = \mathrm{tr}^2/4 oddziela węzły (lewa, ujemny dyskryminant kwadratowy) od ognisk (prawa, dodatni → zespolone wartości). Linia det=0\det = 0 to graniczne przypadki z zerową wartością. Linia tr=0\mathrm{tr} = 0 przy det>0\det > 0 to centra.

Dla wielowymiarowych planta (cart-pole 4D, manipulator 6D) klasyfikacja jest bardziej złożona, ale fundamentalny wzór działa: wartości własne wyznaczają zachowanie lokalnie. Sterowanie polega na zmianie macierzy układu zamkniętego (przez ABKA - BK w LQR) tak, by wszystkie wartości własne lądowały w lewej półpłaszczyźnie z odpowiednim marginesem.

5. Stabilność i funkcja Lapunova

Wartości własne mówią o stabilności liniowej. Dla nieliniowych układów (cart-pole pełny, wahadło z dużym kątem) potrzebujemy mocniejszego narzędzia: funkcji Lapunova.

Pomysł Lapunova (1892): jeśli istnieje skalarna funkcja V(x)0V(x) \ge 0 zerująca się tylko w równowadze, i jej wartość maleje wzdłuż trajektorii (czyli V˙<0\dot V < 0), to układ jest stabilny — trajektoria spada po poziomicach V coraz niżej, aż osiągnie origin.

V(x)>0  dla x0,V(0)=0,V˙(x)<0  dla x0    x0.V(x) > 0\;\text{dla } x \ne 0, \quad V(0) = 0, \quad \dot V(x) < 0\;\text{dla } x \ne 0 \;\Rightarrow\; x \to 0.

Najczęściej wybieramy VV jako analog energii układu — np. dla masa-sprężyna-tłumik:

V(x1,x2)=12(x12+αx22)(odpowiednik energii spręz˙ynowej + kinetycznej).V(x_1, x_2) = \tfrac{1}{2}(x_1^2 + \alpha x_2^2) \quad\text{(odpowiednik energii sprężynowej + kinetycznej)}.

Trajektoria krąży po elipsach V=cV = c dla różnych stałych. Tłumienie dyssypuje energię — trajektoria przecina elipsy od większych do mniejszych. Wizualnie:

parametry układu
k (sztywność)1.00
c (tłumienie)0.50
x₀ (pozycja start)1.50
ẋ₀ (prędkość start)1.00

Niebieskie elipsy — kontury (poziomice) funkcji Lapunowa V(x)=12(x12+αx22)V(x) = \tfrac{1}{2}(x_1^2 + \alpha x_2^2). Każda elipsa = stała wartość V (czyli stała „energia"). Większe elipsy = wyższa V.

Niebieska linia — trajektoria układu z zadanego startu. Przecina elipsy malejąco: każda kolejna elipsa, którą przekracza, jest mniejsza. To znaczy V˙<0\dot V < 0 — stąd układ jest stabilny (Lapunow).

Spróbuj c = 0: trajektoria krąży po stałej elipsie — to centrum, brak dyssypacji, V stałe. Spróbuj k ≈ 4 z większym c — silne dyssypatywne ognisko, trajektoria szybko zbiega do środka.

x = 0 (równowaga)x₁x₂ = ẋ₁

Co tu widać: niebieskie elipsy to poziomice funkcji Lapunova (kontury stałej „energii"). Trajektoria zaczyna się na zewnętrznej elipsie (większa V) i monotonicznie przekracza coraz mniejsze elipsy, zbiegając do origin. Każde przecięcie elipsy = utrata części energii do tłumienia.

Ustaw c=0c = 0 (zerowe tłumienie) — trajektoria krąży po jednej stałej elipsie. To jest centrum z §3: orbita zamknięta, energia zachowana, układ na granicy stabilności.

Dlaczego to tak ważne: prawie wszystkie dowody stabilności w nieliniowym sterowaniu (SMC, MRAC, backstepping) opierają się na konstrukcji funkcji Lapunova. Cała magia modułu 3 (SMC) — w jednym dowodzie z kandydata V=12s2V = \tfrac{1}{2} s^2.

6. Linearyzacja — okiełznanie nieliniowości

Świat fizyczny jest nieliniowy. Wahadło ma sinθ\sin\theta, masa toczy się po krzywej, prędkość auta wpływa kwadratowo na opór powietrza. Wszystkie nasze klasyczne narzędzia (transmitancje, Bode, LQR, MPC) wymagają liniowości. Co robić?

Linearyzować — zastąpić krzywą prostą styczną w wybranym punkcie pracy. Pomysł: w małym otoczeniu x0x_0 funkcja jest „prawie liniowa", więc klasyczne metody działają tam dobrze.

funkcja
punkt linearyzacji x₀
x₀0.50
wartości
f(x₀)0.479f'(x₀) (nachylenie)0.878max |błąd| ±10.320
-3.14-1.570.001.573.14-101f(x) = sin xstyczna w x₀

Linearyzacja = zastąpienie krzywej styczną w wybranym punkcie. W otoczeniu x0x_0 styczna dobrze przybliża funkcję; im dalej, tym gorzej. Formalnie:

f(x)f(x0)+f(x0)(xx0)+O((xx0)2).f(x) \approx f(x_0) + f'(x_0)(x - x_0) + O\big((x - x_0)^2\big).

Dla f(x)=sinxf(x) = \sin x w x0x_0 = 0.50: styczna ma nachylenie 0.878. Zielone pasmo to obszar ±1\pm 1 wokół x0x_0 — w nim błąd przybliżenia jest maksymalnie 0.320. Daleko od pasma styczna jest bezużyteczna.

Po co to w sterowaniu? Nieliniowy plant (cart-pole, manipulator, dron) ma równania z sin,cos\sin, \cos, mnożeniem stanów itp. — żadnej klasycznej teorii (LQR, MPC, Bode, Nyquist) nie da się do tego bezpośrednio użyć. Linearyzacja wokół punktu pracy (np. wahadło w pionie) daje liniowe równania, dla których cała maszyneria działa. Pułapka: gwarancje są lokalne — kontroler dostrojony pod linearyzację może się wywalić, gdy stan oddali się od punktu pracy. Pokazaliśmy to w module 1 §2 (cart-pole nieliniowy vs zlinearyzowany).

Dla układu dynamicznego x˙=f(x,u)\dot x = f(x, u) linearyzacja wokół punktu pracy (x,u)(x^*, u^*) daje:

x~˙Ax~+Bu~,A=fxx,u,  B=fux,u\dot{\tilde x} \approx A\,\tilde x + B\,\tilde u, \quad A = \frac{\partial f}{\partial x}\bigg|_{x^*, u^*},\; B = \frac{\partial f}{\partial u}\bigg|_{x^*, u^*}

gdzie x~=xx\tilde x = x - x^*, u~=uu\tilde u = u - u^*. A,BA, B to macierze jacobianów. To jest LTI (liniowy z czasem niezmienny) — gotowe dla wszystkich klasycznych technik.

Cena: gwarancje są lokalne. Jeśli kontroler zaprojektowany na linearyzacji zostaje wystawiony na duże odchylenia od punktu pracy, może się wywalić. Pokazaliśmy to w module 1 §2 (cart-pole) — dla małych θ modele pokrywają się, dla 60°+ linearyzowany przewiduje eksponencjalny rozjazd, którego pełna fizyka nie robi.

Strategie z nieliniowością:

  • Linearyzacja + LQR/MPC + gain scheduling (gdy parametry się zmieniają, moduł 8)
  • Sterowanie z gwarancjami nieliniowymi: SMC (moduły 3-4), backstepping, feedback linearization (atlas /topics)
  • Nonlinear MPC — rozwiązanie problemu optymalizacji z pełnymi nieliniowymi równaniami (moduł 5, krótko)

7. Co dalej — przewodnik po modułach

Po fundamentach jesteś gotów do konkretnych technik. Sugerowana ścieżka: