Home Made Garbage

モーションセンサ比較 - MPU6050 vs MPU9250 vs BNO055 –

ホーム
電子工作
Raspberry Pi
WordPress
IOT

モーションセンサが3種ほどそろったので基本動作確認で簡単に比較してみました。

MPU6050

6軸モーションセンサ (3軸加速度+3軸ジャイロ)です。安定のHiLetgoで購入。

以下でArduinoライブラリとプログラム例が提供されています。
 https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050

以下のライブラリも必要です。
 https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/I2Cdev

ここでは以下のプログラム例を用いてProcessingの3Dモデルを動かしてみます。
 https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050/examples/MPU6050_DMP6

構成

Arduinoプログラム

以下のプログラム例を修正します。本デバイスのDMP(Digital Motion Processor)という姿勢角を算出する機能を使用します。
 https://github.com/jrowberg/i2cdevlib/blob/master/Arduino/MPU6050/examples/MPU6050_DMP6/MPU6050_DMP6.ino

100行をコメントアウトして117行のコメントアウトを解除してセンサの姿勢角(クォータニオン)を出力するようにして書き込みます。

Processingプログラム

以下のプログラム例を使用します 
 https://github.com/jrowberg/i2cdevlib/blob/master/Arduino/MPU6050/examples/MPU6050_DMP6/Processing/MPUTeapot/MPUTeapot.pde

71行で接続しているマイコンのポートを指定し実行ます。

動作

 

#MPS6050 オフセット未調整 #arduino #processing

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

オフセット調整をしていないため姿勢角、特にYaw角が安定してません。。。

オフセット調整

MPU6050センサを平行に置いた状態でZ軸加速度が1g(16384)、残りが0になるように調整します。

適切なオフセット値は以下のプログラムで調べることが出来ます。便利!
 https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050/examples/IMU_Zero

こちらを書き込んで実行すると数分でオフセット値が導出されます。

得られたオフセットをもとに以下の
 https://github.com/jrowberg/i2cdevlib/blob/master/Arduino/MPU6050/examples/MPU6050_DMP6/MPU6050_DMP6.ino

203〜206行を得られたオフセット値である以下に修正して書き込み、Processingを実行します。

動作(オフセット調整版)

 

#MPS6050 オフセット調整 #arduino #processing

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

調整により安定してセンサの姿勢が取得出来ているのがわかります。但しYaw角の初期値は絶対的なものではありません。

MPU9250

6軸センサMPU6500(3軸加速度+3軸ジャイロ)と3軸コンパスAK8963を搭載した9軸モーションセンサです。こちらもHiLetgoで購入 🙂 

結論から言うと。。。うまく行きませんでした。。。MPU6050のようにDMPを使用したいい感じのプログラムがなかったので。。。

しかたないのでSparkfunによるMPU9150モジュール用の以下のプログラムを元に9軸センサから姿勢角(クォータニオン)を取得しMPU6050同様Processingのモデルを動かして見ました。(MPU9250はMPU9150を低消費電力化した上位機種とのこと)
 https://github.com/sparkfun/MPU-9150_Breakout/blob/master/firmware/MPU6050/Examples/MPU9150_AHRS.ino

AHRS(エーハース)[ Attitude Heading Reference System]という電子コンパスで絶対Yaw角(方位)も出力する方式のプログラムのようです。またクォータニオン生成アルゴリズムを2種から選択できます。

以下のライブラリを使用します。
 https://github.com/sparkfun/MPU-9150_Breakout/tree/master/firmware

構成

Arduinoプログラム

改造プログラム

Processingプログラム

MPU6050と同様です。

動作

 

#MPU9250 #arduino #processing

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

う〜んやっぱりだめだー、電子コンパスでYaw角補正してるような動きはしてるけど なんかオカシイ。。。

参考

DMP関連と思われるプログラム。。力尽きたけど今度勉強してみます。。

あとオフセットの調整ができなかったのだけど、MPU6050とはレジスタの値が違うようです。以下を参考に修正しオフセット補正実現できましたがいい感じの姿勢角は得れませんでした。。。。

BNO055

9軸モーションセンサ (3軸加速度+3軸ジャイロ+3軸コンパス)。以前Adafruitで購入したもので詳細は以下の通り

モーションセンサ BNO055 モジュールの動作確認

動作

 

#adafruit #bno055 http://homemadegarbage.0t0.jp/bno055-01

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

オフセット調整必要なく安定した姿勢角を出力してくれる。

中身よくわからないけど、Yaw角もうまいこと3軸コンパスとか用いて姿勢角補正してくれてるんだと思う。。。

総括

正確な姿勢角を得たいのであれば高いけどBNO055がよさそう。。。でも簡単なセンサとしてはMPU6050かなぁ安いし。。。MPU9250くやしいなぁ(T_T)

コメントを残す

メールアドレスが公開されることはありません。コメントのみでもOKです。

TOP