【问题标题】:How to get the rotation angle in Google Tango如何在 Google Tango 中获取旋转角度
【发布时间】:2015-01-22 01:54:57
【问题描述】:

我正在使用 Google 的 Project Tango 设备开发一个室内定位应用程序,我希望 UI 显示与 ADF 地图相关的设备方向。

为此,我从 TangoPoseData 访问 Z 轴旋转信息,并尝试将旋转数据转换回以度为单位的角度。

TangoPoseData中的旋转信息定义如下,
z = RotationAxis.z * sin(RotationAngle / 2)

我的代码如下所示:

//Sine value of the angle
double tangoRotationZsin = pose.rotation[2];

//Convert the sine value into a angle in radians
double tangoRotationZRad = 2*Math.asin(tangoRotationZsin);

//Convert to an angle in degrees
double tangoRotationZDeg = tangoRotationZRad * 180/Math.PI;

问题:

角度值 (tangoRotationZDeg) 应该在 -180 到 180 之间,但即使我在 Z 轴上将设备旋转 360 度数次,角度也只能在 -120 到 120 度之间(或者有时介于-110 到 110 度)。

我错过了什么?
我猜这个问题与 TangoPoseData 中的“RotationAxis.z”因子有关,我在代码中假设它等于 1,但不确定。

感谢您的帮助!

【问题讨论】:

  • 你有没有故意排除使用四元数?
  • 我不是在开发一个 3D 应用程序,而是一个 2D 地图,很像谷歌地图,其中一个点表示用户位置。我的目标是围绕 Z 轴旋转这个点以指示用户方向。这个点是一个由 Matrix.postRotate(float degree) 函数旋转的 Android 位图,不幸的是,这个函数需要一个以度为单位的角度,而不是四元数(我正在用 Java 开发一个 Android 应用程序,而不是使用 Unity)。所以我别无选择,只能尝试从 Pose 数据中计算出原始角度...

标签: java android google-project-tango


【解决方案1】:

看这个 -- SO Post on extracting yaw from a quaternion - 注意 TangoPoseData 旋转是一个四元数值,而不是一组欧拉角

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    相关资源
    最近更新 更多