こんにちは、ナチュロボです。レゴマインドストーム、11記事目でございます。前回が本の「5.sensor」の最後の記事でございました。
今回は「6.program flow」の内容です。6章の内容はスイッチブロック、ループブロックの機能に着眼し、学習します。ただ、後半の内容は以前の「IsitBlue」相当の内容だったので、6章はこの記事だけになります。
ラインフィールドを作る
ロボットプログラミングでよくあるプログラム…それはライントレース(線の追従)でしょう!ライントレースに特化した教育用教材もあるくらいですからね。
ではまずは、ロボット走行用の黒いラインを、床に作っていきます。
教科書には、3cm以上ある黒いラインを推奨とありますが、ちょうどいい幅のものがなかったので、スーパーで黒のビニールテープ(幅1.8cm)を購入しました。
形についてはどういう形にしてもよかったのですが、とりあえず、六角形にしてみました。
…完成!でございます。絨毯の上で動作させると、Tribotの後輪とテープが噛みこんでうまく動作しないので、できるだけしっかりした床材の上で動作させるとよいですね。
見えにくいですが、絨毯の上に透明の硬いシート(床が椅子で傷つかないようにするシート)を敷いて、その上に、ビニールテープを張りました。
こうすることで、うまくロボットが動作しますね。
なお、ロボットのほうは、以前カラーセンサを使ったモード(ロボット前面にカラーセンサを配置しているモード)に変更しておきましょう。
ライントレースプログラムを作る
では次は、プログラムです。実際やってみるまで、ライントレースは結構難しいプログラムになるのではないかな?と思っていたのです。
が、基本動作だけであれば、きわめてシンプルなプログラムにできるようです。そのプログラムがこちら。
使っているブロックは、なんとたったの4つです。一番外側のオレンジのブロックは、ループブロック。その内側のオレンジ色のブロックは、スイッチブロックです。
そして、条件分岐で左に曲がる、右に曲がるを繰り返します。
プログラムの流れを考えてみます。まず、スイッチブロックで状況を判断します。その判断条件は、「カラーセンサの反射強度」が、「25」「より小さい」かどうかです。
条件に当てはまる場合は上のブロック(左に曲がる)、条件に当てはまらない場合は下のブロック(右に曲がる)。そしてその動作を繰り返す。そのような流れです。
じゃあ、「25」っていう数字はどうやって決めるの?ですが、これは黒のラインとそうでないところの「反射強度」の中間くらいの値にしましょう。
ロボットとソフトがbluetooth等でつながっていれば、ソフトの右下の窓で、どの程度の値になるか都度チェックできます。
今回の床の場合は、黒のラインが「7」、そうでないところが「50」だったので、その中間の値にしてみました。
なお、左右に曲がるブロックの数字はとくに変えなくても問題なく動くはずです。
動作させてみた
では、いよいよ実行でございます!黒いラインの上で右、左、とジグザグ走行になるはず…です。さて、どういった動きになるでしょうか。
おお、おおむね、うまくいっているようです。今回は六角形でラインをつくっているため、その角のところは、大周りになっていますね。
プログラムに、くいっと曲がるためのスイッチとブロックを追加してみるとよいかもしれません。…が、そのあたりはあえて記事にしないでおきます。
なお、このラインフォロワープログラムでは、右回り専用プログラムになっています。ロボットを逆方向にして動作させると、果たしてどのような動きになるでしょうか…?
まずは想像してみましょう。そしてやってみましょう。やってみた結果、動作と違ったら、なぜそうなったかを考えてみましょう。
…そういったところが、ロボットプログラミングの大いなる魅力でございます!
今日の感想
ということで、ライントレースのプログラムとその動作でございました。意外とシンプルなプログラムでライントレースが実現できるので、おすすめのプログラムですね。
もっと無駄な動きをなくしてスムースに動かすにはどうすればよいか…いろんなやり方がありそうですね。
では、6章については、たった1回になってしまいましたが、これで終了にします。そして、次は7章に入ります。ついに、迷路脱出プログラム!になります。
…ちょっとこれは大がかりになりそうですが、これまでに習得したプログラムスキルを活用しながら、作っていきますよ~、こうご期待。
それでは、また!
ナチュロボより