Dronecode
こんにちはー。今日からこのサイト「Ailerocket/エルロケット」の運営を始めました、K-ki(K-ki@Ailerocket)といいます。初の投稿となる今回は、オープンソースのドローン開発向けプラットフォーム「Dronecode(ドローンコード)」を紹介します。
紹介します、とはいっても、私は航空宇宙についてはそこそこの期間勉強していますが、ドローンのことについてはまだまだ初心者に近いです。間違いなどあれば指摘してもらえると嬉しいです。
Dronecodeとは
Dronecode(ドローンコード)は一言で言ってしまえば、上にも書いたように「オープンソースのドローン(無人航空機:UAV)開発向けプラットフォーム及びそのプロジェクト」を指します。
以下の公式サイトを読むと分かりやすいかもしれませんが、当然ながら英語です。
Dronecode – Building a sustainable open source ecosystem for critical Drone components
そこで以下では、日本語で、私なりのドローンコードに対する理解をまとめます。
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の開発に参加していた実績があります。
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の制御プログラムは、対象となる機体の形状に応じていくつかの種類が存在します。2020年現在では、以下の5つが存在しています。
- APM:Plane – 固定翼機(飛行機)用
- APM:Copter – 回転翼機(ヘリコプター・マルチコプター)用
- APM:Rover – 地上車両及びボート用
- APM:Sub – 潜水機用
- AntennaTracker – 機体との通信用アンテナの方位制御用
ドローンの核とも言えるこのAPMプロジェクトでは、対応するグランドコントロールステーション(GCS)として「Mission Planner」を、シミュレーション環境として「SITLシミュレータ」を推奨しています。従って、Dronecodeプロジェクト内には複数のGCSやシミュレータが存在するものの、APMとの相性を考えるとこれらを使用するべきと考えられます。
-
APM:ArduPilot Mega-ドローン・RC飛行機用オートパイロット [Drondecode]
高度なオートパイロット(自動操縦)システムを実現する、オープンソースのプラットフォーム「APM:ArduPilot Mega」を解説します。ドローンコードプロジェクトの一部でもあるAPMは、ドローン・マルチコプター等に搭載するファームウェア、GCSソフトウェア等から構成されます。
APMについては、さらに詳細な解説をこちらのページに用意しています。Dronecodeの中でも中核的なプロジェクトなので、こちらにもぜひ目を通してみてください。
補足説明
APMは2016年8月にDronecodeのメイン飛行制御プログラムから外れ、Dronecodeから離脱しました。バージョン管理が不明確であり、Dronecodeを活用している企業にとって負担が大きくなっていること、およびArduPilotの使用許諾条件であるGPLv3が、機能拡張しているドローンテクノロジーの中でそぐわなくなってきていることが理由とされています。
Dronecodeからは離脱したものの、現在は他のパートナーの支援を得て開発が継続されています。
PX4
PX4プロジェクトもArduPilotと同じように、飛行制御のためのハードウェア(フライトコントローラ)とソフトウェア(飛行制御プログラム)を開発していました。
これにより開発されたハードウェアが「PX4」というフライトコントローラボードです。このPX4をさらに発展させて完成したのが、Dronecodeで強く推奨されている「Pixhawk」というフライトコントローラです。
-
3DR Pixhawk-APM推奨の高性能ドローン用フライトコントローラー
APM(ArduPilot Mega)の推奨ドローン用フライトコントローラー「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:地上局)と呼ばれます。グランドコントロールステーションとドローン間の通信は無線通信であり、日本国内では電波法の影響を受けるため使用するためのハードルは高いですが、非常に便利なツールであることは間違いありません。
また、グラウンドコントロールステーションは機体の設定を行う際にも利用します。この場合には、機体との通信は有線で行うことが一般的です。
-
Mission Plannerの使い方・インストール・設定方法 【APM:ArduPilot Mega】
APM(ArduPilot Mega)代表的なグラウンドコントロールステーション(GCS)であるMission Planner(ミッションプランナー)を解説します。インストール方法や、フライトコントローラーへのファームウェアアップロード方法、ミッションフライトの設定方法が中心です。
こちらのページでは、Dronecodeプロジェクトに属する上述のAPM(ArduPilot Mega)に含まれるグラウンドコントロールステーションである「Mission Planner」について解説しています。興味のある人は併せて読んでみてください。
補足説明
上にも書いたとおり、APMがDronecodeから離脱したこともあって、Dronecodeの主たるGCSは2020年時点ではQGroundControlになっています。
フライトデータ・ログ解析
他にも、フライトデータやログの解析を行うプロジェクトも存在します。飛行ログデータから、飛行状況の再現をすることなども可能なようです。
Dronecodeの構成プロジェクトのまとめ
以上、Dronecode(ドローンコード)について、大まかではありますが全体の構成や背景がつかめるように紹介しました。ここまでの説明を踏まえ、または並行して、Dronecodeのプロジェクト構成を示す以下の図を見ると、さらに分かりやすいかと思います。
また、ドローンワークス株式会社の代表取締役社長であり、ブログ暇村工房でも知られる今村博宣氏による解説や、INTERNET Watchのニュース記事も分かりやすいです。
参考Linux Foundationのもと、ドローンの基本ソフトプロジェクト「Dronecode」発足 -INTERNET Watch
Dronecodeプロジェクトは、フライトコントローラ周辺だけでなく、ドローン開発における統合的なプラットフォームをオープンソースで作り上げるという、今後が非常に楽しみなプロジェクトです。一方、日本語での情報は少なく、日本国内でDronecodeに取り組んでいる人はあまりいません。
しかし国内でも、Dronecodeを使えるエンジニアを養成するプロジェクトが始まったりと、少しずつ普及する兆しを見せています。早い段階からDronecodeに取り組み、先行者利益の獲得を目指してみてはどうでしょうか。