データ揃ったので、処理方法を検討しながら、重要な順に眺めてます。
処理が複雑で大量になるので、処理方法の開発が時間かかりそうなので、並行して、データも眺めていきます。
●MovingBase Heading角とBNO085 yaw角の誤差測定
全体的なグラフでみると重なって見えるのですが、拡大して、誤差を計算すると大きな誤差があるポイントが
見つかりました。ターン中は、誤差が拡大します。ターン始動時に板の角付け角が急激に変化する。
計測システム:左足にSkiOnのシステムで、MovingBaseとBNo085が同じ基板上に乗っているシステムで測定
右足は、BootsOnで別フォーマットのファイルとなります。同時に処理できないのが大変面倒です。
=>MovingBaseのHeading角とBNO085のyaw角はぴったり一致すれば誤差ゼロということになります。
=>補正以前に誤差の出方がどうなっているか基礎的な解析をおこないます。
観察1:青線が誤差(Heading角-yaw角)ですが、左側2山から右側3山で増加してオフセットしてます。
丁度真ん中の山では、誤差全然でてません。それから一気にステップアップしているので、キャリブレーションが
入って、オフセット補正が入ったのだと思います。キャリブレーション中は、誤差がでないという現象からすると
ターン中の誤差は、ファームウェアから発生した計算誤差ではないかと疑われます。
観察2:roll角(板の角付け角)が急激し始めるポイントが誤差のピークとなっている。
観察3:
①直進時の誤差
レンジで5度以内にはいってます。
②ターン時の誤差
一瞬0.4秒間ですが、最大20度誤差が発生します。
上図を拡大してみると誤差が時間軸ずれしてるようにみえます。
=>Fusion計算が急激な変化に追いついてないように見えます。
青線が、Heading角からyaw角を引いた誤差値です。
直進時は、レンジで5度以内で推移してますが、ターンにはいると急激に誤差がふえます。
更に、BNOのデータを10msec周期をプロットして拡大してみると
1周期(100-120msec)先に進んでる値がでているように見えます。RTKが遅れているともいえます。
ターンが終了するとぴったり重なるので、データのタイムスタンプがズレている分けではないと思います。
●考察
考察1:急激な姿勢変化でyaw角誤差が大きくなる現象は、BNO055でも見られたのですが、
BNo085でも発見されました。しかし、BNO055の場合は、規則性がなく発生していたので
出たりでなかったで、補正しようがありませんでしたが、BNO085の場合は、規則性がありそうです。
考察2:真ん中のターン山では、誤差がフラットでしたので、ターンがあれば必ず誤差が増えるわけではなく
真ん中の山の次からキャリブレーション値が増加している点をみると、キャリブレーション計算中の
動きは、何もしてないデータをはきだしているのではないかと類推します。何もしなければ誤差が
出ないということなら、FUSION計算都合で発生している誤差ではないかとも考えられます。
考察3;しかし FUSION計算なら遅れてくるはずですが、実際はすすんでいてRTKが遅れている
という見方もできます。ターン時はアンテナが傾きますのでheading角が違ってくる可能性もあるので
板を傾けた場合のHeading角検証も必要。
考察4:今回は両足モードで、右がBootsOn 左がSkiOnシステムでした。左右スキーでの姿勢が
どうなったときに誤差が大きくなるのか未だわかってないので、左右でなく、右にBootsOnとSkiOnを
まとめて右のみ測定モードでのデータをみたほうが判りやすいかもしれません。
板上のシステム内のセンサとブーツ上のシステム内のセンサでの誤差の違いも解析しないといけません。
●以後
補正方式として、ドリフト補正と時間軸補正の両方を試してみて、統計的に誤差を小さくできるか
検討してみる。いずれにせよ、確定的にするには、大量のデータを処理しないとなんともいえないので
Pythonで処理プログラムを作りながら、補正方式開発を進めていきます。