M5StickCのIMU(AHRS)研究 その3 ENVハット

概要

前回はパラメータを調整してみましたが、今回はENVハットのBMM150を使って磁気センサーを使ってみたいと思います。これを使えば電子コンパス的に方角がわかるはず、、、

ただ、あまり評判よくないんだよね、、、

サンプルスケッチ

スケッチ例のENVを動かしてみました。静止している状態で方角だけ出力したデータになります。結構フラフラしていますよね、、、

M5StickCの中に磁石が入っているので、どうしても磁気センサーの精度は悪くなるみたいです。

中身でキャリブレーションをしていたので外してみます。この処理はSeeed社のGrove接続のBMM150ライブラリと同じ処理だ、、、

あれ、範囲が狭くなったけれどものすごく安定した、、、

生データ調整後
23150
18100
8250
10200

4方向に向けたときの値を比較してみました。方向によって感度が違う感じですね。

組み入れてみる

、、、動かない、、、

いろいろ調べたところ、そもそもちゃんと動かない疑惑があります。

ライブラリの種類

一番上が、M5StickCに入っているライブラリです。このライブラリは2番目のArduinoライブラリマネージャーに入っているものに近かったです。一番下が最初の実装です。

差をみたところ、一番大きかったのがクォータニオンから、オイラー角への変換方法でした。

クォータニオンの計算もちょっと違うのですが、M5StickCは上のページにあるような計算式でオイラー角を計算していました。

このひとのページすごいな、、、ただ残念なことに私には辛い、、、

まとめ

オリジナルのソースと比べると磁気センサーを利用する関数であるMahonyAHRSupdateはsqrtだったところがinvSqrtになっていてなんか変。この辺を直しても計算結果がおかしいので磁気センサーの値か、軸の調整をしないと正しい値は出ないみたいです。

そして、M5StackなどのBMM150を内蔵している端末でもちゃんとしたAHRSは実現できていない気がします。。。

このサンプルが一番キレイに動くかな?

でもなんか変です。

たとえば、このドローンも6軸でBMM150は搭載していないんですよね。他の磁気センサーを入手してみて、どんな値になるのかを確認してから、再度チャレンジしてみたいと思います。

AliExpressでは注文したので、届いてからかな、、、

コメントする

メールアドレスが公開されることはありません。

管理者承認後にページに追加されます。公開されたくない相談はその旨本文に記載するかTwitterなどでDM投げてください。またスパム対策として、日本語が含まれない投稿は無視されますのでご注意ください。