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-
ポートは各々設定してください
実行結果
作ったUI
前々回作った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のコード修正