0

Android は、向きに関係なく、デバイス座標系でセンサー データを提供します。「重力」座標系でセンサーデータを取得する方法はありますか? つまり、デバイスの向きに関係なく、y 軸が空を指し、x 軸が東を指し、z 軸が南極を指す座標系での加速度計データと向きが必要です。

見てみましremapCoordinateSystemたが、軸の交換のみに限定されているようです。オリエンテーションのために、低レベルの回転行列変換を行う必要があると思います(または、より良い解決策はありますか?)。しかし、加速度データはどうでしょうか。固定された座標系 (ワールド座標系のようなもの) に関連するデータを取得する方法はありますか。

これが必要な理由は、電話がポケットに入っているときに簡単なモーション ジェスチャを実行しようとしているからです。デバイス座標系ではなく、ユーザーに関連する座標系にすべてのデータを保持する方が簡単です (これには少し異なるユーザーのポケットでは異なる向き)

4

1 に答える 1

0

基本的に、開始時に北向きを取得します。このために、加速度計と磁場センサーを使用して向きを計算します(または非推奨の向きセンサー)。

それができたら、それらの方位角、ピッチ、およびロール角から回転行列(方向余弦行列)を計算できます。加速度ベクトルにその行列を掛けると、デバイスフレームの動きが地球フレームの動きに変換されます。

デバイスは時間の経過とともに向きが変わるため、更新する必要があります。これを行うには、ジャイロスコープのデータを取得し、新しい値ごとに方向余弦マトリックスを更新します。初回と同じように方向の真の値を取得することもできますが、精度は低くなります。

私のソリューションにはDCMが含まれますが、クォータニオンを使用することもできます。これは選択の問題です。必要に応じて、お気軽にお問い合わせください。これがあなたが知りたかったことだといいのですが!

于 2012-05-29T07:53:03.190 に答える