1.launch启动文件简介
到目前为止,每当我们需要运行一个ROS节点或工具时,都需要打开一个新的终端运行一个命令。当系统中的节点数量不断增加时,"每个节点一个终端"的模式会变得非常麻烦。那么有没有一种方式可以一次性启动所有节点呢?答案当然是肯定的。
启动文件(Launch File)便是ROS中一种同时启动多个节点的途径,它还可以自动启动ROS Master节点管理器,并且可以实现每个节点的各种配置,为多个节点的操作提供很大便利。
2.文件的基本元素
首先来看一个简单的launch文件,对其产生初步的概念。
这是一个简单而完整的launch文件,采用XML的形式进行描述,包含一个根元素<launch>
和两个节点元素<node>
。
2.1 <launch>
XML文件必须包含一个根元素,launch文件中中根元素采用<launch>
标签定义,文件中的其他内容都必须包含在这个<launch>
标签中。
2.2 <node>
启动文件的核心是启动ROS节点,采用<node>
标签定义,语法如
下:
<node pkg="该节点所在的功能包名称" type="该节点的可执行文件名称" name="定义节点运行的名称" />
从上面的定义规则可以看出,在启动文件中启动一个节点需要三个属性:pkg、type和name。其中pkg定义节点所在的功能包名称,type定义节点的可执行文件名称,这两个属性等同于在终端中使用rosrun命令执行节点时的输入参数。name属性用来定义节点运行的名称,将覆盖节点中init()赋予节点的名称,这是三个最常用的属性.
在某些情况下,我们还有可能用到以下属性:
- output="screen":将节点的标准输出打印到终端屏幕,默认输出为日志文档。
- respawn="true":复位属性,该节点停止时,会自动重启,默认为false。
- required="true":必要节点,当该节点终止时,launch文件中的其他节点也被终止。
- ns="namespace":命名空间,为节点内的相对名称添加命名空间前缀。
- args="arguments":节点需要的输入参数。
目前,我们只关注其中的标签元素,除了上面介绍的<launch>
和<node>
,这里还出现了<arg>
、<param>
、<remap>
,这些都是常用的标签元素。launch是ROS框架中非常实用、灵活的功能,它类似于一种高级编程语言,可以帮助我们管理启动系统时的方方面面。在使用ROS的过程中,很多情况下我们并不需要编写大量代码,仅需要使用已有的功能包,编辑一下launch文件就可以完成很多机器人功能。