TOPシステム開発> 第1回:これがLEGOのロボット競技会FLLだ! (3/3)

LEGOから学ぶ組み込みシステム開発のキホン

LEGOから学ぶ組み込みシステム開発のキホン

第1回:これがLEGOのロボット競技会FLLだ!

著者:科学技術振興機構 山下 博之

公開日:2008/03/19(水)

FLLにおけるプログラミング

FLLにおいて使用するマインドストームのソフトウェアには、「ファームウェア」と称する制御プログラムとユーザプログラム群とがある。これらは、コントローラのメモリ上にダウンロードされ、動作する。同時に動作するユーザプログラムは1つのみであり、コントローラのスイッチでプログラム番号を選択することにより指定する。

ユーザプログラムの開発環境としては、ROBOLABと称するPC(Windows版とMacintosh版のどちらか)上で動作するシステムが用意されており、「LabVIEW」と称するプログラミング言語を用いる。LabVIEWでは、フローチャートのように、用意された機能ブロック(アイコン)を線で結び、必要なパラメータなどを設定することにより作成する。

プログラムの簡単な例を図3に示す。アイコンには、モーターの駆動(パラメータ:回転方向、パワー値)、センサ値の読込み、タイマ制御、条件分岐などがある。また、サブルーチンも使用できる。

プログラムの基本構造は、スタート後にロボットを想定ルート通りに走行させながら、ロボット上部のアームなどを動かすものである。その間、所定の契機で、センサの値を読み取って、走行方向の転換やアームなどの動作開始・終了などのための条件判断を行う。

なお、コントローラにダウンロードできるプログラムの量は、コントローラの搭載メモリサイズ32kbの範囲内であり、プログラム数についても、5個までという制約がある。

図3:ROBOLABのプログラミング画面例
(画像をクリックすると別ウィンドウに拡大図を表示します)

どのように走らせるのか?

最後に、ロボットのごく基本的な走行制御方法について述べておく。所定距離の走行をクリアするためにタイマを用いる方法と、回転センサを用いる方法とがある。前者は、タイマで指定する時間だけモーターを動かすものである。後者は、第2回で説明する回転(角度)センサの値を読み取って得られる軸の回転数の値とタイヤの径から、計算により走行距離を測るものである。センサの装着箇所によっては、ギア比をも考慮する必要がある。

方向転換は左右のモーターの制御による。例えば、両モーターの回転方向を逆にしたり、モーターに設定するパワーレベルの値に大小の差をつけたりする。パワーレベルの値が低いと、単位時間当たりの回転数は小さい。

ここまでの説明で、FLLにおけるロボット競技および競技で用いるロボットの概要について理解していただけたと思う。冒頭で述べたように、FLLのロボット開発には、組み込みシステム開発のエッセンスがちりばめられている。子供たちは、ロボットの開発を通して、自分たちのアイデアを出し合い、ロボットの構造やそのプログラム制御の仕組みを学ぶのである。そして、実際の競技を通して、自分たちのアイデアの素晴らしさとともにその限界を知り、技術の奥深さを体得するである。

第2回以降では、組込みシステムの特徴のうち、環境をセンスした結果に基づくプログラム制御、ハードウェア/ソフトウェア協調設計、リソース制約対応とプログラム開発管理のそれぞれについて、FLLの競技に実際に用いたロボットにおける事例をもとに詳説したい。

なお、ロボットをどのようなルートで障害物のある地点まで進め、どのような方法で各ミッションを攻略するか、といったこともFLLロボット競技の醍醐味の1つである。このミッション攻略戦略に応じて、ロボットのアタッチメント構成やプログラム論理が決まる。これについては、並行して進められる連載「最強ロボットを作れ!−FLL挑戦記(仮)」で詳しく紹介したい。


前のページ  1  2  3

*連載「最強ロボットを作れ!−FLL挑戦記(仮)」は2008年4月11日より公開予定です。(2008/03/28)


独立行政法人 科学技術振興機構 山下 博之
著者プロフィール
独立行政法人 科学技術振興機構 山下 博之
1981年京都大学大学院修了。日本電信電話公社(現NTT)の研究所においてデータ通信などの研究開発・標準化活動に従事後、2003年に(株)NTTデータに転籍。2004年より科学技術振興調整費プログラムオフィサーとして(独)科学技術振興機構に出向中。情報処理学会誌 2007年5月号解説記事「小中学生を対象としたロボット競技会と総合理科教育」もご覧ください。


INDEX
第1回:これがLEGOのロボット競技会FLLだ!
  大人も夢中にさせるFLL
  制約の範囲で最高のロボットを作る
FLLにおけるプログラミング