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.

ArduPlane is the ArduPilot firmware for fixed-wing and VTOL vehicles. It handles conventional aircraft, delta flying wings, and — through the QuadPlane subsystem — hybrid VTOL configurations including tailsitters and tiltrotors. The vehicle code lives in ArduPlane/ and produces a single arduplane binary that adapts its control laws at runtime based on the configured frame type and enabled subsystems.

Flight modes

24 modes covering manual pass-through through fully autonomous missions and QuadPlane VTOL transitions.

QuadPlane VTOL

Hover like a copter, cruise like a plane. Supports tailsitters, tiltrotors, and motor-on-wing hybrids.

TECS controller

The Total Energy Control System manages speed and altitude as a coupled energy budget, not independently.

Autonomous soaring

Thermal mode uses AP_Soaring to locate and exploit thermals for extended unpowered flight.

Supported configurations

ArduPlane supports a wide range of fixed-wing and VTOL airframe configurations. The frame type is selected through parameters rather than a separate build target.
ConfigurationDescription
Conventional (3-surface)Aileron, elevator, rudder with pusher or tractor motor
Flying wingElevon mixing for delta and tailless designs
V-tailSoftware mixing for V-tail elevator and rudder surfaces
QuadPlane (multirotor lift)Fixed wing with added quad/hex lift motors for VTOL
TailsitterFull-body rotation VTOL; copter attitude in hover, plane attitude in cruise
TiltrotorMotors tilt between vertical (hover) and horizontal (cruise)
Conventional helicopter (experimental)Single-rotor with tail rotor operated by Plane firmware

Flight modes

All modes are defined in ArduPlane/mode.h. QuadPlane modes are compiled in only when HAL_QUADPLANE_ENABLED is set.
#ModeDescription
0ManualDirect RC pass-through, no stabilization
1CircleAutomatic constant-radius loiter circle
2StabilizeAttitude-stabilized with manual throttle
3TrainingStabilize with user-configurable bank/pitch limits
4AcroBody-frame rate control, no attitude reference
5FLY_BY_WIRE_A (FBWA)Pilot commands roll/pitch angle; auto level
6FLY_BY_WIRE_B (FBWB)Pilot commands bank angle and climb rate
7CruiseFBWB with automatic heading hold
8AutoTuneAutomated roll and pitch gain tuning in flight
10AutoFully automatic waypoint mission
11RTLReturn to launch and loiter or land
12LoiterAutomatic position and altitude hold
13TakeoffAutomatic ground-roll and climb-out
14Avoid_ADSBAutomatic ADS-B traffic avoidance
15GuidedFly to GCS-commanded coordinates
17QStabilizeQuadPlane hover with stabilized attitude
18QHoverQuadPlane hover with altitude hold
19QLoiterQuadPlane hover with position hold
20QLandQuadPlane automatic vertical landing
21QRTLQuadPlane return and vertical land
22QAutoTuneQuadPlane automated gain tuning
23QAcroQuadPlane body-frame rate control in hover
24ThermalAutonomous soaring using AP_Soaring thermal detection
25LoiterAltQLandLoiter then descend as QuadPlane for landing
26AutoLandAutomatic landing sequence with flare
QuadPlane modes (Q-prefix) are only available when HAL_QUADPLANE_ENABLED is defined. They are included in the standard arduplane binary for boards that have sufficient resources.

QuadPlane VTOL transitions

QuadPlane supports forward transitions from hover to fixed-wing flight and back. The transition behaviour is controlled by parameters in the Q_ namespace.
The aircraft accelerates horizontally while lift motors continue running. Once airspeed reaches the transition threshold, the lift motors stop and the wing takes over. The exact sequence depends on whether the frame is a tilrotor or a fixed-motor VTOL.

TECS speed and altitude controller

ArduPlane uses the Total Energy Control System (TECS) — implemented in libraries/AP_TECS/ and linked via wscript — to control speed and altitude simultaneously. Rather than separate throttle and pitch controllers, TECS treats the aircraft’s kinetic and potential energy as a shared budget.
  • Total energy (sum of KE and PE) is controlled by throttle.
  • Energy distribution (KE vs PE balance) is controlled by pitch.
This prevents the classic problem where independent controllers fight each other during climbs or descents. Key TECS parameters are prefixed TECS_ in the parameter tree.

Soaring support

The Thermal flight mode uses the AP_Soaring library to detect rising air and exploit thermals for extended gliding flight. When a thermal is detected:
  1. The motor throttles down.
  2. The aircraft enters a banked loiter over the thermal core.
  3. When altitude or loiter time limits are reached, the mission resumes.
Soaring works best with accurate airspeed sensors and low-drag glider airframes. See the SOAR_ parameter group to configure detection thresholds.

Building

1

Configure the build system

# SITL simulation
./waf configure --board sitl

# Hardware board example
./waf configure --board Pixhawk6C
2

Build ArduPlane

./waf plane
Output binary: build/<board>/bin/arduplane

Libraries linked by wscript

The ArduPlane/wscript file lists the vehicle-specific libraries added on top of the common set.
LibraryPurpose
APM_ControlRoll, pitch, yaw, and steering PID controllers
AP_AdvancedFailsafeMission-critical failsafe sequencing
AP_AvoidanceADS-B collision avoidance
AP_CameraCamera trigger and gimbal control
AP_L1_ControlL1 lateral track-following guidance law
AP_NavigationNavigation interface abstraction
AP_TECSTotal Energy Control System for speed/altitude
AP_InertialNavInertial navigation blending
AC_WPNavWaypoint and loiter navigation (used by QuadPlane)
AC_AttitudeControlAttitude controllers for QuadPlane hover
AP_MotorsMotor output mixing for QuadPlane lift motors
AP_LandingApproach and flare logic for fixed-wing landings
PIDGeneric PID controller used by several subsystems
AP_SoaringThermal soaring detection and exploitation
AP_LTM_Telem / AP_Devo_TelemSerial telemetry protocols
AC_AutoTuneAutomated PID gain tuning
AP_FollowFollow another vehicle (used in guided contexts)
AC_PrecLandPrecision landing for QuadPlane vertical descents
AP_IRLockIR-Lock target tracking
AP_QuicktuneIn-flight rapid gain tuning

Testing in simulation

# Build and run the full ArduPlane test suite
Tools/autotest/autotest.py build.Plane test.Plane

# Test a specific scenario
Tools/autotest/autotest.py build.Plane test.Plane.AltitudeHold
See the SITL guide for how to run simulated flights and connect Mission Planner or QGroundControl to the SITL instance.

Build docs developers (and LLMs) love