Internship
Drone Swarm Operator Interface
Emergent Swarm Solutions, TU Delft, 2024. Sole developer of a real-time ground station for autonomous drone swarms. Python + ROS2 + WebSockets backend, Godot 2D/3D operator UI, lidar point-cloud rendering. Dutch Ministry of Defence representatives used it at a defence fair.
Problem
Build a ground station for autonomous drone swarm operators, from scratch, alone. Multiple operator clients needed to see real-time drone positions, live lidar point clouds, and mission state. The swarm AI ran separately; I had to intercept it and push data to every connected client simultaneously.
Built
Godot 2D/3D operator UI with custom shader-based lidar point-cloud rendering (MultiMesh for GPU-side instancing). Python ground station intercepting ROS2 topics, broadcasting over WebSockets to multiple simultaneous clients. Localisation in EN/FR/NL. My colleague's C++ trajectory planner integrated as a Godot native module (GDExtension) rather than re-implementing it.
Result
4 field and demo days. Dutch Ministry of Defence representatives operated the interface at a defence fair. Founders can provide a reference letter.
Technical breakdown
How it was built
Operator UI
Godot 4, 2D mission overview + 3D drone position viewport. Custom MultiMesh renderer for lidar point clouds (tens of thousands of points at real-time framerates). All UI code in GDScript with localisation keys for EN/FR/NL.
Ground Station
Python service subscribing to ROS2 topics (drone positions, lidar, mission state). Broadcasts over WebSockets to however many operator clients are connected. Designed for low-latency real-time data, not queuing.
C++ Planner Integration
My colleague wrote the trajectory planner in C++. Instead of re-implementing it in GDScript, I wrapped it as a GDExtension native module: the planner runs natively inside Godot, keeping the algorithm authoritative and performance on spec.
Lidar Rendering
Each lidar scan produces a dense point cloud. Pushed the rendering to the GPU using Godot's MultiMesh with a custom shader, colour-coding points by height and distance, updated per frame without blocking the main thread.
Field Deployment
4 deployment days: 3 field tests with the drone hardware, 1 defence fair demo. Built on site at TU Delft's aerospace engineering building, tested against the real swarm hardware.
Reference
Reference letter available from the founders of Emergent Swarm Solutions on request.