ロボットの通信用ライブラリ (DriveCommand) を公開!

ロボットの通信用ライブラリ (DriveCommand) を公開!

PILE Project では,プログラミング教育用の Android アプリケーションを開発しています。
このアプリケーションでは,LEGO MINDSTORMS NXT / EV3 や,PILE オリジナルのロボットが操作できるのですが,それらのロボットを操作するためのライブラリ DriveCommand を GitHub に公開しました!
GitHub: https://github.com/PileProject/drivecommand

現在対応するロボット一覧

現在サポートしているロボットは以下のとおりです
- LEGO MINDSTORMS NXT
- LEGO MINDSTORMS EV3
- PILE Original Robot
後述しますが,別のロボット (ドローン, etc) への対応も可能です!

DriveCommand の使い方

詳しくは GitHub 上の README.md をご覧いただけると嬉しいですが,Java で記述した汎用的なライブラリなので,Android 以外 (PC, etc.) での利用も可能です!
利用の際には,お持ちのデバイスのための通信クラスが必要となりますが,現在開発中の drive というレポジトリを参照いただくと,利用方法がわかりやすいかと思います!

サンプルコード

簡単なサンプルコードを示しておきます。これは,PILE が開発する Android アプリケーション drive ( https://github.com/PileProject/drive ) 上にある実際のコードですが,Java で書かれた汎用ライブラリなので,その他のデバイスでも利用可能です。
まず,ロボットを操作するために,machine オブジェクトを作成します。ここでは,LEGO MINDSTORMS NXT を操作するために,NxtMachine というクラスを利用しています。また,デバイスとの通信には Bluetooth を用いるために,BluetoothCommunicator というクラスを利用しています。

// preparation (create an BluetoothDevice with MAC address)
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
BluetoothDevice device = adapter.getRemoteDevice(address);

NxtMachine machine = new NxtMachine(new BluetoothCommunicator(device));

これで,machine オブジェクトが作成できたので,このロボットに接続しているモータやセンサのオブジェクトを作成します。オブジェクトの作成には,どこにそのモータ/センサが接続しているかを指定して作成します。オブジェクトを作成したら,そのオブジェクトを介して通信が行えます。

Motor left = machine.createMotor(NxtOutputPort.PORT_A);
left.forward();
left.stop();

LineSensor line = machine.createLineSensor(NxtInputPort.PORT_1);
int value = line.getSensorValue();

他のロボットへ拡張!

現在の DriveCommand では,3種類のロボットに対応していますが,同様の設計思想を用いて,ドローンなどのロボットを操作することができます。また,各 Machine を拡張して,車型や直立型用のクラスを用意して操作することも可能です。要望や Pull Request などお待ちしております!

ライセンス

現在は Apache License, Version 2.0 で配布しています。詳しくは,レポジトリ内の LICENSE ファイルを参照ください。

参考にしてくれた記事

記事が登録されていません。
この記事を参考にして、新しく記事を投稿しよう!

違反について