web-dev-qa-db-ja.com

加速度計、ジャイロスコープ、コンパスを使用して、3Dワールドでのデバイスの動きを計算します

私は6方向のデバイスの動きを計算できるAndroidアプリケーションに取り組んでいます。加速度を次のように使用できると思います。

"x = a.t ^ 2"ただし、aは定数ではありません。そしてこれが問題です。総移動量を計算するにはどうすればよいですか?

13
kubudi

加速度計は3つの方向(x、y、z)を提供します。これらは加速度の測定値であり、デバイスの位置を知るのが困難です。ただし、加速は統合による位置に関連していることを忘れないでください。

a(t) = a[x]
v(t) = a[x]t + c
x(t) = a[x]t ^ 2 + ct + d

問題は、導関数を取ると定数がドロップアウトするため、cまたはdを知ることができないことです。したがって、cとdが欠落していると正しく理解できない量があります。それらに対して最後に使用した値を覚えておくことで、補正を試みることができます。したがって、3つのサンプルを取得した後、そこから位置の計算を開始できます。

センサーからのデータを解釈する方法については、かなりの量の情報があります。重力が方向付けの場所を把握し、重力を差し引いて線形加速度を取得するようなものです。

http://developer.Android.com/reference/Android/hardware/SensorEvent.html

位置を詳細に見つけるためのアルゴリズムとともに加速度計を使用して位置を考え出す方法は次のとおりです。

http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdf

20
chubbsondubs

確かに、線形加速度を2回積分することで位置を取得できます。 しかし、エラーはひどいです。実際には役に立たない。

ここに 理由の説明(Google Tech Talk) 23:20です。このビデオを強くお勧めします。

問題を引き起こすのは加速度計のノイズではなく、 ジャイロホワイトノイズ です。サブセクション6.2.3エラーの伝播を参照してください。 (ちなみに、ジャイロスコープも必要になります。)

同様の質問は 加速度計によって移動された距離 です。

5
Ali