2019年6月6日木曜日

ジャイロ

 LSM9DS0のジャイロで遊んでる。



 XYZはジャイロの出力値(dps)、紫と水色はそれぞれジャイロの積分値と加速度のatan値(deg)。
 ジャイロは起動後5秒程度かけてキャリブレーションを行う。最初はXYZ値が0から遠いが、6秒付近で0付近に集まるのはキャリブレーションが終わったため。13秒付近でキャリブレ値を手動で破棄したので、再び角速度が高止まりし、また5秒後にキャリブレーションが完了して収束している。
 紫はX軸の積分のため、キャリブレ値が無効な時期は静止状態でも一定速度で変動が続いている。
 水色は瞬間の加速度から重力方向を求めているので、高周波成分が若干出ているが、誤差が増えることはない。
 35秒付近でAccベースの姿勢をゼロ付近に維持した姿勢でGyrベースの姿勢をリセットしたので、その後はAccベースとGyrベースの値が近い位置にいる。

 加速度ベースは結構ノイズが多いのと、加速運動をした際に誤差が増える。ジャイロベースはノイズは少ないが、積分するため誤差がどんどん増えていく。
 Accベースは短いLPFを通し、キャリブレ値が有効になった段階で一旦Gyrベースの値をAccベースの値に書き換えて、その後は高周波成分はGyrベース、低周波成分はAccベース、という感じで合成するのが良さそう。あるいは重力加速度が1gから一定量離れればAccベースの姿勢は破棄する、とか。
 今は1軸しか使ってないけど、これが3軸になったらどーやって計算すればいいんだ。。3軸だと加速度だけでは求められないので、結局ジャイロで頑張るしかないんだよなぁ。


 そういえば、LSM9DS0ってディスコンになってるのね。STの製品ページも削除されてるっぽい。NRND/EOLを示すには製品ページ削除してデータシートも削除して、が手っ取り早くていいんだろうけど、なんだかなぁ。
 LSM9DS0は結構扱いやすい9軸センサで好きだったんだけど。マイナーチェンジっぽい型番がラインナップされてるけど、今の所ストリナから出てないので選択肢外。
 9軸センサだとInvenSenseがよく使われるような気がするけど、これは加速度・角速度と地磁気で供給メーカーが違うので設計思想が違って使いづらそう、な、気がする。

 しかし、僕が使うような姿勢推定を行うセンサ郡だと、ジャイロは複数個配置して平均値を使う、地磁気と加速度は目安程度なのであまり数は必要ない、みたいな組み合わせだったりするし、そう考えれば3軸ジャイロを複数個+6軸を1,2個、という組み合わせになるのかも。とすると、L3DG20を4個くらい並べたほうがいいのかな。ほんとは9個とか18個とか並べたいんだけどね。オネダン。。。


 今回、LSM9DS0とL6470を1つのSPIに同居させるに当たり、LSMのSPIモード0とL64のSPIモード3を切り替えるようにしてみたけど、とりあえずちゃんと動いてるっぽい。デバイス切り替えるたびにHAL_SPI_Init呼ぶのが冗長な感じだけど。このあたりは最終的には直接レジスタ叩くようになるんだろうね。

0 件のコメント:

コメントを投稿