Mam 3-osiowy akcelerometr i 2-osiowy żyroskop. Zamierzam zmierzyć coś, co porusza się tylko w osi X i Z. Słyszałem o użyciu filtrów Kalmana do wygładzania wektorów przyspieszenia, ale nie mogę znaleźć dobrego samouczka dla kompletnego początkującego tego tematu. Wiem też, że mogę podwójnie zintegrować przyspieszenie, aby uzyskać pozycję, ale jak to zrobić ze skończoną liczbą próbkowanych wektorów przyspieszenia? Byłbym wdzięczny za linki do dobrych samouczków dla początkujących na oba te tematy.
33
Odpowiedzi:
Oto samouczek dotyczący implementacji macierzy cosinus kierunku dla IMU: http://gentlenav.googlecode.com/files/DCMDraft2.pdf
Zobacz strony ArduIMU: http://code.google.com/p/ardu-imu/wiki/Theory
Oto kilka projektów open source, które to robią. Czytanie kodu powinno dać kilka wskazówek:
http://code.google.com/p/gluonpilot/source/browse/trunk/Firmware/#Firmware/rtos_pilot%3Fstate%3Dclosed
http://code.google.com/p/sf9domahrs/
źródło
Filtr Kalmana jest rodzajem magii, która działa w tajemniczy sposób. :)
Zacząłem od cyfrowych filtrów . Dobrze wyjaśnione na początek. I łatwo zrozumiałe. Te proste filtry działają dobrze dla przechylenia i nachylenia dowolnego systemu. Wystarczy eksperymentować, dostosowując stosunek dokładności do odpowiedzi. Sztuką jest [Dokładność = 1 - Odpowiedź].
Spróbuj.
Aby zrozumieć filtr Kalmana, musisz przejść przez następujące czynności:
I musisz się podzielić, jeśli natkniesz się na coś takiego.
źródło
Teoretycznie (pod warunkiem, że masz doskonałe czujniki i pomiary) możesz to zrobić, ale w praktyce nie możesz. Problem polega na tym, że akcelerometr będzie miał stałą siłę 1G spowodowaną grawitacją, gdy obiekt leży nieruchomo (zero G w przypadku swobodnego spadania), ale nie jest to dokładnie mierzone jako 1,00000000 ... G. Podczas przemieszczania obiektu będziesz mieć wektor jako sumę grawitacji 1G i przyspieszenia od ruchu (który zwykle jest znacznie mniejszy niż 1G), a twoje pomiary będą gromadzić zdecydowanie zbyt dużo hałasu w czasie, aby były przydatne, jeśli spróbujesz zintegrować zmierzone pomiary przyspieszenie minus grawitacja 1G.
źródło
Zacząłem budować quad prawie 6 miesięcy temu, miałem wiele problemów z prawidłowym określeniem kąta :)
Przede wszystkim powinieneś wypróbować tę prezentację - http://web.mit.edu/scolton/www/filter.pdf Jest bardzo obszerna i może pomóc ci w lepszym wyobrażeniu o tym, czego naprawdę chcesz, właściwie to pomogło dla mnie.
Myślę, że to zależy od ciebie, ale wdrożenie filtru Kalmana nie wymaga jedynie solidnego know-how w matematyce, teorii systemu i w tym przypadku fizyce, ale jest również bardzo wymagające pod względem obciążenia procesora. Jeśli masz zamiar używać, powiedzmy, że Atmega328 taktowany zegarem 16 MHz może mieć problemy z użyciem tego rodzaju filtra. Jest to naprawdę skuteczne, jeśli używasz DSP, dzięki czemu możesz filtrować filtr dolnoprzepustowy zgodnie z wejściem.
Podsumowując, moja rada jest taka - spróbuj użyć filtru uzupełniającego pierwszego rzędu, a może nawet filtra uzupełniającego drugiego rzędu, na wypadek gdybyś nie był zadowolony z wyników. Jeśli twój system jest wolny od wibracji o wysokiej częstotliwości, to powinno działać świetnie. Poza tym link do JustJeff to idealne miejsce na początek, jeśli utkniesz przy implementacji :)
Wszystkiego najlepszego, Dan
źródło
Jestem również nowicjuszem i szukam rozwiązania mojej pracy z nawigacją. tak samo jak ty, mam tablicę skonfigurowaną z 3-osiowym akcelerometrem i żyroskopem 2D. do tej pory przeczytałem wiele materiałów na ten temat, podobnie postanawiam zastosować filtr Kalmana do mojego przetwarzania sygnałów. być może nie mam dla ciebie żadnych sugestii, ale chcę się z tobą podzielić czymś, co widziałem wcześniej. są linki do nich, mam nadzieję, że ci się przydadzą.
Ograniczony do mojej reputacji, mam uprawnienia do publikowania mniej niż 2 linków. więc pozostałe dwa chcę opublikować jak poniżej:źródło