2017-12-07 10 views
0

Ich arbeite mit dem Beschleunigungsmesser und Gyrometer Messwerte auf einem mobilen Gerät und ich möchte die Messwerte relativ zur Geräteausrichtung erhalten.Akzelerometer und Gyrometer Messwerte in Bezug auf Geräteausrichtung

Für was ich Orientierung A nennen möchte, ist das Gerät flach auf einem Tisch im Hochformat und ich tippe auf die linke (lange) Seite von das Gerät wird es bestimmte Beschleunigungsmesser und Gyrometer Messwerte sein. dann das Gerät vertikal noch im Portrait-Modus I erhöhen, aber mir gegenüber und I auf der linken Seite des Geräts tippen, nennen diese Orientierung B.

Ich möchte von Orientierung die Bewegung von Orientierungen A auf die Bewegung vergleichen B. gibt es eine Matrix M, so dass:

orientation B * M = orientation A 

und M auf Beschleunigungsmesser und Gyrometer Ablesungen bei Ausrichtung B angewandt werden könnte, so daß sie erscheinen, als ob es fertig waren, wenn das Gerät in der Ausrichtung A war? Ich suche nach etwas, das für jede Geräteausrichtung funktioniert.

Gibt es etwas Offensichtliches, das ich vermisse oder interessante Mathematik, um dies zu tun?

Vielen Dank im Voraus,

Eric

Antwort

0

Ich glaube, ich dies herausgefunden:

q1 is the Android rotation vector (quaternion) at orientation A 
q2 is the quaternion at orientation B 
a2 is a 3-tuple describing the acceleration at orientation B 

a2's acceleration with respect to the q1 coordinate system is: 
    q1.rotate(q2.inverse.rotate(a2)) 

Dies ist die Python quaternion Bibliothek.