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ą;
-
Znajdowanie nastawienia z surowych danych. (Używając metody kwaternionów lub macierzy transformacji)
-
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
-
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.