2

我正在尝试创建一个应用程序来跟踪设备在 2D 空间中的移动。在网上做了研究后,我发现一种方法是两次集成线性加速度,但错误很可怕。

这个问题有什么解决办法吗?我希望能够向上移动我的手机,这将导致在屏幕上绘制一条垂直线,以缩放手机移动的距离。然后,如果我将手机向左移动,将绘制水平线 - 有效地允许我使用手机的移动在屏幕上绘图。

这完全可以做到吗?如果是这样,我应该朝着什么方向发展?我不知道从哪里开始...

编辑:有关该项目的更多信息:

我正在尝试制作一个可以跟踪腿部/手臂运动的运动应用程序:例如,当您进行腹部仰卧起坐并且手机通过臂带连接到您的脚踝时。

该应用程序将跟踪腿部的重复运动。

4

2 回答 2

2

不幸的是,这些手机中的加速度计远不及实现惯性测量单元所需的加速度计。最大的问题是,由于您要进行两次积分,因此积分总是带有一个常数积分(x,dx) = x^2/2 +c,这个常数使这变得困难。更糟糕的是,你得到了两次,一次是在积分时获得速度,一次是为了获得位置。

我在商业内部测量单元中看到的一种解决此问题的方法称为零速度零点,这是您使用其他一些数据源来告诉它何时停止设备运动的地方,以便您可以将速度归零. 例如,我看到一个项目在鞋子上放置了一个惯性测量单元,只要它检测到鞋子放在地上,它就会将速度归零,从而大大提高了准确性。您可能可以使用相机或其他东西来确定这一点,但是我还没有看到它完成。如果您想开始搞砸这个,那么您是一个了不起的人,我很想听听结果如何。

编辑:我应该澄清我上面提到的常数是错误累积的地方。如果您可以将速度归零,那么您会定期从存储的当前速度中删除累积的误差。位置上的误差还是会累积,但是这样可以让它在相对静止的时候不会漂移,这可能使它可以通过绘制。

于 2013-02-03T21:47:00.227 回答
1

除了将加速度积分两次之外,我别无他法。

此外,我认为,如果您不了解设备中可能存在的其他传感器(例如,在我的一台设备上,我有 7(七)个与设备可能接收的各种物理信号相关的传感器),这是不可能的。

除此之外,请记住传感器数据是嘈杂的,几乎总是必须进行预过滤。例如,您可以使用最后 10 个样本的几何平均值。这应该通过为积分函数提供更平滑的输入数据来降低您的错误。

于 2013-02-03T21:49:12.833 回答