コントローラーの選び方
趣味のドローンを組む際や、ちょっと自作ロボットで遊んでみようと思いたった時、はたまた仕事でドローンを扱っている場合でさえ、プロジェクトを始める前にまず直面するのが、どのコントローラーを使うか、という非常に重要なのに面倒な決断です。いわゆるフライトコントローラー・オートパイロット・ロボットコントローラーを選択する際に誰もが感じるのが、選択肢が多すぎて困る、ということだと思います。一昔前には考えられないほど恵まれている、とも言えますが、あまりの情報量に頭を抱えている方が非常に多いのも事実です。また、情報がネットのあちこちに分散していて、なおかつものすごいスピードで技術が進化しているので、見つけた情報が古すぎて役に立たないどころが、却って有害でさえある、ということも多々あり、スマートに情報を精査しなくてはなりません。しかし、すべての制御コントローラーの最新情報を網羅するのは不可能です。そこで、このサイトではオープンソース系のフライトコントローラーに絞って、なるべく最新の情報を提供していきたいと思います。
フライトコントローラー・オートパイロット・ロボットコントローラーとは?
定義はいろいろありますが、センサーやユーザーのインプットを処理して、外部のアクチュエーターに操作信号を送る小型コンピューター、と考えれば基本的にみな同じものと考えられます。当然、マルチコプター専用や、ロボット専用のものもありますが、オープンソースであれば、どれでも流用可能です。
これらは一般的に、小型省電力のマイクロコントローラーや、シングルボードコンピューターをベースにし、SDカードやセンサー、各種入出力ポートを備えた箱です。センサーや外部入力データをI2C、SPI、CAN、シリアル等のポートで受け取り、外部機器にPWMや各種ポート経由で制御信号を送り、モーター、サーボ、その他のアクチュエーターを操作して、機体の姿勢制御等を行う、という基本形は同じです。さらに、WiFi、Bluetooth、ZigBeeなどの通信リンクを経由して、リモート制御やモニタリングもできたり、ログを保存しておいて後で解析したりできるものが多いです。
性能や機能はコントローラーによって大きく異なります。フライトコントローラーでは、最もシンプルなものはジャイロと加速度センサーを使って機体の安定度を増すだけのものから、GPS、レーザーレンジファインダー、画像認識などを使って自動で障害物を避けつつ、複数機が連携しながら自律的に飛ぶものまで様々な種類があります。
Pixhawkファミリー
Pixhawk系のフライトコントローラーに関して、こちらのページでより詳しい情報を紹介しています。
フライトコントローラーのエコシステム
コントローラー本体
オンボードコンピューター+IMUやバロメーターなどの最低限のセンサー類を指します。
外部機器
フライトコントローラー以外に、外部センサー、パワーモジュール、RC送受信機、テレメトリー通信モジュール等が必要です。
外部機器がコントローラーを選択肢を限定することもあります。例えば、最新のLiDARやIRビーコンを使いたい場合、コントローラー側でセンサーに対応していなければ、そのセンサーを使うことはできません。特定のフライトコントローラー向けのドライバーしか提供していないセンサーや、サポート外になるセンサーも多いです。オープンソースコントローラーの場合、共通の信号経路さえ確保できれば(I2C、CAN、シリアル等)、自分でドライバーを書く道は残されています。これはテレメトリーモジュールやジンバル、その他のアクチュエーター等も同じです。
ソフトウェアを選ぶ
ドローン向けのソフトウェアは、機体側で実行するフライトコントロールと、PCやタブレット上で実行するグランドコントロールの2つに大きく分けられます。
フライトコントロールソフトウェア(ファームウェア)
ファームウェア は、機体上の制御コンピューター(フライトコントローラー)上で走るソフトウェアです。
グランドコントロールステーション (Ground Control Station / GCS)
Ground Control Stationは、PCやタブレット、スマートフォン上で実行され、ファームウェアの設定や機体の状態を監視したり、ウェイポイントの入力などを行うソフトウェアです。テレメトリーリンクを介して機体側と通信し、センサーの値をモニタリングしたり、機体にコマンドを送ったり、ログ解析を行ったりすることができます。
オープン v.s. プロプライエタリ
オープンソースのフライトコントロールソフトウェアは多数あり、機能や性能が大幅に違います。クローズドな製品は見た目は良く、初心者には扱いやすいことが多いですが、機能的には劣ることが多く、またメーカーのサポートも期待できません。
オープンソースシステム
ここでいうオープンソースには、2つの意味があります。通常、オープンソースというとソフトウェアを連想しますが、ハードウェアもオープンソースで開発される場合が増えてきています。この場合、回路図やPCBのレイアウトデータ等がオープンソースで公開され、自由に改変したり、改良を加えたりして自分で製造したり、PCB専門の会社に作ってもらことができます。ドローン向けのフライトコントローラーは、多くがハードウェアとソフトウェアの双方をオープンソースで展開しています。
オープンソースソフトウェアの例
PX4 Native Stack
ArduPilot - APM
その他のオープンソースソフトウェア
オープンソースハードウェアの例
Pixhawk
Pixracer
Pixhawk Fire (PXF)
その他のオープンソースハードウェア
- CC3D
- Paparazzi
部分的オープンソース
オープンとクローズドなソフトウェアとハードウェアを組み合わせたシステム
オープンソースソフトウェア + クローズドソースハードウェア
完全クローズドシステム
クローズドなプロプライエタリシステムでは、ソフトウェアもハードウェアもソースは公開されていませんが、限定的な機能拡張を可能にするAPIが提供される場合があります。
- DJI SDK
- etc.
その他のオンボード機器
要件によって、追加のコンポーネントが必要になります。
センサー
- IMU
- コンパス
- バロメーター
- GPS
- レンジファインダー
- ソナー(超音波センサー)
- LiDAR(レーザーレンジファインダー)
- OpticalFlow
- コンピューターヴィジョン、ステレオカメラ
パワーモジュール
駆動用のバッテリーから、制御機器に必要な5Vや12Vに降圧した安定化電源を供給し、電圧や電流のモニタリングも行うモジュールが一般的です。
- BEC(電圧レギュレーター)
- バッテリー電圧、電流計
RC送受信機
現在のドローンは、基本的にラジコンの延長線上にあるので、ラジコン用の送受信機を使います。
テレメトリー
FPV
- FPVカメラ
- 映像伝送機(送受信機)
- OSD (On Screen Display)
- ジンバル
アクチュエーター / スラスター
- サーボ
- ESC (Electric Speed Controller、いわゆるアンプ)
- ブラシモーター・ブラシレスモーター
- リニアアクチュエーター
インジケーター
- マルチカラーLED
- ブザー
地上側コンポーネント
- PC/タブレット/スマートフォン
- RC Transmitter
- ビデオモニター
- FPVゴーグル
- アンテナトラッカー
- RTK GPSモジュール