7

我正在创建一个增强现实应用程序,当手机面对兴趣点时,它可以简单地显示一个文本视图(gps 位置存储在手机上)。文本视图绘制在屏幕上的兴趣点位置。

它工作正常,问题是指南针和加速度计非常“变体”,并且由于传感器的不准确性,文本视图不断地左右上下移动。

有办法解决吗?

4

4 回答 4

8

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

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,则输出将与输入相同(根本没有平滑)。如果设置 alpha = 0,则输出将永远不会改变。要消除噪声,您可以简单地平滑加速度计和磁力计值。

就我而言,我使用加速度计 alpha 值 = 0.2 和磁力计 alpha 值 = 0.5。物体会更稳定,运动也很好。

于 2011-11-13T10:19:53.897 回答
3

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

祝你的应用好运。

JQCorreia

于 2011-09-29T14:14:45.947 回答
1

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

创建最后一个值的历史记录(因此,当您再次从零开始N时,将值保存到数组中,增加索引)。N然后,您只需使用存储值的算术平均值。

于 2011-09-29T14:15:00.430 回答
0

陀螺仪传感器读数的集成可以极大地提高最终方向估计的稳定性。如果您的设备有陀螺仪,请查看稳定的指南针应用程序;如果您没有陀螺仪,请查看视频。

陀螺仪的集成可以使用互补滤波器以相当简单的方式完成。

于 2011-12-06T13:48:16.313 回答