使用加速度计,陀螺仪和指南针计算设备在3D世界中的运动

我正在开发一个Android应用程序,它可以计算设备在6个方向上的运动。我想我可以使用加速度作为;

"x=a.t^2“ 但 a 不是常量。这就是问题所在。如何计算总移动量?


答案 1

加速度计为您提供三个方向(x,y,z)。它们是加速度测量,很难知道设备的位置。但是,请记住,加速度通过积分与位置有关:

a(t) = a[x]
v(t) = a[x]t + c
x(t) = a[x]t ^ 2 + ct + d

问题是你不能知道c或d,因为当你取导数时,常量会消失。因此,有一些金额您无法正确使用c和d丢失。您可以尝试通过记住您最后用于这些的值来补偿。因此,在抓取3个样本后,您可以开始计算位置。

关于如何解释来自传感器的数据,有大量信息。就像弄清楚重力的方向在哪里,然后减去重力以获得线性加速度。

http://developer.android.com/reference/android/hardware/SensorEvent.html

以下是使用加速度计以及用于详细查找位置的算法来计算位置的方法:

https://www.nxp.com/docs/en/application-note/AN3397.pdf


答案 2

的确,您可以通过将线性加速度积分两次来获得位置。但错误是可怕的。它在实践中是无用的。

以下是23:20的解释(Google Tech Talk)。我强烈推荐这个视频。

导致问题的不是加速度计噪声,而是陀螺仪白噪声,请参阅小节6.2.3错误传播。(顺便说一句,你也需要陀螺仪。

一个类似的问题是加速度计移动的距离


推荐