project
BlackBee Challenge - 2026 - Mission 1 - Mapping
with Felipe Zanoni da Rosa e Felipe Barros
Black Bee Challenge 2026 — Autonomous Aerial Mapping
A drone that takes off on its own, maps 100% of a competition arena, and identifies targets by itself.
What it is
Built for Mission 1 of the Black Bee Challenge, an autonomous aerial robotics competition. The goal: a drone takes off with no human intervention from the center of a 14x14 meter arena, sweeps the entire area following a grid flight plan, locates up to 5 ground "bases" (targets marked with shapes and numbers), photographs each one making sure it's fully framed, computes its GPS coordinate, and generates a report with the photos as proof — exactly as required by the competition's official rules.
How it works
The system is a finite state machine running on ROS2: takeoff, coverage planning, photo capture at each waypoint, base detection, and landing. All the camera-geometry and computer-vision math (field-of-view calculation, ground footprint size, coverage grid, pixel-to-GPS conversion) lives in modules completely independent from ROS, so they can be tested without a real drone. Base detection can run either through classic image processing (OpenCV) or a YOLO model trained specifically for the target, interchangeable without touching the rest of the pipeline.
Tech stack
- Python + ROS2 (rclpy)
- YASMIN (finite state machine)
- OpenCV and YOLO/Ultralytics for detection
- MAVROS/MAVLink for real drone control
- Gazebo for simulation
Technical highlights
- Fixed a real optics bug: the camera's field of view is diagonal, not horizontal — the correct trigonometric conversion changed the number of required waypoints from 6 to 8
- Coverage algorithm verified numerically by sweeping a fine grid of points to confirm 100% arena coverage
- Two-stage pixel-to-GPS projection pipeline, with optional tilt compensation (roll/pitch) for the drone
- Deduplication of targets detected across overlapping photos, with mosaic composition when no single photo shows the whole target
- Entire mission configuration centralized in one file, with profiles that switch between simulation and real flight