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

お父ちゃん  2017.5.16 
Home > 電子工作 > モーションセンサ比較 - MPU6050 vs MPU9250 vs BNO055 –
すき 1
うんこ 0

モーションセンサが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とはレジスタの値が違うようです。以下を参考に修正しオフセット補正実現できましたがいい感じの姿勢角は得れませんでした。。。。

追記(2018/11/15)

Adafruit Itsy Bitsy M0 ExpressというマイコンでMPU9250 のDMP動作確認できました。よろしければご参照ください。

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

BNO055

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


国内なら以下で手に入ります。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

BNO055 9DOF絶対方位IMUモジュール
価格:3526円(税込、送料別) (2018/10/11時点)

楽天で購入

 
詳細は以下の通り

“キング・オブ・ダークネス” EVIL の鎌を自作

動作

 

#adafruit #bno055 https://homemadegarbage.com/bno055-01

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

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

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

総括

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

モーションセンサで作ったモノ

測距センサ VL53L0X を用いた身長測定器

RedBear Duo セットアップ方法 for Arduino IDE

スマート靴占い 『 IしたoTんきになぁ〜れ 』

“キング・オブ・ダークネス”EVIL ハンドをハック

「モーションセンサ比較 - MPU6050 vs MPU9250 vs BNO055 –」への1件のフィードバック

  1. 他サイト参考にしても解決できなかったことがしっかり理解できました。
    ありがとうございます!

コメントはこちらから

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください