关于ROS_RMPT_SLAM包编译问题

时间:2017-08-23 04:45:04

标签: compatibility mrpt

在执行catkin_make ROS_MRPT_SLAM时,我收到了以下错误

In file included from /usr/include/mrpt/base/include/mrpt/utils/CFileGZInputStream.h:12:0,
                 from /home/ian/catkin_ws/src/mrpt_slam/mrpt_ekf_slam_2d/include/mrpt_ekf_slam_2d/mrpt_ekf_slam_2d.h:11,
                 from /home/ian/catkin_ws/src/mrpt_slam/mrpt_ekf_slam_2d/src/mrpt_ekf_slam_2d.cpp:7:
/usr/include/mrpt/base/include/mrpt/utils/CStream.h: In member function ‘void mrpt::utils::CStream::WriteVariant(T)’:
/usr/include/mrpt/base/include/mrpt/utils/CStream.h:313:15: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
   t.match([&](auto& o) { this->WriteObject(o); });
               ^
/usr/include/mrpt/base/include/mrpt/utils/CStream.h: In lambda function:
/usr/include/mrpt/base/include/mrpt/utils/CStream.h:313:45: error: no matching function for call to ‘mrpt::utils::CStream::WriteObject(int&)’
   t.match([&](auto& o) { this->WriteObject(o); });

我猜这是兼容性问题,因为缺少头文件等等。

这是ROS_PACKAGE wiki:http://wiki.ros.org/mrpt_slam

我只是遵循官方MRPT网站的指示。

如果开发人员或熟悉mrpt toolkit的任何人看到此问题,我可以就这些错误获得一些建议吗?

顺便说一下,我使用以下网站的说明安装了mrpt toolkithttp://www.mrpt.org/MRPT_in_GNU/Linux_repositories

1 个答案:

答案 0 :(得分:0)

我是MRPT的主要作者和部分ROS包。

很抱歉这个烂摊子,但你发现我们处于mrpt系列1.5。*之间的转换和基于C ++ 14的新市长重写,目前以git格式发布为mrpt 1.9.9并最终将发布为2.0.0。

此转换必须传播到ros节点,但到目前为止我们只升级了mrpt_navigation,mrpt_slam位于待办事项列表中。

所以:解决方案是安装1.5。*系列的mrpt版本,并从源代码构建ros包,注意检查名为compat-mrpt-1.5的分支。

希望这有帮助!