0

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

感谢您的任何帮助!

4

1 回答 1

0

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

于 2015-01-22T13:57:24.207 回答