SceneLoopNet is a lightweight, learning-based loop closure detection module designed for LiDAR SLAM systems. It operates solely on standard ROS topics (PointCloud2 and Odometry), enabling seamless integration with any odometry front-end (e.g., FastLIO2, Point-LIO) without modification.
This repository contains the code accompanying our paper (to appear). The code will be open-sourced upon publication.
- Front-end agnostic – Works with any LiDAR odometry that publishes point clouds and odometry on ROS.
- Learning-based scene descriptor – Employs a supervised feature extractor to obtain robust, compact representations of LiDAR scans.
- Coarse-to-fine matching – Performs scene-level retrieval followed by structural similarity verification for reliable loop candidates.
- ROS1 native – Minimal dependencies, easy to drop into existing ROS1 pipelines.
- Practical deployment – Prioritizes real-world mapping over offline benchmarks, with built-in visualization for debugging.
Our paper is currently under review. A preprint will be made available soon. If you use SceneLoopNet in your research, please cite:
@article{yourpaper,
title={SceneLoopNet: Learning-based Loop Closure Detection for LiDAR SLAM},
author={Yang, Huaiyu and ...},
journal={...},
year={2025}
}
SceneLoopNet acts as an independent backend component:
- Input: Subscribes to
/pointcloud(sensor_msgs/PointCloud2) and/odometry(nav_msgs/Odometry). - Feature Extraction: A learned network encodes each scan into a global descriptor.
- Retrieval: Uses a fast approximate nearest neighbor search to propose loop candidates.
- Verification: Performs geometric consistency check (e.g., ICP or feature matching) to confirm loops.
- Output: Publishes loop closure constraints and visualisation markers.
- ROS1 (Melodic/Noetic)
- PCL >= 1.8
- Eigen3
- LibTorch (PyTorch C++ API) – for inference only (training code separate)
Installation instructions are provided in INSTALL.md.
-
Clone the repository:
git clone https://github.com/HuaiYu-Yang/SceneLoopNet.git cd SceneLoopNet -
Build with catkin:
catkin build scenelooopnet
-
Run the node:
roslaunch scenelooopnet loop_detector.launch
-
Play your bag or run your front-end; the node will automatically start detecting loops.
Detailed usage examples can be found in examples/.
We evaluate SceneLoopNet on multiple public and self-collected datasets. Quantitative comparisons against state-of-the-art handcrafted and learned methods demonstrate superior recall and precision under various environmental conditions. Example visualizations:
This project is released under the MIT License. See LICENSE for details.
- Huaiyu Yang (@HuaiYu-Yang)
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
For questions or collaboration, please open an issue or contact the author directly.
Note: This repository is under active development. The code will be fully open-sourced once the paper is accepted.

