MCPcopy Create free account
hub / github.com/MIT-SPARK/TEASER-plusplus

github.com/MIT-SPARK/TEASER-plusplus @v2.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.0 ↗ · + Follow
228 symbols 562 edges 45 files 88 documented · 39% updated 7mo agov2.0 · 2020-08-12★ 2,31137 open issues

Browse by type

Functions 183 Types & classes 45
What it actually does AI analysis from the code graph — generated when you open this
loading…
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: - H. Yang, J. Shi, and L. Carlone, "TEASER: Fast and Certifiable Point Cloud Registration,". arXiv:2001.07715 [cs, math], Jan. 2020. (pdf) - H. Yang and L. Carlone, “A Polynomial-time Solution for Robust Registration with Extreme Outlier Rates,” in Robotics: Science and Systems (RSS), 2019. (pdf)

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

@article{Yang20arXiv-TEASER,
    title={TEASER: Fast and Certifiable Point Cloud Registration},
    author={Yang, Heng and Shi, Jingnan and Carlone, Luca},
    year={2020},
    eprint={2001.07715},
    archivePrefix={arXiv},
    primaryClass={cs.RO},
    url = {https://github.com/MIT-SPARK/TEASER-plusplus},
    pdf = {https://arxiv.org/abs/2001.07715}
}

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: ```shell script 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 cd .. && cd examples/teaser_cpp_ply && mkdir build && cd build cmake .. && make ./teaser_cpp_ply

You should see terminal output like this:
```shell script
    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 Python 3 example

Run the following script to show a minimal Python 3 example (needs Anaconda installed): ```shell script 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 && mkdir build && cd build cmake -DTEASERPP_PYTHON_VERSION=3.6 .. && make teaserpp_python cd python && pip install . cd ../.. && cd examples/teaser_python_ply python teaser_python_ply.py

You should see output similar to this:
```shell script
==================================================
        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: shell 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 && mkdir build && cd build cmake -DTEASERPP_PYTHON_VERSION=3.6 .. && make teaserpp_python cd python && pip install . cd ../.. && 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.

Core symbols most depended-on inside this repo

Shape

Method 119
Function 64
Class 38
Enum 7

Languages

C++90%
Python10%

Modules by API surface

teaser/include/teaser/registration.h56 symbols
teaser/include/teaser/graph.h19 symbols
teaser/include/teaser/geometry.h12 symbols
test/teaser/certification-test.cc11 symbols
test/benchmark/registration-benchmark.cc10 symbols
teaser/src/certification.cc9 symbols
teaser/src/registration.cc8 symbols
examples/teaser_python_3dsmooth/line_mesh.py8 symbols
test/test-tools/test_utils.h7 symbols
teaser/include/teaser/utils.h7 symbols
teaser/include/teaser/certification.h7 symbols
examples/teaser_python_3dsmooth/teaser_python_3dsmooth.py7 symbols

For agents

$ claude mcp add TEASER-plusplus \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page