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

标签 android accelerometer sensors android-sensors kalman-filter

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

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

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

<强>1。卡尔曼滤波器是否是从加速度计获取尽可能准确数据的方法?

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

<强>3。如何设置使用卡尔曼滤波器的模型?我无法理解(除其他外)过程噪音是什么?

最佳答案

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

如果您快速前后摇动您的 Android 手机,将会有很大的加速度。我建议记录那种 Action 中的加速度计读数,并通过肉眼查看读数是否确实受到某种正态分布过程噪声的影响。我的猜测是答案将是“否”,即我希望他们在图表上绘制时的读数会很平滑。但如果它们不平滑,卡尔曼滤波器可能会有用。

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

我已成功将卡尔曼滤波器应用于 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 视频。 .

关于android - 如何/我应该实现卡尔曼滤波器以获得准确的加速度计数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22598585/

相关文章:

android - Android 中电话 Intent 的 Uri 是什么?

android - 传感器 TYPE_ACCELEROMETER/TYPE_MAGNETIC_FIELD 和 TYPE_ORIENTATION 之间的不同值

javascript - 如何检查用户是否使用 javascript 触摸设备(智能手机)

JavaScript addEventListener 延迟

android - 将陀螺仪与加速度计相结合以获得航向

linux - 基于加速度计的手势识别

android - 在 android 屏幕关闭时识别传感器是否工作

android - Genymotion "The virtual device got no IP address"

android - 在微调器中选择项目 - Android

android - 使用 Android 中 ListView 外的删除按钮删除 ListView 中的项目