蛇使いな彼女BLOG
【第71回】 流向流速計の原理 #3.(オマケ)
2022.11.04
こんにちは、2回にわたって難しい分野をモトハシなりに解説しましたが皆さんいかがでしたか?
ベクトル図化に関してここでは少し補足させていただきたいのですが、前回と前々回では、加速度センサー(Speed、E、N)の値からx、y平面のベクトルによる表現を行いました。
ただし実際のところ、方位(Heading)とベクトルの差す方位を比較してみると、微妙にずれているような不自然な個所をみつけました。
これについてはmatplotlibによる図化では、 単位円のようにx軸とy軸の長さを同じ比率で表現できないことと、Headingがジャイロの角速度と姿勢角から算出されたものに対して、 Speedは静止状態から傾きを検知したときかかる加速度を示しているのが原因だと考えています。
少し前提条件をまとめると、ジャイロのHeading値は基本原理ではxyz軸について「前回の角度からどれだけ動いたか」を計測スタート地点から累算して値を出しています。
そのため時間とともに誤差がのっかていくドリフト問題がでてきます。
これを正しく校正するために加速度センサーと組み合わされていることが多いです。
計算式については詳しく触れませんが、調べてみると
Heading=k×加速度センサーから算出した姿勢角
+(1-k) ×ジャイロセンサーから算出した姿勢角
この式で正確な角度が測れるとされていますが、
加速度センサーから姿勢角を計算する場合、重力方向(z軸)に加速度の変化があった場合は角度計算を行うことが困難とされています。
例えば、最近はポ●●ンGOなどスマフォのARやその他のゲームでも傾きが検知できるようになっていて、画面を動かすとそれと同時に映像も変化しますよね?
でも動かしても映像があまり動かない方向ってありませんか??
それがいわゆるセンサーの軸方向で、今話しているz軸方向の角度計算ができない理由に当たります。
流向流速計であれば、センサー設置ポイントより上層側から下層側に水の動きがあるとき、又はその逆の動きがあるときに正しい姿勢角度を計算できないということになります。
これはとある運河に設置した流向流速計の写真です。
細いパイプのような錘の先端にロープでセンサーを固定して水面(底泥)と垂直になるよう設置しています。
重力方向にかかる力がどの程度か判断できないので評価のしようがないですが、このようにセンサーが水中に浮遊している設置状態では加速度から方位をベクトルで表す=少なからず誤差がのった方位を図化しているというリスクがあるのでは?…と内心思っていました😓
結論としてはz軸の角度はジャイロセンサーから求めるしかありませんが、ジャイロセンサーより磁気センサーがあれば、そちらの方が正確らしいです。
一方で流速に関しては、仮に真の流速がz軸方向の加速度を含む値であったとしても、流速をx、y平面で表現するときにz軸方向の加速度は無視されているはずなので、計測された角度と流速でズレが生じるのは当然ですね💦
今回は私が理解できる範囲でしか紹介していませんが、このようなバックグラウンドを踏まえると方位Headingと流速Speedが信頼できる値で、方位を図で表すときはx、y軸方向の加速度ではなくHeadingを見るのが最適だという判断に至りました。
センサーが傾いた状態で流れが静止した時、慣性によるエラー値除去もいろいろと考案してみましたが、ジャイロの角速度やxyzの姿勢角が計測値に上がってこないので、結局はあまり信頼できないE、N速度から姿勢角の差分を出すしかないみたいです。
色々考えていると、もうメーカーの保証する値を信用するしかないですね(笑)
調べだすと結構難しくてこの辺で断念しましたが、流向流速計について新たに分かったことがあればまた記事にしていこうと思います。
では今回はここまで!