A comprehensive ROS-based suite for drone-based perception, sensor fusion, and geolocation. This repository implements a "Scout" drone system capable of detecting targets (YOLOv8), thermal sensing, and precise ground-coordinate calculation
Implements a real-time object detection pipeline.
- Camera Node: Publishes raw BGR images from webcams, IP cameras, or simulated video files to
/camera/image_raw. - YOLO Detector: Subscribes to images and performs inference using YOLOv8. It publishes structured
YoloDetectionArraymessages containing bounding boxes and confidence scores. - Optimization: Supports CUDA acceleration for low-latency detection on hardware like Jetson Nano.
The "Mission Brain" that calculates real-world GPS coordinates of detected targets.
- Sensor Fusion: Uses
ApproximateTimeSynchronizerto align YOLO detections with Drone GPS (Lat/Lon), IMU (Pitch/Roll/Yaw), and LiDAR (Altitude). - Coordinate Projection: Projects 3D rays from the camera frame onto the ground plane using camera intrinsic parameters and trigonometric ground-intersection math.
- Global Mapping: Converts local North/East meter offsets into global Latitude/Longitude using the
pyprojlibrary.
Core implementation for physical and simulated sensor nodes.
- High-Fidelity Simulation: Includes fallback patterns for testing without hardware:
- Thermal: Simulated Gaussian heat spots with
COLORMAP_JETvisualization. - Camera: Animated gradient test patterns with crosshair overlays.
- LiDAR: Hovering altitude simulation with sinusoidal noise.
- Thermal: Simulated Gaussian heat spots with
- Hardware Drivers: Pre-built support for TFMini Plus (Serial), CSI cameras, and standard UVC thermal sensors.
- ROS Noetic (Ubuntu 20.04 / WSL2)
- Python Dependencies:
pip install ultralytics pyproj scipy opencv-python cv_bridge
# Clone the repository into your catkin workspace source folder
cd ~/catkin_ws/src
# (Paste repository here)
# Build
cd ~/catkin_ws
catkin_make
source devel/setup.bashThe project includes a test_perception.launch file that simulates a drone flying while running the full perception pipeline.
- Start Master:
roscore - Launch System:
roslaunch scout_nodes test_perception.launch - Monitor Output:
# View final calculated target GPS coordinates rostopic echo /mission/target_coordinates # View camera/thermal streams rosrun rqt_image_view rqt_image_view
Modify the CAMERA_SOURCE or LIDAR_PORT parameters in the respective node scripts to point to your device paths (e.g., /dev/video0 or COM3).
camera_yolo/: YOLOv8 node and custom message definitions.geolocation/: The core math engine for target positioning and fake drone data publishers.Lidar-Camera-thermal/: Implementation of the physical/simulated sensor nodes.remaining.md: Design docs for future Decision and Communication nodes.
- Decision Node: Autonomous grid-search patterns.
- Comm Gateway: Secure telemetry bridge between Drone and Base Station.
- Delivery Commander: MAVLink-based payload release for the secondary drone.