iCommand APIの主要なクラス

今日は、Javaプログラムから、Bluetooth経由で、LEGO Mindstorms NXTを遠隔操作できるiCommand API*1の主要なクラス群についてまとめようと思います。

以前にも書いていますが、iCommand APIは、Bluetooth経由で、PCから「コマンド」と呼ばれるものを送信することで、LEGO Mindstorms NXTを遠隔操作するので、leJOSみたいにマイコンにプログラムをダウンロードするという用途には使えません。

iCommand APIのjaodocは以下のURLにあります。

http://lejos.sourceforge.net/icommandapi/

iCommand APIのパッケージ群

  • icommand.nxtcommBluetoothを使った通信に関するクラスがあるパッケージ。
  • icommand.platform.nxt: バッテリ、モータ、センサなどロボットを制御するために必要になる基本的なクラスがあるパッケージ。
  • icommand.robotics:ナビゲーションなど、応用的なロボット制御のためのクラスがあるパッケージ。
  • icommand.visionLEGO Mindstorms用のカメラ「Vision Command」を制御するためのクラスがあるパッケージ。

この中で最も使うのが、icommand.roboticsパッケージでしょう。あと、iCommand APIを使うからには、icommand.nxtcommも活用したいとこです。

icommand.robotics:のナビゲーションなどは、便利そうですが、今回は保留で。使い方を調べておきます。icommand.visionに関しては、使い方がよく分からないので、今回は保留します。

ということで、icommand.roboticsパッケージと、icommand.nxtcommについて。

icommand.roboticsパッケージ

  • Batteryクラス

NXTについているバッテリのクラスです。現在の電圧を取得できます。

コンパス(ロボット工学の用語?)というやつを使うためのクラスです。現在、タイヤの回転角などを調べることができるので、精密な制御ができます。通常、モータを制御する場合、モータを回転する時間を指定するので、90度ぴったり回転するなどの制御が難しいわけですが、コンパスを使えると、もっと厳密に制御できます。

  • FileSystemクラス

NXT上のファイルシステムのクラスです。PCとNXT間のファイルのダウンロード/アップロード、現在のプログラム名の取得、プログラムの実行などなど、ファイルシステムの機能が使えます。

どのような制約があるかは、調査できていません。

  • I2CSensorクラス

I2Cセンサへのアクセスを簡単にするためのラッパクラスだそうです。えーと、そもそもI2Cって何なのか?なんでアクセスを簡単にする必要があるのか、分かりません^^; どなたか簡単に教えてください。

  • Lightクラス

ライトセンサのクラスです。ライトセンサの値を取得できます。そのまんま。

  • Motorクラス

モータのクラスです。モータを前後に回転させて、ロボット移動させたりできます。

どうやら、モータの回転数の単位があって、XXXだけ回転させる、みたいな使い方ができるようです。この単位がどういうものかは、要調査です。

  • NXTクラス

NXTを表すクラス?ファームウェアのバージョンを調べたり、プロトコルのバージョンを調べたりできるそうですが、、通常は使わないでしょう。

  • Sensorクラス

各種センサのスーパークラスです。値を取得する、など共通メソッドが定義されています。

  • Sound

音センサのクラスです。周囲の音の大きさを取得できます。音に反応するロボットのプログラムを作る際に使えますね。

  • Speakerクラス

音を鳴らすためのクラスです。周波数、長さを指定して音を出すこともできますし、音楽ファイルを再生することもできるそうです。
ファイルはどの形式が使えるのかは、まだよく分かりません。

  • SyncMotorsクラス

2つのモータを同期させるクラスです。コンストラクタで、モータクラスのオブジェクトを2つ指定して、使い方は普通のモータクラスと同じです。

  • Touchクラス

タッチセンサのクラスです。タッチセンサが押されているかどうか感知できます。基本中の基本です。

  • Ultrasonicクラス

超音波センサのクラスです。具体的な使い方はよく分かっていません。今後、要調査です。

icommand.nxtcommパッケージ

ちと、疲れてきたので、通信関係はまた今度ということで^^;

*1:RCX用のJava APIであるleJOSと同じグループが開発している