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 inDocumentation 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/ 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 theFRAME_CONFIG define and at runtime through the FRAME_TYPE parameter.
| Frame | Description |
|---|---|
| Quadcopter (+, X, V, H, Vtail, Atail) | Four-motor frames in several arm layouts |
| Hexacopter | Six-motor frames in + and X configurations |
| Octocopter | Eight-motor frames, including coaxial octo-quad |
| Tricopter | Three-motor frame with a servo-driven rear rotor |
| Y6 | Coaxial six-motor Y-frame |
| Traditional helicopter | Single-rotor with tail rotor, full collective/cyclic control |
| Bicopter | Two-motor experimental frame |
Flight modes
All modes are defined inArduCopter/mode.h. The mode number in the enum is the value written to the FLTMODE_* parameters.
| # | Mode | Description |
|---|---|---|
| 0 | Stabilize | Manual angle control with manual throttle |
| 1 | Acro | Manual body-frame angular rate with manual throttle |
| 2 | AltHold | Manual angle with automatic altitude hold |
| 3 | Auto | Fully automatic waypoint mission execution |
| 4 | Guided | Fly to coordinates or velocity targets from GCS |
| 5 | Loiter | Automatic horizontal position and altitude hold |
| 6 | RTL | Return to launch and land automatically |
| 7 | Circle | Automatic circular orbit with constant radius |
| 9 | Land | Automatic landing with horizontal position control |
| 11 | Drift | Semi-autonomous with manual yaw, automatic lean |
| 13 | Sport | Earth-frame angular rate control with manual throttle |
| 14 | Flip | Automated roll-axis flip manoeuvre |
| 15 | AutoTune | Automated roll and pitch gain tuning |
| 16 | PosHold | Automatic position hold with manual override |
| 17 | Brake | Full stop using GPS/inertial, no pilot input |
| 18 | Throw | Launch by throwing, then stabilize |
| 19 | Avoid_ADSB | Automatic ADS-B traffic avoidance |
| 20 | Guided_NoGPS | Guided mode accepting attitude and altitude only |
| 21 | SmartRTL | Return home by retracing the outbound flight path |
| 22 | FlowHold | Position hold using optical flow, no GPS required |
| 23 | Follow | Follow another vehicle or ground station |
| 24 | ZigZag | Automated back-and-forth passes between two points |
| 25 | SystemID | Automated system identification signal injection |
| 26 | AutoRotate | Autonomous autorotation (traditional helicopter) |
| 27 | Auto RTL | Mission-triggered return using DO_LAND_START |
| 28 | Turtle | Flip 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
Build ArduCopter
Build the standard multi-rotor binary.The output binary is written to
build/<board>/bin/arducopter.Libraries linked by wscript
TheArduCopter/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()).
| Library | Purpose |
|---|---|
AC_AttitudeControl | Roll/pitch/yaw attitude and position controllers |
AC_InputManager | Pilot stick input shaping and expo curves |
AC_PrecLand | Precision landing via IR-Lock or companion computer |
AC_Sprayer | Agricultural spray pump control |
AC_Autorotation | Autorotation descent controller for helicopters |
AC_WPNav | Waypoint, loiter, and circle navigation |
AP_Camera | Camera trigger and gimbal control |
AP_IRLock | IR-Lock target tracking for precision landing |
AP_Motors | Motor output mixing and ESC control |
AP_Avoidance | ADS-B and proximity-sensor collision avoidance |
AP_AdvancedFailsafe | Mission-critical failsafe sequencing |
AP_SmartRTL | Breadcrumb path recording for SmartRTL mode |
AP_WheelEncoder | Wheel odometry for surface vehicles |
AP_Winch | Tether winch control |
AP_LTM_Telem / AP_Devo_Telem | LTM and Deviation serial telemetry |
AC_AutoTune | Automated PID gain tuning |
AP_KDECAN | KDE CAN ESC protocol |
AP_SurfaceDistance | Rangefinder-based surface distance tracking |