Skip to content
pablo228sosPublic

About

Lovite

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

DRSKHUB — Swarm Ground Control Station

Open-source GCS for controlling multiple UAVs simultaneously.
Built with Python · PyQt6 · MAVLink · Leaflet Maps


What is DRSKHUB?

DRSKHUB is a ground control station (GCS) designed from scratch with one core idea in mind: why control one drone when you can control a hundred?

Popular tools like Mission Planner are powerful — but they're built around a single UAV at a time. DRSKHUB removes that ceiling. With one command you can dispatch, monitor, and coordinate an entire swarm of UAVs simultaneously — whether that's 6 drones mapping a wheat field or 50 units covering a search-and-rescue area.

The project is built on a real MAVLink backend (the same protocol powering ArduPilot and PX4), a live map powered by OpenStreetMap tiles, and a clean modern interface — no bloat, no outdated UI from the 2000s.


Why This Exists

Most GCS software was designed for a world where one pilot controls one aircraft. That world is changing fast.

Agriculture, emergency services, infrastructure inspection, environmental monitoring — all of these are moving toward autonomous drone swarms. The tools haven't caught up. DRSKHUB is the start of catching up.

The project started as a personal engineering need and has grown into something with real commercial potential across multiple industries.


Key Features

🗺 Live Map (Real Tiles)

  • OpenStreetMap dark / street / satellite layers via Leaflet + QWebEngineView
  • Live UAV markers with heading arrows, color-coded per drone
  • Flight track history for every drone
  • Click map to set waypoints directly
  • Geofence overlay

🚁 Swarm Management

  • Control unlimited drones simultaneously — no per-unit cap
  • Real MAVLink backend: same protocol as Mission Planner / QGroundControl
  • Connect via UDP (WiFi / network) or Serial (3DR radio telemetry)
  • Per-drone and swarm-wide commands

📍 Mission Planner

  • Full waypoint editor: TAKEOFF, WAYPOINT, LOITER, RTL, LAND
  • Upload mission to single drone or entire swarm at once
  • Download existing mission from any connected drone
  • Swarm formation presets: Line · Grid · Circle · V-Shape

📡 Telemetry

  • Position, altitude, speed, heading
  • Battery %, voltage, current
  • GPS fix, satellites, HDOP
  • Attitude: roll, pitch, yaw — with artificial horizon (ADI)
  • Compass widget
  • EKF status, vibration levels
  • Flight timer

⚙ Parameter Editor

  • Full MAVLink parameter read/write (like Mission Planner's Full Parameter List)
  • Live fetch from drone + write-back
  • Common params pre-loaded for quick tuning

🔵 Simulation Mode

  • Built-in virtual drone engine — no hardware needed
  • Launches 1–12 virtual drones over localhost UDP
  • Each simulated drone runs real MAVLink traffic
  • Only activates on button press — doesn't interfere with live connections

Screenshots

(Add your own screenshots here after running the app)

Map View Telemetry Panel
screenshots/map.png screenshots/telemetry.png
Mission Planner Parameters
screenshots/mission.png screenshots/params.png

Architecture

DRSKHUB/
├── main.py                    # Entry point
├── core/
│   ├── drone.py               # MAVLink connection + full telemetry parser
│   ├── swarm.py               # Swarm manager: group commands, formations
│   └── simulation.py          # Virtual drone engine (UDP MAVLink)
├── ui/
│   ├── main_window.py         # Main PyQt6 window + layout
│   ├── map_panel.py           # Leaflet map via QWebEngineView
│   ├── fleet_panel.py         # Drone list sidebar
│   ├── telemetry_panel.py     # Data / Attitude / Commands tabs
│   ├── mission_panel.py       # Waypoint editor + formation presets
│   ├── params_panel.py        # MAVLink parameter editor
│   ├── widgets.py             # ADI, compass, signal bars (custom QPainter)
│   └── styles.py              # Global QSS stylesheet
├── settings.yaml
└── requirements.txt

Core Principle

The Drone class (core/drone.py) is a self-contained MAVLink state machine running in its own thread. It parses every incoming MAVLink message — HEARTBEAT, GLOBAL_POSITION_INT, ATTITUDE, SYS_STATUS, VFR_HUD, GPS_RAW_INT, PARAM_VALUE, and more — and exposes clean Python attributes. The UI reads from these at 5 Hz without blocking.

The Swarm class (core/swarm.py) holds a list of Drone instances and provides group operations. Formations are pure geometry — no third-party deps.


Installation

Requirements

  • Python 3.10+
  • Windows / Linux / macOS

Windows (one click)

Double-click run_windows.bat

It creates a venv, installs all dependencies, and launches the app automatically.

Linux / macOS

chmod +x run_linux.sh
./run_linux.sh

Manual

python -m venv venv

# Windows:
venv\Scripts\activate

# Linux / macOS:
source venv/bin/activate

pip install -r requirements.txt
python main.py

Dependencies

PyQt6>=6.6.0
PyQt6-WebEngine>=6.6.0
pymavlink>=2.4.41
opencv-python>=4.9.0
PyYAML>=6.0
numpy>=1.26.0
requests>=2.31.0
pyserial>=3.5

Usage

Simulation (No Hardware)

  1. Launch the app: python main.py
  2. Click "Start Simulation" in the top bar
  3. Choose number of drones (1–12)
  4. Watch them appear on the live map with real telemetry

Live Connection (UDP)

  1. Ensure your drone/SITL sends MAVLink to your PC
  2. Click "Connect Drone"
  3. Choose UDP, enter IP and port (default 14550)
  4. Click Connect

Live Connection (3DR Serial Radio)

  1. Plug in your 3DR radio
  2. Click "Connect Drone" → Serial
  3. Enter COM port (e.g. COM3) and baud rate (57600)

Mission Planning

  1. Switch to Mission tab
  2. Click on the map to set coordinates, add waypoints
  3. Select target: single drone or All Drones (Swarm)
  4. Click Upload

Swarm Formations

In the Mission tab → right panel → pick a formation → set spacing → Apply Formation All online drones will reposition to their assigned slots.


Supported Flight Controllers

Any ArduPilot or PX4 compatible FC that speaks MAVLink:

  • ArduCopter (multirotor)
  • ArduPlane / QuadPlane / VTOL
  • ArduRover
  • PX4 (MAVSDK compatible)

Tested with:

  • Matek H743-Wing
  • Pixhawk 4 / 6C
  • Cube Orange
  • SITL (ArduPilot Software-in-the-Loop)

Roadmap

  • Video stream panel (RTSP / OpenCV per drone)
  • A* route planning around no-fly zones
  • Teknofest API integration (competition telemetry upload)
  • Replay mode from CSV/JSONL logs
  • SITL automation test scenarios
  • Local map tile server (offline competition mode)
  • AI target annotation (YOLO pipeline)
  • Mobile companion app

Use Cases

Sector Application
🌾 Agriculture Crop monitoring, precision spraying across large fields
🔍 Search & Rescue Wide-area coverage with coordinated swarm patterns
🏗 Infrastructure Pipeline and powerline inspection at scale
🌲 Environment Forest monitoring, fire detection
📡 Mapping Photogrammetry missions with automatic grid coverage
🚒 Emergency Services Real-time situational awareness for MChS / fire depts

Contributing

This project is in active development. Issues and PRs are welcome.

If you're working on:

  • MAVLink protocol extensions
  • New formation algorithms
  • UI improvements
  • Integration with specific flight controllers

Feel free to open an issue or reach out.


Author

Built by a 16-year-old engineer-in-training with a background in embedded systems and a belief that drone swarm control software should be open, modern, and actually usable.

Started as a personal project for a UAV engineering track. Growing into a platform for real-world applications.


License

MIT License — free to use, modify, and distribute.


DRSKHUB — because one drone was never going to be enough.

About

Lovite

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors