Ubuntu18.04 安装速腾聚创最新驱动RSLidar_SDK采集XYZIRT格式的激光点云数据
新款驱动支持RS16、RS32、RSBP、RS128、RS80、RSM1-B3、RSHELIOS等型号
注意!!!!!! 该教程旨在引导安装,可能现在已经不具时效性了,建议官网查看官方教程
背景
笔者在尝试新的多传感器融合算法LIO-SAM时惊异于其优异的性能,准备上手一试,跑源码作者给出的数据集时没有丝毫问题,效果也非常惊艳,但是适配自己的数据包时出现了问题,原作者对激光雷达的数据格式有要求,考虑到与IMU时间同步问题,源码中会检查激光雷达的ring通道和时间戳是否符合要求。但是笔者使用的激光雷达支持的格式是XYZI,即( x, y, z,intensity),为了解决这一问题,笔者登录了速腾聚创的官网寻求帮助。发现速腾聚创开发了一款新的激光雷达驱动rslidar_sdk,并停止了对旧驱动rs_driver的维护(仍然可用),其实旧的驱动已经集成到了新的SDK中,新的SDK功能更加强大,并且解决了笔者的问题。
新款驱动支持两种激光雷达点云格式,即 XYZI (x, y, z, intensity)格式和 XYZIRT(- x, y, z, intensity, ring, timestamp)格式,其中后一种就包含了ring通道和timestamp时间戳数据,并且时间戳可以在配置文件中选择是使用雷达时间戳还是使用ROS时间戳。这很可以,准备安装。
一、下载rslidar_sdk
新建workspace下载sdk
mkdir -p RS_SDK/src
手动打开workspace进入src文件夹下将下面的文件解压到此处,先不要编译
然后打开: https://github.com/RoboSense-LiDAR/rslidar_sdk/releases.
请下载 rslidar_sdk.tar.gz 压缩包, 不要下载Source code。 因为Source code压缩包内不包含子模块rs_driver的代码, 用户还需自行下载rs_driver的代码放入其中才行。
二、添加依赖
1.Yaml (必需)
版本号: >= v0.5.2
若已安装ROS desktop-full, 可跳过
安装方式:
sudo apt-get update
sudo apt-get install -y libyaml-cpp-dev
2.Pcap (必需)
版本号: >=v1.7.4
安装方式:
sudo apt-get install -y libpcap-dev
3. Protobuf (可选)
protobuf(Google Protocol Buffers)是Google提供一个具有高效的协议数据交换格式工具库(类似Json),但相比于Json,Protobuf有更高的转化效率,时间效率和空间效率都是JSON的3-5倍。但这个库目前还不是太流行。(官网注明可选,实际使用中会在CMakeLists.txt中链接进行编译,如果没有此库将会报错 )如果不需要此库的功能,也可以打开CMakeLists.txt文件中有关编译protobuf部分注释掉也可编译成功(注释掉以下部分)
#Protobuf#
find_package(Protobuf QUIET)
find_program(PROTOC protoc)
if(NOT PROTOC MATCHES "NOTFOUND" AND Protobuf_FOUND)
message(=============================================================)
message("-- Protobuf Found, Protobuf Support is turned On!")
message(=============================================================)
add_definitions(-DPROTO_FOUND)
include_directories(${PROTOBUF_INCLUDE_DIRS})
SET(PROTO_FILE_PATH ${PROJECT_SOURCE_DIR}/src/msg/proto_msg)
file(GLOB PROTOBUF_FILELIST ${PROTO_FILE_PATH}/*.proto)
foreach(proto_file ${PROTOBUF_FILELIST})
message(STATUS "COMPILING ${proto_file} USING ${PROTOBUF_PROTOC_EXECUTABLE}")
execute_process(COMMAND ${PROTOBUF_PROTOC_EXECUTABLE}
--proto_path=${PROTO_FILE_PATH}
--cpp_out=${PROTO_FILE_PATH}
${proto_file})
endforeach()
else(NOT PROTOC MATCHES "NOTFOUND" AND Protobuf_FOUND)
message(=============================================================)
message("-- Protobuf Not Found, Protobuf Support is turned Off!")
message(=============================================================)
endif(NOT PROTOC MATCHES "NOTFOUND" AND Protobuf_FOUND)
笔者使用时按照官网的安装方式无法正确安装,有需要安装此库朋友这里推荐按照以下方式安装
此处参考大佬 链接: protobuf 安装. (侵删)
// 下载 protoBuf:
$ git clone https://github.com/protocolbuffers/protobuf.git
// 安装依赖库
$ sudo apt-get install autoconf automake libtool curl make g++ unzip libffi-dev -y
// 进入目录
$ cd protobuf/
// 自动生成configure配置文件:
$ ./autogen.sh
// 配置环境:
$ ./configure
// 编译源代码(会很慢要有耐心!):
$ make
// 安装
$ sudo make install
// 刷新共享库 (很重要的一步啊)
$ sudo ldconfig
// 成功后需要使用命令测试
$ protoc -h
这个效果就表示安装成功:
三、编译
1.打开工程内的CMakeLists.txt文件,将文件顶部的set(COMPILE_METHOD ORIGINAL)改为set(COMPILE_METHOD CATKIN)。
#=======================================
# Compile setup (ORIGINAL,CATKIN,COLCON)
#=======================================
set(COMPILE_METHOD ORIGINAL)
改为:
#=======================================
# Compile setup (ORIGINAL,CATKIN,COLCON)
#=======================================
set(COMPILE_METHOD CATKIN)
2.
将rslidar_sdk工程目录下的package_ros1.xml文件重命名为package.xml。
3.返回工作空间目录,执行以下命
catkin_make
source devel/setup.bash
四、修改config.yaml参数
本工程只有一份参数文件 config.yaml, 储存于rslidar_sdk/config文件夹内。打开此文件,找到以下部分:
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
激光雷达型号默认RS128,这非常难受,修改为自己的激光雷达型号即可
不修改就是这效果:报错:
RoboSense-LiDAR-Driver is running.....
ERRCODE_MSOPTIMEOUT
ERRCODE_MSOPTIMEOUT
ERRCODE_DIFOPTIMEOUT
ERRCODE_MSOPTIMEOUT
ERRCODE_DIFOPTIMEOUT
ERRCODE_MSOPTIMEOUT
ERRCODE_MSOPTIMEOU
修改激光雷达数据点云格式设置:
打开CMakeLists.txt,找到如下代码段
#=======================================
# Custom Point Type (XYZI, XYZIRT)
#=======================================
set(POINT_TYPE XYZIRT)
初始设置格式为:XYZI
需要XYZIRT格式可以修改为以下格式即可获得
#=======================================
# Custom Point Type (XYZI, XYZIRT)
#=======================================
set(POINT_TYPE XYZIRT)
五、配置IP
使用网线将雷达与电脑或者工控机链接起来,激光雷达上电,点击右上角打开有线连接设置,使用IPV4设置本机静态IP如图示:
详细配置方式可参看速腾聚创官网给出的具体型号的使用参考手册
六、Fire
启动launch文件
source devel/setup.bash
roslaunch rslidar_sdk start.launch
正常情况可以下可以在RVIZ中看到扫描帧:
以上部分配置仅仅可使激光雷达显示正常,可以录制自己需要的的数据格式,具体参数还需自己调试。以上步骤只是笔者所遇问题的解决办法,不当之处欢迎大家交流指正。这只实现了测试算法的第一步---------拥有正确的数据集,后期调试好了LIO-SAM适配速腾激光雷达的步骤会与大家分享。
官方安装教程: https://github.com/RoboSense-LiDAR/rslidar_sdk/blob/v1.3.0/README_CN.md.
官方config.yaml参数配置说明:https://github.com/RoboSense-LiDAR/rslidar_sdk/blob/v1.3.0/doc/intro/parameter_intro_cn.md.
笔者另一篇博客实现:速腾聚创雷达点云格式转换为Velodyne雷达点云格式:
链接: Ubuntu18 安装ROS节点解决----速腾聚创雷达点云格式转换为Velodyne雷达点云格式 --SLAM不学无术小问题.
仅供速腾聚创品牌的雷达参考
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.youkuaiyun.com/weixin_42141088/article/details/117123174