ロボジョイちゃれんじ教室

4-2 ライントレース入門

第1回「センサ1個だけでトレースする」

◆なめらかに進むには

先に作った1号機はジグザグで進むので、動きが遅かったと思います。
そこで、プログラムを改良して2号機を作ってみました。変更点は赤いワクの部分のブロックです。
[Download]ライントレーサ2号機
(教育用NXTソフトウェア2.0で作成)
なお、センサには個体差があるので、自分の使っている光センサに合わせてブロックの値を調整してください。

1号機のプログラムでは、BとCのモータのうち、どちらかが止まっていました。そのため、ロボットはあまり前に進みません。
そこで、2号機では止まっている側のモータも少しだけ一緒に回すようにしました。

プログラムの動作する様子です。
1号機の時よりも前に進むようになりました。
[Movie]2号機の動作中のムービー(youtube)

しかし、これには欠点があります。よく観察してみると、ロボットがカーブを曲がるときにラインを「遠回り(コースアウト)」しています。
ロボットとラインがズレているわけですが、この現象はあまり良くありません。
外側のモータのパワーを増やせば戻りますが、それだと、戻りすぎた時にロボットがグラグラとゆれてしまいます。
内側のモータのパワーを落としてもいいのですが、それだと遅くなってしまいます。どっちにしても、ちゃんとした解決になりません。


◆遠回り(コースアウト)対策

2号機のラインから外れてしまう対策として、3号機のプログラムを作ってみました。

[Download]ライントレーサ3号機
(教育用NXTソフトウェア2.0で作成)
なお、センサには個体差があるので、自分の使っている光センサに合わせてブロックの値を調整してください。

制御方法を図にすると、このようになります。
ラインが中心値よりも遠いほどパワーが増え、近いほどパワーは減ります。これによって、ラインの飛び出しを防ぎます。
(入力した値が大きいほど出力の値も増える。こうした現象を「比例」といいます。比例については中学校で習います。)

ラインの中心かどうかは、光センサの値で判断します。
今まで、光センサはプログラムで「白」と「黒」の2種類でしか判別していませんでした。
しかし、実際には白から黒までの間には 30~40くらいの段階に分けることができます。
そこで、光センサの中心値との差を数値化して、パワーに当てはめればいいわけです。