# MS-Mapping
**Repository Path**: xiaoxinslam/MS-Mapping
## Basic Information
- **Project Name**: MS-Mapping
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-01-16
- **Last Updated**: 2026-01-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
MS-Mapping: An Uncertainty-Aware Large-Scale Multi-Session LiDAR Mapping System
[**Xiangcheng Hu**](https://github.com/JokerJohn)
1 · [**Jin Wu**](https://zarathustr.github.io/)
1 · [**Jianhao Jiao**](https://gogojjh.github.io/)
2*
[**Binqian Jiang**](https://github.com/lewisjiang)
1· [**Wei Zhang**](https://ece.hkust.edu.hk/eeweiz)
1 · [**Wenshuo Wang**](https://wenshuowang.github.io/)
3 · [**Ping Tan**](https://facultyprofiles.hkust.edu.hk/profiles.php?profile=ping-tan-pingtan#publications)
1*†
1HKUST
2UCL
3BIT
†Project lead *Corresponding author


[](https://www.bilibili.com/video/BV1RW42197mV/?spm_id_from=333.999.0.0)[](https://github.com/JokerJohn/MS-Mapping/stargazers) [](https://github.com/JokerJohn/MS-Mapping/issues)[](https://opensource.org/licenses/MIT)
MS-Mapping is a multi-session LiDAR mapping system designed for large-scale environments. It addresses challenges in data redundancy, robustness, and accuracy with three key innovations:
- **Distribution-aware keyframe selection**: Captures the contributions of each point cloud frame by analyzing map distribution similarities. This reduces data redundancy and optimizes graph size and speed.
- **Uncertainty model**: Automatically adjusts using the covariance matrix during graph optimization, enhancing precision and robustness without scene-specific tuning. It monitors pose uncertainty to avoid ill-posed optimizations.
- **Enhanced evaluation**: Redesigned baseline comparisons and benchmarks demonstrate MS-Mapping's superior accuracy over state-of-the-art methods.
## News
- **2025/05/16**: Add docker support which adapted to Ubuntu 24.04 by @[bboyack](https://github.com/bboyack). Also add more databag with accurate GT trajectory and map in MS-dataset ([Google Drive](https://drive.google.com/drive/folders/1wT3sjHGHGy8HB-dYqwGN2AGHQMznIPhW?usp=sharing)).
- **2025/03/26**: Add new databag `RB3` and new [Tutorial](tutorial/INSTALL.md) ! Feel free to pull issues for any questions related to this work!
- **2025/02/26**: Baseline methods **F2F** and **M2F** released! [Tutorial](tutorial/INSTALL.md) is here!
- **2024/08/08**: We released the first version of MS-Mapping on [ArXiv](https://arxiv.org/pdf/2408.03723), together with the example [merged data](http://gofile.me/4jm56/4EUwIMPff) and related [YouTube](https://www.youtube.com/watch?v=1z8EOhCmegM) and [bilibili](https://www.bilibili.com/video/BV1RW42197mV/?spm_id_from=333.337.search-card.all.click) videos.
- **2024/07/19**: accepted by [ICRA@40](https://icra40.ieee.org/) as a [extended abstract](https://arxiv.org/pdf/2406.02096).
- **2024/06/03**: submit to a [workshop](https://arxiv.org/html/2406.02096v1).
## [Tutorial](tutorial/INSTALL.md) Here !!!!
.png)
| CP5-NG | CP5-NG-PK1 |
| :----------------------------------------------------------: | :----------------------------------------------------------: |
|  |  |
|  |  |

## Dataset
| [Fusion Portable V2 Dataset](https://fusionportable.github.io/dataset/fusionportable_v2/) | [Newer College](https://ori-drs.github.io/newer-college-dataset/) | [Urban-Nav](https://github.com/IPNL-POLYU/UrbanNavDataset) | [MS-Dataset](https://github.com/JokerJohn/MS-Dataset) |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ---------------------------------------------------------- | ----------------------------------------------------- |
#### Download Test Data in Ms-Datset (Google Drive)
| [GT Map](https://drive.google.com/file/d/1UzItYI538MtaruZxXWqExKeWL_ibBJVk/view?usp=sharing) | [PK01](https://drive.google.com/drive/folders/1oqAmXirR-ZZdkrxPJiXAwqywh5SnBsOX?usp=sharing) | [CP05](https://drive.google.com/drive/folders/11tenufARYbZRbaY6zf0MKDb1WY7-6rsx?usp=sharing) | [RB02](https://drive.google.com/drive/folders/1CWnCDCPqy3NV-D_roG_ncKdYSoc4WV0d?usp=sharing) | [RB03](https://drive.google.com/drive/folders/1L4S91SRiDlXiEmeLqllJTJWA6D-Az9xi?usp=sharing) | [CS01](https://drive.google.com/drive/folders/1EijZ2aNSPkXopTdfOTvOkcMqDF502h45?usp=sharing) |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| [Merged results for 8 sessions](http://gofile.me/4jm56/4EUwIMPff) | [**CC01**](https://drive.google.com/drive/folders/1uGmKFI-PvrehH67nw6tZ5RpMRfnUpqxe?usp=sharing) | | | | |

### Trajectory Evaluation

|  |  |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
### Map Evaluation
we use [MapEval](https://github.com/JokerJohn/Cloud_Map_Evaluation) for this map evaluation.
|  |
| ------------------------------------------------------------ |
### Time Analysis
To plot the results, you can follow this [scripts](https://github.com/JokerJohn/SLAMTools/blob/main/Run_Time_analysis/time_analysis.py).

## [Quick Run](tutorial/INSTALL.md)
### Install
- Ubuntu 20.04 / ROS Noetic
- *[Open3d ( >= 0.17.0)](https://github.com/isl-org/Open3D)*
- PCL
- [GTSAM 4.2.0](https://github.com/borglab/gtsam/tree/4.2.0)
- [CMake](https://cmake.org/download) > 3.20 (fixed by @[bboyack](https://github.com/bboyack))
```bash
# for cmake update, required by open3d 0.17.0
cd cmake-
./configure
make -j8
sudo make install
cmake --version
```
### Docker Support by @[bboyack](https://github.com/bboyack)
- Ubuntu 24.04
### Baselines
The implementation of baseline method **F2F** and **M2F**, only radius keyframe selection + fix-cov PGO. [Tutorial](tutorial/INSTALL.md) is here!
|  |
| ------------------------------------------------------------ |
- Step 1: using old session with single session mode (`useMultiMode = false`) to prepare data (e.g., PK1).
- Step2: incrimental mapping using new session rosbag (e.g., RB2).
- Step3: global map merging with giving initial pose (manually from `ClouCompare` or place recognition methods), e.g. PK1-RB2.
| [PK1](https://hkustconnect-my.sharepoint.com/:u:/g/personal/xhubd_connect_ust_hk/EcoaRBlVdEhMkB4z0jyHkmQBO2feRKSono_fSsVkkCZNOg?e=a8S0SB) | [PK1-RB2](https://hkustconnect-my.sharepoint.com/:u:/g/personal/xhubd_connect_ust_hk/ERsuQfkHh8NEsK2qMfkubngBQuPrWqbxNXD_W6hG08IK_g?e=vdGzgn) | [PK1-RB2-RB3](https://hkustconnect-my.sharepoint.com/:u:/g/personal/xhubd_connect_ust_hk/Ef1WFIyW5nBNnKcWt_MKstkBWfKiRrSmoqw2x5IFJwVqyA?e=2VTfhe) |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|  |  |  |
- Step4: Lifelong Mapping with [BeautyMap](https://github.com/MKJia/BeautyMap) to remove dynamic points.
| Clean Map Using BeautyMap | Ground Truth Map |
| -------------------------------------- | ----------------------------------------------- |
|  |  |
## TO DO
- [ ] Clean codes
- [ ] Add more dataset support
- [ ] Add place recognition algothem for initialization
- [ ] Add GNSS support. (users can refer to [LIO_SAM_6AXIS](https://github.com/JokerJohn/LIO_SAM_6AXIS) to merge this codes)
## Citations
Please cite:
```bibtex
@misc{hu2024mskeyframe,
title={MS-Mapping: Multi-session LiDAR Mapping with Wasserstein-based Keyframe Selection},
author={Xiangcheng Hu, Jin Wu, Jianhao Jiao, Wei Zhang and Ping Tan},
year={2024},
eprint={2406.02096},
archivePrefix={arXiv},
primaryClass={cs.RO}
}
@misc{hu2024msmapping,
title={MS-Mapping: An Uncertainty-Aware Large-Scale Multi-Session LiDAR Mapping System},
author={Xiangcheng Hu, Jin Wu, Jianhao Jiao, Binqian Jiang, Wei Zhang, Wenshuo Wang and Ping Tan},
year={2024},
eprint={2408.03723},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2408.03723},
}
```
## Acknowledgment
The code in this project is adapted from the following projects:
- The odometry method is adapted from [FAST-LIO2](https://github.com/hku-mars/FAST_LIO).
- The basic framework for pose graph optimization (PGO) is adapted from [SC-A-LOAM](https://github.com/gisbi-kim/SC-A-LOAM).

## Contributors