KISS-ICP

raw JSON →
1.3.0 verified Fri May 01 auth: no python

KISS-ICP is a simple yet effective LiDAR odometry pipeline for real-time 3D registration. Version 1.3.0 is currently released on PyPI with Python 3.8+ support. The library is in active development with periodic releases.

pip install kiss-icp
error ModuleNotFoundError: No module named 'kiss_icp'
cause Library not installed or installed in wrong environment.
fix
Run 'pip install kiss-icp' in the correct Python environment.
error ImportError: cannot import name 'KissICP' from 'kiss_icp'
cause Wrong import path for the pipeline class.
fix
Use 'from kiss_icp.pipeline import KissICP' instead of 'from kiss_icp import KissICP'.
error AttributeError: 'KISSConfig' object has no attribute 'dict'
cause Pydantic v2 change: .dict() removed in favor of .model_dump().
fix
Replace .dict() with .model_dump() on config objects. Example: config.model_dump()
breaking In v1.0.0, environment variables were renamed from 'KISS_ICP_*' to 'KISS_ICP_*' (prepended with 'kiss_icp_')
fix Update any scripts or configurations that set environment variables to use the new prefix (e.g., KISS_ICP_MAX_RANGE -> KISS_ICP_MAX_RANGE still same, but check new names).
breaking In v1.0.0, the Python API changed significantly. The old top-level import 'from kiss_icp import KissICP' may no longer work.
fix Use 'from kiss_icp.pipeline import KissICP' and consult the updated documentation.
gotcha The library uses C++ extensions and may require a C++ compiler on first install, especially on ARM systems (before v1.3.0). v1.3.0 improved ARM support via pip.
fix For ARM, upgrade to v1.3.0 or install from source with a C++ compiler.
deprecated ROS 1 support was dropped in v0.4.0. Use ROS 2 wrapper instead.
fix Use the ros2 extra: pip install kiss-icp[ros2]
gotcha Pydantic models changed from .dict() to .model_dump() in recent versions. If you use custom configs, update accordingly.
fix Replace .dict() calls with .model_dump() on config objects.
pip install kiss-icp[all]

Minimal example to set up the pipeline and register a frame.

import kiss_icp
from kiss_icp.pipeline import KissICP

config = kiss_icp.config.KISSConfig()
pipeline = KissICP(config)

# Example registration of a single frame
import numpy as np
frame = np.random.rand(100, 3).astype(np.float64)  # replace with actual LiDAR frame
pose = pipeline.register_frame(frame)
print(pose)