确定惯性导航系统中的航向

时间:2012-06-03 07:34:44

标签: android orientation accelerometer sensor inertial-navigation

我对移动设备的惯性导航有疑问。 我正在使用Android平板电脑进行开发,但我认为这个问题与 所有类型(即使有更好的传感器)的硬件。

开发惯性系统时最基本的问题是如何确定惯性系统 承运人运动的方向。 即使我们假设磁力计读数是100%准确的(它们显然不是!)仍然存在设备方向相对于用户的问题。

简单示例 - 如果用户向北行走,但保持设备的Y轴指向东北方向,(指向不同轴的图片的链接:http://developer.android.com/reference/android/hardware/SensorEvent.html) 然后磁力计将指向东北方向。 我们如何判断用户实际走向哪个方向? (如果我们同时使用磁力计和陀螺仪确定航向,情况也是如此)

可能的解决方案是使用加速度计的Y轴和X轴读数。 使用arctan(a-Y / a-X)的方向 (例如 - 如果用户完全笔直地握住设备,则X轴将不会显示任何内容......) 但由于加速计的读数不稳定,所以不是那么容易......

有谁知道实际有效的算法?我确信这是一个众所周知的问题,但我似乎无法找到解决方案的参考...

提前致谢!

爱丽儿

2 个答案:

答案 0 :(得分:0)

请参阅this答案:通过获取与地球相关的加速度值,您可以使用atan2函数计算实际方向。

你提到用户拿着平板电脑,我认为相当稳定(不像我正在处理的情况,用户不断移动手机)。然而,由于某种原因,用户可能会改变设备的方向,这可能会影响您获得的读数。

因此,如果方向发生变化,您应该call remapCoordinates() accordingly来修复您获得的读数。

注意:您也可以使用getOrientation() method accordingly,第一个字段代表标题方向。

答案 1 :(得分:-2)

非常正确的答案是让设备在那里停留一段时间,检测地球的旋转,然后从中计算出真北。不幸的是,手机中的陀螺仪不够准确....