こんにちはー!ドローンを自作したりしてます、K-ki(K-ki@Ailerocket)です。
ドローンの普及は日本国内でも徐々に進んでおり、空撮や農業など既に市場規模がかなり拡大してきている分野もあります。今後は、ドローンを使ってより高度で付加価値の高いサービスを提供することが重要になってくるため、ソフトウェア面の充実が求められています。
今回は、実際にドローンを利用しサービスを提供することを念頭に、ドローン開発に利用できる機体やフライトコントローラーを紹介します。また、実際の開発において利用することになるであろう「開発プラットフォーム」についても簡単に説明しています。
なお、このページではソフトウェア開発向けのドローン・フライトコントローラーを紹介していますが、プログラミング教育用のドローンを探している方は、こちらのページを読んでみてください。
-
プログラミング教育向けのおすすめドローン4選!Scratch等に対応
プログラミング教育に子どもが楽しく取り組める教材としてドローンを提案します。プログラミングを好きになり能動的に学ぶため、子どもが興味を持ちやすいドローンは最適です。機体ごとに対応するプログラミング言語や特徴を紹介します。
ドローンにおけるソフトウェア開発の重要性
まずはドローン開発におけるソフトウェア開発の概要について紹介しておきます。どのようなニーズがあるのかをつかみ、ドローン開発の方向性決めの参考にしてください。
ドローンの適用分野は幅広い
ドローンといえば空撮というイメージが先行していますが、実際にドローンが活躍する分野は多岐にわたります。空撮はそのごく一部で、市場規模としても比較的小さめの分野です。代表的なドローンの活用分野としては、以下のような業種が挙げられます。
リンク先にそれぞれの業界の特徴を紹介しているので、併せて参考にしてください。
分野ごとに機体のカスタマイズが求められる
ドローンの活躍分野は多岐にわたり、分野ごとにドローンを運用する方法も違います。例えば、農業分野では農薬散布用に使用されることが多く、農薬を均一に散布するために、決められた範囲を決められたルートで正確に飛行することが重要になります。2次元的な正確さが重視され、高度側は基本的に一定高度を保つような飛び方になるでしょう。
一方、検査・点検の分野では、建築物の外壁やトンネル、ダムなどの公共インフラの点検を行うことが多いです。そのため、上昇と降下を繰り返しながら建造物に沿って移動するような飛び方をすることになります。
飛び方一つとってもこのような違いがあり、分野ごとに求められる機能・性能が異なるいことが分かりますね。そのため、分野ごとあるいは企業ごとのカスタマイズが求められており、業界が成熟して企業間の競争が広がってくると、他社との差別化のためにもこの流れは一層強まると考えられます。
ソフトウェア開発の分野は主に3つ
ドローンに関するソフトウェア開発には、大きく分けて3つのジャンルがあります。どのようなジャンルがあり、どんな特徴があるのかを簡単に説明しておきましょう。
-
ドローン開発で使用されるプログラミング言語の適用分野別まとめ
ドローンの運用に際しては、機体を制御や取得したデータの解析など、様々な場面でソフトウェアを利用します。これらのソフトは目的によって記述するプログラミング言語が違います。ドローンのソフトウェア開発を言語を中心に説明します。
また、実際の開発に際してはこちらのページも参考になると思うので、よければ併せて読んでみてください。
飛行制御・自動操縦(オートパイロット)
ドローンのような航空機に固有のソフトウェア開発ジャンルとして、機体の制御を行う飛行制御・自動操縦という分野があります。いわゆる「オートパイロット」という機能を実現する分野です。高度計やIMUなどのセンサから得られる情報に基づき、ドローンの姿勢、方位、速度、高度などをコントロールして機体を安定に飛行させる役割を持ちます。
どんな業種であっても機体の制御は行う必要があり、ドローンを安全に飛行させるためにも非常に重要な分野です。一方、分野を横断して共通する部分も多く、この分野のソフトはメーカーが提供するものをそのまま使用するとか、オープンソースのソフトウェアを流用するという方法が取られることも多いでしょう。
コンパニオンコンピュータ・ペイロード制御
ドローンには、飛行制御を担当するフライトコントローラー以外にも、コンパニオンコンピュータと呼ばれるコンピュータが搭載されることもよくあります。例えば、機体に搭載したレーザー測距センサの情報を解析して障害物を検知し、回避するためにはどのように動けばよいかを演算してフライトコントローラーに指示する、というような負荷が高めで高度な処理はコンパニオンコンピュータが担当することが多いです。
また、類似した分野に、ジンバルなどのドローンに搭載する機器を制御する「ペイロード制御」という分野もあります。このような、機体に搭載する装備品を制御するソフトウェア開発は、機体に付加価値を与えるものでありニーズも大きいです。
データ解析
ドローンを飛ばす目的の多くは、データの取得にあります。ドローンが活躍する業種の代表例として挙げたものの中でも、点検、測量、空撮などはいずれもドローンを使うことで従来簡単には取得できなかったデータが、比較的手軽に取得できるようになったことに意味があるものです。
ドローンを使って取得したデータは、多くの場合活用するためには何らかの処理・解析が必要です。例えば、ドローン測量の分野では、ドローンで撮影した画像をソフトウェアで処理して3次元の地形モデルを作ります。このような、データを処理・解析して利用しやすくするソフトウェアは、近年需要が増えている人工知能・AIなどとの相性もよく、今後拡大していく分野と思われます。
代表的な開発プラットフォーム
ドローンを利用するシステムは大規模なものになることも多く、全てを一から作るとなると膨大な労力が必要になります。そのため、何らかの開発プラットフォームを利用して開発を行うことのほうが多いでしょう。こういった開発プラットフォームを利用すると、飛行制御周りのようなエッセンシャルかつ機体ごとの差が出にくい部分は既存のソフトウェアを利用し、開発対象に固有の機能を実装することに労力を費やすことが可能になります。
ドローン開発のプラットフォームとして代表的なものを3つ紹介しておきます。プラットフォームに乗れば開発を加速できる一方で、制約が生まれる面もあるため、メリット・デメリットを良く考慮した上で、どのプラットフォームを利用するのかを考えましょう。
DJI Developer SDKs
コンシューマー向けドローンメーカーとして世界トップシェアを誇るDJIが提供する、ソフトウェア開発キット(SDK)群が「DJI Developer SDKs」です。完成済みの機体が入手しやすいDJI製品を使い、ソフトウェアに限ってドローン開発を行う場合は、このプラットフォームを使用することになるでしょう。
iPhoneやAndroidなどのモバイル端末向けアプリケーションを開発できる「Mobile SDK」、Windows用アプリケーションを開発できる「Windows SDK」、機体に搭載したフライトコントローラーやコンパニオンコンピュータ用のソフトウェア開発向けの「Onboard SDK」、ジンバルなどの搭載品向けの「Payload SDK」など、一通りのSDKが揃っています。
当然ですがDJI製品向けのソフトウェア開発しかできないため、特定のメーカーに依存する形になるところに拒否感がある人もいるかも知れません。また、全てのDJI製品に対応しているわけではなく、SDKごとに対応する製品に差がある点にも注意が必要です。
Dronecode
オープンソースのドローン開発プラットフォームとして有名なのが「Dronecode」です。飛行制御周りのハードウェアとソフトウェアの開発プロジェクトである「PX4」をはじめとし、グランドコントロールステーション、シミュレータ、通信など様々なオープンソースの開発プロジェクトの集合体になっています。
-
Dronecodeとは何か―オープンソースドローン開発プラットフォーム
ドローンの統合的な開発プラットフォームとしてDronecodeが注目されています。日本語での情報が少ないDronecodeの背景とプロジェクト構成を紹介します。フライトコントローラ・シミュレータ・アプリ用APIなどハード・ソフト両面にまたがるプロジェクトです。
少し古い記事で多少現在とは状況が異なる部分もありますが、Dronecodeの概要についてはこちらのページを参考にしてください。
オープンソースのため、飛行制御のようなエッセンシャル部分に少し手を加える、ということも簡単です。また、「MAV SDK」というSDKが用意されており、開発しやすい環境も整っています。
ArduPilot Mega
ArduPilot Mega(APM)は、2016年までDronecodeのメインフライトコード(飛行制御ソフトウェア)だったプロジェクトです。権利関係でDronecodeと折り合いがつかず離脱しましたが、別のスポンサーを経て現在も開発が継続されています。APMは飛行制御周りだけのプロジェクトではあるものの、元々Dronecodeのメインフライトコードだったこともあり、Dronecodeに参加している多くのプロジェクトと互換性があるため使い勝手は良いです。
-
APM:ArduPilot Mega-ドローン・RC飛行機用オートパイロット [Drondecode]
高度なオートパイロット(自動操縦)システムを実現する、オープンソースのプラットフォーム「APM:ArduPilot Mega」を解説します。ドローンコードプロジェクトの一部でもあるAPMは、ドローン・マルチコプター等に搭載するファームウェア、GCSソフトウェア等から構成されます。
日本でドローンが急速に注目を浴びるようになった2015~2016年頃にDronecodeのメインにいたため、このプロジェクトを利用した開発も多く行われており、比較的情報が豊富で扱いやすいです。一方で、Dronecode離脱の原因にもなった著作権関連については開発の妨げにならないか吟味が必要です。
完成機とフライトコントローラーのどちらを選ぶか
ソフトウェアの開発のみを行うのであれば、完成機を購入してそれに対応するソフトを作るのが手っ取り早いです。特に現在のドローン界隈はDJI一強の雰囲気が強いので、DJI製品に対応したソフトを開発するのが王道と言えるかもしれません。
一方で、ハードウェアも含めてドローンを開発する場合には、まずは機体を飛ばすための主役であるフライトコントローラーを選び、それに対応するように機体のフレームやモーター、プロペラ、ジンバルなど関連部品を選定していきます。この場合は、完成機が手に入りやすいDJIのメリットが薄まり、オープンソースで細部にわたるカスタマイズが可能なDronecodeやArduPilotの優位性が高まるので、プラットフォームの選択肢も広がってきます。
ここまで、ドローン開発のための基礎知識を紹介してきました。次に、具体的なおすすめの製品を紹介していきます。
Ryse Technology Tello EDU
まずは完成機ドローンである、Ryse Technologyの「Tello EDU」を紹介します。Tello EDUはPython、Swift、Scratchによるプログラミングに対応したドローンです。Scratchに対応していることからも分かるように、本来は教育用のドローンとして販売されているものです。
Telle EDUは重量80g程度のトイドローンであるため、当然ながらこの機体を使って何かのサービスを提供するのは難しいです。しかし、Pythonによるプログラミングが可能なこと、DJI製フライトコントロールシステムを搭載しており安定した飛行が可能なことなどの特徴から、開発の最初期において技術実証の用途で使うのには適した機体と言えるでしょう。
DJI Phantomシリーズ
DJI製ドローンの中でも知名度が高い「Phantom」シリーズは、ユーザーの数も多く開発したソフトウェアの適用先の筆頭にもなる機体です。Phantomシリーズは既にユーザーが多いため、この機体に対応するアプリケーションを開発すれば、比較的利用者を獲得しやすいと言えるでしょう。
ただし、DJI Developer SDKsを利用しても、機体に搭載された機器を制御するソフトウェアを作ることができません。開発できるのはモバイル端末上で使用するアプリケーションのみであり、機体を制御するソフトウェアを開発する場合は次に紹介するMATRICEシリーズを使用することになります。
DJI MATRICEシリーズ
MATRICEシリーズは、DJI製の産業用ドローンです。DJIが提供する「Onboard SDK」や「Payload SDK」に対応しており、機体やその搭載品をコントロールするソフトウェアを開発することも可能です。もちろん、Phantomシリーズと同じ用にMATRICEを操作するためのモバイルアプリケーションも開発できます。
DJI製品を使用し、機体制御にも手を加えるようなシステムを開発する場合は、基本的にこのMATRICEシリーズを使用することになります。
フライトコントローラー
上では完成機ドローンをいくつか紹介しましたが、ハードウェアを含めた開発を行う場合は、まず開発プラットフォームとフライトコントローラを選定することからスタートすることになるでしょう。その後、対応するハードウェアの選定や開発を進めて行く、という流れになるはずです。
そこで、本格的な機体開発に利用されるフライトコントローラーも少し紹介しておきます。
DJI N3 Flight Controller
DJIが販売している「N3」というフライトコントローラーは、機体の角速度や加速度を計測するIMU(Inertial Measurement Unit:慣性計測装置)が2重冗長系になっています。つまり、2つあるIMUのうち1つが壊れても、もう一つの正常なIMUに自動で切り換えてくれるということです。このため機器としての信頼性が高く安全な飛行を可能にしています。
N3はDJIが提供するOnboard SDKとMobile SDKに対応しており、フライトコードの開発や、モバイルアプリケーションの開発が可能です。また、DJIはN3以外にも、3重冗長系のIMUを備えるN3の上位版「A3」や、コンシューマー向けでより安価な「Naza-M V2」といったフライトコントローラーも販売しています。
Pixhawk
DronecodeやArduPilotなどのオープンソース系のフライトコードに対応したフライトコントローラーとして有名なのが「Pixhawk」です。Pixhawk自体もオープンソース・ハードウェアであり、回路図等が公開されています。
以下の本家サイトを見てもらうと分かりますが、開発が活発で様々なメーカーから様々な製品が販売されています。Pixhawkは主要なオープンソースフライトコードに対応しているため、DronecodeやArduPilotなどのフライトコードを使用する場合は、Pixhawkシリーズのいずれかを選ぶ場合が大半だと思います。
参考Pixhawk
Pixhawkシリーズのフライトコントローラーの中でも、比較的初期のモデルである「Pixhawk 1」については、当サイトでも以下のページで紹介しています。併せて読んでみてください。
-
3DR Pixhawk-APM推奨の高性能ドローン用フライトコントローラー
APM(ArduPilot Mega)の推奨ドローン用フライトコントローラー「Pixhawk」を紹介します。日本ではユーザー・情報が少ないですが、上手く活用するためのスペックやコネクタなどのインターフェース仕様、必要な関連モジュール・周辺機器の情報などをまとめます。
まとめ:ドローン開発をはじめよう
今回は本格的なドローン開発を想定し、開発プラットフォームやおすすめのドローン、フライトコントローラーなどを紹介しました。大規模な開発となるとそれなりの人員が必要になりますが、オープンソースのフライトコードを少しカスタマイズするとか、小規模なプログラムをコンパニオンコンピュータに載せて実行するくらいであれば、個人開発でも可能です。ぜひ、ドローンの開発をはじめてみてください!