NXT用のプログラム開発環境について調べてみた。MINDSTORMS NXTの発売から2年経つので,現在では無料で使える環境がかなり整っているようだ。
Javaバーチャル・マシンであるLeJOSもNXTに対応しているが,RCXのプログラム作成のとき,NQCコンパイラの環境として使っていたBricx Command Center(BricxCC)が複数のコンパイラに対応しているのだ。
NBC(Next Byte Code)はその名の通りバイトコード(中間コード)なので,アセンブラ・ライクなコーディングができるようだ。NXC(Not eXactly C)はNQC互換の単純化されたC言語ライクなコンパイラだ。
このURLから,Downloadingの項のBricxCC latest versionのリンクをたどり,bricxcc 3.3.7.18(2008年9月1日時点)を選択し,bricxcc_setup_33718.exeを適当な場所に保存する。bricxcc_setup_33718.exeを実行しインストールを開始する。途中,Typicalを選ぶだけで迷うところはない。
BricxCCを起動し,EditメニューからPreferencesを選び,Compilerを指定することができる。NBCを選択した。簡単なプログラムを書いて,NXTに転送しようとするが認識してくれない。NBC,NXCともNXT標準のファームウエア上で動作するのだが,ファームウエアのバージョンが1.01ではダメなようだ。NXTのファームウエアを更新する作業はNXT ソフトウエアから簡単に実行することができる。最新版であるLEGO MINDSTORMS NXT Firmware v1.05をダウンロードした。
これで,LCDのFW(ファームウエア)のバージョンがv1.05にアップされ,プログラムの転送が可能になった。
BricxCCをインストールしたフォルダにDocumentationフォルダがある。そこにNBC_Guide.pdfやNXC_Guide.pdfなどのPDFのマニュアルがある。残念ながら,全部英文のマニュアルだ。その中のNBC_tutorial.pdfというマニュアルの最初に載っているプログラムを打ち込んでみた。
見た目はNQCとそっくりなのだが,プログラムはtaskではなくthreadで構成され,mainスレッドからプログラムは実行される。OnFwdやwaitといったコマンドもNQCとそっくりだ。コマンドの後ろにセミコロン(;)がないので,かろうじてCではないと判断できる。OnFwd(OUT_B,100)の100はモーターの回転速度をパーセントで表している。Waitのパラメータ4000はミリ秒だ。このプログラムはロボットを4秒間前進させたあと,同じく4秒間後退させるものである。
コンパイルしたプログラムをNXTに転送すると,プログラム名を選択してロボットを走らせることができる。
NBCの文法は本当にNQCにそっくりなのか,NXCはどうなっているのか?これから調べていきたいと思う。
つづく