launch文件是一种遵循XML语法的文件,在ROS中我们用它来批量启动ROS节点。
以前面文章的话题通信为例,我们需要开启三个终端,分别运行:
roscore
rosrun test message_test_node
rosrun test_subscriber subscriber_node
如果一个项目有几十个节点,这样做肯定不行。
我们可以在随便一个软件包里新建一个launch。当我们使用指令启动launch文件时,会自动对指定的软件包的目录遍历搜索。所以launch文件放在子目录里也行。为方便管理,可以创建一个新的子目录用来放launch文件。
文件名称:test.launch,文件内容如下:
<launch>
<node pkg="test" type="message_test_node" name="message_test_node"/>
<node pkg="test_subscriber" type="subscriber_node" name="subscriber_node"/>
</launch>
按照上面代码的格式写就行。
pkg="包名" type="要执行节点的可执行文件的名称(catkin_make构建的结果)" name="运行时给节点起的名字"
我认为我们可以启动多个节点,这些节点运行的是同一份节点代码,只要name别重复就行。
这里有一个疑问,launch文件的name和节点的cpp文件里的ros::init函数的第三个参数我不知道有什么区别,我问chatgpt说的是它们都用于指定节点名称,但ros::init
更多地用于在代码内部指定,而 launch
文件中的 name
提供了一个更灵活的方式来在启动时配置节点的名称。
写好launch文件就可以使用roslaunch来启动多个节点了。
新开一个终端,执行:
效果如下:
标签:文件,name,launch,test,ROS,节点 From: https://blog.csdn.net/m0_74409155/article/details/145139655