PX4 User Guide
  • Introduction
  • Getting Started
    • Basic Concepts
    • Vehicles/Frames
    • Flight Controllers
    • Sensors
    • Radio Systems
    • Flight Modes
    • Vehicle Status Notifications
      • LED Meanings
      • Tune/Sound Meanings
      • Preflight Checks
    • Payloads & Cameras
    • Flight Reporting
  • Basic Assembly
    • Mounting the Flight Controller
    • Mounting the GPS/Compass
    • Vibration Isolation
    • Cable Wiring
    • CUAV Pixhawk V6X Wiring QuickStart
    • CUAV V5+ Wiring Quickstart
    • CUAV V5 nano Wiring Quickstart
    • Holybro Pixhawk 6C Wiring Quickstart
    • Holybro Pixhawk 6X Wiring Quickstart
    • Holybro Pixhawk 5X Wiring Quickstart
    • Holybro Pixhawk 4 Wiring Quickstart - Discontinued
    • Holybro Pixhawk 4 Mini Wiring Quickstart - Discontinued
    • Holybro Durandal Wiring Quickstart
    • Holybro Pix32 v5 Wiring Quickstart
    • Cube Wiring Quickstart
    • Pixracer Wiring Quickstart
    • mRo (3DR) Pixhawk Wiring Quickstart
  • Standard Configuration
    • Firmware
    • Airframe
    • Sensor Orientation
    • Compass
    • Gyroscope
    • Accelerometer
    • Airspeed
    • Level Horizon Calibration
    • Radio Setup
    • Joystick Setup
    • Flight Modes
    • Battery
    • Safety
      • Failsafe Simulation
    • ESC Calibration
    • Actuators
    • Autotune
  • Vehicle Types & Setup
    • Multicopters
      • Multicopter Config/Tuning
        • MC Filter/Control Latency Tuning
        • MC PID Tuning (Manual/Basic)
        • MC PID Tuning Guide (Manual/Advanced)
        • MC Setpoint Tuning (Trajectory Generator)
          • MC Jerk-limited Type Trajectory
        • Multicopter Racer Setup
      • X500 v2 (Pixhawk 6C)
      • X500 v2 (Pixhawk 5X)
      • X500 (Pixhawk 4)
      • S500 V2 (Pixhawk 4)
      • DJI F450 (CUAV v5+)
      • DJI F450 (CUAV v5 nano)
      • QAV250 (Pixhawk4 Mini) - Discontinued
      • DJI F450 + RTK (Pixhawk 3 Pro)
      • QAV250 (Pixhawk Mini)
      • QAV-R 5" Racer (Pixracer)
      • Omnicopter
    • Planes
      • Fixed Wing Config/Tuning
        • Fixedwing PID Tuning Guide
        • Fixedwing Advanced Tuning Guide
        • Fixedwing Trimming Guide
      • Reptile Dragon 2 (ARK6X)
      • Turbo Timber Evolution (Pixhawk 4 Mini)
      • Wing Wing Z84 (Pixracer)
    • VTOL
      • VTOL Config/Tuning
        • QuadPlane Configuration
        • Back-transition Tuning
        • VTOL w/o Airspeed Sensor
        • VTOL Weather Vane
      • Standard VTOL
        • FunCub QuadPlane (Pixhawk)
        • Ranger QuadPlane (Pixhawk)
        • Falcon Vertigo QuadPlane (Dropix)
      • Tailsitter VTOL
        • Build: TBS Caipiroshka Tailsitter Build (Pixracer)
      • Tiltrotor VTOL
        • Build: Convergence Tiltrotor (Pixfalcon)
    • Airships (experimental)
    • Autogyros (experimental)
      • ThunderFly Auto-G2 (Holybro pix32)
    • Balloons (experimental)
    • Helicopter (experimental)
      • Helicopter Config/Tuning
    • Rovers (experimental)
      • Traxxas Stampede
    • Submarines (experimental)
      • BlueROV2
    • Airframes Reference
  • Flying
    • First Flight Guidelines
    • Flying 101
    • Missions
      • Package Delivery Mission
    • GeoFence
    • Safety Point Planning
    • Flight Modes
      • Position Mode (MC)
      • Altitude Mode (MC)
      • Manual/Stabilized Mode (MC)
      • Acro Mode (MC)
      • Orbit Mode (MC)
      • Position Mode (FW)
      • Altitude Mode (FW)
      • Stabilized Mode (FW)
      • Acro Mode (FW)
      • Manual Mode (FW)
      • Takeoff Mode
      • Land Mode
      • Return Mode
      • Hold Mode
      • Mission Mode
      • Follow Me Mode
      • Offboard Mode
    • Terrain Following/Holding
  • Flight Log Analysis
    • Log Analysis using Flight Review
    • Log Analysis using PlotJuggler
  • Advanced Configuration
    • Finding/Updating Parameters
    • Full Parameter Reference
    • ECL/EKF Overview & Tuning
    • Flight Termination Configuration
    • Bootloader Flashing onto Betaflight Systems
    • Land Detector Configuration
    • Prearm/Arm/Disarm Configuration
    • IMU Factory Calibration
    • Sensor Thermal Compensation
    • Compass Power Compensation
    • Advanced Controller Orientation
    • Static Pressure Buildup
    • Serial Port Configuration
    • MAVLink Telemetry (OSD/GCS)
    • PX4 Ethernet Setup
    • Bootloader Update
  • Hardware (Drones&Parts)
    • Complete Vehicles
      • ModalAI Starling
      • PX4 Vision Kit
      • MindRacer BNF & RTF
        • MindRacer 210
        • NanoMind 110
      • Holybro Kopis 2
      • Bitcraze Crazyflie 2.1
    • Flight Controllers (Autopilots)
      • Pixhawk Series
        • Silicon Errata
      • Pixhawk Standard Autopilots
        • CUAV Pixhawk V6X (FMUv6X)
        • Holybro Pixhawk 6X (FMUv6X)
        • Holybro Pixhawk 6C (FMUv6C)
        • Holybro Pixhawk 6C Mini(FMUv6C)
        • Holybro Pix32 v6 (FMUv6C)
        • Holybro Pixhawk 5X (FMUv5X)
        • Holybro Pixhawk 4 (FMUv5) - Discontinued
        • Holybro Pixhawk 4 Mini (FMUv5) - Discontinued
        • Drotek Pixhawk 3 Pro (FMUv4pro)
        • mRo Pixracer (FMUv4)
        • Hex Cube Black (FMUv3)
        • mRo Pixhawk (FMUv3)
        • Holybro Pixhawk Mini (FMUv3) - Discontinued
      • Manufacturer-Supported Autopilots
        • AirMind MindPX
        • AirMind MindRacer
        • ARK Electronics ARKV6X
        • CUAV X7
        • CUAV Nora
        • CUAV V5+ (FMUv5)
        • CUAV V5 nano (FMUv5)
        • CUAV Pixhack v3 (FMUv3)
        • CubePilot Cube Orange+ (CubePilot)
        • CubePilot Cube Orange (CubePilot)
        • CubePilot Cube Yellow (CubePilot)
        • Holybro Kakute H7v2
        • Holybro Kakute H7mini
        • Holybro Kakute H7
        • Holybro Durandal
        • Holybro Pix32 v5
        • ModalAI Flight Core v1
        • ModalAI VOXL Flight
        • ModalAI VOXL 2
        • mRobotics-X2.1 (FMUv2)
        • mRo Control Zero F7)
        • NXP RDDRONE-FMUK66 FMU
        • Sky-Drones AIRLink
        • SPRacing SPRacingH7EXTREME
        • ThePeach FCC-K1
        • ThePeach FCC-R1
      • Experimental Autopilots
        • BeagleBone Blue
        • Raspberry Pi 2/3 Navio2
        • Raspberry Pi 2/3/4 PilotPi
          • PilotPi with Raspberry Pi OS
          • PilotPi with Ubuntu Server
      • Discontinued Autopilots/Vehicles
        • Drotek Dropix (FMUv2)
        • Omnibus F4 SD
        • BetaFPV Beta75X 2S Brushless Whoop
        • Bitcraze Crazyflie 2.0
        • Aerotenna OcPoC-Zynq Mini
        • CUAV v5
        • Holybro Kakute F7 (Discontinued)
        • Holybro Pixfalcon
        • Holybro pix32 (FMUv2)
        • mRo AUAV-X2
        • 3DR Pixhawk 1
        • Snapdragon Flight
        • Intel® Aero RTF Drone (Discontinued)
      • Pixhawk Autopilot Bus (PAB) & Carriers
        • ARK Electronics Pixhawk Autopilot Bus Carrier
    • Flight Controller Peripherals
      • ADSB/FLARM (Traffic Avoidance)
      • Air Traffic Avoidance: ADSB/FLARM
      • Air Traffic Avoidance: UTM
      • Airspeed Sensors
        • TFSlot Airspeed Sensor
      • Barometers
      • Camera
      • Distance Sensors (Rangefinders)
        • Lightware SFxx Lidar
        • Ainstein US-D1 Standard Radar Altimeter
        • LeddarOne Lidar
        • Benewake TFmini Lidar
        • Lidar-Lite
        • TeraRanger
        • Lanbao PSK-CM8JL65-CC5
        • Avionics Anonymous Laser Altimeter UAVCAN Interface
      • ESCs & Motors
        • PWM ESCs and Servos
        • DShot ESCs
        • OneShot ESCs and Servos
        • DroneCAN ESCs
          • Zubax Telega
          • PX4 Sapog ESC Firmware
            • Holybro Kotleta
            • Zubax Orel
        • VESC
      • TBS Crossfire (CRSF) Telemetry
      • FrSky Telemetry
      • Gimbal (Mount) Configuration
      • GPS/Compass
        • ARK GPS
        • Holybro DroneCAN M8N GPS
        • LOCOSYS Hawk A1 GNSS
        • Hex Here2
        • Holybro M8N & M9N GPS
        • Sky-Drones SmartAP GPS
      • Grippers
        • Servo Gripper
      • Optical Flow
        • ARK Flow
        • PMW3901
        • PX4FLOW (Deprecated)
      • Precision Landing
      • Parachute
      • Power Modules/PDB
        • CUAV HV pm
        • CUAV CAN PMU
        • Holybro PM02
        • Holybro PM07
        • Holybro PM06 V2
        • Holybro PM02D (digital)
        • Holybro PM03D (digital)
        • Pomegranate Systems Power Module
        • Sky-Drones SmartAP PDB
      • Satellite Coms (Iridium/RockBlock)
      • Telemetry Radios
        • SiK Radio
          • RFD900 (SiK) Telemetry Radio
          • HolyBro (SIK) Telemetry Radio
        • Telemetry Wifi
          • ESP8266 WiFi Module
          • ESP32 WiFi Module
          • 3DR Telemetry Wifi (Discontinued)
        • Microhard Serial Telemetry Radio
          • ARK Electron Microhard Serial Telemetry Radio
          • Holybro Microhard P900 Telemetry Radio
        • CUAV P8 Telemetry Radio
        • HolyBro XBP9X - Discontinued
      • RTK GPS
        • ARK RTK GPS
        • RTK GPS Heading with Dual u-blox F9P
        • CUAV C-RTK
        • CUAV C-RTK2 PPK/RTK GNSS
        • CUAV C-RTK 9Ps
        • Femtones MINI2 Receiver
        • Freefly RTK GPS
        • Holybro H-RTK-F9P
        • Holybro H-RTK-M8P
        • Holybro H-RTK Unicore UM982 GPS
        • Locosys Hawk R1
        • Locosys Hawk R2
        • Septentrio AsteRx-RIB
        • Septentrio mosaic-go
        • Trimble MB-Two
        • CubePilot Here+ (Discontined)
      • Remote ID
      • Smart Batteries
        • Rotoye Batmon Battery Smartification Kit
      • Tachometers (Revolution Counters)
        • ThunderFly TFRPM01 Tachometer Sensor
      • I2C Peripherals
        • I2C bus accelerators
        • TFI2CADT01 I2C address translator
      • CAN Peripherals
      • DroneCAN Peripherals
        • PX4 DroneCAN Firmware
        • ARK CANnode
    • Companion Computers
      • Pixhawk + Companion Setup
        • RasPi Pixhawk Companion
      • Companion Computer Peripherals
      • Holybro Pixhawk RPI CM4 Baseboard
      • Auterion Skynode
      • Computer Vision
        • Obstacle Avoidance
        • Safe Landing
        • Collision Prevention
        • Path Planning Interface
        • Motion Capture (MoCap)
        • Visual Inertial Odometry (VIO)
          • Realsense T265 Tracking Camera (VIO)
      • Video Streaming
  • Development
    • Getting Started
      • Recommended Hardware/Setup
      • Toolchain Installation
        • MacOS Setup
        • Ubuntu Setup
        • Windows Setup
        • Visual Studio Code IDE
        • Other/Generic Tools
      • Building the Code
      • Writing your First Application
      • Application/Module Template
    • Concepts
      • PX4 Architecture
      • PX4 Flight Stack Architecture
        • Controller Diagrams
      • Events Interface
      • Flight Modes
      • Flight Tasks
      • Control Allocation
      • PWM limit state machine
      • System Startup
      • SD Card Layout
    • Simulation
      • jMAVSim Simulation
        • Multi-Vehicle Sim with JMAVSim
      • Gazebo Simulation
        • Vehicles
        • Multi-Vehicle Sim
      • Gazebo Classic Simulation
        • Vehicles
        • Worlds
        • Multi-Vehicle Sim
      • FlightGear Simulation
        • FlightGear Vehicles
        • Multi-Vehicle Sim with FlightGear
      • JSBSim Simulation
      • AirSim Simulation
      • Multi-Vehicle Simulation
      • Simulate Failsafes
      • HITL Simulation
      • Simulation-In-Hardware
    • Hardware
      • Flight Controller Reference Design
      • Manufacturer’s Board Support Guide
      • Flight Controller Porting Guide
        • PX4 Board Configuration (kconfig)
        • NuttX Board Porting Guide
      • Serial Port Mapping
      • Airframes
        • Adding a New Airframe
      • Device Drivers
      • Telemetry Radio
        • SiK Radio
      • Sensor and Actuator I/O
        • DroneCAN
        • I2C Bus
        • UART/Serial Ports
          • Port-Configurable Serial Drivers
      • RTK GPS (Integration)
    • Middleware
      • uORB Messaging
      • uORB Graph
      • uORB Message Reference
        • ActionRequest
        • ActuatorArmed
        • ActuatorControlsStatus
        • ActuatorMotors
        • ActuatorOutputs
        • ActuatorServos
        • ActuatorServosTrim
        • ActuatorTest
        • AdcReport
        • Airspeed
        • AirspeedValidated
        • AirspeedWind
        • AutotuneAttitudeControlStatus
        • BatteryStatus
        • ButtonEvent
        • CameraCapture
        • CameraStatus
        • CameraTrigger
        • CellularStatus
        • CollisionConstraints
        • CollisionReport
        • ControlAllocatorStatus
        • Cpuload
        • DebugArray
        • DebugKeyValue
        • DebugValue
        • DebugVect
        • DifferentialPressure
        • DistanceSensor
        • Ekf2Timestamps
        • EscReport
        • EscStatus
        • EstimatorAidSource1d
        • EstimatorAidSource2d
        • EstimatorAidSource3d
        • EstimatorBias
        • EstimatorBias3d
        • EstimatorEventFlags
        • EstimatorGpsStatus
        • EstimatorInnovations
        • EstimatorSelectorStatus
        • EstimatorSensorBias
        • EstimatorStates
        • EstimatorStatus
        • EstimatorStatusFlags
        • Event
        • FailsafeFlags
        • FailureDetectorStatus
        • FollowTarget
        • FollowTargetEstimator
        • FollowTargetStatus
        • GeneratorStatus
        • GeofenceResult
        • GimbalControls
        • GimbalDeviceAttitudeStatus
        • GimbalDeviceInformation
        • GimbalDeviceSetAttitude
        • GimbalManagerInformation
        • GimbalManagerSetAttitude
        • GimbalManagerSetManualControl
        • GimbalManagerStatus
        • GpioConfig
        • GpioIn
        • GpioOut
        • GpioRequest
        • GpsDump
        • GpsInjectData
        • Gripper
        • HealthReport
        • HeaterStatus
        • HomePosition
        • HoverThrustEstimate
        • InputRc
        • InternalCombustionEngineStatus
        • IridiumsbdStatus
        • IrlockReport
        • LandingGear
        • LandingGearWheel
        • LandingTargetInnovations
        • LandingTargetPose
        • LaunchDetectionStatus
        • LedControl
        • LogMessage
        • LoggerStatus
        • MagWorkerData
        • MagnetometerBiasEstimate
        • ManualControlSetpoint
        • ManualControlSwitches
        • MavlinkLog
        • MavlinkTunnel
        • Mission
        • MissionResult
        • ModeCompleted
        • MountOrientation
        • NavigatorMissionItem
        • NormalizedUnsignedSetpoint
        • NpfgStatus
        • ObstacleDistance
        • OffboardControlMode
        • OnboardComputerStatus
        • OrbTest
        • OrbTestLarge
        • OrbTestMedium
        • OrbitStatus
        • ParameterUpdate
        • Ping
        • PositionControllerLandingStatus
        • PositionControllerStatus
        • PositionSetpoint
        • PositionSetpointTriplet
        • PowerButtonState
        • PowerMonitor
        • PpsCapture
        • PwmInput
        • Px4ioStatus
        • QshellReq
        • QshellRetval
        • RadioStatus
        • RateCtrlStatus
        • RcChannels
        • RcParameterMap
        • Rpm
        • RtlTimeEstimate
        • SatelliteInfo
        • SensorAccel
        • SensorAccelFifo
        • SensorBaro
        • SensorCombined
        • SensorCorrection
        • SensorGnssRelative
        • SensorGps
        • SensorGyro
        • SensorGyroFft
        • SensorGyroFifo
        • SensorHygrometer
        • SensorMag
        • SensorOpticalFlow
        • SensorPreflightMag
        • SensorUwb
        • SensorSelection
        • SensorsStatus
        • SensorsStatusImu
        • SystemPower
        • TakeoffStatus
        • TaskStackInfo
        • TecsStatus
        • TelemetryStatus
        • TiltrotorExtraControls
        • TimesyncStatus
        • TrajectoryBezier
        • TrajectorySetpoint
        • TrajectoryWaypoint
        • TransponderReport
        • TuneControl
        • UavcanParameterRequest
        • UavcanParameterValue
        • UlogStream
        • UlogStreamAck
        • UwbDistance
        • UwbGrid
        • VehicleAcceleration
        • VehicleAirData
        • VehicleAngularAccelerationSetpoint
        • VehicleAngularVelocity
        • VehicleAttitude
        • VehicleAttitudeSetpoint
        • VehicleCommand
        • VehicleCommandAck
        • VehicleConstraints
        • VehicleControlMode
        • VehicleGlobalPosition
        • VehicleImu
        • VehicleImuStatus
        • VehicleLandDetected
        • VehicleLocalPosition
        • VehicleLocalPositionSetpoint
        • VehicleMagnetometer
        • VehicleOdometry
        • VehicleOpticalFlow
        • VehicleOpticalFlowVel
        • VehicleRatesSetpoint
        • VehicleRoi
        • VehicleStatus
        • VehicleThrustSetpoint
        • VehicleTorqueSetpoint
        • VehicleTrajectoryBezier
        • VehicleTrajectoryWaypoint
        • VtolVehicleStatus
        • Wind
        • YawEstimatorStatus
      • MAVLink Messaging
      • uXRCE-DDS (PX4-ROS 2/DDS Bridge)
    • Modules & Commands
      • Autotune
      • Commands
      • Communication
      • Controllers
      • Drivers
        • Airspeed Sensor
        • Baro
        • Distance Sensor
        • IMU
        • INS
        • Magnetometer
        • Optical Flow
        • Rpm Sensor
        • Transponder
      • Estimators
      • Simulations
      • System
      • Template
    • Debugging/Logging
      • FAQ
      • Consoles/Shells
        • MAVLink Shell
        • System Console
      • Debugging with GDB
        • SWD Debug Port
        • JLink Probe
        • Black Magic/DroneCode Probe
        • STLink Probe
        • Hardfault Debugging
      • Debugging with Eclipse
      • Failure Injection
      • Sensor/Topic Debugging
      • Simulation Debugging
      • Sending Debug Values
      • System-wide Replay
      • Profiling
      • Binary Size Profiling
      • Logging
      • Flight Log Analysis
      • ULog File Format
    • Tutorials
      • Long-distance Video Streaming
      • Connecting an RC Receiver on Linux
    • Advanced Topics
      • Parameters & Configs
      • Package Delivery Architecture
      • Computer Vision
        • Motion Capture (VICON, Optitrack, NOKOV)
      • Installing driver for Intel RealSense R200
      • Switching State Estimators
      • Out-of-Tree Modules
      • STM32 Bootloader
      • System Tunes
      • Advanced Linux Installation Cases
      • Windows Cygwin Toolchain Maintenance
      • Unsupported Developer Setup
        • CentOS Linux
        • Arch Linux
        • Windows VM Toolchain
        • Windows Cygwin Toolchain
        • Qt Creator IDE
    • Platform Testing and CI
      • Test Flights
        • Test MC_01 - Manual Modes
        • Test MC_02 - Full Autonomous
        • Test MC_03 - Auto Manual Mix
        • Test MC_04 - Failsafe Testing
        • Test MC_05 - Indoor Flight (Manual Modes)
      • Unit Tests
      • Continuous Integration
      • MAVSDK Integration Testing
      • ROS Integration Testing
      • Docker Containers
      • Maintenance
  • Drone Apps & APIs
    • Offboard Control from Linux
    • ROS
      • ROS 2
        • ROS 2 User Guide
        • ROS 2 Offboard Control Example
        • ROS 2 Multi Vehicle Simulation
      • ROS 1 with MAVROS
        • ROS/MAVROS Installation Guide
        • ROS/MAVROS Offboard Example (C++)
        • ROS/MAVROS Offboard Example (Python)
        • ROS/MAVROS Sending Custom Messages
        • ROS/MAVROS with Gazebo Classic Simulation
        • Gazebo Classic OctoMap Models with ROS 1
        • ROS/MAVROS Installation on RPi
        • External Position Estimation (Vision/Motion based)
    • DroneKit
  • Contribution (&Dev Call)
    • Dev Call
    • Support
    • Source Code Management
      • GIT Examples
    • Documentation
    • Translation
    • Terminology/Notation
    • Licenses
  • Releases
    • 1.14
    • 1.13
    • 1.12
Powered by GitBook
On this page
  • Description
  • Mission Feasibility Checks
  • QGroundControl Support
  • Mission Parameters
  • Supported Mission Commands
  • Rounded turns: Inter-Waypoint Trajectory
  • MC Mission Takeoff
  • FW Mission Takeoff
  • FW Mission Landing
  • Landing Sequence
  • Landing Approach
  • Flaring / Roll-out
  • Abort
  • Nudging
  • Near Ground Safety Constraints
  • VTOL Mission Takeoff
  1. Flying
  2. Flight Modes

Mission Mode

PreviousHold ModeNextFollow Me Mode

Last updated 1 year ago

Mission mode causes the vehicle to execute a predefined autonomous (flight plan) that has been uploaded to the flight controller. The mission is typically created and uploaded with a Ground Control Station (GCS) application like (QGC).

:::note

  • This mode requires a global 3d position estimate (from GPS or inferred from a ).

  • The vehicle must be armed before this mode can be engaged.

  • This mode is automatic - no user intervention is required to control the vehicle.

  • RC control switches can be used to change flight modes on any vehicle.

  • RC stick movement in a multicopter (or VTOL in multicopter mode) will change the vehicle to unless handling a critical battery failsafe. :::

Description

Missions are usually created in a ground control station (e.g. ) and uploaded prior to launch. They may also be created by a developer API, and/or uploaded in flight.

Individual are handled in a way that is appropriate for each vehicle's flight characteristics (for example loiter is implemented as hover for copter and circle for fixed-wing). VTOL vehicles follow the behavior and parameters of fixed-wing when in FW mode, and of copter when in MC mode.

:::note Missions are uploaded onto a SD card that needs to be inserted before booting up the autopilot. :::

At high level all vehicle types behave in the same way when MISSION mode is engaged:

  1. If no mission is stored, or if PX4 has finished executing all mission commands, or if the :

    • If flying the vehicle will loiter.

    • If landed the vehicle will "wait".

  2. If a mission is stored and PX4 is flying it will execute the from the current step.

    • On copters PX4 will treat a takeoff item as a normal waypoint if already flying.

  3. If a mission is stored and PX4 is landed:

    • On copters PX4 will execute the . If the mission does not have a TAKEOFF command then PX4 will fly the vehicle to the minimum altitude before executing the remainder of the flight plan from the current step.

    • On fixed-wing vehicles PX4 will not automatically take off (the autopilot will detect the lack of movement and set the throttle to zero). If the currently active waypoint is a Takeoff, the system will automatically takeoff (see ).

  4. If no mission is stored, or if PX4 has finished executing all mission commands:

    • If flying the vehicle will loiter.

    • If landed the vehicle will "wait".

  5. You can manually change the current mission command by selecting it in QGroundControl.

    :::note If you have a Jump to item command in the mission, moving to another item will not reset the loop counter. One implication is that if you change the current mission command to 1 this will not "fully restart" the mission. :::

  6. The mission will only reset when the vehicle is disarmed or when a new mission is uploaded.

    :::tip To automatically disarm the vehicle after it lands, in QGroundControl go to , navigate to Land Mode Settings and check the box labeled Disarm after. Enter the time to wait after landing before disarming the vehicle. :::

:::warning Ensure that the throttle stick is non-zero before switching to any RC mode (otherwise the vehicle will crash). We recommend you centre the control sticks before switching to any other mode. :::

For more information about mission planning, see:

Mission Feasibility Checks

PX4 runs some basic sanity checks to determine if a mission is feasible when it is uploaded, and when the vehicle is first armed. If any of the checks fail, the user is notified and it is not possible to start the mission.

A subset of the most important checks are listed below:

  • Any mission item conflicts with a plan or safety geofence

QGroundControl Support

QGroundControl provides additional GCS-level mission handling support (in addition to that provided by the flight controller).

For more information see:

Mission Parameters

General parameters:

Parameter
Description

RC loss failsafe mode (what the vehicle will do if it looses RC connection) - e.g. enter hold mode, return mode, terminate etc.

Fixed-wing loiter radius.

Parameter
Description

The mission will not be started if the current waypoint is more distant than this value from the home position. Disabled if value is 0 or less.

Maximum landing slope angle.

Mission takeoff/landing requirement configuration. FW and VTOL both have it set to 2 by default, which means that the mission has to contain a landing.

Supported Mission Commands

PX4 "accepts" the following MAVLink mission commands in Mission mode (with some caveats, given after the list). Unless otherwise noted, the implementation is as defined in the MAVLink specification.

    • Param3 (flythrough) is ignored. Flythrough is always enabled if param 1 (time_inside) > 0.

    • MAV_CMD_NAV_VTOL_TAKEOFF.param2 (transition heading) is ignored. Instead the heading to the next waypoint is used for the transition heading.

Note:

  • PX4 parses the above messages, but they are not necessary acted on. For example, some messages are vehicle-type specific.

  • Not all messages/commands are exposed via QGroundControl.

  • :::note Please add an issue report or PR if you find a missing/incorrect message. :::

Rounded turns: Inter-Waypoint Trajectory

PX4 expects to follow a straight line from the previous waypoint to the current target (it does not plan any other kind of path between waypoints - if you need one you can simulate this by adding additional waypoints).

Vehicles switch to the next waypoint as soon as they enter the acceptance radius:

  • For FW the acceptance radius is defined by the "L1 distance".

    • By default, it's about 70 meters.

MC Mission Takeoff

If a mission with no takeoff mission item is started, the vehicle will ascend to the minimum takeoff altitude and then proceed to the first Waypoint mission item.

If the vehicle is already flying when the mission is started, a takeoff mission item is treated as a normal waypoint.

FW Mission Takeoff

Starting flights with mission takeoff (and landing using a mission landing) is the recommended way of operating a plane autonomously.

During mission execution the vehicle will takeoff towards this waypoint, and climb until the specified altitude is reached. The mission item is then accepted, and the mission will start executing the next item.

In both cases, the vehicle should be placed (or launched) facing towards the takeoff waypoint when the mission is started. If possible, always make the vehicle takeoff into the wind.

A fixed-wing mission requires a Takeoff mission item to takeoff; if however the vehicle is already flying when the mission is started the takeoff item will be treated as a normal waypoint.

FW Mission Landing

If possible, always plan the landing such that it does the approach into the wind.

The following sections describe the landing sequence, land abort and nudging, safety considerations, and configuration.

Landing Sequence

This pattern results in the following landing sequence:

  1. Fly to landing location: The aircraft flies at its current altitude towards the loiter waypoint.

  2. Descending orbit to approach altitude: On reaching the loiter radius of the waypoint, the vehicle performs a descending orbit until it reaches the "approach altitude" (the altitude of the loiter waypoint). The vehicle continues to orbit at this altitude until it has a tanjential path towards the land waypoint, at which point the landing approach is initiated.

  3. Landing approach: The aircraft follows the landing approach slope towards the land waypoint until the flare altitude is reached.

  4. Flare: The vehicle flares until it touches down.

Landing Approach

The vehicle tracks the landing slope (generally at a slower speed than cruise) until reaching the flare altitude.

The parameters that affect the landing approach are listed below.

Parameter
Description

The maximum achievable landing approach slope angle. Note that smaller angles may still be commanded via the landing pattern mission item.

Optionally deploy landing configuration during the landing descent orbit (e.g. flaps, spoilers, landing airspeed).

Calibrated airspeed setpoint during landing.

Flaps setting during landing.

Flaring / Roll-out

Flaring consists of a switch from altitude tracking to a shallow sink rate setpoint and constraints on the commandable throttle, resulting in nose up manuevering to slow the descent and produce a softer touchdown.

The parameters that affect flaring are listed below.

Parameter
Description

Time before impact (at current descent rate) at which the vehicle should flare.

A shallow sink rate the aircraft will track during the flare.

Minimum altitude above ground the aircraft must flare. This is only used when the time-based flare altitude is too low.

Maximum allowed pitch during the flare.

Minimum allowed pitch during the flare (often necessary to avoid negative pitch angles commanded to increase airspeed, as the throttle is reduced to idle setting.)

The time after flare start when the vehicle should pitch the nose down.

Pitch setpoint while on the runway. For tricycle gear, typically near zero. For tail draggers, positive.

Idle throttle setting. The vehicle will retain this setting throughout the flare and roll out.

Abort

Operator Abort

Automatic Abort

Parameter
Description

The minimum altitude above the land point an abort orbit can be commanded.

Determines which automatic abort criteria are enabled.

Enables use of the distance sensor during the final approach.

Nudging

Parameter
Description

Enable nudging behavior for fixed-wing landing.

Configure the allowable touchdown lateral offset from the commanded landing point.

Enable the nose wheel steering controller.

Near Ground Safety Constraints

In landing mode, the distance sensor is used to determine proximity to the ground, and the airframe's geometry is used to calculate roll contraints to prevent wing strike.

Parameter
Description

Wing span of the airframe.

Height of wing from bottom of gear (or belly if no gear).

VTOL Mission Takeoff

Plan a VTOL mission takeoff by adding a VTOL Takeoff mission item to the map.

A VTOL mission requires a VTOL Takeoff mission item to takeoff; if however the vehicle is already flying when the mission is started the takeoff item will be treated as a normal waypoint.

Missions can be paused by switching out of mission mode to any other mode (such as or . When you switch back to mission mode the vehicle will continue the mission, heading from the current vehicle position to the current active mission item (the same waypoint it as heading towards originally). Note that if you moved the vehicle while the mission was paused you will no longer be following the original track towards the waypoint. A mission can be uploaded while the vehicle is paused, in which which case the current active mission item is set to 1.

(QGroundControl User Guide)

First mission item too far away from vehicle ()

More than one land start mission item defined ()

A fixed-wing landing has an infeasible slope angle ()

Land start item (MAV_CMD_DO_LAND_START) appears in mission before an RTL item ()

Missing takeoff and/or land item when these are configured as a requirement ()

Mission behaviour is affected by a number of parameters, most of which are documented in . A very small subset are listed below.

Controls whether stick movement on a multicopter (or VTOL in MC mode) gives control back to the pilot in . This can be separately enabled for auto modes and for offboard mode, and is enabled in auto modes by default.

The amount of stick movement that causes a transition to (if is enabled).

Parameters related to :

PX4 does not support local frames for mission commands (e.g. ).

The list may become out of date as messages are added. You can check the current set by inspecting the code. Support is MavlinkMissionManager::parse_mavlink_mission_item in .

MC vehicles will change the speed when approaching or leaving a waypoint based on the tuning. The vehicle will follow a smooth rounded curve towards the next waypoint (if one is defined) defined by the acceptance radius (). The diagram below shows the sorts of paths that you might expect.

For MC this radius is defined by .

The L1 distance is computed from two parameters: and , and the current ground speed.

The equation is: L1distance=1πL1dampingL1period∥v⃗xyground∥L_{1_{distance}}=\frac{1}{\pi}L_{1_{damping}}L_{1_{period}}\left \| \vec{v}_{ {xy}_{ground} } \right \|L1distance​​=π1​L1damping​​L1period​​​vxyground​​​

Plan a multicopter mission takeoff by adding a Takeoff mission item to the map (this corresponds to the MAVLink command).

During mission execution this will cause the vehicle to ascend vertically to the minimum takeoff altitude defined in the parameter, then head towards the 3D position defined in the mission item.

:::note A more detailed description of mission mode fixed-wing takeoff can be found in (covering fixed wing takeoff in both mission mode and takeoff mode). :::

Fixed-wing mission takeoffs are defined in a Takeoff mission item, which corresponds to the MAVLink command.

Both runway and hand-launched takeoff are supported — for configuration information see . For a runway takeoff, the Takeoff mission item will cause the vehicle to arm, throttle up the motors and take off. When hand-launching the vehicle will arm, but only throttle up when the vehicle is thrown (the acceleration trigger is detected).

Fixed wing mission landing is the recommended way to land a plane autonomously. This can be planned in QGroundControl using .

:::note Note fixed wing landing using is currently broken, so mission landing is the only way to autonomously land a plane. :::

A landing pattern consists of a loiter waypoint () followed by a land waypoint (). The positions of the two points define the start and end point of the landing approach, and hence the glide slope for the landing approach.

Note that the glide slope is calculated from the 3D positions of the loiter and landing waypoints; if its angle exceeds the parameter the mission will be rejected as unfeasible on upload.

Altitude time constant factor for landing (overrides default ).

The flaring altitude is calculated during the final approach via "time-to-impact" () and the approach descent rate. An additional safety parameter sets the minimum altitude at which the vehicle will flare (if the time based altitude is too low to allow a safe flare maneuver).

If belly landing, the vehicle will continue in the flaring state until touchdown, land detection, and subsequent disarm. For runway landings, enables setting the time post flare start to pitch down the nose (e.g. consider tricycle gear) onto the runway () and avoid bouncing. This time roughly corresponds to the touchdown post flare, and should be tuned for a given airframe during test flights only after the flare has been tuned.

The landing may be aborted by the operator at any point during the final approach using the command. On QGroundControl a popup button appears during landing to enable this.

Aborting the landing results in a climb out to an orbit pattern centered above the land waypoint. The maximum of the aircraft's current altitude and is set as the abort orbit altitude height relative to (above) the landing waypoint. Landing configuration (e.g. flaps, spoilers, landing airspeed) is disabled during abort and the aicraft flies in cruise conditions.

The abort command is disabled during the flare for safety. Operators may still manually abort the landing by switching to any manual mode, such as ), though it should be noted that this is risky!

Automatic abort logic is additionally available for several conditions, if configured. Available automatic abort criteria may be enabled via bitmask parameter . One example of an automatic abort criteria is the absence of a valid range measurement from a distance sensor.

:::warning Landing without a distance sensor is strongly discouraged. Disabling terrain estimation with and select bits of will remove the default distance sensor requirement, but consequently falls back to GNSS altitude to determine the flaring altitude, which may be several meters too high or too low, potentially resulting in damage to the airframe. :::

In the case of minor GNSS or map discrepancies causing an offset approach, small manual adjustments to the landing approach and roll out can be made by the operator (via yaw stick) when is enabled. Options include either nudging the approach angle or the full approach path.

In both cases, the vehicle remains in full auto mode, tracking the shifted approach vector. allows determination of how far to the left or right of the landing waypoint the projected touchdown point may be nudged. Yaw stick input corresponds to a nudge "rate". Once the stick is released (zero rate), the approach path or angle will stop moving.

Approach path nudging is frozen once the flare starts. If conducting a runway landing with steerable nose wheel, the yaw stick command passes directly to the nose wheel from flare start, during roll out, until disarm. Note that if the wheel controller is enabled (), the controller will actively attempt to steer the vehicle to the approach path, i.e. "fighting" operator yaw stick inputs.

:::note Nudging should not be used to supplement poor position control tuning. If the vehicle is regularly showing poor tracking peformance on a defined path, please refer to the for instruction. :::

During mission execution the vehicle will ascend vertically to the minimum takeoff altitude defined in the parameter, then transition to fixed-wing mode with the heading defined in the mission item. After transitioning the vehicle heads towards the 3D position defined in the mission item.

Hold mode
Position mode
Mission Planning
Plan View
MAV_CMD_DO_LAND_START
MAV_CMD_NAV_RETURN_TO_LAUNCH
Remove mission after vehicle lands
Resume mission after Return mode
MAV_CMD_NAV_WAYPOINT
MAV_CMD_NAV_LOITER_UNLIM
MAV_CMD_NAV_LOITER_TIME
MAV_CMD_NAV_LAND
MAV_CMD_NAV_TAKEOFF
MAV_CMD_NAV_LOITER_TO_ALT
MAV_CMD_NAV_VTOL_TAKEOFF
MAV_CMD_NAV_VTOL_LAND
MAV_CMD_NAV_FENCE_RETURN_POINT
MAV_CMD_NAV_FENCE_POLYGON_VERTEX_INCLUSION
MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION
MAV_CMD_NAV_FENCE_CIRCLE_INCLUSION
MAV_CMD_NAV_FENCE_CIRCLE_EXCLUSION
MAV_CMD_NAV_RALLY_POINT
MAV_CMD_DO_JUMP
MAV_CMD_NAV_ROI
MAV_CMD_DO_SET_ROI
MAV_CMD_DO_SET_ROI_LOCATION
MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET
MAV_CMD_DO_SET_ROI_NONE
MAV_CMD_DO_CHANGE_SPEED
MAV_CMD_DO_SET_HOME
MAV_CMD_DO_SET_SERVO
MAV_CMD_DO_LAND_START
MAV_CMD_DO_TRIGGER_CONTROL
MAV_CMD_DO_DIGICAM_CONTROL
MAV_CMD_DO_MOUNT_CONFIGURE
MAV_CMD_DO_MOUNT_CONTROL
MAV_CMD_IMAGE_START_CAPTURE
MAV_CMD_IMAGE_STOP_CAPTURE
MAV_CMD_VIDEO_START_CAPTURE
MAV_CMD_VIDEO_STOP_CAPTURE
MAV_CMD_DO_SET_CAM_TRIGG_DIST
MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL
MAV_CMD_SET_CAMERA_MODE
MAV_CMD_DO_VTOL_TRANSITION
MAV_CMD_NAV_DELAY
MAV_CMD_NAV_RETURN_TO_LAUNCH
MAV_CMD_DO_CONTROL_VIDEO
MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW
MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE
MAV_CMD_OBLIQUE_SURVEY
MAV_CMD_DO_SET_CAMERA_ZOOM
MAV_CMD_DO_SET_CAMERA_FOCUS
MAV_FRAME_LOCAL_NED
/src/modules/mavlink/mavlink_mission.cpp
MAV_CMD_NAV_TAKEOFF
MAV_CMD_NAV_TAKEOFF
fixed-wing landing pattern
MAV_CMD_NAV_LOITER_TO_ALT
MAV_CMD_NAV_LAND
MAV_CMD_DO_GO_AROUND
Stabilized mode
fixed-wing control tuning guide
MIS_DIST_1WP
FW_LND_ANG
MIS_TKO_LAND_REQ
mission feasibility checks
FW_LND_ANG
FW_LND_FL_TIME
FW_LND_FLALT
FW_LND_TD_TIME
RWTO_PSP
MIS_LND_ABRT_ALT
FW_LND_ABORT
FW_LND_USETER
FW_LND_ABORT
FW_W_EN
Position mode
TECS tuning
Position mode
COM_RC_OVERRIDE
mission
QGroundControl
Position mode
QGroundControl
mission/flight plan
mission/flight plan
Vehicle Setup > Safety
by default
mission commands
mission is not feasible
FW Takeoff/Landing in Mission
local position
Land mode
jerk-limited
Takeoff mode > Fixed-wing
Takeoff mode > Fixed-wing
acc-rad
Fixed-wing landing
Fixed-wing landing nudging
Fixed-wing landing nudging
Parameter Reference > Mission
NAV_ACC_RAD
NAV_ACC_RAD
NPFG_DAMPING
NPFG_PERIOD
MIS_TAKEOFF_ALT
FW_LND_NUDGE
FW_LND_TD_OFF
MIS_TAKEOFF_ALT
NAV_RCL_ACT
NAV_LOITER_RAD
COM_RC_OVERRIDE
COM_RC_STICK_OV
MIS_DIST_1WP
FW_LND_ANG
MIS_TKO_LAND_REQ
FW_LND_ANG
FW_LND_EARLYCFG
FW_LND_AIRSPD
FW_FLAPS_LND_SCL
FW_LND_THRTC_SC
FW_LND_FL_TIME
FW_LND_FL_SINK
FW_LND_FLALT
FW_LND_FL_PMAX
FW_LND_FL_PMIN
FW_LND_TD_TIME
RWTO_PSP
FW_THR_IDLE
MIS_LND_ABRT_ALT
FW_LND_ABORT
FW_LND_USETER
FW_LND_NUDGE
FW_LND_TD_OFF
FW_W_EN
FW_WING_SPAN
FW_WING_HEIGHT