What is libpointmatcher about?
libpointmatcher is a library that implements the Iterative Closest Point (ICP) algorithm for alignment of point clouds. It supports both point-to-point and point-to-plane ICP. With the former, it is able to solve not only for a rigid transform, but also for a scale change between the clouds (that is, a similarity transform).
More precisely, given two point clouds, R (the reference) and S (the source), ICP tries to find the best rigid (or similarity) transform T so that T * S = R.
The Wikipedia article on ICP has more information.
libpointmatcher implements a set of filters to help denoise and subsample the input point clouds. It supports a variety of file types and it can be configured via both YAML files and an in-memory API.
libpointmatcher is written in C++.
Tutorials
This page lists the available tutorials for libpointmatcher. The Beginner section is aimed at the more casual user and contains high-level information on the various steps of point cloud registration. The Advanced section is targeted at those with existing experience with point cloud registration and proficiency in C++ development. Those who wish to contribute to libpointmatcher can follow the guidelines in the Developer section. Finally, the Python section is intended for those who are interested in using libpointmatcher with Python.
Beginner
Advanced
Measuring Hausdorff distance, Haussdorff quantile and mean residual error? See this discussion for code examples.
How to compute the residual error with
ErrorMinimizer::getResidualError(...)
See the example code provided here.How to build a global map from a sequence of scans? See the example align_sequence.cpp.
How to minimize the error with translation, rotation and scale? See this example.
How to do a nearest neighbor search between two point clouds without an ICP object? See the comments here.
How to construct a
DataPoints
from my own point cloud? See the unit test onDatapoints
here.How to link against PCL? See the comments here.
Developer
-
instructions for setting up the
libpointmatcher-build-system
on your workstation to speed up your local developmentbug reporting
code contribution workflow
Commit Message References (Note: this is optional for now but will eventually move our release workflow to semantic-versioning)
Python
Note: if you don’t find what you need, don’t hesitate to propose or participate to new tutorials.