玉乗りロボットの姿勢角を計測するセンサのサンプリング・フィルタリング部分を改良して 応答速度をあげたら、以前よりも安定して玉乗りができるようになりました。

MFT2016にて

MFT2016で玉乗りロボットを展示していました。
この頃はまだなんとか座布団の上で玉乗りができるという状態で結構揺れていました。
この展示を見に来てくださった方の何人かの方から 「制御周期orセンサ読み取り周期をもっと短くした方がいいのではないか」というアドバイスをいただきました。 この時の制御周期は200Hzで、9軸センサへのアクセス、MadgwickFilterの更新も200Hzでした。
制御周期をもっと上げたいところではありますが、タイヤのロータリーエンコーダの分解能が低いため、 これ以上制御周期は上げられないという感じです。
一方で9軸センサの読み取りとMadgwickFilterの更新だけ別ループでもっと早くすることは可能であったので、 やってみました。

改良結果

9軸センサの読み取りとMadgwickFilterの更新を200Hzから2kHzにスピードアップし、制御周期は今までと変わらず200Hzで 動かして見るとこうなりました。

以前と比べてだいぶ揺れが小さくなっていることが分かると思います。 さらに座布団のような結構な転がり摩擦が生まれるものでなく、 薄い毛布のようなものでも玉乗りが可能となっています。

9軸センサから読み取った値を直で使うわけではなく、MadgwickFilterを通してから傾き情報を得ているので どうしても遅れや無駄時間が発生してしまいます。 ここの更新が早くなったことでそういった遅れが小さくなり、以前よりも直近の状態量を取得できるようになったので いい感じに揺れが小さくなったのだと思います。

おわりに

あとすこし、毛布なしで動くようにするにはどうしたらいいのだろうか