Authors: Shuo Wen*, Edwin Meriaux*, Mariana Sosa Guzmán, Charlotte Morissette, Chuqiao Si, Bobak Baghi, Gregory Dudek
*Co-first authors
This repository contains the implementation of our drone-based framework for localizing surfaced marine robots using aerial GNSS-equipped drones and vision-based estimation. This scalable and cost-efficient method supports both single and multi-robot tracking using YOLOv11 and geometric inference.
Accurate localization is crucial for underwater robotics, yet traditional onboard Global Navigation Satellite System (GNSS) approaches are difficult or ineffective due to signal reflection on the water’s surface. Existing approaches, such as inertial navigation, Doppler Velocity Loggers (DVL), SLAM and acoustic-based methods, face challenges like error accumulation and high computational complexity. Therefore, a more efficient and scalable solution remains necessary. This paper proposes an alternative approach that leverages an aerial drone equipped with GNSS localization to track and localize an underwater robot near the surface. Our results show that this novel adaptation enables accurate single and multi-robot underwater localization.
Traditional underwater localization methods suffer from signal loss, sensor drift, or infrastructure cost. We propose an aerial solution using:
- A GNSS-enabled drone
- Vision-based detection (YOLOv11)
- Geometric estimation
This project demonstrates real-time, accurate GNSS localization of marine robots (e.g., Aqua2) during surfacing events.
.
├── clean_data.py # Remove invalid image/label pairs (out-of-bounds boxes)
├── image_augmentation.py # Applies augmentations (blur, fog, flips, etc.)
├── estimator_func.py # Core logic for GNSS triangulation
├── yolo11n_trained.pt # Trained YOLOv11 for single robot
├── yolo11n_multiaqua.pt # Trained YOLOv11 for multi-robot
├── single.csv # Single robot tracking predictions + error
├── multi.csv # Multi-robot tracking predictions + error
├── requirements.txt # Dependencies
See
image_augmentation.pyandclean_data.pyfor image augmentation pipeline and filtering.
Install the dependencies:
pip install -r requirements.txtThen run augmentation:
python image_augmentation.pyClean invalid samples (if needed):
python clean_data.pyTo see our demo, please run
For single Aqua
python single_aqua.pyFor multi Aqua
python single_aqua.pyIf this project helps your research, please cite:
@inproceedings{wen2025scalable,
title={Scalable Aerial GNSS Localization for Marine Robots},
author={Wen, Shuo and Meriaux, Edwin and Sosa Guzm{\'a}n, Mariana and Morissette, Charlotte and Si, Chuqiao and Baghi, Bobak and Dudek, Gregory},
booktitle={ICRA Workshop on Marine Robotics},
year={2025}
}For questions or collaboration, contact:
- Shuo Wen & Edwin Meriaux — McGill CIM Lab | Email: [email protected] [email protected]
- Project repo: https://github.com/stevvwen/aerial_gnss