https://github.com/robustfieldautonomylab/draco-slam2
A repo for DRACO-SLAM2
https://github.com/robustfieldautonomylab/draco-slam2
Last synced: 11 months ago
JSON representation
A repo for DRACO-SLAM2
- Host: GitHub
- URL: https://github.com/robustfieldautonomylab/draco-slam2
- Owner: RobustFieldAutonomyLab
- Created: 2025-06-26T19:57:57.000Z (11 months ago)
- Default Branch: object
- Last Pushed: 2025-06-28T17:51:16.000Z (11 months ago)
- Last Synced: 2025-06-28T18:39:56.576Z (11 months ago)
- Language: Python
- Size: 11.2 MB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# DRACO-SLAM2
**This repository accompanies the paper *[DRACo-SLAM2: Distributed Robust Acoustic Communication-efficient SLAM for Imaging Sonar Equipped Underwater Robot Teams with Object Graph Matching]()* (IROS 2025).**
**DRACo-SLAM2** is a distributed SLAM framework for underwater robot teams equipped with imaging sonar.
This framework improves upon the original [DRACo-SLAM](https://github.com/jake3991/DRACo-SLAM) by introducing a novel representation of sonar maps as object graphs and utilizing object graph matching to achieve time-efficient inter-robot loop closure detection without relying on prior geometric information.
To better-accommodate the needs and characteristics of underwater scan matching, we propose incremental Group-wise Consistent Measurement Set Maximization (GCM), a modification of Pairwise Consistent Measurement Set Maximization (PCM), which effectively handles scenarios where nearby inter-robot loop closures share similar registration errors.

- **Overview of DRACo-SLAM2 Architecture:**
- The local robot:
- Groups nearby feature points into an object map using **DBSCAN**.
- Receives a neighboring robot’s object map.
- Aligns the received map with its own via graph matching.
- Requests raw scans from the neighbor for ICP registration, using the graph matching transformation as an initial guess.
- Adds inter-robot loop closures to the pose graph.
- A two-step pose graph optimization (PGO) is performed to refine the global estimate.
- The multi-robot component is currently **decoupled** from the single-robot SLAM system. We encourage you to integrate the multi-robot code with your own single-robot SLAM front-end — any implementation is welcome and appreciated.
```
├──DRACO2
├── config # Parameters fpr DRACO1 & DRACO2
├── SLAM # Both DRACO1 & DRACO2 SLAM code
├── scripts
│ └── run_mission.py # Multi-robot SLAM example
├── data # Folder for the dataset
└── ...
```

- **Example DRACo-SLAM2 result with real sonar data** collected at the U.S. Merchant Marine Academy, King’s Point, NY, aligned with a satellite image.
## Dependencies
- [BRUCE-SLAM](https://github.com/jake3991/sonar-SLAM)
- We provide there example [datasets](https://huggingface.co/datasets/yeweihuang/DRACO2_Datasets).
## How to use
```
cd FOLDER_BRUCE_SLAM
source /opt/ros/noetic/setup.sh
source devel/setup.sh
python FOLDER_DRACO2/scripts/run_mission.py -b PATH_TO_BAG -p PATH_TO_PICKLE -y config/param.yaml -o PATH_TO_OUTPUT
# bag file not needed for real-world example in our case
```