Description of the SLAMICP library

The

**SLAMICP** library performs Iterative Closest Point matching focused on mobile robot self-localization and map creation based on

**LIDAR** data.

The Iterative Closest Point (

**ICP**) is a matching technique used to determine the transformation matrix that minimizes the distance between point clouds.

The

**MATLAB** wrapper (includded in the library) that calls the

**ICP** matching procedure implemented in the

**SLAMIPC** library is:

**>>** [

*P*_{i}, niterations, md, O

_{index}, O

_{coords},

*tT*_{i},

*uM* ] = SLAMICP(

*M*,

*T*_{i}, inlier

_{threshold}, method, iterations,

*P*_{i-1}, Outlier

_{threshold} );

The input parameters are:

*M*, the point cloud describing the map of the application scenario or a reference LIDAR scan
*T*_{i}, the current (i'th) LIDAR scan
inlier_{threshold}, the threshold distance applied to the matched points to classify a point as an inlier (used by the **ICP** matching), default = 0.3 units
method, the **ICP** method: 'point_to_point' or 'point_to_plane'
iterations, maximum number of iterations during the **ICP** matching
*P*_{i-1}, the initial guess of *P*_{i}, usually the last known position and orientation of the mobile robot *P*_{i-1} = ( *x*_{i-1}, *y*_{i-1}, *θ*_{i-1} )
Outlier_{threshold}, the threshold distance applied to the matched points to classify a point as an outlier (not used in the **ICP** matching), default = 0.3 units
The parameters returned are:

*P*_{i}, the current position of the mobile robot in *M* expressed as: *P*_{i} = ( *x*_{i}, *y*_{i}, *θ*_{i} )
niterations, the number of iterations of the **ICP** matching
md, the mean inlier distance (computed from the distance between the matched (inlier) points)
O_{index}, the index of the points of *T*_{i} classified as outliers
O_{coords}, the coordinates of the outliers expressed in the coordinates of *M* (transformed outliers)
*tT*_{i}, the current (i'th) LIDAR scan (*T*_{i}) expressed (or transformed) in the coordinates of *M*
*uM*, the updated map combining *M* with (only) the outliers of *tT*_{i} (listed in O_{coords})
Representation of example input (

*M*,

*T* ) and output (

*tT*,

*uM* ) 2D point clouds:

The

**SLAMICP** library is based on the

**LIBICP** (LIBrary for Iterative Closest Point fitting) which is a cross-platfrom C++ library with

**MATLAB** wrappers for fitting 2d or 3d point clouds with respect to each other. Currently it implements the SVD-based point-to-point algorithm as well as the linearized point-to-plane algorithm. It also supports outlier rejection and is accelerated by the use of k-d trees as well as a coarse matching stage using only a subset of all points.

Copared with the

**LIBICP**, the

**SLAMICP** returns the number of iterations, the mean inlier distance, the outliers, the transformed point cloud and the updated map.

The original

**LIBICP** is avialable in:

**https://www.cvlibs.net/software/libicp/**
When compiled, the

**MATLAB** wrapper of the

**LIBICP** library can be called using:

**>>** [

*Tr*_{fit} ] = icpMEX(

*M*,

*T*_{i},

*Tr*_{initial_guess}, inlier

_{threshold}, method );

Where

*Tr* = (

*R*(

*θ* ),

*t* ) is the transformation matrix that must be applied to

*T* to match

*M*.