Kompensacja dryfu żyroskopu

Moderatorzy: moderatorzy2014, moderatorzy

seba2109
Posty: 13
Rejestracja: wtorek 24 wrz 2013, 15:13
Lokalizacja: Gdańsk

Kompensacja dryfu żyroskopu

Post autor: seba2109 »

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?
mader
Posty: 212
Rejestracja: wtorek 07 sie 2012, 18:57
Lokalizacja: Częstochowa

Post autor: mader »

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...
Zanim zadasz pytanie: http://rtfm.killfile.pl/
seba2109
Posty: 13
Rejestracja: wtorek 24 wrz 2013, 15:13
Lokalizacja: Gdańsk

Post autor: seba2109 »

Robię własny FC. Mam płytkę GY80 a na niej akcelerometr ADXL345, żyroskop L3G4200D.
Awatar użytkownika
slawko_k
Posty: 1596
Rejestracja: niedziela 28 lut 2010, 14:24
Lokalizacja: podkarpackie

Post autor: slawko_k »

Ja z kalmanem problemów nie miałem.
Może coś źle przepisałeś.
W czym programujesz?
seba2109
Posty: 13
Rejestracja: wtorek 24 wrz 2013, 15:13
Lokalizacja: Gdańsk

Post autor: seba2109 »

Programuję w c. Nie wiem może mam złe założenia dotyczące czujników. Próbuję przefiltrować dane z akcelerometru jednak po przefiltrowaniu mają one odchyłkę o około +/- 3 stopnie. Chociaż trzeba przyznać że nieprzefiltrowane dane z akcelerometru mają odchyłkę o +/- 20 stopni.
Awatar użytkownika
slawko_k
Posty: 1596
Rejestracja: niedziela 28 lut 2010, 14:24
Lokalizacja: podkarpackie

Post autor: slawko_k »

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
seba2109
Posty: 13
Rejestracja: wtorek 24 wrz 2013, 15:13
Lokalizacja: Gdańsk

Post autor: seba2109 »

Dzięki
Awatar użytkownika
qczek
Posty: 954
Rejestracja: wtorek 10 sty 2012, 19:04
Lokalizacja: Zielonki/Kraków

Re: Kompensacja dryfu żyroskopu

Post autor: qczek »

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?
Cześć,
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
Awatar użytkownika
qczek
Posty: 954
Rejestracja: wtorek 10 sty 2012, 19:04
Lokalizacja: Zielonki/Kraków

Post autor: qczek »

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 :)

Obrazek

A to porównanie dla przykładu całkowania z gyro(linia niebieska) z kątem referencyjnym odczytanym z potencjometru (linia biała zaszumiona).

Obrazek

Chwila roboty i masz maszynkę która Ci jasno powie czy coś działa, działa lepiej, gorzej itp itd.

Pozdro
Krzysiek
seba2109
Posty: 13
Rejestracja: wtorek 24 wrz 2013, 15:13
Lokalizacja: Gdańsk

Post autor: seba2109 »

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.
Awatar użytkownika
qczek
Posty: 954
Rejestracja: wtorek 10 sty 2012, 19:04
Lokalizacja: Zielonki/Kraków

Post autor: qczek »

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
seba2109
Posty: 13
Rejestracja: wtorek 24 wrz 2013, 15:13
Lokalizacja: Gdańsk

Post autor: seba2109 »

Moje odczyty z żyroskopu odpływają znacznie więcej niż o 1 stopień.

Używam arduino mega, częstotliwość próbkowania to około 500hz, czas całkowania zapewniam czasem wykonywania pętli.

Włączyłem filtr w żyroskopie bo w acc nie widziałem takiego jednak nic to nie zmieniło.
Awatar użytkownika
qczek
Posty: 954
Rejestracja: wtorek 10 sty 2012, 19:04
Lokalizacja: Zielonki/Kraków

Post autor: qczek »

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
ODPOWIEDZ