Flight modes define how the autopilot responds to user input and controls vehicle movement. They are grouped into manual (direct stick-to-actuator), assisted (pilot input with autopilot stabilization), and auto (fully autonomous) categories.
Modes can be implemented as PX4 internal modes running on the flight controller, or as PX4 external (ROS 2) modes running on a companion computer. From the perspective of a ground station, both are indistinguishable.
text
Multicopter flight modes
────────────────────────────────────────────────────────────────────────────
Mode Category Pilot controls Autopilot controls
──────────────── ───────── ───────────────────── ──────────────────────
Manual/Acro Manual Roll/pitch/yaw rates Nothing (direct PWM)
Stabilized Assisted Roll/pitch angle, Level when sticks
yaw rate, throttle centered
Altitude Assisted Roll/pitch, yaw rate Altitude hold
Position Assisted Velocity (horiz), Position + altitude
yaw rate, climb rate hold
Hold Auto — GPS hold (loiter)
Mission Auto — Follows waypoints
Return (RTL) Auto — Returns to home
Land Auto — Lands at current pos
Takeoff Auto — Climbs to altitude
Orbit Auto (optional adjust) Circles a point
Follow Me Auto — Follows GCS position
Offboard Auto — External setpointsFixed-wing modes
Manual: direct surface control, no stabilization. Stabilized: stick controls roll/pitch angle, autopilot holds. Altitude: autopilot holds altitude via TECS. Position: autopilot holds altitude + course via NPFG/TECS. Mission / Return / Land / Takeoff / Hold: same autonomous behavior adapted for fixed-wing flight profiles.
Each mode declares requirements — conditions that must be met to enter or remain in the mode. These are defined as flags in the FailsafeFlags uORB topic.
text
Mode requirements (FailsafeFlags) ──────────────────────────────────────────────────────────────────────────── Flag name Meaning (text) ─────────────────────────────────── ─────────────────────────────────────── mode_req_angular_velocity Requires angular velocity estimate mode_req_attitude Requires attitude estimate mode_req_local_alt Requires local altitude estimate mode_req_local_position Requires local position estimate mode_req_local_position_relaxed Requires local position (relaxed) mode_req_global_position Requires global position (GPS fix) mode_req_mission Requires a valid uploaded mission mode_req_offboard_signal Requires active offboard signal mode_req_home_position Requires known home position mode_req_wind_and_flight_time Reject if wind/time limits exceeded _compliance mode_req_prevent_arming Cannot arm while in this mode mode_req_manual_control Requires active RC/manual input mode_req_other Other requirements (external modes)
What happens when a requirement is not met
If the mode requirement is not satisfied: arming is blocked while that mode is selected, the mode cannot be selected while armed, and if the requirement is lost while armed and in that mode the relevant failsafe triggers (e.g. RC loss triggers the failsafe configured for manual control loss).
External modes (ROS 2) should be considered when: you need easier development without embedded constraints, you want portability across PX4 versions (the external API is stable), or you need access to high-level Linux/ROS libraries. Internal modes are required when: there is no companion computer, low-latency/high-rate control is needed, or the mode is safety-critical (like Return).