BMX055の9軸データをProcessingで可視化させる

前々回 BMX055からの9軸データ出力

http://tomi-tomi-pon.hatenablog.com/entry/2018/11/07/012854

前回 グラフ作成

http://tomi-tomi-pon.hatenablog.com/entry/2019/04/08/145913

 

今回はBMX055の9軸データをProcessingで可視化していきます

 

 

使用した物

使用した物

・BMX055  (9軸センサモジュール)

Arduino (どこにでもある)

・Processing(ソフトフェア)

 

 

以下githubのgraph_UI.pdeとmadgwick.inoがそれぞれProcessingとarduinoのプログラムになります。

 https://github.com/tomi-09/gryo-acc-mag-axes-graph-processing-

 

f:id:tomi-tomi-pon:20191023144240p:plain

ポートは各々設定してください

実行結果

f:id:tomi-tomi-pon:20190408163400p:plain

作ったUI

 

youtu.be

 

前々回作ったBMX055の9軸データとオイラー角のデータの数値データを前回作ったProcessingでのグラフ化を合わせて見やすいようにUIを作りました。

 

<簡単な動作説明>

 

Processingとarduinoとは加速度、ジャイロ、磁気が来た際(1,2,3,4と置いている)に空白を消して[,]ごとにx,y,zを読み取るという通信を行っています。

その送られてきたデータをグラフ、3Dアニメーション化をしています。

・グラフ

読み取ったデータが0を基準としてグラフの縦軸を超えた場合はグラフ縦軸を臨機応変に変更させています。

・アニメーション

青いboxはyaw→roll→pitchの順で

赤いboxはroll→yaw→pitchの順で

それぞれオイラー角を回転されています。

これは2番目を90度回すとジンバルロックという正常に動作しない現象があるためこのように2通りの描写を行いました。

 

 ここでは簡潔に書かれていますが詳しくはプログラムのコメント欄に記載しています

 <注意点>

ジンバルロックを回避するためにクォータニオンを用いた制御がありますがProcessingはopenGLのため使用できません。しかし、激しい動作でなければジンバルロックが起きないため結構使えます

例外処理を行っていないため通信が切れた時に再通信を行えません。

<まとめ>

Processingはjavaで書くことができ、そこまで難しいわけではないため結構簡単に作ることができます。今回はグラフ化させましたがグラフ以外にも面白いものも作ることができると思うのでおすすめです。(オシロスコープもできますがProcessingは100fpsしか動作保証していないのでご注意を)

Processingは本来アニメーションとかを使うことが多いのですが今回はこんなデバッグツールみたいなものを作るという一例として考えてくれると幸いです。

 ※2019/10/23 Githubのコード修正