ROS使用自定义全局路径规划器编译时报错 ‘xxx’ is not a member of ‘pcl::traits’的解决方法

   当我们将自己编写的全局路径规划器插件放到工作空间下进行编译的时候,可能会报一堆错误,主要的错误提示为‘xxx’ is not a member of ‘pcl::traits
   其中的xxx代表某一名词,如plus、plusscalar、minus等,如下图所示:

ROS使用自定义全局路径规划器编译时报错 ‘xxx’ is not a member of ‘pcl::traits’的解决方法_第1张图片

   以上错误的原因大概率是编译时没有设定C++编译器的版本导致的,需要在CMakeLists.txt文件中设定,在CMakeLists.txt文件中添加以下语句,设定为C++14,插入位置如下图所示:

set(CMAKE_CXX_STANDARD 14)
ROS使用自定义全局路径规划器编译时报错 ‘xxx’ is not a member of ‘pcl::traits’的解决方法_第2张图片

   (注意:不要插在文件的最后,插在最后无效)

   还有就是CMakeLists.txt文件属于受保护的文件,修改后,需要权限才能保存修改,我是使用VS Code打开这个CMakeLists.txt文件文件的,修改完点击保存的时候,右下角会弹出提示权限不足,如下图所示:

ROS使用自定义全局路径规划器编译时报错 ‘xxx’ is not a member of ‘pcl::traits’的解决方法_第3张图片

   选择以超级用户身份重试,然后在弹出的界面,输入用户密码就可以了,如下图所示:

ROS使用自定义全局路径规划器编译时报错 ‘xxx’ is not a member of ‘pcl::traits’的解决方法_第4张图片

   输完密码,点击认证就可以成功保存了

   此时,再编译我们的工作空间,就可以成功编译了,如下图所示:

ROS使用自定义全局路径规划器编译时报错 ‘xxx’ is not a member of ‘pcl::traits’的解决方法_第5张图片

你可能感兴趣的:(Ubuntu和ROS,ROS,Cmake,move_base,自定义全局路径规划器,移动机器人导航)