Skip to content

[RAL24] SGLC: Semantic Graph-Guided Coarse-Fine-Refine Full Loop Closing for LiDAR SLAM

License

Notifications You must be signed in to change notification settings

nubot-nudt/SGLC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SGLC: Semantic Graph-Guided Coarse-Fine-Refine Full Loop Closing for LiDAR SLAM

This repo contains the implementation of our paper

SGLC: Semantic Graph-Guided Coarse-Fine-Refine Full Loop Closing for LiDAR SLAM

Neng Wang, Xieyuanli Chen, Chenghao Shi, Zhiqiang Zheng, Hongshan Yu, Huimin Lu

SGLC is a semantic graph guided full loop closing framework with robust loop closure detection and 6-DoF poes estimation.

News:

  • [2024-11] We release the code of SGLC, which we hope will be of assistance to your research.

  • [2024-10] SGLC is accepted to RAL. 👏

  • [2024-07] Paper is available in arXiv website.

1. Introduction

1.1 Framework

It first builds a semantic graph for foreground instances and then generates LiDAR scan descriptor considering both the topological properties of the semantic graph and the appearance characteristics of the background. The LiDAR scan descriptor is utilized to retrieve loop candidate scans from the database. Following this, geometric verification is performed on each loop candidate to filter out false loop closure, with the key step utilizing the instance node descriptors for robust sparse node matching. Finally, a coarse-fine-refine registration scheme is employed to estimate the precise 6-DoF pose.

1.2 A related video

You can check it online on this link.

2. Prerequisites

We tested our code on ubuntu 20.04 and ubuntu 18.04.

You need to install these libraries from official guidance.'

3. Data

1. KITTI

You can download the point cloud dataset from the KITTI official website, as well as the labels from the semanticKITTI website. In our experiments, we use the labels from the SegNet4D. For the convenience, you can download from here.

Loop pairs: we use the distance-based criteria from the SSC and overlap-based criteria from OverlapTransformer. You also can download from our link.

2. KITTI360

Download the LiDAR scans from the official website. We provide the labels from SegNet4D.

3. Ford campus

You can follow the OverlapTransformer to download the dataset. We provide the labels on the link.

4. Apollo

We use the Apollo Columbia Park MapData proposed by AutoMOS. You can download it from the MapMOS repository. The semantic labels can be found in the link.

4. Usage

4.1 Install

git clone [email protected]:nubot-nudt/SGLC.git
mkdir build
cd build
cmake ..
make -j8

4.2 Loop Closure Detection

  • demo data
cd /SGLC/bin
./eval_lcd_pair
  • KITTI dataset (distance-based)

Modify config/config_kitti_graph.yaml

eval_seq:
  cloud_path: "xx/kitti/sequences/08/velodyne/" # your LiDAR scans
  label_path: "xx/SegNet4D_predicitions/kitti/sequences/08/predictions/" # semantic predictions from our link
  pairs_file: "../loop_data/pairs/pairs_kitti/neg_100/08.txt" # loop pairs
  out_file: "../out/kitti/08.txt"  # output file for evaluating

Then, you can run the .bin file following this:

cd /SGLC/bin
./eval_lcd_seq

you can find the output file in the SGLC/out/. for evaluating, you can run:

cd /SGCL/scripts
python pr_curve.py
  • KITTI dataset (overlap-based)

Modify config/config_kitti_graph.yaml

eval_overlap:
  cloud_path: "xx/kitti/sequences/00/velodyne/"
  label_path: "xx/SegNet4D_predicitions/kitti/sequences/00/predictions/"
  out_pair_file: "../out/kitti/00_overlap_pairs.txt"
  out_pair_veri_file: "../out/kitti/00_overlap_pairs_veri.txt"

Then, you can run the .bin file following this:

cd /SGLC/bin
./eval_overlap

For evaluation:

cd /SGCL/scripts
python eval_overlap_dataset.py --dataset kitti --gt_file loop_gt_seq00_0.3overlap_inactive.npz --preb_file ../out/kitti/00_overlap_pairs_veri.txt

Download gt_file from our link in the Data.

  • KITTI-360, Ford_campus and Apollo

Similarly, follow this KITTI instructions.

Distance-based:

./eval_lcd_seq_kitti360

Overlap-based

./eval_overlap_apollo
./eval_overlap_ford_campus

4.3 Loop Poses Estimation

  • KITTI

Modify config/config_kitti_graph.yaml

eval_poses:
  cloud_path: "xx/kitti/sequences/08/velodyne/"
  label_path: "xx/SegNet4D_predicitions/kitti/sequences/08/predictions/"
  loop_poses_file: "xx/loop_data/loop/loop_distance4/08.txt" # gt_file, you can download from our link
  out_file: "../out/kitti/loop_distance4_08.txt" # output file

Then, run the .bin file

cd /SGLC/bin
./eval_loo_poses

For evaluation:

cd /SGLC/scripts
python eval_loop_poses.py --dataset kitti --gt_poses xx/loop_data/loop/loop_distance4/08.txt --preb_file ../out/kitti/loop_distance4_08.txt

Acknowledgments

We would like to express our sincere gratitude for the following open-source work that has been immensely helpful in the development of SGLC.

SSC: SSC: Semantic Scan Context for Large-Scale Place Recognition.

STD: STD: Stable Triangle Descriptor for 3D place recognition.

KISS-ICP: KISS-ICP: In Defense of Point-to-Point ICP Simple, Accurate, and Robust Registration If Done the Right Way.

CVC-Cluster: Curved-Voxel Clustering for Accurate Segmentation of 3D LiDAR Point Clouds with Real-Time Performance.

Citation

If you find this work useful for your research, please consider citing:

@article{Wang2024SGLCSG,
  title={SGLC: Semantic Graph-Guided Coarse-Fine-Refine Full Loop Closing for LiDAR SLAM},
  author={Neng Wang and Xieyuanli Chen and Chenghao Shi and Zhiqiang Zheng and Hongshan Yu and Huimin Lu},
  journal={IEEE Robotics and Automation Letters},
  year={2024},
  volume={},
}

License

This project is free software made available under the MIT License. For details see the LICENSE file.

About

[RAL24] SGLC: Semantic Graph-Guided Coarse-Fine-Refine Full Loop Closing for LiDAR SLAM

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published