gitmyhub

qgroundcontrol

C++ ★ 4.7k updated 1d ago

Cross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)

A free desktop and mobile app for flying and planning drone missions, connect to any MAVLink drone, watch it on a live map, draw automated flight routes, and configure the flight controller settings before takeoff.

C++QtQMLMAVLinksetup: easycomplexity 3/5

QGroundControl, often called QGC, is a desktop and mobile application for piloting and managing drones. It runs on Windows, macOS, Linux, Android, and iOS, and it communicates with the drone using a messaging protocol called MAVLink. If a drone's flight controller speaks MAVLink, which most consumer and professional flight controllers do, QGC can connect to it.

The application covers two main activities: real-time flight control and pre-flight mission planning. During a flight you can see the drone's position on a map, monitor its sensor readings and battery level, and issue commands. For mission planning, you draw a route on a map, set waypoints, define altitudes, and then upload the entire flight plan to the drone so it can execute it automatically without constant manual input.

QGC also handles the setup and configuration of the drone itself. It has dedicated configuration screens for two of the most widely used open-source flight controller firmware families, PX4 and ArduPilot. Through these screens you can tune flight behavior, calibrate sensors, configure radio inputs, and adjust safety settings before the aircraft leaves the ground.

The project is fully open source and built with the Qt application framework, which is how it achieves cross-platform support from a single codebase. Developers can build it from source, add features, or adapt it for specialized hardware. A developer guide and build instructions are linked from the README.

A user manual exists at docs.qgroundcontrol.com for those who want detailed guidance, though the README notes the interface is designed to be approachable without it. The license terms are documented separately in the repository.

Where it fits