ETロボコン参戦記(4) YamazakiがJavaでHelloWorld
Javaで参戦することにした。よって、Javaの開発環境を整える。
・・・といっても、古いバージョンで既に設定してあったのを、新しいバージョンで設定しなおしたのでまとめただけである。今回インストールしたバージョンでは、インストーラーが用意されていてかなり設定が簡単だった。前はもっと手間がかかったのに。
JavaでYamazakiを動かすには、インテリジェントブロックNXTに、Javaの実行環境を設定する必要がある。そこで、leJOSの登場だ。leJOSは、レゴマインドストームのRCXとNXTロボットにJavaのプログラミング環境を提供してくれる。
参考にしたのは、LeJOS, Java for Lego Mindstormsというサイト。ここからleJOSをダウンロードしたり、設定方法を確認したりした。参考にしたのは、同サイトのGetting Started on Microsoft Windowsというページだ。
■leJOSを入れる前の準備
1.LEGO Mindstorms softwareのインストール(USBドライバのインストール)
Mindstormsに付属のLEGO Mindstorms softwareのUSBドライバをleJOSでも使用しているため、このソフトをインストールする。付属のソフトを使わない場合は、同ページでドライバ入手先を紹介しているのでそこを参照すると良いかも。
2.leJOSのダウンロード
参考サイトのダウンロードページからleJOSをダウンロードしておく。ダウンロードしたファイルは、leJOS_NXJ_0.7-Setup.exe だ。前回はzipバージョンで設定してたので、今回はインストーラーを使ってみる。
3.Java SDKのインストール
今回利用するleJOSのバージョンは、JDK1.5又は1.6で動作確認済みとのこと。今回は、マシンに既にインストールされていた jdk1.6.0_03 を使用。
4.leJOSのインストール
ダウンロードしたインストーラー(leJOS_NXJ_0.7-Setup.exe)を実行する。実行手順は同ページを参照。インストール中の画像もたくさん貼ってあるしわかりやすい。
▼インストーラーを使った場合のデフォルト設定は以下の通り。
| Install Directory | C:\Program Files\leJOS NXJ |
|---|---|
| Projects Directory | < %Home%>\leJOSNXJProjects |
※長いパスが嫌だったので、今回はProjects Directoryだけ変更した。
インストールが終了すると、続けてNXTのファーウェアを書き換える画面がでてくる。いつインストールが完了したのかがわかりづらいので、念のため、インストール終了画面の画像をペタリと貼ってみる。続くファームウェアの書き換えについては次を参照。
インストール終了画面
5.ファーウェアを書き換え
4.の続きだが、インストール終了画面の「Finish」ボタンを押すと、以下のようなファームウェアを書き換える画面が出てくる。
ファームウェアの書き換え画面
ここでファームウェアの書き換えをするには、NXTを初期化モードにしてPCとつなげておくとよい。NXTを初期化モードにする手順は以下の通り。
▼NXTの初期化モード
①インテリジェントブロックNXTを裏返しにする。
②左上の穴の中にリセットボタンがあるのでこれを長めに押す。
リセットボタンを押す
初期化モードにできたら、ファームウェア書き換え画面の「Start program」ボタンを押す。(中途半端に日本語化されたメッセージがでてくるのは、わしのマシンだけか・・・?)画面については以下を参照。
この画面は「了解」を押した
これは「はい」を押した
これは「いいえ」を押した
ファームウェアの書き換えが終われば、NXTからチャララランって音がして、leJOSが起動するのが確認できる。leJOSの起動画面はこんなかんじ。
leJOSの起動画面
これで設定は終わりだ。インストーラーを使った場合は、環境変数の設定が自動的に行われている。
▼追加されている環境変数(ユーザー環境変数)は以下の通り。
| 変数名 | NXJ_HOME |
|---|---|
| 値 | C:\Program Files\leJOS NXJ (※これはleJOSのInstall Directory) |
■実行方法(Eclipse)
エディタを使ってコードを書き、コマンドプロンプトでコンパイルしていたのだが、巷ではEclipseが人気らしい。ということで、外部ツールを使う機能をEclipseに設定した。Eclipseを使う人であればなんのことはない設定だが、覚書的に書いておく。
1.コマンドの紹介
leJOSのInstall Directory(以下、%NXJ_HOME%で表示)の下にあるbinディレクトリにはコンパイラや実行(NXTへの転送含む)用のバッチがある。
▼よく使うものは以下の通り
| nxjc.bat | コンパイラ(.javaファイルから.classファイルが生成される) |
|---|---|
| nxj.bat | 実行ファイルの生成と転送(.nxjが生成され、NXTへ転送される) |
| nxjflash.bat | ファームウェアの書き換え(インストール時にファームウェアを書き換えていればすぐ使うことはないかも) |
2.Eclipseの設定~実行まで
今回使用したのは3.3.1.1のバージョン。これまた、もともとマシンにはいっていたものを使う。日本語化しないで使っているので、以下の説明にある項目の日本語訳はちょっとインチキかもしれない。(一応、古いバージョンのものを参考にはしている)
- Javaのプロジェクトを作成する
- 作成したプロジェクトのプロパティで、ビルドパスを設定する
- 作成したプロジェクトのプロパティを開く
- 「Javaのビルド・パス」を選択し、「ライブラリー」タブを開く
- 「外部JARの追加」ボタンを押して、%NXT_HOME%\libのjarファイルを追加する
- プログラム(HelloWorld)を書いて保存する。ソースコードは後述。
- コンパイルする為の外部ツールの設定をする
- メニューバーの「実行」から「外部ツール」を選択し、さらに出てきたメニューの「外部ツール」を選択する
- 左メニューの「プログラム」をWクリックし、でてきた新規構成画面で名前をつける(名前は任意。この例ではnxjcとつける)
- 同画面のメインタブの「ロケーション」欄で「ファイルシステムの参照」ボタンを押し、%NXT_HOME%\lib\nxjc.bat を選択して設定する
- 同画面、同タブの「作業ディレクトリ」欄で「ワークスペースの参照」ボタンを押し、作業ディレクトリを選択して設定する
- 同画面、同タブで「引数」欄で「変数」ボタンを押し、 java_type_name を選択して「OK」ボタンを押す。引数欄に ${java_type_name} と表示されるので、編集して ${java_type_name}.java にする。
- 以上の設定が終わったら「適用」ボタンを押して画面を閉じる
- 外部ツールの設定をお気に入りに入れておく
- メニューバーの「実行」から「外部ツール」を選択し、さらに出てきたメニューの「お気に入りの編成」を選択する
- でてきた画面で「追加」ボタンを押し、追加した外部ツール設定を選択して「OK」ボタンを押す
- 上記の設定ができたら、お気に入りの編成画面も「OK」ボタンで閉じる
- 設定した外部ツールでソースコードをコンパイルする
- 正常にコンパイルされれば、コンソールには何も表示されない
- コンパイルできたか心配な人は、.classファイルが生成されているか確認するのもよし
- 実行ファイルをNXJへ転送する為の外部ツールの設定をする
- メニューバーの「実行」から「外部ツール」を選択し、さらに出てきたメニューの「外部ツール」を選択する
- 左メニューの「プログラム」をWクリックし、でてきた新規構成画面で名前をつける(名前は任意。この例ではnxjとつける)
- 同画面のメインタブの「ロケーション」欄で「ファイルシステムの参照」ボタンを押し、%NXT_HOME%\lib\nxj.bat を選択して設定する
- 同画面、同タブの「作業ディレクトリ」欄で「ワークスペースの参照」ボタンを押し、作業ディレクトリを選択して設定する
- 同画面、同タブで「引数」欄で「変数」ボタンを押し、 java_type_name を選択して「OK」ボタンを押す。引数欄に ${java_type_name} と表示される。これはそのままでOK。
- 以上の設定が終わったら「適用」ボタンを押して画面を閉じる
- お気に入りに追加しておくと便利
- 設定した外部ツールで実行ファイルをNXJへ転送する
- 転送する前に、NXTを起動して、PCとNXTをUSBでつないでおく
- 転送が無事に完了すれば、チャララランと音がするのでわかる
- NXJで実行すると「Hello World」と表示される
▼ソースコード(HelloWorld.java)
※コードは参考ページのしたーのほうに掲載されているものを使用
import lejos.nxt.*; public class HelloWorld { public static void main (String[] args) { System.out.println("Hello World"); Button.waitForPress(); } }
■HelloWorldの先
こうしてYamazakiは新しい環境で挨拶をしてくれたわけだが、まだまだYamazakiがゆらゆらと立ち上がってくれるのは先のようだ。
紹介はまだだが、一応Yamazakiは無事にトランスフォームした。(ちょっと内蔵が飛びだしているような配線なので、写真はまた今度。)それに、現在ツナ缶が倒立振子制御APIのJava化をしている最中だ。メンバであるトマトもYamazkaiプログラムのデビューをしたし、これからである
■参考リンク
このサイトについて
TrackBack URL :
