2

Android センサーに関するプログラミングを書いていますが、磁力計センサーの読み取り値に混乱しています。

磁力計は、電話の 3 つの軸の磁気強度を報告します。そして、同じ場所で、電話の向きが変わると、磁気の読みが劇的に変化することを観察しました。ただし、私の理解では、特定の場所での地球の磁場は、電話の配置ジェスチャーに関係なく、比較的安定している必要があります。

それで、私の質問は、生の読み取り値を 3 軸磁力計センサーから世界の座標系に変換する方法はありますか? 加速度計と方位データは、携帯電話でも利用できます。もしそうなら、電話の向きが変わっても、変換された磁気は同じであるべきだと思います.

Android のソース コード、特に getOrientation() 関数と getRotationMatrix() 関数を参照しました。彼らのコード実装から助けを得たいと思っていました。でもよくわからなかった。誰かがこれらの関数のアルゴリズム原理について説明できますか?

関数のコードへのリンク: http://www.netmite.com/android/mydroid/cupcake/frameworks/base/core/java/android/hardware/SensorManager.java

ありがとう!私はこの質問の解決策を本当に心配しています。

4

1 に答える 1

0

デバイスはワールド空間での向きを認識していないため、これは不可能です。

もちろん、向きはセンサー入力から推測できます。それが getOrientation() と getRotationMatrix() の機能です。しかし、長いタイムスケールでは、加速度 (重力による) と磁場の測定のみが必要な情報を提供します。ジャイロスコープのデータを使用して、より短い期間の推定値を改善できますが、getOrientation がそれを使用する保証はなく、そのセンサーが特定のデバイスに存在しない可能性さえあります。これは、getOrientation を使用して逆変換すると、修正したいデータとまったく同じデータが使用され、役に立たなくなることを意味します。

于 2013-04-14T20:12:20.317 に答える