速腾雷达16线实现FAST-LIO2算法建图


很久之前老师就推荐利用fast-lio算法建图,由于很多没有时间所以一直耽搁着,现在有时间就来实现一下,手上现有的是速腾的16线雷达,在实现的过程中参考了一个大佬的两篇博客,以下是博客链接:
使用速腾雷达32线Helios和fast-LIO2算法建图(一)
使用速腾雷达32线Helios和fast-LIO2算法建图(三)

一、配置激光雷达数据

1、下载rsladir-SDK包到catkin_ws/src下

https://github.com/RoboSense-LiDAR/rslidar_sdk/releases/download/v1.3.0/rslidar_sdk.tar.gz

2、添加依赖

yaml(必须)

sudo apt-get update
sudo apt-get install -y libyaml-cpp-dev

pcap(必须)

sudo apt-get install -y  libpcap-dev

Protobuf (可选)
我没有下载protobuf,所以需要修改下面内容:
在下载的SDK的包里的CMakelist.txt文件里面修改

#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)

3、配置参数:

3.1 在下载的SDK的包里的CMakelist.txt文件里面修改一下参数:

set(COMPILE_METHOD ORIGINAL)改为set(COMPILE_METHOD CATKIN)。
set(POINT_TYPE XYZI)改为set(POINT_TYPE XYZIRT) #相较于XYZI,XYZIRT还有时间戳,能满足Fast-lio2时间补偿需求

3.2 将rslidar_sdk工程目录下的package_ros1.xml文件重命名为package.xml。
3.3 修改config.yaml参数(rslidar_sdk/config文件夹内)

lidar:
- driver:
//此处修改激光雷达型号
lidar_type: RS16    #LiDAR type - RS16, RS32, RSBP, RS128, RS128_40, RS80, RSM1, RSHELIOS
frame_id: /rslidar           
msop_port: 6699             
difop_port: 7788  
  msg_source: 1    #1: packet message comes from online Lidar

这个1不用改,表示在线连接激光雷达测试。

4、编译测试

catkin_make
source devel/setup.bash

运行雷达并显示数据

roslaunch start.launch

5、将雷达格式转换为velodyne格式

将以下包下载在catkin_wa/src下:

https://github.com/HViktorTsoi/rs_to_velodyne.git

在路径catkin_ws/src/rs_to_velodyne/下添加launch文件夹,在launch文件夹下,添加velodyne.launch文件,内容如下:

 <launch>
  <node pkg="rs_to_velodyne" name="rs_to_velodyne" type="rs_to_velodyne"  args="XYZIRT XYZIRT"   output="screen">
  </node>
</launch>

6、将转换格式嵌入到start.launch文件中

打开start.launch文件(在rsladir_sdk/launch下)
加入以下语句:

<include file="$(rs_to_velodyne)/launch/velodyne.launch" />

然后运行roslaunch start.launch 在运行rostopic 就会发现发布的话题中出现了/velodyne_points,说明转换成功。

二、IMU配置

目前尚未配置IMU所以这部分先空着,过几天配好了在写。

三、建图

源码下载:

配置环境

pcl可以不用下载直接运行下列指令:
sudo apt-get install ros-melodic-pcl-*
要确保Eigen >= 3.3.4,由于之前装好了就没装了

编译fast-lio包
用git下载源码时,不使用git clone 时,nclude中ikd-Tree文件夹是空的,因为源码git提供了一个git链接,可以自己去下,fast-lio2一大创新就在于使用了ikd-Tree来维护大量的地图点。、

第一步:下载链接fast-lio
https://github.com/hku-mars/FAST_LIO
下载链接kdtree链接
https://github.com/hku-mars/ikd-Tree

注意:下载好了kdtree包后要自己把FAST_LIO需要的那个ikd–Tree包复制进去,在下载的ikd-Tree包里还有一个ikd-Tree包,这个才是需要复制过去的,否则编译时会报错

这些包都放在catkin_ws/src下

配置文件

修改FAST_LIO\src\FAST_LIO\config\velodyne.yaml

common:
    lid_topic:  "/velodyne_points"
    imu_topic:  "/imu/data"

激光雷达配置

preprocess:
    lidar_type: 2      # 1 表示Livox 雷达, 2 表示Velodyne 雷达, 3 表示ouster 雷达
    scan_line: 16      # 32线
    scan_rate: 10      #   velodyne 频率, unit: Hz,

IMU和lidar相对外参、

如果不安装pcl1.8,还需要进行以下步奏,

1、将cmakelist.txt内的
find_package(PCL 1.8 REQUIRED)
改成
find_package(PCL  REQUIRED)
不搜索pcl1.8。

2、将cmakelist.txt生成头文件配置修改
添加add_dependencies(fastlio_mapping  ${catkin_EXPORTED_TARGETS})  
改在以下位置
add_executable(fastlio_mapping src/laserMapping.cpp include/ikd-Tree/ikd_Tree.cpp src/preprocess.cpp) 
add_dependencies(fastlio_mapping  ${catkin_EXPORTED_TARGETS})                       
target_link_libraries(fastlio_mapping ${catkin_LIBRARIES} ${PCL_LIBRARIES} ${PYTHON_LIBRARIES})
target_include_directories(fastlio_mapping PRIVATE ${PYTHON_INCLUDE_DIRS})

然后编译运行

catkin_make
source devel/setup.bash
roslaunch fast_lio mapping_velodyne.launch

在运行之后我出现了rviz黑屏的问题,经过排查是frameid的问题,rviz里面的FIXED frame给的是crame_init,而我们需要的是velodyne的frame,所以将其修改为velodyne即可,同时修改mapping下的surrond的话题名为/velodyne-points,以及currPoints的Topic为/velodyne_points,此时就可以显示图像并建图。

四、主从机通信

由于载体本身显示的问题,还是想配置一下主从机通信实现远程查看建图效果,但是现在还没写出来,这里先留着,等写完再来。

五、遇到的问题

今天在建图的过程中,出现了建了一会图之后就崩溃了,报下列错误:
[rviz-5] process has died [pid 10281, exit code -9, cmd nice /opt/ros/melodic/lib/rviz/rviz -d /home/unitree/catkin_ws/src/fast_lio/rviz_cfg/loam_livox.rviz __name:=rviz __log:=/home/unitree/.ros/log/b7182a6e-ba57-11ed-b235-48b02d5a882c/rviz-5.log]. log file: /home/unitree/.ros/log/b7182a6e-ba57-11ed-b235-48b02d5a882c/rviz-5*.log
目前还没解决,解决了在写。

### 使用 FAST-LIO2 进行 Velodyne 激光雷达的实时定位和 为了实现基于 Velodyne 激光雷达的数据处理并利用 FAST-LIO2 实现实时定位与,需完成一系列配置工作。具体而言: #### 环境准备 确保 ROS(Robot Operating System)已安装完毕,并创了一个 Catkin 工作空间用于后续操作。 #### 数据源设置 对于采用 Velodyne 类型激光雷达的情况,应确认设备参数设定无误。例如,当使用的是 32 线 Helios 型号时,其扫描频率设为每秒 10 次[H] [^1]。 #### 功能包集成 针对特定型号的传感器可能需要额外的功能包支持来转换原始数据格式至通用标准。比如速腾 Helios 的情况,则可以通过 `rs_to_velodyne` 软件包来进行必要的点云数据格式转变[^5]。此过程涉及克隆 GitHub 上对应的仓库到本地的工作区中,并按照官方文档指示编译该软件包。 #### 发布点云消息 一旦完成了上述准备工作之后,就可以启动相应的节点以发布来自 Velodyne 设备的点云信息。这通常意味着编写或调整 launch 文件以便于自动化执行这一流程。下面给出了一段简化版的 XML 片段作为例子展示如何定义这样的发射器节点: ```xml <launch> <node pkg="rs_to_velodyne" name="rs_to_velodyne_node" type="rs_to_velodyne" args="XYZIRT XYZIRT" output="screen"/> </launch> ``` #### 初始化 FAST-LIO2 接下来就是初始化 FAST-LIO2 所必需的各项参数以及订阅由前一步骤产生的点云主题。这部分内容依赖具体的实现细节,但一般会涉及到编辑 YAML 配置文件指定诸如最大迭代次数、匹配阈值等选项;同时也要注意正确指定期望接收的 Lidar Topic 名称。 #### 构可视化工具 最后,为了让用户能够直观地观察构的地成果,推荐部署 RViz 或者其他类似的形界面应用程序。通过它不仅可以查看当前车辆的位置变化轨迹,还能动态呈现周围环境特征随时间演化的状况。 综上所述,以上步骤构成了完整的从硬件接入到最后结果可视化的全过程指南,帮助开发者顺利运用 FAST-LIO2 结合 Velodyne LiDAR 达成高效精准的 SLAM 应用开发目标。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值