我想为此开发一个个人应用程序,我需要检测我的车的旋转。在之前的帖子中,我得到了一个答案,那就是哪些传感器是好的,这是可以的。现在我想请你们总结一下基本/所需的数学关系。我希望在我的应用程序中看到:-汽车转动度-汽车的实际速度(通常这个应用程序将在低速情况下使用,如3-5公里/小时)
我认为最困难的部分是实时的旋转检测。这将是一个好的应用程序可以工作时,我把手机放在车主在横向或纵向模式。
所以请给我总结一下,计算汽车旋转需要哪些方程,公式,关系式。请告诉我您的建议,哪种运动/位置传感器最适合这种用途(重力、加速度计、陀螺仪等)。
首先,我想我会使用Android2.2,以便更好地兼容我的手机,但对我来说,2.3.3也可以。在这种情况下,我可以使用TYPE_ROTATION_VECTOR,这看起来是一件好事,但我真的不知道它对我是否有用?
我不想要完整的源代码,我想自己开发它,但我需要知道我可以从哪里开始,需要哪些深厚的数学知识,以及需要哪些数学知识。对于传感器的问题:我有点困惑,有很多传感器对我来说可能是合适的。
谢谢,
发布于 2013-04-07 07:47:03
你不需要深奥的数学知识。您应该使用TYPE_MAGNETIC_FIELD
和TYPE_GRAVITY
(如果可用)。否则,请使用TYPE_ACCELEROMETER
,但您需要使用Kalman
滤波器或低通滤波器来过滤加速度计的值。您应该使用后置相机的方向作为参考。此方向是调用getOrientation
返回的azimuth
,但在调用getOrientation
之前,您需要调用remapCoordinateSystem(inR, AXIS_X, AXIS_Z, outR)
来获取正确的azimuth
。然后,由于设备不是平放的,所以设备方向是什么(横向或纵向)并不重要。只要确保电话屏幕朝向与汽车方向相反的方向。
现在声明两个类成员startDirection
和endDirection
。一开始,startDirection
和endDirection
具有相同的值,现在如果azimuth
的变化超过3 degrees
,则总是会有一些波动,然后将endDirection
更改为此值,并继续更改,直到返回的20个azimuth
具有相同的值(您必须使用此数字进行实验)。这意味着汽车停止转弯,然后计算startDirection
和endDirection
之间的差值,这就得到了degree of rotation
。现在将startDirection
和endDirection
设置为这个新的方位,并等待下一个转弯。
https://stackoverflow.com/questions/15856957
复制相似问题