調べた限り、AR.Drone2.0にも対応しているライブラリではjavadroneが良さそう。New BSDライセンス。
Java用APIとAndroidでAR.Droneを動かすサンプルが入っている。
動かすためには以下のものをインストールして
- Apache Maven (http://maven.apache.org/)
- EClips用プラグイン:m2eclipse (http://eclipse.org/m2e/)
- Android SDK (http://developer.android.com/sdk/index.html)
- Eclipse用プラグイン:eclipse-adt (http://developer.android.com/tools/sdk/eclipse-adt.html)
後は、
mvn install
mvn eclipse:eclipse
をし、Eclipse用プロジェクトファイルを作成。
Eclipseで生成したProjectを開き、ControlTowerクラスを実行するとサンプルプログラムが動く。
この時、ビルド用にM2_REPO=~/.m2/repository
とパスを設定する必要がある。
参考: https://code.google.com/p/javadrone/wiki/BuildInstructions
OpenCVとともに使う
まずはOpenCVをインストールして、それをJava用にWrapしてくれているJavaCVを使う。
- OpenCV (http://opencv.willowgarage.com/wiki/)
- JavaCV (http://code.google.com/p/javacv/)
ちなみにJavaCVはOpenCVだけでなく、FFmpeg, libdc1394, PGR FlyCapture, OpenKinect, videoInput, ARToolKitPlusのラップもしてくれるので、これらを使いたい人は各ライブラリをインストールした状態であればJavaから使えるようになる。
参考:FaceDetectionして、顔を追わせるサンプル
補足:何でJava?
まず、C++のSDKそのままは使うの苦労しすぎる。
SDKを少し使いやすくしたC++用ライブラリも複数あるのだが、Visual C++を前提にしていてMacでどうするよ?となったり、makeしてもインストール出来なく、ユーザーも少ないせいで簡単には解決法が見つからないということが起きる。
ちょっと飛ばすだけなら、Processing(ARDroneForP5)が簡単だが、ProcessingはOpenCVのラッパが基本的な部分だけしかラップされてないのでOpenCV連携がきつい。
Python(python-ardrone)もホントに飛ばすことしか出来ない。しかも依存しているライブラリが結構古く、pipなどで入らなくてめんどくさい。
などなど色々試しているうちにJavaに落ち着いた。特に、複数人で開発するなら、皆がある程度の労力で動かせるところまで持ってけるっていうのはとても大切だと思う。