marunomaruno-memo

marunomaruno-memo

Lego Mindstoms NXT - leJOS - (1) leJOS のインストール

2008年07月01日 | LEGO
2011-09-15 修正
Lego Mindstomes NXT - leJOS - (1) leJOS のインストール
================================================================================

Java で Lego Mindstomes NXT を動かすためには、NXT のファームウェ
ア自体を標準のものから変更する必要があります。もちろん、Java を
使った開発環境を PC 上に整える必要もあります。

今回は、この開発環境を Eclipse で、また、実行環境 leJOS を NXT
にいれて、"Hello World!" を NXT 画面に表示するアプリケーションを
作り、動作確認まで行ってみましょう。

なお、ここでは、Eclipse を使って Java アプリケーションを作ったこ
とがある、という前提で話を進めます。

また、2008 年 1 月に記述していた記事「Lego Mindstomes NXT - NXC
プログラミング」で使った NXC との違いも補足していきたいと思って
います。サンプルも、なるべく同じ動きをするものにしたいと思ってい
ます。

そして、以前と同じように、推測で記しているところ(★を補足)がある
ので、注意されたい。


■ 開発環境

開発環境としては、Eclipse を使います。現在、Eclipse の leJOS plugin
もありますが、わたしの環境ではうまく動かないため、Eclipse は
単なる Java プロジェクトとし、プログラムのアップロードには外部
ツールを使って行うこととします。

参考: org.lejos.nxt.ldt.update-site

http://lejos.sourceforge.net/tools/eclipse/plugin/nxj/



■ インストール手順

つぎの手順のようにインストールします。

1. JavaSE と Eclipse を PC にインストールする
2. NXT USB driver を PC にインストールする
3. leJOS を PC にインストールする
4. leJOS を NXT にインストールする
5. Eclipse を設定する
6. アプリケーションを作り、動作確認する


■ 1. JavaSE と Eclipse を PC にインストールする

JavaSE と Eclipse のインストールはそれぞれ

J2SDK 1.4.2 のインストール
Eclipse とプラグインのインストール

を参照してください。ただし、ここに書かれているのはそれぞれバージ
ョンが古いので、最新のものについては、

SUN
http://java.sun.com/javase/

eclipse.org
http://www.eclipse.org/

を参考にしてください。


■ 2. NXT USB driver を PC にインストールする

NXT に付属しているソフトウェアなどを使って、ロボットを動かしたり
した場合は、このステップは必要ありません。

leJOS 以外で NXT を動かすのでなければ、自分で NXT USB driver を
PC にインストールする必要があります。


http://mindstorms.lego.com/Support/Updates/

から、MINDSTORMS NXT Driver v1.02 (現時点の最新)をダウンロードし、
解凍してインストールします。


■ 3. leJOS を PC にインストールする

leJOS をつぎからダウンロードします。現在(2008-06-10)の最新は 0.6.
0 です。

Download NXJ

http://lejos.sourceforge.net/p_technologies/nxt/nxj/downloads.php


3.1 まず、PC にインストールします。インストールといっても、ダウ
ンロードした ZIP ファイルを解凍するだけです。ただし、解凍先のフ
ォルダー名に空白文字(スペース)が入っていてはいけません。

ここでは例として C:/software に解凍することにします。すると、
C:/software/lejos_nxj
ができます。


3.2 つぎに、この解凍したフォルダーのパスをシステム環境変数
LEJOS_HOME とします。

LEJOS_HOME = C:/software/lejos_nxj


ついでに、環境変数 NXJ_HOME も、同様に指定したほうがいいでしょう。
NXJ_HOME = %LEJOS_HOME%
(2008-10-21 追記)


3.3 さらに、この解凍したフォルダーの中の bin フォルダーをシステ
ム環境変数 PATH に連結します。

PATH = %PATH%;%LEJOS_HOME%/bin


3.4 PC に leJOS がインストールされたことを確認します。新しくコマ
ンドプロンプトを開き、プロンプトから、次のコマンドを打ちます。こ
のコマンドの引数が指定されているのでエラーというメッセージが出ま
すが、下のような使い方のメッセージが表示されれば OK です。

------------------------------------------------------
> lejosdl
an error occurred: No classes specified
usage: nxj [options] class1[,class2,...]
-a,--all                        do not filter classes
-b,--bluetooth                  use bluetooth
-cp,--classpath <classpath>     classpath
-d,--address <address>          look for NXT with given address
-g,--debug                      Include debug monitor
-h,--help                       help
-n,--name <name>                look for named NXT
-o,--output <binary>            dump binary to file
-r,--run                        run program
-u,--usb                        use usb
-v,--verbose                    print class and signature information
-wo,--writeorder <write order>  write order (BE or LE)

------------------------------------------------------



3.5 leJOS NXT API ドキュメントを参照可能にする

%LEJOS_HOME%/docs/apidocs/index.html

をブラウザーのお気に入りにでも設定して、いつでも API を参照でき
るようにしてください。


■ 4. leJOS を NXT にインストールする

NXT のファームウェアを leJOS に変更します。

4.1 NXT と PC を USB ケーブルで接続し、NXT の電源を入れます。


4.2 NXT をリセットします。リセットは、USB ケーブルの入り口の近く
のブロックのジョイント部分の中を、ビンか何かとがっているものでさ
すことでリセットできます。
リセットボタンは4秒以上押し続けます。(2008-10-30 追記)
なお、リセットボタンの位置は、マニュアルを確認してください。


4.3 PC のコマンドプロンプトから次のコマンドを打ちます。

------------------------------------------------------
>lejosfirmdl
NXJ_HOME is C:/software/lejos_nxj
Checking VM C:/software/lejos_nxj/bin/lejos_nxt_rom.bin ... Size = 35216, max size = 81912
VM OK.
Checking Menu C:/software/lejos_nxj/bin/StartUpText.bin ... Size = 31592, max size = 81912
Menu OK.
NXT device in reset mode located and opened.
Starting VM flash procedure now...
VM flash complete.
Starting menu flash procedure now...
Menu flash complete.
New firmware started!
If battery level reads 0.0, remove and re-insert a battery

------------------------------------------------------



4.4 leJOS は、Libusb Filter Driver のインストールを要求してきま
すので、これをインストールします。
これは、%LEJOS_HOME%/3rdparty/lib にある
libusb-win32-filter-bin-0.1.12.1.exe
を使ってインストールします。


なお、Libusb Filter Driver は、WindowsVistaにはインストールできません。

(2008-10-21 追記)



NXT への leJOS のインストールが成功すると、NXT 画面が標準の画面
から leJOS の画面へと変わります。NXT の起動音も変わります。

なお、leJOS では、NXT 標準のファームウェアと違い、NXT ボタンの操
作が違います。
NXT を停止するボタンが使えないので、プログラムが暴走した場合は、
電池を抜いて止める必要があります。


□NXTのファームウェアに戻す

NXTソフトウェアを立ち上げておきます。
NXTのリセットボタンを4秒以上押し続け、画面が白くなったら次の操作をNXTソフトウェ
アで行います。
  [ツール]メニュー - [NXTファームウェアを更新] - [ダウンロード]ボタンをクリッ


(2008-10-30 追記)



■ 5. Eclipse を設定する

Eclipse で leJOS 用のアプリケーションを開発できるようにします。


5.1 Java プロジェクトを作成する

次の操作で、Java プロジェクトを作成します。

[ファイル]メニュー - [新規] - [プロジェクト] -
[Javaプロジェクト]を選択 - [次へ]

プロジェクト名は、[nxtsample] としておきます。


5.2 外部 JAR ファイルをプロジェクトに追加する

leJOS の classes.jar ファイルをこのプロジェクトのビルドパスに加
えます。

[nxtsample]で右クリック - [ビルドパス] - [外部アーカイブの追加]

で、ファイルの選択ウィザードが出ますので、そこで、
%LEJOS_HOME%/lib を開き、

classes.jar ファイル

を選択し、[開く] をクリックします。


5.3 Java コンパイラーのバージョンを設定する

コンパイラーのバージョンを 1.3 にします。

[nxtsample]で右クリック - [プロパティ] - [Javaコンパイラー]タグ

で、

[プロジェクト特定設定を使用可能にする]にチェック

し、

[コンパイラー準拠レベル] - [1.3]

にします。


5.4 外部ツールボタンに NXT へのダウンロードを設定する

外部ツールボタンをクリックすることで、現在編集中の Java のクラス
ファイルを NXT にダウンロードできるように設定します。


まず、プロジェクト中に、[bin] フォルダを作ります。

そして、

[実行] - [外部ツール] - [外部ツール] - [新規]ボタンをクリック

して、

[名前] - [leJOS Download]

にします。 [メイン]タグ で、

[ロケーション] を [C:/software/lejos_nxj/bin/lejosdl.bat]

[作業ディレクトリー] を [${project_loc}bin]

[引数] を [${java_type_name}]

にそれぞれ設定して、


[適用]ボタン - [閉じる]ボタン

で設定を終わります。


つぎに、[外部ツールで実行]ボタンにこの [leJOS Download] を追加し
ます。

[外部ツールで実行]ボタンのプルダウン - [お気に入りの編成] -
[追加]ボタン - [leJOS Download]を選択 - [OK]


5.5 Javadoc ロケーションを設定する

[nxtsample]で右クリック - [プロパティ] - [Javadoc ロケーション]
タグ

で、

[Javadoc ロケーション・パス] に
[file:/C:/software/lejos_nxj/docs/apidocs/]

を設定します。


■ 6. アプリケーションを作り、動作確認する

nxtsample プロジェクトで、Java のアプリケーションをつくり、NXT
にダウンロードして動かしてみます。


6.1 HelloWorld アプリケーションを作る

nxtsample プロジェクトのデフォルトパッケージに、[HelloWorld] ク
ラスを新規作成します。

次のコードを入力します。

------------------------------------------------------
import lejos.nxt.LCD;

/**
* NXT 画面に "Hello World!" を 5 秒間表示するプリケーション。
*
* @author marunomaruno
* @version 1.0, 2008/06/04
* @since 1.0
*/
public class HelloWorld {

/**
* @param args
*/
public static void main(String[] args) {
LCD.drawString("Hello World!", 2, 3);
LCD.refresh();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
}
}

------------------------------------------------------


なお、このアプリケーションの説明は次回行います。


6.2 NXT にダウンロードして実行

コンパイルエラーがなくなったら、NXT と PC の間を USB ケーブルで
つなぎ、NXT の電源を入れます。

[外部ツールで実行]ボタン - [外部ツール] で、[leJOS Download] を
選択し、[実行]ボタンをクリックしてダウンロードを実行します。

Eclipse のコンソールに次のようなメッセージが表示されます。
------------------------------------------------------
leJOS NXJ> Linking...
leJOS NXJ> Uploading...
Found nxt name NXT address 00165304DE4E
leJOS NXJ> Upload successful in 187 milliseconds
------------------------------------------------------


そして、NXT 画面に "Hello World!" と 5 秒間表示されるはずです。

表示されたら、leJOS の音がして、アプリケーションは終了します。


これで、無事に leJOS を使って、NXT で Java プログラム を動かすこ
とができましたね。


6.3 注意点

クラスを作るとき、注意点がいくつかあります。


・クラス名は 16 バイト以内とする

これは、ダウンロードするときにそのファイル名が 20 バイト以内とい
う制限があるからです。そして、ダウンロードするバイトコードのファ
イルの拡張子は [.nxj] で、4 バイト分使うので、クラス名は 16 バイ
ト以内でないといけません。


・パッケージを作らない

上の制限と関連しますが、ダウンロードするファイル名は完全修飾名な
ので、パッケージにしているとすぐにその制限を越えます。


・パッケージを作っても、ダウンロードするときに、実行ファイル名を指定すれば大丈夫です。

---
> nxj -u -o 実行ファイル名 完全修飾クラス名
---(2010-03-17 追記)


・実行ファイル名(クラス名)は12文字以内にした方がよい

leJOS で実行ファイルをデフォルトに設定する際に、[Set as Default] で使えるクラス名は 12 バイトまでのようです。これよりそれより長いクラス名は、デフォルトのプログラムに指定できません。指定しても「Filename to big」とでます。(2011-09-15 追記)


△ NXC との違い
---
NXC ではダウンロードできるファイル名は 20 文字だった。(★)
---


以上