DATE : 2007/04/02 (Mon)
LMS 向けマインドストームは、leJOS 上の Java を使ってプログラミングを行います。
プログラムが出来上がったあとは、次のようにコマンドを実行して JAR ファイルを生成します。(以下のコマンドは「Lego Mindstorms Simulator - Creating virtual RCX robots」を参考にしています。「>」はプロンプトです)
> lejosc *.java > jar cvfm0 myrobot.jar manifest.txt *.class
manifest.txt は、生成する JAR ファイルのマニフェストファイルで、メインクラスを指定しておきます。
lejosc というコマンドを見ると、leJOS 独自のコンパイラを使っているように見えます。しかし実際は、lejosc.bat というバッチファイルです(leJOS RCX 2.1.0)。その中身を覗いて見ると、次のようになっていました。(以下は、<LEJOS_HOME>/bin/lejosc.bat を抜き出したものです)
javac -target 1.1 -source 1.2 -bootclasspath %LEJOS_HOME%\lib\classes.jar;%LEJOS_HOME%\lib\rcxrcxcomm.jar
つまり、JDK 付属のコンパイラを使用していることになります。ただし、ブートストラップクラスが指定されているので、 leJOS 独自の環境向けにコンパイルしています。
また上のコマンドから、LMS や leJOS 向けのソースコードでは、JDK 1.4 以降の言語拡張が利用できないこともわかります。
参考文献
DATE : 2007/04/01 (Sun)
LMS (Lego Mindstorms Simulator) をインストールするには、以下の環境が必要です。なお、この記事は LMS 1.41を対象としています。
- Java2 SDK 1.4.2 以上
- Java3D 1.3.1 以上
LMS 上で動作するマインドストームは Java でプログラミングするため、実行環境(JRE)ではなく開発環境(SDK / JDK)が必要です。
なお、Windows 用インストーラを使用した場合、インストーラに Java3D が付属しています。
Windows の場合はインストーラが付いているので、インストール作業は簡単に終わります。
次に、leJOS をインストールします。leJOS はマインドストーム用の Java 実行環境+開発環境です。leJOS には leJOS NXT 、leJOS RCX とありますが、現時点の LMS は RCX にしか対応していないので、leJOS RCX をインストールします。
インストール後は、LEJOS_HOME 環境変数を作り、leJOS をインストールしたディレクトリを設定しておきます。また必要に応じて、「<LEJOS_HOME>/bin」をパスに設定したり、「<LEJOS_HOME>/lib/classes.jar」や「<LEJOS_HOME>/lib/pcrcxcomm.jar」を CLASSPATH 環境変数に設定します。
DATE : 2007/03/30 (Fri)
レゴ マインドストームを触ることになりました。
(;^ω^)もっとも、最新の NXT でなく、旧式の RCX ですが。
数年前にも一度だけ触ったことがあったのですが、あの時はもうこれ以上触ることはないだろうと思っていました。ところが、ふとしたことから再び触ることになりました。
マインドストームは手軽にプログラミングできる割にはなかなか興味深い代物です。PCアプリや携帯アプリは入力デバイスは多種多様なものの、出力はほとんどがディスプレイです。ところが、マインドストームの場合は出力にモーターを使うので、プログラミングの際には考え方を変える必要が出てきます。
( ^ω^)メカトロニクスの入門のようなものですね。
と、早速マインドストームを使ってみようと思ったのですが、自宅にはないのでデバッグするのも一苦労です。というわけで、インターネット上を探してみると、マインドストームのシミュレータ「LMS (Lego Mindstorms Simulator)」を見つけました。leJOS のシミュレータを搭載しているので、Java を使ったシミュレーションを行えるようです。
( ^ω^)シミュレータ上での動作と実機上での動作はたいていは異なるものですが、アルゴリズムの確認には十分使えそうです。(;^ω^)leJOS はマインドストーム上で動作するので、シミュレータ用に書いたコードをそのまま動かすこともできます。ただ、実機ではメモリを消費しがちなので、実機では NQC を使おうと思います。