README.md

June 16, 2026 · View on GitHub

GenZ-ICP

License: MIT

Demo   •   Install   •   ROS   •   Paper   •   Contact Us

animated

GenZ-ICP is a Generalizable and Degeneracy-Robust LiDAR Odometry Using an Adaptive Weighting


Install

pip install genz-icp

If you also want to install all the dependencies, like Open3D/Polyscope for visualization (recommended):

pip install "genz-icp[all]"

Running the system

Next, follow the instructions on how to run the system by typing:

genz_icp_pipeline --help

This should print a help message with supported dataloaders and options.

Config

You can generate a default config genz_icp.yaml by typing:

genz_icp_dump_config

Now, you can modify the parameters and pass the file to --config when running genz_icp_pipeline as follows:

genz_icp_pipeline --config /path/to/genz_icp.yaml --visualize /path/to/data --topic /pointcloud_topic

Built-in pre-tuned configs (installed with pip)

Pre-tuned YAML files are packaged together with genz-icp, so you can use them by filename directly.

Available pre-tuned configs:

  • corridor.yaml: Ground-Challenge dataset, Corridor1 and Corridor2 sequences (topic: /velodyne_points)
  • exp07.yaml: Hilti-Oxford dataset, Exp07 sequence (topic: /hesai/pandar)
  • kitti.yaml: KITTI odometry dataset (topic: /velodyne_points)
  • long_corridor.yaml: SubT-MRS dataset, Long_Corridor sequence (topic: /velodyne_points)
  • newer_college.yaml: Newer College dataset, 01_short_experiment, 02_long_experiment, 07_parklandmount sequences (topic: /os1_cloud_node/points)
  • indoor.yaml: General indoor environments (topic set by user input)
  • outdoor.yaml: General outdoor environments (topic set by user input)

Example:

genz_icp_pipeline --config long_corridor.yaml --visualize /path/to/data --topic /velodyne_points

You can still pass your own local YAML path:

genz_icp_pipeline --config /path/to/my_config.yaml --visualize /path/to/data --topic /pointcloud_topic
⚠️ Python version compatibility for built-in pre-tuned configs (important for Python < 3.9)

Above built-in pre-tuned configs can be used by filename (without specifying a full path) only when using Python >= 3.9.

This is because the package relies on importlib.resources.files, which is available starting from Python 3.9.

  • Python >= 3.9 (recommended) You can directly use config names:

    genz_icp_pipeline --config kitti.yaml --visualize /path/to/data --topic /velodyne_points
    
  • Python < 3.9 Built-in configs cannot be resolved by name. Instead, clone the repository and provide the path manually:

    git clone https://github.com/cocel-postech/genz-icp.git
    
    genz_icp_pipeline \
      --config /path/to/genz-icp/python/genz_icp/config/pretuned/kitti.yaml \
      --visualize /path/to/data \
      --topic /velodyne_points
    

Install Python API (developer mode)

If you plan to modify the code, the main requirements are a modern C++ compiler and pip. In Ubuntu-based systems:

sudo apt install g++ python3-pip

Then clone and install editable mode:

git clone https://github.com/cocel-postech/genz-icp.git
cd genz-icp
python3 -m pip install -e ./python --no-build-isolation

Install Python API (expert mode)

If you want more control over the build, install CMake and dependencies explicitly:

sudo apt install build-essential libeigen3-dev libtbb-dev pybind11-dev ninja-build

:pencil: Citation

If you use our codes, please cite our paper (arXiv, IEEE Xplore)

@ARTICLE{lee2024genzicp,
  author={Lee, Daehan and Lim, Hyungtae and Han, Soohee},
  journal={IEEE Robotics and Automation Letters (RA-L)}, 
  title={{GenZ-ICP: Generalizable and Degeneracy-Robust LiDAR Odometry Using an Adaptive Weighting}}, 
  year={2025},
  volume={10},
  number={1},
  pages={152-159},
  keywords={Localization;Mapping;SLAM},
  doi={10.1109/LRA.2024.3498779}
}

For the LiDAR-inertial odometry (LIO) extension of GenZ-ICP, please also refer to GenZ-LIO.

@article{lee2026genzlio,
  title={{GenZ-LIO: Generalizable LiDAR-Inertial Odometry Beyond Confined--Open Boundaries}},
  author={Lee, Daehan and Lim, Hyungtae and Kim, Seongjun and Rho, Soonbin and Lee, Changhyeon and Park, Sanghyun and Hong, Junwoo and Choi, Eunseon and Jo, Hyunyoung and Han, Soohee},
  journal={arXiv preprint arXiv:2603.16273},
  year={2026}
}

:sparkles: Contributors

Like KISS-ICP, we envision GenZ-ICP as a community-driven project, we love to see how the project is growing thanks to the contributions from the community. We would love to see your face in the list below, just open a Pull Request!

:pray: Acknowledgement

Many thanks to KISS team—Ignacio Vizzo, Tiziano Guadagnino, Benedikt Mersch—to provide outstanding LiDAR odometry codes!

Please refer to KISS-ICP for more information

:mailbox: Contact information

If you have any questions, please do not hesitate to contact us