レスキューライン競技の基本動作であるラントレースにノーマルのTJ3Bで挑戦してみます.
レスキューライン競技のコースは,白い床に引かれた黒いラインが引かれています.ロボットは基本的にこのラインに沿って進みます.
ルールの詳細は, ロボカップジュニアの公式サイト または ロボカップジュニアジャパンの参考日本語訳 を参照してください.
まず簡易なコースを準備します.
黒い線はルールで幅10〜20mmと定められており,ノード大会,ブロック大会あたりでは幅19oの黒い絶縁ビニルテープが用いられることが多いようです.
自宅で手軽にコースをつくる場合は白い紙(カレンダーの裏など)に絶縁ビニルテープで線を引くのが簡単です.
今回はセンサとしてTJ3Bに標準で1個付いているラインセンサ(DSR-543)を使用します.
ラインセンサはTJ3Bの下面にあります.赤外線を発光し,床などで反射した光を検知する「フォトリフレクタ」と呼ばれるセンサです.
(赤外線は人の目には見えませんが,ディジタルカメラを使うとだいたい紫色に写るので発光を確認できます.)
コースにTJ3Bを置いて,ラインセンサの読み取り値を確認します.
センサモニタを見ると,センサがコースの白い部分の上にあるときは読み取り値が大きく, センサがコースの黒い線の上にあるときは読み取り値が小さくなることが確認できます. 具体的に値がいくつになるかは,センサの個体差やコースの材料や周囲の明るさなどによりばらつきがありますが, 今回の例では,白:約80%,黒:約15%となりました.この白と黒の値の差をラインの検出に利用します.
次にライントレースの方法を考えます.
今回はセンサが1個なので,センサが白を検出したときとセンサが黒を検出したときの2つの場合について, それぞれどんな動作をしたら良いかを考えます.
センサが白を検出した場合は, 左のモータを駆動してロボットを右旋回させる. |
センサが黒を検出した場合は, 右のモータを駆動してロボットを左旋回させる. |
という動作をさせれば,ロボットは左右旋回を繰り返しながら線の左側のエッジに沿って前進していくはずです.
上記を踏まえて,プログラムを作ります.
ラインセンサ(CN2)の値が50%より大きいとき(白を検出したとき)は右に旋回し,
50%以下のとき(黒を検出したとき)は左に旋回します.
この白の値と黒の値の境目とする「50%」を閾値といいます.
今回はセンサモニタで確認した値が,黒:約80%,白:約15%であったので,だいたいその真ん中の50%としています.
プログラムをビルド,ダウンロードして動作を確認します.
ラインセンサ1個でのラントレースができるようになりました.
初めてのかたは馴染みがないかもしれない用語の紹介です.
- 絶縁ビニルテープ
その名の通り電気を通さないビニルのテープです.よく「ビニールテープ」と呼ばれます.
ホームセンターで1巻100円以下くらいで売っています.色も何色かあります. - 閾値(しきいち)
ある値を複数の範囲に分けるときの境目の値を閾値と呼びます.
例えば,学校などのテストで60点以上が合格のような状況で考えると,60点が閾値ということになります.