Jak określić pozycję na podstawie danych żyroskopu i akcelerometru?

33

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.

Steven
źródło
3
Brzmi trochę jak ten post na blogu, na którym natknąłem się dzisiaj: starlino.com/imu_kalman_arduino.html Nie mam połączenia z tą witryną, po prostu uznałem , że jest ona odpowiednia do tego, o co pytasz.
JustJeff,
1
w tym artykule można znaleźć serię samouczków dotyczących obsługi i interfejsu czujników akcelerometru. intorobotics.com/… tutaj są dostępne samouczki dotyczące pomiarów 2 osi
Ezu

Odpowiedzi:

8

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:

  1. Prawdopodobieństwo
  2. Prawo Bayesa
  3. Następnie musisz nauczyć się modelować proste scenariusze, aby dopasować je do filtra Kalmana.
  4. Obecnie jestem tutaj, więc znalezienie tego, co robić ... na pewno cię poinformuje.

I musisz się podzielić, jeśli natkniesz się na coś takiego.

Rick2047
źródło
7

... podwójnie zintegruj przyspieszenie, aby uzyskać pozycję

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.

hlovdal
źródło
6

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

Dan
źródło
Twój link jest martwy. Wykopałem trochę i ponownie znalazłem dokument: googledrive.com/host/0B0ZbiLZrqVa6Y2d3UjFVWDhNZms/filter.pdf Przynajmniej powinien być taki sam, może chcesz sprawdzić dwukrotnie.
Jan
Tak, to dokładnie to samo :)
Dan
link jest znowu martwy :(
KyranF,
@ KyranF myślę, że znalazłem to ponownie :) portal.ts-muenchen.de/Dateien/filter.pdf
Dan
@Dan nice, to jest dokładnie ten sam dokument, którego użyłem do zaprojektowania oprogramowania, kiedy zrobiłem mini segway z powrotem w uni. youtu.be/zOFlJJj8pPA
KyranF
1

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ą.

  1. Wprowadzenie filtra Kalmana
  2. Zestaw robotów do nawigacji CAS
  3. Zestaw narzędzi do nawigacji bezwładnościowej Open Source
  4. Kod źródłowy projektu o nawigacji

Ograniczony do mojej reputacji, mam uprawnienia do publikowania mniej niż 2 linków. więc pozostałe dwa chcę opublikować jak poniżej:

Czarny koń
źródło
1
Chociaż może to być przydatny zestaw linków do PO, ten post byłby wartościowy, gdybyś dodał także streszczenia odpowiednich treści z tych linków, specyficzne dla pytania, które opublikował PO. Pamiętaj, że gdy linki ostatecznie staną się nieważne z powodu zgnilizny linków, ten post nie będzie miał żadnej wartości. Dzięki.
Anindo Ghosh