我正在开发一个可以计算设备在6个方向上的移动的Android应用程序。我想我可以使用加速;
“ x = a.t ^ 2 ”但是a不是常量。这就是问题所在。如何计算总运动?
答案 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小节错误的传播。 (顺便说一下,你也需要陀螺仪。)