谷足の反力ベクトルが内側の肩を通過しているかの測定方法を検討してます。
1:肩位置測定方法RTK MovingBaseで足元のBaseアンテナと肩のRoverアンテナ間を測定して
2:反力ベクトル角の測定は、IMUの傾斜角で、脛骨の角度として測定します。傾斜測定になるので、
Gravity値を測定して計算します。
●IMUにおける傾斜角測定
精密な傾斜角といえば、アナログデバイス社の加速度センサ群が定評がありますので、技術資料を調べました。
https://www.analog.com/media/jp/technical-documentation/app-notes/an-1057_jp.pdf
ここの最後のページに3軸での傾斜角の計算と精度の解説があります。
X軸の回転角φ、Y軸の回転角ψ、Z軸の回転角Θとしてます。
このpdfの最後のページにオフセットのキャリブレーション方法も解説してあるので、傾斜測定でのキャリブレーションもプログラムにいれて、いこうと思います。
●マイコンESP32devのプログラム
gistに保存してあります。
https://gist.github.com/dj1711572002/8968538c6fe2ee2e0f182e6684abf988
BNO055のライブラリーはIMUモードに変更してあります。
OrientationのeY(roll)とeZ(pitch)を出力させてます。IMUモードなのでyaw角は出鱈目なので使いません。
Gravity出力を使います。Gravityは、重力加速度成分のみを出力してくれますので、便利です。
GravityのgrX,grY,grZを上記AnalogDeviceの式Ax,Ay,Azとして代入します。
更に、Orientationとの比較をするために、Gravity値からroll pitchを計算します。
参考にさせていただいたサイトに感謝です。https://watako-lab.com/2019/02/15/3axis_acc/
●BNO055の傾斜角精度と分解能
少なくとも±1度以内にならないと、肩位置まで1m以上あるので、1度ずれると2cmずれてしまうので
IMUの傾斜角精度は重要です。
測定方法:500mmのSUS定規にBNO055を貼り付けて、机上で水平置きにして、定規に薄板を
はさんで微妙な傾斜をつけてそれの角度測定します。
条件1:L字金具を厚さ方向3mmをはさみこむとatan(3/500)=0.3438度傾斜するはずです。
条件2:L字金具を幅横行16mmをはさみこむとatan(16/500)=1.8328度傾斜するはずです。
●測定結果
条件1:0.3度の傾斜角は、さすがに無理みたいでした。20%誤差がでました。
●考察
①繰り返し誤差
水平と傾斜を5回繰り返して測定して、水平で0.131度繰り返し誤差、傾斜で0.33度繰り返し誤差がでます。
これには、MEMSのドリフトも含まれるので測定時間が長いともっと誤差大きくなります。
両者の誤差を足して、±0.5度程度繰り返し誤差が発生すると判断しました。
②傾斜角の誤差
0,3度の場合は20%も誤差でたので、ゲインが小さすぎるということで、1.8度なら
4.4%で0.081度といい値でてますので、傾斜角自体は精度がでると判断しました。
③MEMS IMUのオフセットキャリブレーションは必須。
AnalogDeviceの解説書の最後にオフセットキャリブレーションが必須だと書いてありますので、
やり方に沿って、マイコン側のプログラムに組み込もうと思います。
●結論
BNO055のGravityから傾斜角を測定する場合、繰り返し誤差±0.5度、傾斜角誤差4.4%となる
●以後
実際にRTKと組み合わせて、1m上空での位置を測定してみます。
肩の位置測定はSTA24のテーマなので、STA24題名で扱います。