android - 使用加速度计(陀螺仪?)在 2D 空间中绘图

标签 android accelerometer physics gyroscope

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

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

这能做到吗?如果是的话,我应该朝什么方向发展?我不知道从哪里开始......

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

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

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

最佳答案

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

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

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

关于android - 使用加速度计(陀螺仪?)在 2D 空间中绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14677549/

相关文章:

android - 查尔斯代理 + Android HTTPS

Android - 如何在 onPause 中关闭所有对话框

android - GridLayout 的 rowOrderPreserved 和 columnOrderPreserved

iphone - 使用加速度计或陀螺仪计数步骤

r - 使用 R 和传感器加速度计数据检测跳跃

animation - Flutter 代码创建滞后动画。这里有什么问题吗?

ios - 惯性滚动算法与帧无关 - 预测结束位置

java - 修复碰撞检测穿透

c++ - 计算浮点 vector 的点积时,灾难性取消是一个问题吗?如果是这样,它通常是如何解决的?

Android 数据未保存在数据库中