Unity 3D中加速度计和陀螺仪的传感器融合

时间:2014-11-07 05:32:04

标签: android unity3d accelerometer gyroscope sensor-fusion

我正在尝试将手机用作瞄准陀螺仪的枪。我使用手机或平板电脑以特定方向进行校准。这将直接拍摄。然后根据手机的转向(左/右/上/下),枪朝那个方向射击。

我正在使用陀螺仪。这一切都有效。除了拍摄约30秒后,陀螺仪慢慢开始向左或向右漂移。因此,当我回到我校准的方向时,它不会再直射。有没有人有任何编写互补或卡尔曼滤波器来融合陀螺仪和加速度计数据以在Unity 3D中获得更好结果的经验?

我在网上发现了这个问题 - http://www.x-io.co.uk/open-source-ahrs-with-x-imu/。它似乎完全符合我的要求。但我错了。我有时会变得更好,有时候会有更糟糕的结果。有人有经验吗?

1 个答案:

答案 0 :(得分:0)

首先,陀螺仪/加速度计融合将稳定您的俯仰/滚转角度,因为重力指示地面的方向。但是,您无法纠正"左/右"漂移因为实际航向未知。单独使用陀螺仪/加速度计无法实现正确的航向稳定:它需要额外的信息。

您提供的示例(Madgwick的MARG / IMU过滤器)是一个可以集成磁力计("北和#34;参考)的过滤器,但它有两个获得良好结果的要求:

  • 磁力计已经过适当校准。
  • 没有磁场干扰。如果你在室内,或者你正靠近电源线或金属结构,这通常是不正确的。

另一种方法是使用视频信号来获取光流信息,或检测手机是否处于固定位置以不时补偿陀螺仪偏差。