4

私はセンサー値をリッスンしており、ハンドラーでそれらをOKにしています

    if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
       for (i=0;i<3; i++) mag[i] = event.values[i];

開発者ドキュメントによると、Sensor.TYPE_MAGNETIC_FIELD について次のように表示されます。

その情報を方位角、ピッチ、ロールに変換するにはどうすればよいですか? コンパス磁気ヘディングに変換するにはどうすればよいですか?

マトリックス変換を行った後、ORIENTATION センサーと ACCELEROMETER センサーから取得できるのと同じ情報を提供するだけですか?

4

1 に答える 1

3

加速度計にアクセスできる場合は、getOrientation()メソッドを使用できます。このメソッドは、2 つのセンサーから決定され、 getRotationMatrix()メソッド を介して計算された方位角、ピッチ、ロールを返します。

編集

コメントへの返信...あなたの質問を今見ました。ごめん。3 軸磁力計だけでは、デバイスが地表に平行な場合を除いて、方位角、ピッチ、およびロールを正確に取得することはできません。ニードル コンパスを使用して、a) スピンドルに取り付けて、傾きを確認して手動で補正するか、b) 液体で密閉して、気泡レベルを中心にできるようにしたことを覚えていますか? 方位角を取得するには:

azimuth = arctan(y/x)

ここで、電話を傾けると、x/y 平面センシングのエラーが大きくなる可能性があります。次に、(加速度計を使用して) 傾きを把握し、Z 軸の磁気強度を測定し、3 つを使用して補正する必要があります。これは基本的に、getRotationMatrix() および getOrientation() として知られているものです。

Sensor.TYPE_ORIENTATION が API 8 で廃止されたと私が考える理由の一部は、個別の方向センサー自体がないためです。これは、磁場と加速度センシングの組み合わせです。

それをすべてカバーする私が掘り起こした良い論文:

http://www.ssec.honeywell.com/position-sensors/datasheets/sae.pdf

于 2010-11-28T02:25:54.203 に答える