Comments
Description
Transcript
昆虫のバグ
オープンソースソフトウエアを導入した 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.