TJ3で基本を学んでみる その5 直角コーナ

レスキューライン競技のコースは直角コーナや細かいクランクが多い傾向があるように思います. 今回はこの直角コーナのクリアに挑戦してみます.

前回のプログラムでの動作確認

前回のプログラムでは,直角コーナを曲がりきれずに通り過ぎてしまいます.

今回はこの対策を考えます.

直角コーナを曲がる方法

直角コーナを曲がるためには,ロボットを急な角度で旋回させる必要があります.
TJ3Bのような左右の車輪にそれぞれモータを備えたロボットは,左右のモータの片方を正転,もう片方を逆回転することで急な角度で旋回させることができます. ただし,いつもこれを使ってライントレースをするとなかなか前に進みません. そこで,直角コーナ(急なコーナ)に来た時だけ,モータの逆回転を使うようにします.

下の図のように,TJ3Bのラインセンサは,コースの白い部分で読み取りが大きくなり,コースの黒い部分で読み取り値が小さくなりますが, 半分黒のような状態ではその中間の値になりますので,これを利用します.

ライントレースの具体的な方法は下の図のようになります.

左のセンサが真っ黒を検出した場合は, 右のモータを正回転,左のモータを逆回転してロボットを急な角度で左旋回させる. 左のセンサが白黒の中間を検出した場合は, 右のモータだけ正回転してロボットを緩い角度で左旋回させる. 右のセンサが白黒の中間を検出した場合は, 左のモータだけ正回転してロボットを緩い角度で右旋回させる. 右のセンサが真っ黒を検出した場合は, 左のモータを正回転,右のモータを逆回転してロボットを急な角度で右旋回させる.

左右のセンサが両方白を検出した場合は,左右のモータを正回転して直進させる.
プログラムの作成と動作確認

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

ラインセンサを接続したCN7とCN6の値を読み取り,急な左旋回・緩い左旋回・急な右旋回・緩い右旋回・直進を判断・実行します.
前回のラインセンサ2個用のプログラムに「else if」で条件を追加しています. また,あまり速すぎると直角カーブを通り過ぎる可能性があるので,モータ正回転の速さを50%から30%に落としています.

プログラムをビルド,ダウンロードして動作を確認します.

直角コーナを曲がれるようになりました.

もう少し複雑なコースでも走れます.

補足:速さの調整

今回のプログラムでだいたい直角コーナを曲がることができますが,ロボットが速すぎると通り過ぎてしまうことがあります.
TJ3Bは電池の電圧によってモータの回転数が変化します.そのため,

  • 古い電池ではモータがゆっくり回るので直角コーナを曲がれるが,新品の電池ではモータが速く回り直角コーナを通り過ぎる
  • ニッケル水素電池ではモータがゆっくり回るので直角コーナを曲がれるが,アルカリ乾電池ではモータが速く回り直角コーナを通り過ぎる

ということが起こります.
速すぎて直角カーブを曲がれない場合は,プログラムの中の「30%」の部分を少し小さくすると曲がれるようになります.