Laboratori d'Automatització i Robòtica, Universitat de Lleida
Inicio   Equipo    Publicaciones    TFG/TFM/Tesis    Proyectos    SLAMICP-library    Contacto
SLAMICP Library ( Free and Open Source )
Description of the SLAMICP library
The SLAMICP library is a Free and Open Source library that performs Iterative Closest Point matching focused on mobile robot self-localization and map creation using LIDAR data.

The Iterative Closest Point (ICP) is a matching technique used to determine the transformation matrix that minimizes the distance between point clouds.

Example calls to the SLAMICP library using a MATLAB wrapper ( includded in the library as a precompiled MEX file for Windows®):

>> [ Pi, niter, md, Oindx, Ocoords, tTi, Mi, Ni ] = SLAMICP( Mi-1, Ti, inlierthreshold, method, maxiter, Pi-1, Ni-1, Outlierthreshold );

>> [ Pi ] = SLAMICP( M, Ti, inlierthreshold, method, maxiter, Pi-1, N, Outlierthreshold );

The parameters used in the calls are:
  • M, is the point cloud defining the map of the environment.
  • Ti, is the point cloud defining the i'th LIDAR scan that will be matched with the map M.
  • Mi, is the map updated with the information included in the scan Ti
  • Mi-1, is the map before incorporating the new information included in the scan Ti
  • inlierthreshold, is 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 valid ICP methods are: 'point_to_point' or 'point_to_plane' (faster if the normals N are provided)
  • maxiter, is the maximum number of iterations allowed during the ICP matching
  • P, is the current position and orientation of the mobile robot in the map M expressed as: P = ( x, y, θ )
  • Pi, is the current position of the mobile robot in the map M expressed as: Pi = ( xi, yi, θi )
  • Pi-1, is the initial guess of Pi, it describes the previous position and orientation of the mobile robot updated with the information of the encoders (if available)
  • N, are the normals of the map M (use N = [] if the normals are unknown or not used)
  • Ni, are the normals of the map Mi
  • Ni-1, are the normals of the map Mi-1 (use Ni-1 = [] if the normals are unknown or not used)
  • Outlierthreshold, is the threshold distance applied to the matched points to classify a point of tTi as an outlier (does not affect the ICP matching), default = 0.3 units
  • niter, is the number of iterations performed during ICP matching
  • md, is the mean inlier distance (computed from the distance between the matched (inlier) points)
  • Oindex, are the index of the points of Ti classified as outliers
  • Ocoords, are the coordinates of the outliers expressed in the coordinates of M (transformed outliers)
  • tTi, is the current (i'th) LIDAR scan (Ti) expressed in the coordinates of M (transformed LIDAR scan)
  • Representation of example input ( Mi-1, Ti ) and output ( tTi, Mi ) 2D point clouds:


    Based on the LIBICP
    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.
    Compared 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 available in: https://www.cvlibs.net/software/libicp/

    When compiled, the MATLAB wrapper of the LIBICP library can be called using:

    >> [ Trfit ] = icpMEX( M, Ti, Trinitial_guess, inlierthreshold, method );

    Where Tr = ( R( θ ), t ) is the transformation matrix that must be applied to T to match M.


    ↧  SLAMICP Library V5.1 (optimized for method = 'point_to_plane')

    ↧  PCMerge V1.2 (additional performance function)

    ↧  ComputeNormals V1.2 (additional performance function)


    Additional packages required to compile the SLAMICP and LIBICP library from scratch
  • Boost libraries - Used by the k-d tree search
  • CMake - Requiered to control the software compilation

  • SLAMICP library License
    Free and Open Source. The code of the SLAMICP library is published under the GNU General Public License.

    Authors
    Eduard Clotet & Jordi Palacín

    Application Examples
    • Mobile robot trajectory obtained matching 2D LIDAR data with a 2D Map:


    • Creation of a 2D Map with the SLAMICP library

    • Path Planning for a Multi-story mobile robot: https://youtu.be/IjQ5V-fAVek

    • Multi-story mobile robot navigation based on 2D LIDAR data and a 2D Map: https://youtu.be/q7XyZmrdGHk

    Inicio   Equipo    Publicaciones    TFG/TFM/Tesis    Proyectos    SLAMICP-library    Contacto

    © Laboratori de Robòtica, Universitat de Lleida