【问题标题】:Accurate device orientation from Epson Moverio BT-200 in Unity 3DEpson Moverio BT-200 在 Unity 3D 中的准确设备方向
【发布时间】:2016-08-24 07:37:21
【问题描述】:

当我试图在 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)。任何小提示都绝对值得赞赏。 :) 先谢谢了!!

【问题讨论】:

    标签: android unity3d augmented-reality sensor-fusion epson-moverio


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,我知道,我已经尝试过了——但没有成功......我决定一开始就使用互补滤波器,因为它比卡尔曼滤波器更容易实现。感觉跟设备和unity的结合有关系……
    • 彻底检查每个参考系统的约定!将左手和右手系统或 NED 与 ENU 混合使用是一个很常见的错误。您应该在整个算法中使用一致的约定。
    • 应该可以正常工作(正如我所说,仅使用陀螺仪或传感器融合进行向上/向下查找工作)。这是某种左右抖动的问题,没有提供可以用作基础和使用的值
    • “不提供可以用作基础和工作的价值”是什么意思?无论如何,请仔细检查 Unity/Android/sensors 以及补充过滤器中的坐标系统约定...我学到了很难发现这些错误的艰难方法,因为在某些情况下显然可以正常工作。
    • 左看右看没有平滑移动,值从一个读数变为另一个读数,最多 25°。正如我所说,坐标系已调整,效果很好。我还通过复制它尝试了原生 Android 源代码,即使这样也无法正常工作
    猜你喜欢
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 2014-12-27
    • 1970-01-01
    • 2012-06-26
    相关资源
    最近更新 更多