用加速度计确定手机正在旋转的方向

时间:2014-02-28 17:09:30

标签: android android-sensors

所以,现在我正在抓住加速度计数据并将它们转换为手机握持角度的粗略估计。现在我只关注偏航轴。

我感兴趣的区域在偏航轴上介于0到45度之间,因此我对过去的5到10个读数进行了有限的排队,并对这些数字进行了比较以确定它是上升还是下降,哪种有效,但是它很慢,并不像我想要的那样精确或可靠。

有没有一种方法可以确定你的手机只用加速度计和磁场传感器旋转哪个方向,而不保留过去读数的历史记录,或类似的东西?我对传感器操作和Android一般都很陌生。任何帮助理解都会很棒。

1 个答案:

答案 0 :(得分:0)

目前还不清楚你在这里寻找什么,位置或速度。一般来说,您不希望通过对加速度计数据进行积分来获得位置测量。这个计算有很多错误。

如果您真的想要“手机旋转的方向”而不是角度位置,您实际上可以直接从陀螺仪传感器获得,这提供了旋转速度。这样可以让你在不存储数据的情况下获得从速度旋转的方向。你应该知道并不是每部手机都有一个陀螺仪传感器,但看起来确实像新手机那样。

如果您想要手机的绝对方向(位置),可以使用旋转矢量传感器。这是一种组合传感器,可以一次性自动集成来自多个传感器的数据,并提供额外的精度。由此,您可以通过单次测量获得滚动俯仰偏航。基本上,您首先要从Rotation_vector传感器获取数据。然后将传感器数据与getRotationMatrixFromVector一起使用。您可以使用getOrientation中的输出(参见与上一个链接相同的页面),这将为您吐出滚动俯仰偏航测量值。您可能需要将轴旋转一点以使角度在您想要的方向上测量为正。