编译PCM(2018)中的问题和解决

编译PCM之前,需要先安装mrpt、mrpt-bridge。

 

1. 安装mrpt、mrpt-bridge。

由于通过apt-get install的方式没有安装成功mrpt-bridge,因此下载mrpt-bridge的源码进行安装。

mrpt-bridge的源码地址为:

mrpt_bridge源码https://github.com/mrpt-ros-pkg/mrpt_bridge下载好源码,在编译源码之前,先输入如下命令安装marker_msgs和mrpt_msgs:

sudo apt-get install ros-melodic-marker-msgs
sudo apt-get install ros-melodic-mrpt-msgs

接下来可以正常完成mrpt-bridge-msgs的源码编译。

2. 编译PCM

编译中出现如下问题:

在PCM的github上有人问同样问题,需要安装另一个代码SE-Sync。

SE-Sync的源码如下:

SE-Synchttps://github.com/david-m-rosen/SE-Sync按照步骤安装即可。

接下来将SE-Sync中的C++整个目录改名为SE-Sync,复制进robust_multirobot_map_merging-master/src/third_parties中,替换掉该目录下的SE-Sync。

catkin_make在baseline_ws下编译即可成功。

3.PCM运行例子时遇到的问题


第一次运行直接在/pose_graph_datasets下运行,结果出错,原因是代码中需将优化结果输出到/result文件夹下,而/pose_graph_datasets下没有\result。

之后发现应该将输入文件复制到\robust_multirobot_map_merging-master下,并在该文件夹下运行node,就可以运行成功。

但是运行中出现了问题,最大团的优化结果应该是错的,因为输出的inlier_loop只有一个。。。

后续

4. 编译PCM最原始的代码

找到PCM最原始的代码,编译报错:

解决方法是在报错的代码中加入 #include<vector>,如下:

 成功解决该报错,但是出现了其他报错,如下图:

 查了一下 iota()是c++的赋值函数,用于对一定范围的数据进行赋值,需要加入头文件:

#include <numeric> 

通过在报错的cpp文件中加入该头文件,正确完成编译。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值