This project is a command-line interface (CLI) tool built in Python to interact with a containerized ArduPilot drone simulator via the MAVLink protocol using pymavlink.
It allows users to read and modify live parameters from the drone simulator in real-time — a powerful tool for customizing and validating autonomous drone behavior.
- 🐳 Dockerized ArduPilot SITL (Software In The Loop) environment
- 🔌 MAVLink communication via
pymavlink - 🛠️ CLI interface to:
- Read parameter values (
get <PARAM>) - Modify parameter values (
set <PARAM> <VALUE>)
- Read parameter values (
- 🔁 Smart runtime logic:
- Automatically builds and runs Docker container if needed
- Skips re-building if already available
- 🧪 Fully self-contained and testable via
run.sh
- Docker
- Python 3.8+
- Linux/macOS shell (or WSL on Windows)
# Create and activate a virtual environment
python3 -m venv env
source env/bin/activate
# Install required Python packages
pip install -r requirements.txtRun the controller interactively:
./run.shThen enter commands:
get SYSID_THISMAV
set ARMING_CHECK 0
exit
Or run one-off commands:
./run.sh get SYSID_THISMAV
./run.sh set ARMING_CHECK 0.
├── Dockerfile # ArduPilot SITL simulator setup
├── mavctl.py # Python CLI tool
├── run.sh # Launcher script
├── requirements.txt # Python dependencies
└── README.md # Project documentation
SYSID_THISMAV: System ID of the droneARMING_CHECK: Enable/disable pre-arm safety checksFS_THR_ENABLE: Throttle failsafe mode
Full parameter list: https://ardupilot.org/copter/docs/parameters.html
- Separation of Concerns: The simulator runs in a Docker container; the CLI runs on the host.
- Error Handling: Graceful failure messages and parameter validation.
- Extendability: Easily extendable to support more MAVLink operations.