軌跡~-_科学と旅_-~

小中学生を対象としたロボット競技会と総合理科教育

A Robot Contest for Children and Comprehensive Science Education


対象ロボットと競技の内容


 FLLの対象とするロボットは,自動制御の車両型であるが,使用部品等に一定の条件が課されている.本章では,その詳細を示すと共に,毎年9月に発表される競技内容(ミッション)について,事例をもとに説明する.

対象ロボット

(a) ハードウェア

◆マインドストームの基本構成

 マインドストームは,コントローラと,モーターや各種センサの機能部品,及び多様なブロック等により構成される.コントローラはCPUとメモリを含み,モーターへの出力インタフェース,センサからの入力インタフェースを有する.コントローラの電源は,単三乾電池(または充電池)6個である.

◆マインドストームのタイプ

 マインドストームとしては,FLL2005まではRCXタイプのみであったが,FLL2006より高性能版のNXTタイプの使用も可能となった.両タイプのハードウェア比較を表-2に示す.表に示す以外に,モーターやセンサの各機能部品の制御精度も向上しており,たとえば,モーターのパワーレベル設定は,RCXの0〜5に対し,NXTでは0〜100となっている.

◆ロボットに使用可能な部品

 ロボットに使用できる部品は,RCXタイプの場合,1つのコントローラと3個のモーター,及び,タッチセンサ2個,光センサ2個,回転センサ3個,ランプ1個の他,無制限のレゴブロック(レゴブロックセットに含まれるものであれば,ゴムやベルト等も使用可能.ただし,接着や加工等は不可.)である.NXTタイプの場合,さらに,サウンドセンサ及び超音波センサを各1個使用可能である.

◆ロボットの基本構造

 後に説明するロボット競技のミッションの内容から,ロボットは,基本的に車両型である.駆動用モーターは,実際の車のように1個でも可能であるが,走行方向制御の容易さから,2個を使って左右の車輪に接続するのが普通である.ギアを介して接続すると,ギア比によって,速度とパワーの制御を行うことが出来る.
 もう1個使えるモーターは,ミッションの操作のために,ロボットの上部等に設置して,クレーンのようにアームを動かしたりするために用いることが多い.通常,走行距離を測定するために,回転センサを車輪に接続する.また,ライントレースのために,光センサを底部等に配置する.タッチセンサは,前方あるいは後方に配置して壁等の障害物にぶつかったことを検知するために用いたり,後に述べるように,スタート時のプログラムの分岐制御に用いたりする.
 全てのミッションを遂行可能な,人間の手のような汎用のロボットを作ることはできないので,ミッションに応じた操作機構(アタッチメント)を製作し,ミッションごとに取り替える.
 ロボットの本体及びアタッチメントの例を,図-1に示す.図中央の本体の前後及び手前にある3個の構成物がアタッチメントである.

(b) ソフトウェア

 ソフトウェアには,"ファームウェア"と称する制御プログラムと,ユーザプログラム群とがある.これらは,コントローラのメモリ上にダウンロードされ,動作する.同時に動作するユーザプログラムは1つのみであり,コントローラのスイッチで選択する.

 ユーザプログラムは,フローチャートのように,用意された機能ブロックを線で結び,必要なパラメータ等を設定することにより作成する.プログラムの簡単な例を図-2に示す.機能ブロックには,モーターの駆動(パラメータ:回転方向,パワー値),センサ値の読込み,タイマ,条件分岐等がある.また,サブルーチンも使用できる.

 なお,より低レベルのプログラミング言語もあるようであるが,FLLでは使用しない.

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

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

■ 所定距離の走行
 タイマを用いる方法と,回転センサを用いる方法とがある.
 前者は,タイマで指定する時間だけモーターを動かすものである.この方法では,電源電圧の変動に伴うモーターの回転数変動や,走路面の状態によるスリップ等により,誤差が生ずることがある.この誤差は,長い距離になると,無視できないケースが多い.
 後者は,回転(角度)センサを読み取って得られるモーターの回転数の値を用いて,ギア比とタイヤの径とから,計算により走行距離を測るものである.RCXタイプの回転センサでは,360度を16段階(1段階は22.5度)に分割している.この方法は,タイマに比べて誤差は少ないが,何らかのトラブルによりタイヤが回転できなくなってしまった場合,制御不能に陥るリスクがある.

■ ライントレース
 光センサを用いる.光センサの読取りにより,入力する光の波長に対応した値を得ることができる.したがって,走路面に白黒等のコントラストの明確なラインがある場合,光センサを読込みながら走行させ,白が連続すると黒の方へ,黒が連続すると白の方へ,それぞれ方向を変えることにより,ラインのエッジに沿って走行させることができる.このとき,センシング時間間隔と走行スピードとの関係に注意する必要がある.なお,NXTタイプの光センサは,カラーの識別も可能な精度を有している.ただし,光センサは,センサ-走路面間の距離や外部の照明の状況等に対して影響されやすいため,工夫が必要である.また,実際の競技に際しては,会場でスレシホールド値のチューニングを行う必要がある.

(c) プログラミング環境

 ユーザプログラムは,PC上で作成し,コントローラにダウンロードする.

 開発環境としては,RCXタイプ向けには,ROBOLABと称するシステムが用意されている.NXTタイプ向けには,ROBOLAB 2.9あるいはNxtPL (NXT Programming Language)がある.もちろん,ROBOLAB 2.9は,RCXタイプでも使用可能である.ROBOLAB及びNxtPLのプログラミング画面を,それぞれ,図-2及び図-3に示す.

 コントローラにダウンロードできるプログラムの量は,コントローラの搭載メモリサイズに依存するが,RCXタイプの場合には,プログラム数についても,5個までという制約がある.


|< << >> >| (3/7)

表-2  マインドストームRCX とNXT とのハードウェア比較

図-1  ロボット本体とアタッチメントの例
図-1  ロボット本体とアタッチメントの例

図-2  ROBOLAB によるプログラム作成画面
図-2  ROBOLABによるプログラム作成画面

図-3  NxtPLによるプログラム作成画面
図-3  NxtPLによるプログラム作成画面