如何/应该实施卡尔曼滤波器以获得准确的加速度计数据?

时间:2014-03-23 23:34:44

标签: android accelerometer sensor android-sensors kalman-filter

我希望尽可能从Android手机内置的加速度计中获取准确的数据。我想跟踪x和y轴的二维运动,甚至必须注册小的运动。

当我看到手机在桌子上平放时加速度计/线性加速度的数据时,当我应该为零时,它会发生很大的变化。

我看过卡尔曼滤波器,这似乎是一个很好的方法,但我在设置模型时遇到了问题。

1。卡尔曼滤波器是否可以从加速度计获得尽可能准确的数据?

2。卡尔曼滤波器会起作用吗?也许我误解了但似乎加速度或速度必须是恒定的?

第3。如何设置使用卡尔曼滤波器的模型?我很难理解(除此之外)过程噪音是什么?

2 个答案:

答案 0 :(得分:7)

当所有测量(在这种情况下为加速度)等于真实值加上测量误差时,卡尔曼滤波器适用。测量误差是过程噪声。对于原始卡尔曼滤波器应用噪声必须是正态分布的,即有时误差是正的,有时是负的,平均为零。

如果你快速地来回晃动你的Android手机,那么加速就会很大。我建议在这种动作中记录加速度计读数,并通过眼睛检查是否看起来它的读数确实受到某种正常分布的过程噪声的影响。我的猜测是答案将是" No",即我希望他们在图表上绘制时的读数将是平滑的。但如果它们不顺畅,卡尔曼滤波器可能会很有用。

如果您尝试使用加速度计读数计算出位置,我认为您的项目注定要失败。加速度是位置相对于时间的第二个导数,我从来没有听说过任何人能够以足够的精度整合读数以便完全有用。

我已成功将卡尔曼滤波器应用于Android手机上的GPS读数,以改善位置估算。有关为此实现卡尔曼滤波器的代码,请参阅Smooth GPS data。我随后想知道是否可以使用速度和加速度数据来改进位置估计。虽然我从未跟进过这个想法,但请参阅https://dsp.stackexchange.com/questions/8860/more-on-kalman-filter-for-position-and-velocity了解我正在考虑使用的数学。

使用所有传感器输入(GPS,加速度计,陀螺仪等)来获得良好的位置估计的最佳方式是一个非常困难(和有趣)的问题。要了解更多信息,要搜索的关键词是"传感器融合"。关于此主题,http://www.youtube.com/watch?v=C7JQ7Rpwn2k上有一段旧的YouTube视频。

答案 1 :(得分:0)

您可能会发现此主题非常有用。我遇到了同样的问题

我们认为平躺时的差异可能是一个问题,因为万向锁会混淆计算,但这只是一个理论。我们还注意到每个轴的协方差都会根据设备的方向而改变,这也可能是万向节锁定干扰,但同样只是一个理论

Implement a Kalman filter to smooth data from deviceOrientation API