Go2Py_SIM/deploy/ros2_nodes/lidar_node/README.md

162 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Introduction to HesaiLidar_ROS_2.0
This repository includes the ROS Driver for Hesai LiDAR sensor manufactured by Hesai Technology.
Developed based on [HesaiLidar_SDK_2.0](https://github.com/HesaiTechnology/HesaiLidar_SDK_2.0), After launched, the project will monitor UDP packets from Lidar,parse data and publish point cloud frames into ROS topic
## Support Lidar type
- Pandar
- AT128
- QT
- FT120
- XT16/XT32
### Installation dependencies
Install ROS related dependency libraries, please refer to: http://wiki.ros.org
- Ubuntu 16.04 - ROS Kinetic desktop
- Ubuntu 18.04 - ROS Melodic desktop
- Ubuntu 20.04 - ROS Noetic desktop
- Ubuntu 18.04 - ROS2 Dashing desktop
- Ubuntu 20.04 - ROS2 Foxy desktop
- Ubuntu 22.04 - ROS2 Humble desktop
### Install Boost
sudo apt-get update
sudo apt-get install libboost-all-dev
### Install Yaml
sudo apt-get update
sudo apt-get install -y libyaml-cpp-dev
### Clone
```
$ git clone --recurse-submodules https://github.com/HesaiTechnology/HesaiLidar_ROS_2.0.git
```
### Compile and run
- ros1
Create an `src` folder, copy the source code of the ros driver into it, and then run the following command:
catkin_make
source devel/setup.bash
roslaunch hesai_ros_driver start.launch
- ros2
Create an `src` folder, copy the source code of the ros driver into it, and then run the following command:
colcon build --symlink-install
. install/local_setup.bash
For ROS2-Dashing
ros2 launch hesai_ros_driver dashing_start.py
For other ROS2 version
ros2 launch hesai_ros_driver start.py
### Introduction to the configuration file `config.yaml` parameters
lidar:
- driver:
udp_port: 2368 #UDP port of lidar
ptc_port: 9347 #PTC port of lidar
device_ip_address: 192.168.1.201 #IP address of lidar
pcap_path: "<Your PCAP file path>" #The path of pcap file (set during offline playback)
correction_file_path: "<Your correction file path>" #LiDAR angle file, required for offline playback of pcap/packet rosbag
firetimes_path: "<Your firetime file path>" #The path of firetimes file
source_type: 2 #The type of data source, 1: real-time lidar connection, 2: pcap, 3: packet rosbag
pcap_play_synchronization: true #Pcap play rate synchronize with the host time
x: 0 #Calibration parameter
y: 0 #Calibration parameter
z: 0 #Calibration parameter
roll: 0 #Calibration parameter
pitch: 0 #Calibration parameter
yaw: 0 #Calibration parameter
ros:
ros_frame_id: hesai_lidar #Frame id of packet message and point cloud message
ros_recv_packet_topic: /lidar_packets #Topic used to receive lidar packets from ROS
ros_send_packet_topic: /lidar_packets #Topic used to send lidar packets through ROS
ros_send_point_cloud_topic: /lidar_points #Topic used to send point cloud through ROS
send_packet_ros: true #true: Send packets through ROS
send_point_cloud_ros: true #true: Send point cloud through ROS
### Real time playback
Set the `source_type` in the configuration file to `1` and input the correct lidar `udp_port`, `ptc_port` (default 9347, usually unchanged) and `device_ip_address`, then run start.launch.
### Parsing PCAP file
Set the `source_type` in the configuration file to `2` and input the correct lidar `pcap_path` , `correction_file_path` and `firetime_file_path`, then run start.launch.
### Record and playback ROSBAG file
- Record
When playing or parsing PCAP in real-time, set `send_packet_ros` to `true`, start another terminal and enter the following command to record the data packet ROSBAG.
rosbag record ros_send_packet_topic
- Playback
First, replay the recorded rosbag file `test.bag` using the following command.
rosbag play test.bag
Set the `source_type` in the configuration file to `3` and input the correct lidar `correction_file_path` , `firetime_file_path` and `ros_recv_packet_topic`(the topic name of rosbag), then run start.launch.
### Realize multi lidar fusion
According to the configuration of a single lidar, multiple drivers can be created in `config.yaml`, as shown in the following example
lidar:
- driver:
udp_port: 2368
ptc_port: 9347
device_ip_address: 192.168.1.201
pcap_path: "<The PCAP file path>"
correction_file_path: "<The correction file path>"
firetimes_path: "<Your firetime file path>"
source_type: 2
pcap_play_synchronization: true
x: 0
y: 0
z: 0
roll: 0
pitch: 0
yaw: 0
ros:
ros_frame_id: hesai_lidar
ros_recv_packet_topic: /lidar_packets
ros_send_packet_topic: /lidar_packets
ros_send_point_cloud_topic: /lidar_points
send_packet_ros: true
send_point_cloud_ros: true
- driver:
udp_port: 2368
ptc_port: 9347
device_ip_address: 192.168.1.201
pcap_path: "<The PCAP file path>"
correction_file_path: "<The correction file path>"
firetimes_path: "<Your firetime file path>"
source_type: 2
pcap_play_synchronization: true
x: 0
y: 0
z: 0
roll: 0
pitch: 0
yaw: 0
ros:
ros_frame_id: hesai_lidar
ros_recv_packet_topic: /lidar_packets2
ros_send_packet_topic: /lidar_packets2
ros_send_point_cloud_topic: /lidar_points2
send_packet_ros: false
send_point_cloud_ros: true