ROS 使用需先按 catkin 或 colcon 单独编译工作空间;运行需自备 rosbag 或数据集,README 未内置数据;ROS 启动需指定 topic 参数
genz-icp
cocel-postech活跃维护面向 LiDAR 里程计的鲁棒 ICP 算法,专门解决走廊、隧道等几何退化场景下位姿估计失准的问题,是 IEEE RA-L 2025 的 SOTA 方案。
GenZ-ICP: SOTA robust LiDAR odometry (IEEE RA-L 2025)
pip install genz-icp
genz_icp_pipeline --helpREADME 未说明显存、CPU 或 GPU 型号要求,仅标注支持 Linux
基于自适应加权的泛化性强、抗退化 LiDAR 里程计,提供 Python 包与 ROS1/ROS2 接口
面向 LiDAR 里程计的鲁棒 ICP 算法,专门解决走廊、隧道等几何退化场景下位姿估计失准的问题,是 IEEE RA-L 2025 的 SOTA 方案。
核心能力
- 用自适应加权提升退化场景下的鲁棒性
- 提供 pip 安装的 Python 包与命令行管线
- 支持 ROS1 与 ROS2 的 odometry launch
- 附带预调参配置与参数调优指南
- 提供 C++ 与 Python 两套实现
容易踩的坑
- v0.3.2最新正式版2026-05-05 · 2026-05-05 12:55 UTC
GenZ-ICP v0.3.2: PyPI Support and ROS 2 Stability Improvements
This release introduces official PyPI support for GenZ-ICP and major ROS 2 stability improvements.
🚀 PyPI Support (Major Update)
- Official Python package support:
pip install genz-icp - CLI tool:
genz_icp_pipeline - Updated the visualizer for GenZ-ICP's status representation
- Packaged pre-tuned configs for quick start
- Config parser support for both:
- Python-style sectioned YAML
- ROS-style flat YAML
- Improved dataset topic handling (
/topicvstopicnormalization)
🛠️ ROS 2 Stability and Build Fixes (Major Update)
- During real-time playback of recorded LiDAR bags in ROS 2, a QoS mismatch between the point cloud publisher and subscriber caused intermittent frame drops and timing jitter, leading to visible stuttering and occasional odometry drift.
- Fix: switched the point cloud subscriber to a RELIABLE QoS profile for stable frame delivery, improving consistency of scan integration and odometry tracking.
- Build robustness: added FetchContent/CMake compatibility handling for newer CMake environments (e.g., >= 3.31), reducing ROS 2 build failures across different systems.
Packaging and Build
- Added/updated Python packaging scaffold (
pyproject.toml, build config, metadata) - Fixed wheel-from-sdist packaging issues in the release flow
- Published PyPI package
genz-icp==0.3.2
Environment Validation
Tested and validated on Ubuntu 20.04, 22.04 environments.
Documentation
- Refreshed root/Python README for:
- installation
- pipeline usage
- config usage
- pre-tuned config examples
Acknowledgement
- We gratefully acknowledge the KISS-ICP project and team.
- The PyPI packaging/release workflow for GenZ-ICP was developed with reference to KISS-ICP’s open-source structure and practices.
- Official Python package support:
- v0.2.02025-04-17 · 2025-04-17 11:05 UTC
查看更新说明
What's Changed
- Update computing covariance, thus removing the unnecessary memory allocation memory and loop by @Seongjun-Kim00 in https://github.com/cocel-postech/genz-icp/pull/7
- Set consistent voxel size to ROS1 version by @LimHyungTae in https://github.com/cocel-postech/genz-icp/pull/10
- feat: Enhance parameter handling in ROS2 by @TannerGilbert in https://github.com/cocel-postech/genz-icp/pull/16
- Remove redundant calculation by @ali-pahlevani in https://github.com/cocel-postech/genz-icp/pull/13
- Remove redundant conditional checks by @Daehan2Lee in https://github.com/cocel-postech/genz-icp/pull/18
- Preallocate memory for voxel point buffers to improve efficiency by @Daehan2Lee in https://github.com/cocel-postech/genz-icp/pull/19
New Contributors
- @Seongjun-Kim00 made their first contribution in https://github.com/cocel-postech/genz-icp/pull/7
- @LimHyungTae made their first contribution in https://github.com/cocel-postech/genz-icp/pull/10
- @TannerGilbert made their first contribution in https://github.com/cocel-postech/genz-icp/pull/16
- @ali-pahlevani made their first contribution in https://github.com/cocel-postech/genz-icp/pull/13
Full Changelog: https://github.com/cocel-postech/genz-icp/compare/v0.1.0...v0.2.0
- v0.1.02025-03-07 · 2025-03-07 12:28 UTC
查看更新说明
What's Changed
- Resolve the RViz visualization issue (flickering problem when visualizing planar and non-planar points)
- Fix Geman-McClure weighting for the point-to-plane residual
- Update Adaptive voxelization strategy based on the
desired_num_voxelized_points(using LOCUS 2.0's approach) - Modify centroid calculation process to avoid unnecessary use of a for loop
- v0.0.02024-11-19 · 2024-11-19 01:44 UTC
查看更新说明
Version 0.0.0
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
GenZ-ICP is a Generalizable and Degeneracy-Robust LiDAR Odometry Using an Adaptive Weighting
Install
pip install genz-icp
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.
For advanced instructions on the Python package please see this README
ROS support
Build
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone https://github.com/cocel-postech/genz-icp.git
cd ..
catkin build genz_icp --cmake-args -DCMAKE_BUILD_TYPE=Release
source ~/catkin_ws/devel/setup.bash
Run with pre-tuned config
roslaunch genz_icp odometry.launch topic:=<topic_name> config_file:=<config_file_name>.yaml
rosbag play <rosbag_file_name>.bag
Run with only topic
roslaunch genz_icp odometry.launch topic:=<topic_name>
rosbag play <rosbag_file_name>.bag
Examples and download links for demo datasets are available in ros/README.md.
Parameter tuning guide: ros/config/parameter_tuning_guide.md
Build
mkdir -p ~/colcon_ws/src
cd ~/colcon_ws/src
git clone https://github.com/cocel-postech/genz-icp.git
cd ..
colcon build --packages-select genz_icp --cmake-args -DCMAKE_BUILD_TYPE=Release --symlink-install
source ~/colcon_ws/install/setup.bash
Run with pre-tuned config
ros2 launch genz_icp odometry.launch.py topic:=<topic_name> config_file:=<config_file_name>.yaml
ros2 bag play <rosbag_file_name>.db3
Run with only topic
ros2 launch genz_icp odometry.launch.py topic:=<topic_name>
ros2 bag play <rosbag_file_name>.db3
Examples and download links for demo datasets are available in ros/README.md.
Parameter tuning guide: ros/config/parameter_tuning_guide.md
: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
- Daehan Lee :envelope: daehanlee
atpostechdotacdotkr - Hyungtae Lim :envelope: shapelim
atmitdotedu