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

时间:2011-11-25 03:17:27

标签: java android android-emulator accelerometer

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

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

2 个答案:

答案 0 :(得分:19)

加速度计为您提供三个方向(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

这是一种使用加速度计提出位置的方法,以及用于详细查找位置的算法:

http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdf

答案 1 :(得分:5)

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

这是an explanation why (Google Tech Talk) 23:20。我强烈推荐这个视频。

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

类似的问题是Distance moved by Accelerometer