1

私は今、加速度計、ジャイロメーター、磁力計の出力を記録するAndroidアプリからMatlab情報を抽出しようとしています。線形加速度を求める必要があるので、重力を考慮して加速度計から計算できると思いました。磁力計の出力(地磁気)で電話の向きを確認することで見つけられるはずだと思いました。しかし、どの式でも正しい結果を得ることができません。磁力計のおかげで重力ベクトルを見つけることができるのは正しいですか?もしそうなら、センサーの読み取り値をどのように解釈する必要がありますか?

4

2 に答える 2

1

いいえ、磁力計から重力を見つけることはできません。


あなたが探しているのはセンサーフュージョンと呼ばれています。私はこの原稿に基づいてShimmerプラットフォームにセンサーフュージョンを実装しました。これは基本的にチュートリアルです。

方向余弦マトリックスIMU:理論

私が強くお勧めするもう1つのリソースは、Androidデバイスでのセンサーフュージョンです。

しかし、なぜあなたはそれを自分でやっているのですか?SensorManagerはすでに必要なものを提供しています。

于 2013-03-18T15:15:40.967 に答える
0

加速度計の値に対してローパスフィルターを実行して重力を取得し、重力から加速度計の値を減算することで、線形加速度を取得できます。以下のコードは http://developer.android.com/reference/android/hardware/SensorEvent.htmlからのものです

public void onSensorChanged(SensorEvent event)
 {
      // alpha is calculated as t / (t + dT)
      // with t, the low-pass filter's time-constant
      // and dT, the event delivery rate

      final float alpha = 0.8;

      gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
      gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
      gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];

      linear_acceleration[0] = event.values[0] - gravity[0];
      linear_acceleration[1] = event.values[1] - gravity[1];
      linear_acceleration[2] = event.values[2] - gravity[2];
 }
于 2013-03-18T17:26:36.210 に答える