筆者が近くの小学校でロボット・プログラミング教室の講師をしていることはこの日記の中でも,何度か紹介した。正直に言うと,少し行き詰っているのである。

 本年度の講習会では,プログラムを理解して結果を出そうとする児童と,モーター付きのレゴで遊ぶことに夢中になってしまう児童の2グループに分かれてしまっている。有料の教室ではなく,ボランティア・ベースの教室なので,明確な到達点を決めていないことも原因の一つであろう。

 しかし,多くの子供たちがレゴ遊びで終わっていいのだろうか? 本年度の講習会はもう残り少ない。子供たちに将来につながる何かを残してやることはできないか。
 
 教えている方のマンネリもいけないのだ。ライントレースやタッチセンサーの使い方といった,教科書的な内容ではない新しい刺激を与えてやらなければいけない。たとえば,自動車の衝突防止のための自動制御や,ロボット同士の連携動作をチームでプログラミングすることでもっと自発的に学べるようにならないか,ロボットが果たす役割を感じてもらうことはできないかと考えた。

 まず,衝突防止からだ。単にまっすぐ走る車を作り,何かにぶつかる前に停止するようにプログラムを作成する。光センサーを車の前につけ,反射値を読み取ることで,目の前に何かあるかどうかを知ることができる。

 小学生向けのロボット・プログラミング講習会では,ROBOLABでプログラムを作っている。小学生なので,あまり難しいコマンドは教えないで,基本的なコマンドだけでプログラムを作るように指導している。しかし,未消化になったとしても,プログラミング講習会なのだから,変数は教えておくべきではないだろうか。ROBOLABでは変数をコンテナで扱う。赤,青,黄色の三つのコンテナを使うことができる。コンテナには値を入れることと,入っている値を参照することができる。

 まず,ポート2につながっている光センサーの値を黄コンテナに格納している。その値をとなりの黄色いコマンドでLCDに表示している。次に,黄コンテナの値を赤コンテナに入れてから,2を足している。Aのモーターを回転させ,光センサー分岐を使ってセンサーの値と赤コンテナの値を比較している。光センサーが返す値が赤コンテナの値よりも大きくなったら,モーターを止めている。障害物に近づくと,反射値が大きくなるのでロボット・カーを衝突前に停止させることができるのだ。

 次に,この接近センサーを応用することで,ロボット・カーを連携動作させる。光センサーを前ではなく横向きに付ける。前方の車は停止して待っており,後方の車が前進を開始する。

 MindStormsの光センサーは自分で光を放つアクティブ・センサーなので,前方で待っている車の横に並ぶと,光を受け,センサーの値が大きくなり停車する。

 ここで,待機していた車にメッセージを送ってやれば,ロボット・カーを連携動作させることができる。

 ROBOLABでは,他のロボットにメッセージを送ることをメール送信というが,決して複雑な文章を送ることができるわけではない。0から255までの数値を送信することができるらしい。

 アイコンはいかにもメール送信という感じがする。7番のメールを送っている。

 待機している車のプログラムは,まずメールボックスを初期化して,メールの受信を待つ。7番のメールを受信したら,以降の処理が実行される。

 次の車にまたメールを送るようにすれば,ロボット・カーはリレーをしていく。ボールをパスする,荷物を運ぶなどとロボットを連携させたらおもしろいだろう。

 子供たちがお互いに影響を与え合えるように,チームに分けて荷物を運ぶレースでもしてみようかと思う。