KISS-Matcher

MIT-SPARKMIT活跃维护

快速、鲁棒且可扩展的点云配准库,支持 LiDAR、RGB-D 等 3D 数据,并提供 ROS2 SLAM 示例,用于解决三维建图与定位中的配准问题。

KISS-Matcher: Fast, Robust, and Scalable Registration + ROS2 SLAM examples

v1.0.2发布于 2026-05-10 03:54 UTC814star97fork同步于 2026-11-07 07:32 UTC

怎么上手

由 README 提炼,执行前请确认
git clone https://github.com/MIT-SPARK/KISS-Matcher.git
cd KISS-Matcher
make deps
make cppinstall
硬件要求按 README 说明

README 未说明显存或 GPU 要求,仅说明支持 Linux(Ubuntu/Debian)与 macOS(Apple Silicon/Intel),未提及 GPU 厂商或型号

支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

快速鲁棒可扩展的点云配准库,带 C++/Python 接口和 ROS2 SLAM 示例

快速、鲁棒且可扩展的点云配准库,支持 LiDAR、RGB-D 等 3D 数据,并提供 ROS2 SLAM 示例,用于解决三维建图与定位中的配准问题。

核心能力

  • 提供 C++ 与 Python 双接口,PyPI 可直接 pip 安装
  • 用 ROBIN 图论方法剔除离群匹配,提升鲁棒性
  • 内置可扩展配准示例,覆盖合成数据与真实点云
  • 附带 ROS2 Humble 的 SLAM 示例
  • 提供 3D 可视化演示,需安装 viz 额外依赖

容易踩的坑

若环境已装 ROBIN,cppinstall 会报 CMake 错误,需改用 make cppinstall_matcher_only;macOS 上直接调用 cmake 需指向 Homebrew LLVM 工具链并加 -DUSE_SYSTEM_ROBIN=OFF;可视化示例需额外安装 kiss-matcher[viz]

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v1.0.2
  1. v1.0.2KISS-Matcher v1.0.2最新正式版2026-05-10 · 2026-05-10 03:54 UTC

    Tiny correctness fix.

    What changed

    `kiss_matcher.version` is now derived from the installed package metadata (`importlib.metadata.version("kiss_matcher")`) instead of a hardcoded string. v1.0.0 and v1.0.1 both reported `version == "1.0.0"` at runtime regardless of the actual installed version; v1.0.2 fixes that drift and any future bump is reflected automatically.

    No API changes

    Same wheels, same coverage as v1.0.1.

  2. v1.0.1KISS-Matcher v1.0.12026-05-10 · 2026-05-10 03:30 UTC
    查看更新说明

    Slim install footprint.

    What changed

    • `viser` moved from required dependencies to the `[viz]` extra. Default `pip install kiss-matcher` no longer pulls in trimesh, scipy, networkx, shapely, embreex, jsonschema, httpx, and ~20 other transitive packages. Install with the visualization extra when needed: `pip install kiss-matcher[viz]`.
    • New self-contained quickstart at `python/examples/quickstart.py` that works with no external data and no viser. Generates a synthetic point cloud, applies a known rigid transform, and verifies KISS-Matcher recovers it.

    No API changes

    The Python API (`KISSMatcher`, `KISSMatcherConfig`, `RegistrationSolution`) is identical to v1.0.0; this release is purely a packaging slim-down.

    Same platform coverage

    Wheels for Linux `manylinux_2_28+` x86_64 and macOS arm64 (macOS 14+), Python 3.8 through 3.12. Source distribution available for everything else.

  3. v1.0.0KISS-Matcher v1.0.02026-05-09 · 2026-05-09 22:03 UTC
    查看更新说明

    First PyPI release of KISS-Matcher's Python bindings.

    Install

    ```bash pip install kiss-matcher ```

    Wheels are published for:

    • Linux `manylinux_2_28+` x86_64 (works on any Linux with glibc ≥ 2.28: Ubuntu 20.04+, Debian 11+, RHEL 9+, etc.)
    • macOS arm64 (macOS 14+, Apple Silicon)
    • Python 3.8, 3.9, 3.10, 3.11, 3.12

    Each wheel ships its own copy of oneTBB, OpenMP, lz4, and flann — no system installation needed.

    Intel-Mac users: `pip install kiss-matcher` falls back to source build automatically (CMake ≥ 3.18, Eigen 3, TBB, OpenMP, flann required).

    What's bundled

    • KISS-Matcher core (FasterPFH + ROBINMatching + GncSolver pipeline)
    • ROBIN v.1.2.7 (with MIT-SPARK/pmc fork pinned for upcoming Windows MSVC support)
    • oneTBB 2022, Eigen 3, lz4, flann

    Quickstart

    ```python import kiss_matcher as km import numpy as np

    config = km.KISSMatcherConfig(voxel_size=0.3) matcher = km.KISSMatcher(config)

    src = np.random.rand(1000, 3).astype(np.float32) tgt = np.random.rand(1000, 3).astype(np.float32) solution = matcher.estimate(src, tgt) ```

    Notes

    • Windows wheels are not yet available; ROBIN's `src/pkc.cpp` uses GCC builtin atomics and `size_t` OpenMP `for` indices that MSVC's OpenMP 2.0 rejects. Patch coming in a follow-up release.
    • Source distribution is also published, so `pip install --no-binary :all: kiss-matcher` works on any POSIX system with the build dependencies.
  4. v0.3.02025-04-08 · 2025-04-08 20:21 UTC
    查看更新说明

    Now, what I wanted to implement has been done! Fully support ROS2.

    What's Changed

    New Contributors

    Full Changelog: https://github.com/MIT-SPARK/KISS-Matcher/compare/v0.2.0...v0.3.0

  5. v0.2.02025-02-23 · 2025-02-23 17:05 UTC
    查看更新说明

    Fully supported by binding. But Mac env should be tested soon.


    What's Changed

    New Contributors

    Full Changelog: https://github.com/MIT-SPARK/KISS-Matcher/compare/v0.1.1...v0.2.0

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    :package: Installation

    All installations are set up automatically in an out-of-the-box manner.

    Run the command below to install basic dependency packages:

    git clone https://github.com/MIT-SPARK/KISS-Matcher.git
    cd KISS-Matcher
    make deps
    

    make deps auto-detects the host OS:

    • Linux (Ubuntu/Debian): installs the toolchain via apt-get.
    • macOS (Apple Silicon / Intel): installs the toolchain via Homebrew. AppleClang does not ship with OpenMP, so we pull in llvm + libomp from Homebrew and the Makefile automatically routes the C++ build through $(brew --prefix llvm)/bin/clang++. If you have not installed Homebrew yet, install it first from https://brew.sh.

    After that, follow the C++ or Python installation instructions below.


    C++

    Run the command below. That's it.

    git clone https://github.com/MIT-SPARK/KISS-Matcher.git
    cd KISS-Matcher
    make cppinstall
    

    [!WARNING] If you encounter the following error:

    CMake Error: Not a file: ${your_directory}/KISS-Matcher/cpp/kiss_matcher/build/_deps/robin-build/cmake_install.cmake
    CMake Error: Error processing file: ${your_directory}/KISS-Matcher/cpp/kiss_matcher/build/_deps/robin-build/cmake_install.cmake
    make: *** [Makefile:42: cppinstall] Error 1
    

    it means that the ROBIN package is already installed in your environment. In that case, simply run the following command:

    make cppinstall_matcher_only
    

    The cppinstall command is encapsulated in the Makefile. and cppinstall calls deps to automatically install the dependencies. In addition, KISS-Matcher requires ROBIN. But it's also automatically linked via robin.cmake

    After installation, kiss_matcher and robin are placed in the installation directory using the following commands in the Makefile, respectively: @$(SUDO) cmake --install cpp/kiss_matcher/build @$(SUDO) cmake --install cpp/kiss_matcher/build/_deps/robin-build

    If you invoke cmake directly on macOS instead of going through make cppinstall, point CMake at the Homebrew LLVM toolchain so OpenMP is available:

    LLVM_PREFIX=$(brew --prefix llvm)
    cmake -S cpp/kiss_matcher -B build \
          -DCMAKE_BUILD_TYPE=Release \
          -DCMAKE_C_COMPILER="$LLVM_PREFIX/bin/clang" \
          -DCMAKE_CXX_COMPILER="$LLVM_PREFIX/bin/clang++" \
          -DUSE_SYSTEM_ROBIN=OFF
    cmake --build build -j$(sysctl -n hw.ncpu)
    

    USE_SYSTEM_ROBIN=OFF forces a fresh ROBIN via FetchContent and avoids picking up an older / incompatible system install. On Linux this flag is not required, but it is harmless.

    Example codes

    We provide plentiful scalable registration examples. Please visit our cpp/example directory and follow the instructions.

    How To Use in Other Packages in C++?

    See CMakeLists.txt in cpp/examples.


    Python

    Install from PyPI (Linux x86_64 manylinux_2_28+, macOS 14+ arm64; sdist build elsewhere):

    pip install kiss-matcher           # core only (numpy)
    pip install kiss-matcher[viz]      # adds viser for the visualization demo
    

    Or install editably from a source checkout:

    pip install --upgrade pip setuptools wheel scikit-build-core ninja cmake build
    pip install -e python/
    
    Quickstart

    After installing, run the synthetic-data smoke test (no external data, no viser):

    python python/examples/quickstart.py
    

    It generates 5k random points, applies a known rigid transform, and prints the recovered rotation/translation errors. Expect sub-degree rotation error and sub-centimetre translation error.

    For real point clouds with 3D visualization (requires [viz] extra):

    python python/examples/run_kiss_matcher.py \
        --src_path /path/to/src.pcd \
        --tgt_path /path/to/tgt.pcd \
        --resolution 0.3
    

    We also provide out-of-the-box python registration examples. Go to python directory and follow the instructions.


    Citation

    This study is the culmination of my continuous research since my graduate school years. If you use this library for any academic work, please cite our original paper, and refer to other papers that are highly relevant to KISS-Matcher.

     @inproceedings{lim2025icra-KISSMatcher,
       title={{KISS-Matcher: Fast and Robust Point Cloud Registration Revisited}},
       author={Lim, Hyungtae and Kim, Daebeom and Shin, Gunhee and Shi, Jingnan and Vizzo, Ignacio and Myung, Hyun and Park, Jaesik and Carlone, Luca},
       booktitle={Proc. IEEE Int. Conf. Robot. Automat.},
       year={2025},
       codeurl   = {https://github.com/MIT-SPARK/KISS-Matcher},
       note   = {Accepted. To appear}
     }
    
     @article{Lim24ijrr-Quatropp,
       title={{Quatro++: R}obust global registration exploiting ground segmentation for loop closing in {LiDAR SLAM}},
       author={Lim, Hyungtae and Kim, Beomsoo and Kim, Daebeom and Mason Lee, Eungchang and Myung, Hyun},
       journal={Int. J. Robot. Res.},
       pages={685--715},
       year={2024},
       doi={10.1177/02783649231207654}
     }
    
    @inproceedings{Lim22icra-Quatro,
        title={A single correspondence is enough: Robust global registration to avoid degeneracy in urban environments},
        author={Lim, Hyungtae and Yeon, Suyong and Ryu, Soohyun and Lee, Yonghan and Kim, Youngji and Yun, Jaeseong and Jung, Euigon and Lee, Donghwan and Myung, Hyun},
        booktitle={Proc. IEEE Int. Conf. Robot. Automat.},
        pages={8010--8017},
        year={2022}
    }
    
    @InProceedings{Shi21icra-robin,
        title={{ROBIN:} a Graph-Theoretic Approach to Reject Outliers in Robust Estimation using Invariants},
        author={J. Shi and H. Yang and L. Carlone},
        booktitle={Proc. IEEE Int. Conf. Robot. Automat.},
        note = {arXiv preprint: 2011.03659, \linkToPdf{https://arxiv.org/pdf/2011.03659.pdf}},
        pdf="https://arxiv.org/pdf/2011.03659.pdf",
        year={2021}
    }
    
    @article{Yang20tro-teaser,
        title={{TEASER: Fast and Certifiable Point Cloud Registration}},
        author={H. Yang and J. Shi and L. Carlone},
        journal={IEEE Trans. Robot.},
        volume = 37,
        number = 2,
        pages = {314--333},
        note = {extended arXiv version 2001.07715 \linkToPdf{https://arxiv.org/pdf/2001.07715.pdf}},
        pdf={https://arxiv.org/pdf/2001.07715.pdf},
        Year = {2020}
    }
    
    @inproceedings{Zhou16eccv-FGR,
        title={Fast global registration},
        fullauthor={Zhou, Qian-Yi and Park, Jaesik and Koltun, Vladlen},
        author={Q.Y. Zhou and J. Park and V. Koltun},
        booktitle={Proc. Eur. Conf. Comput. Vis.},
        pages={766--782},
        year={2016}
    }
    

    Contributing

    Like KISS-ICP, we envision KISS-Matcher 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!

    Acknowledgements

    This project was supported by the NRF grant funded by the government of South Korea, Ministry of Science and ICT (MSIT) (No. RS-2024-00461409).

    We sincerely express our gratitude to Prof. Cyrill Stachniss’ group at the University of Bonn for their generosity in allowing us to use the term KISS. In particular, I (Hyungtae Lim) personally deeply appreciate Tizziano Guadagnino, Benedikt Mersch, Louis Wiesmann, and Jens Behley for their kind support and collaboration during my time at the University of Bonn. Without them, KISS-Matcher would not exist today. A special thanks goes to my co-author, Nacho, for taking the time to thoroughly teach me modern C++ and modern CMake. We would also like to express our gratitude to Kenji Koide for his exceptional effort in open-sourcing the wonderful open source, small_gicp, which plays a crucial role in enhancing the efficiency of our pipeline. His dedication to the research community continues to inspire and enable advancements in the field.

    Again, their generosity, expertise, and contributions have greatly enriched our work, and we are truly grateful for their support.