Exwayz LiDAR decoder aims at decode LiDAR packets and produce a PointCloud2 message for later process (SLAM, relocalization etc).
Below is the example lidar_decoder.yaml configuration file with all parameters open to the user. The comments are the main documentation of each parameters.
<aside> 💡
We provide multiple examples to show all the configuration with the different vendor we support (Hesai, Ouster, Velodyne, Luminar, Valeo…). Please check the section corresponding to your setup
</aside>
lidar_decoder_hesai:
# [required] LiDAR vendor identifier.
# For each lidar vendor, possible values are (case insensitive):
# * hesai|pandar: Hesai
# * innoviz: InnovizTwo
# * livox|lvx: Livox
# * luminar: Luminar
# * ouster|os: Ouster
# * robosense|rs: Robosense (Since 1.1.0)
# * seyond: Seyond Falcon
# * sick: Sick MultiScan
# * valeo|scala2: Valeo Scala Gen 2
# * velodyne|hdl: Velodyne
vendor: hesai
# [required] Hesai lidar sensor model.
# Possible values are (case sensitive): [Pandar40, Pandar40P, Pandar40M,
# Pandar64, Pandar20A, Pandar20B, PandarQT, PandarXT-32, PandarXT-16,
# PandarXTM, OT128, JT128, JT16, ATX, AT128]
sensor_model: PandarXT-32
# [optional] Path to CSV angle correction file.
angle_correction: <path/to/corrections.csv>
# [optional] Path to lookup table (only for OT128).
lookup_table: <path/to/lookup_table.yaml>
# [optional, default=0.0] Start angle in degrees.
start_angle: 0.0
# [optional, default=true] If set to true, the timestamp of the point_cloud
# output is set to the hardware timestamp of the first point of the LiDAR
# point cloud. If set to false (default value), the timestamp of the
# point_cloud output is set to the software timestamp of the first input
# UDP packet received that composes the current LiDAR point cloud.
output_timestamp_hw: true
# [optional, default=0.0] Offset (can be negative) in seconds added to the
# output point cloud message timestamp if output_timestamp_hw=true
timestamp_hw_offset: 0.0
# [optional] (ros only) ROS parameters
ros:
# [optional, default=/exwayz/lidar_decoder] Output namespace, prepends
# all outputs.
namespace: /exwayz/lidar_decoder
# [required] Input raw UDP packets settings
input_packets:
# [required] Input topic name.
topic: /input/topic
# [optional, default=exwayz_msgs/msg/Packet] (ROS2 only) Input
# topic type. Defines the subscriber type for the input topic.
# You should have these messages built to be able to use them.
# Possible values are: [exwayz_msgs/msg/Packet,
# ouster_msgs/msg/PacketMsg, hesai_ros_driver/msg/UdpFrame,
# velodyne_msgs/msg/VelodyneScan]
type: exwayz_msgs/msg/Packet
# [optional, default=5000] Subscribe queue size
queue_size: 5000
# [optional] Ouptut PointCloud2 settings.
output_pointcloud2:
# [optional, default=/pointcloud2] Output topic
topic: /pointcloud2
# [optional, default=lidar_decoder] Output frame_id.
frame_id: lidar_decoder
# [optional] (rtmaps only) RTMaps parameters
rtmaps:
# [optional, default=5000(Ko)] Point cloud output buffer size
pc_buffer_size: 5000
# [optional, default=true] If false, the output point cloud is output in
# sensor reference frame defined by sensor documentation.
# If true, output point cloud is rotated along z axis to match RTMaps convention.
use_axis_convention: true
lidar_decoder_livox:
vendor: livox
# [optional, default=0.1] Frame accumulation duration in seconds.
frame_duration: 0.1
# [optional, default=false] Set to true if sensor is Mid 70.
mid_70: false
output_timestamp_hw: true
timestamp_hw_offset: 0.0
ros:
namespace: /exwayz/lidar_decoder
input_packets:
topic: /input/topic
type: exwayz_msgs/msg/Packet
queue_size: 5000
output_pointcloud2:
topic: /pointcloud2
frame_id: lidar_decoder
rtmaps:
pc_buffer_size: 5000
use_axis_convention: true
lidar_decoder_luminar:
vendor: luminar
# [optional, default=true] Remove points albaled as artifacts.
filter_artifacts: true
output_timestamp_hw: true
timestamp_hw_offset: 0.0
ros:
namespace: /exwayz/lidar_decoder
input_packets:
topic: /input/topic
type: exwayz_msgs/msg/Packet
queue_size: 5000
output_pointcloud2:
topic: /pointcloud2
frame_id: lidar_decoder
rtmaps:
pc_buffer_size: 5000
use_axis_convention: true
lidar_decoder_ouster:
vendor: ouster
# [required] Path to JSON meta data file or to directory than contains a
# .json ouster metadata file.
metadata: <path-to-meta-file.json>
# [optional, default=1] Use this parameter to apply row subsampling to the
# output point cloud.
row_stride: 1
# [optional, default=1] Use this parameter to apply column subsampling to
# the output point cloud.
col_stride: 1
output_timestamp_hw: true
timestamp_hw_offset: 0.0
ros:
namespace: /exwayz/lidar_decoder
input_packets:
topic: /input/topic
type: exwayz_msgs/msg/Packet
queue_size: 5000
output_pointcloud2:
topic: /pointcloud2
frame_id: lidar_decoder
rtmaps:
pc_buffer_size: 5000
use_axis_convention: true
# (Since 1.1.0)
lidar_decoder_robosense:
vendor: robosense
output_timestamp_hw: true
timestamp_hw_offset: 0.0
ros:
namespace: /exwayz/lidar_decoder
input_packets:
topic: /input/topic
type: exwayz_msgs/msg/Packet
queue_size: 5000
output_pointcloud2:
topic: /pointcloud2
frame_id: lidar_decoder
rtmaps:
pc_buffer_size: 5000
use_axis_convention: true
lidar_decoder_valeo_scala2:
vendor: valeo
# [optional, defualt=0] Output point cloud type:
# 0: High TDC threshold (less range, less noise)
# 1: Low TDC threshold (more range, more noise)
output_pc_type: 0
# [optional, default=2] Number of consecutive accumulated point clouds.
num_accum: 2
output_timestamp_hw: true
timestamp_hw_offset: 0.0
ros:
namespace: /exwayz/lidar_decoder
input_packets:
topic: /input/topic
type: exwayz_msgs/msg/Packet
queue_size: 5000
output_pointcloud2:
topic: /pointcloud2
frame_id: lidar_decoder
rtmaps:
pc_buffer_size: 5000
use_axis_convention: true
lidar_decoder_velodyne:
vendor: velodyne
# [optional, default=true] Remove points labeled as artifacts.
filter_artifacts: true
# [optional, default=1] Number of consecutive accumulated point clouds.
num_accum: 1
output_timestamp_hw: true
timestamp_hw_offset: 0.0
ros:
namespace: /exwayz/lidar_decoder
input_packets:
topic: /input/topic
type: exwayz_msgs/msg/Packet
queue_size: 5000
output_pointcloud2:
topic: /pointcloud2
frame_id: lidar_decoder
rtmaps:
pc_buffer_size: 5000
use_axis_convention: true
vendoroutput_timestamp_hwtimestamp_hw_offsetrosrtmaps