{"id":15036476,"url":"https://github.com/mit-spark/teaser-plusplus","last_synced_at":"2025-05-15T09:06:02.815Z","repository":{"id":38372754,"uuid":"235250047","full_name":"MIT-SPARK/TEASER-plusplus","owner":"MIT-SPARK","description":"A fast and robust point cloud registration library","archived":false,"fork":false,"pushed_at":"2025-05-12T13:37:08.000Z","size":30999,"stargazers_count":1946,"open_issues_count":33,"forks_count":357,"subscribers_count":48,"default_branch":"master","last_synced_at":"2025-05-15T09:06:00.760Z","etag":null,"topics":["3d-reconstruction","3d-registration","optimization","point-clouds","robotics","slam"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MIT-SPARK.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-01-21T03:43:04.000Z","updated_at":"2025-05-13T14:10:03.000Z","dependencies_parsed_at":"2024-05-05T22:39:53.174Z","dependency_job_id":"b26f8a8d-c94c-470e-940d-c1155e703290","html_url":"https://github.com/MIT-SPARK/TEASER-plusplus","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MIT-SPARK%2FTEASER-plusplus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MIT-SPARK%2FTEASER-plusplus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MIT-SPARK%2FTEASER-plusplus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MIT-SPARK%2FTEASER-plusplus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MIT-SPARK","download_url":"https://codeload.github.com/MIT-SPARK/TEASER-plusplus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254310513,"owners_count":22049468,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d-reconstruction","3d-registration","optimization","point-clouds","robotics","slam"],"created_at":"2024-09-24T20:31:17.235Z","updated_at":"2025-05-15T09:06:02.785Z","avatar_url":"https://github.com/MIT-SPARK.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TEASER++: fast \u0026 certifiable 3D registration \n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Documentation Status](https://readthedocs.org/projects/teaser/badge/?version=latest)](https://teaser.readthedocs.io/en/latest/?badge=latest)\n[\u003cimg src=\"https://github.com/MIT-SPARK/TEASER-plusplus/workflows/build/badge.svg\"\u003e](https://github.com/MIT-SPARK/TEASER-plusplus/actions)\n\n![TEASER++ 3DSmooth](examples/teaser_python_3dsmooth/3dsmooth_example.gif)\n\nTEASER++ is a fast and certifiably-robust point cloud registration library written in C++, with Python and MATLAB bindings.\n\n## About\n![](doc/banner.png)\n*Left: correspondences generated by [3DSmoothNet](https://github.com/zgojcic/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++).*\n\nTEASER++ 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](https://www.youtube.com/watch?v=xib1RSUoeeQ). For more information, please refer to our papers:\n- [H. Yang](http://hankyang.mit.edu/), [J. Shi](http://jingnanshi.com/), and [L. Carlone](http://lucacarlone.mit.edu/), \"TEASER: Fast and Certifiable Point Cloud Registration,\". [arXiv:2001.07715](https://arxiv.org/abs/2001.07715) [cs, math], Jan. 2020. ([pdf](https://arxiv.org/pdf/2001.07715.pdf))\n- [H. Yang](http://hankyang.mit.edu/) and [L. Carlone](http://lucacarlone.mit.edu/), “A Polynomial-time Solution for Robust Registration with Extreme Outlier Rates,” in Robotics: Science and Systems (RSS), 2019. ([pdf](https://arxiv.org/pdf/1903.08588.pdf))\n\nIf you find this library helpful or use it in your projects, please cite:\n```bibtex\n@article{Yang20tro-teaser,\n  title={{TEASER: Fast and Certifiable Point Cloud Registration}},\n  author={H. Yang and J. Shi and L. Carlone},\n  journal={{IEEE} Trans. Robotics},\n  pdf={https://arxiv.org/pdf/2001.07715.pdf},\n  Year = {2020} \n}\n```\n\nIf you are interested in more works from us, please visit our lab page [here](http://web.mit.edu/sparklab/).\n\n## TL;DR\n### Minimal C++ example\nRun the following script to show a minimal C++ example:\n```shell script\nsudo apt install cmake libeigen3-dev libboost-all-dev\ngit clone https://github.com/MIT-SPARK/TEASER-plusplus.git\ncd TEASER-plusplus \u0026\u0026 mkdir build \u0026\u0026 cd build\ncmake .. \u0026\u0026 make\nsudo make install\nsudo ldconfig\ncd .. \u0026\u0026 cd examples/teaser_cpp_ply \u0026\u0026 mkdir build \u0026\u0026 cd build\ncmake .. \u0026\u0026 make\n./teaser_cpp_ply\n```\nYou should see terminal output like this:\n```shell script\n\tRead 1889 total vertices \n*** [pmc heuristic: thread 1]   current max clique = 577,  time = 0.00163579 sec\n...\n*** [pmc: thread 2]   current max clique = 602,  time = 0.44515 sec\n-----------------------------------------------------------------------\n=====================================\n          TEASER++ Results           \n=====================================\nExpected rotation: \n  0.996927  0.0668736 -0.0406664\n -0.066129   0.997618  0.0194009\n 0.0418676 -0.0166518   0.998978\nEstimated rotation: \n  0.996658  0.0729647  0.0367288\n-0.0740469   0.996832  0.0290182\n-0.0344951 -0.0316408   0.998904\nError (deg): 0.0783556\n\nExpected translation: \n -0.115577\n-0.0387705\n  0.114875\nEstimated translation: \n -0.116132\n-0.0390858\n   0.11729\nError (m): 0.00249818\n\nNumber of correspondences: 1889\nNumber of outliers: 1700\nTime taken (s): 0.786677\n```\n### Minimal C++ example for MacOS with brew:\nRun the following script to show a minimal C++ example:\n```shell script\nbrew install cmake\nbrew install boost\nbrew install eigen\ngit clone https://github.com/MIT-SPARK/TEASER-plusplus.git\ncd TEASER-plusplus \u0026\u0026 mkdir build \u0026\u0026 cd build\ncmake .. \u0026\u0026 make\nsudo make install\ncd .. \u0026\u0026 cd examples/teaser_cpp_ply \u0026\u0026 mkdir build \u0026\u0026 cd build\ncmake .. \u0026\u0026 make\n./teaser_cpp_ply\n```\n### Minimal Python 3 example\nRun the following script to show a minimal Python 3 example (needs Anaconda installed):\n```shell script\nsudo apt install cmake libeigen3-dev libboost-all-dev\nconda create -n teaser_test python=3.6 numpy\nconda activate teaser_test\nconda install -c open3d-admin open3d=0.9.0.0\ngit clone https://github.com/MIT-SPARK/TEASER-plusplus.git\ncd TEASER-plusplus \u0026\u0026 mkdir build \u0026\u0026 cd build\ncmake -DTEASERPP_PYTHON_VERSION=3.6 .. \u0026\u0026 make teaserpp_python\ncd python \u0026\u0026 pip install .\ncd ../.. \u0026\u0026 cd examples/teaser_python_ply \npython teaser_python_ply.py\n```\nYou should see output similar to this:\n```shell script\n==================================================\n        TEASER++ Python registration example      \n==================================================\n*** [pmc heuristic: thread 1]   current max clique = 563,  time = 0.00185895 sec\n...\n*** [pmc: thread 2]   current max clique = 605,  time = 0.618481 sec\n-----------------------------------------------------------------------\n=====================================\n          TEASER++ Results           \n=====================================\nExpected rotation: \n[[ 0.99692656  0.06687358 -0.04066644]\n [-0.06612899  0.99761788  0.01940087]\n [ 0.04186755 -0.01665178  0.99897777]]\nEstimated rotation: \n[[ 9.96883589e-01  7.88648224e-02 -1.85738207e-03]\n [-7.88858464e-02  9.96487579e-01 -2.80985536e-02]\n [-3.65129272e-04  2.81575081e-02  9.99603432e-01]]\nError (deg): \n0.06284342361637997\nExpected translation: \n[-0.11557694 -0.03877054  0.11487489]\nEstimated translation: \n[-0.11652176 -0.0373522   0.111885  ]\nError (m): \n0.0034414811018018978\nNumber of correspondences:  1889\nNumber of outliers:  1700\nTime taken (s):  0.9492652416229248\n```\n\n### Reproduce the GIF Above \nRun the following script:\n```shell script\nsudo apt install cmake libeigen3-dev libboost-all-dev\nconda create -n teaser_3dsmooth python=3.6 numpy\nconda activate teaser_3dsmooth\nconda install -c open3d-admin open3d=0.9.0.0\nconda install scikit-learn \ngit clone https://github.com/MIT-SPARK/TEASER-plusplus.git\ncd TEASER-plusplus \u0026\u0026 mkdir build \u0026\u0026 cd build\ncmake -DTEASERPP_PYTHON_VERSION=3.6 .. \u0026\u0026 make teaserpp_python\ncd python \u0026\u0026 pip install .\ncd ../.. \u0026\u0026 cd examples/teaser_python_3dsmooth\npython teaser_python_3dsmooth.py\n```\nYou should be able to see Open3D windows showing registration results:\n\n![TEASER++ 3DSmooth](examples/teaser_python_3dsmooth/3dsmooth_example.gif)\n\n## Getting Started\n- Installation\n  - [Dependencies](https://teaser.readthedocs.io/en/latest/installation.html#installing-dependencies)\n  - [Compilation](https://teaser.readthedocs.io/en/latest/installation.html#compilation-and-installation)\n  - [Install C++ Libraries](https://teaser.readthedocs.io/en/latest/installation.html#installing-c-libraries-and-headers)\n  - [Install Python Bindings](https://teaser.readthedocs.io/en/latest/installation.html#installing-python-bindings)\n  - [Install MATLAB Bindings](https://teaser.readthedocs.io/en/latest/installation.html#installing-matlab-bindings)\n  - [Run Tests](https://teaser.readthedocs.io/en/latest/installation.html#run-tests)\n- Usage\n  - [In C++](https://teaser.readthedocs.io/en/latest/quickstart.html#usage-in-c-projects)\n  - [In Python](https://teaser.readthedocs.io/en/latest/quickstart.html#usage-in-python-projects)\n  - [In MATLAB](https://teaser.readthedocs.io/en/latest/quickstart.html#usage-in-matlab-projects)\n  - [In ROS](https://teaser.readthedocs.io/en/latest/quickstart.html#usage-in-ros-projects)\n- API Documentation\n  - [C++](https://teaser.readthedocs.io/en/latest/api-cpp.html)\n  - [Python](https://teaser.readthedocs.io/en/latest/api-python.html)\n  - [MATLAB](https://teaser.readthedocs.io/en/latest/api-matlab.html)\n\n## Other Publications\nOther publications related to TEASER include:\n- [H. Yang](http://hankyang.mit.edu/) and [L. Carlone](http://lucacarlone.mit.edu/), “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](https://arxiv.org/pdf/1905.12536.pdf))\n- [H. Yang](http://hankyang.mit.edu/), [P. Antonante](http://www.mit.edu/~antonap/), [V. Tzoumas](https://vasileiostzoumas.com/), and [L. Carlone](http://lucacarlone.mit.edu/), “Graduated Non-Convexity for Robust Spatial Perception: From Non-Minimal Solvers to Global Outlier Rejection,” IEEE Robotics and Automation Letters (RA-L), 2020. ([pdf](https://arxiv.org/pdf/1909.08605))\n\n## Acknowledgements\nThis 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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmit-spark%2Fteaser-plusplus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmit-spark%2Fteaser-plusplus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmit-spark%2Fteaser-plusplus/lists"}