小型学生ロケットにおいて、MPU9250のDMPによる姿勢角算出機能は使えるか?

 

はじめに

こんにちは。と-ご-かいはつかんきょ-です。

MPU9250は、加速度, 角速度, 地磁気がそれぞれ3軸搭載された安価なセンサです。扱いやすいDIP化キットが販売されていることもあり、人気が高いです。(もう生産中止してしばらく経ちますが...)

角速度を積分すれば角度が求まりますが、時間とともに誤差が蓄積します。一方で、加速度, 角速度, 地磁気の9軸の値を組み合わせれば、安価なセンサでもそれなりに使える姿勢角が取り出せます。ただ、これを実装するのは大変です。

しかし、MPU9250には大変便利な機能があります。それは、DMP(Digital Motion Processing)です。自分で相補フィルタやカルマンフィルタを実装しなくとも、いい感じに計算したクォータニオンを吐き出してくれます。

試した方の動画を見てみると、安定して姿勢角を求められるようです。

 

では、この便利な機能は、小型学生ロケットでも使えるでしょうか。結論を先に書いておくと、たぶん無理です。

ロケット向けに設計されていない

MPU9250はロケットに載せることを想定して開発されたセンサじゃありません。スマートフォンや「ドローン」に使うものです。

ですから、DMPのアルゴリズムは、スマートフォンや「ドローン」に適した設計がされているはずです。つまり、それらを使用する環境に合わせたモデル化がなされ、コードが書かれています。

スマートフォンも「ドローン」も、瞬間的に大きな加速度がかかることはありますが、概ね、加速度センサの値から鉛直方向を知ることができます。

一方、小型学生ロケットの動き方は異なります。打ち上げ前や着地後は、加速度センサの値から鉛直方向が分かるでしょう。しかし、エンジン燃焼中は数Gの加速度がかかりますし、燃焼終了後の弾道飛行中のセンサ値は0G付近を示します。

地磁気センサはどうでしょうか。ランチャーが鉄製の場合、その近くにいるときは地磁気センサの値を無視したいですが、そんな機能が実装されてるとは思えません。

DMPのアルゴリズムが想定すると思われる状況と、小型学生ロケットの環境が異なるので、使えない可能性が高いです。

ドキュメントどこ?

ここまで「たぶん」「はずです」「可能性が高い」など曖昧な書き方をしてきたのは、MPU9250のDMPの詳細が書かれたドキュメントが見つからないからです。

私が見つけきれてない可能性もありますが...

どのようなアルゴリズムで実装されているのか分からない以上、ロケットには使えません。もしかしたら、とても優れたアルゴリズムを採用しているのかもしれません。小型学生ロケットの環境下で、それぞれのセンサデータを使えるか的確に判別し、重み付けを変えながら演算してくれるかもしれません。

でも、ドキュメントがないなら知りようがありません。ロケット向けのセンサじゃないから、使えないだろうと判断するのが妥当です。

(ドキュメントの在りかを知っている方がいたら教えてください...)

結論

以上の事情から、MPU9250のDMPを小型学生ロケットで用いるのはたぶん無理です。センサフュージョンをしたいなら、自分で実装して、ロケットの状況に合わせて使うデータを切り替える必要があるでしょう。

便利な機能だけど、適材適所じゃないねという話でした。

地上を走行中のカンサットなら使えるのかな。