Exwayz Relocalization algorithm takes in input:

Its goal is to register the incoming LiDAR data on the map using a 3D registration algorithm. This registration algorithm needs an initial guess of where the LiDAR is when the process starts. Once initialized, the initialization pose is not used anymore.

For performing this registration, the relocalization follows a 2 steps pipeline:

Pre processing : aims at reducing the number of points provided to the registration algorithm (ICP), mainly discarding troublesome or redundant point on the raw data.

ICP : The ICP (Iterative Closest Point) is the registration algorithm used to compute the relative position of the upcoming frame relatively to the local map being built.

General parameters

Below is a sample Relocalization configuration file with the general parameters, independently from the API used (ROS or RTMaps).

relocalization:
    enable_motion_compensation: true
    # Minimum number of successful consecutive initialization to switch to FIX mode
    min_num_init: 20
    
    
    # Processing parameters
    #--------------------------------------------------------------------------#
    # Preprocessing applied to incoming data
    pre_post_process:
        num_threads: 2

        # row - col subsampling
        num_rows : 32
        num_cols : 512
        keep_strategy : farthest

        # range filtering
        range_min: 2.0
        range_max: 150.0

        # crop
        center: [0.0, 0.0, 0.0]
        size: [5.0, 5.0, 5.0]

        # grid subsampling
        grid_resolution: 0.1
    
    
    # ICP used for initialization parameters
    icp_init:
        num_threads: 2
        num_iter: 5
        d_max: 1.0

    # ICP used for localization
    icp:
        num_threads: 2
        num_iter: 5
        d_max: 0.2

    # Local mapping feature
    local_mapping:
        enable: false
        # Minimum nb of consecutive fix to have before start building the local map
        min_num_fix: 50
        map:
		        # Minimum distance since last map update to trigger a new update : the
		        # smaller, the more often the local map will be updated 
		        d_update: 0.1
		        # All points further than d_prune from the sensor are cleared from the local map
		        d_prune: 120.0
		        # Number of neighbors used to compute map geometrical attributes
		        normals_knn: 30
		        # Loacal map resolution in m
		        resolution: 0.1

    # Map and initialization parameters
    #--------------------------------------------------------------------------#
    map:
        path: "path/to/the/map.map"
        sha1: # optional SHA1 to check the map file specified in 'path' correspondance
        crs: # optional map CRS

    # optional calibration applied to init odometry input
    init:
        # Optional CRS of the input, if it is in a different CRS than the map's
        # crs_src: 
        # Transformation applied to the initialization pose
        calib:
            <3d-pose-yaml-node>

    # Checks to ensure relocalization sanity
    #--------------------------------------------------------------------------#
    checks:
        # Minimum tolerated overlap to the map
        min_overlap: 0.25
        # Maximum tolereated distance to the map (averaged, in m) 
        max_distance_to_map: 0.1
        # Used discard incoming frames that would have too few points (less than input_rejection_ratio * previous_frame)
        input_rejection_ratio: 0.7

    # Output parameters
    #--------------------------------------------------------------------------#
    output:
        # Output point cloud mode
        # 0 : no output pointcloud
        # 1 : process (subsampled) point cloud
        # 2 : full frame
        pc_mode: 1
        # Destination CRS of the output pose. If commented, the output pose is in the CRS of the map
	      # crs_dst: 
        # Transformation applied to the output pose 
        calib:
            <3d-pose-yaml-node>

enable_motion_compensation

This can cause a distortion of the frames, enhanced by high speed or strong dynamics. Exwayz SLAM can compensate for this motion distortion if this option is enabled.

<aside> 💡 The motion compensation can only work if each point is associated to a measurement timestamp.

</aside>

min_num_init : the minimum number of successful initialization to go into “FIX” mode

pre_post_process

icp_init

icp

local_mapping

map

init