如何在谷歌探戈中获取旋转角度



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

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

探戈姿势数据中的旋转信息定义如下,
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;

问题:

以度为单位的角度值 (tangoRotateZDeg) 的范围应该是 -180 到 180,但即使我在 Z 轴上多次将设备旋转 360 度,角度也只能在 -120 到 120 度之间(有时在 -110 到 110 度之间)。

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

感谢您的任何帮助!

看看这个 - SO 关于从四元数中提取偏航的帖子 - 请注意,探戈姿势数据旋转是一个四元数值,而不是一组欧拉角

最新更新