【角速度FB制御を使ったライントレースの実装】
マイクロマウス Advent Calendar 2025 – 4日目 こんにちは。ロボトレース競技をやっている梅本です。 昨日はあこちゃんの[ 誰でも作れる、シリコンタイヤ ! ]でした。 自分もトレーサにはシリコンタイヤを使っていて、この記事にも書かれている、3Dプリンター製のシリコンシートカッタージグを真似して使わせてもらっています。これでピッタリサイズのシートの量産が出来る為、かなり重宝しています。 最高だよなあ!!! 0. まえがき 以前から、中級〜上級に差し掛かっている学生の方から 「どうやって角速度フィードバック(FB)でライントレースしていますか?」 という質問をもらうことが多々ありました。 そこで今回は、 実際に自分のマシンで動いている “ラインセンサ入力 → モータ出力” までの流れ を一例としてまとめます。 難しい制御理論は置いておいて、 「どの関数が何をして、どの順番で実行され、最終的にどうやってモータ duty(L/R)になるか」 だけをシンプルに解説します。 この記事を読めば、まだこの制御を取り入れていない選手や、制御面で悩んでいる選手、そして競技を始めたばかりの選手にとって一つの道筋になるはずです。 また、中級者・上級者の方でも、今よりもう一段階上の安定性に近づくきっかけ 小さな気づきやインスピレーションにつながれば幸いです。 それでは解説していきます。 1. なぜ角速度FB制御なのか まず前提として、ロボトレースに取り組んでいる多くの競技者は、 マシンの動きを 「並進(前後速度)」と「旋回(角度変化)」 の2種類に切り分けて管理しています。 この 2 つは干渉させず 完全に独立したフィードバック(FB)ループ として扱う、という構造が一般的です。 多くの入門〜中級レベルでは、 「ラインセンサで検知したライン偏差(中心からのずれ) → モータduty」 という 偏差に直接比例させる制御 を行っていると思います。 しかし、マシンが高速化し、モータの余力など ハードウェアの限界に近づくと 、 特に高速ターン(シケインなど)で 想定どおりの角速度が得られなくなる ことがあります。 つまり、センサ上は「曲がれ」と指示していても、 実際のマシンは 曲がりきれていない(=角速度が不足している) 状況が発生...

コメント
コメントを投稿