見出し画像

ドローンのソフトウェアを学びたい

はじめに

ドローンの制御部分を学びたい、ハードウェア×ソフトウェアの組み合わせで新たなものを作りたい、と思っている方向けの内容です。

長くなるので、結論からお伝えすると、オープンソースである ArduPilot を学ぶのがお勧めです。

この記事は以下の順番に説明します。

・ArduPilot とは
・自ら学ぶ
・ドローンエンジニア養成塾
・Google Summer of Code

ArduPilot とは

ArduPilot は様々な機体を自動操縦するためのオープンソースのソフトウェアです。ドローンで予め設定したルートを自動飛行させる時の制御が ArduPilot のソフトウェアに組み込まれています。

様々な機体と書いたのは、マルチコプターだけでなく、固定翼、車、ボート、潜水艦、4足歩行ロボットも動かすことができます。拡張性を売りにしているので、今後もっと多くのものを動かせるようになるかもしれません。

そして、この拡張性こそが学ぶのに適している理由です。

ArduPilot で動作している、いくつかの面白い機体、機能を紹介します。

任意の姿勢で飛行できるオムニコプターです。機体を回転させながら水平に移動しています。

VTOL(垂直離着陸型)のシミュレータ上でのテスト動画です。マルチローターによる飛行から、変形して固定翼機になります。TRANSWING 設計という、VTOL の欠点である無駄な部分をかなり取り除けています。RealFlight という有料のシミュレータと連携して飛行させています。シミュレータの充実さも魅力です。

後で紹介する「ドローンエンジニア養成塾」の講師の方による4足歩行ロボットの動画です。

屋内で障害物を回避しながら自動走行する車両の動画です。

見ていただいたように、できることが非常に多いです。
まずはベーシックなマルチコプターや車両から基本機能を使うことから初めてみるのがよいでしょう。そして、理解が進んできたら、特殊な機体を用意したり、プログラムを書いて新しい機能を実装してみたり、と楽しみ方は無限大です。

同じようにドローンのオープンソースで PX4 や Betaflight などもあります。ビジネスを考えると違いは色々出てくると思いますが、学びを中心に考える場合には「日本で情報を集めやすい」という点と冒頭で述べた「拡張性」の観点から ArduPilot をお勧めします。

「ドローン」「プログラミング」と検索すると、上位の結果には Tello を用いた Scratch、Swift、Python によるプログラミング学習が並びます。プログラミングをこれから挑戦したい方はこちらから触るとよいでしょう。また、ドローンと連携するアプリ開発をメインで考えている方は、DJI の機体を使用して、DJI の提供する SDK でアプリを作る方がソフトウェアに集中できて便利かもしれません。ドローンのシェアの大部分は DJI ですし、ハードウェアが安定している方が余計なトラブルに巻き込まれなくて済みます。

ただ、それでも私が ArduPilot を勧める理由は、そういったトラブルも新しい知識を学ぶチャンスだからです。ドローンを触って感じることは、ソフトウェアの中でも、単にプログラミングだけでなく、ネットワーク、サーバー構築、セキュリティ、クラウド、OS、ドライバーと様々な知識が求められます。また、航空工学、無線工学、電磁気学、流体力学、気象学、電波法等の法規、といった学問の知識、ハードウェアや組み込み系の知識も必要であり、こんなに広範囲な知識を必要とするものと出会ったのは初めてでした。

様々なことを学べるドローンだからこそ、完成されたハードウェアを使って、ソフトウェアに集中するのは、無限大の可能性を一部の用途に限定しているようでもったいないです。

もちろん空撮がしたいという明確な目的のもとでドローンを購入するなら DJI の方がすぐに目的を達成できるでしょう。
ただ、ドローンでソフトウェアを学びたいという目的であれば、今後の可能性を広げた方が楽しいはず。DJI を使っていると、何かに躓いても中身はブラックボックスだから、、、とどこかで諦めたり、問題を報告しても実際に修正されるかは担当者次第だったりで、受動的にならざる終えません。ArduPilot のオープン性は学びとの相性は抜群です。

自ら学ぶ

ArduPilot を学ぶためのリソースをご紹介します。世界中で使われているため、最新情報を入手するには基本的には英語になります。それでも日本からの発信は増えてきているので、一部の情報は日本語でも入手可能です。

・公式サイト
https://ardupilot.org/

公式サイトのトップページでは、フォーラム、ブログ、sUAS News (無人航空機に関するニュースサイト) の最新の投稿を確認できます。

・日本語のブログ記事

次に日本語で情報が欲しい、とにかくシミュレータで動かしたいという方のために Qiita に載っている SITL を動かす系の記事は参考になります。これでパソコン一台で ArduPilot を体験できます。

・各種 Wiki

ArduPilot を利用するために必要な情報の多くは、Wiki から得られるようになっています。Copter や Plane など種類ごとに Wiki が用意されており、インストールやキャリブレーション手順、パラメータ情報、各種設定など確認できます。

ArduCopter

ArduPlane

ArduRover

ArduSub

Developer Wiki

・ブログ

ArduPilot を使用した事例、ArduPilot で利用可能な製品の紹介、どの機体の種類でも共通で利用される機能に関するお知らせ、などがブログに投稿されます。
毎月の第一木曜(翌週の場合もあり)に「ArduPilot Monthly Update」が投稿されて、最近の更新内容がまとめられているので、それも要チェックです。

・フォーラム

問題が発生した時に、同じような問題を抱えている人が質問を投稿していないかをチェックしたり、自分で質問を投稿したりします。

・ソースコード

ArduPilot のソースコードです。
開発に参加したい方は Developer Wiki を参考にしてください。
ソースコードのどこに何があるかや、どのように作られているかなどはここを参考にします。

・Facebook グループ

ユーザや開発者が日々色々な投稿をしています。

また、日本のグループもあります。

ドローンエンジニア養成塾

独学で始められるのもオープンソースの良さではありますが、広範囲の知識を必要とするため、どこから手を付けてよいか分からない方も多いかと思います。

そんな時には、私が ArduPilot を触るきっかけとなったドローンエンジニア養成塾は非常にお勧めです。
2021年の5月~7月までの3か月間のコースで、ArduPilot を体系的にステップバイステップで学ぶことができます。

年に2回(春夏と秋冬)ずつ開催されていて、次は第11回目です。10回の開催で卒業生は350名もいます。そして、卒業生は Facebook のコミュニティでつながっていて、情報交換が可能です。

この記事を見たときには既に開催期間が過ぎていた、という方でも半年ごとの開催なのでドローン・ジャパンのホームページで次の開催日程を確認してみてください。

私自身は学生時代からプログラムを書いていましたが、ハードウェアには無頓着でした。ただ、養成塾の講義の時に自分の書いたコードでドローンを制御した時に、実際に動くものを制御する楽しさを覚えました。

また、養成塾にはソフトウェア関連の人だけではなく、撮影を専門とする方やラジコンに熱中していた方、業務でドローンを触っている方など幅広く参加されます。異業種の方と同じ目的を持って交流できる貴重な場でもあります。

大人が集まって、子供のように目を輝かせながらすごく活き活きと活動する場ってワクワクしませんか?

Google Summer of Code

学生なのでお金が無くて・・・という方は、Google Summer of Code (GSoC)を利用して、お金をもらいながら ArduPilot の開発に携わり学んでいくという方法もあります。参加資格は18歳以上の学生です。

GSoC については以下のブログを参考にしてください。

ArduPilot は 2017年から GSoC のプログラムに5年連続で選ばれています。すっかり常連です。

これまでの4年間で18名の方が参加したと思いますが、まだ日本人の方はいないので、是非初のチャレンジャーを目指してください。
興味はあるけど、何を作ればいいか分からないという方はアイデアリストも用意されています。

上記のリンクの最後には、これまでの成果も記載されています。
以下に一部を取り上げます。

・飛行した経路を辿ってホームに戻る Smart RTL 機能
・セグウェイのように傾きで移動する2輪車のBalanceBot
・Microsoft のドローン用シミュレータ AirSim との連携
・トラッキングカメラを利用した非 GPS 環境でのナビゲーション

どれも非常に素晴らしい成果で、また今年もどんな学生が何を作るのかが楽しみです。

最後に

私自身が ArduPilot にどっぷりはまっている立場であるため、結構偏っている内容だったかもしれません。

ただ、冒頭で述べたような、以下の志を持つ人には自信を持って ArduPilot をお勧めします。

・ドローンの制御部分を学びたい
・ハードウェア×ソフトウェアの組み合わせで新たなものを作りたい

単にドローンで遊びたいのであれば、完成された DJI の製品がお勧めです。

ArduPilot は拡張性が高く、自分たちの手で新しいものを生み出す可能性に溢れています。
未完成だからこそ、自らの手で可能性を広げることの面白さがあります。

途中でドローンエンジニア養成塾の宣伝も行いましたが、これで生徒が集まれば私にお金が入るわけではありません。

新しいことを始める際には、仲間がいることが極めて重要です。

養成塾が始まり5年間、それまで積み重ねてきた運営・講師陣の経験を吸収できることと、育ってきたコミュニティへの参加は、学びを加速させてくれるでしょう。

まずは行動してみる、チャレンジに貪欲になる。私の合言葉です。

もしあなたが学生で、GSoC に少しでも興味を持ったなら是非チャレンジしてください。応募をするために、確認や準備に費やした時間は財産になります。

とにかくチャレンジする精神を持っている人は、例え失敗する回数が増えたとしても、成功や幸運をつかみ取るチャンスも増していきます。

やりたいと思ったことなら、できる、できない、はチャレンジしてから考えるといいでしょう。

これを見て、ArduPilot を始めたいと思う人がいてくれれば嬉しいです。

この記事が気に入ったらサポートをしてみませんか?