概要
PX4は、スイスチューリッヒ工科大学 (スイス工科大学チューリッヒ校)発の、オープンソースフライトコントローラープロジェクトです。オープンソースハードウエア&オープンソースソフトウェアの32bitフライトコントローラーを作る目的で開始されました。Pixhawkは、3D Roboticsが初期段階から生産、販売と、ArduPilot系開発者への金銭的支援を熱心に行っていたため、3DRの製品だと勘違いされることが多いですが、出処はETH Zurichです。
PX4 Native Stackがファームウェア部分で、PX4 FMUv1、Pixhawk、Pixracer等がハードウェア部分です。
PX4ハードウェア
PX4のハードウェアとしてはPixhawkがもっとも有名ですが、ハードウェアもオープンソースであるため、Pixhawkには一部を改良したり、そのまま同じ回路を実装しただけのクローンが多く存在します。ただし、3DR製や、他のクローンメーカー製を謳った劣悪な模造品も出回っているので注意が必要です。
PX4というコードネームで、いわゆるPixhawk v1の前にも、PX4FMUv1とPX4IOという2ボードシステムがほんのわずかな間存在していました。詳しくはPixhawk進化の歴史を参照してください。
PX4関連ハードウェアのリスト
- PX4FMUv1 + PX4IO
- Pixhawk (PX4FMUv2)
- Pixracer (PX4FMUv4)
- Pixhawk 2.1 - Community Version
- PX4FLOW (OpticalFlowセンサー)
NOTE: PX4 FMUv1, FMUv2等のバージョンは、本来ソフトウェア側を識別するものですが、ハードウェア世代を特定するため、便宜上v1, v2, v4と呼び分けています。実際はFMUv2のファームウェアでPX4 FMUv2(Pixhawk)もPixhawk 2(FMUv3)も動作します。FMUv3は、3DRのPixhawk 2用に開発されていましたが、FMUv2をアップデートして、Pixhawk v1(FMUv2)、Pixhawk v2(FMUv3)のどちらでも動作するように対応したので、FMUv3のファームウェアは存在しません。Pixracerでは、ピンアウトが変更されたため、FMUv4となっています。その他、FMUv2とFMUv4では、使えるメモリー領域などに違いがあります。
PX4ソフトウェア
PX4 Native Stackは、Pixhawkに搭載される32bit ARM CPUの上に実装されたNuttXというリアルタイムOSの上で走るアプリケーション群として実装されるフライトコントローラーソフトウェアで、UNIXに近い構成的となっています。
マルチローター、VTOLを含む複数の機体構成を一つのファームウェアでカバーします。
通常Pixhawkにプリインストールされているファームウェアは、PX4 Native Stackですが、製品によってはArduPilotがインストールされているものもあります。
ライセンスはArduPilotがGPLv3なのに対し、PX4 Native Stackは3-Claus BSDライセンスです。
BSDなので、企業が自社製品に組み込む場合に使いやすく、GPLv3のArduPilotがDroneCodeから離脱したため、DroneCodeのファームウェアは事実上PX4 Native Stack一択になりました。
また、もともとが学術系なので、モーションキャプチャーカメラを使った外部制御やシミュレーションを中心とした開発に向いています。
ちなみに、ArduPilotはPX4 Native Stackのアプリケーションとして実装されていたので、PX4が動作するほとんどのハードウェアでArduPilotも走らせることが出来、マイクロコントローラー系のPixhawkファミリーのフライトコントローラーや、Linuxシングルボードコンピューターベースのユニットで動作します。
PX4 Native Stackは、通常QGroundControlとの組み合わせで使います。
PX4関連では、PX4 Natvie Stack以外にも、以下のプロジェクトがあります。
Linuxサポート
- 最新版でRaspberryPiを正式にサポート
- SnapDragon Flight
- Intel Up-board + Realsense
コアメンバー
Lorenz Meier
- ETHのComputer Vision and Geometry LabのPhD課程在籍
- PX4/Pixhawkプロジェクト統括
- PX4 Native Stackのリーダー
- MAVLinkの開発者でもある
Prof. Marc Pollefeys
- Institute for Visual Computing, Computer Vision and Geometry Group
Don Gagne
- QGroundControlの開発者
Paul Riseborough
- EKF
- Paul RisenboroughはArduPilotのEKFも担当している
設定ガイド
フライトモード
マニュアルモード
- アクロ
- Rattitude(スティックセンター付近ではスタビライズで、スレッショルド以上のRoll/Pitch入力は、アングルではなくレートコントロールになる)
- Angle(RollとPitch入力は傾斜角として処理される。YAWはレート)
アシステッドモード
- ALTCTL(スロットルが上昇・下降レートになり、センター付近のデッドゾーンが広がる)
- POSCTL(RollとPitchは対地速度。センターで現在位置を保持)
オートモード
- AUTO_LOITER(現在位置でホバリング)
- AUTO_RTL(指定高度まで上昇後、離陸地点・ホーム地点に戻り、着陸)
- AUTO_MISSION(Waypointミッション)
OFFBOARDモード
- 外部コンピューターから制御
PX4Flow OpticalFlowセンサー
シミュレーター
ユーザーガイド(外部英語資料)
開発者向け資料
ソースコード
開発者向けガイド
- Introduction | PX4 Development Guide
- Mac OS | PX4 Development Guide
- System Boot | PX4 Development Guide
- Circuit Breakers (in Software) - PX4 Autopilot Project
- Add a uORB topic - Pixhawk Flight Controller Hardware Project
- Create Custom Messages - Pixhawk Flight Controller Hardware Project
- uORB Messaging | PX4 Development Guide
Apps
- uORB - PX4 Autopilot Project
- pwm (Application) - PX4 Autopilot Project
- position_estimator_inav - Pixhawk Flight Controller Hardware Project
- Fixed Wing Vertical Takeoff and Landing Aircraft (VTOL) - Pixhawk Flight Controller Hardware Project (Tilt Rotor)
- Rangefinder - Pixhawk Flight Controller Hardware Project
備忘録
# Command to start SF0 LIDAR
sf0x start
デバッグガイド
- Debugging Overview - PX4 Autopilot Project
- NuttShell (NSH) via Serial Connection - PX4 Autopilot Project