Case study
VGCS
A desktop ground control station for ArduPilot drones, with live video, gimbal control and fire observation tools.
- Role
- Full stack desktop development in Python
- Platforms
- Desktop

01/Overview
VGCS is a custom ground control station for ArduPilot drones, built with Python, PySide6 (Qt 6) and pymavlink. It handles MAVLink telemetry in the background, shows live RTSP video, controls SIYI and Skydroid gimbals, plans missions, and adds DOOAF artillery fire observation: map-based target marking, fall-of-shot tracking and geo-referenced fire correction.
02/The brief
An operator needs telemetry, video, the map and the mission in one window that never freezes, plus observation tools that turn what the camera sees into coordinates on the map. General-purpose ground stations cover the flying but not the observation workflow.
03/What I built
Flight and telemetry
- MAVLink telemetry processed on a background thread
- Mission planning on the map
- Live RTSP video from the aircraft
- SIYI and Skydroid gimbal control
Fire observation
- Map-based target marking
- Fall-of-shot tracking against the marked target
- Geo-referenced fire correction
04/Key decisions
- 01
Keep telemetry off the UI thread
A MAVLink link delivers many messages a second. Parsing them on the interface thread would freeze the map and the video, so telemetry runs on a worker and hands the interface only what changed, through Qt signals.
- 02
Native desktop over a browser shell
PySide6 gives native widgets, direct access to serial and network links, and video rendering without a browser in between. For a tool that runs on a laptop in the field, that reliability beats the convenience of a web UI.
- 03
Make the map the workspace
Targets are marked on the map, impacts are tracked against them, and corrections are expressed in geo-referenced terms. Keeping every observation step on the same map removes the mental conversion between what the camera shows and where it is.
- 04
Build on ArduPilot and MAVLink, not around them
pymavlink speaks the protocol ArduPilot already uses, so the station works with existing aircraft and firmware instead of needing custom flight-side code.
05/Outcome
A single desktop tool that covers telemetry, video, gimbal control, mission planning and fire observation, built for ArduPilot aircraft without changes on the flight side.
06/What I would do next
- Replay recorded telemetry and video for after-action review
- Geofence and link-loss alerts in the main window
- Unit tests around the fire-correction math