目录
- 目录
- 一、硬件连接
- 1.1 硬件接口
- 1.2 数据接口
- 1.3
wireshark
数据包检测
- 二、驱动配置
- 2.1 RS_View上位机
- 2.1.1 下载
- 2.1.2 运行
- 2.1.3 连接激光雷达查看点云
- 2.1.4 激光雷达IP、转速与工控机IP配置
- 2.2 ROS驱动配置
- 2.2.1 安装依赖
- 2.2.2 下载源码
- 2.2.3 编译
- 2.2.3 参数配置
- 2.1 RS_View上位机
- 三、启动运行
一、硬件连接
1.1 硬件接口
硬件连接图如下图所示,16线激光雷达的额定功率是12W,因此电流必须满足,否则电机转速不足,激光雷达的点云频率会降低。
1.2 数据接口
速腾的16线和32线激光雷达的网口速率都是100Mbps,因此如果配备交换机,最好配备交换机的网口速率为100Mbps,否则会导致点云频率降低。
如果有多个激光雷达,则最好配千兆交换机,否则可能导致点云频率降低。
1.3 wireshark
数据包检测
速腾官方推荐使用wireshark
进行抓包测试,检测数据包的正确性。
wireshark安装与启动
sudo apt-get install wireshark
sudo wireshark
wireshark使用
(1) 打开激光雷达网口
找到激光雷达连接的网口id,双击。示例中网口为enp1s0
,网口id右侧的曲线代表数据波动,如果一直是一条直线,代表没有数据传输。
(2) 查询数据包信息
此处主要查看
- 激光雷达的IP地址,端口
- 点云发送目的地的IP地址和端口
robosense16出厂默认ip地址是192.168.1.200,工控机默认IP为192.168.1.102。
工控机如果改为其它IP地址,则启动驱动程序后无法接收到点云。
从下面数据流可以看出,雷达的IP是192.168.1.200,工控机的静态IP是192.168.1.102,端口分别是6699、7788,均为默认设置。
二、驱动配置
2.1 RS_View上位机
2.1.1 下载
RS_View是速腾聚创的官方上位机,可以在官网下载,下载地址->软件->RS-LiDAR-16 RSView V3.1.2 for Ubuntu
:
https://www.robosense.ai/resources-27
2.1.2 运行
软件下载完成后,进入目录RSView_ubu18_BP_v3.1.12_32multicast/RSView_ubu18_v3.1.12_32multicast
运行
./run_rsview.sh
若无法运行,给执行权限
sudo chmod +x run_rsview.sh
2.1.3 连接激光雷达查看点云
上位机界面如下图
单击雷达图标
参数设置:Calibration和Type(激光雷达种类)选择RS16,Intensity选择model3(彩色点云)
查看点云
若RSView软件看不到点云
通过
wireshark
检查下雷达的IP和端口ifconfig
检查下工控机的IP是否是激光雷达数据发送的destination的IP地址
2.1.4 激光雷达IP、转速与工控机IP配置
RSView上位机->Tools->RS-LIDAR Information
选择RS-LIDAR Information
点击Get
,获取激光雷达信息,PC IP即为工控机IP
根据需求修改激光雷达IP和转速(300/600/1200rpm:5/10/20Hz)等参数,点击Set LIDAR
,设置激光雷达参数
2.2 ROS驱动配置
2.2.1 安装依赖
sudo apt-get install -y libpcap-dev
2.2.2 下载源码
git clone https://github.com/RoboSense-LiDAR/rslidar_sdk.git
cd rslidar_sdk
git submodule init
git submodule update
2.2.3 编译
(1) 打开工程内的CMakeLists.txt
文件,将文件顶部的set(COMPILE_METHOD ORIGINAL)
改为set(COMPILE_METHOD CATKIN)
。
#=======================================
# Compile setup (ORIGINAL,CATKIN,COLCON)
#=======================================
set(COMPILE_METHOD CATKIN)
(2) 将rslidar_sdk
工程目录下的package_ros1.xml
名称改为package.xml
。
(3) 新建一个文件夹作为工作空间,然后再新建一个名为src的文件夹, 将rslidar_sdk工程放入src文件夹内。
(4) 返回工作空间目录,执行以下命令即可编译&运行。
catkin_make
source devel/setup.bash
roslaunch rslidar_sdk start.launch
注意:速腾聚创github上有官方配置教程可以参考。
2.2.3 参数配置
驱动的配置文件为config.yaml
, 储存于rslidar_sdk/config
文件夹内。
整个参数文件可以被分为两部分,common
部分以及lidar
部分。
在多雷达情况下,common
部分的参数设置将会被所有雷达共享,而lidar
部分需要根据每台雷达实际情况分别进行设置。
参数文件config.yaml
对缩进有严格的要求!请确保修改参数之后每行开头的缩进仍保持一致!
(1) common
此部分用于设置雷达的消息来源,以及是否将结果发布。
common:
msg_source: 1
send_packet_ros: false
send_point_cloud_ros: false
send_packet_proto: false
send_point_cloud_proto: false
pcap_path: /home/robosense/lidar.pcap
-
msg_source
1
-- 连接在线雷达. 更多使用细节请参考在线读取雷达数据发送到ROS。2
-- 离线解析ROS或ROS2的packet包。更多使用细节请参考 录制ROS数据包&离线解析ROS数据包。3
-- 离线解析pcap包。更多使用细节请参考离线解析Pcap包发送到ROS。4
-- 雷达消息来源为Protobuf-UDP的packet消息,更多使用细节请参考 使用Protobuf发送&接收。5
-- 雷达消息来源为Protobuf-UDP的点云消息,更多使用细节请参考 使用Protobuf发送&接收。
-
send_packet_ros
-
true
-- 雷达packet消息将通过ROS或ROS2发出由于雷达ROS packet消息为速腾聚创自定义ROS消息,因此用户无法直接echo话题查看消息具体内容。实际上packet主要用于录制离线ROS包,因为packet的体积小于点云。
-
-
send_point_cloud_ros
-
true
-- 雷达点云消息将通过ROS或ROS2发出
点云消息类型为ROS官方定义的点云类型sensor_msgs/PointCloud2, 因此用户可以直接使用Rviz查看点云。同时,用户也可以选择录包时直接录制点云,但这样做包的体积会非常大,因此我们建议离线录制ROS包时录制packet消息。
-
-
send_packet_proto
-
true
-- 雷达packet消息将通过Protobuf-UDP发出
-
-
send_point_cloud_proto
-
true
-- 雷达点云消息将通过Protobuf-UDP发出
我们建议发送packet消息而不是点云,因为点云消息体积过大,对带宽有较高的要求。.
-
-
pcap_path
如果msg_source = 3, 请确保此参数设置为正确的pcap包的路径。
(2) lidar
本部分需要根据不同的雷达进行设置(多雷达时)。
lidar:
- driver:
lidar_type: RS128
frame_id: /rslidar
msop_port: 6699
difop_port: 7788
start_angle: 0
end_angle: 360
min_distance: 0.2
max_distance: 200
use_lidar_clock: false
ros:
ros_recv_packet_topic: /rslidar_packets
ros_send_packet_topic: /rslidar_packets
ros_send_point_cloud_topic: /rslidar_points
proto:
point_cloud_recv_port: 60021
point_cloud_send_port: 60021
msop_recv_port: 60022
msop_send_port: 60022
difop_recv_port: 60023
difop_send_port: 60023
point_cloud_send_ip: 127.0.0.1
packet_send_ip: 127.0.0.1
-
lidar_type
目前支持的雷达型号已在README中列出。
-
frame_id
点云消息的frame_id。
-
msop_port
,difop_port
点云的msop端口号和difop端口号。 若收不到消息,请优先确认这两个参数是否配置正确。
-
start_angle
,end_angle
点云消息的起始角度和结束角度,此处设置为软件屏蔽,无法减小每帧点云的体积,只会将区域外的点设置为NAN点。 起始角和结束角的范围应在0~360°之间。(起始角可以大于结束角).
-
min_distance
,max_distance
点云的最小距离和最大距离,此处设置为软件屏蔽,无法减小每帧点云的体积,只会将区域外的点设置为NAN点。
-
use_lidar_clock
-
true
-- 使用雷达时间作为消息时间戳。 -
false
-- 使用系统时间作为消息时间戳。
-
(3) 示例
在线连接一台雷达,并发送点云到ROS。
common:
msg_source: 1
send_packet_ros: false
send_point_cloud_ros: true
send_packet_proto: false
send_point_cloud_proto: false
pcap_path: /home/robosense/lidar.pcap
lidar:
- driver:
lidar_type: RS128
frame_id: /rslidar
msop_port: 6699
difop_port: 7788
start_angle: 0
end_angle: 360
min_distance: 0.2
max_distance: 200
use_lidar_clock: false
ros:
ros_recv_packet_topic: /rslidar_packets
ros_send_packet_topic: /rslidar_packets
ros_send_point_cloud_topic: /rslidar_points
proto:
point_cloud_recv_port: 60021
point_cloud_send_port: 60021
msop_recv_port: 60022
msop_send_port: 60022
difop_recv_port: 60023
difop_send_port: 60023
point_cloud_send_ip: 127.0.0.1
packet_send_ip: 127.0.0.1
在线连接3台雷达,并发送点云到ROS。
注意lidar部分参数的缩进
common:
msg_source: 1
send_packet_ros: false
send_point_cloud_ros: true
send_packet_proto: false
send_point_cloud_proto: false
pcap_path: /home/robosense/lidar.pcap
lidar:
- driver:
lidar_type: RS128
frame_id: /rslidar
msop_port: 6699
difop_port: 7788
start_angle: 0
end_angle: 360
min_distance: 0.2
max_distance: 200
use_lidar_clock: false
ros:
ros_recv_packet_topic: /middle/rslidar_packets
ros_send_packet_topic: /middle/rslidar_packets
ros_send_point_cloud_topic: /middle/rslidar_points
proto:
point_cloud_recv_port: 60021
point_cloud_send_port: 60021
msop_recv_port: 60022
msop_send_port: 60022
difop_recv_port: 60023
difop_send_port: 60023
point_cloud_send_ip: 127.0.0.1
packet_send_ip: 127.0.0.1
- driver:
lidar_type: RSBP
frame_id: /rslidar
msop_port: 1990
difop_port: 1991
start_angle: 0
end_angle: 360
min_distance: 0.2
max_distance: 200
use_lidar_clock: false
ros:
ros_recv_packet_topic: /left/rslidar_packets
ros_send_packet_topic: /left/rslidar_packets
ros_send_point_cloud_topic: /left/rslidar_points
proto:
point_cloud_recv_port: 60024
point_cloud_send_port: 60024
msop_recv_port: 60025
msop_send_port: 60025
difop_recv_port: 60026
difop_send_port: 60026
point_cloud_send_ip: 127.0.0.1
packet_send_ip: 127.0.0.1
- driver:
lidar_type: RSBP
frame_id: /rslidar
msop_port: 2010
difop_port: 2011
start_angle: 0
end_angle: 360
min_distance: 0.2
max_distance: 200
use_lidar_clock: false
ros:
ros_recv_packet_topic: /right/rslidar_packets
ros_send_packet_topic: /right/rslidar_packets
ros_send_point_cloud_topic: /right/rslidar_points
proto:
point_cloud_recv_port: 60027
point_cloud_send_port: 60027
msop_recv_port: 60028
msop_send_port: 60028
difop_recv_port: 60029
difop_send_port: 60029
point_cloud_send_ip: 127.0.0.1
packet_send_ip: 127.0.0.1
目前支持的雷达型号:
- RS-LiDAR-16:
RS16
- RS-LiDAR-32:
RS32
- RS-Bpearl:
RSBP
- RS-Ruby
- RS-Ruby Lite
- RS-LiDAR-M1
- RS-Helios
参数理解
-
frame_id
点云消息的frame_id。
-
msop_port, difop_port
点云的msop端口号和difop端口号。 若收不到消息,请优先确认这两个参数是否配置正确。
-
start_angle, end_angle
点云消息的起始角度和结束角度,此处设置为软件屏蔽,无法减小每帧点云的体积,只会将区域外的点设置为NAN点。 起始角和结束角的范围应在0~360°之间。(起始角可以大于结束角).
-
min_distance, max_distance
点云的最小距离和最大距离,此处设置为软件屏蔽,无法减小每帧点云的体积,只会将区域外的点设置为NAN点。
-
use_lidar_clock
-
true
-- 使用雷达时间作为消息时间戳。 -
false
-- 使用系统时间作为消息时间戳。
-
更多配置细节如下,可以参考官方配置教程。
- 使用Protobuf发送&接收
- 多雷达
- 切换点云类型XYZI与XYZIRT
- 坐标变换功能
- 组播模式
三、启动运行
基于ROS catkin编译成功后
source devel/setup.bash
roslaunch rslidar_sdk start.launch