PX4? Ardupilot? Pixhawk!?
今回から、何回かに渡ってPixhawkシリーズのフライトコントローラーを使用した機体製作を記事にしていきます。
自分自身もまだそこまで詳しくないので、初歩的なガイドしかできませんが、初めに飛ばせる状態にする基本的な情報も古いものが多い為、ここで比較的新しいハードウェアを使用した情報をまとめておこうと考えました。
実際にPX4やArdupilotのファームウェアを利用して機体を作り始めた時、PX4やArdupilotがそもそも全然別物として存在していると言う事や、それぞれを設定するソフトの違いなど、基本的なところを把握するところから始まったので、かなり余分な時間がかかったように思います。
全体像や用語をなんとなく把握しておくだけで、困って何か調べる時も随分楽になると思いますので、今回は導入としてPixhawkシリーズのフライトコントローラーにフラッシュできるファームウェアと、それらに対応するGCS(グランド・コントロール・ステーション)を紹介したいと思います。
Pixhawk とは?
正確なニュアンスを自分も把握していませんが、現在ユーザー視点で見た時に理解しやすい言い方をすると「ハードウェアの名前」と捉えるとわかりやすいのではないかと思います。
「ハードウェアの開発プロジェクト」といった方が、本当は正確なのかも知れませんが、ユーザーとして関わりを持つのはPixhawk2とかPixhawk4といった製品として、パッケージされた「モノ」だと思いますので、作る上ではとりあえず「ハードウェアの名前」と考えるとわかりやすくて良いかと思います。
Pixhawkはオープンソースの「ハードウェア」である為、例えばPixhawk 2.X.Xなんかは様々なメーカーから製品がリリースされていました。
Pixhawk 2.X.Xを自分は使用した事がありませんが、AMAZONなんかで探すと今でも商品を見つける事ができます。
同じ名前のものがいくつかのメーカーからリリースされるのは、Pixhawkは設計図がオープンである為ですね。
ちなみに、Pixhawk 2というのはPixhawkの歴史の中でも非常に有名なバージョンらしく、このバージョンを使用して製品化された機体が「3DR SOLO」。
インストールされたファームは専用のArduCopterだったようですが、当時Pixhawkの知名度を一段と高めた出来事だったのではないかと思います。
DJI の自作機用フライトコントローラー
Pixhawk 2の時代、DIYドローンに使用するフライトコントローラーとしてはDJI系のものが非常に人気でした。
DJIのNaza-M V2、Naza-M Lite、A2、A3、N3辺りは非常に有名で普及していた為、使っていた方や、聞いた事のある方も多いかと思います。
DJIのフライトコントローラーに接続するGPSセンサーやOSDなどは、基本的にDJIからリリースされた、その製品に対応する専用のものを使用する必要がありました。
フライトコントローラーにインストールされているファームウェアもそれぞれ専用のもので、専用のソフトを使用してアップデートする事はあっても、別のファームウェアを焼き直す操作は基本的になく、この点はPixhawkと決定的に異なります。
時代が進むにつれてDJIはハードウェアの守備範囲を拡大していった感じなのですが、ほとんどの主要パーツをDJIで揃える必要があったのは、DJI製品がオープンではない為です。
逆にオープンではなく組み合わせが強制されている為、動作が安定しているというのが大きな強みで、DJIの高い技術がDIY用パーツにも生かされていました。
なぜ過去形かというと、現在DJIはDIYドローン用パーツをほとんどやめてしまっている為、現在は中古で手に入れる以外に入手方法がないためです。
バージョンアップを重ねた Pixhawk
一方で、オープンのPixhawkも地道に進化を重ね、現在では最近Holybroからリリースされた6X、6Cが最新のハードウェアになっています。
今ではPixhawkの名前で新製品をリリースしているメーカーはHolybroだけなのではないかと思うのですが、バージョンを重ねる事にシステム的な部分での拡張にも対応できるよう処理能力がアップしていたり、ジャイロや気圧高度系など、FCユニットに内蔵されているセンサーがアップグレードしていたり、数が増えて冗長化されていたり、様々な方向でパワーアップしています。
新しくリリースされた周辺機器が使いやすいようにコネクターが変更されていたり、Pixhawk 5XからはFCのメインモジュールとコネクターを接続しIOの役割を担うベースボードが分離できるようになりました。
Holybroの商品として標準サイズのベースボードと、省スペース化が可能なミニベースボードが選べるだけでなく、(かなりハイレベルですが)ベースボードをオリジナルで作成して使用する機体に最適化する事もできるようです。
PX4? Ardupilot?
Pixhawkがなんとなくハードウェアそれ自体や、場合によってはその開発プロジェクトを指す用語であると把握したところで、次にPX4やArdupilotとは一体なんなのかをざっくり把握しましょう。
先程の文脈から続けて簡単に言ってしまうと、これらはフライトコントローラーにインストールするファームウェア(ソフト)と言うとわかりやすいかと思います。
前述した通り、DJIはフライトコントローラー(ハード)とファームウェア(ソフト)がそれぞれ専用で一体だったのですが、PixhawkにはPX4でもArdupilotでも、好きな方をインストールする事ができます。
Pixhawk(ハード)、PX4(ソフト)、Ardupilot(ソフト)、それぞれオープンなので、それぞれのプロジェクトが非常に密接に関わっているものの、正確には独立して動いています。
例えば、PX4やArdupilotがPixhawkの為だけのものかと言うと、全然そうではなく、Pixhawk以外にもPX4やArdupilotをインストールできるハードウェアは沢山あります。
キューブタイプのメインモジュールをベースボードに取り付けるCube Pilotの製品なんかもPX4やArdupilotを実行するハードウェアとして有名ですし、Holybroのpix32 v5やDurandalもPixhawkという名前ではないものの、PX4やArdupilotを実行するハードウェアとして人気があります。
例にあげたような、分かりやすくフライトコントローラーとして製品化されているものだけではなく、(非常に難しそうですが)ラズパイと呼ばれるような小型PCにArdupilotを構築する方法があったりします。
PX4やArdupilotのプロジェクトから見ると、Pixhawkは対応しているハードウェアの一つでしかありません。
PX4 と Ardupilot の違い
PX4もArdupilotも、マルチコプターだけでなく固定翼だったりローバーだったり、様々なタイプの機体を動かす事ができるファームウェアです。
これらは実際に使ってみると、似ている部分もあれば全然違う部分もあるのですが、Ardupilotでできる事が、PX4ではできない事も多いので、何かに困って調べごとをする時には、自分の使用しているファームをしっかり意識した方が良いです。
どちらが良いかは目的によって変わって来ますので、好きな方で良いと思うのですが、どちらかと言うと日本ではArdupilotの方が人気があるのではないかと思います。
使用しているモデルによっても随分印象が異なると思うのですが、多少は参考になればと思いますので、自分が基本的なマルチコプタータイプの機体を作成した範囲で主観的に違いを紹介します。
PX4 の特徴
PX4 Autopilot User Guide (main)
https://docs.px4.io/main/en/
自分としては、PX4の方がインターフェースや機能が洗練されていて作成時の設定もしやすく、運用時もRTHの設定高度といった主要な設定項目に辿り着くのも簡単なので、大まかな全体像を把握しやすいのかなという印象を持っています。
後述しますが、これは設定に使用するQGCというアプリの使いやすさやデザイン性の高さの影響も大きいかと思います。
ただ情報が少なく、よっぽどの専門家でないと標準的に提供されている以上の機能やデバイスを使用することは難しいと思いますので、注意が必要です。
Ardupilotと比較すると飛行までの道のりは簡潔なので、目的にもよりますが、どちらも初めての場合はPX4の方がおすすめかなという印象です。
客観的な判断は難しいのですが、もしかしたらスポーツ系のファームウェアであるBETAFLIGHTよりもエントリーユーザーには基本的な設定の手順が親切かも知れません。
Ardupilot (ArduCopter) の特徴
Copter Home ArduPilot
https://ardupilot.org/copter/
Ardupilotは設定のインターフェースは比較的ごちゃごちゃしていて、慣れが必要ですが、Ardupilotの方が新しいセンサーへの対応は早く、圧倒的に多機能な印象があります。
PX4と比較するとArdupilotの方が情報も豊富で、少し調べると様々なセンサーに関するドキュメントが見つかると思います。
ただ、注意が必要なのは古くてあまり役に立たない情報や、再現性が低いもの、重要なところが書かれていないものなど情報と言っても様々です。
出来そうな事でも実際にやってみるとうまくいかないケースや、一応出来たけど実用には役に立たないケース、微調整したいけど詳細の情報は見つからないケースなど、調査・設定・検証に非常に多くの時間を要します。
拡張性や多機能が魅力のArdupilotを選択する場合でも、もし初めてならば目標設定はシンプルに飛ばすところから初めると良いかと思います。
基本的な部分の理解も不十分なまま、一気に色々やろうとすると、何が原因で動作しないのか検討も付かなくなってしまい、ずっと飛行できないまま、と言う状況が簡単に発生します。
まず飛行できる形にし、次に飛行に関するパラメーターをひとつずつテストしながら好みなところに調整し、さらにその次のステップでセンサーなどでの機能追加にトライする、と言った形で、段階的に進めるのが良いかと思います。
では QGC と Mission Planner とは?
ここからさらにややこしくなるので、図にしてみました。
この全体感を把握しておくと、設定がうまく行かずにご自身で調査する際にも随分楽になるのではないかと思います。
PX4やALDUPILOTで機体を飛ばしてみたいと思った時に、まずはパーツを購入するわけですが、その次に手に入れたハードウェアにPX4やALDUPILOTをインストールしたり、PX4やALDUPILOTを設定するソフトをインストールしなければなりません。
ここで登場するのがQGC(QGroundControl)とMP(Mission Planner)です。
QGroundControl User Guide
https://docs.qgroundcontrol.com/master/en/index.html#qgroundcontrol-user-guide
Mission Planner Home
https://ardupilot.org/planner/
基本的にはPX4の設定を行うソフトがQGC(QGroundControl )、ALDUPILOTの設定を行うソフトがMission Planner、という形が基本になります。
しかし、ALDUPILOTのドキュメントで度々QGCが登場しており、「あれ、QGCも使って設定するのかな?」と段々不安になって来るかも知れません。
なぜALDUPILOTのドキュメントで度々QGCが登場するかというところなのですが、これには理由があります。
そもそも、QGCやMission Plannerには機体の設定だけでなく、GCS(グランド・コントロール・ステーション、直訳すると地上管制所)の機能も含まれています。
ドローンの場合、飛行中の機体の状況を確認したり、設定を一部変更したり、自動航行ミッションを作成・実行したり、といった機能を持ったシステムがGCSと呼ばれており、DJIを例に取ると、DJI GO、DJI GO4、GSPRO、DJI PILOT、DJI FLYといったAPPがGCSにあたります。
QGCがPX4の設定を行うだけでなくGCSとしても機能し、ALDUPILOTの場合それがMission Plannerであるというところまでは非常に理解しやすいです。
知らないと混乱するところは、QGCはALDUPILOTの設定は行えないものの、ALDUPILOTの機体のGCSとしては利用する事が可能だ、という点です。
また逆に、Mission PlannerをPX4のGCSとして利用する事もできそうです(こちらは自分は試した事がありませんが)。
この利用できると言うニュアンスが「頑張ればできる」といった程度のものならまだ理解しやすいのですが、ALDUPILOTの場合、ALDUPILOTのGCSとしてはMission PlannerよりもむしろQGCの方が一般的なのではないかと思ってしまうくらい、普通にQGCが使われています。
PX4の方では、GCSとしてMission Plannerを利用するのはあまり一般的では無いような印象です。
なぜALDUPILOTの場合、純正のMission Plannerと同等かそれ以上に情報があるのか、これも調べていくうちに混乱して来てしまうわけですね。
Mission PlannerとQGCをどちらも使用した事がある方であれば、なぜPX4のユーザーだけでなく、ALDUPILOTのユーザーからもGCSとしてはQGCが好まれるかよくわかると思います。
最大の要因として考えられるのは、上記の画像にも記載した通りQGCの方が圧倒的に多くのOSにインストールする事ができ、様々なデバイスで利用可能な点です。
ドローンの操縦でプロポを操作しながらWINのPCを操作すると言う状態は、少なくとも2人のオペレーターが必要となる為、それが必須となってしまうとその機体自体の利用シーンが限定的になってしまいますね。
Mission Plannerは一応Androidのベータ版があるのですが、PCのソフトを無理矢理Androidアプリにしたようなもので、あまり実用的ではありません。
Mission PlannerのLinux版は使用した事がありませんが、Mission Plannerは基本的にはWINで使用するソフトと考えるのが安全です。
一方、QGCのAndroid版は小さい画面用にデザインが最適化されており、複雑なミッションはさすがに見づらいのですが、Androidでもそこまで違和感なく使用する事ができます。
一部では、WINで動作するタブレットPCをプロポにつけてMission Plannerを手元で操作できる形にして利用している方もいるようですが、それだとデバイスが非常に限られてしまう為、結果的にタブレットタイプのデバイスで利用しやすいQGCがGCSとしては人気がある、と言う事かと思います。
画面の見やすさや操作性に関しては、個人の好みで評価が別れるところだとは思うのですが、個人的にはQGCの方がPC用、タブレット用どちらも画面が整理されていて、飛行中やミッションの作成と実行中は特にQGCの方が情報を把握しやすいと思っています。
この辺りもQGCの人気の秘密かも知れません。
ただ、やはりALDUPILOTにとってQGCは純正では無いので、MAVLink経由で設定の書き換えなどは基本的に出来ないと思います。
ALDUPILOTを深く理解している人の場合、QGCとMission Plannerの表記の違いなどがストレスになってくると思いますので、タブレットPCをわざわざ用意してでも、GCSとしてMission Plannerを使用したいと考えるかも知れません。
さらに、QGCとMission Planner以外にも利用可能なGCSはあるようなのですが、自分自身使用した事がないのと、ややこしいのでとりあえず今回は割愛します。
どのファームウェアを選ぶのか?
DIYドローン全体で言うと、Betaflightやemuflightなどスポーツ系のファームウェアや、高度維持やGPSホバリングを可能にするINAV、今回少しご紹介したPX4やArdupilotなど、様々なファームウェアがあります。
上記で挙げたものは全てオープンですが、KISSやFalcoXなどオープンでないものも含めるともっとありますね。
スポーツフライト系のファームウェアは設定のインターフェースもACROモード向けに最適化されており、微調整もしやすく設計されていますので、ACROモードでの使用感はPX4やArdupilotよりもずっと良いのではないかと思います。
一方、PX4やArdupilotのGPSモードではしっかり安定するので、パイロットの技量への依存度が比較的低い機体の作成も可能です。
ただしその場合、パイロットの代わりにセンサーに依存するため、センサーのコンディションが悪いと能力を発揮する事が出来ません。
また、モードによっては素直にスティック操作を聞いてくれる感じでもないので、機体と操縦者がダイレクトに接続されている感覚は、スポーツフライト向けのファームウェアの方が高いように思います。
全体的に違いはたくさんあるものの、分かりやすくて大きな差は、MAVLinkと呼ばれる機体とGCSの相互通信テレメトリーを利用した機能の有無です。
テレメトリーは一部の受信機で電圧情報をプロポ側に返すものがあったり、INAVでも部分的に開発が進められているようなのですが、MAVLinkでは位置情報や電圧、高度情報などをGCSに表示できるだけでなく、GCSで作成したミッションをMAVLink経由で機体にアップロードしたり、GCSで指定したアクションを実行する事が出来ます。
MAVLinkを使用せずにPX4やArdupilotの機体を作り、アナログVTX経由で電圧情報などみる事ももちろん可能ですが(別途OSDボードが必要になります)、GCSを使用するシステムがPX4やArdupilotの大きな強みでもあるため、それらを利用する前提で構成する方がPX4やArdupilotの場合、一般的なのではないかと思います。
少しでも安定性の高い機体にしたかったり、自動ミッションを行いたい場合はPX4やArdupilotが最適と言えそうです。
早速試してみましょう
結構頑張って調べたものの、詳しい方から言わせると厳密には間違っている部分もあるかも知れません。
また、今後新しいものが開発されたり、これまでのものが統合されたりという形で、現在は間違っていなくても将来的に間違いになってしまう事もあり得そうです。
そのため、作業する際には先ほどご紹介したPX4 Autopilot User GuideやCopter Home ArduPilotなど、必ず公式の情報もチェックするようにして頂けたらと思います。
もし間違いに気づいた方がいましたら、問い合わせフォームから根拠となる資料と合わせてアドバイスをいただけたら、こちらでも再度確認し記事の修正を行いますので、お気軽にお問い合わせください。
ただ、機体を作って飛ばしたいのであれば、とりあえず今回の記事の内容を把握しているだけでも情報収集が随分楽になるのではないかと思います。
この先は実際に作業してみないと様子がわからないと思いますので、次回から組み立てを始めたいと思います。