TJ3で基本を学んでみる その6 障害物回避

レスキューライン競技ではコース上にいくつかの種類の障害が設置されており,これをクリアする必要があります.
今回はその1つである障害物のクリアに挑戦してみます.

障害物とは

レスキューライン競技のルール(の日本語訳)を見ると,「障害物は煉瓦,ブロック,おもし,その他大きく重いもので構成される.障害物は,高さ15cm以上である」とされています. 高さは「15cm」以上ですが,幅と奥行は定まっていないようです.私が見たことがある大会では,煉瓦や2リットルのペットボトルが使用されていました.

今回は,手近にあったこんな箱でやってみます.

障害物を回避する方法

TJ3Bのタッチセンサで障害物を検知することができます.障害物を検知したら進行方向を変えて障害物を回り込むことで障害物回避ができます.

障害物を見つけるまでは、ライントレースする. 障害物にぶつかってタッチセンサが反応したら,少し後退する. その場で旋回して右を向く. 黒ラインを検出するまで,旋回しながら進む. その場で旋回してライントレースの進行方向を向く. ライントレースを再開する.
プログラムの作成と動作確認

上記の内容を踏まえてプログラムを作ります.

ライントレースのプログラムの前に障害物回避のプログラムを加えたような形になります.
ライントレースをしながらタッチセンサの状態を監視し,タッチセンサが反応したときに障害物回避を実行します.

障害物を回避できるようになりました.

補足:調整など

今回のプログラムはコースやTJ3Bの状態に合わせて調整が必要です.

プログラムの13,14行目,15,16行目,20,21行目に,モータ命令とWait命令をセットで使用しています.
モータの速さとWaitの時間で後退距離や旋回の角度が変わるので,この値を調整します.

また今回はプログラムを簡単にするために丸く回り込んでいますが,
四角く回り込んだり,タッチスイッチで障害物の壁を辿りながら回り込む方法もあります.