ロボットを動かしてみるというエントリーで「簡単なプログラム」として、ロボットの動きを記録・再生するプログラムを紹介しました。が、プログラムをまったくやったことがない人にとっては全然簡単ではないかも知れません。そこで NXT ソフトウェアでどうやってプログラミングするかを、このプログラムを題材に説明したいと思います。
NXT ソフトウェアでは、このようなフィールドにブロックを並べていくことでプログラムを組むことができます。NXT マークをしているのがプログラムの起点です。プログラムはこの起点から右に順番に実行されていきます。
左のパレットに並んでいるブロックを、このようにドラッグアンドドロップで並べていきます (クリックすると GIF アニメが開きます)。ブロックを持っていくと自動的に連結ビームが伸びるようになっています。
すでに並んでいるブロックの間に挿入することもできます (クリックすると GIF アニメが開きます)。挿入時も自動的に連結ビームの長さが変化します。
もちろんコピーや貼付け、複数のブロックを選択して操作することもできます。また、パレットにはモーターを動かしたりセンサー値を読み取ったりといった基本的なブロックはもちろんのこと、条件分岐やループ処理、変数処理、演算処理など、本格的にプログラミングできるだけのブロックがそろっています。プログラミングに慣れている人はテキストで書いたほうが早いと思いますが、初心者でもこうやって気軽にポコポコとプログラミングできるのはなかなかよいです。
ここで、今回のプログラムで使った3つのブロックを紹介してみたいと思います。
ひとつめはサウンドブロックです。
ブロックをクリックすると上の画像の様に左下に詳細設定の画面が現れます。ここでそのブロックの細かい動きを設定します。ブロックのアイコンを見るだけでも、そのブロックの動作がある程度わかるようになっています。
NXT ソフトウェアが英語版なのでちょっとわかりにくいかも知れませんが、このブロックには「Record というサウンドファイルをボリューム100で1回再生する」という設定がしてあります。前のエントリーのムービーで、ロボットが最初に「Record」といっているのがこれです。このようにサウンドブロックは用意されているサウンドファイルの中から好きなものを選んで再生するブロックです。ほかにも「ドレミ」などの音階を鳴らすこともできます。このブロックを並べれば曲を鳴らすこともできますね。
サウンドブロックの次に並んでいるのが、ふたつめの記録・再生ブロックです。右に並んでいるので、サウンドブロックの処理 (ここではサウンドファイルの再生) が終わった後に実行されます。
このブロックには「A、B、Cにつながれたモーターの動きを15秒間記録する」という設定がしてあります。このブロックが実行されると、各モーターに内蔵された角度センサーがモーターの角度を一定時間読み取り続け、指定された記録ファイル (ここでは「RobotAction」) に記録します。ムービーで手を使ってグリグリ動かしているところがこれです。Action の設定を Record ではなくて Play にすると、記録ファイルに記録された角度のとおりにモーターを動かし、一定時間動きを再生します。このように記録・再生ブロックはモーターの記録と再生を行うブロックです。
さて、上であっさりと「記録ファイル」という言葉を使っていますが、そうです、NXT はロボット内でファイル操作も可能なのです。NXT 内にいくつもファイルを保存することができ、そのファイルを読み取ったり、パソコンへ記録ファイルをダウンロードしたりできます。動作のログ取りや各種設定、地図情報などを覚えさせるのに使えますね。
その次にまたサウンドブロックが並べてありますので、15秒間動きを記録した後にまたサウンドファイルを再生します。その次に並んでいるのがウェイトブロックです。
このブロックには「Enter ボタンが押されるまで待つ」という設定がしてあります。ロボットの動きを記録したら停止して、ボタンを押したら動きを再生するようにしたかったので、このブロックを入れてあります。入力にはボタンの代わりにセンサーも使えます。タッチセンサーが押されたらとか、光センサーの周りが明るくなったらとか、サウンドセンサーの周りで音がなったらとか、色々な入力を待つことができます。このようにウェイトブロックは外部からの入力を待つブロックです。
Enter ボタンが押されるとプログラムは先へ進み、そのあとの「Play」というサウンドを再生をしてから、さきほど記録した動作を再生し、最後に「Good Job!」で終わります。このようにこれら3つのブロックだけで今回の動きを作っています。どうでしょうか。簡単ですよね?(^^;
プログラミングに慣れてくると、同じ動作を繰り返したり、状況に応じてロボットの動作を切り替えたりと、より高度なプログラムを組めるようになります。自分の作ったロボットが自分の思う通りに動いたときには、何十年もプログラムをやっていきている僕でも感動してしまいます(笑)。誰でもこの感動を味わえるように、読んでいるだけで徐々にロボットプログラミングができるブログになるといいなぁと思っていますので、よろしくお願いします。
はじめまして.
マインドストームについて詳細なレポート大変参考になりました。もう、欲しくて欲しくてたまりません。TBもさせていただきました。今後も詳しいレポートをよろしくお願いします。
投稿情報: 科学技術に乾杯 | 2006年10 月 7日 (土) 21:59