[ROS][开发踩坑记录](1)launch文件使用:Cannot locate node of type [xxx] in package [xxx]

[ROS][开发踩坑记录](1)launch文件使用:Cannot locate node of type [xxx] in package [xxx]

开发踩坑记录

  • [ROS][开发踩坑记录](1)launch文件使用:Cannot locate node of type [xxx] in package [xxx]
    • 1、`launch`文件简述
    • 2、`launch` 文件内容
    • 3、错误出现的原因
    • 【参考】

1、launch文件简述

由于ROS每次调用程序都需要执行一次 rosrun 指令,在一次调用多个功能时,这样的操作显然会降低测试效率,因此ROS官方给出了一种 launch 文件的操作方法来一次性执行多个 功能节点。

2、launch 文件内容

<launch>
    <node pkg="helloworld" type="demo_hello" name="hello" output="screen" />
    <node pkg="turtlesim" type="turtlesim_node" name="t1"/>
    <node pkg="turtlesim" type="turtle_teleop_key" name="key1" />
launch>

其中

  • node -> 包含的某个节点
  • pkg-> 功能包
  • type->被运行的节点文件
  • name->为节点的命名
  • output->设置日志的输出目标

3、错误出现的原因

根据 2 节中所述 ,很容易将 c++ 程序的文件名填入 type 栏下 ,这样会导致launch 文件在查找 可执行文件 时误将 xxx.cpp 文件当作可执行文件,而实际上,由该 xxx.cpp编译出可执行文件才是执行的目标,在 配置 CMakeLists.list 时已经对该编译作了文件命名 name 。【该原因为猜测】
如下:

# 找到136行的  去除注释符号 并修改为
add_executable(功能节点名 src/helloros_c.cpp)
# 找到149行的函数  去除注释符号 并修改为
target_link_libraries(功能节点名
	${catkin_LIBRARIES}
)	

因此,对于c++程序,将 type 栏 填写为 配置 CMakeLists.list 时对其作的命名即可。

【参考】

  • ROS 中的 launch 文件
  • 赵虚左ROS开发

你可能感兴趣的:(ROS开发,链表,指针,数据结构)