ROS学习笔记(番外)--ROS编程错误整理

注:错误持续更新…

一.ROS错误整理

1.The target name “test” is reserved or not valid for certain CMake features

CMake Error at lc/CMakeLists.txt:140 (add_executable):
  The target name "test" is reserved or not valid for certain CMake features,
  such as generator expressions, and may result in undefined behavior.

错误原因:test是ROS里的关键字,.cpp文件以test命名。
解决办法:将文件用别的名字命名。

2.what(): Character [ ] at element [9] is not valid in Graph Resource Name [cloud_syn ]. Valid characters are a-z, A-Z, 0-9, / and

terminate called after throwing an instance of 'ros::InvalidNameException'
  what():  Character [ ] at element [9] is not valid in Graph Resource Name [cloud_syn ].  Valid characters are a-z, A-Z, 0-9, / and _.
已放弃 (核心已转储)

错误原因:阅的话题后有空格,如下:

#订阅的话题后有空格就会出现这个错误
ros::Subscriber sub=n.subscribe("cloud_syn  ",1,callback);

解决办法:删除多余的空格。

3. This workspace contains non-catkin packages in it, and catkin cannot build

CMake Error at /opt/ros/melodic/share/catkin/cmake/catkin_workspace.cmake:100 (message):
  This workspace contains non-catkin packages in it, and catkin cannot build
  a non-homogeneous workspace without isolation.  Try the
  'catkin_make_isolated' command instead.
Call Stack (most recent call first):
  CMakeLists.txt:69 (catkin_workspace)

错误原因:catkin_ws/src里面包含了不是ROS(直接或间接)支持的包,不能catkin_make。
解决办法:移出对应的文件夹。

4.对‘ros::init(int&, char**, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned int)’未定义的引用

编译过程中出现如下问题:

CMakeFiles/obstaclepcl_node.dir/src/environment.cpp.o:在函数‘main’中:
environment.cpp:(.text.startup+0x80):对‘ros::init(int&, char**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)’未定义的引用
environment.cpp:(.text.startup+0xcc):对‘ros::NodeHandle::NodeHandle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&)’未定义的引用
environment.cpp:(.text.startup+0x288):对‘ros::NodeHandle::~NodeHandle()’未定义的引用
environment.cpp:(.text.startup+0x320):对‘ros::NodeHandle::~NodeHandle()’未定义的引用
CMakeFiles/obstaclepcl_node.dir/src/environment.cpp.o:在函数‘_GLOBAL__sub_I_environment.cpp’中:
environment.cpp:(.text.startup+0x5b8):对‘ros::Publisher::~Publisher()’未定义的引用
environment.cpp:(.text.startup+0x5c0):对‘ros::Publisher::~Publisher()’未定义的引用
collect2: error: ld returned 1 exit status
obstaclepcl/CMakeFiles/obstaclepcl_node.dir/build.make:399: recipe for target '/home/nvidia/EnvironmentalPerception/devel/lib/obstaclepcl/obstaclepcl_node' failed
make[2]: *** [/home/nvidia/EnvironmentalPerception/devel/lib/obstaclepcl/obstaclepcl_node] Error 1
CMakeFiles/Makefile2:1084: recipe for target 'obstaclepcl/CMakeFiles/obstaclepcl_node.dir/all' failed
make[1]: *** [obstaclepcl/CMakeFiles/obstaclepcl_node.dir/all] Error 2
Makefile:145: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j8 -l8" failed

错误原因:CMakeLists.txt编写错误。
解决办法:在CMakeLists.txt添加如下:

target_link_libraries(* ${catkin_LIBRARIES})
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值