[ROS][开发踩坑记录](1)launch文件使用:Cannot locate node of type [xxx] in package [xxx]
开发踩坑记录
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
时对其作的命名即可。
4、rviz文件集成在launch文件
rviz文件集成在launchn文件中时,需要将打开rviz的操作置于所有操作的末尾。[目前原因未知]
否则,不能打开指定的rviz文件。