QGC Simulation Tools

July 3, 2026 · View on GitHub

Tools for testing QGroundControl without physical hardware.

Quick Start

ToolUse CaseSetup
mock_vehicle.pyUI testing, quick checkspip install pymavlink
run-arducopter-sitl.shFull simulation, mission testingDocker required

Mock Vehicle (Lightweight)

A minimal MAVLink simulator for UI testing. Does not simulate flight dynamics.

# Install
pip install pymavlink

# Run (QGC connects to UDP 14550)
./mock_vehicle.py

# Multiple vehicles
./mock_vehicle.py --system-id 1 --port 14550 &
./mock_vehicle.py --system-id 2 --port 14551 &

# TCP mode (SITL-style)
./mock_vehicle.py --tcp --port 5760

Features:

  • Heartbeat, GPS, attitude, battery telemetry
  • Arm/disarm commands
  • Mode changes
  • Basic parameter support

Options:

OptionDefaultDescription
--host127.0.0.1Host address
--port14550Port number
--tcpoffUse TCP instead of UDP
--system-id1MAVLink system ID
--rate10Telemetry rate (Hz)
--sitloffSITL-compatible mode (TCP:5760)

Limitations: No flight dynamics, no mission execution, limited MAVLink support.

ArduCopter SITL (Full Simulation)

Full ArduPilot simulation via Docker. Supports missions, geofences, all commands.

# Run (builds image on first run, ~10-15 min)
./run-arducopter-sitl.sh

# With simulated network latency (Herelink-like)
./run-arducopter-sitl.sh --with-latency

# Connect QGC to: tcp://localhost:5760

Docker Commands:

docker logs -f arducopter-sitl   # View logs
docker stop arducopter-sitl      # Stop simulation
docker rm arducopter-sitl        # Remove container

Requirements: Docker

Mock Vehicle auto-connects over UDP 14550. For SITL, add a TCP comm link in QGC (Application Settings → Comm Links → Add, Host localhost, Port 5760).

Comparison

Featuremock_vehicle.pyArduCopter SITL
Setup timeSeconds10-15 min (first run)
DependenciespymavlinkDocker
Flight dynamics
Mission execution
Geofence support
All MAVLink commands
Resource usageLowMedium
Best forUI testingIntegration testing

Other Simulators

For more advanced simulation: