Jak uzyskać obrót między osią akcelerometru a wektorem ruchu?

Pracuję nad systemem nawigacji dla pieszych na Androidzie. Obecnie próbuję uzyskać macierz rotacji między referencyjnym 3-osiowym akcelerometrem a ruchem, który jest zastosowany do urządzenia.

Powiedzmy, że chodzisz prosto z urządzeniem w ręku, ale oś Y akcelerometru (a więc oś Y urządzenia) nie jest zorientowana w tym samym kierunku, w którym zmierzasz (zasadniczo trzymasz urządzenie w niezręczny sposób). Następnie, jeśli chcę zastosować odległości (w oparciu o wykrywanie kroków), niewłaściwe byłoby zastosowanie ich do referencji akcelerometru (którą znam orientację): należy ją obrócić odpowiednio do kierunku ruchu.

Dlatego chciałbym wiedzieć, czy mógłbyś wyjaśnić mi metodę obliczania odczytów przyspieszeniomierza, aby przekształcić je w kąty obrotu (lub matrycę). Taka metoda musi unikać jednokrotnego włączania przyspieszenia, ponieważ błąd jest bezdenny na tanich akcelerometrach (w przeciwnym razie myślę, że byłoby to całkiem łatwe do wykonania).

EDYTOWAĆ : Magnetometr i żyroskop pomagają znaleźć orientację urządzenia nawet w trybie stacjonarnym, ale nie pozwalają wiedzieć, w jakim kierunku urządzenie się porusza. Mam pierwszy i szukam drugiego. Zasadniczo:

Odniesienie ludzkie (kierunek ruchu) -> Odniesienie do urządzenia (lub odniesienie do akcelerometru) -> Odniesienie do ziemi

i szukam sposobu na znalezienie macierzy rotacji do obliczania odległości od HR do DR, które następnie zastosowałbym do macierzy rotacji, którą odkryłem, aby przejść z DR do ER.

questionAnswers(1)

yourAnswerToTheQuestion