C++修改lvi-sam代码遇到的错误

分享一下修改别人代码的时候遇到的错误。

错误一:‘A’ has no member named ‘b’

例如下图所示:
在这里插入图片描述
这种错误指的就是对应的.h头文件中没有b成员。解决办法:在对应的.h文件中的A函数中定义b成员。

错误二:对‘…'未定义的引用

例如下图所示:
在这里插入图片描述
这种错误有两种可能,一种是CmakeLists.txt文件中没有添加并链接对应的库,另一种是未定义引用对应的函数没有实现。解决办法:首先查看CmakeLists.txt文件中有没有添加并链接对应的库,然后再检查对应的函数是否有具体的实现,这种实现一般在.cc文件中,然后对应修改,问题解决。

错误三:‘a’ has conflict…

这种错误是a参数在同一个函数中重复定义了,解决办法:将a修改成b,或者删除其中一个。

错误四:‘a’被多次定义,’…'第一次在此定义

如下图所示,
在这里插入图片描述
错误原因很明显,是某个参数被重复定义了,解决办法:第一种方法,找到重复定义的参数位置对应修改只保留其中一个。第二种方法,修改CMakeLists.txt,将重复定义的文件分开,即写两个find_package、add_exutable、target_link_libraries。如下图。
在这里插入图片描述
在这里插入图片描述

最后,编译成功!如下图。
在这里插入图片描述

错误五Assertion ‘px !=0’ failed

最后尽管编译成功了,但是在运行的时候还是出线了这个问题:
在这里插入图片描述
这个问题花了我好几天的时间才搞出来,因为它并没有明确指出是哪里出错了,导致我根本就没有思路去对应的地方修改,刚开始在代码中对只要涉及到点线特征的地方都看了一边,无论是点线特征定义、ros订阅发布、点线特征调用、点线特征数据处理都看了一遍并且也改了线特征话题消息的处理、雷达信息处理和线特征的融合,改了后感觉没什么问题,可还是会出现同样的错误,于是在慢慢再修改的过程中发现这句警告“throw img,only should happen at the beginning”,不知道是哪次修改后出现的,于是没有在意,直到最后实在没办法了,于是就复制这句话在vscode里进行搜索,发现它在这处:
在这里插入图片描述
然后就仔细看这个函数里面的代码,最终发现,有几处需要修改,修改如下:
在这里插入图片描述这个是忘记加线特征数据判断了,导致线特征数据没有初始化!
还有一处就是要加上线特征数据:
在这里插入图片描述
堆栈处理!
于是最后再次运行,问题解决。如下图:

在这里插入图片描述虽然说问题解决了,但运行数据集的时候发现,其实问题并没有解决,地图中仍未显示视觉点、线特征。后面还需进一步查看代码。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值