Exwayz SLAM Fusion algorithm performs online fusion between an input Odometry and GNSS inputs.
Below is the example slam_fusion.yaml configuration file with all parameters open to the user. The comments are the main documentation of each parameters.
slam_fusion:
# [required] Input GNSS settings
gnss:
use_timestamp_sw: false
# [optional, default=0.5(m)] Max tolerated std err on the input GNSS
# measure to input them to solver
max_std_err: 0.05
# [optional] Destination projection CRS. If not set, UTM projection
# will be performed
dst_crs: EPSG:32631
# [required] GNSS input settings
inputs:
# [required] topic name
- topic: navsatfix_topic_0
# [optional, default=100] Subscribe queue size
queue_size: 100
# [optional, default=[0.0, 0.0, 0.0] (m)] position of the antenna
# in the LiDAR frame
lever_arm: [0.0, 0.0, 0.0]
# [optional, default=0.0(s)] time offset of the GNSS compared to
# the LiDAR clock
time_offset: 37.0
- topic_name: navsatfix_topic_1
lever_arm: [0.0, 0.0, 0.0]
time_offset: 37.0
# [optional] Rotation estimation from GNSS inputs
angles_from_gnss:
# [optional, default=false] Enable heading estimation using solely
# the GNSS measures
enable: true
# [required] Angle estimation mode.
# 0: from a single antenna (heading is guessed after
# d_heading_estimation was traveled
# 1: from two antennas. /!\\ the order of the antennas matter, we assume
# that antenna 0 is the left antenna and antenna 1 is the right.
mode: 1
# [optional, default=0.1(m)] Minimum distance between GNSS measurements
# to guess the heading
d_heading_estimation: 0.1
# [optional, default=None] Calibration of the GNSS estimated angles in
# the RF in the LiDAR frame
calib:
euler: [0.0, 0.0, 90.0]
# [required] Solver settings
solver:
# [optional, default=5.0(m)] Standard error given to the GNSS
# measurements
std_err_gnss : 0.2
# [optional, default=30(deg)] Standard error given to the angular
# measurements
std_err_angle: 10.0
# [optional, default=500(m)] Distance from current position beyond
# which measurements are discarded
d_prune: 100.0
# [optional, default=0.500(s)] Maximum time difference between
# successive odometries. If a time difference greater than the threshold
# is detected, the measurement is ignored by the solver.
max_dt_odometry: 0.300
# [optional, default=0.500(s)] Maximum time difference between GNSS
# measurements used for interpolation. If the current measurement is
# being interpolated by two measurements with a time difference greater
# than the threshold, it is ignored
max_dt_gnss_interpolation: 0.500
# [optional, default=50] Maximum number of iterations of the solver
num_iter: 10
# [optional] Output settings
output:
# [optional, default = [0.0, 0.0, 0.0](m)] Output offset, retrieved
# from global output pose
offset: [0.0, 0.0, 0.0]
# [optional] Calibration applied to the output pose
calib:
# [optional, default=[0.0, 0.0, 0.0](m)] Translation
translation: [0.0, 0.0, 0.0]
# [optional, default=[0.0, 0.0, 0.0](rad)] Euler angles [Rx, Ry, Rz]
# (roll, pitch yaw)
euler: [0.0, 0.0, 0.0]
# [optional, default=false] Interprete the angles in degrees
angles_degrees: true
# [required] (ros only) ROS parameters
ros:
# [optional, default=/exwayz/slam_fusion] Output namespace, prepends
# all outputs.
namespace: /exwayz/slam_fusion
# [required] Input Odometry topic
input_odometry:
# [required] Topic name
topic: <topic-name>
# [optional, default=100] Subscribe queue size
queue_size: 100
# [optional, default=true] Enable / disable publishing of debug topics
# (gnss_positions and abs_directions)
publish_debug_topics: true
# [optional] Output Odometry settings
output_odometry:
# [optional, default=/odometry] Output topic
topic: /odometry
# [optional, default=xyz_map] Odometry message header.frame_id
parent_frame_id: xyz_map
# [optional, default=""] Odometry message child_frame_id. If empty,
# input PointCloud2 frame id is used
child_frame_id: slam
# [optional, default=false] Optionally inverts output pose and
# frame_ids
invert: false
# [optional, default=false] Publish parent->child TF using the
# output Odometry
publish_tf: true
# [optional] Output SlamFusionStatus settings
output_status:
# [optional, default=/status]
topic: /status
# [optional] Output projected GNSS position settings
output_gnss_positions:
# [optional, default=/gnss_positions]
topic: /gnss_positions
# [optional] Output absolute direction settings
output_abs_directions:
# [optional, default=/absolute_directions]
topic: /absolute_directions
gnssangles_from_gnsssolveroutputros