
Dronecode
こんにちはー。今日からこのサイト「Ailerocket/エルロケット」の運営を始めました、K-ki(K-ki@Ailerocket)といいます。初の投稿となる今回は、オープンソースのドローン開発向けプラットフォーム「Dronecode(ドローンコード)」を紹介します。
紹介します、とはいっても、私は航空宇宙についてはそこそこの期間勉強していますが、ドローンのことについてはまだまだ初心者に近いです。間違いなどあれば指摘してもらえると嬉しいです。
この記事の目次
Dronecodeとは
Dronecode(ドローンコード)は一言で言ってしまえば、上にも書いたように「オープンソースのドローン(無人航空機:UAV)開発向けプラットフォーム及びそのプロジェクト」を指します。
以下の公式サイトを読むと分かりやすいかもしれませんが、当然ながら英語です。
そこで以下では、日本語で、私なりのドローンコードに対する理解をまとめます。
Dronecodeの背景
ここ2~3年の間に、DIY(自作)ドローンやその開発者の数は急激に増加しています。Droncodeはこれらの急増するドローン開発者を助け、ドローンをよりイノベーティブなものにしようとしています。
つまり、開発者がDroncodeを通じて、より安く、より良く、そしてより信頼性の高いドローン開発用プログラムを利用できるという恩恵を受けられるようになることを目指しています。ドローンの開発にオープンソースのプラットフォームが存在していれば、開発者はエッセンシャルな飛行制御プログラムなどにリソースを奪われることなく、新規性の高い技術的コアに注力することが可能となります。
Droncodeはこのように開発者にとってメリットの大きいプラットフォームを提供することで、ドローン開発(及びロボティクス)におけるデファクトスタンダードとなることを目的とています。
Dronecodeの運営母体とプロジェクトメンバー
Dronecodeプロジェクトの運営母体は、Linuxオペレーティングシステムの普及を目指す非営利の企業団体「The Linux Foundation(リナックスファウンデーション)」です。
このLinux Foundationの指揮のもと、複数の企業がDronecodeプロジェクトに参加し、既存または開発中のオープンソースプログラムを統合し、ドローン向けのオープンソースプラットフォームを作ろうとしています。
このDronecodeのプロジェクトメンバーである企業の中でも中心的枠割を果たしているのが、Solo、Iris+などの完成品ドローンや、Pixhawkというフライトコントローラの販売元として知られる「3D Robotics(3DR、3D ロボティクス)」です。
また、ドローン・ジャパン株式会社やドローンワークス株式会社、株式会社エンルートなど日本企業もプロジェクトメンバーとしてDronecodeの開発に参加しています。
Dronecodeの構成プロジェクト(On Board Viechle)
Dronecodeプロジェクトの背景について一通り説明したので、次はドローンコードを構成するより細かなプロジェクトの説明に移ります。
Dronecodeの子プロジェクトは、ドローンの機体自体に搭載されるOn Board Viechleのプロジェクトと、機体には搭載されないOff Viechleのプロジェクトに大別されます。まずは、On Board Viechleのプロジェクトから紹介していきます。
アドバンスドコントロール
アドバンスドコントロールとは、ドローンの飛行自体には必須ではないが、ドローンに対しより大きな付加価値を与えることのできるプロジェクトをまとめたものです。具体的には、「Wi-Fi経由の映像通信」「障害物回避」「映像処理」といった機能がこのプロジェクトに属します。
通信及びAPI群
Dronecodeの通信システムプロジェクトには、大きく分けて「Mavlink」と「UAVCAN」の2つがあります。
Mavlink
Mavlinkは、Dronecodeの無線通信プロトコルプロジェクトです。この下に、「ROS(Robot Operating System)」「DroneKit」「DroneAPI」といったより細かなプロジェクトが存在します。
ROS(Robot Operating System)
ROS(Robot Operating System)は、Droncecodeにおいては、飛行制御におけるナビゲーション機能や、コンピュータービジョン(画像センサや画像処理、画像認識などロボットの目に相当する機能)、ドローンのコンピュータシミュレーション環境の構築などで利用されるオペレーティングシステムという役割を担っています。
ROSとフライトコントローラや飛行制御プログラム間の通信は、以下の「DroneKit」または「DroneAPI」のいずれかのAPIを利用して行います。
DroneAPI
DroneAPIはMavlinkを経由してドローンと通信することで、以下のことができます。
- 機体の状態やテレメトリ情報の取得・パラメータ設定
- 指定した場所への機体誘導
- ドローン機体やその他のハードウェアを制御するための、カスタムメッセージ送信
- ウェイポイント(ナビゲーション飛行における目標ポイント)の管理
- ラジオコントロール設定の変更
このAPIは3D ロボティクスによって管理されています。
DroneKit
DroneKitはDroneAPIをさらに発展させ、クラウドやスマートフォン・タブレットといったモバイル端末、パソコンアプリ開発用ツールキットを提供するプラットフォームです。
こちらもDroneAPIと同じく3D ロボティクスが管理しています。
UAVCAN
UAVCANはCANというバス通信規格にのっとったUAV(無人航空機)用の通信規格です。軽量であるところが売りで、ドローンの機体上における有線通信に利用されているようです。
飛行制御プログラム・フライトコントローラ
Dronecodeの飛行制御プログラム(フライトコード)及びフライトコントローラは、APMとPX4というプロジェクトによって開発されています。ドローン開発においては、これらのプロジェクトが機体が正常に飛行するための要となるため、非常に重要になります。
このような飛行制御プログラムに対応する、Dronecode以外のプロジェクトとしては、Cleanflight、Baseflight、OpenPilotなどがあります。既にDIYドローンの自作経験がある人にとっては、これらのプロジェクトのDronecode版であるといった方が理解しやすいかもしれません。
なお、上にも書いたように、Dronecodeでは飛行制御プログラム関連でAPMとPX4の2つのプロジェクトが活動しています。ものすごくざっくりいえば、ソフトウェア=飛行制御プログラムがAPM、ハードウェア=フライトコントローラがPX4なのですが、少しややこしい部分もあるので以下で説明していきます。
この点に関しては、こちらのページも参考になります。
参考ドローンのフライトコントローラ周りのOSSプロジェクトについて – Qiita
APM(ArduPilot Mega)
APMはもともと、Arduinoというマイコンをベースにして開発されていた「ArduPilot」または「APM」というフライトコントローラ(ハードウェア)と、そのフライトコントローラで動作する飛行制御プログラム(ソフトウェア)を開発するプロジェクトでした。
しかし現在ではハードウェアの開発は終了し、飛行制御プログラムのみの開発プロジェクトとなっています。フライトコントローラとしては、次に紹介するPX4プロジェクトで開発されている「Pixhawk」を筆頭に、「Pixracer」「PX4」「NAVIO+」「Erle-Brain」などをサポートしています。また、プロジェクト名もArduPilotから「APM(ArduPilot Megaの略)」へと変化しています。
現在のAPMの飛行制御プログラムには大きく2つのブランチがあり、一つが固定翼ドローン用のAPM:Plane(ArduPlane)、そしてもう一つが回転翼用のAPM:Copter(ArduCoptet)です。
ドローンの核とも言えるこのAPMプロジェクトでは、対応するグランドコントロールステーション(GCS)として「Mission Planner」を、シミュレーション環境として「SITLシミュレータ」を推奨しています。従って、Dronecodeプロジェクト内には複数のGCSやシミュレータが存在するものの、APMとの相性を考えるとこれらを使用するべきと考えられます。
APMについては、さらに詳細な解説をこちらのページに用意しています。Dronecodeの中でも中核的なプロジェクトなので、こちらにもぜひ目を通してみてください。
PX4
PX4プロジェクトもArduPilotと同じように、飛行制御のためのハードウェア(フライトコントローラ)とソフトウェア(飛行制御プログラム)を開発していました。
これにより開発されたハードウェアが「PX4」というフライトコントローラボードです。このPX4をさらに発展させて完成したのが、Dronecodeで強く推奨されている「Pixhawk」というフライトコントローラです。
また、これらのハードウェア上で動作するソフトウェアとして、「PX4 Flight Stack」というものも有りますが、Dronecodeプロジェクト内ではAPMの方がメジャーな飛行制御プログラムになっているようです。
ファームウェア
Dronecodeには、テレメトリ通信や、モータ制御用のESC、指向性通信のためのアンテナトラッカー向けのファームウェアを開発するプロジェクトもあります。
Dronecodeは基本的には、ドローンに必要なソフトウェアをオープンソースで開発するプロジェクトですが、一部ではこれらのファームウェアに互換性のあるハードウェアも「オープンソースで」開発しています。
私も最初は「オープンソース“ハードウェア”ってなんだ?」と思ったのですが、どうやら回路図が公開されているという意味だそうです。開発者の利益優先で、情報は徹底的に公開するというオープンソースの精神が徹底されていますね。
一方で、回路図が公開されていることから、ドローンが飛ぶための要とも言えるフライトコントローラなどにおいても、正規品ではないコピー品が普通に流通しているようです。この点はちょっと問題ですが、正規の販売元がきちんと用意されているので、正規品を購入したければ購入できるため許容範囲と言えそうです。
Dronecodeの構成プロジェクト(Off Viechle)
次に機体には搭載されないOff Viechleのプロジェクトについて説明していきます。
シミュレータ
Dronecodeには、ドローンのフライトを模擬するシミュレーション環境も用意されています。Dronecodeのプロジェクトとしては、「JMavSim」及び「SITL(software in the loop)」というシミュレーション環境が、Dronecodeの提携プロジェクトとしては「ROS Gazebo Simulator」というシミュレーション環境があります。
さらに、「Last_Letter」「JSBSim」「CRRCSim」「X-Plane」などのシミュレーションプロジェクトとも互換性があります。
グランドコントロールステーション(地上局)
Dronecodeプロジェクトには、パソコンや、スマートフォン・タブレットなどのモバイル端末にインストールされたアプリケーションと通信し、機体の状況を手元の端末上で確認したり、手元の端末から直接機体をコントロールしたりするためのプロジェクトも存在します。
これらのアプリケーションはグランドコントロールステーション(GCS:地上局)と呼ばれます。グランドコントロールステーションとドローン間の通信は無線通信であり、日本国内では電波法の影響を受けるため使用するためのハードルは高いですが、非常に便利なツールであることは間違いありません。
また、グラウンドコントロールステーションは機体の設定を行う際にも利用します。この場合には、機体との通信は有線で行うことが一般的です。
こちらのページでは、Dronecodeプロジェクトに属する上述のAPM(ArduPilot Mega)に含まれるグラウンドコントロールステーションである「Mission Planner」について解説しています。興味のある人は併せて読んでみてください。
フライトデータ・ログ解析
他にも、フライトデータやログの解析を行うプロジェクトも存在します。飛行ログデータから、飛行状況の再現をすることなども可能なようです。
Dronecodeの構成プロジェクトのまとめ
以上、Dronecode(ドローンコード)について、大まかではありますが全体の構成や背景がつかめるように紹介しました。ここまでの説明を踏まえ、または並行して、Dronecodeのプロジェクト構成を示す以下の図を見ると、さらに分かりやすいかと思います。

Dronecode Software Platform | Dronecode
また、ドローンワークス株式会社の代表取締役社長であり、ブログ暇村工房でも知られる今村博宣氏による解説や、INTERNET Watchのニュース記事も分かりやすいです。
参考Linux Foundationのもと、ドローンの基本ソフトプロジェクト「Dronecode」発足 -INTERNET Watch
Dronecodeプロジェクトは、フライトコントローラ周辺だけでなく、ドローン開発における統合的なプラットフォームをオープンソースで作り上げるという、今後が非常に楽しみなプロジェクトです。一方、日本語での情報は少なく、日本国内でDronecodeに取り組んでいる人はあまりいません。
しかし国内でも、Dronecodeを使えるエンジニアを養成するプロジェクトが始まったりと、少しずつ普及する兆しを見せています。早い段階からDronecodeに取り組み、先行者利益の獲得を目指してみてはどうでしょうか。


最新記事 by K-ki (全て見る)
- UAVの飛行制御と開発プラットフォームについて(2)Dronecodeの飛行制御 - 2018年5月23日
- UAVの飛行制御と開発プラットフォームについて(1)機体構成と製品群 - 2018年5月20日
- ドローン保険と選び方-ドローン・ラジコン飛行機の安全なフライトのために - 2016年12月26日
コメント
素晴らしい記事を書いて頂き、有り難うございます。
仕事でドローンを使う可能性が出てきたのですが、こちらの記事のおかげで大変助かりました。
系統立てが素晴らしいので読みやすくて驚きました。
私の仕事は組み込み系のマイコン制御でして、ドローンのフライトコントローラと通信して何らかの仕事をすることになりそうです。
出来ればDronecodeを使いたいのですが、DJIのビジョンポジショニングが素晴らしい様子なので、3DR系で行くかDJIで行くか悩み中です。
・DJIのSDKは情報が少なく、未だ海のものとも山のものともつかぬ様子
・3DRでもビジョンポジショニングのようなシステムを出してくれれば
ところでこちらのセンサーをご覧になりましたか?
ドローン以外にも使えそうな気がしています。
またお邪魔させてください。
Mooさん、大変丁寧なコメントをありがとうございます。
また、返信が非常に遅くなってしまい申し訳ありません。
お仕事でドローンを使う可能性があるとは、うらやましい限りです。
私はあまりドローンを使いそうな気配はありませんので…。
DJIのビジョンポジショニングは、少し前に発売されたMavicやPhantom 4を見る限り、かなり高性能と言えそうですね。
一応Dronecodeでも、APMがビジョンポジショニングの実装を進めていたと記憶していますが、問題も多いです。
まず、APMのバージョン管理に問題がある、ライセンス形態が業界にそぐわなくなってきている等により、APMがDronecodeのメインフライトコードを外されてしまったこと。
そして、Dronecodeのキーマンである3DRの経営不振です。
私としてはオープンソースのDronecodeに頑張ってほしい気持ちが強いのですが、DJIの牙城を崩すのは簡単ではなさそうです。
リンクを張っていただいたセンサーについては見たことがありませんでした。
やはりDJIのSDKがどんなものかよくわからないので、扱いが難しそうな感じもしますが、うまく使えれば面白そうですね。
ぜひまたいらしてください!
お待ちしています。
K-kiさん、返事を有り難うございます。
またDronecodeの現状を教えて頂き有り難うございます。
そうですか、出来ればDronecodeを使いたいのですが・・・
今回の仕事では屋内での飛行(GPS不可)になるので、やはりDJIが無難かもですね。
現在、客先へのアイデア提案段階なのですが、仕事となると「完成しないとお金を貰えない」ので、どうしても安全側を選んでしまいます。
少し本気でDJIのSDKを調べてみようと思います。
ところで面白い動画ページを見付けました。
ルネサスのCPUを売るための宣伝ページなのですが、ここでドローンを作ってます。
センサーの使い方など、フライトコントローラのハード・ファームの基礎が分かる感じがしました。
よければ覗いてみてください。
https://www.renesas.com/ja-jp/support/training/seminar/web-quick-learning/rx62t-ws1/120118-02.html
自分も前はラジコンを飛ばしていました。
60クラスのスタント機でして、デジコン電子やSANWAという会社のアナログプロポを使っていました。
全部手動ですから美しく飛ばすのにも職人技が必要でして。
OpenTXの記事を読ませて頂いて、今の時代のプロポを実感しました。
もう飛ばしてはいないのですが、ちょっと欲しくなっちゃいました。
またお邪魔に参ります。
どの記事も目次が完璧に出来ていて、とても読みやすく驚いています。
K-kiさん、返事を有り難うございます。
またDronecodeの現状を教えて頂き有り難うございます。
そうですか、出来ればDronecodeを使いたいのですが・・・
今回の仕事では屋内での飛行になるので、やはりDJIが無難そうですね。
現在、客先へのアイデア提案段階なのですが、仕事となると「完成しないとお金を貰えない」ので、どうしても安全側を選んでしまいます。
少し本気でDJIのSDKを調べてみようと思います。
ところで面白い動画ページを見付けました。
ルネサスのCPUを売るための宣伝ページなのですが、ここでドローンを作っています。
センサーの使い方など、フライトコントローラの基礎が分かる感じがしました。
https://www.renesas.com/ja-jp/support/training/seminar/web-quick-learning/rx62t-ws1/120118-02.html
自分もラジコンを飛ばしていました。
60クラスのスタント機で、デジコン電子やSANWAなどのアナログプロポを使っていました。
今はもう飛ばしていないのですが、OpenTXの記事を読んで、ちょっと欲しくなっちゃいました。
どの記事も目次の構成がとても見やすく、読みやすくて驚いています。
またお邪魔させてください。
Mooさん、またも返事が遅れてしまいました。
どうやらコメントがスパム認定されてしまっていたようです。失礼いたしました。
やはり現状だとDJIが無難という方針になってしまいがちかもしれませんね。
Dronecodeについてはもう少し注視していきたいと思います。
紹介いただいたページは面白いですね!
ここまで細かく踏み込んで解説しているページはなかなかないと思います。
また時間のあるときにじっくり拝見いたしますね。
OpenTXは私もまだ使いこなしているとはいえませんが、色々な設定が出来て面白いです。
最近は寒さと花粉でフライトからやや遠ざかってしまっていますが、もう少ししたらまたバンバン飛ばそうと思ってます。
またよろしくお願いしますね!
[…] PX4はドローンのフライトコントローラを開発しているオープンソースのプロジェクトの一つで、他にAPMなどがあります。これらのプロジェクトに関してはこのページが詳しいです。最近の状況についてはこちらに書いてあります。このスライドによるとDronecodeの下にAPMとPX4という2つのプロジェクトがあるらしく、APMとPX4それぞれにファームウェア、シミュレータ、GCSがあります。 […]