如何提高加速度计和指南针传感器的精度?

我正在创build一个增强现实应用程序,当手机正面临一个兴趣点(手机上存储着这个GPS位置)时,这个应用程序只能显示一个文本视图。 文本视图被绘制在屏幕上的兴趣点位置上。

它工作正常,问题是指南针和加速度计是非常“变体”,并且textview不断上下左右移动,因为传感器的精确性。

有办法解决吗?

Solutions Collecting From Web of "如何提高加速度计和指南针传感器的精度?"

我们的问题是一样的。 当我创build简单的增强现实项目时,也遇到了同样的问题。 解决scheme是使用指数平滑或移动平均函数。 我build议指数平滑,因为它只需要存储一个以前的值。 示例实现如下:

private float[] exponentialSmoothing( float[] input, float[] output, float alpha ) { if ( output == null ) return input; for ( int i=0; i<input.length; i++ ) { output[i] = output[i] + alpha * (input[i] - output[i]); } return output; } 

Alpha是平滑因子(0 <= alpha <= 1)。 如果设置alpha = 1,则输出将与input相同(根本不平滑)。 如果设置alpha = 0,输出将永远不会改变。 为了消除噪音,你可以简单地平滑加速度计和磁力计的值。

在我的情况下,我使用加速度计α值= 0.2和磁力计α值= 0.5。 物体会更稳定,运动相当不错。

如果您想要更进一步,您应该查看低通滤波器的定向数据或传感器融合。

祝你好运与你的应用程序。

JQCorreia

我用一个简单的技巧解决了它。 这将会延迟你的结果,但是它们会避免指南针和加速度计的不准确。

创build最后N值的历史logging(所以将值保存到一个数组中,递增索引,当你到达N时,再次从零开始)。 然后,您只需使用存储值的算术平均值。

陀螺仪传感器读数的集成可以大大提高方向的最终估计的稳定性。 如果您的设备有陀螺仪,请查看稳定的指南针应用程序,或者在没有陀螺仪的情况下查看video。

陀螺仪的集成可以用一个相当简单的方法使用互补滤波器来完成