Dec 2025 – present
A student project building an optics-based counter-UAS (anti-drone) turret. I work on the software team, responsible for machine vision, tracking and control, and a simple C2 (command and control) system. The goal is to detect and track small drones at long range using only cameras — radar is outside our budget.
Since we detect purely with optics, the sensor module pairs a wide-angle RGB camera for search with a zoomed mono camera for range. An STM32 handles the supporting sensors — a laser rangefinder and GNSS.
Detecting drones is a small object detection problem: they show up as a handful of pixels, and most detectors lose them to downsampling. After testing on a public dataset we landed on YOLOv11-P2, whose extra feature level is better at picking up small objects, and we lean on heavy augmentation to bridge the gap to real conditions. Everything runs on an NVIDIA Jetson with a GStreamer / DeepStream pipeline that keeps as much as possible on the GPU, which holds the frame rate above 30 FPS.
Basler Camera (pylonsrc)
↓
capsfilter GRAY8 · NVMM · 1920×1080
↓
nvvideoconvert GRAY8 → NV12 (for streammux)
↓
nvstreammux batch size 1 · 1920×1088
↓
nvinfer YOLOv11-P2 drone detector (FP16)
↓
nvvideoconvert NV12 → RGBA (for OSD)
↓
nvdsosd bounding boxes + drone count overlay
↓
nv3dsink display output
Detection range for a DJI Mini 5 Pro so far: about 550 m on the mono camera and 90 m on RGB. Next up is a better RGB lens and an ND filter to push those numbers further.
Keywords: Computer Vision, C++, Python, NVIDIA/CUDA, YOLO