1

在尝试在 Unity 中获得 Epson Moverio BT-200 的连续、准确定位时,我目前面临着一个相当具有挑战性的问题。当用户向上/向下看时(当我只使用加速度计时),我能够为用户获得相当好的结果,但对于左/右运动却不行。当仅依靠具有以下代码部分的设备的陀螺仪时,左/右运动以某种方式工作正常,但一段时间后仍然存在漂移,我需要将其移除。

Quaternion newAttitude = new Quaternion (gyro.attitude.x, gyro.attitude.y,    gyro.attitude.z, gyro.attitude.w);
transform.rotation = newAttitude;
Vector3 ea = newAttitude.eulerAngles;
transform.eulerAngles = new Vector3(-ea[0], -ea[1], ea[2]);

我已经尝试过使用 Android 内部getOrientation方法和其他各种传感器融合教程和实现(例如http://www.codeproject.com/Articles/729759/Android-Sensor-Fusion-Tutorial)。任何小提示都绝对值得赞赏。:) 提前致谢!!

4

1 回答 1

0

我在这里假设“左/右旋转”是围绕重力方向的轴旋转。

在这种情况下,仅使用陀螺仪和加速度计无法消除漂移。您需要集成第三个传感器,该传感器提供不平行于重力的方向的恒定参考。磁力计通常用于此目的,因为它提供了可用于减轻漂移的磁场方向的固定参考。

您参考的教程中实际使用了该传感器。除了互补传感器,您还可以使用更强大的替代方案,例如扩展或无味卡尔曼滤波器、Mahony 的 DCM 滤波器等。

于 2016-08-24T12:10:23.687 回答