运行前必须自备参考地图并给出首帧位姿初值,否则无法启动;参考地图需按 LoD2PCD 流程另行生成或从论文数据链接下载;无头服务器上需把 pipeline_.visualize 设为 false,否则 GUI 会报错。
./docker/run_docker.sh <map_path> <scan_path> <output_path> <x> <y> <z> <qx> <qy> <qz> <qw>README 未说明具体显存或 GPU 型号要求;提供 Docker 镜像运行,未提及是否支持纯 CPU 运行。
用先验地图约束 LiDAR 里程计,实现无 GNSS 的零漂移点云建图
用地图先验做零漂移点云建图,把激光雷达采集的点云对齐到已有地图上,解决长距离建图累积误差的问题。
核心能力
- 结合参考地图与经典 LiDAR 里程计消除累积漂移
- 无需 GNSS 即可输出地理配准的点云地图
- 支持 .bin/.pcd.bin/.pcd/.ply/.xyz 多种点云格式
- 提供 Docker 镜像与 Python 绑定两种调用方式
- 可调降采样、体素分辨率与优化阻尼等参数
容易踩的坑
- v0.2.1v0.2.1 - nuscenes dataloader最新正式版2026-01-26 · 2026-01-26 14:24 UTC
What's Changed
- 4 switch to sliding window optimization by @ga58lar in https://github.com/TUMFTM/OpenLiDARMap/pull/8
- make processFrame public by @ga58lar in https://github.com/TUMFTM/OpenLiDARMap/pull/10
- Submap saving by @ga58lar in https://github.com/TUMFTM/OpenLiDARMap/pull/11
- nuscenes dataloader for .pcd.bin by @ga58lar in https://github.com/TUMFTM/OpenLiDARMap/pull/12
Full Changelog: https://github.com/TUMFTM/OpenLiDARMap/compare/v0.2.0...v0.2.1
- v0.2.0v0.2.0 - dataloader variety without PCL dependency2025-02-15 · 2025-02-15 22:56 UTC
查看更新说明
What's Changed
- 1 missing dataloader variety by @ga58lar in https://github.com/TUMFTM/OpenLiDARMap/pull/7
Full Changelog: https://github.com/TUMFTM/OpenLiDARMap/compare/v0.1.0...v0.2.0
- v0.1.0v0.1.0 - GICP-version2025-02-11 · 2025-02-11 14:03 UTC
查看更新说明
What's Changed
- Restructe with major changes to the core library by @ga58lar in https://github.com/TUMFTM/OpenLiDARMap/pull/6
New Contributors
- @ga58lar made their first contribution in https://github.com/TUMFTM/OpenLiDARMap/pull/6
Full Changelog: https://github.com/TUMFTM/OpenLiDARMap/compare/v0.0.1...v0.1.0
- v0.0.1v0.0.1 - Paper state2025-02-09 · 2025-02-09 16:33 UTC
查看更新说明
This release is the version described in the paper OpenLiDARMap - Zero-Drift Point Cloud Mapping using Map Priors.
- ICP-based scan matching
- Scan-to-scan (scan-to-local-map) matching
- Scan-to-map matching
- Pose graph optimization
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Concept
We use reference maps in combination with classical LiDAR odometry to enable drift-free localization/mapping. Our approach is designed for high precision mapping. It enables georeferenced LiDAR-only point cloud mapping without GNSS. A detailed description of our pipeline can be found in the linked paper.
<img src=doc/pipeline_diagram.png alt="diagram" width="480" />
Usage
We provide a Docker image on Docker Hub, which will automatically be pulled within the Run section, but you also have the option to build it locally.
./docker/build_docker.sh # (optional)
To use our approach, you need a reference map and an initial guess of the first pose.
More details on reference maps can be found in our paper.
The easiest way to use our approach is with the provided Docker image.
We currently support point cloud files in .bin(KITTI), .pcd.bin(nuScenes), .pcd, .ply and .xyz.
./docker/run_docker.sh <map_path> <scan_path> <output_path> <x> <y> <z> <qx> <qy> <qz> <qw>
# Example
./docker/run_docker.sh /datasets/kitti/map.pcd /datasets/data_odometry_velodyne/dataset/sequences/00/velodyne /output/directory 395.5 1696.25 117.55 0 0 0.4848096 0.8746197
The output of the algorithm are poses in the KITTI format.
We also provide Python bindings. Have a look in the python folder, where we provide a test script.
The configuration of this pipeline can be changed in the cpp/config files. The naming suggest the intended usecase for the files. The most important parameters to play with if your results are not as good as expected are:
| Parameter | Description | Default | Note |
|---|---|---|---|
| pipeline_.visualize | Toggle GUI | true | use false on headless servers |
| pipeline_.save_submaps | Toggle submap saving | false | use to directly save high-resolution PCD submaps |
| preprocess_.downsampling_resolution | Scans are voxelized before usage | 1.5 | Reduce the size for increased robustness |
| preprocess_.num_neighbors | Points for covariance calculation | 10 | Try both directions |
| registration_.voxel_resolution | Voxelhashmap voxel size | 1.0 | Reduce the size for increased robustness |
| registration_.lambda | Optimization dampening factor | 1.0 | Increase to increase the robustness |
We also provida a Development image, if you like to contribute or adapt or approach.
Open this repository in VSCode -> F1 -> Rebuild and Reopen in Container.
To build the C++ code:
mkdir build
cd build
cmake ../cpp && make -j
To build the Python bindings:
cd python
pip install -e .
Data
The reference maps and original map outputs (v0.0.1) used for the paper can be downloaded from the following link: https://doi.org/10.14459/2025mp1771733
Prior Map Generation
To find out how to generate reference maps, please follow this link: https://github.com/ga58lar/LoD2PCD
Acknowledgement
Great inspiration has come from the following repositories. If you use our work, please also leave a star in their repositories and cite their work.
Citation
@conference{kulmer2025openlidarmap,
author={Kulmer, Dominik and Leitenstern, Maximilian and Weinmann, Marcel and Lienkamp, Markus},
title={OpenLiDARMap: Zero-Drift Point Cloud Mapping Using Map Priors},
booktitle={Proceedings of the 11th International Conference on Vehicle Technology and Intelligent Transport Systems - VEHITS},
year={2025},
pages={178-188},
publisher={SciTePress},
organization={INSTICC},
doi={10.5220/0013405400003941},
isbn={978-989-758-745-0},
issn={2184-495X},
}
