A system for connecting to MAVLink drones and checking their status. More information can be found in each of the projects displayed above as git submodules.
- Frontend - Web UI for creating datalinks and viewing telemetry (Alpine.js)
- Backend - REST API + WebSocket server (Python/FastAPI)
- Driver - MAVLink/gRPC bridge (C++)
┌─────────────────┐ HTTP/WS ┌─────────────────┐
│ Frontend │◄──────────────────►│ Backend │
│ (Port 8085) │ │ (Port 8000) │
└─────────────────┘ └────────┬────────┘
│ gRPC
▼
┌─────────────────┐
│ Driver │
│ (Port 50051) │
└────────┬────────┘
│ MAVLink
▼
┌─────────────────┐
│ Simulator / │
│ Real Drone │
│ (Port 5760) │
└─────────────────┘
The easiest way to run the system is with Docker Compose, which includes an ArduPilot SITL simulator:
docker-compose upThis starts all services:
- Frontend: http://localhost:8085
- Backend API: http://localhost:8000
- Driver gRPC: localhost:50051
- ArduPilot SITL simulator: localhost:5760
- Open http://localhost:8085
- Enter
simulatoras the URI (not127.0.0.1) to connect to the right Docker instance. - Enter
5760as the port - Click "Create Datalink"
- Click "Create Datastream" to start receiving telemetry. Drone updates sent by the backend will be displayed in the log box and the Drone data will start to be updated.
For local development without Docker, run each service separately:
sim_vehicle.py -v ArduCopter --no-mavproxycd mavlink-driver
./build.sh
./build/mavlink_drivercd ground-telemetry-station-backend
./launch_server.shcd ground-telemetry-station-frontend
python3 -m http.server 8085Then open http://localhost:8085 and connect to 127.0.0.1:5760.
