2016-08-24 4 views
0

UnityでEpson Moverio BT-200の連続的で正確な方向付けをしようとすると、現在かなりの問題に直面しています。ユーザーが上/下を見ているとき(私が加速度計だけを使用しているときは既に)、左/右の動きではなく、かなり良い結果を得ることができます。左/右の動きは、デバイスのジャイロスコープに次のコード部分だけを使用すると何とかしてもうまく動作しますが、削除する必要がある時間の後にまだドリフトがあります。Unity 3DのEpson Moverio BT-200からの正確なデバイス方向

Quaternion newAttitude = new Quaternion (gyro.attitude.x, gyro.attitude.y, gyro.attitude.z, gyro.attitude.w); 
transform.rotation = newAttitude; 
Vector3 ea = newAttitude.eulerAngles; 
transform.eulerAngles = new Vector3(-ea[0], -ea[1], ea[2]); 

Iはすでに(例えばhttp://www.codeproject.com/Articles/729759/Android-Sensor-Fusion-Tutorial)Androidの内部getOrientation方法および様々な他のセンサ融合チュートリアルおよび実装を使用してみました。小さなヒントは絶対に感謝しています。 :) 前もって感謝します!!

答えて

0

ここで、「左右回転」は、重力方向の軸を中心とした回転です。

この場合、ジャイロスコープと加速度計だけでドリフトを除去することはできません。重力に平行でない方向の一定の基準を提供する第3のセンサーを統合する必要があります。 磁力計は、ドリフトを緩和するために使用できる磁場方向の固定基準を提供するため、この目的のために一般的に使用されます。

このセンサーは、実際に参照したチュートリアルで使用されています。補完センサー以外にも、拡張または非センシングのカルマンフィルター、MahonyのDCMフィルターなど、より強力な代替品を使用することができます。

+0

ええ、私はすでにそれを試みましたが、成功しませんでした。カルマンフィルタよりも実装がはるかに簡単であるため、補間フィルタを最初に使用してください。私はそれがデバイスと団結の組み合わせと関係があるという気持ちを持っています... – KitKat

+0

各リファレンスシステムの慣習を徹底的にチェックしてください!それは、左利きのシステムやNEDをENUと混合するのはかなり一般的な間違いです。アルゴリズム全体を通して一貫した規則を使用する必要があります。 – dunadar

+0

はうまく動作するはずです(私はジャイロスコープやセンサフュージョンを使ってアップ/ダウンを調べると言ったので)。それは左右にジッターがあり、基礎として使用できる値を提供していないということです。 – KitKat