日曜日はマウスの日です。というわけで、マイクロマウスのシステムについて考えていこうと思います。
さて、前回マイクロマウスの2割しか占めないと言ったハードウェアですが、非常にオーソドックスな移動型ロボットです。
系統も少ないので、よく見かけるものだけまとめてみると、
こんな感じです。
悪い言い方をすれば迷路を探索するだけのロボットなので、壁の状態を見るためのセンサーと、移動するためのモータがあればそれで動いてしまいます。
ただし、それぞれが非常に高い水準で求められます。
広い環境を探索するようなロボットはある程度自己位置の推定、姿勢制御に誤差が出ても、障害物をなんとなく避けてさえいればスタックする事はありません。
しかし、マイクロマウスは幅180mmの迷路(壁が12mmなので、走れる幅は168mm)のなかを長さ100mm~130mm、幅70~100mmのロボットが走行するのです。自己位置の推定、姿勢制御が3cmずれると壁にぶつかってスタックしてしまう と言うと緊張感のある競技に聞こえるのではないでしょうか。
次はマイクロマウスのソフトウェアのシステムについて考えていこうと思います。ここからは私のやっている事、やりたい事がメインの考察です。
まず、マイクロマウスは速く走る事でランク付けされる競技です。(マイクロマウスが目指しているのが速度だけという訳ではありません。)速く走るために必要なのは姿勢制御で安定させることです。というわけで姿勢制御に主眼を置いた場合に、私がシステムをどう捉えているかを図にしてみました。
私はこんな感じでマイクロマウスのシステムを捉えています。
制御ループにはマシンの物理があり、センサが環境の情報とマシンの情報を取得し、フィルタリングを行い、姿勢制御をしてマシンの物理に反映される、といった具合です。
制御ループ外では、環境の簡単なシミュレーションがあり、フィルタされた情報から環境の構築を行ったり、その情報から戦略を立て、より具体的な動作計画にして制御ループに司令を送るといった事をします。
環境や戦略、動作計画といった抽象的な言葉を使ったのは、このシステムは探索を行うロボット全般に適用できるようにと思って考えたからです。
マイクロマウスでの言葉に直すと、
環境:迷路や照明
戦略:迷路探索、最速経路の計算
動作計画:加減速や、ターン速度やパターンの計画
といった感じになります。
次回は、このようなシステムをソフトウェアで実現していくためにはどうしたら良いかを考えて行こうと思います。
※これは決してマイクロマウス界での共通認識のような物ではありません。私個人の考えです。