MID360激光雷达适配LIO-SAM与FAST-LIO2指南

实验室有一个大疆的MID360半固态激光雷达,需要我来探索一个建图效果较好的三维SLAM算法。但是由于是半固态雷达,雷达输出的点云数据格式与普通的多线激光雷达有一些区别,目前业界的激光雷达算法好多都是基于Velodyne的多线雷达格式做的适配,因此在适配LIO-SAM时会遇到诸多问题。

一、适配LIO-SAM

LIO-SAM算法对激光雷达的数据格式有着较为严格的要求,以往的单激光雷达建图的算法没注意到这一点,一般要求的是XYZI(x, y, z, intensity ) 格式即可,但是LIO-SAM要求的是 XYZIRT(x, y, z, intensity, ring, timestamp) 格式,即算法内使用了激光雷达的通道数ring参数和时间戳timestep参数,启动算法时会检查是否具有这两个参数,而MID360雷达的输出格式中没有ring与time这两个参数。进一步的,LIO_SAM要用9轴IMU,而MID360内置的IMU是六轴IMU😭。

因此要想适配MID360需要改源码,感谢万能的github,已经有人做好了适配,链接如下:https://github.com/nkymzsy/LIO-SAM-MID360.git也可输入以下命令gitclone到ROS工作空间下的src文件夹下内:

git clone https://github.com/nkymzsy/LIO-SAM-MID360.git

如果gitclone的速度太慢,这里有一个小技巧,那就是将github改为githubfast,亲测有效。

git clone https://githubfast.com/nkymzsy/LIO-SAM-MID360.git

之后要安装Livox-SDK(在工作空间外安装)

git clone https://github.com/Livox-SDK/Livox-SDK.git
cd Livox-SDK
cd build && cmake ..
make
sudo make install

还要在src下下载livox_ros_driver 也就是livox雷达的驱动包:

git clone https://github.com/Livox-SDK/livox_ros_driver.git

接下来还需要对LIO-SAM的代码做一点修改,第一处位于src/LIO-SAM-MID360-master目录下,双击打开CMakeLists.txt文件,请将第5行的c++11改为c++14,保存后退出,如下图所示:

第二处位于src/LIO-SAM-MID360-master/include目录下,双击打开utility.h文件,请将第18行的#include <opencv/cv.h>使用”//“注释掉,并添加以下内容:

”#include <opencv2/opencv.hpp>“

还有一个可能报错的地方,解决方法是将下图中的26行的内容注释掉放到第18行。

接下来在工作空间目录下catkin _make应该没有报错了。最后就可以运行LIO-SAM建图了:

source devel/setup.bash
roslaunch lio_sam run6axis.launch

然后启动MID360的驱动

source devel/setup.bash
roslaunch livox_ros_driver2 msg_MID360.launch

如果手里现在没有雷达,也可以播包:

rosbag play mid360.bag 

录制rosbag包的命令是(以下是录制所有的主题,-o 后的参数要换成你自己的bag包储存地址):

rosbag record -O /home/lingao/mid360_bag/my.bag `rostopic list`

如果只录制imu和雷达数据则输入命令:

rosbag record -O /home/lingao/mid360_bag/my.bag /livox/imu /livox/lidar /clock

二、适配FAST-LIO2

由于FAST-LIO2本身就对LIVOX系列的雷达做了一定的适配,因此对源码基本不需要修改,直接在src里gitclone下来:

 git clone https://github.com/hku-mars/FAST_LIO.git

同样的也需要下载livox_ros_driver:

git clone https://github.com/Livox-SDK/livox_ros_driver.git

然后初始化和更新一个仓库中的子模块:

git submodule update --init

编译

cd ../..
catkin_make

这里我的环境是Ubuntu 20.04 ROS Noetic,所以需要将src/FAST_LIO中的CMakeLists.txt中的C++版本改为14,这样编译就能通过了。

接下来运行fast-lio2:

source devel/setup.bash
roslaunch fast_lio mapping_mid360.launch

然后播包

rosbag play mid360.bag 

可以看到建图效果还是不错的,整个楼层没有大的漂移。而反观LIO-SAM这边,顶楼走廊到楼梯那建的都还可以,但是下了楼后高度定位出现了问题,一直还定位到顶楼,最后直接建飞了,把楼层建成了平行宇宙🤣。。。。有可能是我用的是别人录制的rosbag包的原因,IMU与雷达内参没有校准。

LIO-SAM建出平行宇宙

建图对比视频

评论区有大佬指出关闭LIO-SAM回环会好很多,我找了一下,配置文件在lio_sam_mid360_ws/src/LIO-SAM-MID360-master/config下的paramsLivoxIMU.yaml里。将“loopClosureEnableFlag”的“false”改为“true”,然后不用编译直接运行看一下。

回环配置文件

果然有用诶,成功建图,而且从图中效果可以看出细节上比FAST-LIO2要好很多,楼旁边的树和周围楼的墙壁都给建出来了。

关闭回环后LIO-SAM建图效果
如果觉得本文对您有所帮助,可以支持下博主,一分也是缘😊

评论

  1. 曾今
    Windows Edge
    6 月前
    2023-11-27 21:49:16

    帅哥,你好,我编译的时候出现fatal error: livox_ros_driver/CustomMsg.h: 没有那个文件或目录

    include “livox_ros_driver/CustomMsg.h”的错误

    • 博主
      曾今
      Windows Edge
      6 月前
      2023-11-28 22:13:34

      你单独装 livox_ros_drive这个包了吗,我提供两个方案,我不知道你是编译的哪个包,一是在fas-lio2或者lio-sam工作空间的src下也克隆一下livox_ros_drive的源码,然后一块编译;第二个就是如果你单独编译过了livox_ros_drive这个包,编译fast-lio2或者lio-sam前先source一下livox_ros_drive工作空间下的devel/setup.bash,然后应该就不报错了

    • 111
      曾今
      Windows Edge
      2 月前
      2024-3-19 9:52:14

      你搞定了吗?

  2. xue
    Linux Chrome
    2 月前
    2024-3-14 13:56:54

    大佬我有个问题,运行mid360的时候需要livox_ros_drive2,运行lio_sam时又要用livox_ros_drive,那不是两个都要下?有没有只用drive2版本的?

    • 博主
      xue
      Android Chrome
      2 月前
      2024-3-19 10:26:30

      如果不改源码的话是这样的,你也可以都用driver2,但是要改源码,把引用driver1头文件都改成driver2的

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇