Skip to main content

PixhawkFamily

概要

オープンソースのフライトコントローラー・オートパイロット・ロボットコントローラーは、非常に多くの製品があり頭を悩ませることが多いのが現状だと思います。一般論として選択肢が多いのは良いことですが、必要な情報がネットのあちこちに散らばっていて、もし情報が見つかったとしても、英語のみであったり、目まぐるしく変化・進化する技術についていけずに古くなってしまった情報も多く、どれを選んで良いのか迷うことになってしまいます。この記事を書いている間にも、何かが進化し、ここに載せた情報の幾つかはすでに古い情報となっていしまっていますが、Pixhawk系のフライトコントローラーの現状に関して、以下に現時点で把握している情報をまとめてみたいと思います。

歴史

Pixhawk系フライトコントローラーハードウェア進化の歴史 Pixhawks

PX4

PX4/Pixhawkプロジェクトは、スイス工科大学チューリッヒ校(ETH Zurich)で、オープンソースハードウエア&オープンソースソフトウェアの32bitフライトコントローラーを作る目的で始まりました。

3D Roboticsは、初期段階からPixhawkの生産、販売と、ArduPilot系開発者への金銭的支援を熱心に行っていたため、3DRの製品だと勘違いされることが多いですが、出処はETH Zurichです。また、ハードウェアもオープンソースであるため、Pixhawkには一部を改良したクローンが多く存在します。ただ、3DR製をうたった劣悪な模造品も出回っているので注意が必要です。

PX4というコードネームで、いわゆるPixhawk v1の前にも、PX4FMUv1とPX4IOv1という2ボードシステムがほんのわずかな間存在していました。

PX4 そして、このチューリッヒ工科大が開発したフライトコントローラーのファームウェアが俗にPX4 Native Stackと呼ばれるものです。最近は、PX4 Proというブランドに統一しようとしているようです。これはPixhawkに搭載される32bit ARM CPUの上に実装されたNuttXというリアルタイムOSの上で走るアプリケーション群として実装され、構成的には非常にUNIX的です。 http://px4.io

また、マルチローター、VTOLを含む複数の機体構成を一つのファームウェアでカバーするのも特徴です。

ソフトウェアのライセンスは3-Claus BSDであり、GPL v3を採用するAPMよりも商用利用がしやすくなっています。

PX4プロジェクトのハードウェア

  • PX4FMUv1 + PX4IOv1
  • Pixhawk (PX4FMUv2)
  • Pixhawk 2 - 3DR Version (PX4FMUv3)
  • Pixhawk 2 - Community Version (PX4FMUv4)
  • Pixracer (PX4FMUv4)
  • PX4FLOW (OpticalFlowセンサー)

PX4プロジェクトのソフトウェア

  • PX4 Natvie Stack
  • PX4FLOWファームウェア
  • QGroundControl (GCS)
  • MAVLink

ArduPilot (APM)

ArduPilot (APM)は、3D RoboticsのChris Andersonが始めたDIYDrones.comから派生したプロジェクトです。こちらもオープンソースハードウェアとオープンソースソフトウェアを組み合わせたフライトコントローラーで、名前が示すように、もともとはArduinoをベースにしていたのですが、いまやLinuxを含む様々なプラットフォームに対応しています。Pixhawk上では、NuttXというリアルタイムOSの上で走るPX4 Native Stackのアプリケーションの一つとして動作します。モノリシックで巨大なアプリケーションで、あまりUNIX的な構成ではありません。

ArduPilot

シャーシー、フレームの種類ごとに、複数のファームウェアがあり、それぞれがお互いの機能を取り込みながら開発が進むスタイルです。

ソフトウェアのライセンスはGPL v3で、商用では少々使いにくい面があります。

APMのハードウェア

  • APM 2.0 APM 2.0はArduino Megaをベースとしたハードウェアです。すでにAPMソフトウェア側ではこのAPM 2.x系ボードを含め8 bitアーキテクチャー向けの開発は終了しています。

APMのソフトウェア

  • Copter
  • Plane
    • 固定翼と、QuadPlane(VTOL)がある
  • Rover
  • Antenna Tracker

関連プロジェクト

PXF(Pixhawk Fire)

スペインのErle Robotics社が生産、販売する、Linuxシングルボードコンピューター用の拡張ボードです。Pixhawk Fireと名が付いていますが、初期段階ではAPM系ソフトウェアのみをサポートしていました。現在もPX4 Native Stackはアルファ版の位置付けです。 - PXFはTexas InstrumentsのBeagleBone Black向けのケープ - PXFminiは、RaspberryPi Zero向けのハット

MAVROS

ROS (Robot Operating System)からMAVLinkを扱えるようにするパッケージです。ROSノード経由のMAVLink通信だけでなく座標系の変換なども行ってくれます。

DroneCode

2015年、バラバラだったPixhawk系のハードウェアとソフトウェアをまとめるため、Linux Foundation傘下にDroneCodeという組織が設置されました。これは、今後ドローン関連の制御ソフトウェアが、単純な組み込みからLinuxベースへと移行していくことを示唆していますが、ArduPilotのリード開発者であるTridgeが、もともと著名なLinuxカーネル開発者の一人であることも無関係ではないでしょう。(Tridgeは、LinuxとWindows間のファイル共有を可能にするSambaというソフトウェアや、Unix系ではデファクトスタンダードとなっているファイル同期ソフトウェア、rsync等を書いた開発者で、インターネットを使うほぼ全ての人が知らないうちになんらかの形でTridgeのお世話になっているはずです)。

現在のDroneCode傘下の以下のソフトウェアは、それぞれが独立したプロジェクトでありながら、お互いに協調して開発が進められています。

これにROSが加わることで、ドローン制御に関してはほとんどの基本的な機能が揃うことになります。

ただ、残念なことに、2016年9月に、ArduPilotはDroneCodeから分離しました。理由は、DroneCodeがIntel, Qualcomm, 3D Roboticsからなる少数のプラチナメンバーによって完全にコントロールされ、プロプライエタリなシステムで使うことができないGPLv3を採用しているArduPilotの開発を企業スポンサーがサポートしてゆく理由がないためです。今後もPixhawk系のハードウェア上でArduPilotの開発は続いていきますが、3DRのクリスアンダーソンはあからさまにPX4を推していて、コミュニティの間に軋轢が残ってしまいました。

これに関連して、QGroundControlに関しては、すべての著作権者(コード提供者)の許諾が得られたとのことで、GPLとBSDのデュアルライセンスに変更されています。

主要コンポーネント

ドローンの制御系は、センサー、駆動系、通信系を除く以下の3つの基本コンポーネントが必要であり、お互いが密に連携しているため組み合わせが重要になります。

Overview

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

機体側のコンピューター。センサー、通信モジュールからの入力を受け、目標とする姿勢や振る舞いと、現在の差異を計算し、目標値により近づくよう駆動装置へ信号を出力します。

大きく分けて、マイクロコントローラー系とシングルボードコンピューター(SBC)系に別れます。

マイクロコントローラーは最低限の機能を持ったライブラリかRealtime OSの上に、制御プログラムが走る形式。例としてはArduino等があげられます。

シングルボードコンピューターは通常Linuxが動作するクレジットカードサイズ程度の小型所電力コンピューター。例としてはRaspberry Pi、BeagleBone等があります。

2. フライトコントローラーソフトウェア

フライトコントローラー上で走る制御ソフトウェア。Pixhawk系のシステムでは、PX4 Native Stackか、ArduPilotかどちらかを選ぶことになります。

3. GCS (Ground Control Station|Software|System)

PCやタブレット上で動作し、機体にコマンドを送ったり、機体から送られてくるセンサーデータ等を表示する管制ソフトウェア。通常、機体側ソフトウェアの設定やアップグレード、ログ解析などもこのソフトで行います。Pixhawk系は、後述するMAVLinkに対応しているので基本的な機能はどの組み合わせでも可能ですが、独自機能への対応状況はやはり純正の組み合わせ(PX4 Native Stack + QGroundControl、ArduPilot + MissionPlanner等)が良いです。MissionPlannerはWindows版のみ、TowerはAndroid版のみ等、プラットフォームの制約もあります。

PX4ファミリーのFCハードウェア

フライトコントローラー(FC)ハードウェアは、大まかにマイクロコントローラー系と、シングルボードコンピューター系に分類することができます。

マイクロコントローラー系

マイクロコントローラー系のFCは、通常、MHzクラスの組み込み用CPUを搭載したドローン制御アプリケーションに特化したボードです。

PX4公式ボード

名称 概要
PX4FMUv1 PX4FMUv1 - PX4FMUv1は、Pixhawkプロジェクトの第一弾として作られた、2枚構成のボード(FMU + IO)
- リリース後1年ほどでPixhawkにリプレースされた
Pixhawk Pixhawk == PX4FMUv2 - 168MHz 32bit STM32F427 Cortex M4プロセッサー、256KB RAM
- PixhawkはETH Zurichで始まり、ハードウェアの製造パートナーとして3D Roboticsが選ばれた
- オープンソースハードウェアなので、多くのクローンやコピーが存在する
- Pixhawkは、PX4FMUv1とPX4IOv1を一つのボードにまとめたもので、型番はPX4FMUv2 (FMU = Flight Management Unit)
- AR.Drone専用に作られたPX4IOARもある
- PixhawkはヒロセのDF13コネクターを採用しているが、これはSMT(表面実装)用のコネクターで、繰り返しの抜き差しには向かず、コネクター、ソケット、ケーブル破損が多く、不評
Pixracer Pixracer == XRacer V1 == PX4FMUv4 - AUAVNick ArsovとPhillip Kocmoudによってデザインされ、AUAVが製造、販売する小型Pixhawk
- PX4FMUv4としてPX4プロジェクトのオフィシャルハードウェアとしてに正式に採用された
- CC3D、NAZE等とほぼ同じ小型サイズ
- 250クラスのレーシングクワッドにも乗るように小型軽量であることに重点を置いてデザインされている
- Pixhawkに比べて、より高速なCPU、多くのRAM、高性能なセンサーとなっている
- コネクターもロッキングタブが付いていて、DF13よりも扱いやすいJST GHシリーズに変更されている
今後Drone Code関連のFCはJST GHに統一する方向
- 小型のWiFiカード(ESP8266)付き
Pixhawk 2 (3DR Version) == PX4FMUv3 - 3D Roboticsは、自社のSOLO専用にPixhawk 2を開発した
- Pixhawk 2単体では発売されておらず、あくまでもSOLOのフライトコントローラーなので、一般には入手できない
- ハードウェアはオープンソース
- Pixhawk 1をキャリアボードと分割、小型化し、コネクターを含め、各部を改良したもの
Pixhawk 2.1 (Community Version) == PX4FMUv? - 3DRがPixhawk 2を単体で発売しなかったため、Pixhawk 2のデザイナーが複数の工場で生産準備を進めている
- proficncがランチパートナー
- 2016年11月出荷開始。各国の代理店から購入可能。日本はenRouteが代理店となっているが、オンラインストアで検索しても引っかからないので、proficncで直接購入するしかない
- 小さなキューブ状で、DF17コネクター経由でキャリアボードと接続する
Intel Edisonをコンパニオンコンピューターとして組み込めるポート付き
- IMUセンサーにヒーターがついたので、外気温が変わってもキャリブレーションをし直す必要がない
Pixhawk Mini - PixhawkクローンメーカのHolybroと、低価格低品質Pixhawkコピーを売っていたHobbyKingが開発し、3D Roboticsが販売するという、なんとも皮肉な製品
- Pixfalconと同じ大きさで、Pixfalconのセンサーや各部を改良したもの
- JST GHに統一された他の最新のDronecode系Pixhawkクローンと違い、コネクターはPixfalconと同じMicro JST (JST SH 1.0)のまま
- 2016年12月発売予定

Pixhawkクローン

PX4系のコントローラーボードはオープンソースなので、だれでも回路図やレイアウトデータを入手することができるため、多くのクローンやコピーが存在します。オリジナルを改良して高性能になっているものもあれば、単なる劣化コピーで、出荷検査もろくに行われていない信頼できない製品も多々あるので、購入時は注意が必要です。

名称 概要
Pixfalcon Pixfalcon - Holybro 小型版
CC3Dに近いサイズ
Pixhack Pixhack - CUAV Pixhawkアルミケース、防振対策、JST GHコネクターを筐体側面に配置するなど、使いやすい改良が加えられている
HKPilot32 HKPilot32 - HobbyKing HobbyKingの安価版クローン
Fixhawk Fixhawk - RCTimer 各部に改良が加えられたとされるクローン

その他のPixhawkクローン

シングルボードコンピューターベースのフライトコントローラー

PixhawkとそのクローンはNuttXとよばれるリアルタイムOSを載せたマイクロコントローラーをベースにしています。汎用OSに比べオーバーヘッドが少なく、少ないリソースでも高速に動作するため、フライトコントローラーのような特定用途のデバイスには最適ですが、RaspberryPiやBeagleBone等、近年のシングルボードコンピューターと比べると、処理能力と柔軟性で見劣りします。すでに数年前からLinuxを載せたGHzクラスのシングルボードコンピューターを使ってドローンを制御する試みは始まっており、ROS等と並行してフライト制御プログラムを普通のLinuxのプロセスとして走らせることに成功しています。この分野ではArduPilotが先行していましたが、SnapDragonの登場によって逆転し、PX4 Native Stackの他のプラットフォーム対応も進んでいます。

Name Description
PXF Pixhawk Fire (PXF) - BeagleBone BlackのケープとしてErle Roboticsが販売していた
- Erle Robotics はPXFにBBBと専用ケースを組み合わせてErleBrainとしても販売していた
PXF 2.0 PXF 2.0 - ErleBrain 2としてRaspberry Pi及び専用ケースとセットでのみ販売
- Erle Brain 1ではBeagleBone Blackベースだったが、Erle Brain 2ではRaspberry Piへプラットフォームが変更された
- ErleBrain 2はRaspberry Pi 2ベースであるが、PXF 2.0自体のデザインは他のプラットフォーム(BeagleBone Black, Raspberry Pi, Raspberry Pi 2, BananaPi, Orange Pi, Odroid-C1, Odroid-C1+)とも互換性があるらしい(Erle Roboticsサイト情報。動作未確認)
PXFmini PXFmini - PXFをRaspberry Pi Zeroにフィットするサイズに小型化したもの
- JST GHコネクターに変更されているが、初期のものはピン配列が左右逆になっているため、JST GHを採用する他のDrone Codeハードウェアとはコネクターの互換性がないので注意
NAVIO2 NAVIO 2 - Raspberry Pi 2ベースのコントローラー
SnapDragon Flight SnapDragon Flight - QualcommのSnapdragon CPUを搭載したLinuxベースのコントローラー
- GPU、WiFi、4Kカメラ、OpticalFlow標準搭載
- 現状ではPX4 Native Stackのみが対応
- ZerotechのDobbyなどはこのボードを採用している

オンボードソフトウェア

Pixhawkハードウェアで動作するフライトコントロールソフトウェア(フライトスタック)はPX4 Native StackとArduPilotの2つあり、ハードウェアの名前とかぶっているため、非常にややこしいです。 一時DroneCode傘下で統合されるかと思いきや、結局喧嘩別れとなってしまい、今も個別のプロジェクトとして独立して開発されています。

PX4 Native Stack

PX4 PX4 Native Stack

  • Pixhawkと全てのクローンで動作
  • Linux系ボードに関してはネイティブでサポートしているものとポーティング途中のものがある
  • スイス工科大チューリッヒ校(ETH Zurich)でPixhawkハードウェアと一緒に始まったプロジェクト
  • NuttXリアルタイムOS上のPX4 Middlewareというドライバーレイヤー上で動作する複数のアプリ群
  • アプリ間のメッセージング機構を持つ
  • QGroundControlも同じプロジェクトから生まれたので、GCSはほぼ全てのプラットフォームをサポートするQGroundControl推奨
  • ライセンスはBSD

ArduPilot

APM ArduPilot - APM

  • ほとんどのPixhawkクローンと多くのLinuxボードで動作
  • DIYDrones.com発祥のArduinoベースのAPMハードウェア・ArduPilotソフトウェアプロジェクトがベースとなっている
  • PX4 Native Stackのアプリとして実装されているので、PX4 Native StackもPX4Firmwareサブモジュールとして含まれる
  • 機体、フレームタイプによって機能、バイナリが違う(Copter, Plane, Rover / Quad, Hexa, X8, etc.)
  • WindowsであればMission Planner推奨
  • それ以外のプラットフォームであればAPM Planner 2推奨
  • AndroidであればTower推奨
  • ライセンスはGPLv3

GCS

建前としては同じバージョンのMAVLinkを話す限り、どのGCSでも使えるはずですが、現実にはGCSとフライトスタックは密結合で同時進行で開発されていて、フライトスタックとGCSのバージョンも合わせないと動かないことが多いです

QGroundControl

  • QGroundControl QGroundControl
  • PX4 Native Stack用
  • Windows, Mac, Linux, iOS, Android
  • 最近はArduPilot対応も進んだが、まだバグが多い

Mission Planner

APM Planner 2

  • APM Planner 2 APM Planner 2
  • ArduPilot向けクロスプラットフォームGCS
  • Windows, Mac, Linux

Tower

  • Tower
  • Android版GCS
  • もとはDroidPlanner2
  • Androidのみ

MAVProxy

  • MAVProxy
  • Pythonで書かれたコマンドライン版GCS
  • 開発者向け

互換性チャート

Hardware - Flight Stack Compatibility

ハードウェア PX4 Native Stack ArduPilot
Pixhawk & クローン (FMUv1, v2, v4) YES YES
PXF 移植中 YES
PXFmini 移植中 YES
ErleBrain 2 移植中 YES
NAVIO2 NO YES
SnapDragon Flight YES 移植中

フライトスタック - GCS互換表

フライトスタック QGroundControl Mission Planner APM Planner 2 MAVProxy Tower
PX4 Native Stack YES 一部機能のみ 一部機能のみ 一部機能のみ 一部機能のみ
ArduPilot 一部機能のみ YES YES YES YES

開発者向け

機体上で画像処理などの重い処理を使った自律制御を行う場合やROSを走らせたい場合

  • Linux系のボードを選択
  • またはPixhawkクローンとLinux SBCをコンパニオンコンピューターとして搭載し、MAVLink、MAVROSなどを使って連携

ROSや画像処理を地上側PCで走らせる場合

  • MAVLinkとMAVROSを使って機体側と通信