読者です 読者をやめる 読者になる 読者になる

9軸カルマンフージョンセンサ「JY901」

INPUTで使った方位センサについて紹介します。

 

今年のロボカップジュニアでも話題になった(?)ジャイロセンサ。近年、方位センサの暴走が多くなり、外乱に影響されないジャイロセンサで自己角度を推定するチームも増えてきています。北九州の方ではブロック会場の地場が悪く、ジャイロがあたりまえだとか。

 

ただジャイロセンサって、難しいんですよ。ドリフトというものがありどんどん角度が変わっていったり、動かしてると角度がずれていったり・・・。一般的にはドリフトを除去したうえでフィルタリングすると思うんですが、フィルタリングも奥が深くて・・・。

しかもYaw軸(ロボカップで使う軸)は加速度センサが使えないので資料があまりないです。ドローンの普及によりここらへんのフィルタリングが一般的に広まっていきいますが、どうしてもYaw軸は弱いです。ドローンが落ちないためには関係ない軸ですしね。

 

詳しい方は名前を聞いたことがあると思うんですが「カルマンフィルタ」っていうフィルタリングが一般的には最強です。

高専3年間の数学知識では理解不能でした。やりたいことだけは理解しました。(つまりコードを自分で書くのは出来ない)

一応、MPU6050(加速度+ジャイロ)というセンサがあり、それのカルマンフィルタライブラリってのもArduinoにあります。結構出てきます。

しかし、こういうライブラリ、ドローン用だと思うんですよ。今書いたとおり、加速度って結局Yaw軸に使えないんで。

 

そんな時にnncbotひぐちが見つけたのが「JY901」です。

ja.aliexpress.com

 

画像を見て、9軸でカルマンフィルタかけて角度を出力している!?

これ、なんか強そうwwwwって感じで1個購入しました。

 

で、結論から言って使えました。

Arduinoのライブラリが用意されているんですが、バグがあります。ここに1日ほど苦戦しました。

ただ、英語でわかりやすくデータシートが書かれていたのでそれをみて書いたらできました。この会社、中国なのにやるな!(偏見)

 

ということで自分で書いたYaw軸読み取りプログラムとキャリブレーションプログラムをあげときます。ご活用ください。

あ、Arduino用です。まあmbedでも容易に置き換え可能でしょう。

gist9b6cfe07968ce771c971

gistb58c8a8dd6ec8f9d7f29