TEASER-plusplus

MIT-SPARKMIT更新放缓

快速且鲁棒的点云配准 C++ 库,支持 3D 重建、SLAM 和机器人场景下的点云对齐,能在大量外点下稳定求解配准。

A fast and robust point cloud registration library

v2.0发布于 2020-08-12 15:24 UTC2,367star415fork同步于 2026-11-07 07:32 UTC

怎么上手

由 README 提炼,执行前请确认
sudo apt install cmake libeigen3-dev libboost-all-dev
git clone https://github.com/MIT-SPARK/TEASER-plusplus.git
cd TEASER-plusplus && mkdir build && cd build
cmake .. && make
sudo make install
sudo ldconfig
硬件要求按 README 说明

README 未说明 GPU 或显存要求,示例均在 CPU 上编译运行

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

项目说明

由 README 自动翻译提炼

MIT 开源的三维点云配准库,能在海量外点下稳健求解刚体变换

快速且鲁棒的点云配准 C++ 库,支持 3D 重建、SLAM 和机器人场景下的点云对齐,能在大量外点下稳定求解配准。

核心能力

  • 用最大团内点筛选剔除极端外点
  • 求解三维刚体变换并给出可认证的全局最优性
  • 提供 C++ 核心库及 Python、MATLAB 绑定
  • 支持 ROS 项目集成
  • 示例中 1889 对对应含 1700 个外点仍能配准

容易踩的坑

Python 示例依赖 Anaconda,并需单独安装 open3d=0.9.0.0;安装后需执行 sudo ldconfig 才能找到库;Python 示例指定 python=3.6 环境

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

最近发版

2 个版本v2.0
  1. v2.0Release v2.0最新正式版2020-08-12 · 2020-08-12 15:24 UTC

    This release adds the following:

    • Certification in C++
    • Adds readthedocs documentation
    • Various bug fixes
  2. v1.0Release v1.02020-04-07 · 2020-04-07 03:09 UTC
    查看更新说明

    Releasing TEASER-plusplus with documentation and examples

用户点评

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

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

    README 原文

    未翻译

    TEASER++: fast & certifiable 3D registration

    License: MIT Documentation Status

    TEASER++ 3DSmooth

    TEASER++ is a fast and certifiably-robust point cloud registration library written in C++, with Python and MATLAB bindings.

    About

    Left: correspondences generated by 3DSmoothNet (green and red lines represent the inlier and outlier correspondences according to the ground truth respectively). Right: alignment estimated by TEASER++ (green dots represent inliers found by TEASER++).

    TEASER++ can solve the rigid body transformation problem between two point clouds in 3D. It performs well even if the input correspondences have an extremely large number of outliers. For a short conceptual introduction, check out our video. For more information, please refer to our papers:

    If you find this library helpful or use it in your projects, please cite:

    @article{Yang20tro-teaser,
      title={{TEASER: Fast and Certifiable Point Cloud Registration}},
      author={H. Yang and J. Shi and L. Carlone},
      journal={{IEEE} Trans. Robotics},
      pdf={https://arxiv.org/pdf/2001.07715.pdf},
      Year = {2020} 
    }
    

    If you are interested in more works from us, please visit our lab page here.

    TL;DR

    Minimal C++ example

    Run the following script to show a minimal C++ example:

    sudo apt install cmake libeigen3-dev libboost-all-dev
    git clone https://github.com/MIT-SPARK/TEASER-plusplus.git
    cd TEASER-plusplus && mkdir build && cd build
    cmake .. && make
    sudo make install
    sudo ldconfig
    cd .. && cd examples/teaser_cpp_ply && mkdir build && cd build
    cmake .. && make
    ./teaser_cpp_ply
    

    You should see terminal output like this:

    	Read 1889 total vertices 
    *** [pmc heuristic: thread 1]   current max clique = 577,  time = 0.00163579 sec
    ...
    *** [pmc: thread 2]   current max clique = 602,  time = 0.44515 sec
    -----------------------------------------------------------------------
    =====================================
              TEASER++ Results           
    =====================================
    Expected rotation: 
      0.996927  0.0668736 -0.0406664
     -0.066129   0.997618  0.0194009
     0.0418676 -0.0166518   0.998978
    Estimated rotation: 
      0.996658  0.0729647  0.0367288
    -0.0740469   0.996832  0.0290182
    -0.0344951 -0.0316408   0.998904
    Error (deg): 0.0783556
    
    Expected translation: 
     -0.115577
    -0.0387705
      0.114875
    Estimated translation: 
     -0.116132
    -0.0390858
       0.11729
    Error (m): 0.00249818
    
    Number of correspondences: 1889
    Number of outliers: 1700
    Time taken (s): 0.786677
    

    Minimal C++ example for MacOS with brew:

    Run the following script to show a minimal C++ example:

    brew install cmake
    brew install boost
    brew install eigen
    git clone https://github.com/MIT-SPARK/TEASER-plusplus.git
    cd TEASER-plusplus && mkdir build && cd build
    cmake .. && make
    sudo make install
    cd .. && cd examples/teaser_cpp_ply && mkdir build && cd build
    cmake .. && make
    ./teaser_cpp_ply
    

    Minimal Python 3 example

    Run the following script to show a minimal Python 3 example (needs Anaconda installed):

    sudo apt install cmake libeigen3-dev libboost-all-dev
    conda create -n teaser_test python=3.6 numpy
    conda activate teaser_test
    conda install -c open3d-admin open3d=0.9.0.0
    
    git clone https://github.com/MIT-SPARK/TEASER-plusplus.git
    cd TEASER-plusplus
    pip install .
    cd examples/teaser_python_ply
    python teaser_python_ply.py
    

    You should see output similar to this:

    ==================================================
            TEASER++ Python registration example      
    ==================================================
    *** [pmc heuristic: thread 1]   current max clique = 563,  time = 0.00185895 sec
    ...
    *** [pmc: thread 2]   current max clique = 605,  time = 0.618481 sec
    -----------------------------------------------------------------------
    =====================================
              TEASER++ Results           
    =====================================
    Expected rotation: 
    [[ 0.99692656  0.06687358 -0.04066644]
     [-0.06612899  0.99761788  0.01940087]
     [ 0.04186755 -0.01665178  0.99897777]]
    Estimated rotation: 
    [[ 9.96883589e-01  7.88648224e-02 -1.85738207e-03]
     [-7.88858464e-02  9.96487579e-01 -2.80985536e-02]
     [-3.65129272e-04  2.81575081e-02  9.99603432e-01]]
    Error (deg): 
    0.06284342361637997
    Expected translation: 
    [-0.11557694 -0.03877054  0.11487489]
    Estimated translation: 
    [-0.11652176 -0.0373522   0.111885  ]
    Error (m): 
    0.0034414811018018978
    Number of correspondences:  1889
    Number of outliers:  1700
    Time taken (s):  0.9492652416229248
    

    Reproduce the GIF Above

    Run the following script:

    sudo apt install cmake libeigen3-dev libboost-all-dev
    conda create -n teaser_3dsmooth python=3.6 numpy
    conda activate teaser_3dsmooth
    conda install -c open3d-admin open3d=0.9.0.0
    conda install scikit-learn
    
    git clone https://github.com/MIT-SPARK/TEASER-plusplus.git
    cd TEASER-plusplus
    pip install .
    
    cd examples/teaser_python_3dsmooth
    python teaser_python_3dsmooth.py
    

    You should be able to see Open3D windows showing registration results:

    TEASER++ 3DSmooth

    Getting Started

    Other Publications

    Other publications related to TEASER include:

    • H. Yang and L. Carlone, “A quaternion-based certifiably optimal solution to the Wahba problem with outliers,” in Proceedings of the IEEE International Conference on Computer Vision (ICCV), 2019, pp. 1665–1674. (pdf)
    • H. Yang, P. Antonante, V. Tzoumas, and L. Carlone, “Graduated Non-Convexity for Robust Spatial Perception: From Non-Minimal Solvers to Global Outlier Rejection,” IEEE Robotics and Automation Letters (RA-L), 2020. (pdf)

    Acknowledgements

    This work was partially funded by ARL DCIST CRA W911NF-17-2-0181, ONR RAIDER N00014-18-1-2828, Lincoln Laboratory “Resilient Perception in Degraded Environments”, and the Google Daydream Research Program.