Pytanie:
Znajdowanie prędkości i położenia dla małej odległości od czujników IMU
TheLazy
2020-07-13 12:22:12 UTC
view on stackexchange narkive permalink

Pracuję nad znalezieniem prędkości i przemieszczenia z czujnika IMU (MPU9250). Mam konfigurację Navio2 RPi4, która daje mi surowe dane (przyspieszenie, żyroskop, magnetyczny).

Zgodnie z moimi badaniami można to zrobić następującą metodą;

  1. Znajdowanie nastawienia z surowych danych. (Używając metody kwaternionów lub macierzy transformacji)

  2. Gdy dane dotyczące położenia będą dostępne, oblicz siłę grawitacji działającą na dane dotyczące przyspieszenia i wyeliminuj grawitację z przyspieszenia, aby znaleźć przyspieszenie liniowe

  3. Zintegruj obliczone przyspieszenie liniowe, aby znaleźć prędkość i położenie.

Wykonując powyższe kroki, mogłem obliczyć Postawa czujnika IMU na podstawie przykładu dostarczonego przez Navio2. W przykładzie zastosowano metodę Quaternion (filtr Mahony'ego) w celu połączenia surowych danych i podania kwaternionów.

Wyjście jest weryfikowane i działa doskonale. Teraz muszę przejść do kroku 2, tj. Znaleźć grawitację działającą na przyspieszenie.

Używanie kwaternionów do wyznaczenia grawitacji:

  gx = (2 * (q1 * q3 - q0 * q2)); gy = (2 * (q0 * q1 + q2 * q3)); gz = ((q0 * q0) - (q1 * q1) - (q2 * q2) + (q3 * q3) );  

Te wartości grawitacji są odejmowane od danych dotyczących przyspieszenia, aby znaleźć przyspieszenie liniowe. Gdy przyspieszenie liniowe jest już dostępne, całkowanie go z czasem daje prędkość i położenie. Implementację eksperymentuje się, przesuwając czujnik IMU na 100 cm. Jednak dane wyjściowe pozycji nie są zgodne z oczekiwaniami. Zadbano o jednostki surowych danych, aby sprawdzić poprawność implementacji.

Przeniosłem się do konwersji kwaternionów z powrotem do macierzy rotacji i obliczenia prędkości i danych pozycji.

Moje pytanie brzmi, jak znaleźć grawitację działającą na przyspieszenie za pomocą macierzy rotacji przekonwertowanej z Quaternion.

Proszę społeczność o pomoc w uzyskaniu cennych danych wejściowych i odniesień .

Dzięki.

Może spróbuj zapytać o to w Electronics.SE, jeśli nie otrzymasz tutaj żadnych odpowiedzi. Oprócz danych dotyczących przyspieszenia będziesz potrzebować żyroskopowej części tego czujnika. Następnie musisz obliczyć swój aktualny obrót w stosunku do wektora grawitacji Ziemi, a następnie odjąć go od zmierzonego przyspieszenia. Ponieważ nie ma możliwości bezpośredniego pomiaru prędkości, położenia lub aktualnego obrotu, możesz tylko założyć, że gdy całkowite przyspieszenie wynosi 9,81 +/- 2%, prawdopodobnie jest nieruchomy i skierowany w dół, więc możesz go skalibrować w ten sposób.
Jeden odpowiedź:
Kenn Sebesta
2020-08-01 01:16:11 UTC
view on stackexchange narkive permalink

To jest najlepsze odniesienie do rotacji: Representing Attitude: Euler Angles, Unit Quaternions, and Rotation autorstwa Jamesa Diebela z Uniwersytetu Stanforda (z dnia 2006-10-20).

Nie sprecyzowałeś, ale prawie na pewno używasz konwencji Taita-Bryana - która najpierw polega na odchyleniu, potem pochyleniu i przechyleniu - dla osi obrotu. Prawdopodobnie używasz również NED do osi translacji, ale to mniej jasne.

Możesz zobaczyć wszystkie mapowania w rozdz. 5.6.1 w powyższym linku. Możesz sprawdzić, czy poprawnie zmapowałeś swoje kwaterniony do macierzy rotacji. Bardzo łatwo jest zepsuć wartość znaku. Zwróć szczególną uwagę na fakt, że odwrotnością macierzy rotacji jest jej transpozycja, więc bardzo łatwo jest uzyskać prawidłowe wartości macierzy rotacji, ale w kolejności transponowanej.

Aby przejść do konkretnego pytania, użyj eqn . 35, możesz zobaczyć, jak odwzorować bezwładne przyspieszenie klatki na ramę ciała, używając macierzy obrotu. To proste mnożenie macierzy, aw twoim przypadku, zakładając NED, wektor z to [0;0;9.805].

Na koniec, Sugerowałbym, aby najpierw zadziałało to w symulacji, a następnie wypróbowanie empiryczne. Obroty są trudne, ponieważ są tak pedantyczne i łatwo jest do nich podejść do tyłu.

Oto [wersja PDF cytowanej pracy] (https://www.astro.rug.nl/software/kapteyn/_downloads/fa29752e4cd69adcfa2fc03b1c020f4e/attitude.pdf) z Uniwersytetu w Groningen.
Wygląda dobrze, chociaż wolę link CiteSeer (który ma również plik PDF), ponieważ czuję, bez dowodów empirycznych, że jest bardziej prawdopodobne, że będzie działał za 10 lub 20 lat.
Słusznie. Zasugerowałem edycję, aby link wyświetlał tytuł artykułu - na wypadek, gdyby CiteSeer również upadł!
To wspaniały dodatek, dzięki!


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 4.0, w ramach której jest rozpowszechniana.
Loading...