競技に向けて
ここからは競技に向けて,やるべきことを列挙してみたいと思います.迷路探索方法について
左手法は基本ですが,実際の競技では,迷路探索の効率が悪くて使えません. 使えたとしても,持ち時間を大幅に使ってしまうと同時に,バッテリーも使ってしま います.ですから,競技ではできるだけ少ない歩数で迷路探索を終えることが 重要です.
求心法は,分岐点において中心に近い方の分岐を選択し,効率よくゴールを目 指す方法です.ゴールに到達した経路が必ずしも最短経路であるわけではありま せんので,良いタイムは望めませんが,とにかくゴールしたい時には有効かもしれ ません.
(求心法の例)
下の写真のような迷路において,迷路スタート地点から対角のゴール地点に近い 方向を優先に分岐点で方向を選択します.

足立法 そのときまでに持っている壁情報でゴールへ到達できる最短経路を計算しながら 進み,壁にぶつかったら最短経路を計算しなおして迷路探索を続けるという方 法です.最初にスタートからゴール地点までの経路を探索し,次にゴールからス タートまでの経路を探索して戻ってくれば,効率よく迷路探索ができます.しか し,多くのマウスがこの方法で迷路探索を行うようになってきたため,大会主催 者側も簡単に探索できないように迷路を工夫しているようです.
より早く走るには
直線走行の速度はモータや駆動回路,本体の重量,タイヤの滑りなど,総合 的なマウスの性能で決まりますが,ソフトウェアで工夫できる余地があります. 例えば,曲がり角でいったん停止して方向を変えるのではなく,できるだけ減速 せずにスムーズに方向を変えれられれば,より早く走ることができます.
スラローム走行
次の動画は片方の車輪のみに加減速を入れるてマウスにスラローム走行をさせて います.
スラロームの調整動画
スラロームの走行パターンができたら,最短経路情報を元に,スラローム走行を行 ってみます.

2種類の速度で走行させてみました.
迷路探索と同じ速度でのスラローム走行の動画.
最高速度を上げてスラローム走行の動画.
高速走行時には,ターンの角度が不正確になっています. 速度を上げると同時にターンの角度補正を組み込んでいく必要がありそうです.
斜め走行
迷路を斜めに走行できれば更に好タイムがだせます. 最短経路情報を元に,スラローム走行によるターンと,左右スラロームが続くとき は斜め走行に切り替えるようにプログラムを組むとよいでしょう. ハーフサイズマウスの場合,小さく作るにも限界があり,幅がぎりぎりになってしま ったので,斜めに進入するときはいったん余計に回って少し戻し,斜めから直線 に戻るときはいったん逆に振ってから戻るようしました.
しかし,斜め走行で壁にぶつからないようにするには厳密な姿勢制御が必要です.
斜め走行のパラメータ調整中の画面

斜め走行調整中の動画.
足立法による迷路探索プログラムで,写真のような迷路を探索しました.
このような迷路ならゴール(対角地点)に向かって無駄なく探索し,スタートまで 帰ってきます.

探索後,斜め走行を含む最短走行をさせてみた動画がこちら.
最短走行は,スラロームなし,あり,斜め走行あり,の3通り作ってあります. あとは大会までに,走行時の細かな姿勢制御を作り込めばよさそうです.
ちなみにプログラムは1000行ちょっと,21kBほど. 基本的には前に公開したプログラムに追加修正して作りました.
![]() ESP32 Wifi Bluetooth開発ボード |
![]() Arduino Nano Every |
![]() Raspberry Pi pico |
![]() FPGA XILINX Artix-7 |