# 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: "" #The path of pcap file (set during offline playback) correction_file_path: "" #LiDAR angle file, required for offline playback of pcap/packet rosbag firetimes_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: "" correction_file_path: "" firetimes_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: "" correction_file_path: "" firetimes_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