初めてのETロボコン (4) ―― そして,大会当日
●直前調整
最終的な戦略が決まり,大会直前は灰色検知の調整作業を行いました.前回説明した灰色検知のアルゴリズム自体は変えず,誤検知を防止するために以下の実装を追加しました.
- 1回前の灰色検知からの経過時間が短い場合は,灰色検知を無効とする
- 黒を連続して検出したらサンプリングし直す
一つ目は,コース上で最も短い灰色マーカの間隔よりも短い間隔で灰色を検知した場合に,灰色検知を無効とするものです(図4).
[図4] コース上で最も短い灰色マーカ間隔
二つ目は,灰色検知のためのサンプリングを灰色マーカの開始地点から始めるための仕組みです.試走会IIまでは,灰色検知のためのサンプリング周期は一定にしていましたが,これだと灰色マーカの途中から(あるいは,途中まで)サンプリングを開始することがあり,結果として黒の検知率がしきい値以上となって灰色を検知できないことがあります.そこで,条件によってサンプリングし直す機能を実装し,灰色マーカの開始地点では必ずサンプリングを開始するように変更しました.
具体的には,黒(光センサの値が一定以下)を連続して数回検出した場合にサンプリングし直す(リセットをかける)ようにしました.黒線上をトレースしているときはライン上に光センサが来るたびにサンプリングし直されるので,リセットし続けることになり,灰色検知は起こりません.灰色マーカにさしかかると光センサの値が「黒」ではなくなるためリセットがかからず,結果として「ほぼ灰色マーカの開始地点」からのサンプリングとなります.ただし,光センサの値を読み取るときに,灰色を「黒」として誤検出する可能性があるので,1回の「黒」だけではサンプリングし直さず,連続して数回黒色を検知した場合にサンプリングし直すようにしました.
[図5] 黒が連続して検知されたらサンプリングし直す
これら二つの仕組みは,実装は簡単ながら,実験では高い効果を発揮しました.あとは本番で,うまくいけば....