将安卓加速度计数值转换为手机在现实世界中沿轴线的移动。

3

我进行了搜索,但是没有找到答案。在解释Android加速度计值时,如何将这些值转换为手机在X/Y/Z轴上的实际运动?

我希望这有意义 - 我只是无法准确地理解我们如何摆脱重力?我们需要吗?

我想,如果我们取加速度计返回的三维向量的大小,它应该是9.8或更大,然后我们减去重力以获得实际的加速度大小。但是由于手机的运动和重力方向分布在所有三个轴上,加速度计事件返回的向量是否不准确...

请帮忙!

谢谢

1个回答

4

声明:我不了解任何Android具体信息,这也可能是手机特定的。我只是从物理学背景出发。

您需要将加速度集成到速度中,并将速度集成到位移(位置)中。

您将遭受积分漂移。每次集成时,都会引入一个积分常数。多个积分会增加这种误差。

您还需要担心角加速度。 即。当手持设备旋转但仍保持在同一物理位置时会发生什么?

有方法可以帮助减少这些误差来源。

如果有多个加速计,您可以比较它们,以尝试确定任何角度分量。

如果有陀螺仪,您可以使用陀螺仪来帮助消除角度分量。

如果指南针足够精确,则可以尝试至少取消水平平面中的分量。

GPS可用于尝试消除位移积分误差。 当GPS显示您已经停止时,请将积分常数归零。

您需要开始查看数值积分和滤波算法。 没有硬件加速,这可能会非常耗费计算资源。

此时,您真的需要开始思考,您的问题是否真的需要精确的位移测量? GPS位移是否足够?您是否可以仅使用加速度来达到相同的结果?

你应该尝试阅读以下内容:

http://en.wikipedia.org/wiki/Inertial_navigation_system


谢谢!好的,GPS太广泛了,我想捕捉大约1米(最多)范围内的运动,可能是在封闭区域内。问题是,如果有两个力作用于加速度计:我的手移动它和重力-我如何解释加速度矢量?我可以从大小中减去重力,但我想我需要知道哪个方向是“向下”的?我能没有额外的传感器做到这一点吗?附言:我认为我可以只使用速度(少一个积分),累积误差根本不是问题;我只需要粗略的速度来确定运动方向... - Kaa
你为什么需要减去重力呢?当你尝试测量位移时,你的设备是否处于自由落体状态?如果不是,无论它连接到什么物体上(你的手、桌子、口袋),都会施加相等和相反的力;牛顿第三定律。编辑你的原始问题,并更具体地说明你想要实现什么,这样我们才知道你真正需要什么。累积的积分误差是整个问题,一旦你尝试推导速度和位移。加速度计甚至不能告诉你停下来了,只能告诉你没有加速度。 - Dan
假设您永远不需要速度/位移,最常用的确定“静止”的方法是结合两个因素:1)当加速度计数据在一段时间内保持恒定。2)未归零的加速度计数据的大小在一段时间内保持为1g。您需要考虑加速度计数据中的噪声边界。必须同时满足这两个因素,以尝试缩小设备方向旋转的情况。 - Dan
我猜大多数安卓设备也都有陀螺仪传感器,我的就有。你可以使用这个传感器来确定重力向量的方向分量,并使用GRAVITY_EARTH的恒定大小将加速度计的“真实加速度”向量转换为“坐标加速度”向量。我很惊讶SDK没有为此提供一个函数,因为几乎每个使用该传感器的人都需要这样做。 - Charlie
这可能会引起您的兴趣:http://www.instructables.com/id/Accelerometer-Gyro-Tutorial/ - Charlie
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接