ドローンオープンプラットフォームプロジェクトを立ち上げてから、フライトコードのオープンソースに関しての質問が増えた。
- Advertisement -
何度かフライトコードの話はこのコラムでも行っているが、最新状況もアップデートしながら解説したい。
フライトコントローラーとの関係
フライトコントローラーはハードウェアであり、フライトコードはフライトコントローラー上で動くソフトウェアである。
- Advertisement -
フライトコントローラーの種類によって、オープン系のフライトコードに対応しているものと、DJIのようにクローズドな独自ソフトウェアが既にインストールしてあるものに大別される。
ちなみに、Pixhawkシリーズなどオープン系のフライトコードに対応しているフライトコントローラーは、"Pixhawk Hardware Designs"という形でGitHub上にハードウェアデザインや回路図が開示されており、フライトコントローラーも自由に製造することが可能になっている。
(そのため、Pixhawk互換という形で様々な製品が出回っている。基本的にはその回路通りに作られているので、動作しないということは滅多にないが、あまり安いものを購入するとハンダの浮きやコネクタが取れたり、作りが粗いものがあったりするので、注意が必要だ。)
プロプライエタリソフトウェア
DJIのようなソースが開示されていないソフトウェアをプロプライエタリと呼ぶ。
プロプライエタリソフトウェアとはソフトウェアの配布者が、利用者の持つ権利を制限的にすることで自身や利用者の利益を保持しようとするソフトウェアを指す。制限には法的手法や技術的手法など様々な方法があり、技術的制限手法としては、バイナリ実行コードのみを使用者に提供し、ソースコードは公開しないというソフトウェア流通の方法がある。
- Advertisement -
プロプライエタリソフトウェアは、そのソースコードを公開しないため、そこで開発した知財を守ることが出来るという点が一番のメリットであり、企業がソフトウェアを開発した場合にソースコードを開示しないケースがこれまで圧倒的に多かった。
しかし、それまでのソフトウェアはそのソフトウェア内で閉じて動作をするものが主流だったが、様々なデバイスやそれに伴うソフトウェアがネットワークでつながっていくケースが増えてくる中で、そのソフトウェアを外部とつなげる必要が出てきた。
そこで注目を集めた手法がAPI(Application Programming Interface)で、APIは、主にソフトウェアやプログラム同士をつないでいるインターフェースとなっている。
しかし、ドローンのフライトコードのようなレベル、アプリケーションレイヤーより物理レイヤーに近いレベルのものではAPIだけでは対応出来ないケースも多く、独自のプログラムやAPI、サンプルコードなどを含んだSDK(Software Development Kit)をDJIは提供している。
DJI以外でも、フライトコードは自社開発によりプロプライエタリで提供しているドローンメーカーはあり、それを売りにしている場合もあるが、DJIとの大きな違いはそのフライトコードの内容や性能そのものも重要だが、そのことよりも、きちんとSDKを提供出来ているか否かにある。それはドローンが様々なデバイスやアプリケーションと連動することを前提としており、その広がりがそのドローンの優位性に直結していくからだ。
フライトコントローラーとソフトウェア開発
ドローンのソフトウェア開発は3つに大別される。
機体制御、機体管理、情報処理となる。機体制御は、基本機体制御、高度な自律処理、ペイロード管理・制御となる。
DJIの場合は、基本機体制御の開発はできず、高度な自律処理をOnboard SDKで行い、ペイロード管理・制御はPayload SDKで行う。オープン系の場合、基本機体制御を主に、ソースコード(PX4やArduPilot)で行い、高度な自律処理やペイロード管理・制御はDroneKitと呼ばれるSDKに似たツールによって行う。機体管理に関しては、その管理を行うリソースで分かれるが、それがクラウド、モバイルデバイス、PCとなっている。
DJIの場合は、クラウドの部分がCloud APIとなり、モバイルの、特にAndroidに関しては、Mobile SDKとUX SDKによって行う。(iOSに関しては、米国政府がとった禁輸施策のため、iOSでの展開が難しくなったこともあり、Updateが遅れている。)Windowsに関しては、Windows SDKのベータ版がリリースされたが、iOSと同様な理由で、Windows SDKの正式リリースはないままで止まってしまった。
オープン系の場合は、こういった機体管理に関しては、DroneKitやその他のツールを使って、開発を行う形となっており、DJIのようなSDKは提供されていない。
各々の開発の内容は以下のようになっている。
ドローンのソフトウェアを開発する場合には、こういった内容を理解し、その内容に合った形で開発を行っていく必要がある。
オープンソース系のフライトコード
オープンソース系のフライトコードは、PX4とArduPilotの2種類がある。PX4の方がそのスタートは早かったが、2014年10月に設立されたDronecodeといった形でオープンソース系のプロジェクトをまとめる動きの中では、そのフライトコードの中心はArduPilotであった。
しかし、そのプロジェクトの中心にいた3D Roboticsが2016年にDJIとの闘いに敗れ、ドローンのハードウェア事業から撤退するとその中心がQualcommなどの企業にシフトすると、ArduPilotのライセンス形態であるGPL※v3に懸念が示され、コミュニティのリードとの話し合いがもたれたが決裂し、DronecodeでのフライトコードはBSD※ライセンスであるPX4になった。その詳細は以下。
※GPL:プログラム(日本国著作権法ではプログラムの著作物)の複製物を所持している者に対し、概ね以下のことを許諾するライセンスである
- プログラムの実行
- プログラムの動作を調べ、それを改変すること(ソースコードへのアクセスは、その前提になる)
- 複製物の再頒布
- プログラムを改良し、改良を公衆にリリースする権利(ソースコードへのアクセスは、その前提になる)
(Wikipediaより)
Versionによって細かい違いはある。
参考:GPLv3ガイドブック
※BSD:「無保証」であることの明記と著作権およびライセンス条文自身の表示を再頒布の条件とするライセンス規定である。この条件さえ満たせば、BSDライセンスのソースコードを複製・改変して作成したオブジェクトコードを、ソースコードを公開せずに頒布できる。(Wikipediaより)
2016年9月以降、ArduPilotはArduPilot.orgとして進んできており、PX4はDronecodeプロジェクトの中で進んできた。米国において、2018年末ぐらいより、DJIに対抗する形で国防省が短距離偵察機(SRR)の仕様要求において、PX4を採用したことにより、一気にPX4がその中心に踊りでた。詳しくは以下。
現在、PX4とArduPilotは以下の特徴を示している。
PX4:米国市場においてのデファクトになっており、Auterionがその中心を担う中で産業用ドローンのフライトコードとして、Enterprise PX4という形でバージョン管理が行われている。
ただし、BSDライセンスという性質上、基本機体制御以外の個々の機体メーカーが開発した機体制御に関しては、開示されていないため、そのままのPX4のフライトコードとしては基本機体制御に限られているため、機体メーカーにおいては機体制御の開発に関して、高度なレベルの開発リソースが必要となっており、また、新たな機能に関しても、自社リソースで動作検証などを行わなければならない。
■PX4
ArduPilot:新たな機能(例えば、衝突回避や非GPS環境での機体制御など)がどんどん追加されて誰でも実装できる形になっている。また、自社で開発し、ソースコードに組み込まれた機能に関しても、バージョンアップの時にはコミュニティの多くのテスターによって、動作検証が実施される。
ただし、ソースコードの改変に関しては、GPLv3により、ユーザーからの開示請求があった際にはソースの開示が必要になっている。また、改変した内容が、ソースに組み込まれない場合には、バージョンアップした際に自社のリソースで動作検証を行う必要がある。
また、ArduPilotの開発者はボランタリーの技術者(自分が興味ある内容や新規性の高い内容などを優先的に開発する傾向がある技術者)が多く、使い勝手や機体管理などに関連するようなソフトウェアの開発が弱いという傾向がある。
日本の機体メーカーにおいては、機体制御に関わるソフトウェアエンジニアが圧倒的に不足している中においては、PX4を選択することは機体の機能面での競争力が著しく低い形となり、その選択は厳しいものとなるであろう。
先に示したArduPilotの弱点でもある使い勝手や機体管理などに関連するようなソフトウェアの開発の不足に関しては、現在日本版オープンプラットフォームプロジェクトの中で、多くのプロジェクトが動きだしており、そのプロジェクトを採用することにより、システムとしての充実を図ることができるだろう。
現在、日本のドローン市場は、実証実験のフェイズから、実運用のフェイズに急速にシフトしてきており、その局面において、様々な課題が表出してきている。
その多くの課題を解決にむけて、こういったドローンのソフトウェアのストラクチャや特徴を理解し、その中で安定運用に向けた全体的なシステムの構築を作り上げていく必要が出てきている。