Prerequisites
| Interface | Tested environment |
|---|---|
| ROS 1 | Ubuntu 20.04, ROS Noetic |
| ROS 2 | Ubuntu 22.04, ROS Humble |
The shared core requires C++17, CMake 3.16+, Eigen3, GTSAM, PCL, and yaml-cpp. Docker users can skip the native dependency installation.
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository -y ppa:borglab/gtsam-release-4.2
sudo apt update
sudo apt install git build-essential cmake libeigen3-dev libgtsam-dev \
libpcl-dev libtbb-dev libyaml-cpp-devClone the Multi-Mapcher:
git clone --recurse-submodules https://github.com/url-kaist/multi-mapcher.gitROS 1 Noetic
Place the repository at <catkin_ws>/src/multi-mapcher.
From the catkin workspace root with ROS Noetic sourced:
rosdep install --from-paths src/multi-mapcher --ignore-src -r -y
catkin_make -DCMAKE_BUILD_TYPE=Release
source devel/setup.bash
roslaunch multi_mapcher run.launch \
dataset_yaml:=/absolute/path/to/dataset.yamlROS 2 Humble
Place the repository at <colcon_ws>/src/multi-mapcher.
From the colcon workspace root with ROS Humble sourced:
rosdep install --from-paths src/multi-mapcher --ignore-src -r -y
colcon build --packages-select multi_mapcher \
--cmake-args -DCMAKE_BUILD_TYPE=Release
source install/setup.bash
ros2 launch multi_mapcher run.launch.py \
dataset_yaml:=/absolute/path/to/dataset.yamlThe dataset YAML selects mode: single_session or mode: multi_session.
Both ROS versions use the same YAML files and C++ core.
Workflow and guides
- Install AutoDataloader with
python3 -m pip install autodataloader, convert MulRan or HeLiPR, and provide an estimated SLAM trajectory for every LiDAR session. - Run
single_sessionand inspect each generatedafter/result. - Use those verified
after/directories as themulti_sessioninputs. - Enable iSAE in the multi-session YAML when ground truth is available.
- Start with
config/parameters/s2sub.yaml. sub2sub.yamlis an optional, slower preset that uses larger source and target submaps.- Default values and adjustment ranges are documented directly in both YAML files.
- See the usage guide for MulRan/HeLiPR conversion, dataset YAML, single-to-multi execution, outputs, and iSAE.
- Use
docker/ros1/run_docker.shordocker/ros2/run_docker.shfor container execution; see Docker.
Warning
Multi-session optimization requires the intra-session loop constraints saved in each after/pose_graph.g2o.
The program rejects a pose-only trajectory because its odometry-only graph can deform or collapse during optimization.
If this repository supports your research, please cite our Multi-Mapcher paper:
@article{lim2026tiv,
title = {{Multi-Mapcher: Loop Closure Detection-Free Heterogeneous LiDAR
Multi-Session SLAM Leveraging Outlier-Robust Registration for
Autonomous Vehicles}},
author = {Lim, Hyungtae and Kim, Daebeom and Myung, Hyun},
journal = {IEEE Transactions on Intelligent Vehicles},
volume = {11},
number = {2},
pages = {338--351},
year = {2026},
doi = {10.1109/TIV.2025.3635064}
}Quatro and Quatro++ citations
@inproceedings{Lim22icra-Quatro,
title = {A Single Correspondence Is Enough: Robust Global Registration
to Avoid Degeneracy in Urban Environments},
author = {Lim, Hyungtae and Yeon, Suyong and Ryu, Soohyun and Lee, Yonghan
and Kim, Youngji and Yun, Jaeseong and Jung, Euigon and Lee,
Donghwan and Myung, Hyun},
booktitle = {Proceedings of the IEEE International Conference on Robotics
and Automation (ICRA)},
pages = {8010--8017},
year = {2022}
}
@article{Lim24ijrr-Quatropp,
title = {{Quatro++: Robust Global Registration Exploiting Ground
Segmentation for Loop Closing in LiDAR SLAM}},
author = {Lim, Hyungtae and Kim, Beomsoo and Kim, Daebeom and Lee,
Eungchang Mason and Myung, Hyun},
journal = {The International Journal of Robotics Research},
volume = {43},
number = {5},
pages = {685--715},
year = {2024},
doi = {10.1177/02783649231207654}
}The anchor-node-based pose-graph formulation and the original BetweenFactorWithAnchoring implementation were adapted from LT-mapper.
Multi-Mapcher is released under the GNU General Public License v3.0 only (GPL-3.0-only).
Bundled and adapted third-party components retain their respective copyright and license notices.
