Ubuntu18.04 安装速腾聚创最新驱动RSLidar_SDK采集XYZIRT格式的激光点云数据 --SLAM不学无术小问题

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

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值