ドローンプログラミング

ドローン開発で使用されるプログラミング言語の適用分野別まとめ

ドローン開発で使用されるプログラミング言語まとめ

こんにちはー!ドローン自作家のK-ki(K-ki@Ailerocket)です。ドローン使う際には様々なソフトウェアを利用することになります。機体に搭載されているものだけでなく、地上から機体をコントロールしたり、取得したデータを解析したりと、その種類は多岐にわたります。

そして、ソフトウェアの目的によってそれを作るために使用するプログラミング言語が変わってくる、ということを知っているでしょうか。それぞれの言語に特異・不得意があるので、目的に応じた使い分けが行われているのです。

今回は、ドローンとプログラミング言語の関係に注目しながら、ドローンにおけるソフトウェア開発について紹介します。

ドローンが活用される業種

まずはドローンに関連するソフトウェア開発の分野を説明したいのですが、その前にドローンがどんな分野で活用されるのか、代表的なものを確認しておきましょう。ドローンの活用分野を知っておいたほうが、ドローンをどんな目的で開発するのかイメージしやすいためです。

検査・点検

ドローンの活用分野の中でも今後数年間の伸びが著しく、市場規模が一番大きくなると見込まれているのが検査・点検の分野です。点検や検査の対象はソーラーパネルや送電線、建物の外壁など多岐にわたりますが、特にトンネルや橋など交通インフラの老朽化が進むのに伴い点検の需要が増すと考えられています。

ドローンの検査・点検ビジネス徹底解説
ドローンによるソーラーパネル・外壁等の点検ビジネスを徹底解説

国内ドローンサービス市場の中でも最も今後成長すると言われる検査・点検分野について、ビジネスとしての現状と今後の展望を解説します。ドローンによる点検において役に立つ資格や能力、作業を依頼できる企業なども紹介します。

この用途では、ドローンに搭載した赤外線カメラを使うことで従来手法である近接目視や打音確認に比べ省人化が可能なこと、人が立ち入りにくい場所を安全に検査できることなどにドローンの優位性があります。

農業

農業分野では従来から無人ヘリコプタによる農薬散布が行われており、ドローン(マルチコプター)はその一部を代替すると考えられています。また、「スマート農業」という言葉が認知されるようになってきており、ロボットやICT技術を利用した農業の効率化・高精度化が推進されている面もドローンにとっては追い風です。

ドローンが活躍するスマート農業と農薬散布の資格・手続き
2020年最新・ドローンが要の「スマート農業」と農薬散布の資格解説

近年は「スマート農業」という言葉が広がり、ロボットやICTを利用した農業の効率化が推奨され、ドローンも農薬散布等で実用されています。農業におけるドローンの活動や、ドローンを農業で使うための手続き、資格、法律等を解説します。

ドローンの機体価格は無人ヘリコプタに比べるとおよそ10分の1程度であり、コスト面で優位性があります。従来から無人航空機が利用されてきた分野のため、他の分野に比べるとドローンの導入が進んでいます。

土木・建築・測量

ドローンを使い上空から撮影した写真を専用のソフトウェアで処理することにより、3次元地形モデルを得ることが可能です。従来の測量方法に比べると短時間で広範囲の測量ができるため、人件費高騰や人手不足という測量業界の課題を解決することが期待されています。

ドローン測量士になる方法
ドローンでの測量に資格は必要?ドローン測量士になる方法とは

ドローン活用分野の中でも特に今後の成長が見込まれる測量分野で活躍する「ドローン測量士」になる方法を説明します。測量分野が抱える問題とドローンでの解決法を示し、ドローン測量士になるために必要な資格や役立つ資格も紹介します。

ドローン測量では、機体を使うのは写真撮影をする程度で、肝心なのはその後のソフトウェアによる処理作業です。また、ドローン測量であっても、測量を行うためには「測量士」または「測量士補」の資格が必要になります。

撮影・空撮

ドローンの活躍する分野として知名度が高い空撮ですが、以外にも点検や農業と比べると市場規模は小さめです。他の分野では、安定した飛行が求められる反面、空撮の分野では映像の魅力を増すために場合によっては難度の高い飛び方が求められることもあり、操縦技術としては比較的高いレベルを求められます。

ドローン撮影・空撮の基礎知識
ドローン撮影・空撮の基礎知識!機材・資格・許可申請などを解説

ドローン活用分野の中でも特に知名度が高い撮影・空撮分野について、市場規模の分析から使用される機体・カメラ等の機材、法律で定められる飛行許可申請の方法まで幅広く解説します。また、空撮で役立つ資格やその取得方法も紹介します。

コンシューマー向けに販売されている機体でも、スペック面だけ見れば結構なクオリティの動画・写真が撮れるため、機体の導入コストは安めで個人でも参入しやすい分野です。

  • ドローン操縦士

ドローンに関連するソフトウェアの開発分野

ドローンに関連したソフトウェア開発には、大きく分けて「飛行制御」「アプリケーション」「データ解析」3つの分野が存在します。それぞれを紹介するとともに、それぞれの分野がどの業種とどう関わってくるのか、という観点も紹介します。

飛行制御・自動操縦(オートパイロット)

ドローンソフトウェア開発の分野としては、第一に機体の制御を行うソフトウェアが挙げられます。いわゆる自動操縦(オートパイロット)機能を提供する分野です。ドローンの姿勢、方位、速度、高度など、機体の運動をコントロールする役割を持ちます。

ドローンを飛ばす以上、どんな業種であっても機体の制御は行う必要があります。既製品の機体を購入する場合は、基本的な自動操縦機能は搭載されている場合が多いですが、目的に応じたカスタマイズが必要になることも少なくありません。従って、飛行制御分野はドローンを使う業種を問わず必要とされると言えます。

実際の開発では、飛行制御のプログラムをゼロから作り上げる場合もありますが、DJIなどの機体メーカーが公開しているSDK(Software Development Kit:ソフトウェア開発キット)を利用して既存の自動操縦プログラムに機能を追加する場合や、ArduPilotやPX4 flight stackのようなオープンソースの飛行制御ソフトウェアをカスタマイズする場合などもあります。

アプリケーション

ここでは、ドローンの機体に搭載されるコンパニオンコンピュータ(フライトコントローラー以外のコンピュータ)上で動作し、自動操縦以外の目的を持つソフトウェアのことを「アプリケーション」と呼びます。また、ペイロード制御などの言葉で表される、ドローンの搭載品を制御するソフトウェアもここに分類することとします。

例えば、機体に搭載した超音波センサのデータを解析して障害物を回避するための動きをフライトコントローラに指示するソフトウェアや、空撮用ドローンが搭載しているカメラがぶれないようにするジンバルを制御するためのソフトウェアなどがこの分野に該当します。

データ解析

ドローンを飛ばす目的の多くは「データ取得」です。空撮分野であれば動画や画像のデータ、検査・点検分野であれば検査対象のヒートマップのデータを取得するのが目的です。ドローンを使って取得したデータはそのままで役に立つわけではなく、多くの場合何らかの処理・解析をして利用します。このページでは、これらの取得データを処理・解析して有用性を高めるソフトウェアを「データ解析」の分野として整理します。

例えば、ドローン測量の分野では、ドローンを使って撮影した画像をソフトウェアで処理し3次元の地形モデルを作ります。この画像から3次元モデルを作る処理を行うソフトウェアが、データ解析分野に該当します。

C言語/C++

ドローンが活用される業種とソフトウェア開発の分野を紹介したところで、具体的にドローン開発で使用される言語について紹介していきます。まずはC言語及びC++について紹介しましょう。

C言語はコンパイラ言語の1種で、汎用性が高くドローンに限らず様々な分野で使用されています。C言語でプログラミングすると、コンパイル後の機械語をイメージしやすく、余計な処理が増えることがないためプログラムを軽量で高速にしやすいです。また、歴史の古いプログラミング言語であるため、C言語で記述された既存のソースコードやC言語に対応する開発環境など、多くの既存資産を流用できる点も強みです。

補足説明

プログラムは人間が理解できるように書きますが、そのプログラムを実行するためには一度機械が理解できる「機械語」に変換する必要があります。全てのソースコードをあらかじめ機械語に変換しておくプログラミング言語を「コンパイラ言語」、コードを実行する際に逐次機械語に変換していくプログラミング言語を「インタプリタ言語」と呼びます。また、機械語に変換することを「コンパイル」と呼びます。

C++は、C言語をオブジェクト指向プログラミングをはじめとする様々なプログラミングパラダイム(プログラミングの考え方・記述方法)に対応するよう派生させたもので、C言語と混在させて使用することが可能です。

ドローンに関連するソフトウェア開発プロジェクトのうち、主にC/C++で記述されているものの代表例は、「PX4 flight stack」や「ArduPilot」など飛行制御に関連する分野のプロジェクトです。

参考GitHub – PX4/Firmware: PX4 Autopilot Software

飛行制御・自動操縦の分野では、風に煽られて機体のバランスが崩れた際など、安定性を保つために素早い制御が求められる場面が多々あります。そのため、こういった飛行制御の分野では処理速度に優れるC言語/C++が利用されることがほとんどです。また、ジンバルなどを制御するアプリケーション(ペイロード制御)の分野でもよく使われます。

ドローンをC言語/C++で開発 ー自動操縦向けー
ドローンをプログラミング言語「C/C++」で開発:制御・自動操縦向け

ドローン開発に使用される多くのプログラミング言語の中からC言語及びC++言語について、特徴やドローン開発でどんなソフトウェアに利用されるかを解説します。また、C言語の習得方法やC言語でプログラミングし飛ばせる機体も紹介します。

ドローン開発におけるC言語/C++の役割については、こちらのページで詳細に解説しています。あわせて読んでみてください。

Python(パイソン)

Pythonはインタプリタ言語の1つで、機械学習や人工知能などの分野に非常に強いプログラミング言語です。C言語やC++に比べると、分かりやすいプログラムを、少ないコードの行数で書けるという特徴があります。一方で、処理速度の面ではC言語やC++には劣ります。

Pythonには様々な長所がありますが、特に「プログラムを簡単に書けること」と「さまざまな領域に対応するライブラリが豊富なこと」により非常に人気の高いプログラミング言語となりました。様々なのハードウェアとOSに対応し、多様なプログラムの書き方ができるところも魅力の一つです。

ドローン関連の分野としては、「Numpy」や「Pandas」といった非常に強力なライブラリを活かし、データ解析の分野で使用されることが多いです。また、フライトコントローラーと比較すると処理能力に余裕がある場合が多い、コンパニオンコンピュータ上のアプリケーションで採用されることも多いです。

実際のドローン関連のソフトウェア開発プロジェクトの例を挙げると、MAVSDKのPython版である「MAVSDK-Python」などが存在します。MAVSDKは、主としてフライトコントローラーと通信を行うコンパニオンコンピュータ上で動作し、フライトコントローラーから情報を取得したり、フライトコントローラーに対して飛行目標位置(ウェイポイント)を指定したりすることができます。

参考GitHub – mavlink/MAVSDK-Python: MAVSDK client for Python.

ドローン開発におけるPythonの得意分野や具体的な開発プロジェクトについて、以下のページで紹介しています。Pythonに興味のある方は、こちらも読んでみてください。

ドローンをプログラミング言語「Python」で開発:自律飛行・画像認識

ドローン開発に使用されるプログラミング言語の中からPython(パイソン)について、特徴やどんなソフトウェアの開発に利用されるかを実例を交え紹介します。また、Pythonの習得方法やPythonでプログラミングし飛ばせる機体も紹介します。

Scratch(スクラッチ)

Scratchは、プログラミングを学ぶために作られた言語です。一般的にプログラミングはテキストでコンピュータに対する命令を記述しましが、Scratchの場合は「命令ブロック」を組み合わせることでコンピュータに対する命令を記述することができます。プログラムを視覚的に構築することができるので、文法的に正しく書くことの難しさを排除し、プログラミングで必要になる「考え方」を身につけることができます。

ドローン関連でScratchが使用されている具体的な例として、Ryze TechnologyがDJIの協力を得て開発した「Tello」という機体があります。Telloはトイドローンとしては非常に安定して飛ばせる優れた機体である上に、Scratchを使って組んだプログラムで機体を操作することも可能です。プログラミングを学べばどんなことができるかがわかりやすく、子供ウケが非常によいプログラミング教材としても優れた存在です。

created by Rinker
¥12,980 (2020/09/27 23:15:32時点 楽天市場調べ-詳細)

Telloの上位版である「Tello EDU」では、ScratchだけでなくPythonやSwiftによるプログラミングにも対応しており、大人でも十分に楽しめるドローンに仕上がっています。

ドローンでScratchを使ったプログラミング教育に挑戦
子供も書ける言語「Scratch」でのプログラミング教育をドローンで!

教育・学習向けのプログラミング言語「Scratch(スクラッチ)」を使い、ドローンを教材にしてプログラミング教育を行うことが可能です。ScratchでプログラミングできるドローンやScratchを学べるプログラミング教室を紹介します。

ドローンとScratchを組み合わせると、子どもの興味を引き、飽きにくいプログラミング教育ができるでしょう。詳細はこちらのページも参考にしてください。

代表的な開発プラットフォーム

ドローンをゼロから開発することももちろん可能ですが、多くの場合は既存の開発プラットフォームを利用して開発を行います。ドローンを使う目的は単純に飛ばすことではなく、ドローンを使ってデータを取得したり、物資を運んだりする「サービス」の面にあるため、単純に飛ぶ機能は既存のソフトウェアを使って労力を減らすのが一般的です。

DJI Developer SDKs

「DJI Developer SDKs」は、世界最大手のドローンメーカーである「DJI」が公開しているSDK群です。DJI製のドローンやフライトコントローラーを使用する場合には、基本的にこちらを使用することになるでしょう。

DJI Developer SDKsを利用すれば、DJI製のドローンを利用するiOSやAndroidアプリを作ったり、DJI製ドローン上にRaspberry Piなどの小型コンピュータを搭載してフライトコントローラに指示を与えるソフトウェアを作ることも可能です。

Dronecode

オープンソースのドローン開発プロジェクトとして有名な「Dronecode」というプロジェクトも存在します。Dronecodeでは、飛行制御プログラムから、地上で飛行目標位置を設定するようなプログラム、あるいはドローンのシミュレータまで一通りのソフトウェアが用意されています。

Dronecodeプロジェクト
Dronecodeとは何か―オープンソースドローン開発プラットフォーム

ドローンの統合的な開発プラットフォームとしてDronecodeが注目されています。日本語での情報が少ないDronecodeの背景とプロジェクト構成を紹介します。フライトコントローラ・シミュレータ・アプリ用APIなどハード・ソフト両面にまたがるプロジェクトです。

これらのプログラムのソースコードを直接改変したり、あるいは開発者用に用意されているSDKを利用してソフトウェア開発を行うことが可能です。

プログラミングできるドローン

市販されているドローンの中には、ある程度開発者がプログラミングを行うことを前提にしている機体があります。こういった機体のほうが、カスタマイズするためのハードルが低く、ソフトウェア開発がしやすいです。

Ryze Tech Tello Powered by DJIシリーズ

created by Rinker
¥12,980 (2020/09/27 23:15:32時点 楽天市場調べ-詳細)

Ryze Technologyの「Tello」は、上でも紹介したとおりDJIの支援を受けて開発された機体です。専用アプリを使用するとScratchによるプログラミングが可能になるほか、上位版である「Tello EDU」を使用すればPythonやSwiftを使ってプログラミングすることも可能になります。

トイドローンでありできることが限られるため、本格的な開発には向きません。ただし価格が安いため、子供向けのプログラミング教材や、初心者が初めてドローンプログラミングに挑戦する場合などには有力な候補になります。

DJI MATRICEシリーズ

created by Rinker
¥604,890 (2020/09/27 20:43:49時点 楽天市場調べ-詳細)

MATRICEはDJI製の産業向けドローンで、搭載できる機材の幅が広くカスタム性の高い機体です。MATRICEに特定の機材を搭載した上で、その機材からフライトコントローラに指示を送って特殊な飛行方法を実現するソフトウェアや、地上のコントローラから搭載機材を操作するソフトウェアなどを開発することも可能です。

価格は高いですが、大型で安定した機体でありペイロード(積載可能重量)も大きいため、本格的な開発に向いています。

機体を自作する方法もある

Dronecodeを利用してドローンのソフトウェア開発を行う場合は、機体を自作することが多いです。K-kiもソフトウェア開発とまでは活きませんが、Dronecode内のいくつかの開発プロジェクトを利用してドローンを自作し、実際に飛ばしています。

ドローン空撮 APM:Copter AUTOモード ウェイポイント飛行
【ドローン空撮】APM:CopterのAUTOモード・ウェイポイント飛行の設定・実施法

オープンソースのオートパイロットプラットフォーム「APM:ArduPilot Mega」を利用して、指定航路を飛行するウェイポイント飛行(ミッション飛行)を実施する方法を解説します。ファームウェアにAPM:Copter/ APM:Plane、フラコンにPixhawk等を使用します。

自作ドローンで空撮をした時の様子をこちらで紹介しています。興味があれば読んでみてください。

  • ドローン操縦士

プログラミングスクールでの学習も効果的

ドローンに関わるプログラミング・ソフトウェア開発を行う場合、少なからずプログラミング能力が必要です。プログラミングは独学で身につけることも可能ですが、近年はプログラミングを学べるプログラミングスクールが急速に増えており、価格競争も進んできたため、プログラミングスクールで学ぶのも良いでしょう。

独学でプログラミングをしていると、どうやったら問題を解決できるかわからず長時間悩んでしまう「ハマる」という状態になりやすいです。短時間でプログラミングスキルを身につけるためには、プログラミングスクールで学ぶのが良いでしょう。

飛行制御に関わりたいならC言語を学べるKENスクール

プログラミングスクールが増えたと言っても、多くのスクールではウェブやスマートフォンアプリなどの分野が学習の中心であり、ドローンの飛行制御のような、C言語を使っていわゆる「組み込みシステム」に活かせるプログラミングが学べるスクールは少ないです。そして、数少ない組み込みシステムについて学べるプログラミングスクールの一つが、「KENスクール」です。

KENスクールではC言語を使った組込みシステム開発が学べるカリキュラムが用意されており、機体の制御に関わるプログラマ・エンジニアになるなら学んで損はありません。東京を始めとして関東地方を中心に、名古屋、大阪、札幌、福岡などに校舎があるため、全国の広い範囲の人におすすめします。

ドローンのアプリ開発ならPythonを学べるTECH ACADEMY

近年人気が高まっているプログラミング言語であり、ドローンに限らず活用範囲の広いPythonを学ぶなら、プログラミングスクールとして非常に有名な「TECH ACADEMY」がおすすめです。TECH ACADEMYはオンラインでプログラミングを学べるスクールで、全国各地どこに住んでいる人でもすぐにプログラミング学習を始めることが可能です。

TECH ACADEMYではPythonに特化したコースを用意しています。Pythonの活用分野として需要がある「機械学習」をテーマに学習をすすめるため、産業分野で役に立つ技術の習得が可能です。また、専属のパーソナルメンターがついて指導してくれるため、オンラインだからといって質問がしにくいということはなく、効率よく学習を進められます。

ドローンのデータ解析なら機械学習に強いDIVE INTO CODE

Pythonを使ってより本格的に機械学習やディープラーニングといった人工知能に関連する分野を学びたい場合は、DIVE INTO CODEがおすすめです。ドローン関連のソフトウェア開発と言っても、取得したデータを解析するようなソフトウェアの開発においては、大量のデータの処理に強みのある機械学習やディープラーニングの重要性が日に日に増しているため、ドローン関連の開発をやりたい人にとってもメリットの大きいスクールです。

こちらのスクールでは講習を受ける前に無料のカウンセリングを行っているため、まずはこれに参加してみましょう。

  • この記事を書いた人
  • 最新記事

K-ki

著者:K-ki 子供のころに作った模型飛行機がきっかけで航空宇宙の世界に足を踏み入れたエンジニア。HNは「けーき」と読みます。 好きなものは航空機(固定翼・回転翼・ドローンなど全般)と生き物・アクアリウム。

-ドローンプログラミング

© 2020 Ailerocket/エルロケット