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

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

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

◆もっと速く走らせたい

4号機で、もう大満足なのですが、ちょっと欲張って、次の点をパワーアップさせてみました。

  • 直進したときのスピードをもっと速くしたい。
  • センサの設定値の変更をもっと簡単に。
  • カーブでもっとキビキビと向きを変えたい。

改良したプログラムがこの5号機です。
プログラムが長くなってしまいましたので、分割して紹介します。

[Download]ライントレーサ5号機
(教育用NXTソフトウェア2.0で作成)

前半のプログラムです。ここで各変数を初期化しています。

  • 変数「Center(センター)」は光センサの白と黒の中間値です。 センサには個体差があるので、自分の使っている光センサの値に合わせてください。
  • 変数「Gain(ゲイン)」はモータの機敏さを表す変数です。この値を大きくすると、センサの変化に対して機敏に反応します。しかし値が大きすぎると、ゆれが増えてしまいます。さらに、この値が少なすぎると遠回りしてしまいます。
  • 変数「Power(パワー)」はモータのパワーです。この値を大きくするとロボットの動きが速くなります。

こちらが後半のプログラムです。光センサの値から「センサの位置」を計算して、 さらに左右のモータのパワーを割り出しています。
「センサの位置」は、0だと中心、値がマイナスだと黒側に寄っている状態、値がプラスだと白側に寄っている状態となります。 「センサの位置」の値に変数Gainを掛けて、その結果を変数Powerから足します(または引きます)。
つまり、直線のラインでは、左右のモータが変数Powerのパワーで回ります。
カーブのラインを走るときは、内側のモータのパワーが減り、外側のモータのパワーが増える、、、というわけです。

動作中の様子です。
スピードアップしたため、若干ふらついてますが、かなりなめらかに進んでいます。 1号機ではコースを1周するのに1分ほどかかっていましたが、 5号機では約10秒にまで短縮できました。

[Movie]5号機の動作中のムービー(youtube)

変数Powerや変数Gainの値を変えて、動きがどう変わるのか確認してみると面白いと思います。


ライントレースロボットは難しい技術を一杯ふくんでいますが、難しいからこそ競技で人気があります。 そして、この技術にはまだまだ続きがあります。次回をお楽しみに。