前回、システムとしてのドローンの解説をさせていただきましたが、システムを構築する中の重要な要素として、プログラミングがあります。今回はドローンのプログラミングに関して、解説をさせていただきます。
- Advertisement -
DJIとDronecode
ドローンのプログラミングにおいて、使われているフライトコントローラーと密接な関係にあります。フライトコントローラーに関しては現状、大別するとDJI系とDronecode系の二種類に分かれます。
プログラミングで出来ること
プログラミングを行うことで以下のような開発や拡張が可能になっています。
- Advertisement -
機体
- 機体制御
- VTOL
- 精緻な着陸や自動航行
- GPSに頼らない測位や航行
- ペイロード管理
- 強風対策
Companion Computing
- 衝突回避
- 室内航行
- 群制御
アプリケーション
- 自動航行アプリケーション
- カメラ制御
- 撮影ポイントの同期
- 飛行ログ解析
クラウド
- 管制システム
- 航行管理
DJIの戦略
DJIは、今まで比較的クローズな戦略を敷いてきましたが、産業での用途が広がるにつれ、昨年からソフトウェア開発者が機体の機能拡張やアプリケーションが開発できるように、SDK(Software Development Kit)という形で開発可能な環境を提示してきています。機体拡張に関するSDKはOnboard SDK、、PCやタブレットといったデバイスでのアプリケーションを開発するためのSDKは、Mobile SDKとなっています。DJIはこういった形で開発者をサポートする中で、各々の産業用途でのDJIの機体が活用されるシーンを広げています。
- Advertisement -
Dronecode
一方、欧米を中心に広がっているのは、Dronecodeです。Dronecodeとは、Dronecode Foundationが提供するドローンソフトウェア開発者向けオープンソースコード体系です。Ardupilot(自律航行制御プログラム)及びDronekit(アプリケーション開発用プログラム)などで構成され、ソフトウェア開発者向けのツールを提供しています。
Dronecode FoundationはLinux Foundationが支援し、複数のオープンソースのドローンプロジェクトの成果を統合し、ソフトウェア開発を加速させるために共通コードベースを提供することを目的として2014年10月に設立されました。現在、3D Robotics、インテル、クアルコムを始め、その他多くのドローン関連企業がDronecodeのコミュニティに参加し、活用しています。
Dronecode communityスポンサーメンバー
日本企業では、エンルート、PRODRONE、ドローン・ジャパンの3社がSilverスポンサーとして参加しています
Dronecodeの構造
Dronecodeは以下のような構造になっています
OSが搭載された各種コントローラーにFlight Codeとして、Ardupilotが載っています。そして、Communication LayerであるMAVLinkを通じて、管理アプリケーションであるGround Station(Mission Planner等)やDronekitというSDKによって、Companion ComputerやWebアプリケーションの開発を行うことが可能になっています。
Ardupilot
Dronecodeの機体での自律航行制御プログラムを担っているのはArdupilotで、オープンソースとして、ソースコードが開示されています(ArdupilotはGPLv3というオープンソース上のルールとなっています)。
以下のようなフライトコントローラーに対応しています。
Ardupilotは以下のような構造となっております。
このループを回すことで、自律航行を可能にしています。また、Ardupilotはマルチコプターだけでなく、シングルローターや固定翼、ローバーと言う陸上を走行するものや水上や水中ドローンとしても、活用することが可能です。
MAVLink
Communication LayerにはMAVLinkが使われています。MAVLinkは以下のようなフレームワークとなっています。
今までMAVLinkにおいて、Signedといった形でその署名を送信できるような仕組みとなっておらず、セキュリティ上の問題がありました。そのため、署名の送信が可能な新しいフレームワークとしてMAVLink2が開発されました。
Dronekit
Dronekitは、Companion Computerといったドローンがより高度化していくための開発や、Webを通じてのドローンの管理などを可能にするため、開発者用のツールとしてライブラリーを提供している仕組みとなっています。AndroidやPython向けなどにライブラリーが提供されており、15万を超える形でダウンロードがされています。Dronekitを活用することで、以下のような形で、Webを通じたクラウドコンピューティングの開発も可能になっています。
また、ドローン上のCompanion Computerでの、特別な空撮技巧のプログラミングや画像認識分野における人工知能の活用などの中で、ドローンの高度化が図られています。
フライトログの解析
ドローンの業務利用が進んでいく中で、実証実験の内容や、実際の運用において事故が発生した場合のフライトログの解析が必要な企業が増えてきていますし、入札案件などではフライトログの取得が必須になっているものも出てきています。現在、多くはそのフライトログの内容をメーカーに送り解析してもらうと言うプロセスが必要ですが、この解析作業を自社もしくは関連企業において行いたいとする企業が出てきています。そういった企業がDronecodeを学ぶことで、そういった解析技術を身に付けることが出来るようになります。
Log解析画面
Dronecodeエンジニア養成塾
ドローン・ジャパンでは、現在、Dronecodeエンジニア養成塾を行っています。これは3日間の座学研修と2日間の実施航行、そして修了認定のカリキュラムになっています。その第2期の講座が9月16日から開塾し、第2期生を募集しています。興味のある方は同社Webサイトに詳しい内容が掲載されています。
Dronecodeの情報
以下がDronecodeの各種情報になっています。