Sensor.TYPE_ROTATION_VECTOR有漂移:还有替代方案吗?

时间:2015-12-07 21:34:15

标签: android accelerometer gyroscope magnetometer sensor-fusion

我在Android上尝试使用Sensor.TYPE_ROTATION_VECTOR。它应该使用磁场传感器,加速度计和陀螺仪始终提供准确的旋转。但是,我注意到Moto G 2nd发生了巨大的漂移。我想知道这是一个特定于设备的问题,还是这种情况发生在很多手机上(我猜想,虽然我很熟悉Moto G 2nd是一个有问题的陀螺仪)。

是否有另一种形式的传感器融合,它是无漂移的(使用磁传感器)?我也试过了Google Cardboard的传感器融合,但它使用了偏差估计,因此可能并非完全漂移(因为此时看不到磁场传感器),尽管仍然比TYPE_ROTATION_VECTOR好很多。

2 个答案:

答案 0 :(得分:7)

https://play.google.com/store/apps/details?id=org.hitlabnz.sensor_fusion_demo有一些我刚刚找到的方便的选择。我仍然需要测试哪种融合导致最稳定的结果。 来源:https://bitbucket.org/apacha/sensor-fusion-demo/src

其中很多也表现出漂移;特别是使用陀螺仪的那些。

答案 1 :(得分:0)

平台/硬件独立方法

  1. 根据定义,陀螺将总是漂移。
  2. 根据定义,磁力计将缺少精度(*)。
  3. 就检测设备位置而言,加速度计没有任何价值。
  4. 一般方法包括:

    • 听取磁力计更改通知,随着时间的推移摊销。这样,您就可以在设备方向更改中进行较大更改。
    • 听取陀螺变化通知,随着时间的推移摊销。这样,您就可以在设备方向更改中进行更改。

    (*)在笛卡尔物理世界中,磁力计应该足够了,但在地球的宇宙中,你需要用陀螺仪补偿磁力计频率的更新,精度和外部因素的不足,这提供了立即反馈。