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文件夹下内:
1 | git clone https://github.com/nkymzsy/LIO-SAM-MID360.git |
如果gitclone的速度太慢,这里有一个小技巧,那就是将github改为githubfast,亲测有效。
1 | git clone https://githubfast.com/nkymzsy/LIO-SAM-MID360.git |
之后要安装Livox-SDK(在工作空间外安装)
1 | git clone https://github.com/Livox-SDK/Livox-SDK.git |
还要在src下下载livox_ros_driver 也就是livox雷达的驱动包:
1 | 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>使用”//“注释掉,并添加以下内容:
1 | ”#include <opencv2/opencv.hpp>“ |
还有一个可能报错的地方,解决方法是将下图中的26行的内容注释掉放到第18行。

接下来在工作空间目录下catkin _make应该没有报错了。最后就可以运行LIO-SAM建图了:
1 | source devel/setup.bash |
然后启动MID360的驱动
1 | source devel/setup.bash |
如果手里现在没有雷达,也可以播包:
1 | rosbag play mid360.bag |
录制rosbag包的命令是(以下是录制所有的主题,-o 后的参数要换成你自己的bag包储存地址):
1 | rosbag record -O /home/lingao/mid360_bag/my.bag `rostopic list` |
如果只录制imu和雷达数据则输入命令:
1 | rosbag record -O /home/lingao/mid360_bag/my.bag /livox/imu /livox/lidar /clock |

二、适配FAST-LIO2
由于FAST-LIO2本身就对LIVOX系列的雷达做了一定的适配,因此对源码基本不需要修改,直接在src里gitclone下来:
1 | git clone https://github.com/hku-mars/FAST_LIO.git |
同样的也需要下载livox_ros_driver:
1 | git clone https://github.com/Livox-SDK/livox_ros_driver.git |
然后初始化和更新一个仓库中的子模块:
1 | git submodule update --init |
编译
1 | cd ../.. |
这里我的环境是Ubuntu 20.04 ROS Noetic,所以需要将src/FAST_LIO中的CMakeLists.txt中的C++版本改为14,这样编译就能通过了。
接下来运行fast-lio2:
1 | source devel/setup.bash |
然后播包
1 | rosbag play mid360.bag |

可以看到建图效果还是不错的,整个楼层没有大的漂移。而反观LIO-SAM这边,顶楼走廊到楼梯那建的都还可以,但是下了楼后高度定位出现了问题,一直还定位到顶楼,最后直接建飞了,把楼层建成了平行宇宙🤣。。。。有可能是我用的是别人录制的rosbag包的原因,IMU与雷达内参没有校准。
建图对比视频
评论区有大佬指出关闭LIO-SAM回环会好很多,我找了一下,配置文件在lio_sam_mid360_ws/src/LIO-SAM-MID360-master/config下的paramsLivoxIMU.yaml里。将“loopClosureEnableFlag”的“false”改为“true”,然后不用编译直接运行看一下。
果然有用诶,成功建图,而且从图中效果可以看出细节上比FAST-LIO2要好很多,楼旁边的树和周围楼的墙壁都给建出来了。




