昆虫のバグ

オープンソースソフトウエアを導入した
LEGO MindStorms NXT による専門教育の実践
石山 俊彦†
†
中島
釧路工業高等専門学校
陽子†
情報工学科
LEGO MindStorms NXT に、C 言語、Java 言語ベースのオープンソースソフトウエアを組み込み、ロ
ボットを使用した演習、特別研究などの専門教育をおこなっている。開発環境に高級言語ベースのオー
プンソースソフトウエアを採用することで、標準開発環境である RoboLab では難しい細かなプログラム
記述が可能になった。また、高級言語を採用したことで、基本的な使用方法や標準的な言語仕様との違
いを説明するだけで、学生はロボット作製に取り組むことができた。
一方、オープンソースソフトウエアを利用することで、バージョン管理や情報の収集を継続的に続け
ていくことが今後の課題としてあげられる。
1. は じ め に
LEGO MindStorms NXT( 以 下 、 MindStorms)
[1]は 、理 科 教 育 へ の 興 味 喚 起 か ら 工 学 の 導 入 教
育に至るまで幅広く利用される優れた教材で
あ る [2], [3]。MindStorms を 利 用 す る こ と で 、ラ
イ ン ト レ ー ス カ ー 、マ イ ク ロ マ ウ ス 、さ ら に は
多 足 歩 行 ロ ボ ッ ト な ど 、様 々 な ロ ボ ッ ト を 実 現
することができる。
MindStorms を 用 い て ロ ボ ッ ト を 作 製 す る 場
合 、 ROBOLAB と 呼 ば れ る グ ラ フ ィ ッ ク ベ ー ス
の 制 御 言 語 を 用 い て 、セ ン サ や モ ー タ を 制 御 す
る 。 ROBOLAB は 各 命 令 が ア イ コ ン に 対 応 し て
い る の で 、ア イ コ ン を 並 べ る こ と で ロ ボ ッ ト を
コ ン ト ロ ー ル す る こ と が で き る 。し か し 、ア イ
コン形式のプログラミングは簡単にプログラ
ム を 作 成 で き る 反 面 、細 か い 制 御 が し 難 い と い
う こ と が あ げ ら れ る 。ま た 、そ れ ま で の 情 報 教
育 で 学 ん だ C 言 語 や Java 言 語 な ど の プ ロ グ ラ
ミング言語の知識が利用できない点も注意す
べきである。
MindStorms 向 け に 、 C 言 語 や Java 言 語 な ど
の 高 級 言 語 ベ ー ス の 開 発 環 境 は 、開 発 元 か ら は
サ ポ ー ト さ れ て い な い 。こ れ ら の 言 語 を 利 用 し
た い ユ ー ザ は 、オ ー プ ン ソ ー ス の ソ フ ト ウ エ ア
を 利 用 す る こ と に な る 。し か し 、オ ー プ ン ソ ー
スソフトウエアの利用はユーザの責任のもと
で お こ な わ れ る 。バ グ や 未 実 装 機 能 へ の 対 処 な
どは、教員が対応を求められる。結果として、
オープンソースソフトウエアの導入は教員の
負担増が懸念される。
本 稿 で は 、MindStorms に オ ー プ ン ソ ー ス ソ フ
ト ウ エ ア を 導 入 す る こ と で 、釧 路 工 業 高 等 専 門
学 校 専 攻 科( 以 下 、専 攻 科 )に お い て 課 題 発 見
型 授 業 (Project Based Learning: PBL、 2 年 次 に
実 施 )や 特 別 研 究 な ど の 専 門 教 育 に 適 用 し た 実
践 例 に つ い て 報 告 し 、オ ー プ ン ソ ー ス 導 入 に と
もなう効果や課題について考察する。
2. ROBOLAB の 特 徴 と 課 題
ROBOLABは 、 MindStormsで 作 製 し た ロ ボ ッ
トを動作させるためのグラフィカルなプログ
ラミングソフトウェアである(図1)。
ROBOLABで は 、 「 右 (左 )モ ー タ を 回 す 」 、
「 セ ン サ の 値 を 読 む 」な ど の 命 令 が ア イ コ ン と
し て 対 応 、各 命 令 の 実 行 回 数( 時 間 )な ど も 指
定 で き る 。 ROBOLABの ウ イ ン ド 上 に ア イ コ ン を
並 べ る こ と で 、プ ロ グ ラ ム を 作 成 で き る 。作 業
は グ ラ フ ィ カ ル な 処 理 と し て 行 わ れ 、初 学 者 に
と っ て も 抵 抗 が 少 な い [4]。
ま た 、 ROBOLABに は 繰 り 返 し 処 理 や 分 岐 処 理
な ど も 備 わ っ て い る 。 ユ ー ザ は ROBOLABの ア イ
コ ン の 並 べ 替 え と MindStormsで の 実 行 を 繰 り
返 す こ と で 、プ ロ グ ラ ミ ン グ の 基 本 も 学 習 す る
ことができる。
し か し 、C言 語 や Java言 語 を 学 ん だ 学 生 に は 、
ROBOLABの ア イ コ ン 形 式 の プ ロ グ ラ ミ ン グ は 、
それまで学んだ知識を生かし難いと捉えられ
て い る 。指 導 す る 側 に と っ て も 、細 か い 操 作 を
お こ な う な ど は 、プ ロ グ ラ ミ ン グ 言 語 の ほ う が
指 定 し 易 い と 感 じ ら れ た 。細 か い 作 業 を 行 う プ
ログラムでは規模が大きくなりがちであるが、
ROBOLAB は C言 語 や Java言 語 に 比 べ 、 規 模 の 大
きなプログラムが書き難い。
以 上 の こ と か ら 、 ROBOLABは 初 等 教 育 や 工 学
の導入向けのプログラミングに適したプログ
ラ ミ ン グ 環 境 で あ る が 、MindStormsに 複 雑 な 動
作を行わせるためのプログラムを作成するこ
とは難しいと考える。
語 に 似 た 文 法 を も つ プ ロ グ ラ ム 言 語 で あ る 。演
算 子 や 制 御 構 造 に 関 す る 命 令 も 多 く 、プ ロ グ ラ
ムの作成や移植も容易である。また、モータ、
セ ン サ な ど 、MindStorms に 搭 載 さ れ て い る 部 品
に 関 す る 命 令 が 追 加 さ れ て い る [5]。
図2
図1
ROBOLAB に よ る プ ロ グ ラ ミ ン グ 例
3. LEGO MindStorms NXT で 使 用 で き る オ ー プ
ンソースソフトウエア
MindStorms で は 、C、Java、Forth な ど が フ リ
ーの開発環境として提供されている。以下に、
代表的なオープンソースの開発言語について
述べる。
(1) C 言 語
MindStorms に お け る C 言 語 は 、 BrickOS 、
NQC( Not Quite C) な ど が NXT の 前 バ ー ジ ョ
ン で あ る RCX の 頃 か ら サ ポ ー ト さ れ て い た 。
MindStorms が RCX か ら NXT に バ ー ジ ョ ン ア ッ
プ し て か ら は 、 BrickOS が 使 わ れ て い る 。
BrickOS は Windows XP 上 で 動 作 し 、 ス ク リ
ーンエディタ、C コンパイラ、デバッガ、転送
ソフトが組み込まれた統合開発環境として提
供 さ れ る (図 2 )。
BrickOS 上 の C コ ン パ イ ラ (BrickCC)は 、 C 言
統 合 開 発 環 境 「 BrickOS」
(2) Java 言 語
MindStorms 用 の Java 言 語 は 、leJOS( Java の
プログラミング環境)として提供されている。
leJOS は Java 仮 想 マ シ ン を 含 み 、標 準 的 な Java
文法でのプログラミングや他機種からの移植
も 容 易 で あ る 。ま た 、セ ン サ や モ ー タ 関 係 の 命
令 は 、 API(Application Programming Interface)と
し て 拡 張 さ れ て い る [6]。
leJOS は 、 Windows 上 の エ デ ィ タ で ソ ー ス コ
ー ド を 作 成 、コ マ ン ド・プ ロ ン プ ト 上 で コ ン パ
イルを実行する。コンパイルが成功した後は、
PC と MindStorms を USB 接 続 し 、コ マ ン ド・プ
ロンプト上でファイルを転送する。
4. オ ー プ ン ソ ー ス の 導 入 と 専 門 教 育 へ の 展 開
専 攻 科 電 子 情 報 専 攻 の 特 別 演 習( ロ ボ ッ ト 製
作 を テ ー マ と し た PBL 形 式 の 演 習 授 業 )お よ び
特 別 研 究 の 題 材 と し て 、MindStorms を 使 用 し た 。
特 別 演 習 に お い て は MindStorms に BrickOS
を 実 装 し た [7]。 演 習 の 対 象 と な る 学 生 は 電 気 、
電 子 、情 報 各 分 野 の 出 身 で あ り 、本 科 に お け る
演習や卒業研究において C 言語を使用した経験
が あ り 、 BrickOS の 使 い 方 や BrickCC と 標 準 的
な C 言 語 の 違 い を 説 明 す る だ け で 、ロ ボ ッ ト 作
製に取り組むことができる。
一 方 、 特 別 研 究 に お い て は leJOS を 使 用 し た
[8]。特 別 研 究 の テ ー マ と し た「 包 摂 ア ー キ テ ク
チ ャ ( Subsumption Architecture) [9]」 の サ ン プ
ル ソ ー ス コ ー ド が Java で 記 述 さ れ て い た こ と
の ほ か 、担 当 し た 学 生 が Java 言 語 を 得 意 と し て
いたためである。
5. 結 果 と 考 察
5.1. オープンソースの導 入 と専 門 教 育 への展 開
(1) BrickOS を 利 用 し た PBL 演 習
図 3 に 、学 生 達 が 特 別 演 習 に お い て 作 製 し た
ロ ボ ッ ト を 示 す 。 ロ ボ ッ ト は 、 MindStorms と
BrickOS に よ り 作 製 さ れ た 。 図 に 示 し た ロ ボ ッ
ト は 、「 フ ィ ー ル ド 内 に 設 置 さ れ た 大 小 3 個 の
的 の 中 に ボ ー ル を 入 れ 、得 点 を 競 う 課 題( 玉 入
れ ゲ ー ム )」 [3]に 対 す る 学 生 の 作 例 で あ る 。
図 (a) に 示 し た ロ ボ ッ ト は 超 音 波 セ ン サ に よ
り 的 を 発 見 し 、ボ ー ル を 流 し 込 む こ と を 狙 い と
し た 。的 が 発 見 で き れ ば 、的 の 傍 か ら 確 実 に ボ
ー ル を 流 し 込 む こ と が で き る 。図 (b)に 示 し た ロ
ボ ッ ト は 投 て き を お こ な う こ と で 、ボ ー ル を 的
に 入 れ る こ と を 狙 い と し た 。乱 数 で モ ー タ の パ
ワ ー を 制 御 、ボ ー ル の 飛 距 離 を ば ら つ か せ れ ば 、
的 の 発 見 や 移 動 の 可 否 に 関 係 な く 、ボ ー ル を 的
に入れることができる。
図 (a)、(b)に 示 し た ロ ボ ッ ト は 同 じ テ ー マ に 対
す る 提 案 で あ る が 、各 学 生 チ ー ム の 着 眼 点 の 違
い な ど に よ っ て 、異 な る ア プ ロ ー チ の ロ ボ ッ ト
が 提 案 さ れ た 。各 チ ー ム の ア イ デ ア を 具 体 化 す
る 上 で 、 BrickCC は セ ン サ か ら の 読 み 取 り 値 に
よ り 割 り 込 み 操 作 や 、条 件 判 断 を か ら め た 複 雑
な 動 き な ど 、細 か な 記 述 に 対 し て も 対 応 す る こ
と が で き た 。 BrickOS を 利 用 す る こ と で 、 学 生
たちの中からはプログラムの書き難さに関す
る 不 満 は 聞 か れ な か っ た 。以 上 の 点 か ら 、各 チ
ー ム の ア イ デ ア を 具 体 化 す る の に 、MindStorms
と BrickOS の 組 み 合 わ せ は 実 用 に な っ た と 評 価
することができる。
(2) leJOS を 利 用 し た 特 別 研 究
特 別 研 究 で は 、包 摂 ア ー キ テ ク チ ャ を ベ ー ス
と し た「 昆 虫 の 餌 あ つ め シ ミ ュ レ ー シ ョ ン 」[10]
を 実 機 ベ ー ス で お こ な っ た 。図 4 に 、餌( 荷 物 )
を 運 ぶ ロ ボ ッ ト を 示 す 。作 例 の ロ ボ ッ ト は 、フ
ィ ー ル ド 内 を う ろ つ き な が ら 、荷 物 を 探 す 。荷
物を見つけると、壁際まで運ぶ。この動作を、
全ての荷物が壁際に運ばれるまで続ける。
昆虫の動作をシミュレーションするために
包 摂 ア ー キ テ ク チ ャ を 採 用 す る 必 要 が あ り 、プ
ロ グ ラ ム 言 語 と し て Java を 採 用 し た 。も と も と 、
Java 言 語 は 移 植 性 が 高 い 言 語 で あ る 。開 発 環 境
と し て leJOS を 用 い る こ と で 、 サ ン プ ル と し て
提 供 さ れ た ソ ー ス コ ー ド を MindStorms に 移 植 、
実機の仕様にあわせて改造するなどの作業を
容易に進めることができた。
(a) 発 見 し た 的 に ボ ー ル を 流 し 込 む
図3
(b) 投 て き 法 で 的 を 狙 う
PBL 演 習 で 作 製 し た 玉 入 れ ロ ボ ッ ト
図4
包摂アーキテクチャ搭載荷物運びロボット
5.2. 考 察
我 々 は 、MindStormsを 用 い た 特 別 演 習 を 、3
年 間 に わ た り 行 っ て き た 。開 発 環 境 と し て 、初
年 度 は ROBOLABを 、2 年 目 以 降 は BrickOSを 使
用 し た 。 受 講 し た 学 生 の 感 想 と し て 、 MindStorms の 使 用 は 好 評 で あ っ た が 、 初 年 度 は
ROBOLABに つ い て の 不 満 が み ら れ た 。 理 由 と
し て 、細 か い 制 御 が し 難 い 、使 い 慣 れ た 高 級 言
語 を 使 用 し た い 、課 題 の 内 容 が 高 度 に な る に し
たがいプログラムは複雑かつ大規模になるが、
ROBOLABで は プ ロ グ ラ ム の 書 き 難 さ が 感 じ ら
れるとの意見であった。
2 年 目 以 降 に BrickOSを 使 用 す る こ と で 、 ソ
フトウエアの開発環境に対する不満は聞かれ
な く な っ た 。 各 ロ ボ ッ ト に お い て も ROBOLAB
では難しい細かな操作が可能になった。また、
作 例 の ロ ボ ッ ト を み て も 、作 製 者 の 意 図 は 表 現
さ れ て い る こ と が 確 認 で き た 。 学 生 は 、 C言 語
を 利 用 で き る こ と で 、そ れ ま で 学 ん だ 知 識 を ベ
ー ス に 、ロ ボ ッ ト 工 学 な ど の 高 い レ ベ ル の 知 識
を積み上げた演習活動をおこなうことができ
た [7]。 こ う し た こ と か ら 、 BrickOSを 使 用 す る
ことで開発環境は改善されたと考える。
leJOS は ベ ー ス が Java 仮 想 マ シ ン を 含 む Java
言 語 で あ る こ と か ら 、学 生 は 違 和 感 無 く プ ロ グ
ラ ミ ン グ に 取 り 組 む こ と が で き た 。MindStorms
が 前 バ ー ジ ョ ン (RCX)の 頃 か ら サ ポ ー ト さ れ て
い た た め 、日 本 語 に よ る 情 報 が 入 手 し 易 い こ と
も使い勝手を良くしている。
指 導 す る 側 に と っ て 、 BrickOSと leJOSの い ず
れ を 採 用 し て も か ま わ な い と 考 え る 。学 生 が い
ず れ の 言 語 に 習 熟 し て い る か で 、選 択 す れ ば よ
い 。 BrickOSの 方 が 統 合 開 発 環 境 で あ る こ と か
ら、ユーザインタフェースが統一されており、
指導上の都合は良い。
一 方 、オ ー プ ン ソ ー ス ソ フ ト ウ エ ア を 利 用 す
る こ と で 、ソ フ ト ウ エ ア 環 境 の 整 備 や 情 報 の 収
集 と い う こ と が 課 題 と し て あ げ ら れ る 。オ ー プ
ン ソ ー ス ソ フ ト ウ エ ア は 、ユ ー ザ の 責 任 の 下 で
使 用 さ れ る 。オ ー プ ン ソ ー ス ソ フ ト ウ エ ア と フ
ァ ー ム ウ エ ア と の 不 適 合 、バ グ の 発 見 、ハ ー ド
ウ エ ア 機 能 の 未 対 応 な ど の 問 題 は 、ユ ー ザ の 責
任 で 解 決 さ れ な く て は な ら な い 。使 用 し て い る
ソフトウエアの開発中止やダウンロードサイ
トの閉鎖などの問題も起こり得る問題である。
オープンソースソフトウエアを安定して使
用 す る た め に は 、使 用 す る バ ー ジ ョ ン を 統 一 し 、
頻繁なバージョンアップを避けるなどの管理
が 必 要 と な る 。ま た 、オ ー プ ン ソ ー ス ソ フ ト ウ
エアの開発動向やバージョンアップにともな
う 仕 様 変 更 や 対 応 な ど 、情 報 の 収 集 を 欠 か さ な
い こ と も 必 要 な こ と で あ る 。こ う し た 努 力 を 継
続 す る こ と で 、オ ー プ ン ソ ー ス ソ フ ト ウ エ ア を
演 習 や 研 究 の 中 に 取 り 込 む こ と が で き る 。こ う
し た 活 動 を 、無 理 な く 継 続 す る こ と が 今 後 の 課
題である
6. ま と め
LEGO MindStorms NXT に C 言 語 、 Java 言 語
ベースのオープンソースソフトウエアの開発
環 境 を 組 み 込 む こ と で 、 ROBOLAB で は 難 し い
細かな操作や規模の大きなプログラミングが
可 能 に な っ た 。ま た 、 C 言 語 、 Java 言 語 を 利 用
で き る こ と で 、基 本 的 な 注 意 点 を 説 明 す る だ け
で 、学 生 は ロ ボ ッ ト 作 製 に 取 り 組 む こ と が で き
た 。そ の 結 果 、そ れ ま で 学 ん だ 知 識 を ベ ー ス に 、
ロボット工学などの高いレベルの知識を積み
上げた研究教育活動につなげることができた。
オープンソースソフトウエアを利用するこ
と で 、バ ー ジ ョ ン 管 理 や 開 発 環 境 な ど ソ フ ト ウ
エア環境の整備や情報の収集を継続的な活動
と し 続 け て い く こ と が 、今 後 の 課 題 と し て あ げ
られる。
参
考
文
献
[1] http://www.legoeducation.jp/mindstorms/
[2] 川 上 誠 , “小・中 学 生 を 対 象 と し た ロ ボ ッ ト 教 室 へ
の 取 り 組 み ”, 沼 津 工 業 高 等 専 門 学 校 研 究 報 告 , 40,
pp. 179-186, 2006.
[3] 早 川 栄 一 他 , “ 拓 殖 大 学 工 学 部 情 報 工 学 科 に お け
る LEGO MindStorms を 用 い た 創 造 性 教 育 ”, 人 工
知 能 学 会 誌 , 21- 5, pp. 522-531, 2006.
[4] Eric Wang, レ ゴ ブ ロ ッ ク と ROBOLAB で 学 ぶ エ ン ジ
ニ ア リ ン グ ア プ ロ ー チ , (カ ッ ト シ ス テ ム ,東 京 ,2006).
[5] 大 庭 慎 一 郎 , “LEGO MINDSTORMS NXT で あ そ
ぼ う ! ”,ソ フ ト ウ ェ ア デ ザ イ ン , no. 3, pp. REF-1 –
REF-16, March 2007.
[6] Bagnall, “マ イ ン ド ス ト ー ム ・ プ ロ グ ラ ミ ン グ 入
門 ”, (CQ 出 版 , 東 京 , 2004).
[7] 石 山 俊 彦 ,中 島 陽 子 ,神 谷 明 基 , “釧 路 高 専 専 攻 科 に
お け る 競 争 試 作 方 式 を 適 用 し た PBL 型 演 習 の 実
践 例 ”, 工 学 教 育 , 56-5, pp. 11-16, 2008.
[8] 渡 辺 雄 貴 ,石 山 俊 彦 , “包 摂 ア ー キ テ ク チ ャ を 搭 載
し た ロ ボ ッ ト 群 に よ る 協 調 行 動 ”, 平 成 20 年 度
電 気 ・ 情 報 関 係 学 会 北 海 道 支 部 連 合 大 会 ,講 演 番
号 -206 (CD-ROM), 2008.
[9] R. A. Brooks, “A robust layered control system for a
mobile robot”, IEEE J. Robotics and Automation,
RA-2, pp. 14-23, 1986.
[10] 三 浦 宏 文 ,“ 昆 虫 規 範 型 ロ ボ ッ ト と 群 知 能 ”, 計
測 と 制 御 vol.31 No.11, pp. 1180-1184, 1992.