koide3/small_gicp

Efficient and parallel algorithms for point cloud registration [C++, Python]

What it solves

It provides a high-performance C++ library for fine point cloud registration, allowing two 3D point clouds to be aligned accurately. It solves the problem of computational inefficiency in registration algorithms like ICP (Iterative Closest Point) and GICP (Generalized ICP), offering a significantly faster alternative to previous implementations.

How it works

The library implements several registration algorithms including ICP, Point-to-Plane ICP, GICP, and VGICP. It achieves high speed through deep optimization of the core registration logic and full parallelization of the entire pipeline—including downsampling, KdTree construction, and normal/covariance estimation—using OpenMP or Intel TBB backends. It is designed as a header-only library with minimal dependencies (Eigen, nanoflann, and Sophus) and provides both C++ and Python bindings.

Who it’s for

It is intended for developers working with 3D data, robotics, and SLAM (Simultaneous Localization and Mapping) who need efficient, parallelized point cloud alignment tools that can integrate into C++ projects or be used with Python libraries like Open3D.

Highlights

  • Performance: Up to 2x speed gain over its predecessor, fast_gicp.
  • Parallelization: Fully parallelized preprocessing and registration using OpenMP or Intel TBB.
  • Flexibility: Supports custom point cloud classes via traits and template-based customization of registration factors.
  • Interoperability: Includes a PCL (Point Cloud Library) registration interface for drop-in replacement and portable Python bindings.

Related

  • Project
  • Project
  • Project
  • Project
  • Project