将陀螺仪与加速度计结合使用以获得航向

时间:2011-11-08 14:44:25

标签: android orientation accelerometer gyroscope azimuth

我正在使用Android设备获取标题(方位角或偏航角)。

Android API使用Accelerometer值+ mganetic字段来计算矩阵旋转,然后从该矩阵中提取方位角(也称为SensorManager.getOrientation(...))但结果非常不准确!特别是如果手机受到某些磁性物质的干扰。

然后我有陀螺仪,如果我整合了陀螺仪时间的值,我就能得到一个实际的角度,但是大家都知道:p,这可能会漂移...... 10秒后甚至我没有移动10°的漂移角度......

所以这里我在一侧有accel + magneto的结果,它在磁场附近相当废话 而在另一方面,我有陀螺的结果非常好,但随着时间的推移漂移...

所以我的问题是,是否有一种简单或聪明的方法将两个结果组合在一起以获得一种“稳健”的航向估计?我说很容易因为我知道有卡尔曼滤波器。但是,即使是艰难的,我读了50次这个理论我也不能得到一个该死的东西:)。

谢谢!

3 个答案:

答案 0 :(得分:4)

据我所知,在SensorManager中实现卡尔曼滤波器或类似的东西。查看Sensor Fusion on Android Devices: A Revolution in Motion Processing

您正在尝试解决已经解决的问题。

答案 1 :(得分:1)

似乎对陀螺仪传感器存在非常普遍的混淆。我最近回答了一个类似的问题here,所以我建议任何对这些主题感兴趣的人来看看这个问题和答案。

我在这个application中使用了所描述的技术(一种集成陀螺仪读数以改善结果的指南针)。结果并不完美,但总体上比其他指南针要好得多。

答案 2 :(得分:0)

简而言之:

无法组合陀螺仪+加速度计来获取方位角(我精确)仅仅因为加速度计无法检测XY轴上的加速度。

一种方法是将陀螺仪与指南针融合,但如果存在磁性扰动则不会起作用