Rozdział 11
PID: naprawiamy wszystko
Jak pozbyć się zwisu i zatrzymać kołysanie?
Rozdział 11: PID: naprawiamy wszystko ↗
Zwis, który nie chce zniknąć
Theo: Pamiętacie rozdział 2? Nasz regulator P zostawiał drona wiszącego poniżej 2 m i żadne nie mogło tego naprawić. Czas się dowiedzieć, co może.
Żeby utrzymać drona w górze, silniki muszą pchać z siłą N, bez końca. Regulator P pcha tylko wtedy, gdy jest uchyb: . Więc żeby pchać z siłą 4,9 N, potrzebuje uchybu . Przy = 20 N/m to = 4,9/20 ≈ 24,5 cm, na zawsze. Zwis to nie błąd w strojeniu. To cena, jaką P pobiera za utrzymywanie czegokolwiek w górze.
June: Czyli potrzebujemy części regulatora, która potrafi pchać z siłą 4,9 N przy zerowym uchybie. Czegoś z pamięcią.
I: stos dawnego uchybu
Pomysł jest taki. Prowadź bieżącą sumę uchybu, czyli pole pod krzywą uchybu, dokładnie to „zbierane pole” z rozdziału 3. Pchaj proporcjonalnie do tego stosu:
Dopóki dron jest poniżej 2 m, uchyb jest dodatni i stos ciągle rośnie, więc pchnięcie też ciągle rośnie. Stos przestaje rosnąć dopiero wtedy, gdy uchyb jest dokładnie zerowy. Wtedy po prostu zostaje, trzymając ciąg, jaki zdążył zbudować. To właśnie pamięć, której chciała June.
Theo: O, to sprytne. Dron nie może się ustalić nigdzie poza 2 m, bo wszędzie indziej stos wciąż by się zmieniał.
Rozdział 11: PID: naprawiamy wszystko ↗
Najpierw zgadnij! Mika chce się pozbyć zwisu szybko, więc planuje mocno podkręcić . Co się stanie?
Widżet startuje z = 10 N/(m·s). Obserwuj trzy rzeczy: czerwone zacieniowane pole (uchyb, który się gromadzi), przerywaną pomarańczową część całkującą ciągu, która wspina się do fioletowej linii grawitacji, oraz odczyt zwisu. Przesuń do 0, a wróci zwis z rozdziału 2, potem spróbuj większych wartości. jest ustalone na 20 N/m.
Rozdział 11: PID: naprawiamy wszystko ↗
Rozdział 11: PID: naprawiamy wszystko ↗
Mika: Podkręcaj! ! Spalić to ogniem!
Mika: …czemu to się nie zatrzymuje? Podskoki rosły i rosły, a teraz dron jeździ w górę i w dół jak jojo o pół metra, bez końca!
Theo: Przy 50 przekroczyłaś jakąś krawędź. Sprawdziłem kilka wartości: poniżej mniej więcej 40 się ustala, powyżej nie (a jedno wahnięcie jojo trwa około sekundy). Zaraz zobaczymy dlaczego. Stos jest zawsze trochę spóźniony: pcha w górę jeszcze po tym, jak dron minął 2 m.
To błąd Miki i to bardzo częsty: całka naprawia zwis, ale dodaje opóźnienie, a opóźnienie powoduje wahania (nauczył nas tego prysznic). Potrzebujemy czegoś, co odpycha się od prędkości. (Według matematyki wahania jej drona powinny rosnąć w nieskończoność. Zatrzymują się na mniej więcej pół metra tylko dlatego, że przy każdym wahnięciu ciąg spada do 0 N: śmigła nie potrafią ciągnąć w dół, to ograniczenie z rozdziału 10.)
D: wirtualny amortyzator
June: W rozdziale 7 to tłumik uspokajał sprężynę. A gdyby regulator udawał tłumik?
Tłumik działa przeciwnie do prędkości. Więc dodajmy składnik, który działa przeciwnie do tego, jak szybko porusza się dron:
Spójrz na równanie drona: opór już daje . Składnik D dodaje do tego , więc dron zachowuje się tak, jakby jego opór wynosił . Dodajemy opór powietrza w oprogramowaniu.
Rozdział 11: PID: naprawiamy wszystko ↗
Rozdział 11: PID: naprawiamy wszystko ↗
Włącz duże wzmocnienie I Miki, a potem dodaj tłumienia. Nawet N·s/m przywraca stabilność (przesuwa krawędź do ): niekończące się jojo zamienia się w podskakiwanie, które wygasa. Ale przeregulowanie wciąż wynosi co najmniej jedną czwartą, ile D byś nie dodała. Ten ogromny stos po prostu za dużo pamięta. Teraz wyłącz Miki (z powrotem na 10) i spróbuj –5: spokój. I i D coś za coś: D daje miejsce na I, ale nie nieograniczone.
June: Skoro 4 jest dobre, to 10 musi być lepsze. Maksymalny amortyzator!
Mika: Pełznie w górę tak powoli… a potem i tak przelatuje 2 m? Z opóźnieniem?
Theo: June, to znowu twój miodowy dron z rozdziału 7! Powyżej szybka para jest przetłumiona. Ale teraz jest jeszcze stos, a powolny dron daje stosowi czas, żeby się przepełnił.
Tłumienie krytyczne to ζ = 1: N·s/m przy = 20. Przy = 10 przejście z = 4 na 10 podnosi przeregulowanie z 0 do około 8 %, a czas ustalania z poniżej sekundy do około 5 s. Więcej D nie zawsze znaczy lepiej; widżet mówi to teraz, gdy przesadzisz.
Mika: Czyli D przewiduje przyszłość! Widzi, dokąd dron leci, i jest tam pierwszy.
Theo: Nie do końca. Zna tylko nachylenie w tej chwili. To jak zgadywanie, gdzie wyląduje piłka, przy założeniu, że poleci prosto. Zwykle niezły strzał, ale to nie magia. Poczekaj, aż podłączymy mu rozedrgany czujnik.
Co każde pokrętło robi z biegunami
Czas użyć mapy z rozdziału 10. Zapiszmy całą pętlę, z :
Całka jest niewygodna, więc weźmy nachylenie obu stron. Nachylenie i pole znoszą się nawzajem (rozdział 3), więc nachylenie to po prostu . Grawitacja jest stała, więc jej nachylenie wynosi zero: po prostu wypada. Przy stałej wartości zadanej . Składnik po składniku:
Złóżmy je z powrotem i przenieśmy wszystko z na lewo. Trzy kropki nad oznaczają nachylenie nachylenia nachylenia:
Theo: Grawitacja zniknęła z równania. To zabójca zwisu w wersji algebraicznej: końcowa wysokość w ogóle nie przejmuje się . O ile w ogóle się ustala. Dron Miki z nigdy się nie ustalił.
Znów zgadujemy . Przy aktywnym I równanie jest trzeciego stopnia, więc są trzy bieguny. Jeśli , nie ma całkowania: branie nachylenia dodało fałszywy pierwiastek w , wspólny czynnik się skraca i dron z PD ma dwa bieguny.
Dla wielomianu trzeciego stopnia o samych dodatnich współczynnikach istnieje klasyczny test (kryterium Routha–Hurwitza), który mówi, że wszystkie trzy bieguny leżą w lewej połowie dokładnie wtedy, gdy . Dla naszego drona to krawędź urwiska:
Mika: Reguła z nazwiskami dwóch osób. Mamy po prostu w nią uwierzyć?
Theo: Nie. Sami możemy znaleźć tę krawędź.
W chwili, gdy kołysząca się para dociera do osi pionowej, jej część rzeczywista jest zerowa, więc wstawmy do równania trzeciego stopnia. Ponieważ i , części rzeczywiste i części „w bok” muszą osobno sumować się do zera:
Drugie mówi, że . Wstawmy to do pierwszego:
Rozdział 11: PID: naprawiamy wszystko ↗
Przy wartościach startowych ( = 20, bez D) krawędź leży na 40. Dokładnie tam dron Miki oszalał, a jego jojo robiło mniej więcej jedno wahnięcie na sekundę: 6,32 rad/s to własne ωn drona z P z rozdziału 7. Dodanie przesuwa krawędź do 200. Nie wierz nam na słowo: zmieniaj liczby powyżej albo suwaki poniżej i obserwuj bieguny, minimapę i odpowiedź skokową.
Rozdział 11: PID: naprawiamy wszystko ↗
- Pokrętło I () dodaje do pętli trzeci biegun i może pchać parę w prawo. Przy zbyt dużym I para przekracza granicę.
- Pokrętło D () przez dodatkowe tłumienie podnosi granicę stabilnego wzmocnienia I. Tory biegunów mogą zawracać: większe D nie przesuwa każdego bieguna w lewo.
- Pokrętło P () głównie rozsuwa oscylującą parę w górę i w dół: szybciej, ale bardziej chwiejnie, jeśli D nie nadąża.
Poligon do strojenia
Teraz na serio: start z ziemi na 2 m z prawdziwymi silnikami (0–20 N). Zdobądź wszystkie cztery gwiazdki. Za każdym razem, gdy zmienisz wzmocnienie, ostatni lot zostaje jako blady duch.
Rozdział 11: PID: naprawiamy wszystko ↗
June: Wyłączyłam anti-windup, ustawiłam = 30, = 60, = 2… i dron wystrzelił na 4 m, prosto poza swój obrazek!
Theo: Stos rósł przez cały czas, gdy silniki szły na maksa. Z włączonym anti-windupem te same wzmocnienia dają szczyt na 2,8 m. Te same pokrętła, zupełnie inna pamięć.
Dwa ostrzeżenia w sprawie D
Ostrzeżenie 1: szarpnięcie różniczkujące
Dron wisi na 1 m. W chwili s przestawiamy wartość zadaną na 1,5 m. Jeśli D używa nachylenia uchybu, to uchyb w jednej chwili skacze o pół metra. Jego nachylenie jest ogromne, a pchnięcie również.
Rozdział 11: PID: naprawiamy wszystko ↗
Rozdział 11: PID: naprawiamy wszystko ↗
Mika: Na uchybie żąda ponad 200 N? Od silników, które dają najwyżej 20?
June: A one nie umieją grzecznie odmówić. Na chwilę walą na maksa, a dron dostaje kopa w tyłek.
Branie nachylenia zmierzonej wysokości rozwiązuje problem: dron nie potrafi się teleportować, więc jego wysokość nie ma skoków. To samo tłumienie, bez szarpnięcia. Robi tak prawie każdy prawdziwy PID.
Ostrzeżenie 2: szum
Prawdziwe czujniki wysokości drżą o kilka centymetrów. Kilka centymetrów drżenia, tysiąc razy na sekundę, ma ogromne nachylenie. D wzmacnia je prosto w silniki. Rozwiązaniem jest wygładzenie pomiaru przed wzięciem nachylenia (filtr ze stałą czasową ), kosztem nieco późniejszej reakcji.
Rozdział 11: PID: naprawiamy wszystko ↗
Rozdział 11: PID: naprawiamy wszystko ↗
Mika: Dobra, D nie przewiduje przyszłości. Przewiduje to, jak szum się czuł milisekundę temu.
Co naprawiliśmy
Co udało nam się ustalić
- P pcha proporcjonalnie do uchybu, ale musi zostawić zwis, żeby utrzymać drona w górze.
- I gromadzi dawny uchyb; jedynym punktem spoczynku jest zerowy uchyb, więc eliminuje zwis, który gaśnie ze stałą czasową około . Dodaje opóźnienie, więc przy przesadzie powoduje wahania.
- D działa przeciwnie do prędkości: wirtualny tłumik, który dodaje się do oporu , więc . Więcej D nie zawsze znaczy lepiej: przetłumiony dron pełznie, a stos się przepełnia.
- Układ zamknięty to ; jest stabilny dokładnie wtedy, gdy .
- Licz D z pomiaru (bez szarpnięcia) i go filtruj (mniej szumu).
June wypróbowała nasz dronowy PID na prysznicu… i kołysało się dokładnie tak jak nam w rozdziale 0. O co chodzi z tym opóźnieniem?