iCommandを試す [LEGO]
先日はBluetoothで手間取ったが、本格的に例の本のトレースを再開した。
leJOSの別プロジェクトにiCommandがある。これはBluetoothを使ってNXTをコントロールするPC側のAPIで、NXT本体は標準のNXTファームウエアを使う。
例によってこれも手こずる。結局Eclipseを使う場合、以下のような手順で実行までこぎ着けた。
(1) iCommandをダウンロードして解凍
(2) シリアル制御のJAVAライブラリRXTXをダウンロードして解凍
このとき、zipファイルの解凍に手こずった。2〜3の解凍ソフトを使ったがだめで、結局Macで解凍できた。原因不明。
(3) 解凍後のiCommandフォルダ内にあるicommand.propertiesを修正し
所定の場所におく
修正内容は以下の通り。
nxtcomm.type=rxtx
nxtcomm=COM5(コントロールパネル「Bluetoothデバイス」で確認しておく)
保存場所は、¥Documents and Settings¥<ログインユーザー名>
(4) EclipseでPC側の制御ソフトをコーディングする
(5) Eclipseの「プロジェクト」「プロパティー」「Javaのビルド・パス」で
以下の外部JARを2つ追加する
・icommand.jar
・RXTXcomm.jar
(6) RXTXcomm.jarのネイティブ・ライブラリ・ロケーションを、
rxtxSerial.dllのフォルダに設定する
このdllはRXTXを解凍したフォルダ内にある
(7) 実行時に、COMポートを設定するウインドウが出現したら、使用するCOMポートに
チェックしてsaveする
このウインドウをクローズするとプログラムが終了してしまう。最初は訳が分からなかった。Eclipseを立ち上げ直すなどしているうちに出なくなった。原因不明。
(8) 正しく動作すると「Enter commands」という1行分のウインドウがでてくるので、
ここでキーを入力する
といったところか。そしてBluetoothで制御される車型ロボット「MoonBuggy」を製作して動作させてみた。
この本のメカは今ひとつで、期待通りに動かない。前進後退と、ステアリングの左右ができるのだが、実際に走らせると重さや摩擦に負けてしまう。電池がへたってきてモーターにパワーがないことも原因だが、メカの方もかなり改善余地はある。
なお、記載されているJAVAプログラムに一点修正がある。
P169の50行目後半は、〜 Motor.B.getTachoCount()); が正しいと思う。オリジナルだとコンパイルエラーになってしまう。ちなみにiCommandのバージョンは0.7を使用。
コメント 0