TJ3で基本を学んでみる その9 交差点その3

引き続き,交差点についてです.

マーカのない交差点

シンプルな「マーカのない交差点」が実は曲者ではないかと思います.

というのは,図のようにロボットが交差点に差し掛かった時点では, 直角コーナとマーカなし交差点の区別がつかないためです.
レスキューラインのルールではマーカなしの交差点は直進することになっているので, 直角カーブらしきものを見つけても即曲がってはいけません.

交差点と直角コーナの見分け方

交差点に差し掛かった時点では直角コーナとマーカなし交差点の区別ができないので, ここでは「ちょっと進んでみて考える」という方法でいってみたいと思います.

図のような手順を考えます.
交差点を検出したらまず少し前進して先にラインがあるかを確認します.
もし黒ラインがあればマーカなし交差点なのでそのまま直進,もし黒ラインが無ければ直角コーナなので後退して黒ラインがあるほうに曲がる.
という動作で正しく判断できるはずです.

交差点候補を判定するプログラム

まず,前のページで作った交差点候補を検出するサブプログラムをもとに,左右どちらであるかも判定できるサブプログラムを作ります.

黒ラインを検出しているセンサが3個の場合は,左端のセンサと右端のセンサを再確認して左右どちらに黒ラインがあるか判定し,
左の時は変数Cに1,右の時は変数Cに2を代入します.

交差点をクリアするプログラム

交差点と直角コーナの判定手順を追加したメインプログラムを作ります.

前のページで作ったプログラムとの違いは「交差点候補があったがその前に緑マーカはなかった」とき に実行される部分です.
少し進んで,黒ラインの有無を確認.黒ラインあればそのまま.黒ラインが無ければ少し戻って左右のうち黒ラインがある方に曲がる.
という動作を追加します.

マーカのない交差点と直角コーナがクリアできるようになりました.

これで一通りの交差点のパターン全部をクリアできるようになったと思います.

補足:100%うまくいくのか?

残念ながら失敗することも結構あります.

要因は電池の電圧の変動や,モータの特性のバラつき,周囲の光の具合やコースの材質などいろいろあり, これをロボットのメカやプログラムで調整・吸収するところが工夫のしどころだと思います.