MacからleJOS NXJを使ってNXTでJavaを走らせる
ハマったことはウェブに発信せよ
昨年に引き続き,ETロボコンへ出場することになったので環境構築.
大会は昨年までRCXを使っていたけど,今年からNXTが導入されることになったので新たに.
もうThinkpadでCygwinを走らせるのが面倒なので,常用しているMacBookAirでの構築を試みたがハマりまくってしまったのでメモ.
NXTは世界中で使われているけど,国内ではMacから利用しようとする人はあまり居ないようだ.
USBからもBluetoothからもNXTをハンドル出来ないところで2日ハマったので,大人しく英語サイトを読むのが正解だった.読んでみると結構すんなり理解出来るもので,最近の英語に対する努力が実を結びつつあるのかな.
ハマっていた原因はleJOSのバージョン.
NOTE: What follows should work for 0.8. Could any Mac users that have switched to 0.8 please confirm?
Mac users Please help us.... - leJOS
ということで,動作報告をしている人の多い0.7を使用したらうまくいった.
fantomが対応出来てないのかな.
僕の環境
[hmsk@] # java -version java version "1.5.0_16" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b06-284) Java HotSpot(TM) Client VM (build 1.5.0_16-133, mixed mode, sharing)
手順
1.LEGO公式のNXTのドライバとOSX用のファームfixを入れる
- Homes - Mindstorms LEGO.com
- MINDSTORMS NXT Driver v1.02
- Mac OS 10.5 (Leopard) Firmware Fix
インストール後再起動を忘れずに.自動で促されない.
2.leJOS NXJを落とす
- LeJOS, Java for Lego Mindstorms / NXJ Downloads
- Linux/Mac OSX leJOS NXJ
- バージョンは0.7 beta
3.leJOSを展開
- どこかのディレクトリにて
4.leJOSにパスを通す
- 僕の.zshrcだと
export PATH=~/utilities:/opt/local/bin:/opt/local/sbin:/opt/local/share:/usr/bin/ghc/bin:/usr/local/bin:/Applications/MAMP/Library/bin:/Users/hmsk/Codes/lejos_nxj:/Users/hmsk/Codes/lejos_nxj/bin:$PATH
- NXJ_HOMEも設定
NXJ_HOME=/Users/hmsk/Codes/lejos_nxj:$NXJ_HOME
ちゃんと再読み込みさせる.
% source ~/.zshrc
6.FantomDriverを入れる
ちゃんと把握していないのだけどNXTをlibusbから操作出来るようにするためだったはず.
- http://koyuru.com/lego/
- fantom_driver_0.7.zip
この中身のlibjfantom.jnilibをlibjfantom.dylibへ名前を変更し,lejos_nxjのbin/へ.
また同ディレクトリで
NXTCommUSB=lejos.pc.comm.NXTCommFantom
と書いたnxj.propertiesというファイルを作る.
ついでにこのディレクトリの中のものに全部実行権限を付加.
% chmod +x *
7.NXTへleJOSのファームを書き込む
USBケーブルをNXTと接続して,NXTの電源を入れた状態で,nxtflashを実行する.
[hmsk@] # nxjflash VM file: /Users/hmsk/Codes/lejos_nxj/bin/lejos_nxt_rom.bin Menu file: /Users/hmsk/Codes/lejos_nxj/bin/StartUpText.bin VM size: 48096 bytes. Menu size: 32527 bytes. Total image size 80655/81920 bytes. jfantom_find built from 1.5: nFANTOM100_createNXTIterator : -142017 Found nxt name %%NXT-SAMBA%% address 1 Connected to SAM-BA v1.4 NXT now open in firmware update mode. Unlocking pages. Writing memory image... Starting new image.
8.NXTへブラウジングを試みる
ファーム書き込み時同様,NXTと接続して電源を入れ,nxtbrowseを実行.
[hmsk@] # nxjbrowse -u 2009-06-11 19:29:57.344 java[904:c1b] Can't open input server /Library/InputManagers/MultiClutchInputManager.bundle jfantom_find built from 1.5: nFANTOM100_createNXTIterator : 0 nFANTOM100_iNXTIterator_getName : 0 Found nxt name NXT address 001653055DEF
このメッセージの後に,新たなウィンドウが表示され接続出来るNXTのリストを見る事ができる.
ここで接続したいNXTを選択してConnectとすれば,中に書き込まれた動作するバイナリの一覧を確認出来る.
ここから,deleteやrenameが可能.
ただ,なんだか重い.
ちなみにuオプションはusb.-bとすればbluetoothでの捕捉が可能.
leJOSのbluetoothのパスキーは"1234"となっている.OSXのbluetoothマネージャーで接続を確立しておけばok.
9.sampleのjavaをコンパイルして書き込んでNXTを動かしてみる
サンプルは
NXJ_HOME/projects/samples
に置いてあるので,試しにコンパイルをしてみる.
例えば,beep音でメロディを奏でるTune.
NXJ_HOME/projects/samples/Tune
にて
nxjc Tune.java
としてコンパイルしてnxjを使って書き込みを行う.
[hmsk@] # nxj Tune -u leJOS NXJ> Linking... leJOS NXJ> Uploading... jfantom_find built from 1.5: nFANTOM100_createNXTIterator : 0 nFANTOM100_iNXTIterator_getName : 0 Found nxt name NXT address 001653055DEF leJOS NXJ> Upload successful in 682 milliseconds
これで,NXTの
Files -> Tune.nxj
を選択すると,メロディが奏でられる.
ということで,やっと開発が始められる
ちなみにEclipseを使うつもりはない.Win環境で構築している人を真似してインストールをしたものの,このソフトの上でコードを書く気にはなれなさそう.やっぱりvimでなくちゃね.
参考
- leJOSフォーラムの該当の投稿
- Win環境
ご指摘,ご質問大歓迎です.