Kompensacja dryfu żyroskopu
Moderatorzy: moderatorzy2014, moderatorzy
Kompensacja dryfu żyroskopu
Witam W jaki sposób kompensujecie dryf żyroskopu? Mój początkowy pomysł polegał na kompensowaniu go poprzez regulator PI wartością z akcelerometru. Jednak akcelerometr pod wpływem drgań ma straszne odchyłki. Nawet przefiltrowany kalmanem niezbyt się nadaje do czegokolwiek. Po wgraniu multiwii z kątem wszystko jest ok. Może ktoś wie jak jest to tam robione?
A do czego Ci to?
Robisz własne FC? Czy sterownik do gimbala?
Jakie masz czujniki na płytce?
Jeśli nie ogarniasz jak w MWC są flitrowane dane z IMU to czeka cię jeszcze dłuuuga droga, zanim stworzysz FC, który będzie w stanie polecieć w modelu.
Uwierz mi, że wielu ludzi na tym zęby zjadło...
Robisz własne FC? Czy sterownik do gimbala?
Jakie masz czujniki na płytce?
Jeśli nie ogarniasz jak w MWC są flitrowane dane z IMU to czeka cię jeszcze dłuuuga droga, zanim stworzysz FC, który będzie w stanie polecieć w modelu.
Uwierz mi, że wielu ludzi na tym zęby zjadło...
Zanim zadasz pytanie: http://rtfm.killfile.pl/
no to jak znasz C to przeglądnij kod multiwii i znajdziesz tam właściwy fragment odnośnie filtracji. Z tego co pamiętam sprzed ok 2 lat to by tam filtr komplementarny.
Edit:
A Odnośnie filtra Kalmana to ja robiłem stąd
http://www.konar.pwr.wroc.pl/sites/defa ... kalman.pdf
Od strony 26 chyba
Edit:
A Odnośnie filtra Kalmana to ja robiłem stąd
http://www.konar.pwr.wroc.pl/sites/defa ... kalman.pdf
Od strony 26 chyba
Re: Kompensacja dryfu żyroskopu
Cześć,seba2109 pisze:Witam W jaki sposób kompensujecie dryf żyroskopu? Mój początkowy pomysł polegał na kompensowaniu go poprzez regulator PI wartością z akcelerometru. Jednak akcelerometr pod wpływem drgań ma straszne odchyłki. Nawet przefiltrowany kalmanem niezbyt się nadaje do czegokolwiek. Po wgraniu multiwii z kątem wszystko jest ok. Może ktoś wie jak jest to tam robione?
Kiedyś napisałem quadrocoptera, teraz jeszcze poprawiam co nieco :)
Zacznij od początku,
jakie masz akcelerometry, cyfrowe czy analogowe (ktoś jeszcze używa?).
Jak masz filtrowane napięcie odniesienia/zasilające akcelerometr.
20 stopni odchyłu powstałego z szumu to jakaś porażka kompletna.
weź najpierw uruchom gyro zrób proste całkowanie i zobacz czy ci wylicza kąt poprawnie.
Powinno pływać jakieś 1 stopień na 2-5 minut w danej temperaturze....
Jak z tym sobie nie poradzisz to nie idź dalej :)
Pozdrawiam
Krzysiek
Jeszcze jedno co mogę poradzić. Zamiast pieprzyć się zmachaniem rękami, lataniem, rozbijaniem model itp itd, zrobiłem sobie niedawno maszynkę do machania imu, w jednej osi na razie, ale za to zawsze tak samo dokładnie itp itd.
Kąt jest zadawany serwomechanizmem. Jak wiadomo cholera wie jak serwo działa i jaką ma transmitancję, więc wyprowadziłem sygnał z potencjometry serwa i odczytuje go sobie na bierząco przez ADC. Kątomierz był tylko do kalibracji początkowej, która wyszła i tak bardzo liniowo, ale całość została skalibrowana w 20 punktach a potem aproksymowana prostą.
No i teraz mogą w prosty sposób badać co jaki kalmana, nie kalman mi estymuje, bo machanie reką i obracanie kwadracika na ekranie to wiesz rozumiesz :)
A to porównanie dla przykładu całkowania z gyro(linia niebieska) z kątem referencyjnym odczytanym z potencjometru (linia biała zaszumiona).
Chwila roboty i masz maszynkę która Ci jasno powie czy coś działa, działa lepiej, gorzej itp itd.
Pozdro
Krzysiek
Kąt jest zadawany serwomechanizmem. Jak wiadomo cholera wie jak serwo działa i jaką ma transmitancję, więc wyprowadziłem sygnał z potencjometry serwa i odczytuje go sobie na bierząco przez ADC. Kątomierz był tylko do kalibracji początkowej, która wyszła i tak bardzo liniowo, ale całość została skalibrowana w 20 punktach a potem aproksymowana prostą.
No i teraz mogą w prosty sposób badać co jaki kalmana, nie kalman mi estymuje, bo machanie reką i obracanie kwadracika na ekranie to wiesz rozumiesz :)
A to porównanie dla przykładu całkowania z gyro(linia niebieska) z kątem referencyjnym odczytanym z potencjometru (linia biała zaszumiona).
Chwila roboty i masz maszynkę która Ci jasno powie czy coś działa, działa lepiej, gorzej itp itd.
Pozdro
Krzysiek
Używam cyfrowego akcelerometru ADXL345 i cyfrowego żyroskopu L3G4200D.
Co masz na myśli, że żyroskop powinien pływać o 1 stopnień na 2-5 minut?
Masz na myśli to że w momencie kiedy nim nie ruszam odczyty w tym czasie nie mogą się zmienić o więcej niż 1 stopień?
A odchyłka o 20 stopni ma miejsce gdy quad działa i są drgania.
Co masz na myśli, że żyroskop powinien pływać o 1 stopnień na 2-5 minut?
Masz na myśli to że w momencie kiedy nim nie ruszam odczyty w tym czasie nie mogą się zmienić o więcej niż 1 stopień?
A odchyłka o 20 stopni ma miejsce gdy quad działa i są drgania.
Nie używałem nigdy sensorów od st, ale podobno są do dupy, jeśli chodzi o drgania itp itd.
Mam na myśli, że jak zrobisz wstępną kalibracje gyro (policzysz średnią z odczytów w bezruchu, i potem bedziesz ją odejmował od odczytów), to używając samego całkowania jak bedziesz np 2 minuty ruszał gyro, wychodząc od zera po dwóch minutach powinno być także prawie zero przy tej samej pozycji gyro.
Jakiego MCU używasz do tego, jak to masz podłączone itp itd, jaka częstotliwość próbkowania, jak zapewniasz ten sam czas próbkowania jak to jakiś avr czy inne cudo...
Próbowałeś włączyć filtry wewnętrzne w gyro/acc? Daje to coś.
Próbowałeś filtrów FIR, dają opóźnienie ale pozbędziesz się syfu od drgań silnika (a wyważyłeś je ?).
Tutaj możesz sobie wygenerować nawet z kodem :)
http://www.dxzone.com/dx24815/tfilter-f ... esign.html
pozdrawiam
Krzysiek
Mam na myśli, że jak zrobisz wstępną kalibracje gyro (policzysz średnią z odczytów w bezruchu, i potem bedziesz ją odejmował od odczytów), to używając samego całkowania jak bedziesz np 2 minuty ruszał gyro, wychodząc od zera po dwóch minutach powinno być także prawie zero przy tej samej pozycji gyro.
Jakiego MCU używasz do tego, jak to masz podłączone itp itd, jaka częstotliwość próbkowania, jak zapewniasz ten sam czas próbkowania jak to jakiś avr czy inne cudo...
Próbowałeś włączyć filtry wewnętrzne w gyro/acc? Daje to coś.
Próbowałeś filtrów FIR, dają opóźnienie ale pozbędziesz się syfu od drgań silnika (a wyważyłeś je ?).
Tutaj możesz sobie wygenerować nawet z kodem :)
http://www.dxzone.com/dx24815/tfilter-f ... esign.html
pozdrawiam
Krzysiek
Weź na początek zrzuć do pliku tekstowego z pełną częstotliwością próbkowania takie dane w kolejnych kolumnach
- czas z jakiegoś hardwarowego timera
- odczyt bezpośredni z gyro
- wyliczoną prędkość kątową z gyro uwzględniająca kalibrację gyro
zrób tak z wyłączonym silnikiem i z włączonym.
obejrzyj wykres albo podeślij tutaj.
pozdro
Krzysiek
- czas z jakiegoś hardwarowego timera
- odczyt bezpośredni z gyro
- wyliczoną prędkość kątową z gyro uwzględniająca kalibrację gyro
zrób tak z wyłączonym silnikiem i z włączonym.
obejrzyj wykres albo podeślij tutaj.
pozdro
Krzysiek