Android 转向检测数学

标签 android math

我想为此开发一个个人应用程序,我需要检测我的汽车的旋转。 在之前的帖子中,我得到了关于哪些传感器适合的答案,没关系。 现在我想请你概括一下基本/需要的数学关系。 我想在我的应用程序中看到的内容: - 以度为单位的汽车旋转 - 汽车实际速度(一般这个应用程序会在3-5公里/小时的慢速情况下使用)

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

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

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

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

谢谢,

最佳答案

您不需要深奥的数学知识。如果可用,您应该使用 TYPE_MAGNETIC_FIELDTYPE_GRAVITY。否则使用 TYPE_ACCELEROMETER 但您需要使用 Kalman 滤波器或低通滤波器过滤加速度计值。您应该以后置摄像头的方向为引用。这个方向是调用getOrientation返回的方位角,但是在调用getOrientation之前需要调用remapCoordinateSystem(inR, AXIS_X, AXIS_Z, outR) 以获得正确的方位角。然后,由于设备不是平放的,因此设备方向是什么(横向或纵向)并不重要。只要确保手机屏幕朝向与汽车方向相反的方向即可。
现在声明两个类成员startDirectionendDirection。一开始,startDirectionendDirection 具有相同的值,现在如果 azimuth 变化超过 3 度,总是有一点波动,然后把endDirection改成这个值,继续改,直到说20个返回的azimuth有相同的值(你要试验这个数字)。这意味着汽车停止转动,然后您计算 startDirectionendDirection 之间的差异,这将为您提供 旋转度数。现在将 startDirectionendDirection 设置为这个新的方位角并等待下一个转弯。

关于Android 转向检测数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15856957/

相关文章:

android 应用程序小部件动态背景颜色与圆角 android 2.3

Android通知仅播放声音

Android Canvas 硬件加速

android - 使用 Eclipse ADT 导出 APK 时忽略某些文件

math - 如何 "adjust"一个数据集,使总和等于 1。(我以为我知道正确的术语)

javascript - 根据可用空间堆叠 div

java - 如何使用android中照片库 GridView 中的复选框获取选中图片的路径

c - 数学矩阵程序

python - 找到小于 sqrt(N) 的 N 的最大约数

javascript - 如何计算圆形路径上的点? (中心已知)