Ubuntu20.04中编译aloam(改)中遇到的gtodometry和ceres的Error问题解决以及一些吐槽

前面两讲跑的很轻松,故以为原理都一样很好解决,直到我遇到了第三讲,这一讲的任务是自己推导公式,然后做代码的实现,我个人更喜欢先跑通代码,然后放心的去学理论,于是就...痛苦的搞了一整天。。

废话不多说了,上正文:

版本“Ubuntu20.04.6+noetic”

问题1:经典的问题:Error transforming odometry “gtodometry” from “/map” to map

因为这一讲用的是a-Loam算法(略有调整,去除了一些不必要的坐标变换,优化了部分计算),然后主要是在front_flow_end.cpp、front_flow.cpp以及aloam_laser_odometry_node、aloam_mapping_node中,去修改对应的话题,即去掉“/”即可。(这里会有不少新手朋友和我有一样的疑问,改哪些?不改哪些?我改了一天的出来的结论就是,对应rviz中或者列出topic查看,所有需要发布和订阅的话题,最好都把“/{frame_id}”改成“{frame_id}”)。

注意:输出日志中不提示报该错,只是rviz中的warning的话,不影响正常运行(据群里大佬说可能是源码中坐标变换有一些小问题,毕竟是在源码乱七八糟的变换上做的改进,有小问题很正常,我们说,warning等于正常(doge))。

问题1参考博客直接看我上一篇吧。

问题2:error: ‘LocalParameterization’ is not a member of ‘ceres

这个我不得不提一嘴,在《视觉SLAM14讲-第二版》中,每一章的代码我都遇到了类似的问题,比如提示std中没有成员**类似的问题,我的理解是:如果库不是自己写的,那大概率就是版本问题,新版本同样功能的函数(类)换了其他的命名,但是std的问题可以靠提升C++的版本来解决,而ceres只能靠自己来手动解决:将报错提示的几行代码中(问题2参考博客

ceres::LocalParameterization *q_parameterization = new ceres::EigenQuaternionParameterization();

改成

ceres::Manifold *q_parameterization = new ceres::EigenQuaternionManifold();

注意要改全,不然重新编译还得再找着改。如果还不行,可以考虑重新安装一下ceres库,其他博主有很多很多方法,我就不搬了,下面是一个大佬总结的《视觉SLAM14讲》中相关库的安装教程

ceres安装以及其他一些slam用到的库的安装

问题3:Failed to find match for field ‘intensity’

这个搞了一天,问了群里的大佬,得出来的结论是数据集的播放包有问题,但是由于在我自己电脑上运行时,即不影响建图,也不影响数据输出,甚至evo评测也不影响,所以这个不影响正常使用,但是一百个虚拟机有一百个问题,所以给有需求的朋友指条路:kitti包数据问题的解决

问题4:建图中,轨迹显示不全,只有一条路径。

在rviz的gt中,选择gt的topic为“scan_to_scan”,这样,odometry的topic为“scan_to_map”,两条轨迹就都正常显示了。(如下图,GT选另一个就好)

--------------------------------------------------------------------------------------------------------------------------

正文结束,我吐槽一会~~

一开始是自己找遍所有的代码,去改“map”这个问题,然后因为电脑内存不够它造,所以老是跑到四分之三的时候把rviz卡崩溃,然后我突然想到一个帖子说过是pcl库版本太低,导致卡顿。

!天才!于是我就去搜罗着,开始更新pcl库,发现用默认的安装方式只能装1.0.*的版本,到现在我也没整明白pcl到底最新的到哪了,github上面到1.9.1了,但是org官网里面2023年才到1.4.1,但是重点不是这个,于是我按大佬们的教程,去一个一个装依赖库,还好大部分都有,其中最恶心的是vtk这个库,安装的时候有一大堆毛病,还好我硬啃下来,然后终于到了安装pcl这一步,最最最恶心的来了,我使用了make -j8,在30%的时候报错了,但是没停下来,直到50%的时候,把我虚拟机卡死了,主机正常,但是虚拟机死机了。。。然后我等了好久,它终于反应过来,告诉我编译中断,然后我就放弃了安装1.9.1的pcl。但是我不甘心,又去官网上下了一个1.4.1的pcl,然后去编译,在这里我也弄明白一件事,-j4或-j8是为了加速,我的配置不算太低,12核的处理器,我虚拟机弄了八个,但是据说使用-j4会很吃内存,大家都很容易在这一步崩掉,于是我换了-j2,结果。。。又又又崩了,这次是最离谱的,因为我下载和安装了好多库(为了满足pcl的依赖),直接把我虚拟机卡没了,然后再开机的时候说磁盘空间不足不让开机...

NO!!!!!

对于一个辛辛苦苦一步一步调完ros入门课程,又跟着官网调了moveit,又跟着高博跑了视觉slam,又在深蓝学院跑到第三讲的男人,虚拟机坏了跟杀了我有什么区别(虽然其实不至于。。)!正当我一筹莫展,突然看到一篇玄学博客,于是我把虚拟机的内存,从8.6G下调到了8G,嘿!还真打开了,我查了一下虚拟机磁盘使用情况,还好啊,还有100个G的空间,但是应该是那个loop还是啥问题(我也不懂),怪我一次性往里面灌了一堆库和软件包,然后还不给喘息的机会一直编译pcl,所以把我的小机机卡崩溃了,还好正常了,我去恢复了快照,回到了第二讲完成的时候(穿越!),这一次,我按照上文所说,没有一丝多余的操作:改ceres、改topic、调整rviz,一气呵成!

跟大家分享一个好习惯,每一次完成一个阶段的工作,最好留一次快照,这样就可以像我一样放心造辣啊哈哈哈哈*.*

理论部分由于我太菜,大家一起像其他博主和大佬学习,我这就分享分享平常的一些问题,记录一下。

加油啊朋友,祝你开心~~~

  • 34
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值