PID - o co kaman?

Czy ktoś jeszcze pamięta flybara?
Awatar użytkownika
aikus
Jaskiniowiec
Posty: 16287
Rejestracja: 29-09-2014
Lokalizacja: Warszawa
Podziękował: 1772 razy
Podziękowano: 1022 razy

Postautor: aikus » 25 kwie 2018, o 08:06

Może i macie rację.
I o ile nie tęsknię jakoś specjalnie za helika mi które rozmontowywaly się w locie, to nie chce żeby moje helikiem latały idealnie jak w symulatorów przy bezwietrznej pogodzie. Muszą mieć jakąś tam podatność na podmuchy wiatru i tak dalej, to musi być latanie a nie przesuwanie punktu w przestrzeni przy pomocy manipulatora...
Moze to o to mi chodzi.. Moze tez dlatego wolę latac a niskich obrotach...
Awatar użytkownika
Kenobi36
Olimp forum
Posty: 5103
Rejestracja: 01-10-2014
Podziękował: 68 razy
Podziękowano: 508 razy

Postautor: Kenobi36 » 25 kwie 2018, o 08:46

mwx pisze:No to może w istocie lepiej byłoby przypiąć jakieś wątki w dziale FBL z dyskusjami nt. poszczególnych parametrów?

Jakby ktoś, komu by się chciało elegancko wytłumaczył P I D to też byłoby extra - myślę że niejednemu z nas przydałoby się zrozumienie podstaw teorii sterowania.

Ja mogę prymitywnie, dla osób które wiedzą jak działa Gyro

P jest jak gain gyra na ogonie w trybie Normal/Rate
Siła korekcji jest proporcjonalna do prędkości obracania się modelu względem prędkości referencyjnej.
Dla uproszczenia, jeśli nie ruszamy drążkami i model wisi to siła korekcji jest proporcjonalna do prędkości obracania się modelu.
Za małe P powoduje że model będzie niestabilny i nieprecyzyjny oraz gumowaty , niechętnie prowadzący się za drążkiem. Za duże P powodować będzie oscylacje.
Niestety bez I pozycja modelu będzie mocno dryfować dlatego potrzebne jest I

I jest jak regulowany Headhold na ogonie.
Siła korekcji jest proporcjonalna do odchylenia kątowego, czym model bardziej obrócony względem pozycji referencyjnej tym korekta jest mocniejsza.
Niestety odczyt odchylenia następuje po fakcie, czyli jak już model jest odchylony. Dodatkowo I pamięta pozycje z kilku poprzednich odczytów z żyroskopu które są przestarzałe więc wprowadzają opóźnienie. Dlatego działanie I jest opóźnione i nie jest tak precyzyjne jak P. Dlatego oba parametry, P oraz I są potrzebne.
Jeśli I jest za małe model będzie dryfował, obracał się lub przechylał. Jeśli I będzie za duże będą oscylacje.
Z obserwacji w Brainie, zauważyłem że jak I jest za małe to w szybkim locie postępowym helik zadziera do góry.

D jest to wygładzanie start i stopu.
Jeśli nastąpi gwałtowne odchylenie modelu od pozycji referencyjnej, czyli albo gwałtownie ruszymy drązkiem, albo wiatr przechyli model, to korekcja nie zadziała od razu z pełną siła lecz płynnie zacznie narastać, następnie jak odchylenie jest coraz mniejsze korekta jest płynnie osłabiana.
Zbyt małe D powoduje ze model jest agresywny, nerwowy szczególnie przy dużym P, i może przestrzeliwać pozycję po gwałtownych manewrach. Przy zbyt dużym P może model wpadać w oscylacje.
Zbyt duże D powoduje gumowatość modelu. Opóźnienie w działaniu drążków. Aczkolwiek to bardziej jest wyczuwalne w dronach.
Z obserwacji zauważyłem że Brainie jak jest za duże D to helik lubi dudnić (szybkie oscylacje) w szybkim locie postępowym. A jak jest D za małe to może wpadać w oscylacje dla odmiany w zawisie.

Wiele zależy od modelu i PID kontrolera. W quadach sprawa jest bardzo przejrzysta. Aktualnie PID kontrolery są dopracowane a wszyscy prześcigają się teraz w pisaniu skuteczniejszych oraz dających mniejsze opóźnienie filtrach wibracji.
W helikopterach dochodzą różne stany jak zawis czy szybki lot postępowy. Z jednej strony model jest w miarę stabilny dzięki inercji wirnika a z drugiej szybkość korekcji jest ograniczona przez powolne obracanie się w osiach pitch(elev) i roll(ail).
Niech Moc Będzie z Wami,
Ben
DX18 Gasser 700 Goblin 550 Protos Mini
RCmaniak.pl - SAB Goblin, MSH Protos, Spektrum, Fatshark, Cześci Trex, Drony wyścigowe
Awatar użytkownika
aikus
Jaskiniowiec
Posty: 16287
Rejestracja: 29-09-2014
Lokalizacja: Warszawa
Podziękował: 1772 razy
Podziękowano: 1022 razy

Postautor: aikus » 25 kwie 2018, o 09:05

I to jest chyba odpowiedź na jakiej wszystkim zależało najbardziej od początku!

:piwo2: :piwo2: :piwo2: :piwo2:
Awatar użytkownika
lopez
Zaczyna się rozkręcać...
Posty: 71
Rejestracja: 02-05-2018
Lokalizacja: Warszawa
Podziękował: 3 razy
Podziękowano: 34 razy

Postautor: lopez » 20 cze 2024, o 12:58

Odkopie wątek po 6 latach i napiszę co sie dowiedziałem studiując kod źródłowy Rotorflight i obserwując dyskusje na Discordzie. Kenobi opisał wszystko bardze dobrze, ja postaram się rozwinąć jeszcze kilka kwestii. Nie wszystkie elementy które porusze znajdą sie niektórych FBLach.

P. zazwyczaj to jest główny komponent kontrolujący. Ten komponent ma jednak dwie istotne wady
1. nie jest dokładny i posiada błąd uchybu, czyli słabo kontroluje sytuacje np. w zawisie, i model powoli dryfuje w wyniku czynników zewnętrznych jak wiatr i złe zbalansowanie modelu
2. aby zmniejszyć błąd uchybu podnosi sie jego wzmocnienie, a to zwykle prowadzi do oscylacji

I. Redukuje wade 1. komponentu P, czyli błąd uchybu, dryft. Jest dokładny, ale jego reakcja jest powolna. Jego wadą jest to, że mocno nasila bounce-back (przestrzelanie) przy stopach.

D. Redukuje wade 2. komponentu P, czyli oscylacje. Niekiedy nazywanym dumperem lub tłumikiem. Jest to najszybszy komponent bo reaguje na akceleracje. Jego wadą jest to, że jest czuły na wibracje i zbyt duże wzmocnienie może doprowadzić do szybkiego upalenia serw.

F. FeedForward jest komponentem, który przekazuje wychylenie drążka bezpośrednio do wyjscia, okazuje się, że na cyklice bardzo dobrze się sprawdza i to on tam dominuje. W duzym stopniu wyręcza P i jest odporny na wibracje bo nie korzysta z sygnału zyroskopu. Natomiast P nadal jest potrzebny do reakcji na wiatr.

B. Boost jest podobny do F z tym, że reaguje na akceleracje drążka, pozwala na dodanie małego "kopa" w serwo przy szybkim ruch drążka, przez co model będzie bardziej zwinny. W niektórych FBL'ach element ten jest połączony z D, w Rotorflight zostało to rozdzielone, aby móc je ustawiać niezależnie. Jako ciekawostka ten komponent jest używany w dronach jako FeedForward, ale to wynika z nieco innej fizyki tych modeli.

Style - stosowany w Vbar'ach, o ile mi wiadomo, ten parametr określa proprcje pomiędzy P i D.

Filtrowanie

Heliki to latające wibratory, a co gorsza częstotliwości wibracji od wirnika głównego są bardzo niskie, rzędu 20-50 Hz. Te częstotliwości nakładają się częstotliwośi "ruchu" (przyjmuje się 0-100Hz) więc bardzo trudno je wyeliminować. Posiadanie małych opóźnień sygnału żyroskopu jest kluczowe do tego, aby móc zastosować wyższe gainy, zwłaszcza D i mieć bardziej przecyzyjną kontrole modelu.

Najbardziej powszechnym filtrem jest filtr dolno przepustowy (LPF), ale jego charakterystyka jest dość łagodna i wprowadza istotne opóźnienia. Dlatego stosuje sie filtry pasmowo zaporowe (NOTCH). Gdy znamy prędkość obrotową wirnika, możemy ustawić taki filtr na wybranej częstotliwości i wyciąć ją selektywnie. To sprawi, że całkowite opóźnienie filtra będzie znacznie mniejsze. Gdy dostarczymy do kontrolerera sygnał z sensora obrotów, wówczas filtr może podążać za wirnikiem. Tak w praktyce działa filtr RPM w Rotorflight, automatycznie wycina wibracje wirnika i ogona oraz kilka harmonicznych. Gdy nie mamy sygnału RPM, alternatywą jest analiza FFT sygnału (Dynamic Notch), wówczas możliwa jest automatyczna identyfikacja najbardziej dokuczliwych wibracji i ich eliminacja.

Strojenie

Tu należy widzieć, że kluczowe jest wcześniejsze zestrojenie filtrów, tak aby mieć jak najbardziej czysty sygnał i jednocześnie jak najmniejsze opóźnienie, więc od tego należy zacząć. Weryfikacja konfiguracji filtrów nie jest możliwa bez zebrania logów i analizy ich. Do strojenia filtrów rekomendowany sampling rate 500Hz a najlepiej 1kHz. W trakcie strojenia PID też sie przyda wgląd do logów, ponieważ często oscylacje niewidoczne w gołym okiem będą tam widoczne. Oceniamy wtedy na ile są one bezpieczne dla serw.

Ostatnio popularną metodą strojenia jest DPI, czyli:

W pierwszej kolejności zaczyna sie od zwiększania D. Obserwujemy czy zanika bounce-back przy gwałtownych stopach. Zatrzymujemy sie gdy uzyskamy zadowalający efekt. Można też próbować znaleźć maksimum, w którym pojawią sie szybkie oscylacje i wtedy zmniejszyć o jakies 20%.

Potem podnosimy P, większe D pozwoli nam je podnieść jeszcze bardziej. Tu także obserwujemy czy pojawiaja sie oscylacje przy zatrzymaniach. Można też próbować szukać maksimum jak przy D. Paramter ten jest przydatny w osi, gdzie mamy znaczną inercję, czyli głównie Elev i Rud.

Na cyklice próbujemy kilku wartości F. Wykonujemy kilku gwałtownych manewrów i obserwujemy, czy nie pojawia sie lagowanie (za mało) lub bounce-back (za dużo). Nie spotkałem, aby ktoś używał tego na ogonie.

Pod koniec przechodzimy do I, jeśli model nadal dryfuje, zwiększamy, ale sprawdzamy czy nie pojawia sie bounce-back przy zatrzymaniach. Jeśli poprzednie kroki zostały zestrojone dobrze, bedziemy mieli szerokie okno ustawień. Osobiście ustawiam najniżą wartość która zapobiega dryfowaniu. Zbyt duża wartość może wprowadzić powolne oscylacje. W logach możemy go traktować jako wskażnik jakości. Jeśli jego wartości często się zmieniają i osiągają wysokie wartości, wówczas może to oznaczać, że a) P i D są za małe b) mamy za duże opóżnie, zbyt wolne serwo c) próbujemy sterować modelem powyżej jego fizycznych możliwości, np. przy niskich obrotach

Końcowe B to już tylko pod własne preferencje.

Kilka dodatkowych reguł, o których warto wiedzieć

1. dla różnych obrotów wirnika warto wykonać tuning osobno, na wyższych obrotach gainy bedą mniejsze, bo model jest bardziej efektywny, na niższych obrotach może być potrzeba podniesienia gainów
2. Warto mieć na uwadze proporcje P/D, bo to w głównej mierze determinuje feeling, wiec jak chcemy zwiekszyc P, to zwiekszamy też D procentowo o tyle samo
Pozdro,
Romek.
--
Trex 450 Pro+Sport Rotorflight
Awatar użytkownika
aikus
Jaskiniowiec
Posty: 16287
Rejestracja: 29-09-2014
Lokalizacja: Warszawa
Podziękował: 1772 razy
Podziękowano: 1022 razy

Postautor: aikus » 21 cze 2024, o 12:30

Ja dorzucę instrukcję obrazkową dla nieczytatych:

https://youtu.be/fusr9eTceEo?si=Qr6d_eiJnFjsX0mK

Nie tak dokładnie wyjaśnione, ale też pozwala zrozumieć co się robi.
Awatar użytkownika
kudzu
Elita forum...
Posty: 995
Rejestracja: 27-06-2020
Lokalizacja: Kraków
Podziękował: 164 razy
Podziękowano: 97 razy

Postautor: kudzu » 7 wrz 2024, o 23:29

Też fajnie wyjaśnione i również w oparciu o konfigurację Rotorflight:
https://youtu.be/Nb6GnuAUZAY?si=Ezv_j4Ch4I9QWKxN
Adam
SAB (Super Agile Brick) Goblin 380, 550
EdgeTX + Rotoflight + ExpressLRS

Wróć do „Systemy FBL”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość