先に作った1号機はジグザグで進むので、動きが遅かったと思います。
そこで、プログラムを改良して2号機を作ってみました。変更点は赤いワクの部分のブロックです。
[Download]ライントレーサ2号機
(教育用NXTソフトウェア2.0で作成)
なお、センサには個体差があるので、自分の使っている光センサに合わせてブロックの値を調整してください。
プログラムの動作する様子です。
1号機の時よりも前に進むようになりました。
[Movie]2号機の動作中のムービー(youtube)
しかし、これには欠点があります。よく観察してみると、ロボットがカーブを曲がるときにラインを「遠回り(コースアウト)」しています。
ロボットとラインがズレているわけですが、この現象はあまり良くありません。
外側のモータのパワーを増やせば戻りますが、それだと、戻りすぎた時にロボットがグラグラとゆれてしまいます。
内側のモータのパワーを落としてもいいのですが、それだと遅くなってしまいます。どっちにしても、ちゃんとした解決になりません。
2号機のラインから外れてしまう対策として、3号機のプログラムを作ってみました。
[Download]ライントレーサ3号機
(教育用NXTソフトウェア2.0で作成)
なお、センサには個体差があるので、自分の使っている光センサに合わせてブロックの値を調整してください。
制御方法を図にすると、このようになります。
ラインが中心値よりも遠いほどパワーが増え、近いほどパワーは減ります。これによって、ラインの飛び出しを防ぎます。
(入力した値が大きいほど出力の値も増える。こうした現象を「比例」といいます。比例については中学校で習います。)
ラインの中心かどうかは、光センサの値で判断します。
今まで、光センサはプログラムで「白」と「黒」の2種類でしか判別していませんでした。
しかし、実際には白から黒までの間には 30~40くらいの段階に分けることができます。
そこで、光センサの中心値との差を数値化して、パワーに当てはめればいいわけです。