【STA23】回転治具によるBNO055実験<停止位置iPhoneと比較>

タープを張ったので、長時間の実験も快適にできるようになりました。
おかげで、いろいろないじり方をしてBNO055の実力を実験できます。
※10か月いじってきたBNO055ですが、yaw角精度が異常に悪い点で、使わないことにしました。代わりに、BNO055のファームを新規作り直したモデルBNO085を使うことにしました。相当改善されてます。違いとして、オートキャリブレーションがあると思います。BNO055のオートキャリブレーションは、頻繁にかかるので、しなくてよいタイミングでキャリブレーションしてしまうので、逆に大きな誤差を生んでしまいます。ファームウェアのアルゴリズムのバグだと思います。BNO085は、ユーザーの使い方を判断する機能がついていて、余計なオートキャリブレーションをしないので、MEMS IMUの一般的な実力 yaw角で±5度以内がでてます。
以下の記事をご覧ください。

【STA23】姿勢センサに秋月のBNO055を試す<ファーム改良版BNO085に乗り換え>

 

●今回追加したBNO基板
今までは、RTKシステムに搭載させたBNO055を実験してましたが、RTKとの同期処理など複雑にBNOデータをいじっているので、それが原因となっているのかもしれないので、独立したBNO055を作って、Adafruitのサンプルプログラムだけで、余計な処理をいれないで、計測したデータをBlueToothで飛ばしてPCでログする方法を追加しました。
追加したBNO055は、モジュールAと呼びます。最初に壊してしまったモノを治した形跡があります。
ESP32Dのプログラムを備忘録しておきます。BNO055をi2c接続(SDA 21 pinSCL22pin)して、QuarternionからEULER角を計算して、50msec周期でBlueTooth送信しているだけです。https://gist.github.com/dj1711572002/38541b4be5b73175e0e25fcd82a47570

左に新たなモジュールA、右は従来からのモジュールBで方向は同じく並べて両面接着してあります。

 

●停止位置精度の実験
 定規で度あたりにして、磁気センサの板を当てて止めて、そこを固定点とします。
スタートで定規をはずして手で右に回して、一周したところで、手で止めて、定規を当てて、この位置での
センサ値をよむという単純な測定です。これが、日照り下ではなかなかできなくて、タープを設置してようやくできた実験です。タープの効果絶大です。

①iphoneの方位センサアプリとBNO055単独基板の固定位置測定
 同じMEMS IMUなので、似たようなデータがでるのではないかと思ってやってみた。 AdafruiのライブラリーよりiPhoneのアプリのほうが高級で性能がいいはずなので、どのくらいの実力があるかいじってみました。


iPhoneでも最初は調子よかったのですが、雑に回してから止めたりするとどんどん停止精度がばらついてBNOも同時測定ですが、iPhoneよりもばらつきを拾うのが早く影響がでてます。スマホ用MEMSセンサの実力です。
iphoneでもレンジ17度もばらつくのですから、BNOが20度ばらついても驚く世界ではないことが分りました。センサFUSIONは、地磁気センサ3軸に対して、加速度センサとジャイロセンサの6軸をフィルター処理しているので、回転させ方を速くしたり粗く扱ったりすると履歴を拾って、ばらつきが大きくなるのでは感じました。

②回転速度の影響測定
 ①で、速度の影響が大きいのではないかと感触をえたので、低速と高速でRTKで速度測定しながら実験しました
A:手で回した速度
1回転で止めて、次にまた回すという手順です。低速(青)は、200mm/sec以下ですので、全周1671mmなので、1/8周/sec(45deg/sec)と遅い角速度です。高速(茶色)は、1200mm/sec以上でした。260deg/sec以上の角速度がでてます。

B 停止位置のばらつき
高速だとレンジ25度、低速だとレンジ10度とでました。だいたい10-20度のばらつきが常にあると考えたほうがいいみたいです。

C ちなみに速度管理しないで、適当に計測した結果は散々たるものでした。
RTKのシステムの要因もありそうですし、BNOのモジュールBがAより悪い結果がでてますが、 
  突然のFUSIONのばらつきがって、何が何だかわからないデータとなってます。
RTK heading角が確実に良いことだけは間違いないです。

③BNO055ユーザーの情報
こんなレベルでいいのか、不安なので検索してみました。

■AdafruitのForumでヨットでBNO055を使っている人がいて、±20度でるらしいです。
  https://forums.adafruit.com/viewtopic.php?p=451389

■BoschのForumでもyaw角精度±20度と言ってきてます。
https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/BNO055-unreliable-calibration-amp-heading-readings/td-p/57796

●考察
センサFUSIONは、カルマンフィルターを使っているので、過去の履歴を状態として想定して
  次の値をフィルターする原理ですので、同じ1回転でも速く回したり、遅く丁寧にまわすのとで状態が違うと判断するのだと思います。ですので、どういう運動のときにフィルタがどう影響するのかを考えないといけないセンサだということになります。例えば、スキー計測で使ったときは、これほど大きな誤差はでなくて、悪くて10度
ほとんどが5度ずれくらいでした。これは、スキーターンの角速度が非常に遅い点があると思います。
運動自体も併進しながらの回転運動ですので、加速度センサもジャイロセンサも余裕がある使い方でノイズが
少ない運動だと思います。そういう用途向きということだと思います。

●以後
もともと、IMUは、積分誤差が大きい点を承知して採用したのは、RTKの高精度ポイントで補正をかける前提でしたので、補正のかけ方に開発をシフトしていきます。
スキーの場合は、ニュートラルポイントでBaseのheadMot方位がスキー板の姿勢角と一致することが分っているので、ニュートラルポイントでIMUを補正をリセットしてかけて、次のニュートラルまで補正値を保持して使う方法でいけると思います。
ヒント:IMUのyaw角の線形性がよいので、傾き1で、切片を補正してやれば、正しいyaw角に近づく。
ヒント:リセットする角度範囲はスキーだと120度前後でいいので、回転治具で120度に一回の補正をかける

 いずれにせよ、FUSIONセンサは運動によってころころ変わるので、補正方法もそれぞれに対して
実験して決めていかないといけませんので、スキー以外でも歩行、自転車、スケートなど検討します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です