Wie erhält man die Drehung zwischen der Achse des Beschleunigungsmessers und dem Bewegungsvektor?

Ich arbeite an einem Fußgängernavigationssystem für Android. Ich versuche derzeit, die Rotationsmatrix zwischen dem 3-Achsen-Beschleunigungsmesser-Referenzwert und der Bewegung zu ermitteln, die auf das Gerät angewendet wird.

Angenommen, Sie gehen mit dem Gerät in der Hand geradeaus, aber die Y-Achse des Beschleunigungsmessers (also die Y-Achse des Geräts) ist nicht in die gleiche Richtung ausgerichtet wie die, die Sie selbst steuern (im Grunde genommen halten Sie die Gerät auf unangenehme Weise). Wenn ich dann Abstände anwenden möchte (basierend auf der Stufendetektion), wäre es falsch, sie auf die Referenz des Beschleunigungsmessers anzuwenden (wobei ich die Ausrichtung kenne): Sie muss entsprechend der Bewegungsrichtung gedreht werden.

Aus diesem Grund würde ich gerne wissen, ob Sie mich über eine Methode zum Berechnen der Beschleunigungsmesser-Messwerte aufklären könnten, um sie in Drehwinkel (oder eine Matrix) umzuwandeln. Eine solche Methode muss es vermeiden, die Beschleunigung auch nur einmal zu integrieren, da der Fehler bei billigen Beschleunigungsmessern abgrundtief ist (ansonsten wäre es meiner Meinung nach ziemlich einfach durchzuführen).

EDIT: Magnetometer und Gyroskop helfen Ihnen, die Ausrichtung des Geräts auch im stationären Zustand zu ermitteln, lassen jedoch nicht zu, in welche Richtung sich das Gerät bewegt. Ich habe den ersten und suche den zweiten. Grundsätzlich gilt :

Bezugsperson (Bewegungsrichtung) -> Bezugsperson (oder Bezugsperson des Beschleunigungsmessers) -> Bezugsperson Erde

und ich suche den Weg, um die Rotationsmatrix zu finden, um Entfernungen von HR zu DR zu berechnen, die ich dann auf die Rotationsmatrix anwenden würde, die ich fand, um von DR zu ER zu gelangen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage