java-解释android加速度计值以获取沿真实世界中的轴的电话平移

我进行了搜索,但是找不到答案.解释android加速度计值时,如何将这些值沿X / Y / Z轴转换为现实世界中的电话转换?

我希望这是有道理的-我只是无法确切掌握如何摆脱重力?我们需要吗?

我在考虑是否要使用加速度计返回的3D矢量的大小-等于9.8或更大,然后减去重力以获得实际的加速度大小.但是由于手机重力方向分布在所有3个轴上,因此加速度计事件返回的矢量会不准确…

请帮忙!

谢谢

解决方法:

免责声明:我不知道任何Android细节,它可能也针对手机.我只是从物理学背景讲.

您将需要将加速度与速度集成,并将速度与位移(位置)集成.

您将遭受积分漂移的困扰.每次集成时,都会引入一个集成常数.多次集成使此错误更加严重.

您还需要担心角加速度.
即.旋转听筒但保持在相同的物理位置会发生什么?

有多种方法可以减少这些错误源.

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

如果有陀螺仪,则可以使用陀螺仪来消除角度分量.

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

GPS可用于尝试消除位移积分误差.
当GPS指示您停止时,将积分常数清零.

您将需要开始研究数值积分和滤波算法.
没有硬件加速,这可能在计算上很昂贵.

在这一点上,您真的真的需要开始问自己,您的问题真的需要精确的位移测量吗? GPS位移足够吗?仅加速就能达到相同的结果吗?

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

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

上一篇:Spark源码分析环境搭建


下一篇:Android:以编程方式更改整个应用布局方向