Skip to content


Subversion checkout URL

You can clone with
Download ZIP
An "Iterative Closest Point" library for 2-D/3-D mapping in robotic
C++ CMake C

Documentation and Tutorials

libpointmatcher is a modular ICP library, useful for robotics and computer vision.

Quick link for the tutorial pages: Tutorials.

Those tutorials are written using Markdown syntax and stored in the project's /doc folder. Their scope ranges from introductory material on performing point cloud registration to instructions for the more experienced developer on how to extend the library's codebase.

Libpointmatcher's source code is fully documented based on doxygen to provide an easy API to developers. An example of this API can be found here, but it is suggested to use the one build for your version in doc/html.

libpointmatcher depends on:

  • Eigen version 3, a modern C++ matrix and linear-algebra library,
  • libnabo version 1.0.1, a fast K Nearest Neighbour library for low-dimensional spaces.
  • Doxygen, a documentation-generation tool (optional)

and was compiled on:

libpointmatcher is being developed by François Pomerleau and Stéphane Magnenat as part of our work at ASL-ETH.

You can read the latest changes in the release notes.

Pre-built binaries


It's better to compile from the sources, but binaries for Ubuntu Linux are available on our PPA:

Once you have added the PPA to your system, you can install libpointmatcher using

sudo apt-get install libpointmatcher-dev


If you have built binaries for other systems, please tell us.


If your operating system does not provide it, you must get Eigen. It only needs to be downloaded and extracted. libnabo must be downloaded and installed, please follow the libnabo's documentation to do so.

Compilation & Installation

For beginner users who are not familiar with compiling and installing a library in Linux, go here for detailed instructions on how to compile libpointmatcher from the source code. If you are comfortable with Linux and CMake and have already installed the prerequisites above, the following commands should install libpointmatcher on your system.

mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
sudo make install


Libpointmatcher ships with a version of the Google testing framework GTest. Unit tests are located in utest/ and are compiled with libpointmatcher. To run the tests and make sure that your compiled version is working correctly, run the test executable in your build directory:

cd build
utest/utest --path ../examples/data/

Bug reporting

Please use github's issue tracker to report bugs.


If you use libpointmatcher in an academic context, please cite the following publication:

    author = {Pomerleau, Fran{\c c}ois and Colas, Francis and Siegwart, Roland and Magnenat, St{\'e}phane},
    title = {{Comparing ICP Variants on Real-World Data Sets}},
    journal = {Autonomous Robots},
    year = {2013},
    volume = {34},
    number = {3},
    pages = {133--148},
    month = feb


    author = {Fran{\c c}ois Pomerleau and St{\'e}phane Magnenat and Francis Colas and Ming Liu and Roland Siegwart},
    title = {Tracking a Depth Camera: Parameter Exploration for Fast ICP},
    booktitle = {Proc. of the IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
    publisher = {IEEE Press},
    pages = {3824--3829},
    year = {2011}

Extra Reading

If you are interested in learning more about different registration algorithms, we recently put together a literature review surveying multiple solutions. The review is organized in the same way as the library and many examples are provided based on real deployments.

F. Pomerleau, F. Colas and R. Siegwart (2015), "A Review of Point Cloud Registration Algorithms for Mobile Robotics", Foundations and Trends® in Robotics: Vol. 4: No. 1, pp 1-104.

If you don't have access to the journal, you can download it from here.

Projects and Partners

If you are using libpointmatcher in your project and you would like to have it listed here, please contact François Pomerleau or Stéphane Magnenat.

For a larger list of work realized with libpointmatcher, please see the page Applications And Publications.


libpointmatcher is released under a permissive BSD license.

Something went wrong with that request. Please try again.