Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Ardupilot/ardupilot/llms.txt

Use this file to discover all available pages before exploring further.

Flight modes define how ArduPilot interprets pilot input and manages vehicle control. Each mode represents a distinct control strategy, ranging from fully manual control where the pilot manages every axis, to fully autonomous operation where the autopilot executes a pre-loaded mission. Understanding which mode to use—and when—is fundamental to safe ArduPilot operation.

How modes are selected

RC channel selection

ArduPilot maps up to six flight modes to PWM ranges on a single RC channel. The channel used is configured with the FLTMODE_CH parameter (default: channel 5). The six mode slots correspond to these PWM bands:
Mode slotPWM range
FLTMODE1≤ 1230 µs
FLTMODE21231–1360 µs
FLTMODE31361–1490 µs
FLTMODE41491–1620 µs
FLTMODE51621–1749 µs
FLTMODE6≥ 1750 µs
Each FLTMODEn parameter stores an integer matching the mode’s number from the Mode::Number enum. For example, setting FLTMODE1 to 2 selects AltHold when the RC channel is at its lowest position. A GCS or companion computer can change the active flight mode at any time by sending a COMMAND_LONG message with the command MAV_CMD_DO_SET_MODE or a SET_MODE message. The new mode takes effect immediately if the arming state and mode’s init() method allow it.

Boot-time mode

The INITIAL_MODE parameter sets the mode entered on power-up. This is useful for autonomous deployments where no RC transmitter is present at startup.
Some modes, such as Brake and Flip, cannot be used as arming modes. Their allows_arming() method returns false, so the vehicle will refuse to arm while in those modes.

ArduCopter mode list

ArduCopter supports the richest set of flight modes. The mode numbers below come directly from the Mode::Number enum in ArduCopter/mode.h.

Primary modes

Manual airframe angle with manual throttle. The autopilot levels the vehicle in response to stick input but applies no altitude or position hold. This is the most direct control mode and requires continuous pilot input to maintain altitude. It is the recommended mode for initial setup and ESC calibration.
Manual airframe angle with automatic throttle. The autopilot maintains the current altitude when the throttle stick is centred. Moving the throttle stick above or below centre commands climb or descent at a rate proportional to stick deflection. No horizontal position hold is applied. Requires a barometer; does not require GPS.
Automatic horizontal acceleration with automatic throttle. The autopilot holds the vehicle’s current horizontal position and altitude using GPS. Stick inputs command velocity, and the autopilot decelerates the vehicle back to a stop when sticks are released. Requires GPS lock.
Fully autonomous waypoint navigation using a pre-loaded mission. The autopilot executes NAV_WAYPOINT, NAV_LOITER, DO_* and other mission commands in sequence. Pilot stick inputs are ignored except for yaw when the IgnorePilotYaw option is not set. Requires GPS.
Fully automatic flight to coordinates or at a velocity commanded via MAVLink in real time. Used by companion computers, GCS applications, and scripts. The autopilot accepts SET_POSITION_TARGET_LOCAL_NED, SET_POSITION_TARGET_GLOBAL_INT, and SET_ATTITUDE_TARGET messages. Requires GPS.
Automatic return to the launch point. The vehicle climbs to the altitude set by RTL_ALT_M (if currently lower), returns to the home position, loiters for RTL_LOIT_TIME milliseconds, then lands. Requires GPS.
Automatic descent and landing at the current horizontal position. The vehicle descends at LAND_SPD_MS until touchdown is detected, then disarms. If GPS is available the vehicle maintains horizontal position during descent.
A hybrid of Stabilize and Loiter. With sticks centred the autopilot holds horizontal position using GPS. Moving the sticks switches to angle-based control similar to Stabilize, and releasing them smoothly decelerates the vehicle back to a hover. Requires GPS.
Like RTL, but the vehicle retraces the path it flew since arming, avoiding obstacles along the route. The breadcrumb path is stored in memory and discarded on disarm. Requires GPS.

Less common modes

Manual body-frame angular rate control with manual throttle. Stick inputs command rotation rates, not angles. The vehicle will not self-level when sticks are centred. Requires significant piloting skill. The ACRO_RP_RATE and ACRO_Y_RATE parameters scale the maximum rate.
Automatically orbits a point at a fixed radius with automatic throttle. The centre point is set to the vehicle’s position when the mode is entered. The orbit radius and rate are set by CIRCLE_RADIUS and CIRCLE_RATE.
Semi-autonomous roll and yaw with automatic throttle. Designed to provide a fixed-wing-like flying experience on a multicopter. Roll input banks the vehicle, causing it to drift in that direction, while yaw is coupled to the bank angle.
Manual earth-frame angular rate control with manual throttle. Similar to Acro but in the earth frame, so the vehicle self-levels when sticks are centred.
Automatically executes a full 360° roll flip. The vehicle must be flying above a minimum altitude. Control returns to the previous mode after the flip completes. The autopilot manages the manoeuvre without pilot input.
Automatically tunes roll and pitch rate PID gains by performing a series of twitches. The vehicle must be in a stable hover in a calm wind environment. Gains are saved to EEPROM when the flight mode is exited.
Applies full braking using the inertial/GPS system to stop the vehicle as quickly as possible. No pilot input is accepted. The mode exits to Loiter after a configurable timeout.
Allows arming and launching by throwing the vehicle into the air. Motors start only after a throw is detected via the IMU. The vehicle then stabilises and holds position using GPS.
Automatic avoidance of ADS-B transponder-equipped traffic. When an intruder is detected within the configured distance the autopilot manoeuvres to maintain separation.
A variant of Guided mode that accepts only attitude and altitude targets from MAVLink—no position targets. Useful for indoor flight with external attitude references.
Holds horizontal position using an optical flow sensor instead of GPS. A rangefinder is not required but improves accuracy. Requires a calibrated optical flow sensor (FLOW_ENABLE=1).
Follows another vehicle or a moving target broadcast via MAVLink GLOBAL_POSITION_INT messages. The offset and target system ID are set through the FOLL_* parameter group.
Flies a zigzag pattern between two pre-defined points A and B, typically used for agricultural spraying. Points are recorded by the pilot during setup. Side distance and the number of passes are configurable.
Produces automated frequency-sweep (chirp) signals on roll, pitch, yaw, or throttle for system identification. Used to measure vehicle dynamics for control tuning.
Allows recovery from an inverted crash by spinning individual motors to flip the vehicle upright. Only available when the vehicle is disarmed and inverted.

RC channel PWM to mode mapping

The FLTMODE_CH parameter selects which RC channel carries the mode switch signal. The six PWM bands are fixed in firmware. A typical three-position switch maps to positions 1, 4, and 6; a six-position switch maps to all six slots. The INITIAL_MODE parameter determines the mode used at boot before the RC receiver produces a valid signal.
// From ArduCopter/Parameters.cpp
// @Param: FLTMODE_CH
// @Description: RC Channel to use for flight mode control
// @Values: 0:Disabled,5:Channel5,6:Channel6,...,15:Channel 15
GSCALAR(flight_mode_chan, "FLTMODE_CH", CH_MODE_DEFAULT),
When developing with SITL (software-in-the-loop simulation), you can change the flight mode programmatically using MAVProxy’s mode command without needing a physical RC transmitter.

Build docs developers (and LLMs) love