ホーム » スタッフ » 斉藤徹 » 実験(斉藤) » マイコンによるライントレース(ライントレースの仕組み)

マイコンによるライントレース(ライントレースの仕組み)

ライントレースの考え方(光センサーが1つ)

ライントレースは、床に描かれた、黒い線を光センサーで読み取って、黒線に沿って走る。


[Afrel社 ブロックプログラミングの比較~ライントレース~]より引用

光センサーが1つの場合は、黒線なら(直進)、黒線からはずれて白になったら左側に進めば良い。ただし、

白白白 [センサ] 黒黒黒黒白白白

の状態になると、コースを離脱してしまうので、黒なら右側に進むようにする。

2つの光センサーを使う場合

光センサーが1つの場合、黒線と白線の境界に沿って走らせることになるが、白の状態で左側に大きく曲がるようにしすぎると、黒線の逆側(白と黒の境界)を越えてしまうかもしれない。この場合は「白なら左に進む」ため、コースに戻れなくなる。

このため、高速で走るライントレースをする場合は、センサーを2つ用いることが多い。

このような車体であれば、黒白なら左折、黒黒なら直進、白黒なら右折するように制御すればいい。

ライントレースロボットなどの大会の情報

車体の高速化やセンサー位置の工夫

センサーの位置

車体を高速化させる際に、プログラムの工夫ではなく車体の工夫もしてみよう。

今回の実験で、指導書通りに作ると、車輪の軸からセンサーまでの距離が短い。ネットで見る記事などでは、車体から長いノーズの先にセンサーを設置しているものもある。今回の実験ではセンサーが1つだけなので、注意が必要となる。以下の絵に示すように、センサーまでの距離が短いと左折した際にセンサーが線をまたいだと判断するのに気づくのが遅れるかもしれない。逆にセンサーまでの距離が長すぎると、左折処理でセンサーが逆側の白領域に入ってしまい誤動作しやすくなるかもしれない。

今回の実験ではコースも狭いので、センサー位置を前になるように改良しても、コースアウトしやすくなるだけかもしれない。独自テーマとして、実験でセンサー位置の考察などを期待します。

コースから外れているのを早く気づくには

ライントレースでは、コースからずれていることにどれだけ早く対応できるかが問題となる。

明るさの段階に応じて制御

ここまで説明していた資料では、コースが白/黒で左折/右折を判断していた。しかし、光センサーの使い方によっては、白/うすい灰色/灰色/濃い灰色/黒といった明るさを細かく読み取ることもできる。この方法なら、コースのど真ん中 = 灰色 なら高速直進、うすい灰色なら若干左折、白ならゆっくり確実に左折…といったように段階を設けることもできる。

状態遷移図で考えよう

最初の黒なら左、白なら右は、状態遷移図で書くと、以下のようなイメージ。

このプログラムでは、車体が左右に首を何度も振りながら動くため、スムーズな動きに見えない。

1つ前の状態を覚えながら

このプログラムを拡張し、直前のセンサーの状態と現タイミングのセンサーの状態を使うと、以下のような状態遷移図のライントレースはどうだろう。白と黒の境界ぎりぎりを走れている(B),(C)なら、理想状態だし高速運転させられないだろうか。

白と黒での判定もアナログに…

2状態の状態遷移図のプログラムの他に、白/うすい灰/灰/濃い灰/黒 といった明るさで速度を制御する方法もあるが、以下のような図で、白判定、黒判定の時間的な長さの変化で処理することもできる。