openlidarmap

Zero-Drift Point Cloud Mapping using Map Priors

https://github.com/tumftm/openlidarmap

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 7 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.4%) to scientific vocabulary

Keywords

cpp docker localization mapping pcd python ros2 slam
Last synced: 6 months ago · JSON representation ·

Repository

Zero-Drift Point Cloud Mapping using Map Priors

Basic Info
  • Host: GitHub
  • Owner: TUMFTM
  • License: apache-2.0
  • Language: C++
  • Default Branch: main
  • Homepage:
  • Size: 25.9 MB
Statistics
  • Stars: 305
  • Watchers: 5
  • Forks: 26
  • Open Issues: 1
  • Releases: 3
Topics
cpp docker localization mapping pcd python ros2 slam
Created about 1 year ago · Last pushed 10 months ago
Metadata Files
Readme License Citation

README.md

OpenLiDARMap

Zero-Drift Point Cloud Mapping using Map Priors


![C++](https://img.shields.io/badge/-C++-blue?logo=cplusplus) ![Python](https://img.shields.io/badge/Python-3670A0?logo=python&logoColor=ffdd54) [![Docker](https://badgen.net/badge/icon/Docker?icon=docker&label)](https://www.docker.com/) ![License](https://img.shields.io/badge/license-Apache%202.0-blue) ![Version](https://img.shields.io/badge/version-0.2.1-blue) [![arXiv](https://img.shields.io/badge/arXiv-1234.56789-b31b1b.svg)](https://arxiv.org/abs/2501.11111) [![DOI:10.5220/0013405400003941](https://img.shields.io/badge/DOI-10.5220/0013405400003941-00629B.svg)](https://doi.org/10.5220/0013405400003941) [![YouTube](https://img.shields.io/badge/YouTube-FF0000?logo=youtube&logoColor=white)](https://www.youtube.com/watch?v=3QsLBMW8xB0&list=PL0qnWNTSPM4pfnHflUxCHcshOIlXDSNWp)
[![openlidarmap](doc/openlidarmap_seq00.gif)](https://www.youtube.com/watch?v=3QsLBMW8xB0&list=PL0qnWNTSPM4pfnHflUxCHcshOIlXDSNWp)

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.

diagram

Usage

Install 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. ```sh ./docker/build_docker.sh # (optional) ```
Run 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`. ```sh ./docker/run_docker.sh # 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.
Configure 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 |
Develop 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: ```sh mkdir build cd build cmake ../cpp && make -j ``` To build the Python bindings: ```sh 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

Limitations

  • Detailed instructions on how to create refrence maps are missing

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

bibtex @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}, }

Citation (CITATION.cff)

cff-version: 1.2.1
preferred-citation:
  title: "OpenLiDARMap: Zero-Drift Point Cloud Mapping using Map Priors"
  doi: "10.48550/arXiv.2501.11111"
  year: "2025"
  type: article
  url: https://arxiv.org/abs/2501.11111
  codeurl: https://github.com/TUMFTM/OpenLiDARMap
  authors:
    - family-names: Kulmer
      given-names: Dominik
    - family-names: Leitenstern
      given-names: Maximilian
    - family-names: Weinmann
      given-names: Marcel
    - family-names: Lienkamp
      given-names: Markus

GitHub Events

Total
  • Create event: 8
  • Release event: 2
  • Issues event: 11
  • Watch event: 265
  • Delete event: 6
  • Issue comment event: 10
  • Push event: 17
  • Public event: 1
  • Pull request event: 11
  • Fork event: 22
Last Year
  • Create event: 8
  • Release event: 2
  • Issues event: 11
  • Watch event: 265
  • Delete event: 6
  • Issue comment event: 10
  • Push event: 17
  • Public event: 1
  • Pull request event: 11
  • Fork event: 22

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 8
  • Total pull requests: 6
  • Average time to close issues: 9 days
  • Average time to close pull requests: 1 minute
  • Total issue authors: 4
  • Total pull request authors: 1
  • Average comments per issue: 0.63
  • Average comments per pull request: 0.0
  • Merged pull requests: 6
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 8
  • Pull requests: 6
  • Average time to close issues: 9 days
  • Average time to close pull requests: 1 minute
  • Issue authors: 4
  • Pull request authors: 1
  • Average comments per issue: 0.63
  • Average comments per pull request: 0.0
  • Merged pull requests: 6
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • ga58lar (5)
  • dattachandan (1)
  • mini-1235 (1)
  • qpc001 (1)
Pull Request Authors
  • ga58lar (6)
Top Labels
Issue Labels
enhancement (4) question (1)
Pull Request Labels
enhancement (4) bug (1)

Dependencies

Dockerfile docker
  • ubuntu 22.04 build
python/pyproject.toml pypi
  • ninja *
  • numpy *