4

可能重复:
使用 Core Motion
Android 加速度计精度(惯性导航)从加速度计数据中获取位移

我正在尝试使用核心运动用户加速度值,并对它们进行双重积分以得出覆盖的距离。我沿着 Y 轴线性移动我的 iPhone,对着桌子上的 30 厘米原木尺。首先,我让设备静止 10 秒,然后通过平均各自的用户加速度值来计算我沿三个轴的偏移量。当我尝试计算所覆盖的距离时,从加速度值中减去 X、Y 和 Z 偏移量。在偏移减法之后,这些值当然分别通过低通滤波器和中值滤波器。滤波器是线性滤波器,截止频率由在低通中取平均值的相邻值的数量和中值滤波器中的中值指定。我已经尝试过从 1 到 100 的不同值。最后,使用梯形规则对这些过滤值进行双重积分以获得距离。但是,计算出来的距离没有接近 30 厘米。我得到的最接近的值是 -22 厘米(我想知道为什么即使我将设备沿 Y 正方向移动,我也会得到负值)。我也遇到了这个: http://ajnaware.wordpress.com/2008/09/05/accelerating-iphones/ 这是一篇关于同一件事的旧帖子,它说返回的加速度计读数似乎以大约 0.18m/s^2 的量子形式出现(即大约 0.018g),很快就会导致很大的累积误差。这样一来,为了让这个误差真正无关紧要,人们必须将设备加速近 1.8m/s^2,这对于距离/长度测量目的来说实际上是不可能的。对于小的运动,看起来不可能通过使用最佳滤波器和高阶数值积分方法来计算距离,而没有像这样不切实际的速度/加速度约束。可能吗?当我得到越来越多的运动更新时,如何使用我的加速度与时间戳数据来内插一个随时间增长的多项式,这近似表示加速度与时间的曲线。多项式的双重积分将是小菜一碟。但是,对于小距离,多项式会有很大的误差分量。使用我的设备将受到的可预测的已知运动,我希望拍摄大量快照(计算距离与实际已知距离)以类似方式计算我的误差多项式,然后从我的第一个多项式中减去它。这能行吗?

4

1 回答 1

3

虽然这不适合 StackOverflow,因为这不是一个问题而是一个讨论,所以我会尝试总结一下我的想法。

如前所述,加速度计非常不准确,您需要非常高的精度才能完成此类任务,尤其是在您尝试测量如此短的距离时。另外,加速度计因设备而异,对于不同设备的相同运动,您将获得不同的结果。加上一个非常巨大的随机误差。

我的猜测是,您可以通过校准设备并使“测量移动”几次(例如 10 次)来消除很大一部分随机性/错误。之后,您有足够的数据来获得可能接近实际值的平均值。

校准是这里的关键部分,你必须想出一种聪明的校准方法,比如让用户以不同的速度移动设备不同的距离。

但这一切都只是理论。我真的很想看到你的结果,但我怀疑即使使用最好的过滤器/算法,你也能让它工作得足够好,因为噪音太大了。

于 2012-12-20T10:11:09.987 回答