MindStormsで赤外線式ボールを探すプログラムを作ってみた。
ロボットは簡単にいわゆるローバーを組み立て,前方に向けて光センサーを取り付ける。ボールを検知できるように,ブロックで光センサーの位置を高くする。
とりあえず,赤外線ボールを見つけるプログラムをタイマー分岐と光センサー分岐を使って作ってみた。ロボット・プログラミング講習会の子供たちに教えたいのでプログラムはなるべく簡単なものにしたい。だから,変数とマルチタスクを定義するタスク分岐は使っていない。
タイマー分岐に指定した70という数値は7秒を意味する。7秒を超えたら,上のラインに分岐し,まっすぐ3秒進む。これは赤外線ボールが見つからなかったとあきらめて,場所を変えるコードだ。
では,7秒の間に何をするかというと,まず,Cのモーターを0.5秒ずつ回す。そして,光センサーが40より大きい値を返したら,赤外線ボールがあると判断して,ボールに向かって3秒間前進する。見つけたことをわかりやすくするために,音を鳴らしている。そうでないときは,青ジャンプでタイマーループに戻る。
タイマーが7秒を刻む間に,ロボットはおおよそ360度回転する。遠くにボールがあるときは,光センサーの値が40にならないので,一周回ったら前進して場所を変えているのだ。
プログラムを実行すると,そのうち赤外線ボールを見つけて突進する。
今のところ,見つけたあとは猫のようにボールにじゃれついているだけだ。一旦止まって前進し,ボーンと打つとか,タッチセンサーでボールを検知して○○○するなどと,ロボット・プログラミング講習会の中でみんなで考えて行きたいと思う。
さて,小学生向けにロボット・プログラミング講習会を始めて,もう何年かになるが,子供たちに何をどう教えたいのか,どう教えたらいいのかを一度まとめておきたい。一緒に講習会で講師を務めている方の意見も取り入れた12のポイントだ。
1. スゲーと感じさせるデモをする
デモが無理ならレゴ社や他サイトのビデオでも構わないが,こんなことが自分でできるのだと感じさせ,早くやってみたいというワクワク感を持たせる。
2. こわれにくいロボットを作ることを教える
子供たちは,早く動かしたいあまりに,ちょっと動かすとすぐ壊れるロボットを作りがちなので,補強してこわれにくくすることを教える。
3. 見本図の通りにロボットを組み立てるときは,現在の図の一つ,二つ前を参考にする
組み立て中に今の図だけ見ていると間違えやすいが,一つ,二つ先の図を一緒に見ながら進めると間違えにくい。
4. ギヤでスピードや回転方向を変えられることを教える
ギヤ(歯車)の仕組みはそれ自体おもしろいし,使いこなせばレベルの高いロボットが作成できる。
5. ローバーをまっすぐに走らせる
モーターの回転速度は,それぞれ違う(誤差がある)ので,ハード(ブロック),ソフト(プログラム)で調整してローバー(ロボット・カー)をまっすぐ走らせる方法を考えさせる。まっすぐ走らせるのは意外と難しいが,勝手にまっすぐ走ってくれないことを知っておくのは大切だ。
6. タイマーを使ったシーケンス制御を教える
右に曲がったり,左に曲がったり,バックしたりしてローバーを車庫にいれるゲームは簡単に楽しめる。片方のモーターだけを回すことで曲がることができるが,もう一方を逆回転させるとより速く曲がる。
7. フィードバック制御を教える
タッチセンサーでバンパーを作り,何かにぶつかったら進行方向を変えるロボットを作る。
8. タッチセンサーでロボットをリモコン操作する
相撲ロボットを作り,二つのタッチセンサーで操作できるようプログラミングする。タッチセンサー分岐コマンドを覚える。ロボット相撲は盛り上がるのでハード面の改善が進む。
9. ライトセンサー一つでライントレースをする
ライントレースはロボット・プログラミングの中心テーマだ。
10. ライトセンサー二つでライントレースをする
ライトセンサーを二つにすると,速く走れるだけでなく,難しいコースを克服できる。ライトセンサーがたくさんあったら何ができる?
11. 赤外線でロボットを連携させる
ROBOLABではメール送信コマンドで,他のロボットにメッセージを送ることができる。たくさんの種類のメッセージを送ることができるので,受信したメッセージによって動作を変えることができる。
12. チームで,団体競技で遊ばせる
相談したり,教え合ったりすることでお互いに成長してほしい。
講師が忘れてはいけないのは,受講生みんなにロボット・プログラミング講習会をよい経験にしてほしいのだが,内容的には皆が皆理解できるとは限らないということである。きっかけだけでもいいのだ。