android – 如何提高加速度计和罗盘传感器的精度?

前端之家收集整理的这篇文章主要介绍了android – 如何提高加速度计和罗盘传感器的精度?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在创建一个增强现实应用程序,当手机面向兴趣点时(手机上存储了gps位置),它可以简单地显示文本视图. textview绘制在屏幕中的兴趣点位置.

它工作正常,问题是指南针和加速度计非常“变化”,并且textview不断地左右上下移动,因为传感器的真空度.

有办法解决吗?

解决方法

我们的问题是一样的.当我创建简单的增强现实项目时,我也遇到了同样的问题.解决方案是使用 exponential smoothing或移动平均功能.我建议使用指数平滑,因为它只需要存储一个先前的值.示例实现如下:
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;
}

α是平滑因子(0 <=α<= 1).如果设置alpha = 1,则输出将与输入相同(根本不平滑).如果设置alpha = 0,输出将永远不会改变.要消除噪音,您可以简单地平滑加速度计和磁力计值. 在我的例子中,我使用加速度计alpha值= 0.2和磁力计alpha值= 0.5.物体将更稳定,运动非常好.

猜你在找的Android相关文章