Software-In-The-Loop (SITL) simulation lets you build and run ArduPilot firmware entirely on your desktop computer. The simulated vehicle responds to the same MAVLink messages as real hardware, so you can develop, test, and debug autopilot behavior without ever needing a physical flight controller. This guide walks through cloning the repository, installing dependencies, building ArduCopter for SITL, and launching the simulator with MAVProxy.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.
Clone the repository with submodules
ArduPilot depends on several Git submodules (ChibiOS, MAVLink definitions, googletest, and others). Clone with If you already cloned without submodules, initialize them with:
--recurse-submodules to fetch them all in one step:Install dependencies
ArduPilot provides platform-specific prerequisite scripts under After the script completes, reload your shell environment so that newly installed tools (including MAVProxy) are on your For macOS, use
Tools/environment_install/. For Ubuntu or Debian:PATH:Tools/environment_install/install-prereqs-mac.sh instead.Configure the build for SITL
The To include debug symbols (useful when attaching
configure step only needs to be run once, or whenever you want to change the target board. For SITL, pass --board sitl:gdb to the simulator):Build ArduCopter
With the board configured, build the ArduCopter firmware. Waf automatically parallelizes the build across all available CPU cores:The resulting binary is placed at
build/sitl/bin/arducopter. You can also build other vehicle types in the same way — ./waf plane, ./waf rover, ./waf sub — after configuring for SITL.Launch the SITL simulator
sim_vehicle.py is the primary entry point for starting a simulated vehicle. It handles launching the ArduPilot binary with the correct SITL arguments and optionally starting MAVProxy:Connect with MAVProxy
MAVProxy is started automatically by To connect an external ground control station (such as Mission Planner or QGroundControl) running on the same machine, add an output port when launching:The GCS should then be able to connect on UDP port
sim_vehicle.py. Once the simulator is running, you can interact with it directly from the MAVProxy prompt. Common commands to get started:14551.