Noureddine RAMDI / GenZ-ICP: robust LiDAR odometry with adaptive weighting for degenerate geometries

Created Sat, 23 May 2026 20:41:14 +0000 Modified Sat, 23 May 2026 20:41:27 +0000

cocel-postech/genz-icp

GenZ-ICP tackles a persistent challenge in LiDAR odometry: iterative closest point (ICP) registration struggles in degenerate geometries such as tunnels, long corridors, or open fields where traditional methods can drift or outright fail. The core of GenZ-ICP is an adaptive weighting mechanism that dynamically adjusts the contribution of points during ICP, making registration robust across diverse environments without sacrificing the minimalist design ethos of its predecessor, KISS-ICP.

what genz-icp does: lidar odometry with degeneracy-robust icp

GenZ-ICP is a Python-based LiDAR odometry system focused on improving the robustness of ICP registration in challenging geometric scenarios. ICP is a fundamental algorithm for point cloud registration, but it tends to fail or drift in degenerate cases where the spatial structure provides insufficient constraints — think of a robot navigating through a long tunnel or an open field with few distinctive features.

This project builds directly on KISS-ICP, a minimalist ICP implementation known for its simplicity and efficiency. GenZ-ICP adds an adaptive weighting scheme that adjusts point contributions during each ICP iteration to reduce the influence of degenerate regions, effectively preventing drift and failure.

The system is packaged as a Python library (genz-icp), installable via pip, and provides a CLI entry point for easy experimentation. It also includes full integration with ROS 1 and ROS 2, complete with pre-tuned configurations and a parameter tuning guide to help users adapt the system to various sensors and environments.

Additionally, GenZ-LIO extends the framework to fuse LiDAR data with inertial measurements from IMUs, allowing robust operation across indoor-outdoor boundaries and further expanding its applicability.

adaptive weighting: the technical strength that makes genz-icp stand out

What sets GenZ-ICP apart is its adaptive weighting mechanism implemented within the ICP registration loop. Traditional ICP treats all points equally or uses fixed heuristics for weighting, which can cause the algorithm to latch onto degenerate geometries leading to drift.

GenZ-ICP evaluates the geometric configuration dynamically, identifying points likely to contribute to unstable or ambiguous correspondences. These points are down-weighted or excluded during the iterative process, allowing the registration to focus on stable, informative features.

This approach trades off some computational complexity for robustness. The code remains surprisingly clean and minimalist, inheriting KISS-ICP’s design philosophy, but adds generalizability across diverse real-world environments.

The adaptive weighting also avoids overfitting to particular environments or sensor setups by tuning parameters automatically or through guided configuration. This makes the system more plug-and-play compared to many ICP variants that require manual tuning for each scenario.

Under the hood, the implementation leverages standard Python scientific libraries and integrates smoothly with ROS, making it suitable for research and development workflows in robotics and autonomous navigation.

However, this robustness comes with some tradeoffs:

  • The adaptive weighting introduces additional computation compared to vanilla ICP, potentially impacting real-time performance depending on hardware.
  • While more general, extreme environments with highly ambiguous features may still challenge the system.
  • Effective performance depends on appropriate parameter tuning, for which the project provides guidance but not full automation.

quick start

The project is straightforward to install and try out:

pip install genz-icp

After installation, you can explore the CLI options using:

genz_icp_pipeline --help

This command prints help messages detailing supported dataloaders and configuration options, helping you get started with your own datasets or simulations.

For advanced usage, including ROS integration and parameter tuning, refer to the README and documentation provided in the repository.

verdict

GenZ-ICP is a practical tool for anyone working with LiDAR odometry in robotics or autonomous vehicles, especially when encountering geometrically challenging environments like tunnels, corridors, or open spaces where traditional ICP struggles.

Its strength lies in the adaptive weighting scheme, which enhances ICP robustness without sacrificing the minimalist and accessible design of KISS-ICP. The Python implementation and ROS support make it easy to integrate into existing pipelines.

That said, the added robustness incurs some computational overhead, and the system still requires parameter tuning to achieve optimal results in specific scenarios. It’s not a plug-and-play silver bullet but rather a carefully engineered improvement suited for research and real-world testing.

If you need a lightweight, robust ICP-based odometry system that can handle degenerate geometries better than standard ICP, GenZ-ICP is worth exploring.

The LiDAR-inertial fusion extension, GenZ-LIO, further broadens applicability where IMU data is available.

Overall, this repo strikes a good balance between robustness, simplicity, and practical usability in LiDAR odometry.


→ GitHub Repo: cocel-postech/genz-icp ⭐ 564 · Python