引き続きMPU6050のDMPの性能テストです。前回までのテストで、MPU6050のDMP(Digital Motion Processor)は重力の影響を排除してくれることは分かりました。





問題はXYZ軸の加速度が静止状態でゼロでない値に収束してしまうことです。このままでは静止していても、計算上は、どんどん速度が上がってしまいます。




Google師匠に聞いてみると、キャリブレーションが効果がありそうです。


Arduino Sketch to automatically calculate MPU6050 offsets
http://www.i2cdevlib.com/forums/topic/96-arduino-sketch-to-automatically-calculate-mpu6050-offsets/


ということで、上記サイトにあるキャリブレーション用のスケッチを試してみることにしてみました。


MPU6050_calibration_v1.1.zip


フォーラム中でも話題になっていましたが、このキャリブレーションスケッチ、一向に値が収束しません。仕方ないので収束条件を緩めるように変更しました。



int acel_deadzone=30; //Acelerometer error allowed, make it lower to get more precision, but sketch may not converge (default:8)
int giro_deadzone=5; //Giro error allowed, make it lower to get more precision, but sketch may not converge (default:1)



これでも値がなかなか収束しません。どうも、かなり厳密にセンサーを平行に保たないと収束しないようです。何度も試行錯誤して、ようやく結果が得られました。


XAccelOffset: 82
YAccelOffset: 333
ZAccelOffset: 1443
XGyroOffset: -3
YGyroOffset: 716
ZGyroOffset: 475
※センサーによって値はまったく異なるので注意してください。


実際に試してみると、確かに静止状態では前よりも収束していますが(これでも若干のオフセットがあります)、センサーに動きを与えると、また大きなオフセットが発生してしまいました。




これでは速度、距離を算出することはできません。どうやら、オフセットを除去するためのフィルターを考える必要がありそうです。
σ(。-`ω´-)






MPU-6050搭載三軸加速度三軸ジャイロセンサモジュール

  • 出版社/メーカー: スイッチサイエンス
  • メディア: エレクトロニクス



ESPr Developer(ESP-WROOM-02開発ボード)

  • 出版社/メーカー: スイッチサイエンス
  • メディア: エレクトロニクス



Arduino 9軸モーションシールド

  • 出版社/メーカー: スイッチサイエンス
  • メディア: エレクトロニクス