ドローンコントローラー

仕事でドローンを扱う場合も、趣味のドローンを組む際や、ちょっと自作ロボットで遊んでみようと思いたった時も、プロジェクトを始める前にまず直面するのが、どのコントローラーを使うか、という非常に重要な決断です。

いわゆるフライトコントローラーや、オートパイロット、ロボットコントローラーと一般的に呼ばれるオンボードコンピューターは、ドローンの姿勢制御だけでなく、センサー入力やペイロードへの信号出力をはじめ、飛行中の機体のほぼ全てを司る、非常に重要なコンポーネントです。

このコントローラーを選択する際に誰もが感じるのが、選択肢が多すぎて困る、ということだと思います。一昔前には考えられなかったほど多くの選択肢に恵まれている、とも言えますが、あまりの情報量に頭を抱えてしまうユーザーが非常に多いのも事実です。また、情報がネットのあちこちに分散していて、なおかつものすごいスピードで技術が進化しているので、見つけた情報が古すぎて役に立たないどころが、却って有害でさえある、ということも多々あり、スマートに情報を精査するのは至難の業ですし、すべてのコントローラーの最新情報を網羅的に把握するのはほぼ不可能です。

そこで今回は、最もポピュラーなオープンソース系のフライトコントローラー、特にZenbotでも採用しているPixhawk系のコントローラーに絞って概要を解説したいと思います。

フライトコントローラー・オートパイロット・ロボットコントローラーとは?

定義はいろいろありますが、センサーやユーザーのインプットを処理して、外部のアクチュエーターに操作信号を送る小型コンピューター、と考えれば基本的にみな同じものと考えられます。マルチコプター専用のユニットや、各種ロボットに対応したもの、等いろいろありますが、最近流行りのオープンソースのコントローラーであれば、様々な用途や機体に流用可能です。

これらは一般的に、小型省電力のマイクロコントローラーや、シングルボードコンピューターをベースにし、SDカードやセンサー、各種入出力ポートを備えた小さなボックスで、センサーや外部入力データをI2C、SPI、CAN、シリアル等のポートで受け取り、外部機器にPWMや各種ポート経由で制御信号を送り、モーター、サーボ、その他のアクチュエーターを操作して、機体の姿勢制御等を行う、という基本形はどれも同じです。さらに、WiFi、Bluetooth、ZigBeeなどの通信リンクを経由して、リモート制御やモニタリングもできたり、ログを保存しておいて後で解析したりできるものが多いです。

しかし、性能や機能はそれぞれのコントローラーによって大きく異なります。最もシンプルなフライトコントローラーは、ジャイロと加速度センサーを使って機体を安定させるだけのものから、GPS、レーザーレンジファインダー、画像認識などを使って障害物を避けたり、複数機が連携しながら自律的に飛ぶものまで様々な種類があります。

ControllerComponents

フライトコントローラーのエコシステム

コントローラー本体

IMUやバロメーターなどの基本的なセンサーを搭載したオンボードコンピューターを指します。Controller

フライトコントローラーには大きく分けて、マイクロコントローラーをベースにしたのものと、Linux SBC (Single Board Computer/シングルボードコンピューター)をベースにしたものがあります。また、最近では、マイクロコントローラーベースのコントローラーで姿勢制御し、コンパニオンコンピューターとしてLinux SBCを接続し、そちらに画像処理などの高負荷処理を担当させる方式も増えてきました。

Zenbotでは、様々なコントローラーの中でも、世界最先端のPixhawk系のコントローラーを採用しています。
Pixhawk Hardware TypesController Hardware Types

フライトコントローラーハードウェア

ソフトウェア

ドローン向けのソフトウェアは、機体側で実行するフライトコントロールと、PCやタブレット上で実行するグランドコントロールの2つに大きく分けられます。

ControllerSoftware

オンボードフライトコントロールソフトウェア(ファームウェア)

ファームウェア は、機体上の制御コンピューター(オンボードフライトコントローラー)上で走るソフトウェアです。

Pixhawk系のハードウェアに対応したファームウェアは大きく分けPX4とArduPilotの2種類があります。どちらも長所がありますので、Zenbotでは、機体やアプリケーションに合わせて最適なスタックを使用しています。

グランドコントロールステーション (Ground Control Station / GCS)

Ground Control Stationは、PCやタブレット、スマートフォン上で実行され、ファームウェアの設定や機体の状態を監視したり、ウェイポイントの入力などを行うソフトウェアです。テレメトリーリンクを介して機体側と通信し、センサーの値をモニタリングしたり、機体にコマンドを送ったり、ログ解析を行ったりすることができます。

これも様々な種類があり、それぞれ長所がありますので、Zenbotではどれか一つに限定することはせず、使用するファームウェアや環境に最適なものを使用しています。

外部機器

フライトコントローラー以外に、外部センサー、パワーモジュール、RC送受信機、テレメトリー通信モジュール等が必要です。

外部機器がコントローラーを選択肢を限定することもあります。例えば、最新のLiDARやIRビーコンを使いたい場合、コントローラーやファームウェア側でセンサーに対応していなければ、そのセンサーを使うことはできません。特定のフライトコントローラー向けのドライバーしか提供していないセンサーや、サポート外になるセンサーも多いです。

しかし、Zenbotで採用しているオープンソース系のコントローラーの場合、共通の信号経路さえ確保できれば(I2C、CAN、シリアル等)、自分でドライバーを書く道は残されています。これはテレメトリーモジュールやジンバル、その他のアクチュエーター等も同じです。このあたりは、DJI等のクローズドなコントローラーではそもそも実装できないことが多い領域です。

Perihperals

オープン v.s. プロプライエタリ

オープンソースのフライトコントロールソフトウェアは多数あり、機能や性能が大幅に違います。クローズドな製品は、見た目はカッコ良く初心者には扱いやすいことが多いですが、機能的には劣ることが多く、また機能拡張したい、といった場合のメーカーサポートは殆ど期待できません。

オープンソースシステム

ここでいうオープンソースには、2つの意味があります。通常、オープンソースというとソフトウェアを連想しますが、特にドローン用のコントローラーは、ハードウェアもオープンソースで開発されるケースが増えてきています。この場合、回路図やPCBのレイアウトデータ等がオープンソースで公開され、自由に改変したり、改良を加えたりして自分で製造したり、PCB専門の会社に発注して作ってもらことができます。ドローン向けのフライトコントローラーの多くが、ハードウェアとソフトウェアの双方をオープンソースで展開しています。
PX4 vs ArduPilot

オープンソース・フライトコントローラーの例

部分的オープンソース

オープンとクローズドなソフトウェアとハードウェアを組み合わせたシステムも登場してきています。特に、インテル、クアルコム、テキサス・インスツルメンツといった半導体メーカーがIoTやドローン向けに大々的に参入してきており、これらメーカーが提供するボードはオープンな部分とクローズドな部分を兼ね備えたハイブリッドな構成であることが多いです。

Zenbotでは、これらの新しいフライトコントローラーも常に精査し、要件に合わせて採用しています。

完全クローズドシステム

DJIのようなクローズドなプロプライエタリシステムでは、ソフトウェアもハードウェアもソースは公開されていませんが、限定的な機能拡張を可能にするAPIが提供されていることが多いです。

カスタムドローン開発が専門のZenbotでは、拡張が難しいクローズドなシステムは基本的に使用しません。

Intel、IoT事業再編か

Intelが、IoT関連製品の内、Galileo、Edison、Jouleの製造を中止するようです。

GalileoはIntel版のArduinoで、スマホの波に完全に乗り遅れたIntelが、IoTのビッグウェーブには乗り遅れまじと鳴り物入りで参入したのが2013年。その翌年にはウェアラブルの決定打としてEdisonモジュールを投入し、Jouleに至っては、2016年8月に発表したばかりです。

有名な科学者にちなんで名付けられたこれらの製品は、CEOのBrian Krzanich自ら、キーノートスピーチで大々的に発表する気合の入れようでしたが、食後のオレンジシャーベットのようにあっさり撤退してしまいました。

特にJouleは、Atomプロセッサー、4GBメモリー16GBフラッシュ、4Kビデオ対応、WiFi内蔵、顔トラッキング、自然言語プロセッシング等も可能なハイエンド組み込みソリューションとして、てんこ盛りな内容でしたが、x86系では、ドローン向けVisonセンサーのRealSense用の開発ボードとしても使われているフル機能SBC(シングルボードコンピューター)のUP Boardが人気で、小さくパワフルな上、2020年まで入手性が保証されているなど安心して採用しやすく、Jouleとの住み分けが難しかったのかもしれません。

Arduinoに関しては、今回製造中止の憂き目を逃れたCurie (キューリー夫人)を搭載したGenuino101(米国での商品名はArduino101)が残るので、Galileoがなくても特に問題はないです。

しかし、さすがに1年足らずで撤退されてしまうと、プロダクトライフサイクルが長い組み込み系では、リスクが高すぎて採用したくない、と言う人が増えるのではないでしょうか。

ただでさえ組み込み系はARMの独占状態で、Intel念願のx86チップ普及がかかっていた製品群だけに、あまりに諦めが早く、簡単にユーザーを見捨てる会社とのイメージができてしまうのは仕方ないですし、今後組み込み系のデザインにIntel製品を採用する際には、躊躇してしまうどころか、使用禁止令が出る会社も少なくないと思います。ただ、IntelはJouleの発表と同時に、ARMからライセンスを受けてARM系チップの製造を始める、と、ほとんど白旗を上げるに近い内容の発表もしており、もともと敗戦処理が確定路線だったのかもしれません。

ドローン関連では、複数のRTKソリューションや、Pixhawk系のフライトコントローラーが、Edisonを前提にしたデザインになっているのですが、基盤設計やり直しになるだけではなく、モジュールサイズやソフトウェア環境を考えると、乗り換え先は簡単にはみつからない状態だと思います。関係者の皆様におかれましては、誠に御愁傷様でございます。

インテル以外のマイクロコントローラーベースの開発ボードや、メーカーズ向けSBCマーケット全体では、ArduinoRasbperry Piがそれぞれ寡占状態にあり、ベアモジュールの入手性も良く、なかなか他に魅力的な選択肢がないのが現状です。

クラウドファンディングのSBCは雨後の筍のように出てきていますが、周辺機器、コミュニティ、ソフトウェア資産の問題等に加え、安定供給が望めないとなると、とても製品に採用できるものではありません。

その中で、よく頑張っているのがTexas Instrumentsのオープンソース開発ボードBeagle Boardシリーズです。Raspberry Piは基本的に安価なLinux PCであるのに対し、Beagle Boardシリーズは初めから組み込み用SBCとして設計されており、ヘッドレスでも非常に使いやすく、痒いところに手が届く設計になっています。また、常に製品をリフレッシュしながらも後方互換性が保たれ、息の長い製品としてゆっくり焦らず育ててゆこうという姿勢にも好感がもてます。ごく最近も、加速度センサーやジャイロを搭載し、そのままフライトコントローラーやロボットコントローラーとして使えるBeagleBone Blueがリリースされたばかりです。

IoT市場は爆発的な成長が見込まれており、Intel以外にも、Qualcommを始めとするチップメーカー系各社がせめぎ合っていますので、今後も目が離せません。