情報畑でつかまえてロゴ
本サイトは NTTテクノロスが旬の IT をキーワードに
IT 部門が今知っておきたい最新テクノロジーに関する情報をお届けするサイトです

安井政人のめざせ!ROSマスター! 第3回

ドローンの制御について(AR.Drone編)

第3回目となります今回は、ドローン(AR.Drone)の制御方法について、紹介したいと思います。SDKによるドローン状態の取得、Nodeによるドローンの操作を行った実例を記します。

はじめに

こんにちは。NTTソフトウェアの安井です。第3回目となります今回は、ドローンの制御方法について、紹介したいと思います。

ドローンについて

私が普段利用しているドローンは、Parrot社 AR.Drone 2.0 と、Parrot社 Bebop Drone の2機種を利用しています。
今回は、AR.Drone 2.0 をターゲットにご紹介していきます。
まずは、簡単な製品概要です。

Parrot社 AR.Drone 2.0


Parrot社 AR.Drone 2.0
  • CPU: 1GHz ARM cortex A8(ARMv7 Processor rev2)
  • Memory: DDR SDRAM 128MB
  • Storage: NAND Flash memory 128MB
  • OS: Linux(linux uclibc 2.6.32-9-g980dab2)
  • WiFi: Wi-Fi /g/n
  • Camera: HD Camera 1280x720

ドローンへの接続は、ドローンを親機としたWiFi接続が基本となります。
ssid は、ardrone-xxxxx という名前が設定されており、ドローンのデフォルトIPは、192.168.1.1 となっています。

動作環境確認

SDKでの制御

Parrot社のProductページ から、「FullDocumentation」の下の「Doc」ボタンを押して、SDKをダウンロードします。

動作確認は、Ubuntu 12.04で行います。
(※Ubuntu 14.04 でも実施してみましたが、コンパイルエラーが発生しました。)
ダウンロードしたファイルを、解凍した後、
$ cd ARDrone_SDK_2_0_1/Examples/Linux/
$ make
これだけで、サンプルの動作確認が行えます。
$ cd Build/Release/
サンプルの実行ファイルはここに配置されます。


$ ./linux_sdk_demo
ドローンの状態(バッテリー残量など)が標準出力で確認できます。
$ ./ardrone_navigation

カメラ映像の確認や、ドローン制御用のキー設定(キーボード、JoyStickなど)をGUIで行うことができます。

GUI

サンプルは、基本的にカメラ映像の取得やドローンの状態を取得するといったことができるようになっており、実際にドローンに飛行命令を送るためには、外部コントローラが必要であったため、飛行命令については、リモートでコマンドを簡単に送信して制御できるNodeを利用した制御で試してみました。

Nodeでの制御

Node(nodejs)での制御は、OSSの2つのパッケージをそれぞれ利用して確認しました。

1. ar-drone
$ npm install ar-drone
これでインストール完了です。 npm がインストールされていない場合は、インストールしてください。
$ sudo apt-get install npm

READMEに従い、サンプルプログラムを書きます。
$ vi sample.js
var arDrone = require('ar-drone');
var client  = arDrone.createClient();
client.createRepl();

作成したNodeプログラムを実行し、コマンドを入力することで、離陸と着陸の制御を確認することができます。
$ node sample.js
drone> takeoff()
drone> land()
※スペルミスや括弧の付け忘れでは、動作しないので、注意が必要です。
takeoff()は、プロペラの回転がスタートし、回転数が上がってきた時点で50cmほど上昇する動きになります。
land() は、プロペラがストップする動きになっています。
takeoff()直後にland()を実行すれば、プロペラが少し回転するのみで、停止します。


2. ardrone-webflight
$ git clone https://github.com/eschnou/ardrone-webflight.git
$ cd ardrone-webflight
$ npm install
$ bower install
//bower をインストールしていない場合はインストールしてください。
$ sudo npm install bower -g
用意されたNodeプログラムを実行します。
$ node app.js
ブラウザで、アプリの画面にアクセスします。
http://localhost:3000

フライト画面がブラウザ上に表示され、キーボードの「t」(離陸)と「l」(着陸)で制御を確認することができます。
ar-drone と同様に、
「t」は、プロペラの回転がスタートし、回転数が上がってきた時点で50cmほど上昇する動きになります。
「l」は、プロペラがストップする動きになっています。
「t」直後に「l」を入力すれば、プロペラが少し回転するのみで、停止します。

停止

実際に、離陸させたときの画像です。

離陸

離陸する前は、画像中央部分の床に置いていたのですが、離陸させた時点で右へ移動しました。自身のプロペラの風や、空調の風の影響を受けるのが特徴になっています。屋内で飛ばす際は、注意が必要になってきます。

ということで、SDKによるドローン状態の取得、Nodeによるドローンの操作を行いました。 これらを組み合わせることで、バッテリー状態を管理して残量が減って来た場合は、自動で着陸する、といったことも可能になると思うので、制御用のサンプルを作っていきたいと考えています。

おわりに

今回はAR.Droneの制御方法について紹介しました。次回は、Bebop Droneの制御方法について紹介したいと思います。ROSでの制御については、もう少し先でご紹介いたします。次回もご購読いただけると幸いです。

著者プロフィール
安井 政人

ビジネスソリューション事業部第二カンパニー(B2CP)

安井 政人