P.I.D.'y - o co kaman?

Dział specjalnie dla tri, quad, hexa, okto (i co tam jeszcze wymyślą) kopterów

Moderatorzy: moderatorzy2014, moderatorzy

Awatar użytkownika
Rurek
Posty: 16419
Rejestracja: środa 10 mar 2010, 15:21
Lokalizacja: AIP ENR 5.5 - AAA 153 :-)

P.I.D.'y - o co kaman?

Post autor: Rurek »

Pozwoliłem sobie wykonać "przedruk" podrzucony przez Artu, jeżeli zgłosi się autor - oczywiście zostanie podpisany.

................................................................................................................



P - to czułość żyr - wystarczy ze pracuje na 60% zakresu użytecznego - za wysokie będziesz widział ze strzela w silniki.
I - im większe tym quad powinien szybciej wracać do poziomu - przynajmniej u mnie tak to wygląda. Małe I to kopter gdy go pochylisz to powoli wraca do poziomu . Za duże I to przy pochyleniu i puszczeniu drążka quad zakłada za dużą kontrę żeby wyrównać
D - moim zdaniem najważniejsze - małe D quad flakowaty i buja się na boki silniki nie nadążają wyrównywać . D w sam raz quad jest jak skala - przy opadaniu nie telepie nim .
D za duże - strzały w silniki , quad sztywny - przy opadaniu telepie itp.
Zanim nie uporasz się z drganiami każde zwiększenie pidow będzie skutkowało zakłóceniami i nieprzewidywalnym zachowaniem drona. Oczywiście możesz znaleźć taki punkt ze nic się nie wzbudza ale jeśli masz duże drgania ten punkt będzie "nisko" i quad nie będzie latał tak ja mógłby latać.
Także pierwsza sprawa zawsze eliminacja drgań . Potem sam zobaczysz ze jak nie ma drgań to użyteczny zakres regulacji pidow jest znacznie bardziej szeroki i nawet na dużym wzmocnieniu będzie latać dobrze. Potem juz tylko obserwujesz czy nie wpada w oscylacje przy opadaniu lub podczas lotu postępowego itp.

yaw - rudd (obroty wokół własnej osi)
pitch - elev (pochylenie przód\tył)
roll - aile (pochylenie lewo\prawo)
--------------------------------------------------
RATE - to są współczynniki "siły" implementowania PID'ów na poszczególnych osiach. Ponieważ pitch/roll są symetryczne to masz dla nich jeden, ten sam współczynnik, a dla Yaw oddzielnie, w najnowszym sofcie jak dasz pitch/roll na 6 to quad kręci pętelki w miejscu jak opętany nie do opanowania
--------------------------------------------------------------------------

P- współczynnik części proporcjonalnej -
im większy odchylenie tym mocniejsza reakcja (np reakcja na odchyłkę od poziomu o 10stopni jest 2 razy mocniejsza niż reakcja na odchyłkę 5stopni). Jeżeli wartość P jest zbyt wysoka to podczas powrotu do pozycji wyjściowej/zerowej dojdzie do przekroczenia pozycji i konieczna będzie przeciwna siła do wyrównania. Wytworzy to efekt oscylacji dopóki stabilności nie zostanie ostatecznie osiągnięta a w ekstremalnych przypadkach spowoduje to całkowitą destabilizację koptera.
Zwiększanie wartości dla P:
Wirnikowiec stanie się bardziej stabilny aż do momentu gdy P jest zbyt wysokie i wirnikowiec zacznie drgać i tracić kontrolę. Zauważysz bardzo silny opór siły na wszelkie próby poruszenie wirnikowca.
Spadek wartości dla P:
Będzie „pływało/dryfowało” podczas sterowania dopóki P jest zbyt niskie i wirnikowiec będzie bardzo niestabilny. Będzie stawiał mniejszy opór (będzie bardziej zmulony) podczas wszelkich prób zmiany orientacji.

Lot akrobacyjny: Wymaga nieco wyżej ustawionego parametru P
Delikatny płynny lot: wymaga nieznacznie niżej ustawionego parametru P



I - współczynnik członu całkującego -
im odchyłka dłużej trwa tym mocniejsza reakcja (np odchyłka o 5stopni utrzymująca się w czasie powoduje coraz silniejszą reakcję). Jest to okres czasu, dla którego zmiana prędkości kątowej jest mierzona i uśredniana. Wartość siły niezbędnej do powrotu do pozycji wyjściowej wzrasta im dłużej trwa odchylenie. Wyższy parametr I powoduje stabilniejsze trzymanie pozycji.
Zwiększenie wartości parametru I:
Zwiększenie zdolności do zachowania ogólnej pozycji wyjściowej i zmniejszenia „pływania” wirnikowca, ale także zwiększają opóźnienie w powrocie do pozycji wyjściowej. Zmaleje również znaczenie P.
Zmniejszenie wartości dla I:
Poprawi reakcję na zmiany, ale zwiększy drift (poślizg) i zmniejszy zdolność do utrzymywania pozycji. Zwiększy również znaczenie P.


Lot akrobacyjny: wymaga nieznacznie niżej ustawionego parametru I
Delikatny płynny lot: Wymaga nieco wyżej ustawionego parametru I


D - współczynnik członu różniczkującego -
uwzględnia szybkość zmian i ich kierunek (np mocniejsza reakcja jeżeli odchyłka jest np 5stopni ale narasta niż jak jest 5stopni ale maleje). Jest to prędkość, przy której wirnikowiec wraca do pierwotnego położenia. Wyższe D (jak to jest wartość ujemna oznacza to mniejszą liczbę - tj. bliżej zera) będzie oznaczało że wirnikowiec wróci do pozycji wyjściowej bardzo szybko.
Zwiększenie wartości D:
(pamiętaj oznacza mniejszą liczbę, gdyż jest to wartość ujemna) poprawia szybkość, z jaką wirnikowiec wraca do pierwotnej pozycji. Wraz ze zwiększeniem szybkości odzyskiwania pozycji rośnie prawdopodobieństwo jej przekroczenia i oscylacji. Będzie również zwiększało wpływ parametru P
Zmniejszenie wartości D:
(pamiętaj oznacza to wyższą liczbę gdy jest to wartość ujemna - czyli dalej od zera) redukcja drgań podczas powrotu z odchylenia do pozycji wyjściowej. Prędkość powrotu do pozycji wyjściowej maleje. Osłabia również działanie parametru P

Lot akrobacyjny: Zwiększ D (pamiętaj oznacza mniejszą liczbę, gdyż jest to wartość ujemna - tj. bliżej do zera)
Delikatny płynny lot: Zmniejsz D (pamiętaj, oznacza wyższą liczbę, gdy jest to wartość ujemna - czyli dalej od zera)



regulacja:--------------------------------------------------------------
P -jest dominującą częścią PID i jego zmiana doprowadzi do dobrych właściwości lotnych.
Podstawowe ustawienia PID - na ziemi
1. Ustaw PID domyślne
pitch P=4.0 I=0.030 D =15 rate=0
roll P=4.0 I=0.030 D =15 rate=0
yaw P=8.0 I=0.000 D =0 rate=0
level P=14.0 I=0.045 ->to są ustawienia akcelerometru
2. Podnieś wirnikowca do góry i przytrzymaj go mocno i bezpiecznie.
3. Uruchom silniki i zwiększ przepustnicę gazu do momentu zawisu wirnikowa (tj. do momentu w którym nie będziesz czuł jego wagi) Cały czas mocno go trzymaj.
4. Spróbuj przechylić wirnikowca na bok w kierunku osi każdego silnika. Powinieneś poczuć przeciw reakcję silników na przechylenie dla każdej osi.
Zmieniaj P do momentu w którym trudno jest przeciwdziałać reakcji silników.
Teraz spróbuj kołysać wirnikowcem. Zwiększ P aż zacznie drgać, a następnie zmniejsz nacisk.
Powtórz dla osi Yaw.
Ostatnio zmieniony wtorek 05 sie 2014, 19:38 przez Rurek, łącznie zmieniany 1 raz.
infekcja FPV postępuje w zastraszającym tempie...
Kosmo!
Posty: 375
Rejestracja: wtorek 23 lis 2010, 19:41
Lokalizacja: Kraków

Post autor: Kosmo! »

No i takich artykułów mi brakowało! Osobie która ma małe pojecie o programowaniu kontrolera. Wielkie dzięki i proszę o więcej!
Super robota, dzięki Rurek za wklejenie :-) :-) :-)
Awatar użytkownika
mikun
Posty: 2540
Rejestracja: środa 26 maja 2010, 21:40
Lokalizacja: Poznań

Post autor: mikun »

Warto dopisać przy REGULACJA jakiefo FC ona dotyczny bo podejrzewam że to nie MK może multiwii?
...i tak nie skończysz na jednym ani na dwóch :-)
pit202

Post autor: pit202 »

mikun pisze:Warto dopisać przy REGULACJA jakiefo FC ona dotyczny bo podejrzewam że to nie MK może multiwii?
patrząc po wartościach - tak to MWC.
Awatar użytkownika
aidan
Posty: 552
Rejestracja: czwartek 29 wrz 2011, 20:06
Lokalizacja: Warszawa

Post autor: aidan »

Dzięki Rurek :)

Zabieram się za swoje P.I.D.-y

Więcej takich artukułów! :D
Awatar użytkownika
Verid
Posty: 13004
Rejestracja: poniedziałek 01 lut 2010, 11:29
Lokalizacja: Mikoszewo

Post autor: Verid »

No to jeszcze podobny tekst (a przynajmniej ta część o regulacji) do Cyberdrona, MK i Horneta i regulacja koptera przestanie być czarną magią.
Awatar użytkownika
kefir
Posty: 4871
Rejestracja: poniedziałek 01 lut 2010, 08:39
Lokalizacja: skąd

Post autor: kefir »

Artur czym wieksze D tym mniej telepie przy opadamiu
Awatar użytkownika
Rufio
Posty: 1157
Rejestracja: sobota 23 kwie 2011, 22:57
Lokalizacja: Wa-wa

Post autor: Rufio »

A ja raz jeszcze polecam zapoznanie się z ideą regulatora proporcjonalno-całkująco-różniczkującego.
Jest tu kilka ciekawych wskazań na sprawdzone metody z automatyki: Wiki.
Dodatkowo polecam całkiem fajną prezentacyjkę w formie pdf'a opisującego trochę bardziej algorytmicznie co zrobić:
klik - szczególnie slajd 7.

Metoda "Hanssena)Offereinsa" działa u mnie wyśmienicie - i już nie szukam po omacku, trochę dodać, trochę odjąć.

Na ten materiał natknął mnie chyba Cholo pisząc coś w stylu- "I oraz D na 0, potem I potem D".
Awatar użytkownika
diem
Posty: 5825
Rejestracja: poniedziałek 01 lut 2010, 02:25
Lokalizacja: Radzionków

Post autor: diem »

kefir pisze:Artur czym wieksze D tym mniej telepie przy opadamiu
Z tego co pamietam, to tak jest tylko w MK. Ich algorytm jest jakiś pokićkany :)
pozdrawiam
Michał
Awatar użytkownika
Rurek
Posty: 16419
Rejestracja: środa 10 mar 2010, 15:21
Lokalizacja: AIP ENR 5.5 - AAA 153 :-)

Post autor: Rurek »

kolejny tekst, chyba wyjęty z RCG, dałem kiedyś w wątku o multiwii , poniżej część mojego nieudolnego tłumaczenia :-) jeszcze niedokończonego:

ROBIĄC TE WSZYSTKIE CZYNNOŚCI ZAWSZE BĄDŹ SKUPIONY NA KOPTERZE - Z uwagi na fakt, że coś może pójść NIE TAK - wtedy zawsze drążek przepustnicy w dół!


PID Controller - nieznane stworzenie.
Krótkie wyjaśnienie przed wejściem w fazę samodzielnej nauki:
PID to taki tajemnicze urządzenie, które jest znane od dawna, służące do kontroli stanów nieustalonych urzadzęń technicznych, dokonujące za pomocą kolejnych prób i wykrywania błędów, wykrycia tych stanów. Jest to rodzaj "zapobiegania oscylacjom, wibracjom".

Sterowanie PID składa się z 3 parametrów: P, I oraz D. (Wikipedia-> PID Controller)

1. Nie oczekuj cudów i zbyt wiele po poniższym wytłumaczeniu, nie jest możliwe otrzymanie prawidłowego wyniku tylko w oparciu o poniższe wytłumaczenie, każdy musi sam we własnym zakresie przeprowadzić stosowne eksperymenty, testy, próby.
Czym spowodowane są różnice w zachowaniu kontrolera PID przy identycznie dobranych parametrach dla różnych konstrukcji kopterów:
a) sztywność ramy
b) charakterystyki silników (prędkość up-/down spin)
c) w tym kontekście, masa silników, a także/szczególnie śmigieł (google-> bezwładność, inercja)
d) kontrola prędkości w ESC zarówno sygnału sterującego PPM jak i wyjścia na silniki
e) zastosowane czujniki inercyjne (żyroskopy, akcelerometry)
f) tłumienie drgań z wyżej wymienionych czujników (sposób montażu mechanicznego a także zastosowane filtry elektroniczne wewnątrz czujników czy też w oprogramowaniu FC)
g) jakość równoważenia silników i śmigieł
h) zasilanie - zdolność do dostarczania energii
i) stosunek ciągu do masy
j) współczynniki mechaniczno-geometryczne konstrukcji koptera (długość ramienia, położenie środka ciężkości, położenie płaszczyzny śmigieł itp.)
k) ..... a nawet około 1000 innych powodów

2. Przeczytaj poprzedni punkt (1) ponownie i postaraj się przyswoić i wyczuć te zależności.

3. Ogarnijmy teraz nasz wielowirnikowiec: Jak teraz znaleźć najsensowniejsze parametry pozwalające przyjemnie latać?

Zacznijmy od "P" jak proporcjonalnie.
Ta wartość powoduje reakcję na zaobserwowane zewnętrzne zakłócenie łącznie ze świadomym działaniem pilota poprzez poruszenie drążków. Im większe zakłócenia, tym silniejsza reakcja (po prostu - proporcjonalna). Odziaływanie "P" spada jednak wraz z wychyleniem drążka, ponieważ chcemy mimo wszystko kontrolować nasz kopter :-) Wartość ta jest używana do ustawienia, jak duże jest wyjście sygnału dla ESC w stosunku do zarejestrowanych zakłóceń.
Dobre wartości początkowe to dla MultiWii - 4 (dla konstrukcji bardzo sztywnej może być mniej, o 2) Obniżenie o wiele więcej nie ma sensu, ponieważ jeśli wartość jest = 0, to kopter nie jest już w stanie stabilizować sam swojego poziomu!
Jak się ustawia parametr "P"?
Kopter w dłoni (należy uważać, aby być z dala od śmigieł, może włożyć grube ubranie - śmigło tnie głęboko !) dodawać powoli gazu do uzyskania pozycji przepustnicy "kopter w zawisie", trymami z aparatury znaleźć pozycję taką aby kopter nie miał tendencji do znoszenia na boki i/lub do ucieczki przez sufit ;-). Im dokładniej to zrobisz, tym bardziej wyluzowany i odstresowany kopter będzie unosić się przed Tobą :-)
Istnieją dwie "sprawdzone metody" trzymania koptera do tych testów: usiąść i trzymać nad głową z jednej strony, lub stojąc nad kopterem, przytrzymując jedną ręką od góry.
Teraz powoli dodawaj gazu aż kopter zacznie się nieco unosić. Jeśli zacznie być nerwowy, drżeć czy też pojawią się oscylacje - przepustnica w dół, zmniejsz parametr P i zacznij od nowa - aż pozbędziesz się nerwowego zachowania. (Google: rezonans)
Jak już osiągniesz spokojne zachowanie koptera w bezruchu możesz zacząć delikatnie go "drażnić",na przykład: unosić jedno ramię w górę i w dół - powinien z Tobą walczyć, przeciwstawiać Twojemu ruchowi adekwatną, tożsamą reakcję ale nie powinien rezonować ani trzepotać. Ten sam test wykonaj następnie dla szybkich ruchów, krótkich i z powrotem w górę i w dół. Tak samo kopter powinnien pozostać dość spokojny.
Możesz spróbować podnieść wartość tak daleko, że nie występują drgania, a jeśli się pojawią, obniż o kilka dziesiątych (dla MultiWii).

Następnie jest "I"...ale tym zajmiemy się na końcu...
.
.
.
.
.
.
.
.
cdn....
,
,
,
,
,

[póki co w narzeczu bo nie chce mi się ;-) ]
So now the turn is on "D"

"D")
as Derivative (derivative, development) are encouraged or appreciated here, as it will probably affect the above-mentioned disturbance in the system (Copter), so if it comes to rest on its own, or whether it swings like hell -> resonance. Comes to rest on its own = 0. Swings like hell = maximum. Somewhere in between, we will probably arrive, it must be "felt/flown".
This value does speak against the disturbance by attempting to counteract the imminent change of the oscillation in anticipation (to calm it down). Sort of like if we imagine a pendulum: it has stopped just on one side, it is now over to swing the other, we have to move our finger (for braking) from one to the other side of the pendulum to slow it down. Do we do too quick (ie by a finger switch on the other side) before the pendulum has reached the full deflection, then we push it a part of it´s way - the same is true if it happens too slow -> We don´t want that. I like the pendulum-idea

now then "I"
So in summary / integral. The name says it all, since this factor summarizes the height / size of the disturbance also as their duration, so to speak, trying to take into consideration the previously accumulated / accrued total error. Here one should rather go cautiously to work, goal is to correct smaller overshoots, for example, rotation stop, but it continues to rotate. Then gently increase, 0.0XY is almost always good enough. If unsure always keep a small value of 0.005 to 0.010 (thus the PID control is maintained, otherwise we would have only a PD control ;-) )
...
infekcja FPV postępuje w zastraszającym tempie...
Awatar użytkownika
qlf
Posty: 810
Rejestracja: poniedziałek 04 paź 2010, 15:29
Lokalizacja: IRL

Post autor: qlf »

Przeklejam dla potomnych żeby było.

Grzegorz
shafter
Posty: 672
Rejestracja: czwartek 27 wrz 2012, 08:01
Lokalizacja: Bielsko-Biala

Post autor: shafter »

Pomogło mi zrozumieć OCB z PID'ami

http://autoquad.org/wiki/wiki/flying/tu ... ng-theory/
KonRi
Posty: 82
Rejestracja: niedziela 10 lip 2011, 12:10
Lokalizacja: Kraków

Post autor: KonRi »

darrrrek
Posty: 93
Rejestracja: środa 03 wrz 2014, 07:27
Lokalizacja: Oświęcim

Post autor: darrrrek »

Jeżeli latam tylko w trybie LEVEL na multiwii to muszę ustawiać PIDy od ROLL/PITCH ?? Rozumiem, że jeżeli chcę ustawić PIDy ROLL/PITCH to muszę to robić w trybie ACRO ?? a PIDy LEVEL ustawiam w trybie LEVEL ??
Awatar użytkownika
Baqsthc
Posty: 1076
Rejestracja: poniedziałek 02 wrz 2013, 21:12
Lokalizacja: Legnica

Post autor: Baqsthc »

Coś podobnego mnie interesowało. Czy multiwii w jakikolwiek sposób korzysta z pidów roll i pitch będąc w trybie level?
ODPOWIEDZ