ドローンコード

 

ドローンの可能性

ドローンで何ができるのだろうか?
次の TED の動画は、ドローンの可能性を教えてくれる。

https://www.ted.com/talks/raffaello_d_andrea_the_astounding_athletic_power_of_quadcopters

動画の中では、様々なアルゴリズムを用いて、次のようなことを実現している。

・ドローンの上に棒を固定せずに乗せて、バランスを取りながら移動
・ドローンの上に水の入ったグラスを乗せて、水をこぼさずに移動
・4つのプロペラのうち2つを破損させた状態で飛行 (障害時の墜落回避)
・人が投げた小さいボールをドローンが投げた人の方向へ打ち返す
・人が投げた小さいボールを3台のドローンが協力しながら網を操作してキャッチし、投げた人に返球する (群制御)
・Kinect を用いて、人の動作に反応して複数台のドローンを操作

上記の行動はすべてアルゴリズムによって実現し、ラジコンの操作によるテクニックは必要としない。
これらの動作を実世界への応用はいくらでも考えられ、世の中に変化をもたらすだろう。
この動画自体は3年前のものであるから非常に驚いた。
こちらもまた面白い。

https://www.ted.com/talks/raffaello_d_andrea_meet_the_dazzling_flying_machines_of_the_future

ドローンのソースコードに触れてみる

せっかくならエンジニアとして、興味の持てる分野かつこれから注目を浴びる分野に関わっていたいと思う。
では、ソフトウェア エンジニアとして、ドローンの世界に入っていくにはどうしたらいいだろうか?
一番大事なのは、ソースコードに触れることだと考えている。つまりドローンを扱うプロジェクトに参加することである。
プロジェクトに参加する方法としては、転職となると非常にハードルが高いが、オープンソースに参加することであればハードルはそこまで高くないだろう。
ここで登場するのが、Dronecode と呼ばれる Linux Foundation が運営するオープンソース プロジェクトである。
概要やアーキテクチャは下記のブログが分かりやすい。

ドローンのフライトコントローラ周りのOSSプロジェクトについて

ソースコードを動かしてみる

フライト コントローラーのソースコードはこちら。
https://github.com/ArduPilot/ardupilot

ソースコードに触れると実際に動かしてみたくなるのではないだろうか。
しかしながら、ドローンの機体を持っていないとコードを動かせないし、機体を持っていたとしても購入した製品のプログラムを Dronecode に置き換えるのはそれなりの覚悟が必要だったり、飛ばせる場所が限られていたりと何かと問題が発生する。
そこで便利なのがシミュレーターである。

http://ardupilot.org/dev/docs/sitl-simulator-software-in-the-loop.html

上記の SITL (Software in the Loop) は、仮想マシン上の Linux や Windows でも動作するため、開発時の動作確認に非常に便利である。Ubuntu と Windows 10 の両方で環境を構築したが、Ubuntu の方が手順もシンプルで構築しやすかった。
構築手順は上記のドキュメントからリンクを辿れば、丁寧に記載されている。

ソースコードを変更する

実際にシミュレーターで動作させることができれば、次はソースコードを変更して動きを確認してみる。
ArduPilot のソースコードをどこから見てよいか分からない場合には下記の資料が参考になる。

Code Overview (Copter)
http://ardupilot.org/dev/docs/apmcopter-code-overview.html

資料に沿ってパラメーターやフライト モードを追加すれば、ソースコードの全体像が見えてくる。
コードの変更ができれば、下記の資料を参考にビルドし、シミュレーターで動作を確認する。

http://ardupilot.org/dev/docs/building-the-code.html

ドローンと連携するアプリケーションを作る

機体制御である ardupilot ではなく、ドローンから取得した情報を処理したり、ドローンを操作する命令を送信するようなアプリケーションを作りたい場合には、DroneKit を利用する。
http://dronekit.io/

例えば、GPS を利用して、ドローンが対象物を自動的に追いかけるというアプリ (Follow Me) を作成することなどが可能である。
http://python.dronekit.io/examples/follow_me.html

上記のサイトには、他にも面白い Example が公開されている。
DroneKit をとりあえず動かしてみたい場合には Quick Start を実施すると分かりやすい。

http://python.dronekit.io/guide/quick_start.html

最後に

実際に一番面白いのは、変更したコードを使って、ドローンを飛ばすときである。
しかし、現在の法律ではドローンを飛ばせる場所が限られている。

河川敷など場所が広くても、飛行場が近ければ飛ばせないので、飛ばす際には注意が必要である。