1

我想为此开发一个个人应用程序,我需要检测我的汽车的旋转。在之前的帖子中,我得到了一个答案,即哪些传感器有好处,这没关系。现在我想请你总结一下基本/需要的数学关系。我想在我的应用程序中看到的内容: - 汽车旋转度数 - 汽车实际速度(一般来说,这个应用程序将用于低速情况,如 3-5 公里/小时)

我认为这其中更难的部分是实时旋转检测。当我将手机以横向或纵向模式放置在车架中时,应用程序可以正常工作会很好。

所以请总结一下计算汽车旋转需要哪些方程、公式、关系。请告诉我您对哪种运动/位置传感器最适合此目的的建议(重力、加速度计、陀螺仪、..)

首先我认为我会使用 Android 2.2 来更好地与我的手机兼容,但对我来说 2.3.3 也可以。在这种情况下,我可以使用看起来不错的 TYPE_ROTATION_VECTOR,但我真的不知道它对我是否有用?

我不想要完整的源代码,我想自己开发它,但我需要知道我可以从哪里开始,需要什么深入的数学知识以及需要哪些数学部分。对于传感器问题:我有点困惑,有很多传感器对我来说可能没问题。

谢谢,

4

1 回答 1

1

您不需要深奥的数学知识。如果可用TYPE_MAGNETIC_FIELD,您应该使用。TYPE_GRAVITY否则使用TYPE_ACCELEROMETER,但您需要使用Kalman滤波器或低通滤波器过滤加速度计值。您应该使用后置摄像头的方向作为参考。这个方向是azimuth调用返回的getOrientation,但是调用前getOrientation需要调用remapCoordinateSystem(inR, AXIS_X, AXIS_Z, outR)才能正确azimuth。然后随着设备不是平放的,设备的方向是什么(横向或纵向)都没有关系。只需确保手机屏幕朝向与汽车方向相反的方向即可。
现在声明两个类成员startDirectionendDirection. 一开始,startDirection并且endDirection具有相同的值,现在如果azimuth变化超过 say 3 degrees,总是会有一点波动,然后将 更改endDirection为这个值并继续更改,直到说 20 返回azimuth具有相同的值(你必须尝试这个数字)。这意味着汽车停止转弯然后你计算和之间的差值startDirectionendDirection这给你了degree of rotation。现在设置startDirectionendDirection这个新的方位角并等待下一个转弯。

于 2013-04-06T23:47:02.977 回答