The C(anonical) Scan Matcher (CSM) is a pure C implementation of a very fast variation of ICP
using a point-to-line metric optimized for range-finder scan matching.
It is robust enough to be used in industrial prototypes of autonomous
mobile robotics, for example at Kuka. CSM is used by a variety of people, though it is hard to keep track because of the open source distribution, especially as packaged in ROS.
If you use this software for something cool, let me know.
Download
Documentation
Please see the manual contained in the file csm_manual.pdf
.
The method is described in the paper:
Andrea Censi.
An ICP variant using a point-to-line metric.
In Proceedings of the IEEE International Conference on Robotics and Automation (ICRA). Pasadena, CA, May 2008.
pdfdoi supp. material slides
bibtex
@inproceedings{censi08plicp,
author = "Censi, Andrea",
doi = "10.1109/ROBOT.2008.4543181",
title = "An {ICP} variant using a point-to-line metric",
url = "http://purl.org/censi/2007/plicp",
booktitle = "Proceedings of the {IEEE} International Conference on Robotics and Automation ({ICRA})",
year = "2008",
month = "May",
slides = "http://purl.org/censi/research/2008-icra-plicp-slides.pdf",
address = "Pasadena, CA",
pdf = "http://purl.org/censi/research/2008-icra-plicp.pdf",
abstract = "This paper describes PLICP, an ICP (Iterative Closest/Corresponding Point) variant that uses a point-to-line metric, and an exact closed-form for minimizing such metric. The resulting algorithm has some interesting properties: it converges quadratically, and in a finite number of steps. The method is validated against vanilla ICP, IDC (Iterative Dual Correspondences), and MbICP (Metric-Based ICP) by reproducing the experiments performed in Minguez et al. (2006). The experiments suggest that PLICP is more precise, and requires less iterations. However, it is less robust to very large initial displacement errors. The last part of the paper is devoted to purely algorithmic optimization of the correspondence search; this allows for significant speed-up of the computation. The source code is available for download."
}
The package also contains two methods for estimating the
uncertainty of scan matching. Those are described in the following papers:
Andrea Censi.
On achievable accuracy for pose tracking.
In Proceedings of the IEEE International Conference on Robotics and Automation (ICRA). Kobe, Japan, May 2009.
pdfdoi supp. material slides
bibtex
@inproceedings{censi09posetracking,
author = "Censi, Andrea",
doi = "10.1109/ROBOT.2009.5152236",
title = "On achievable accuracy for pose tracking",
url = "http://purl.org/censi/2008/posetracking",
booktitle = "Proceedings of the {IEEE} International Conference on Robotics and Automation ({ICRA})",
year = "2009",
month = "May",
slides = "http://purl.org/censi/research/2009-icra-posetracking-slides.pdf",
address = "Kobe, Japan",
pdf = "http://purl.org/censi/research/2009-icra-posetracking.pdf",
abstract = "This paper presents Cramer-Rao bound-like inequalities for pose tracking, which is defined as the problem of recovering the robot displacement given two successive readings of a relative sensor. Computing the exact Fisher Information Matrix (FIM) for pose tracking is hard, because the state comprises the map, which is infinite-dimensional and unknown. This paper shows that the FIM for pose tracking can be bounded by a function of the FIM for localization on a known map, thereby reducing the analysis to a finite-dimensional problem. The resulting bounds are independent of the map prior and representation. The results are valid for any relative sensor; the experimental verification is done for the particular case of pose tracking using range-finders (scan matching)."
}
Andrea Censi.
An accurate closed-form estimate of ICP's covariance.
In Proceedings of the IEEE International Conference on Robotics and Automation (ICRA), 3167–3172. Rome, Italy, April 2007.
pdfdoi supp. material slides
bibtex
@inproceedings{censi07accurate,
author = "Censi, Andrea",
doi = "10.1109/ROBOT.2007.363961",
title = "An accurate closed-form estimate of {ICP}'s covariance",
url = "http://purl.org/censi/2006/icpcov",
year = "2007",
booktitle = "Proceedings of the {IEEE} International Conference on Robotics and Automation ({ICRA})",
issn = "1050-4729",
month = "April",
slides = "http://purl.org/censi/research/2007-icra-icpcov-slides.pdf",
pages = "3167--3172",
address = "Rome, Italy",
pdf = "http://purl.org/censi/research/2007-icra-icpcov.pdf",
abstract = "Existing methods for estimating the covariance of the ICP (Iterative Closest/Corresponding Point) algorithm are either inaccurate or are computationally too expensive to be used online. This paper proposes a new method, based on the analysis of the error function being minimized. It considers that the correspondences are not independent (the same measurement being used in more than one correspondence), and explicitly utilizes the covariance matrix of the measurements, which are not assumed to be independent either. The validity of the approach is verified through extensive simulations: it is more accurate than previous methods and its computational load is negligible. The ill-posedness of the surface matching problem is explicitly tackled for under-constrained situations by performing an observability analysis; in the analyzed cases the method still provides a good estimate of the error projected on the observable manifold."
}
Andrea Censi.
On achievable accuracy for range-finder localization.
In Proceedings of the IEEE International Conference on Robotics and Automation (ICRA), 4170–4175. Rome, Italy, April 2007.
pdfdoi supp. material slides
bibtex
@inproceedings{censi07achievable,
author = "Censi, Andrea",
doi = "10.1109/ROBOT.2007.364120",
title = "On achievable accuracy for range-finder localization",
url = "http://purl.org/censi/2006/accuracy",
year = "2007",
booktitle = "Proceedings of the {IEEE} International Conference on Robotics and Automation ({ICRA})",
issn = "1050-4729",
month = "April",
slides = "http://purl.org/censi/research/2007-icra-accuracy-slides.pdf",
pages = "4170--4175",
address = "Rome, Italy",
pdf = "http://purl.org/censi/research/2007-icra-accuracy.pdf",
abstract = "The covariance of every unbiased estimator is bounded by the Cramer-Rao lower bound, which is the inverse of Fisher's information matrix. This paper shows that, for the case of localization with range-finders, Fisher's matrix is a function of the expected readings and of the orientation of the environment's surfaces at the sensed points. The matrix also offers a mathematically sound way to characterize under- constrained situations as those for which it is singular: in those cases the kernel describes the direction of maximum uncertainty. This paper also introduces a simple model of unstructured environments for which the Cramer-Rao bound is a function of two statistics of the shape of the environment: the average radius and a measure of the irregularity of the surfaces. Although this model is not valid for all environments, it allows for some interesting qualitative considerations. As an experimental validation, this paper reports simulations comparing the bound with the actual performance of the ICP (Iterative Closest/Corresponding Point) algorithm. Finally, it is discussed the difficulty in extending these results to find a lower bound for accuracy in scan matching and SLAM."
}
Design goals
I created this package:
The package contains also a Ruby wrapper for the C library, and additional Ruby and a Matlab implementations of the same algorithm. These are not as usable or documented as the C version.
What it is NOT: Note that this is not a full-featured SLAM solution: this only does pairwise scan-matching between scans (but it's really good at it!).
If you are looking for a more complete SLAM solution, please see the projects listed in the OpenSLAM page; in particular you can have a look at GMapping.
Many pointers to other SLAM software can be found on the pages of the Euron SLAM summer schools:
2002 (Stockholm),
2004 (Toulouse),
2006 (Oxford).
Other related projects are Carmen and Stage.