关于 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 toolkit
:http://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
.
的分支
希望对您有所帮助!
在执行 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。
我是 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
.
希望对您有所帮助!