关于 ROS_RMPT_SLAM 包编译问题

About ROS_RMPT_SLAM package compiling issue

在执行 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

我是 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.

的分支

希望对您有所帮助!