前面我已经完成了mid360激光雷达的驱动安装,octomap的复现,昨天我去把这俩在正式环境中实测了一下,效果不好,走廊转角没建出来,我查了一下,应该是TF的原因,但这部分我还不太懂,看到有的教程里说可以用SLAM建图完成TF变换,加上我之前就想要先做建图,再用Octomap转为栅格地图,于是就有了这次尝试。
要完成我这篇里实现的东西,你需要先具备这些条件:
1.完成了mid3620的驱动安装,保证激光雷达有数据,包括了SDK安装和driver安装,参考以下链接:
Livox_Mid-360激光雷达使用教程_ubuntu 20.04 mid 360 csdn-CSDN博客
2.我使用的是ubuntu18.04,ROS1 noetic。供参考
不想看废话的可以跳过这几段:
假设我们现在都装好了雷达,并且雷达能够正常工作,那么要复现FAST_LIO的思路是什么呢?我觉得在重现一个项目前,应该要有大致的思路,不能说按照网上的教程一通走,极有可能会出错,而且不知道错在哪。(呜呜呜,我踩的坑,泪奔~)。
大致思路:激光雷达运行,FAST_LIO接收到数据开始建图。其实很简单。那么对应的就是,我们应该先编译激光雷达的包,再去编译建图的包,不要走回头路。一起放进src就得走回头路。
————————————————————————————
下面附上一个保姆级教程:
一、安装激光雷达驱动
上面已经给了链接了,不重复。
我的雷达驱动工作空间名称为:catkin_livox_ros_driver2
二、安装编译FAST_LIO
官方链接(建议看看):GitHub - hku-mars/FAST_LIO: A computationally efficient and robust LiDAR-inertial odometry (LIO) package
我用的教程:
GitHub - 66Lau/NEXTE_Sentry_Nav: The navigation system of "sentry" for Next-E team in RoboMaster2023Ubuntu 20.04使用Livox mid 360 测试 FAST_LIO_ubuntu mid360 fastliono configured subnet or ip-ra-CSDN博客
——————————————————————————————
先说说别的问题,我先尝试了第一个链接里的教程,因为这个教程很符合我的要求,可以把整条路径规划的线都走通,但一直失败,编译时报错找不到雷达驱动的包,试了很多方法,单独编译驱动可行,把下载的源码放进去编译就报错。最后放弃了,还是从简单的来吧。不过后面我还是会再次尝试这个链接里的方法。
——————————————————————————
1.下载源码
我是那个永远git clone不下来的人,所以选择直接到官方下载.zip
下载之后注意修改文件夹名称为:FAST_LIO
2.创建一个工作空间
cd ~/$A_ROS_DIR$/srcgit clone https://github.com/hku-mars/FAST_LIO.gitcd FAST_LIOgit submodule update --initcd ../..catkin_makesource devel/setup.bash
这里只是给一个创建工作空间的参考。更方便的是,直接把源码放到已经编译好的雷达驱动工作空间里,也就是:把FAST_LIO放到catkin_livox_ros_driver2的src里,如图所示:
2.修改FAST_LIO源码
为了使其与mid360适配,必须修改代码,因为mid360用的是driver2。
大家直接用vscode打开工作空间,搜索:livox_ros_driver
直接选择全部替换为:livox_ros_driver2
不要一个个去改了。容易出错。改完之后记得保存。
3.编译
可以看到,官方给了这样一句指令
git submodule update --init
但我们目前没有使用,而且我用这句指令会报错,最开始我没理解啥意思,就没有管,直接编译了,然而,会报错!找不到include/ikd-Tree/ikd_Tree.cpp 这个玩意儿。
于是我就去下载的源码里看,真没有这玩意,又去官网看了下,原来他把这个放在了子仓库里。直接从子仓库里下载.zip复制里面的文件放在include/ikd-Tree里就行了:
GitHub - hku-mars/ikd-Tree at e2e3f4e9d3b95a9e66b1ba83dc98d4a05ed8a3c4
————————————————————
接下来,正式开始编译!!!!
首先,要进入工作空间编译,我用的是:
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
如果你的环境没问题,直接用catkin_make也可以的。我的是因为曾经出了一些问题,不这样会报错。
激动人心!!终于成功了!!!纪念!!
4.运行
如果你前面都成功了,那就运行看结果吧!!
首先,确认你的雷达连线没有问题,ip已经配置成功,能够看到数据进来。
其次,没有其次了。。。哈哈哈
————————
开始运行:
启动雷达:
#进入工作空间source devel/setup.bash
roslaunch livox_ros_driver2 msg_MID360.launch
重开一个终端,启动FAST_LIO:
source devel/setup.bash
roslaunch fast_lio mapping_mid360.launch
没有问题的话,你就可以看到结果了:
5.结果保存
结束运行后,结果会自动保存到PCD文件夹,这个scans就是我今天跑的:
然后,如果你想查看这个.pcd,需要安装pcl的一个工具包:
sudo apt install pcl-tools
最后,进入PCD文件夹:
pcl_viewer scans.pcd
就能看到结果啦:
按不同的键,它会有不同的着色哟,哈哈哈,我觉得最好玩的就是看到结果之后。上面这个是按的5。
1 is all random2 is X values3 is Y values4 is Z values5 is intensity
——————————————————————
好了,最后来记录一下吧,后续呢我还要进行将pcd传给octomap进行栅格地图构建。目前有两种思路,一种参考链接1的教程。一种用octomap的教程中的实时显示。大差不差感觉。
最后,有空再尝试一下链接1教程的那一套,能不能走得通。
做事情之前一定要先想想大致思路,为什么要这么做。不要无脑看教程。会走弯路。
希望大家都能成功!!
——————————————————————
更新,我马不停蹄的去试了一下用跑出来的pcd文件生成octomap的栅格地图
1.直接上链接吧
OctoMap-基于八叉树的地图 - 智学无人小车平台
这个实测可以成功。
(奇怪,之前跑的那个octomap居然跑不出来了),会报错:
用上面那个跑,结果是这样的,有点奇怪诶,感觉是不是分辨率的问题,也有可能是这个mid360的点云。。。:
怎么和人家的pcd跑出来的不一样,他这个效果这么好。。。呜呜呜呜
这个图是用官方的工具打开的,没染色,仔细看看还是能看出来中间是空的嘿嘿。
暂时性的成功吧。加油喽!