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.
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