An open API service indexing awesome lists of open source software.

https://github.com/judahpaul16/canarygc

A web-based ground control station (GCS) for remote autopilot management via the MAVLink protocol.
https://github.com/judahpaul16/canarygc

ardupilot drone gcs iot mavlink plane px4 quadcopter raspberry-pi rc rover sitl uav

Last synced: 3 months ago
JSON representation

A web-based ground control station (GCS) for remote autopilot management via the MAVLink protocol.

Awesome Lists containing this project

README

          

⚠️ **Warning**: This project is in **early development** and is not yet ready for production use. Use at your own risk! **It is your responsibility** to understand the risks involved as well as the **laws and regulations** governing the use of unmanned aerial vehicles (UAVs) in your area. ⚠️

Canary Ground Control Logo

# 🚁 Canary Ground Control πŸ“‘

![Raspberry Pi Version](https://img.shields.io/badge/Raspberry_Pi-Zero%20%2F%204B-red?style=flat-square&logo=raspberry-pi)
![Docker Compose Version](https://img.shields.io/badge/Docker%20Compose-v2.27.1-blue?style=flat-square&logo=docker)
![Latest Docker Image](https://img.shields.io/docker/v/judahpaul/canarygc)

A web-based ground control station (GCS) for remote autopilot management via the [MAVLink protocol](https://en.wikipedia.org/wiki/MAVLink).

Illustration

---

## πŸ€” How Does It Work?

Unlike traditional GCS software, Canary Ground Control is a web-based application that runs on a Raspberry Pi--making it a part of the flight stack. This enables you to manage your autopilot from anywhere in the world, as long as you have an internet connection.

![Diagram](screenshots/diagram.png)

---

## ❓ Why Not Just Use Mission Planner, QGC, or APM Planner β€” with Tailscale?

You might ask:
β€œWhy not just run an existing GCS (Mission Planner, QGC, APM Planner), and connect over Tailscale β€” either from a laptop, or running the GCS directly on the Raspberry Pi?”

> **TL;DR:**
> Traditional GCS software is designed for *desktop-based, short-range* semi-manual operation.
> CanaryGC is purpose-built for *embedded, LTE-connected, persistent, remote UAV control* β€” where every watt and packet counts.

### Running GCS on a laptop (with Tailscale to the drone):

1. **No Always-On Link**
The GCS must be running on your laptop. If your laptop disconnects (or sleeps), telemetry is lost.
CanaryGC runs *on the drone itself* β€” providing a persistent link, always available to any browser.

2. **Laptop Required**
You must boot a laptop and connect Tailscale. CanaryGC works from any phone, tablet, or computer β€” no special software needed.

3. **Tailscale Reliability**
VPN tunnels can be fragile over LTE or CG-NAT. CanaryGC supports public-IP SIMs or static tunnels with no VPN dependency.

---

### Running GCS **directly on the Pi** (with Tailscale + VNC / RDP):

1. **GUI Overhead**
Traditional GCS software (QGC, Mission Planner, APM Planner) is designed as a desktop GUI app (Qt/X11). Running it on the Pi requires installing and running a full desktop environment (X11 server, GPU stack, window manager). This adds CPU and memory load, increases system complexity, and draws more power β€” reducing flight time.

2. **Remote Desktop Limitations**
Accessing the Pi’s GUI remotely (via Tailscale + VNC/RDP) requires constant encoding and streaming of the desktop image β€” adding CPU load, using bandwidth, and introducing lag. Over LTE links, this results in poor responsiveness and unreliable control β€” unacceptable for UAV operations.

3. **Battery & Performance Impact**
The additional CPU/GPU usage from running a desktop GCS and streaming remote sessions directly reduces battery life. It also impacts system responsiveness for other critical tasks (LTE modem handling, telemetry routing, camera streaming).

4. **Reliability Risks**
Desktop-based GCS apps are not designed for connection interruptions or lossy networks. VNC/RDP sessions can freeze or drop if connectivity is poor. Recovery often requires manual intervention β€” not ideal for autonomous or long-range flights.

5. **Increased Maintenance**
Installing and maintaining a full desktop stack and GUI-based GCS on the Pi adds software complexity, increases boot time, and introduces more failure points. Field systems should be simple and robust.

---

### Why CanaryGC’s Web-Native, Headless Design Is Better

CanaryGC is designed for **headless, remote-first UAV deployments**:

* It runs as a lightweight background service β€” no X11, no desktop.
* The Pi can run a minimal OS, saving power and booting faster.
* Users connect via a web browser β€” no VNC or desktop tunnels needed.
* The Pi streams only telemetry and control data β€” not full-screen images β€” making it far more efficient over LTE links.
* The interface gracefully handles network interruptions and reconnects.
* It works from any device (phone, tablet, laptop) with a browser β€” ideal for field operations.

---

## 🐚 Setup Script

### Production Deployment
```bash
curl -s https://raw.githubusercontent.com/judahpaul16/canarygc/main/contrib/setup.sh | \
bash -s --
```

### Local Testing with SITL
```bash
curl -s https://raw.githubusercontent.com/judahpaul16/canarygc/main/contrib/setup.sh | \
bash -s -- --simulation
```

### Install-Only (Without System Setup)
```bash
curl -s https://raw.githubusercontent.com/judahpaul16/canarygc/main/contrib/setup.sh | \
bash -s -- --install-only
```

---

## πŸ“œ License
This software is made available under the MIT License. See the [`LICENSE`](LICENSE.md) file for more information.