AR.Drone(ARDroneForP5 )を試してみました


AR.Drone

AR.Drone を Mac から操作してみたくていろいろ調べていたところ、ARDroneForP5 という Processing で AR.Drone の API をラップしたライブラリが見つかったのでさっそく試してみました。

さすが Processing だけあって、コードはシンプル。
下記の サンプルコードを見ていただくと分かるのですが、なんと AR.Drone が Processing のお約束である setup, draw と、操作するためのキープレスだけで動きます!

import com.shigeodayo.ardrone.manager.*;
import com.shigeodayo.ardrone.navdata.*;
import com.shigeodayo.ardrone.utils.*;
import com.shigeodayo.ardrone.processing.*;
import com.shigeodayo.ardrone.command.*;
import com.shigeodayo.ardrone.*;

ARDroneForP5 ardrone;

void setup(){
  size(320, 240);
  
  ardrone=new ARDroneForP5("192.168.1.1");
  ardrone.connect();
  ardrone.connectNav();
  ardrone.connectVideo();
  ardrone.start();
}

void draw(){
  background(204);  

  PImage img=ardrone.getVideoImage(false);
  if(img==null)
    return;
  image(img, 0, 0);

  float pitch=ardrone.getPitch();
  float roll=ardrone.getRoll();
  float yaw=ardrone.getYaw();
  float altitude=ardrone.getAltitude();
  float[] velocity=ardrone.getVelocity();
  int battery=ardrone.getBatteryPercentage();
  
  String attitude="pitch:"+pitch+"\nroll:"+roll+"\nyaw:"+yaw+"\naltitude:"+altitude;
  text(attitude, 20, 85);
  String vel="vx:"+velocity[0]+"\nvy:"+velocity[1];
  text(vel, 20, 140);
  String bat="battery:"+battery+" %";
  text(bat, 20, 170);
}

void keyPressed(){
  if(key==CODED){
    if(keyCode==UP){
      ardrone.forward();
    }else if(keyCode==DOWN){
      ardrone.backward();
    }else if(keyCode==LEFT){
      ardrone.goLeft();
    }else if(keyCode==RIGHT){
      ardrone.goRight();
    }else if(keyCode==SHIFT){
      ardrone.takeOff();
    }else if(keyCode==CONTROL){
      ardrone.landing();
    }
  }else{
    if(key=='s'){
      ardrone.stop();
    }else if(key=='r'){
     ardrone.spinRight();
    }else if(key=='l'){
      ardrone.spinLeft();
    }else if(key=='u'){
      ardrone.up();
    }else if(key=='d'){
      ardrone.down();
    }else if(key=='1'){
      ardrone.setHorizontalCamera();
    }else if(key=='2'){
      ardrone.setHorizontalCameraWithVertical();
    }else if(key=='3'){
      ardrone.setVerticalCamera();
    }else if(key=='4'){
      ardrone.setVerticalCameraWithHorizontal();
    }else if(key=='5'){
      ardrone.toggleCamera();
    }
  }
}

これだけお手軽に AR.Drone が Processing で動くと、なんかいろいろできそうで夢が広がりますね。

というわけで…
自宅の仕事部屋で撮影したため狭すぎてほとんど飛んでいませんが、一応飛んでいる映像を貼っておきます。
 

 
今回は Processing + Mac で試してみましたが、次はネイティブの SDK に挑戦して、iPhone でデモアプリを作ってみたいと思います。