/ / MPU9150データ(ジャイロ、マグ、アクセ、例えば9DoF)からクォータニオンアルゴリズム、アルデューノ、mpu

Quaternionアルゴリズム、arduino、mpuへのMPU9150データ(ジャイロ、マグ、アクセ、例えば9DoF)

私は昨日深刻な問題に直面した。 私はMPU9150を使って物体の絶対位置を見つけようとしています。ジャイロスコープ、加速度計、磁力計を備えています。それぞれ3つの軸(x、y、z)で情報を提供します。 私はこれらの9つの数値をクォータニオンに変換する方法を探しています。後でオイラー角に変換します。 私はいくつかのlibsを見つけましたが... ....私はセンサーからの生データで何をすべきか説明しています。なぜならすべてのlibで磁力計のデータを別々に処理しているからです。

センサーからデータを取得するには、以下のコードに従ってデータを読み取るlibをいくつか使用しています。

mx = MPU9150_readSensor(MPU9150_CMPS_XOUT_L,MPU9150_CMPS_XOUT_H);
my = MPU9150_readSensor(MPU9150_CMPS_YOUT_L,MPU9150_CMPS_YOUT_H);
mz = MPU9150_readSensor(MPU9150_CMPS_ZOUT_L,MPU9150_CMPS_ZOUT_H);
gx = (MPU9150_readSensor(MPU9150_GYRO_XOUT_L,MPU9150_GYRO_XOUT_H)/32768.0)*250.0;
gy = (MPU9150_readSensor(MPU9150_GYRO_YOUT_L,MPU9150_GYRO_YOUT_H)/32768.0)*250.0;
gz = (MPU9150_readSensor(MPU9150_GYRO_ZOUT_L,MPU9150_GYRO_ZOUT_H)/32768.0)*250.0;
ax = (MPU9150_readSensor(MPU9150_ACCEL_XOUT_L,MPU9150_ACCEL_XOUT_H)/32768.0)*2.0;
ay = (MPU9150_readSensor(MPU9150_ACCEL_YOUT_L,MPU9150_ACCEL_YOUT_H)/32768.0)*2.0;
az = (MPU9150_readSensor(MPU9150_ACCEL_ZOUT_L,MPU9150_ACCEL_ZOUT_H)/32768.0)*2.0;

加速はGで測定され、m / s / sでは測定されません。

したがって、このコードを使用して、以下のデータを取得します。

mx = 104.0f; my = 104.0f; mz = 106.0f;
gx = -1.62f; gy = 0.12f; gz = 0.32f;
ax = -0.01f; ay = -0.1f; az = 1.0f;

次に、オブジェクトを180度回転させようとしました(Z周り)、データは次のようになります:

mx = 116.f; my = 116.f; mz = 115.f;
gx = -1.63f; gy = 0.18f; gz = 0.58f;
ax = -0.02f; ay = -0.06f; az = 1.01f;

回答:

回答№1は0

お役に立てれば、

それは簡単ではありません。

https://learn.adafruit.com/ahrs-for-adafruits-9-dof-10-dof-breakout/sensor-fusion-algorithms