在执行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 toolkit
:http://www.mrpt.org/MRPT_in_GNU/Linux_repositories。
答案 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
的分支。
希望这有帮助!