SkySpot: Drone Car Park Occupancy
My part
Edge AI on the drone
- Trained a single-class YOLOv8s vehicle detector on the VisDrone aerial dataset, exported it to ONNX and compiled it for the Hailo-8 accelerator on a Raspberry Pi 5.
- Wrote the occupancy algorithm. It projects the mapped bays into each frame using camera geometry and PX4 telemetry, aligns them to the detections with a three-stage search, and matches each car to a single bay. That exclusive matching was the biggest accuracy gain in the project.
- Filtered out turns and unstable frames and smoothed each bay's result over time. After five runs of tuning on real flight data, it identified 5 of 5 target vacant spaces.
Cloud, forecast and app
- Designed the PostgreSQL and PostGIS database on Azure for flights, per-bay occupancy, weather, calendar data and predictions.
- Built three n8n workflows: an hourly weather sync, a data refresh job and the chat agent behind the AI assistant.
- Trained the occupancy forecast in Azure AutoML on about 26,000 hourly records: R² 0.984, against a course benchmark of 0.72.
- Built the React and TypeScript web app with a live map, forecast, weather and a GPT-4.1 parking assistant, and deployed it with Docker on Azure Container Apps.
Overview
A drone that scans the Barrier Car Park on MTU's Bishopstown campus and works out which of its 199 mapped spaces are free, without a sensor in every bay. The results feed a live web app, an occupancy forecast and an AI parking assistant.
The drone
A Holybro X500 V2 with a Pixhawk 6C flight controller, flying repeatable missions planned in QGroundControl.
- Python
- YOLOv8s
- Hailo-8
- Raspberry Pi 5
- PX4
- PostgreSQL
- n8n
- Azure AutoML
- React
- TypeScript
- Docker