9

我想知道汽车的当前速度并通过路径。我有一部带有加速度计和陀螺仪的安卓手机,它可以向我发送数据。这是电话坐标系中的数据,可能与汽车坐标系不同。

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

4

4 回答 4

16

您的一般问题的一般答案是no。加速度衡量的是速度的变化,所以你能从加速度中得到的最好的结果就是速度的变化。

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

v(t) = v0 + a*t

因此,如果您要让汽车沿直线行驶,并且您的设备固定在汽车上,您可以轻松获得速度变化(尽管测量误差会累加并很快导致差异)

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

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

问候。

于 2012-11-08T10:20:01.383 回答
4

You need some sort of external reference (e.g. GPS is such a thing): If you just integrate the acceleration, the error will go indefinitely.

Because these sensors are not accurate enough. the error will quickly get out of control. (The linked answer is about position but the same holds for the velocity.)

In case of a car, you are better off with the GPS. If want to do something fancy, you could enforce the environmental constraints deduced from a map, that is, assume that the car goes on a road and not through buildings, etc. You will find more details on this in Chapter 5 of the PhD thesis entitled Pedestrian Localisation for Indoor Environments.

于 2012-11-08T11:57:20.507 回答
3

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

不过,如果您使用 Android Location 类会容易得多。具体来说 getSpeed() 方法应该给你你需要的东西:http: //developer.android.com/reference/android/location/Location.html

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

于 2012-11-08T09:09:00.860 回答
3

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

于 2012-11-08T09:20:58.390 回答