Tomofiles Note

ドローンとインターネット、そして人との関係を考えるソフトウェアエンジニアのアウトプットブログ

ドローンの関連技術について調べた

どうも、tomofilesです。

最近ドローンパイロットの学校に通い始め、本格的にドローンに向き合うようになりました。
やっぱりただの開発要員としてドローンのソフトウェア開発に携わっているだけでは見えないものが、
少し見えてきたように思えます。

ドローンの操縦練習もあるのですが、超シンプルなFCだけ積んだドローンが、とにかく難しい。
最近は毎日家の中でトイドローンを飛ばしていますが、家中を壁に当たらないように飛ばすのが面白い。
廊下とか狭い隙間とか入っていって、墜落しないような操作を練習しています。


さて、本格的にドローンと向き合うソフトウェアエンジニアを目指すからには、
現在のドローン周辺技術を知っておかねばなりません。
ということで今回は、私が現状を把握するために"うっすら調べた"ドローン業界の
あれこれをうっすらまとめてみたいと思います。


ドローンメーカーはDJI一強

ネット検索して表示されるサイトはどれも、だいたい2015〜2017年あたりの記事ばかりです。
ドローンが世間を騒がせていた辺りというのと、航空法が改正されたころの時期と一致していますね。
これらの記事をざっと見る限り、ドローンの機体メーカーはこの頃からDJI一強のようです。

世界的には、中国のDJI、フランスのParrot、アメリカの3D Robotics、この3社が世界シェアの8割を
担っているらしいですが、3DRはハードから撤退、ParrotはDJIの勢いに追いやられているとのことで、
DJIが圧倒的なシェアを築いているそうです。

私は仕事柄大手SIerでドローン案件に関わることが多いですが、よく耳にする機体はどれも、
DJIのものが多い気がします(Phantomシリーズ、Matriceシリーズが多いですかね)。
あとは国内メーカーの機体の使用も、よく耳にします。

ドローン関連技術の2つの勢力

ソフトウェアエンジニアとして気になるのは、ドローンのソフトウェア関連技術の動向です。
ドローンはハードも含めての技術の結集なので、非常にその流れを汲むのが難しい。
とくにOSS界隈は、ライセンスの考え方でプロジェクト分裂という経緯があるみたいです。

ドローン関連技術については、以下の構図で考えると理解しやすい。

  • DJI系
  • Dronecode系

これはそのまま、

  • クローズ系
  • オープン系

と読み替えられます。
iOSAndroidの関係に例えられることがあるようですが、
技術公開をしないクローズな開発を進めるDJIに対して、オープンソースで技術公開をして、
技術発展を図るDronecodeの2つの勢力は、まさにスマートフォン発展期の様相を呈しているように思えます。

数年前に、このDronecodeプロジェクトの根幹だったArduPilotというソフトウェアプロジェクトが、
ライセンスの考え方の違いで内部分裂を起こして独立、新しいOSSプロジェクトとして立ち上がりました。
こちらにもすでにパートナーがついてプロジェクトが発展しており、新たな勢力となっているようです。

クローズな環境で進化するDJI

DJIは機体や頭脳であるFCに至るまで、技術公開をしていません。
ただその代わり作り出すプロダクトは非常に魅力的なドローンばかりで、
主にコンシューマ向けの製品展開をして支持を得ています。

Webサイトのカタログを見ているだけで欲しくなるドローンが多くて、
Inspireなんか空撮をしない私でも、カッケーって思ってほしくなります 笑

ドローンを業務で活用したいと考える事業者は大体、DJIのドローンを購入しているように思えます。
主に空撮(一般撮影、赤外線撮影など)を目的にしている人が多いためだとは思いますが、
私の仕事で登場するのもDJIの機体が多いです。

DJIはハード面では触れるところが少ないように思いますが、
組み込み用、アプリ開発用のSDKを提供していて、ソフト面のカスタマイズは充実しています。
それぞれ、Onboard SDK、Mobile SDKといい、DJIの機体に搭載されたFCと通信して、
テレメトリの取得やミッションの登録が出来ます。

ここまで偉そうに書いてきた私ですが、実はこれらのSDKを使ったことがありません。
ドローンの機体周りの開発チームが別にいて、私はその機体で集めたデータを活用する
Webシステム側なので、機体に近い技術には触れたことがないのです。

だからこそ独学でも良いからやってみたいと思っているのですが、
これらのSDKを使用して"動かしながら"プログラミングするには、DJIの機体が必要なのです。
特にOnboad SDKを触るには産業用シリーズのMatriceが必要で、1機体最低数10万します。
手が出せません!!! 笑

ってことで、いつか機体チームに入り込めるように虎視眈々と、狙う日々です。。。

オープンな技術発展を図るDronecode

こちらは企業ではなく、オープンソースプロジェクトになります。
もともとは3D Robotics関連だったようですが、今はLinux Foundation傘下のOSSのようです。
Dronecodeの主要プロジェクトとしては、以下の内訳となっています。

ドローンの機体制御、ドローンとの通信規格、ドローンとのユーザーインターフェース
そして、ソフトウェア開発促進のSDKと、ドローンのハードウェア以外がオープンになっています。
(ハードウェアもオープンなんですかね? Pixhawkのクローンが多いというのはオープンということでしょうか)

こちらの勢力は、とにかく全体像をつかむのがとにかく難しかった。
DJIみたいに機体を用意してくれていないので、ハードウェアの知識が必要になります。
私は組み込みもラジコンもやらないので、とにかくこの辺が疎くて調べるのに難儀しました。

OSSでドローンプログラミングを始める場合にも、まずはFCというハードは必要です。
OSS界隈でのFCは、Pixhawkという小型コンピュータが代表的(というかそれ以外はまだ知らない)で、
このFCに、各種センサーを接続して、ドローンの機体を組み上げます。
IMUなどの最低限のセンサーはPixhawkに組み込まれていますが、GPSは外付けになる、といった感じです。

こちらは逆に自由度が高すぎてどうして良いかわかりませんが、
最初は、フレームやモーター、プロペラなどもセットになった組み立てキットから始めるのが良いのかな、
なんて調べながら考えていました。
Pixhawkを中心に、必要なもの足りないものを、ネット上のいろんなセットの内容を見ながら調べていたら、
結構仕組みが把握できてきました。
私はDJIの機体を買うのではなく、この組み立てキットを買って、ドローンプログラミングに入門しようと考えています。

MAVSDKのソースコードを見ていて

MAVSDKのGithubを見て気づきましたが、現在も活発に開発が進められています。
MAVSDKはコアとなるC++のFCユニットと、そのコアと連携して利用できるPython等のSDKクライアントで構成されています。
最近このコアとのインターフェースにgRPCが採用されたようで、gRPCを利用することで、
プログラミング言語に寄らないソフトウェアの開発ができるようになってきているみたいです。
面白いこと考えますねー、OSSって。
と、とたんにDronecode系に興味が傾いた瞬間でした。


ドローンの関連技術について、あれこれ調べてきましたが、やっぱり内容がうっすらですね。
まだ導入というか、そもそも何も買っていないので、もっと踏み込んでいくのはこれからだと思います。
仕事柄DJI系のSDKに強くなったほうが役に立ちそうな気がしているのですが、
とてもじゃないけど手が出せなさそうなので、オープンソースから攻めていくことにしようと思っています。


さて、まずは中国の通販サイトから、組み立てキットを注文せねば。。。(不安)