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

ROSを利用したドローンの制御について(AR.Drone編)

第5回目となります今回は、ROSを利用したドローン(AR.Drone)の制御方法について、紹介したいと思います。

はじめに

こんにちは。NTTソフトウェアの安井です。
2016年になりました。みなさま、年末年始はゆっくり過ごせましたでしょうか。私は、ゆっくりしてはいけないと思われる中、ついついゆっくりしすぎてしまいました。年初からブログを書くことで、仕事の勘を取り戻していきたいと思います(笑)。今年もよろしくお願いします。
さて、第5回目となります今回は、ROSを利用したドローンの制御方法について、紹介したいと思います。

AR.Drone用ROSデバイスドライバについて

AR.Drone 用のROSデバイスドライバとして、 ardrone_autonomy が提供されております。

こちらのデバイスドライバを利用することで、ROSを利用したAR.Droneの制御が可能となっています。

ドライバ名 概要 対応機種
ardrone_autonomy

AR.Droneに装備されたカメラより映像ストリームおよび情報の取得が可能。

メッセージの送受信をリレーする。
AR.Drone 1.0/2.0

ROSを利用した制御

動作確認は、Ubuntu 14.04 で行いました。
AR.Drone用のSDKは、Ubuntu 14.04 でコンパイルエラーが発生してしまいましたが、デバイスドライバのインストールは正常に完了できました。
ドローンへの接続は、SDKやNode(nodejs)で制御したときと同様に、ssid が、ardrone-xxxxx という名前のドローンを親機としたWiFi接続になっています。

動作環境確認

デバイスドライバである ardrone_autonomy のインストール前に、ROSのインストールと、環境設定ワークスペースの作成が必要となりますので、リンクを参考に実施しておきます。
ROSのインストールは、パッケージ類のダウンロードサイズが1GB程度ありますので、回線が遅い場合や、スペックの低いマシンでは、少し時間がかかってしまうため、お気をつけください。
インストール、設定が完了しましたら、ardrone_autonomy のインストールを行います。

$ cd ~/catkin_ws/src/
$ git clone https://github.com/AutonomyLab/ardrone_autonomy.git -b indigo-devel
$ cd ../
$ rosdep install --from-paths src -i
$ catkin_make

これで、インストールが完了です。簡単です。
次に、動作確認を行います。
動作確認用として、コンソールを3つ利用するので、terminal を3起動して確認します。

1つめの terminal で、Node や Topic を管理する roscore を起動します。

/* terminal 1 */
$ cd ~/catkin_ws/src/
// path を通す
$ source devel/setup.bash
// roscore を起動する
$ roscore

2つめの terminal で、ardrone_autnomy を起動します。
起動すると、ドローンとの接続が確立し、バッテリー残量やドローンの情報がコンソール上に表示されます。

/* terminal 2 */
$ cd ~/catkin_ws/src/
// path を通す
$ source devel/setup.bash
// ardrone_autnomy を起動する
$ rosrun ardrone_autonomy ardrone_driver

3つめの terminal で、Topic に Publish することで、離陸と着陸が行えます。

/* terminal 3 */
$ cd ~/catkin_ws/src/
// path を通す
$ source devel/setup.bash
// /ardrone/takeoff に Publish することで離陸
$ rostopic pub /ardrone/takeoff std_msgs/Empty
// /ardrone/land に Publish することで着陸
$ rostopic pub /ardrone/land std_msgs/Empty

また、ドローンには、LEDランプも搭載されており、ROSのサービス型モデルを用いて制御することができるようになっています。
サービスの名前は、/ardrone/setledanimation となっており、3つのパラメータを付与してサービスを呼ぶ形になります。1つの目のパラメータが色のタイプ、2つ目のパラメータがアニメーションのHz、3つ目のパラーメータがアニメーションの時間です。

/* terminal 3 */
// green : 緑色で1秒毎に2秒間点滅
$ rosservice call /ardrone/setledanimation 1 1 2
// red : 赤色で1秒毎に2秒間点滅
$ rosservice call /ardrone/setledanimation 2 1 2
// orange : オレンジ色で1秒毎に2秒間点滅
$ rosservice call /ardrone/setledanimation 3 1 2

暗い部屋で試してみたのですが、キレイですね!
本来の特徴である飛行とは関係なくなってしまいましたが、うまく組み合わせて空中の動くイルミネーションなどできるとおもしろいかもしれません。

その他、ardrone 用の Topic を調べてみると、以下のとおり、様々な Topic が用意されておりました。

/* terminal 3 */
$ rostopic list
/ardrone/bottom/camera_info
/ardrone/bottom/image_raw
/ardrone/bottom/image_raw/compressed
/ardrone/bottom/image_raw/compressed/parameter_descriptions
/ardrone/bottom/image_raw/compressed/parameter_updates
/ardrone/bottom/image_raw/compressedDepth
/ardrone/bottom/image_raw/compressedDepth/parameter_descriptions
/ardrone/bottom/image_raw/compressedDepth/parameter_updates
/ardrone/bottom/image_raw/theora
/ardrone/bottom/image_raw/theora/parameter_descriptions
/ardrone/bottom/image_raw/theora/parameter_updates
/ardrone/camera_info
/ardrone/front/camera_info
/ardrone/front/image_raw
/ardrone/front/image_raw/compressed
/ardrone/front/image_raw/compressed/parameter_descriptions
/ardrone/front/image_raw/compressed/parameter_updates
/ardrone/front/image_raw/compressedDepth
/ardrone/front/image_raw/compressedDepth/parameter_descriptions
/ardrone/front/image_raw/compressedDepth/parameter_updates
/ardrone/front/image_raw/theora
/ardrone/front/image_raw/theora/parameter_descriptions
/ardrone/front/image_raw/theora/parameter_updates
/ardrone/image_raw
/ardrone/image_raw/compressed
/ardrone/image_raw/compressed/parameter_descriptions
/ardrone/image_raw/compressed/parameter_updates
/ardrone/image_raw/compressedDepth
/ardrone/image_raw/compressedDepth/parameter_descriptions
/ardrone/image_raw/compressedDepth/parameter_updates
/ardrone/image_raw/theora
/ardrone/image_raw/theora/parameter_descriptions
/ardrone/image_raw/theora/parameter_updates
/ardrone/imu
/ardrone/land
/ardrone/mag
/ardrone/navdata
/ardrone/odometry
/ardrone/reset
/ardrone/takeoff

AR.Drone には、フロントと機体の下にカメラが搭載されているのですが、/ardrone/front や /ardrone/bottom の Topic を利用して制御できるようになっています。
ardrone_autonomy のサイト に詳細が記載されていますので、こちらを調査しつつ、カメラの制御も今後試していきたいと思っています。

おわりに

2015年は、「ドローン」が非常に注目された年になったかと思います。今年は、ドローンビジネスが更に加速する年になると思いますが、都内はすでに規制によってドローンの飛行区域がほぼない状態になっており、法規制が技術の発展の妨げにならないか、も注目される年になるのではないかと思います。
私も、ドローンビジネスの立ち上げに向けて、今年は?!も?!取り組んで行きたいと思っております。
次回は、Bebop Droneについても、ROSを利用した制御方法について紹介したいと思います。次回もご購読いただけると幸いです。

著者プロフィール
安井 政人
安井 政人
新しい技術や、スキルの習得を好み、幅広い分野に柔軟に対応できるオールマイティなシステムエンジニア。 最近ではドローンやロボットの技術に注目し、業務を通じてNTTテクノクロスのドローン先駆者になるべく、絶賛奮闘中。 プライベートでは三姉妹のパパ。家の中は男一人で少し肩身が狭いですが、逆境にも負けず子育ても頑張っています!!