0

Google の Project Tango デバイスを使用して屋内位置情報アプリを開発しています。ADF マップに関してデバイスの向きを UI に表示したいと考えています。

この目的のために、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度)。

私は何が欠けていますか?
この問題は、私のコードでは 1 に等しいと仮定している TangoPoseData の "RotationAxis.z" 係数と関係があると思いますが、よくわかりません。

助けてくれてありがとう!

4

1 に答える 1

0

これを見てください - SO Posting on extracting yaw from a quaternion - TangoPoseData 回転はオイラー角のセットではなく、クォータニオン値であることに注意してください

于 2015-01-22T13:57:24.207 に答える