首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android转向检测数学

Android转向检测数学
EN

Stack Overflow用户
提问于 2013-04-07 06:55:31
回答 1查看 381关注 0票数 1

我想为此开发一个个人应用程序,我需要检测我的车的旋转。在之前的帖子中,我得到了一个答案,那就是哪些传感器是好的,这是可以的。现在我想请你们总结一下基本/所需的数学关系。我希望在我的应用程序中看到:-汽车转动度-汽车的实际速度(通常这个应用程序将在低速情况下使用,如3-5公里/小时)

我认为最困难的部分是实时的旋转检测。这将是一个好的应用程序可以工作时,我把手机放在车主在横向或纵向模式。

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

首先,我想我会使用Android2.2,以便更好地兼容我的手机,但对我来说,2.3.3也可以。在这种情况下,我可以使用TYPE_ROTATION_VECTOR,这看起来是一件好事,但我真的不知道它对我是否有用?

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

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-07 07:47:03

你不需要深奥的数学知识。您应该使用TYPE_MAGNETIC_FIELDTYPE_GRAVITY (如果可用)。否则,请使用TYPE_ACCELEROMETER,但您需要使用Kalman滤波器或低通滤波器来过滤加速度计的值。您应该使用后置相机的方向作为参考。此方向是调用getOrientation返回的azimuth,但在调用getOrientation之前,您需要调用remapCoordinateSystem(inR, AXIS_X, AXIS_Z, outR)来获取正确的azimuth。然后,由于设备不是平放的,所以设备方向是什么(横向或纵向)并不重要。只要确保电话屏幕朝向与汽车方向相反的方向。

现在声明两个类成员startDirectionendDirection。一开始,startDirectionendDirection具有相同的值,现在如果azimuth的变化超过3 degrees,则总是会有一些波动,然后将endDirection更改为此值,并继续更改,直到返回的20个azimuth具有相同的值(您必须使用此数字进行实验)。这意味着汽车停止转弯,然后计算startDirectionendDirection之间的差值,这就得到了degree of rotation。现在将startDirectionendDirection设置为这个新的方位,并等待下一个转弯。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15856957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档