相对于器件方向的加速度计和陀螺仪读数

时间:2017-12-07 16:16:26

标签: android accelerometer sensor android-sensors

我正在使用移动设备上的加速计和陀螺仪读数,我希望得到与设备方向相关的读数。

对于我将称之为方向A的设备在纵向模式下在桌面上是平的,我点击左侧(长)侧 该设备将有一定的加速度计和陀螺仪读数。 然后我垂直抬起设备,仍处于纵向模式但是面向我,我点击设备的左侧,调用它 方向B.

我想比较方向A的运动和方向B的运动。是否存在矩阵M:

orientation B * M = orientation A

并且可以将M应用于方向B处的加速度计和陀螺仪读数,以便它们看起来好像在设备处于方向A时已完成?我正在寻找有用的东西 对于任何设备方向。

有没有明显的东西我缺少或有趣的数学来做到这一点?

提前感谢,

埃里克

1 个答案:

答案 0 :(得分:0)

我想我想出来了:

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 ) ) 

这是使用Python四元数库。