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.

ArduCopter is the ArduPilot firmware for rotary-wing vehicles. It runs on everything from a miniature quadcopter to a heavy-lift octocopter or a full-scale traditional helicopter, sharing the same parameter system, MAVLink interface, and library stack across every frame type. The vehicle code lives in ArduCopter/ and compiles to a single arducopter binary — or arducopter-heli for traditional helicopter frames.

Flight modes

28 distinct modes covering full manual control through fully autonomous waypoint missions.

Autonomous missions

Plan and execute survey grids, payload delivery, and follow-me missions using mission commands.

Precision landing

Land on a moving or stationary target using IR-Lock or vision-based detection via AC_PrecLand.

Traditional helicopter

Full H_RSC governor, autorotation mode, and heli-specific tuning via a separate build target.

Supported frame types

ArduCopter supports a wide range of multi-rotor and rotary-wing configurations. The frame type is selected at compile time via the FRAME_CONFIG define and at runtime through the FRAME_TYPE parameter.
FrameDescription
Quadcopter (+, X, V, H, Vtail, Atail)Four-motor frames in several arm layouts
HexacopterSix-motor frames in + and X configurations
OctocopterEight-motor frames, including coaxial octo-quad
TricopterThree-motor frame with a servo-driven rear rotor
Y6Coaxial six-motor Y-frame
Traditional helicopterSingle-rotor with tail rotor, full collective/cyclic control
BicopterTwo-motor experimental frame

Flight modes

All modes are defined in ArduCopter/mode.h. The mode number in the enum is the value written to the FLTMODE_* parameters.
#ModeDescription
0StabilizeManual angle control with manual throttle
1AcroManual body-frame angular rate with manual throttle
2AltHoldManual angle with automatic altitude hold
3AutoFully automatic waypoint mission execution
4GuidedFly to coordinates or velocity targets from GCS
5LoiterAutomatic horizontal position and altitude hold
6RTLReturn to launch and land automatically
7CircleAutomatic circular orbit with constant radius
9LandAutomatic landing with horizontal position control
11DriftSemi-autonomous with manual yaw, automatic lean
13SportEarth-frame angular rate control with manual throttle
14FlipAutomated roll-axis flip manoeuvre
15AutoTuneAutomated roll and pitch gain tuning
16PosHoldAutomatic position hold with manual override
17BrakeFull stop using GPS/inertial, no pilot input
18ThrowLaunch by throwing, then stabilize
19Avoid_ADSBAutomatic ADS-B traffic avoidance
20Guided_NoGPSGuided mode accepting attitude and altitude only
21SmartRTLReturn home by retracing the outbound flight path
22FlowHoldPosition hold using optical flow, no GPS required
23FollowFollow another vehicle or ground station
24ZigZagAutomated back-and-forth passes between two points
25SystemIDAutomated system identification signal injection
26AutoRotateAutonomous autorotation (traditional helicopter)
27Auto RTLMission-triggered return using DO_LAND_START
28TurtleFlip a crashed vehicle upright
Traditional helicopter frames expose two additional heli-specific modes: Acro_Heli and Stabilize_Heli, implemented in mode_acro_heli.cpp and mode_stabilize_heli.cpp. Build with ./waf heli to include them.

Key features

Optical flow hold

FlowHold mode maintains position indoors or where GPS is unavailable, using the AP_OpticalFlow library.

Follow mode

Autonomously tracks another MAVLink vehicle or GCS position, useful for filming.

ZigZag surveying

Automates parallel survey passes for agriculture and mapping without a full mission plan.

Payload placement

Auto mode’s PayloadPlace state machine descends, releases a payload, and ascends.

Crop sprayer

AC_Sprayer integrates flow-rate-controlled pump output with waypoint speed.

SmartRTL

Breadcrumb-based return path avoids obstacles encountered on the outbound trip.

Building

1

Configure the build system

Configure Waf for SITL or a specific board before building.
# Software-in-the-loop simulation
./waf configure --board sitl

# Example hardware board
./waf configure --board CubeOrange
2

Build ArduCopter

Build the standard multi-rotor binary.
./waf copter
The output binary is written to build/<board>/bin/arducopter.
3

Build for traditional helicopter

Use the heli target to compile with FRAME_CONFIG=HELI_FRAME, which enables the AC_AttitudeControl_Heli attitude controller, heli-specific input manager, and autorotation mode.
./waf heli

Libraries linked by wscript

The ArduCopter/wscript file declares the vehicle-specific libraries that Waf links into the arducopter binary, on top of the common vehicle library set (ap_common_vehicle_libraries()).
LibraryPurpose
AC_AttitudeControlRoll/pitch/yaw attitude and position controllers
AC_InputManagerPilot stick input shaping and expo curves
AC_PrecLandPrecision landing via IR-Lock or companion computer
AC_SprayerAgricultural spray pump control
AC_AutorotationAutorotation descent controller for helicopters
AC_WPNavWaypoint, loiter, and circle navigation
AP_CameraCamera trigger and gimbal control
AP_IRLockIR-Lock target tracking for precision landing
AP_MotorsMotor output mixing and ESC control
AP_AvoidanceADS-B and proximity-sensor collision avoidance
AP_AdvancedFailsafeMission-critical failsafe sequencing
AP_SmartRTLBreadcrumb path recording for SmartRTL mode
AP_WheelEncoderWheel odometry for surface vehicles
AP_WinchTether winch control
AP_LTM_Telem / AP_Devo_TelemLTM and Deviation serial telemetry
AC_AutoTuneAutomated PID gain tuning
AP_KDECANKDE CAN ESC protocol
AP_SurfaceDistanceRangefinder-based surface distance tracking

Testing in simulation

# Launch ArduCopter in SITL
Tools/autotest/autotest.py build.Copter test.Copter

# Run a specific test
Tools/autotest/autotest.py build.Copter test.Copter.RTLYaw
See the SITL guide for full instructions on running simulated flights, including how to connect a ground control station such as Mission Planner or QGroundControl.

Build docs developers (and LLMs) love