Komputer pokladowy by Pitlab + quadrocopter

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

Moderatorzy: moderatorzy2014, moderatorzy

JacekS
Posty: 8
Rejestracja: środa 21 lis 2012, 14:44
Lokalizacja: Wroclaw

Komputer pokladowy by Pitlab + quadrocopter

Post autor: JacekS »

Witam forumowiczow,
Od jakiegos czasu jestem w posiadaniu komputera pokładowego od Pitlab'a.
http://www.pitlab.pl/autopitlot.html

Jak i rownież quadrocoptera od rctimera:
http://rctimer.com/index.php?gOo=goods_ ... oductname=

Regulatory fast PWM, silniki 2830-1000kv, Pakiet 3s 3600, modem HM-TRP do telemetri.

Po zmontowaniu czas przyszedł na kalibracje autopilota + koptera.
Po całkiem krótkiej kalibracji PID YAW, czas przyszedł na kalibracje PID Pochylenia (PITCH).
Kopter zawieszony jest na sznurkach w taki sposób że możliwe jest tylko pochylenie (przód - tył).

Niestety tutaj dobór parametrów już nie jest taki łatwy i oczywisty.
Ponizej screen z jednego z ostatnich 'lotów'.

Obrazek

Gorny wykres zawiera dwa parametry pochylenie zadane przez aparature i aktualne pochylenie koptera.
Na dolnym wykresie widzimy poszczególne składowe P (czerwony), I (zielony), D (Niebieski), jak i ich suma (żółty)

Na wykresie widac oscylacje, których niestety nie udaje mi sie wytłumić poszczególnymi składowymi.

To sa aktulane wartosci PID:

Pith angle PID
kp = 1.100
Ti = 0.730 s
Td = 0.089 s
Df = 0.010 s (Derivative filter)
Il = 30.0 % (Integrator limit)
SP = 30.0 ° (Maksymalne wychylenie koptera - w stopniach)

Jak ktoś ma pomysł jak by można było dopieścić ustawienia PID to byłbym wdzięczny.

Dla zainsteresowanych wrzucam logi z tego lotu.
Log

Na stronie pitlaba jest tez link do oprogramowania stacji bazowej, wiec mozna podgladac logi na swoim PC
http://www.pitlab.pl/autopitlot/gcs/setup.exe

Instalka wymaga directX


Pozdrawiam
Jacek
Awatar użytkownika
PitLab
Posty: 967
Rejestracja: środa 17 mar 2010, 20:29
Lokalizacja: Warszawa
Kontakt:

Re: Komputer pokladowy by Pitlab + quadrocopter

Post autor: PitLab »

JacekS pisze:Jak ktoś ma pomysł jak by można było dopieścić ustawienia PID to byłbym wdzięczny.
Cześć Jacku
Te oscylacje pokrywają się z wyjściem członu różniczkującego. Spróbuj zarejestrować wykres gdzie co najmniej w kilkunastu krokach zmieniasz wartość czasu całkowania od tak małej wartości gdzie wykres członu różniczkującego jest prawie linią prostą aż do takiej gdzie człon zaczyna szaleć generując sygnał rzędu +-50%. Po takim teście będziesz widział jaki rząd wielkości czasu różniczkowania daje zadowalającą pracę i dalsze strojenie trzeba zawęzić już do tego fragmentu. Teraz nie znamy wartości brzegowych stabilnej pracy. Obecne wartości (uzyskane metodą Zieglera Nicholsa) nie bardzo przystają do rzeczywistości

Kolegom niezorientowanym w używanych w projekcie metodach strojenia podpowiem tylko że pod 2 kanały w aparaturze wyposażone w potencjometry można podpiąć po jednej zmiennej regulatora i w ten sposób modyfikować je w trakcie pracy. Jacek ma jeden wolny potencjometr i już mamy to przećwiczone. W ten sposób już doszliśmy do pewnych wniosków, ale to niestety wymaga jeszcze sporo pracy.

Może ktoś z kolegów jest w stanie analitycznie dobrać nastawy na przykład na podstawie pomiaru odpowiedzi na zakłócenie skokowe?
Piotrek.
Z różnych form kontaktu preferuję e-mail
JacekS
Posty: 8
Rejestracja: środa 21 lis 2012, 14:44
Lokalizacja: Wroclaw

Post autor: JacekS »

Witam,
Dziś udało mi się zrobić kolejne próby z PID'em.

Ponizej screen z kalibracji czlonu D:
(górny wykres jest aktualną wartoscią regulowanego członu, wartość wzięta z potencjometru aparatury)

Obrazek

Według mnie najodpowiedniejsza wartość D to około 0.052s.

Tą wartość wziąłem do dalszej kalibracji członu I:

Obrazek

Niestety nie dało to spodziewanych rezultatów.
Martwi mnie że wartość kąta 'wychodzi' zdecydowanie po za wartość kata zadanego.

Log z lotow

Pozdrawiam
Jacek
Awatar użytkownika
PitLab
Posty: 967
Rejestracja: środa 17 mar 2010, 20:29
Lokalizacja: Warszawa
Kontakt:

Post autor: PitLab »

Żeby nie zgadywać podpiąłem swoją hexę (bo łatwiej jest ją zamocować niż quadro) na dwa sznurki i powtórzyłem strojenie członu różniczkującego.
Jednak z samym regulatorem kąta jest kiszka. Niezbyt dużo dłubałem, ale nie udało mi się uzyskać stabilnej pracy, cały czas są oscylacje. Tak wyglądała jedna z prób:
Obrazek

Próbowałem kręcić wartością filtra Df, ale bez większych rezultatów. Do takiego porównania musza być spokojniejsze warunki. Tutaj kopter szaleje i człon różniczkujący jest na dzień dobry przesterowany.

U siebie mam ustawiony również regulator podrzędny (kp=0,14 i Td=0,006s) i dopiero z nim kąt ładnie się stabilizuje. Te drobne oscylacje wynikają głównie z bujania się sznurka na boki. Przydało by się jednak jakiś sztywne zawieszenie obrotowe.
Obrazek

Nie zdążyłem pokręcić jeszcze całkowaniem. Na razie całkowanie regulatora kąta mam ustawione Ti=0,076s i ograniczone do 10%. W regulatorze prędkości kątowej nie ma całkowania.
Tak czy inaczej u siebie nie mam uchybu ustalonego jak u Ciebie. W każdym przypadku są oscylacje, ale równo wokół wartości zadanej.
Może masz mocno asymetrycznie zamocowanego koptera? Chociaż u mnie teraz też stabilna pozycja była do dołu śmigłami i mimo to ładnie wstawał i trzymał kąt. Jedynie dla małych Td nie był w stanie samodzielnie się odwrócić na plecy.


Jedna ważna rzecz jaka mi umknęła w dokumentacji. Do testów na uwięzi trzeba zmniejszyć "Hover PWM", bo ciężar koptera jest utrzymywany przez uwieź a nie przez śmigła. U siebie Hover zrównałem z Idle gdy zaczęło mi wydmuchiwać dywan spod nóg.
Piotrek.
Z różnych form kontaktu preferuję e-mail
JacekS
Posty: 8
Rejestracja: środa 21 lis 2012, 14:44
Lokalizacja: Wroclaw

Post autor: JacekS »

Witam,
Uruchomiłem człon podrzędny, zacząłem kalibrację od członu P. Niestety pojawiły się oscylacje w członie I w PIDzie nadrzędnym. Niestety tych oscylacji nie potrafię wytłumić. Nawet po dodaniu członu I jak i D.

Górny wykres to kalibracja członu P podrzędnego. Dolny wykres to PID nadrzędny.
Obrazek

Log

Wartości PID'a nadrzędnego (attitiude) są ustawione mniej więcej tak samo jak w pierwszym poście pisałem.

Kopter jest zamocowany symetrycznie ...

Pozdrawiam
Jacek
Awatar użytkownika
PitLab
Posty: 967
Rejestracja: środa 17 mar 2010, 20:29
Lokalizacja: Warszawa
Kontakt:

Post autor: PitLab »

JacekS pisze:Uruchomiłem człon podrzędny, zacząłem kalibrację od członu P. Niestety pojawiły się oscylacje w członie I w PIDzie nadrzędnym. Niestety tych oscylacji nie potrafię wytłumić. Nawet po dodaniu członu I jak i D.
Kompletnie nie mam czasu, ale kopter jest naładowany, wybzykam jeden pakiecik, może coś uda się zrozumieć.
JacekS pisze:Górny wykres to kalibracja członu P podrzędnego. Dolny wykres to PID nadrzędny.
Obrazek
Może nie wykres kalibracji, ale wartość zadana i regulowany kąt. W idealnej sytuacji powinny się pokrywać. Im bardziej się rozchodzą tym gorzej.

Jeszcze co do samej metodologii testu. Spróbuj troszeczkę dłużej przytrzymać kopter w zadanym kącie, bo widzę że dajesz dosyć krótkie impulsy i być może w ten sposób pewne rzeczy Ci umykają. Jeżeli są oscylacje to niech potrwają przynajmniej ze 4 okresy, to wtedy będziesz wiedział czy rosną czy są tłumione. To dużo mówi o dynamice obiektu.
Po protu najlepiej aby zmiana był zakłóceniem skokowym: jest zmiana wartości zadanej i obserwujemy jak regulator sobie z nią radzi.


Ustawiłem takie same nastawy jakie podałeś w pierwszym poście. Gdy teraz spojrzałem to zauważyłem że zapomniałem wyłączyć Td dla regulatora podrzędnego. Kp było 0,14 a teraz jest 0,0014 - czyli 100 razy mniejsze, wiec jakby wyłączona a Td takie po prostu jest.
Kopter zachowywał się tak jak na obrazku niżej. Oscylował dosyć mocno, miał spory offset miedzy średnią oscylacji (zielone na środkowym wykresie) a wartością zadaną (pomarańczowe na środkowym wykresie), ale człon całkujący nie chce sie zachowywać jak i Ciebie. W tym fragmencie logu kręciłem czasem całkowania (biały wykres na górze), ale chyba brałem zbyt duże wartości. Nawet dla krótkiego czasu Ti człon całkujący nie chciał oscylować.
Obrazek


W następnym fragmencie kręciłem czasem różniczkowania (biały na górze) aby pozbyć się tych oscylacji. Jak widać już przy Td=0,2s oscylacja przygasły i dalsze zwiększanie różnczkowania nie przynosiło efektu. Do dalszych prób ustawiałem Td = 0,2s.
Obrazek
Przy mniejszych oscylacjach ładnie widać uchyb, czyli różnicę miedzy wartością zadaną (pomarańczowa na środkowym) a wypracowanym katem (zielona).

Na kolejnym wykresie próbowałem regulując wzmocnieniem regulatora nadrzędnego (biały wykres na górze) zmniejszyć uchyb. Być może trochę się zmniejsza, ale pojawiają się oscylacje od zbyt dużego wzmocnienia
Obrazek


Ustawiłem wzmocnienie kp=1,5 i sprawdziłem jak teraz wygląda regulacja różniczkowaniem. Wyszedł piękny wykres. Na samym początku dla małej wartości Td i sporym wzmocnieniu kopter mocno oscyluje. Na dolnym wykresie PIDa widać że człon proporcjonalny (czerwony) dla ustalonego stanu lata +-30%. Dodanie różniczkowania wyraźnie go uspokaja. Do dlaszych prób przyjmuję wartość Td=0,2s
Obrazek
Podejrzewam że ten problem jest u Ciebie. Za małe wzmocnienie i za małe różniczkowanie. Regulator nie ma siły aby uspokoić oscylacje koptera.

Na tym etapie spróbowałem pokręcić wzmocnieniem regulatora podrzednego. Na wykresie na górze białym jest Kp podrzędnego, potem wartość zadana nadrzednego i pochylenie, potem PID nadrzędnego i na samym dole pid podrzędnego. Widać że człon propocjonalny (czerwony) rośnie, ale dosyć mało - powinienem kręcić więcej, ale za mało ustawiłem. Jakość regulacji chyba odrobinę się poprawia, ale to jest symboliczna różnica, być może błąd obserwacji.
Obrazek



Próbowałem jeszcze pokręcić całkowaniem. Widać że zielona linia w PIDzie ruszyła, ale raczej symbolicznie i nie widać istotnych zmian w oscylacjach
Obrazek

Powtórzyłem testm tym razem wziąłem mniejszy fragment zakresu regulacji Ti, ale też bez większych regultatów.
Obrazek

Zostawiłem mały czas całkowania (szybko narasta całka) i spróbowałem pokręcić jeszcze wzmocnieniem. Tutaj widać wyraźnie że chyb się zmniejsza wraz ze wzmocnieniem, tylko jak zwykle pojawiają się oscylacje. Powiedzmy że dla kp=4 wysterowanie członu proporcjonalnego jest jeszcze dopuszczalnie niskie (nie chcemy zapchać całego zakresu regulacji jednym tylko regulatorem), wiec do dalszych prób przyjmuję kp=4. Zobaczymy czy uda się zdusić te oscylacje zachowując przyzwoity uchyb.
Obrazek

Do dalszego kręcenia tym razem wziąłem człon różniczkujący regulatora podrzędnego. Wyjście regulatora jest na dolnym wykresie - obserwowałem czy za bardzo się nie nasyca. Nie można tutaj przesadzać, bo regulator ma co robić. Obecny układ regulatorów nie jest najlepszy, mam już pomysł na lepszy, ale jest kilka pilniejszych spraw do zrobienia. To musi poczekać.
Obrazek
Widać że oscylacje daje się uspokoić, nawet przy kp=4 ale pojawia się takie dosyć duże przeregulowanie po zmianie wartości zadanej - chodzi o pierwsze duże wachnięcie zielonej linii kąta Theta na drugim wykresie od góry.

Próbowałem trochę zmniejszyć wzmocnienie, ale bateria zaczęła mi padać. Natomiast zauważyłem że tutaj wreszcie dał o sobie znać człon całkujący. Wreszcie zaczyna coś się dziać. Jest nastawiony bardzo ostro, więc błyskawicznie się nasyca na ograniczeniu 10% i to pewnie on jest odpowiedzialny za to pierwsze przeregulowanie.
Obrazek

Na dzisiaj koniec. Teraz przydało by się ustawić trochę mniejsze kp np 3 i pokręcić całkowaniem, dobierając go tak aby sygnał na członie całkującym narastał na tyle wolno aby człony proporcjonalny i różniczkujący dały radę stłumić pierwsze przeregulowanie generowane przez człon całkujący.
Jeszcze trzeba było by wybzykać 2-4 pakiety i kopter pewnie byłby dostrojony jak ta lala :-)
Ale sorry, jutro też jest dzień wypełniony w 150%.

Tutaj jest paczka z logami zapisanymi podczas strojenia regulatora kąta pochylenia
Piotrek.
Z różnych form kontaktu preferuję e-mail
JacekS
Posty: 8
Rejestracja: środa 21 lis 2012, 14:44
Lokalizacja: Wroclaw

Post autor: JacekS »

Witam,
Dziś udało się dojść, co powodowało oscylacje. Wystarczyło włączyć człon D w regulatorze podrzędnym. Ustawiłem wartość D=0.01, kopter się ustabilizował i już tak nie oscyluje.

Ponizej wykres z kalibracji czlonu D (wykres bialy), czlon P=1.3, I=0.

Obrazek

Zrobiłem jeszcze kalibracje członu P (wykres biały), człon D=0.055, I=0

Obrazek

Jeszcze jest duzy uchyb, ale to się wyeliminuje członem całkowym.

Jutro dalsze proby, niestety pakiet juz sie rozladowal i na dzis koniec testow.

Pozdrawiam
Jacek
JacekS
Posty: 8
Rejestracja: środa 21 lis 2012, 14:44
Lokalizacja: Wroclaw

Post autor: JacekS »

Witam,
Dziś kolejny dzień prób i testów. Na pierwszy ogień poszła kalibracja członu I, PID'a nadrzędnego.

Pn=1,34 ; Dn=0,055; I kalibrowane za pomocą dodatkowego kanału (wykres biały)

Obrazek

Wartość I wybrana do dalszych prób In=0.656

Następnie zrobiłem 'fine tuning' członu D nadrzędnego.
Obrazek

Wybralem wartosc Dn=0.070

Na koniec zrobiłem jeszcze jedna probe z członem P nadrzędnym.

Obrazek

Po kalibracji poprzednich członów, i właczeniu członu D, PID'a podrzędnego, okazalo sie ze czlon P nadrzędny moze/powinien być większy. Do dalszych 'lotów' wybiorę wartość Pnad =3,7, choć z drugiej strony za duży człon P będzie powodował 'przestrzeliwanie' koptera po za kąt zadany. Jutro postaram się zrobić próbę przy mniejszym członie P za to zwiększę człon D, może uda się uzyskać lepsze wyniki.

Poniżej logi z testów:

LOG1

LOG2

LOG3

Pozdrawiam
Jacek
Awatar użytkownika
PitLab
Posty: 967
Rejestracja: środa 17 mar 2010, 20:29
Lokalizacja: Warszawa
Kontakt:

Post autor: PitLab »

JacekS pisze:Dziś kolejny dzień prób i testów. Na pierwszy ogień poszła kalibracja członu I, PID'a nadrzędnego.
Proponuję jeszcze zmniejszyć wartość limitu całki z 30% do ok. 10%.
Z tego co rozumiem z zasad ustawiania PID-ów, to człon całkujący ma za zadanie kasować uchyb ustalony, czyli zakres jego działania nie musi być większy niż wartość uchybu. Ograniczając wartość całki przy okazji zmniejszysz ilość problemów wynikających z niewłaściwego nastawienia członu i powinno być łatwiej dojść do optymalnych nastaw.
Doszedłem do tego empirycznie, bo duża całka powodowała że w locie kopter zachowywał się dziwnie podczas manewrów. Chcę nim zmienić kierunek, przechylam drążek a kopter reaguje z dużym opóźnieniem.
Kiedyś miałem taki objaw że pochylałem drążek i trzymałem go wychylony. Kopter powinien lecieć cały czas w zadanym pochyleniu a on startował z zadanym pochyleniem po czym powoli się prostował aż po kilkunastu metrach poziomował się (z wychylonym drążkiem!). Cofnięcie drążka do neutrum powodowało powrót. Wtedy nie byłem w stanie zrozumieć na 100% mechanizmu działania tego zjawiska, ale na 90% był spowodowany niewłaściwym ustawienie m całkowania.
Wyobraź obie że teraz jest wiatr, który spycha kopter w jednym kierunku a nie możesz nim wrócić...
Między innymi nie należy ustawiać przesadnie małego zakresu wartości zadanej (SetPoint at full stick), właśnie ze względu na wiatr.

JacekS pisze:Po kalibracji poprzednich członów, i właczeniu członu D, PID'a podrzędnego, okazalo sie ze czlon P nadrzędny moze/powinien być większy. Do dalszych 'lotów' wybiorę wartość Pnad =3,7, choć z drugiej strony za duży człon P będzie powodował 'przestrzeliwanie' koptera po za kąt zadany.
Jednym z kryteriów nastaw jest aby regulator przy normalnej pracy nie pracował przy wysterowaniu większym niż 20-30%, bo później w mikserze trzeba dodać kilka regulatorów do siebie i zaczyna brakować zakresu regulacji.
Piotrek.
Z różnych form kontaktu preferuję e-mail
JacekS
Posty: 8
Rejestracja: środa 21 lis 2012, 14:44
Lokalizacja: Wroclaw

Post autor: JacekS »

Witam,
Dziś pobawiłem się trochę członem P nadrzędnym i członem D podrzędnym.
Początkowa wartość członu P była 3,7 zmniejszyłem trochę do 2,3, natomiast wartość D podrzędnego udało się zmniejszyć z 0.019 do 0.008.

Poniżej screen z ostatniego lotu.
Obrazek

Niestety jeszcze mam uchyb, będę go próbował teraz wyeliminować. Jeszcze wartości całego PID'a są za duże, przekraczają 75%. Chyba trzeba będzie zejść jeszcze z członem P trochę niżej.

Pozdrawiam
Jacek
Awatar użytkownika
PitLab
Posty: 967
Rejestracja: środa 17 mar 2010, 20:29
Lokalizacja: Warszawa
Kontakt:

Post autor: PitLab »

JacekS pisze:Niestety jeszcze mam uchyb, będę go próbował teraz wyeliminować.
Spróbuj testowo wyłączyć całkowanie, ustawiając Ti=0.
W krótkiej perspektywie to wygląda jak uchyb, ale to może być efekt skumulowanej całki. Trochę za krótki jest odstęp pomiędzy kolejnymi zakłóceniami aby to jednoznacznie ocenić. Jeżeli pozbędziesz się całki to na 100% będziemy wiedzieli czy to uchyb czy nie. U mnie czegoś takiego nie było. To musi być coś specyficznego dla Twojej konstrukcji, może jakiś błąd w sprzęcie, konfiguracji itp.

JacekS pisze:Jeszcze wartości całego PID'a są za duże, przekraczają 75%. Chyba trzeba będzie zejść jeszcze z członem P trochę niżej.
Nie przejmuj się krótkim impulsem w chwili gdy szybko i znacząco zmieniasz wartość zadaną. Na silne zakłócenie musi być silna odpowiedź. Punktem odniesienia dla tego kryterium jest stan ustalony. Tutaj mieścimy się w granicach +20% i -25%. Powiedzmy ze tyle jeszcze może być.
Piotrek.
Z różnych form kontaktu preferuję e-mail
JacekS
Posty: 8
Rejestracja: środa 21 lis 2012, 14:44
Lokalizacja: Wroclaw

Post autor: JacekS »

Witam,
Poniżej wykres bez całki w regulatorze PID.
Nastawy P =3,3, D=0.052

Obrazek

Pozdrawiam
Jacek
Awatar użytkownika
PitLab
Posty: 967
Rejestracja: środa 17 mar 2010, 20:29
Lokalizacja: Warszawa
Kontakt:

Post autor: PitLab »

JacekS pisze:Poniżej wykres bez całki w regulatorze PID.
Dzięki, czyli to jednak jest uchyb.
Przy okazji porównując obrazki można zobaczyć co daje człon całkujący. Na tym etapie w zasadzie tylko przeszkadza :-)
Bez całkowania wykres kąta bardziej odpowiada wartości zadanej. Tak na prawdę przy sterowaniu ręcznym całkowanie jest zbędne. To będzie ważne dopiero gdy zacznie latać automat. Gdy człowiek steruje i ustawiło mu się za dużo lub za mało to skoryguje to.

Ciągle myślę co może powodować ten uchyb. Może tam jest jest jakiś błąd w ustawieniu wzmocnienia wartości zadanej (SetPoint at full stick)? To w sumie mało testowałem. Dzisiaj przy niedzieli odpuszczę sobie. I tak siedzę pół dnia przy kompie zamiast odpoczywać...
Piotrek.
Z różnych form kontaktu preferuję e-mail
JacekS
Posty: 8
Rejestracja: środa 21 lis 2012, 14:44
Lokalizacja: Wroclaw

Post autor: JacekS »

Witam,
W takim razie jutro sprawdzę z różnymi wartościami "SetPoint at full stick". Teraz mam to ustawione na 30 stopni. Z tego co pamiętam to Ty ustawiałeś to na 40 stopni. Jutro pokombinuje... może coś z tego się urodzi dobrego.

Pozdrawiam
Jacek
ODPOWIEDZ