Skip to main content
Version: ROS 2 Jazzy

3D Lidar

Three dimensional LiDARs provide a pointcloud of all points detected by several planar scanners at various angles, which is published as a sensor_msgs/PointCloud2 message. It is important to accurately position the LiDAR in the visual description of the robot to ensure that the scanned points are accurate with respect to the robot.

Supported 3D Lidars

Ouster OS1

lidar3d:
- model: ouster_os1
urdf_enabled: true
launch_enabled: true
parent: default_mount
xyz: [0.0, 0.0, 0.0]
rpy: [0.0, 0.0, 0.0]
ros_parameters:
ouster_driver:
sensor_hostname: 192.168.131.20
udp_dest: 192.168.131.100
lidar_port: 7502
imu_port: 7503
proc_mask: IMU|PCL|SCAN|IMG|RAW|TLM
use_system_default_qos: false
cap_type: halo
base_type: base

Package and Setup

Ouster lidars use the ouster_ros driver. This is an open-source driver, maintained by the manufacturer.

For more specifics on the way Clearpath's configuration system launches the ouster_ros nodes, see the Ouster launch file and the default parameter file in clearpath_sensors.

Base & Cap

The Ouster lidar can be configured with different base and cap options:

  • base_type: one of base (default) or none.
  • cap_type: one of halo (default) or fins.

The table below shows all combinations of base and cap options:

cap_type
halofins
base_typebase
none

Seyond Robin W

lidar3d:
- model: seyond_lidar
urdf_enabled: true
launch_enabled: false
parent: default_mount
xyz: [0.2, 0.0, 0.0]
rpy: [0.0, 0.0, 0.0]

Mesh-Only Support

The Seyond Robin W is only supported as a mesh in robot.yaml; it is intended to be managed by Clearpath's OutdoorNav software, which uses its own set of drivers and launch files that do not directly integrate with the robot configuration yaml.

Velodyne Lidar

# Model VLP16
lidar3d:
- model: velodyne_lidar
urdf_enabled: true
launch_enabled: true
parent: base_link
xyz: [0.0, 0.0, 0.0]
rpy: [0.0, 0.0, 0.0]
ros_parameters:
velodyne_driver_node:
frame_id: lidar3d_0_laser
device_ip: 192.168.131.25
port: 2368
model: VLP16
velodyne_transform_node:
model: VLP16
fixed_frame: lidar3d_0_laser
target_frame: lidar3d_0_laser
# Model 32C
lidar3d:
- model: velodyne_lidar
urdf_enabled: true
launch_enabled: true
parent: base_link
xyz: [0.0, 0.0, 0.0]
rpy: [0.0, 0.0, 0.0]
ros_parameters:
velodyne_driver_node:
frame_id: lidar3d_0_laser
device_ip: 192.168.131.25
port: 2368
model: 32C
velodyne_transform_node:
model: 32C
calibration: "/opt/ros/jazzy/share/\
velodyne_pointcloud/params/VeloView-VLP-32C.yaml"
fixed_frame: lidar3d_0_laser
target_frame: lidar3d_0_laser

Package and Setup

The Velodyne LiDARs use the velodyne_driver ROS 2 Package. The driver is open source, maintained by the ROS community, and hosted on GitHub. Unlike other drivers, the visual description of the device is hosted in a separate repository. The description package, along with the simulator, is maintained by Dataspeed and hosted on BitBucket.

For more specifics on the way Clearpath's configuration system launches the velodyne_driver, see the Velodyne launch file and the default parameter file in clearpath_sensors.

Model

There are several types of Velodyne LiDAR. To switch between these, the model parameter must be set under the both the velodyne_driver_node and the velodyne_transform_node, and the calibration parameter must be set under the velodyne_transform_node.

NameModelCalibration
Puck"VLP16""VLP16db.yaml"
Puck Hi-Res"VLP16""VLP16_hires_db.yaml"
Ultra Puck"32C""VeloView-VLP-32C.yaml"
VLS-128"VLS128""VLS128.yaml"
HDL-32E"32E""32db.yaml"
HDL-64E"64E""64e_utexas.yaml"
HDL-64ES2"64E_S2""64e_s2.1-sztaki.yaml"
HDL-64ES3"64E_S3""64e_s3-xiesc.yaml"

When setting the calibration parameter, prepend the path /opt/ros/jazzy/share/velodyne_pointcloud/params/ to the calibration file name in the table above.

Hesai Lidar

lidar3d:
- model: hesai_lidar
urdf_enabled: true
launch_enabled: true
parent: lidar3d_row_link
xyz: [0.0, 0.0, 0.0]
rpy: [0.0, 0.0, 0.0]
ros_parameters:
hesai_driver:
config_path: /path/to/hesai/config/file0.yaml
- model: hesai_lidar
urdf_enabled: true
launch_enabled: true
parent: lidar3d_row_link
xyz: [0.1, 0.1, 0.1]
rpy: [0.0, 0.0, 0.0]
ros_parameters:
hesai_driver:
config_path: /path/to/hesai/config/file1.yaml

Package and Setup

The Hesai LiDAR uses the hesai_ros_driver ROS 2 driver. The driver is open source, maintained by Hesai Technology, and hosted on GitHub - HesaiLidar_ROS_2.0. The hesai_ros_driver nodes depend on the HesaiLidar_SDK_2.0. The hesai_ros_driver ROS2 package and SDK are not installed by ROS dependencies and need to be built against the specific version installed on your computer. Therefore, you will have to install these manually by following the instructions in the HesaiLidar_ROS_2.0 repository.

The hesai_ros_driver only accepts one single ROS parameter which is config_path as shown above. The config_path points to a configuraiton file formated as shown in the HesaiLidar_SDK_2.0 config.yaml.

Each Hesai LiDAR must be listed first under lidar3d in the robot.yaml file and provide a different the config_path. Each Hesai LiDAR must point to a unique config.yaml. For the first Hesai LiDAR listed in the robot.yaml the following parameters in the config.yaml must be modifed as shown:

lidar:
- driver:
...
lidar_udp_type:
device_ip_address: 192.168.131.25
...
multicast_ip_address: 192.168.131.1
...
ros:
ros_frame_id: lidar3d_0_laser
...

Any additional Hesai LiDAR should increment the device_ip_address (first lidar ip = 192.168.131.25, second lidar ip = 192.168.131.26, etc.) along with the ros_frame_id (first lidar frame ID = lidar3d_0_laser, second lidar frame ID = lidar3d_1_laser, etc.) The IP of the physical Hesai LiDAR must be updated as well. See the User Guide for the XT32 Hesai Lidar that can be downloaded here: https://www.cratustech.com/downloads/.

The change of multicast_ip_address should be set according to the Reserved IP Addresses. The value of 192.168.131.1 should be used if the hesai lidar is connected to the Primary Computer.

The user can change any other parameter in the config.yaml based on their own use case.

Model

There are several types of Hesai LiDAR models. Currently only the XT32 is supported.

Mesh-Only Support

The Hesai XT32 Lidar is only supported as a mesh in robot.yaml.