オイラーのコンパスに似たものを作りたいのですが、ちょっとしたアドバイスが必要です。加速度計と磁気センサーを使用して、ヨー角、ピッチ角、ロール角 (ラジアン) を計算することができました。さて、次のステップは何をすべきでしょうか?インターネットで数時間検索しましたが、関連するものが見つかりません。基準軸に従って角度を構成する必要がありますか?
1 に答える
Android Play ストアの Euler Compass について言及していると思いますか?
加速度計と磁気コンパスの読み取り値は非常にノイズが多いです。カルマン フィルターなどを使用して、ジャイロスコープも考慮に入れると、より良い結果が得られます。Windows タブレットでは、複雑な計算のほとんどが既に行われていますが、Android と iPhone では、自分で行う必要があります。
デバイスの向きを表す変換マトリックスから始めることをお勧めします。
向きだけに関心がある場合は、次のように 3x3 マトリックスを使用します
。
0 0 1 (3 行目は Z 軸に沿ったベクトルです)
まず、ジャイロスコープの回転をマトリックスに適用します。
ジャイロスコープは、各軸の周りの加速度を提供します。
時間を掛けて、角速度を取得します。(速度)
もう一度時間を掛けて角度距離を取得します。(度)
短期的には、ジャイロスコープは他の 2 つのセンサーと比較して非常に正確で安定していますが、他の 2 つのセンサーのように固定された基準点はありません。つまり、前回の読み取り以降に移動した角距離のみが得られるため、時間の経過とともに丸め誤差により、コースからゆっくりとずれます。そこで、他の 2 つのセンサーの出番です... (これらを使用して、ジャイロスコープのドリフトを打ち消します)。
加速度計と磁力計はソート項で非常にノイズが多いですが、いくつかの連続した読み取り値の平均を取ることで、より正確な結果を得ることができます. (ローパス フィルター) これにより動作が遅くなりますが、長期的にはより正確になります... ジャイロスコープの反対の弱点です。したがって、秘訣は、両方を最大限に活用するために、それらを組み合わせることです。;)
加速度計はダウン ベクトルを表し、磁力計は北ベクトルを表します。したがって、行列のダウン ベクトルと加速度計のベクトルの違いを調べてから、行列を加速度計の方向に回転させます。ずっとではありません... ノイズの発生を避けるための小さなステップですが、ジャイロスコープのドリフトを打ち消すのに十分です。(継続的な再キャリブレーション。) 次に、磁気コンパスで同じことを行います。
これで、デバイスの向きをかなり正確に表す回転行列が得られます。次に、マトリックスに空白の行と列を追加し、それを OpenGL に渡すだけで、グラフィックスをレンダリングできるようになります。
これが役立つことを願っています。
レネ