FLLにおけるプログラミング
FLLにおいて使用するマインドストームのソフトウェアには、「ファームウェア」と称する制御プログラムとユーザプログラム群とがある。これらは、コントローラのメモリ上にダウンロードされ、動作する。同時に動作するユーザプログラムは1つのみであり、コントローラのスイッチでプログラム番号を選択することにより指定する。
ユーザプログラムの開発環境としては、ROBOLABと称するPC(Windows版とMacintosh版のどちらか)上で動作するシステムが用意されており、「LabVIEW」と称するプログラミング言語を用いる。LabVIEWでは、フローチャートのように、用意された機能ブロック(アイコン)を線で結び、必要なパラメータなどを設定することにより作成する。
プログラムの簡単な例を図3に示す。アイコンには、モーターの駆動(パラメータ:回転方向、パワー値)、センサ値の読込み、タイマ制御、条件分岐などがある。また、サブルーチンも使用できる。
プログラムの基本構造は、スタート後にロボットを想定ルート通りに走行させながら、ロボット上部のアームなどを動かすものである。その間、所定の契機で、センサの値を読み取って、走行方向の転換やアームなどの動作開始・終了などのための条件判断を行う。
なお、コントローラにダウンロードできるプログラムの量は、コントローラの搭載メモリサイズ32kbの範囲内であり、プログラム数についても、5個までという制約がある。
(画像をクリックすると別ウィンドウに拡大図を表示します)
どのように走らせるのか?
最後に、ロボットのごく基本的な走行制御方法について述べておく。所定距離の走行をクリアするためにタイマを用いる方法と、回転センサを用いる方法とがある。前者は、タイマで指定する時間だけモーターを動かすものである。後者は、第2回で説明する回転(角度)センサの値を読み取って得られる軸の回転数の値とタイヤの径から、計算により走行距離を測るものである。センサの装着箇所によっては、ギア比をも考慮する必要がある。
方向転換は左右のモーターの制御による。例えば、両モーターの回転方向を逆にしたり、モーターに設定するパワーレベルの値に大小の差をつけたりする。パワーレベルの値が低いと、単位時間当たりの回転数は小さい。
ここまでの説明で、FLLにおけるロボット競技および競技で用いるロボットの概要について理解していただけたと思う。冒頭で述べたように、FLLのロボット開発には、組み込みシステム開発のエッセンスがちりばめられている。子供たちは、ロボットの開発を通して、自分たちのアイデアを出し合い、ロボットの構造やそのプログラム制御の仕組みを学ぶのである。そして、実際の競技を通して、自分たちのアイデアの素晴らしさとともにその限界を知り、技術の奥深さを体得するである。
第2回以降では、組込みシステムの特徴のうち、環境をセンスした結果に基づくプログラム制御、ハードウェア/ソフトウェア協調設計、リソース制約対応とプログラム開発管理のそれぞれについて、FLLの競技に実際に用いたロボットにおける事例をもとに詳説したい。
なお、ロボットをどのようなルートで障害物のある地点まで進め、どのような方法で各ミッションを攻略するか、といったこともFLLロボット競技の醍醐味の1つである。このミッション攻略戦略に応じて、ロボットのアタッチメント構成やプログラム論理が決まる。これについては、並行して進められる連載「最強ロボットを作れ!−FLL挑戦記(仮)」で詳しく紹介したい。