改变android中的传感器坐标系

时间:2012-05-25 22:42:55

标签: android sensor android-sensors coordinate-systems

Android在设备坐标系中提供传感器数据,无论其方向如何。有没有办法在“重力”坐标系中有传感器数据?我的意思是无论设备如何定向我都希望加速度计数据和坐标系中的方向,其中y轴指向天空,x轴指向东方,z轴指向南极。

我看了remapCoordinateSystem,但似乎仅限于交换轴。我想对于方向我将不得不做一些低级旋转矩阵变换(或者有更好的解决方案吗?)。但是如何加速数据呢?有没有办法让数据与固定的坐标系有关(世界坐标系的种类)。

我需要这个的原因是我正试图做一些简单的动作手势,当手机放在口袋里时,我会更容易将所有数据都放在与用户而非设备坐标系相关的坐标系中(这将有在不同用户的口袋里有一点不同的方向)

1 个答案:

答案 0 :(得分:0)

嗯,你在启动时基本上得到了北方向 - 为此你使用加速度计和磁场传感器计算方向(或不推荐使用的方向传感器)。

一旦你拥有它,你可以从那些方位角,俯仰角和滚动角计算旋转矩阵(方向余弦矩阵)。将加速度矢量乘以该矩阵会将设备帧移动转换为地球帧移动。

随着时间的推移,您的设备会改变其方向,您需要更新它。为此,请检索陀螺仪的数据并为每个新值更新方向余弦矩阵。您也可以像第一次一样获得方向真值,但不太准确。

我的解决方案涉及DCM,但您也可以使用四元数,这只是一个选择问题。如果需要,请随时提出更多问题。我希望这是你想知道的!