回転治具でのBNO実験、Magnetセンサを使ったyaw角の精度が悪すぎることが、顕在化したため
Magnetセンサは、使わずに加速度とジャイロセンサの6軸センサとして使うことにしました。
●理由1:Magnetを含めた9軸のFusion計算のばらつきが、運動の状態次第でコロコロ変わる。
特に、角速度が大きい横Gがかかる用途では、ばらつきが大きいと理解してます。
回転治具の角速度と横Gのレベルは結構厳しくて、自動車以上の角速度が普通の回転で発生してしまいますので、ばらつき易いのは納得できます。自動車の例をこちらのHPから引用させていただきました。
http://www.enjoy.ne.jp/~k-ichikawa/car_centrifugal.html
一般的な自動車では、横Gが1.5G以上になると浮き上がり限界とされてます。
カーブのコーナリングR350mで時速150kmhで0.5G程度ですが
回転治具では、r=0.3mですので、分母が小さいのがきいて、2.5m/secで2G以上でます。
ですので、自動車では体験できないほどの横Gと角速度を回転治具で発生させていることになりますので、MEMS FUSIONセンサにとっては、過酷な試験治具であることが分りました。
スポーツで一番厳しいのは、スキーの回転競技でした。スピードスケートも厳しいのですが
スキーのターン弧が小さいのがきいてます。ターン弧の小さいスポーツは厳しいです。
球技などの動作でも厳しい横Gがかかるものがあると思います。
理由2:Magnetセンサの出力レートが20Hz(50msec)しかでない。10HzのRTKを補間するのに
20Hzしかでないのでは、効果が少ないので、上記の高速な動きを測定できませんので
BNOのMagnetセンサは、遅すぎて使わないということです。
●代わりにGyroを積分してみた
回転治具で、GYROとLinearAccの2データのみにして、回転測定してみました。
①プログラム
Adafruitのライブラリでは、Gyroは、
bno.getEvent(&angVelocityData, Adafruit_BNO055::VECTOR_GYROSCOPE);
で取得できます。
LinearAccは、重力加速度成分を除去した併進の加速度なので、考察に使えるのでログします。
GISTに備忘録しておきます。サンプルプログラムのread_all_dataを改造してBlueTooth送信してます。
https://gist.github.com/dj1711572002/9e3bd98e24e0c12be28ecdb74685c31c
②Excelでデータ処理
50Hzでサンプリングしたデータのタイムスタンプもつけます。
値は、rad/secででてますので、deg/secに換算します。
1回転毎に停止位置で止めて回して止めてという繰り返し測定をしました。
1回転分のデータは停止から停止までの方向転換した点を1回転としました。
本格的には、磁気エンコーダーのタイミングを拾うのと、RTK側のBNOをGYRO対応にする
ことで、本格的な実験システムにします。
今回は、手動目視で様子をみてみました。
台形積分値は360度±10度以内にははいっていそうなので、MAGのFUSIONよりはましかもしれません。
このGYROもNDOFモードなので、MAGと加速度センサとのFUSIONをしてます。
●以後
明日は、大雨なので、タープはたたんでありますので、プログラムを作成して室内で回転実験をしていきます。晴たらRTKに組み込んだBNO Gyroで補間実験をしていきます。
BNO単独で室内測定しました。IMU6軸だと室内測定できるので楽でいいです。
GPSとか磁気を使っていると測定環境が制限されるので、IMU6軸は楽でいいです。