我正在开发一款用安卓手机可以在空中绘画的应用。由于我的手机有加速度计,所以当我移动手机时,我会获取到每个轴向的加速度ax、ay、az。我感兴趣的是:x、y和z坐标。
从论坛和一些教程中得知,对加速度进行两次积分会产生很大误差。
那么对我来说,最好的解决方案是什么,以便获取关于手机位置变化的信息呢?
谢谢您的帮助。
从论坛和一些教程中得知,对加速度进行两次积分会产生很大误差。
那么对我来说,最好的解决方案是什么,以便获取关于手机位置变化的信息呢?
谢谢您的帮助。
不完全符合您的要求:
跟踪方向效果很好。也许您可以使用加速度计数据做类似的事情(无需任何积分)。
正如您在帖子中提到的那样,两次积分加速度并不能起作用。
更新:
如果精度完全不重要,则双重积分可能会持续几秒钟,但结果非常糟糕。
然而,在我看来,陀螺仪鼠标是更好的选择。请参见
Android设备上的传感器融合:运动处理中的革命 中的37:00-38:25。
请看:
http://www.youtube.com/watch?v=C7JQ7Rpwn2k
http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdf
我也在做一个类似的项目,我认为你不需要对加速度进行双重积分并计算移动距离。相反,可以直接使用加速度来移动。
但是如果你坚持要使用距离,可以通过在短时间间隔(t0,t1,...,tn)内采样加速度(a0,a1,...,an),并假设这些间隔内的加速度是边界的平均值,你可以得到类似以下的结果:
Vs=(t1-t0)*(a1+a0)/2 + (t2-t1)*(a2+a1)/2 + ... + (t[n]-t[n-1])(a[n]+a[n-1])/2
T=t[n]-t[0]
Xs=Vs*T
这与双重积分有些不同。祝好运。