LeGO-LOAM-KITTI 从入门到入土(1)
目标:使用LeGO-LOAM测试KITTI-Odometry-Velodyne并求其精度
Day 0. ROS-noetic安装
Day 1. 遇到的第一个“大”困难: 下载KITTI
不得不说这东西真麻烦。官网今天直接上不去了,不得不找替代品。前面寻到了KITTI-object的,还好没有下载了再说,没什么效益。找到了一个种子有velodyne,80g,可惜的是速度堪忧。尝试了Transmission,无用,迅雷第一次还动了,1M左右的速度实在等不住,登了会员,结果始终不动了,只好作罢。最后找到了一个老哥实在是人才,把整个KITTI-odometry 解压的数据放在自己的百度网盘里,一个文件夹1000-5000个数据,直接下载总是失败,转存也很困难,折腾了一道又一道,到晚上总算全部下下来,43552个文件,希望没有少文件。(此时的我还没有意识到问题的严重性)
Day 2. 有一种不祥的预感: KITTI to rosbag
首先荒诞的事情在于我今天可以上cvlibs了,其次在于今天研究良久,发现没有官方的velogyne to rosbag,官方的方案是从rawdata中mapping到对应的sequences再转换。而那意味着昨天又白忙。所幸的是GitHub上找到了一个直接convert的代码,只是不知道是否可行…先尝试吧,不希望昨天白费功夫。
Day 3. LeGO-LOAM的安装初探。
总觉得今天也是什么都没干成的一天
先装GTSAM,好像没有出现问题,还比较顺利。
创建ROS工作空间,补上上次没做的事情,然后想直接装LeGO-LOAM for KITTI , 可惜编译的时候报错,lego_loam: Cannot locate rosdep definition for [gtsam]
没找到解决方案,想着那我就先安装LeGO-LOAM.
安装LeGO-LOAM的过程中问题挺多的,最开始因为ROS只能编译单一功能包,把LeGO-LOAM for KITTI搬出来了,然后catkin_make的时候报openCV的错
fatal error: opencv/cv.h: 没有那个文件或目录
,以为是我没有装(我也不知道到底装了没),于是重新装了一遍openCV. 按照人家的博客检查找不到,也是版本问题。前面报错的地方后来发现是头文件不对,在openCV 4版本头文件变了,修改代码include <opencv/cv.h>
为include <opencv2/imgproc.hpp>
就好了。紧接着又报PCL的错,我又觉得自己没装PCL(笑),研究了一圈发现装了,仔细查PCL报错,发现还是cmake里面出了问题,makelist里面C++标准默认的11改成14,问题解决。
至此,装上了LeGO-LOAM,实话说有点蒙蔽,觉得还是应该直接用for KITTI吧。
用人家的lidar2rosbag跑了一下,完美的没有出正确结果。感觉被坑了。真TM是小傻逼找大傻逼,傻逼齐活了
继续研究了一晚上,找来了示例包nsh_indoors_outdoors,发现自己的LeGO-LOAM或者gtsam,pcl多半也没装好,就很愁
重装了一遍LeGO-LOAM, 前面edge / planar 全部飘红的问题解决了(不知道怎么解决的,可能是把代码里Frame_id的”/“全部去掉了吧…)但是还是报mapOptmization-6
的错,只查到-7可能是gtsam的问题,又加上重试for KITTI仍然老问题,索性卸载gtsam 4.0.3,装原代码版本。(卸载也研究了有一会,这方面的资料比较少。最后在build里make uninstall干掉了)
重装gtsam 4.0.0 alpha2, 重试kitti发现仍然报一样的错,仔细看发现是里面的lego-loam在报错,不禁担心这会不会是问题的根源…
重新make的时候开始报Eigen的错…
Day 4. 重装LeGO环境
实在干不出来了,Eigen这个错解决不了,索性又把gtsam删了,从PCL开始重装。(此处发现该版本没有写uninstall,手动卸载之)
最开始又头铁不听人言,装了最新版的VTK 9.0 ; PCL 1.11.0 . 倒是一直没怎么报错(缺少PCAP顺利解决了) ,就是最后缺pcl_visualization
. 看了下,多半还是vtk的版本不对齐,于是又卸载,重装,重新编译(惊觉这一天好像又什么都没做).终于可以顺利把pcl测试代码跑通了。出图像的瞬间有种泪目的感觉,这两天都没啥成果,终于有好消息了。
稳扎稳打 !继续检查openCV.昨天openCV报错的地方,是opencv.pc没有配置,完成后成功打开摄像头看到自己。喜笑颜开哈哈哈哈。
重装GTSAM 4.0.0. alpha 2仍然报错,索性装4.0.3,基本顺利。编译lego-loam时有ros的pcl找不到的问题,去把pcl_ros等文件夹里的cmakefile改了对应路径之后解决。
终于又跑起来lego-loam了,赶紧运行了一下nsh包,没有报错,但是点云看起来还是不太对…而且此时悲伤的卡死了(汗)。 这是我唯一一次在没点velodyne的情况下看到了点云,虽然看起来就很不对…
重启再跑,一开始没点云显示,后来开始报错闪退…明天继续
Day 5. 验证LOAM运行,成功入土,推翻重来!
今天继续尝试LeGO-LOAM,不报错,一直没有TF data,不出点云。想到试试LOAM,控制变量嘛,结果报错Error transforming odometry 'Odometry' from frame '/camera_init' to frame 'camera_init'
,同时还有[laserMapping-4] process has died
想到之前报过frame_id不能以”/“开头,修改后解决,但是第二个问题仍然存在。苦也!
回头试试lego-kitti,装上了但是报错,已经无心研究这个,基本笃定我的环境不匹配了 其实觉得人家的代码也有问题
又是一天过去,实在解决不了,准备重装ubuntu 16.04了。
总结
六天时间过去,每天生活在焦虑和无奈中。焦虑于这么简单的问题始终解决不了,进度远低于预期 ,无奈于很多问题没有参考也没有头绪,解决不了的时候只能重来试试。学到的东西主要是各种库和软件的安装吧[扶额]。或者说是锻炼了我面对终端里各种红色的应对能力。在我看来显然这一切很让人沮丧,不过或许这就是真实的科研民工吧。
侧面上看的话,或许表明事先的调查很重要,并非新版就会很好,有些东西也不一定是想当然的向下兼容。
八月再努力吧!