如何在 Google Tango 中获取旋转角度

How to get the rotation angle in Google Tango

我正在使用 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,但不确定。

感谢您的帮助!

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