如何用加速度计和陀螺仪通过手机测量汽车的速度?

时间:2012-11-08 09:01:13

标签: android accelerometer gyroscope

我想知道当前的汽车速度并通过一条路径。我有一部带加速计和陀螺仪的Android手机,它给我发了数据。这是坐标电话系统中的数据,可能与汽车的坐标系统不一样。

如何将此加速度和旋转转换为汽车坐标系?

4 个答案:

答案 0 :(得分:16)

您的通用问题的通用答案是no。加速度测量速度的变化,因此从加速度中获得的最佳值是速度变化。

要获得absolute speed,您必须拥有initial speed并将其添加到速度更改中:

v(t) = v0 + a*t

所以,如果你有一辆汽车沿直线移动,而你的设备固定在汽车上,你可以轻松地改变速度(虽然测量误差会加起来并迅速导致差异)

在实践中,您将面临许多试图实施它的问题,即:

  • 您需要根据与加速度相同的参考来确定initial speed。这需要一些测量和大量的三角测量,因为你可以从不同的感知器获得不同速率的两个值。
  • 汽车不会沿直线移动,所以你的加速参考将不断移动(更多的三角测量和微积分)。
  • 如果设备在用户手中,设备相对于汽车的移动将增加更多的计算(和累积的错误)。

问候。

答案 1 :(得分:4)

您需要某种外部参考(例如GPS就是这样的事情):如果只是整合加速度,错误将无限期地发生。

因为these sensors are not accurate enough.错误很快就会失控。 (链接的答案是关于位置,但速度也是如此。)

如果是汽车,最好使用GPS。如果想做一些奇特的事情,你可以强制执行从地图推导出的环境约束,也就是说,假设汽车在道路上行驶而不是通过建筑物等。你可以在博士论文的第5章找到更多细节。题为Pedestrian Localisation for Indoor Environments

答案 2 :(得分:3)

如果汽车以相同的恒定速度行驶一段时间,两者都不会提供任何东西。唯一的方法是GPS,它在每个位置都有计算速度。

答案 3 :(得分:2)

看起来可以做到。我没有Android特定示例,但此论坛有很多关于它的聊天:http://www.edaboard.com/thread119232.html

如果您使用Android Location类会更容易。具体来说,getSpeed()方法应该为您提供所需的内容:http://developer.android.com/reference/android/location/Location.html

Location类依赖于位置提供程序,因此您的应用程序将需要适当的权限。