使用Accelerometer(陀螺仪?)在2D空间绘图

时间:2013-02-03 21:34:08

标签: android accelerometer physics gyroscope

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

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

这可以完成吗?如果是这样,我应该在开发中采取什么方向?我不知道从哪里开始......

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

我正在尝试制作一个能够跟踪腿部/手臂运动的运动应用程序:例如,当你正在做仰卧起坐,并且手机上有一个手镯连接到你的脚踝。

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

2 个答案:

答案 0 :(得分:2)

不幸的是,这些手机中的加速度计远不及实现惯性测量单元所需的功能。最大的问题是因为你积分两次积分总是带有一个常数积分(x,dx)= x ^ 2/2 + c这个常数使得这很困难。为了让事情变得更糟,你得到它两次,一次积分以获得速度和一次获得位置。

我在商业惯性测量单元中看到的一种固定方法称为零速度零点,这是您在停止设备运动时使用其他一些数据来告诉它的地方,这样您就可以零超出速度。例如,我看到一个项目将一个惯性测量单元放在一个鞋子上,每当它检测到鞋子被放在地上时它就会使速度归零,这大大提高了准确性。您可以使用相机或其他东西来确定这一点,但我还没有看到它完成。如果你想开始搞乱这个,那么你就是一个很棒的人,我很想知道结果如何。

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

答案 1 :(得分:1)

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

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

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