M5Stackラップタイマー + バンク角のデータ化(Grove – IMU 9DOF v2.0 – MPU-9250)

前回の袖ケ浦走行ではもう一つ試したことがありました。それは分かるとかなりうれしいであろう「バンク角のデータ化」です! バイク乗りだったら誰もが一度は考えたことある「いまのバンク角って45度くらい?」「あと何度安全マージン残ってる??」とかいうの、あれのデータ化です! しかし結果から言うとこれがまあ全然ダメでして、、、いろいろ試したんですがダメでしたという顛末記を書きます。解決方法は載ってませんので悪しからず(笑) むしろ教えて欲しい!

バンク角=傾きを求めるにはIMUとかMPUとか言われるセンサーを使います。このへんは他のサイトさんのほうが詳細かつ正確に扱ってるので、ググってそっちを見ていただくとして、ここでは概要しか書きませんが、1.重力(加速度)を求める、2.回転(ジャイロ)を求める、3.方角を求めるというのが基本機能としてあります。1と2が求められるのを6軸センサー、1,2,3すべて求められるのを9軸センサーと言います。

角度を求めるには、センサーから「角度」がずばっと出てくるわけではなくて、加速度とかジャイロの値から角度を「推定」します。これを姿勢推定と言うんですが、この推定の計算方法にいろいろあるというわけ。

加速度から推定すると比較的正確な値になりますが、推定までに時間がかかります。一方ジャイロから推定すると瞬時に値が分かるんですが、徐々に値がズレる傾向にあります。これはジャイロから推定する時は「右に○度回転して、次に左に○度回転して・・・」とかいうのをひたすら足していく(積分)ので、そりゃいつかズレるわなということ。なので精度を上げるためにこれらのいいとこ取りをして、加速度+ジャイロ両方を使って推定します。

M5StackにはMPUが内蔵されてます(初期はMPU9250、2019年中ごろからはMPU6886)。んで、加速度とジャイロ両方使って推定すれば良いじゃん! なんかそのへんを上手く計算してくれるライブラリもあるんじゃない??と思って取り組んだわけですが、これがなかなか上手くいかないです。

一番の問題は、バイクが常に動いているということ。それも結構なGをかけながら動いているので、加速度情報がかなり大胆にズレるんですが、このバイクの加速度を考慮しながら、加速度+ジャイロから角度を求めるというのがもうどうしていいか分からないんです。

姿勢推定で有名な「拡張カルマンフィルタ」というのがあって、これを使うと素早く、かつ正確に姿勢を推定出来るという優れものなんですが、なぜかこれをM5Stack(MPU6886)で使うとものすごく遅くなるという症状があって。値が落ち着くまで数秒かかるというもの。プログラムの組み方の問題なのか、M5Stackでは処理の限界なのかよく分かりませんが、「なんかこのへんを上手く計算してくれるデバイスないのか~」といろいろ探し回っていきついたのが、SeeedのGrove – IMU 10DOF v2.0というもの。Groveコネクタ搭載のMPU9250です。内蔵MPUではないので写真のように上に乗っかるイメージになりますが、これのいいとこはDMP(Digital Motion Processor)という、姿勢推定をデバイス側でよしなに計算してくれる機能。お~これこれ、求めてたのは!

これをM5Stackにつなげて角度を求めてみると、レスポンスもよくて、かつ正確に出てるっぽい! こんな感じのレスポンスです。真ん中に水平を表す白線を引いてますが、M5Stackを右に左に傾けたときでも真ん中の白線が水平だというのがお分かりいただけると思います。

お!これだったらなんか期待出来そう! バイクの加速度がのっかってもなんかうまいこと取り除いてくれるのではなかろうか、という期待のもとテストしたわけですが、まあ結果はさんざん。当たり前なんですが、MPUからしてみたら「バイクの加速度なんてしらんがな」という。ま、当たり前ですね。

いちお結果を載せますが、こういう具合にグラフがでたらめに出てます。9コーナーの最もバンク角が深くなるというところのキャプチャですが、左ヘアピンなので本来は最大バンク角になるはずですが、もちろんそうなっておらず、その前の8コーナー、ゆるい右の後に左に回り込むところも、なぜか最高速度のところが最もバンク角が深いとなってます。全然実態と合ってない! 意外とピッチングのほうが傾向としては実態に合ってます。加速中はプラスに振れて、ブレーキングでマイナスになっているというのは設計通り。ただしデータ上は30~40度くらい傾いてることになってるので、、、ウイリーで立ち上がって、ジャックナイフばりのブレーキングというエクストリームな乗り方らしい(笑)

やっぱ根本的にバイク加速度を打ち消す処理を書かないといけないですね。

ネット上に姿勢推定のブログとか解説はいっぱいあるんですが、加速する物体での姿勢推定に関する解説を見たことなくて。じゃあ自分で考えてやれ!ってことなんですが、MPUをもっと根本的に理解するところから始めないといけないので時間かかるなあ~ (そもそも私に理解出来るのか??)

でも昨今の新型バイクではジャイロが搭載されることが多くなってきたので、やり方はなにかあるはず(ま、センサーも違うんでしょうが)。

こうやればいいはず!という情報もいま手元に無いので探り探りになりますが、いつか正確に出せるようにしたいなー。誰かライブラリ公開してくれないかな。

シェアする

コメントを残す

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

コメントする