2025 · Lead software engineer

EAGLE — Autonomous Drone Project

Distributed intelligence architecture with a ground station controlling unit for an autonomous drone. Live video, telemetry, cryptographic functions and wireless power transfer all integrated with a ZeroMQ pub/sub messaging architecture that lets each node talk to the others in a coherent and efficient way.

EAGLE — Autonomous Drone Project cover

Overview

The headline of this project is the comms-and-control layer for an autonomous drone. The ground station sets up a Wi-Fi network for the drone to connect to, and video, telemetry, module health and remote command allow the ground station operator to view, control and diagnose the entire system in a glance.

The system has to survive the environment: dodgy links, changing exposure, and the occasional crash. Every part is built around redundancy and recovery.

Architecture

Three layers, deliberately decoupled.

  • Hardware — Pi camera, serial autopilot link, GPIO peripherals, and a perception stack running on-Pi.
  • Comms — a ZeroMQ pub/sub broker on the ground station. Every module — camera, autopilot, image processing, telemetry, cryptography — registers as both publisher and subscriber. No module talks to another directly; everything moves through the bus.
  • Front-End — a Flask + Vue web app showing an MJPEG endpoint and a Socket.IO channel of live module state. Telemetry is stored in SQLite with a analyzer script explaining the pilot why his drone might be upside down again.

A robust agent factory wraps each module. New nodes register themselves on boot, and recover on reboot.

Highlights

  • 30+ fps perception on a Pi. OpenCV pipeline does HSV red-marker detection, Hough line fit for location tracking, and QR-code localization. Multicore processing and frame skipping allows to stay real-time.
  • MJPEG → browser, hardware-encoded. picamera2 streams motion-JPEG over HTTP; the Vue UI shows it as a simple <img> tag.
  • Telemetry as a baseline SQLite with foreign-key integrity for every module’s writes; a cache broadcasts state changes over WebSocket so the dashboard updates without polling.
  • Agent Lifecycle Each agent is autonomously started, and can be rebooted from the ground. On failure, the agent recovers quickly and gracefully.

Status

Project is done and was delivered June 2025, with a very strong peer evaluation and an 18/20 overall grade. The webapp is coupled to the broker, and currently incompatible with the current portfolio architecture for demonstration. A mockup standalone demo for this site is still a to-do!