ROSを利用したドローンの制御について(AR.Drone編)
第5回目となります今回は、ROSを利用したドローン(AR.Drone)の制御方法について、紹介したいと思います。
安井政人のめざせ!ROSマスター! 第5回
- 2016年01月06日公開
はじめに
こんにちは。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テクノクロスのドローン先駆者になるべく、絶賛奮闘中。 プライベートでは三姉妹のパパ。家の中は男一人で少し肩身が狭いですが、逆境にも負けず子育ても頑張っています!!