在之前我们每次运行一个节点都需要新开一个Terminal,运行rosrun命令。当节点数量增加时,我们开的Terminal也会越来越多。launch就是为解决此问题而出现,可以把launch开作是启动一系列节点、进程的批处理脚本。
launch文件最基本的元素就是launch和node标签。一个基本的launch文件如下:
<launch>
<node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node" />
</launch>
<launch>
是根元素;
<node>
是核心节点,表示启动ROS节点。
节点属性说明:
pkg:定义节点所在功能包名称;
type:定义节点可执行文件名称;
name:表示节点运行时的名称,会覆盖init_node指定的名称。
其它可用属性说明:
output=“screen”:将节点的标准输出打印到Terminal屏幕上,默认是输出到日志文件;
respawn="true":当节点停止时,会自动重启,默认为false;
required="true":当节点终止时,launch文件中的其它节点也会被终止;
ns=“namespace”:命名空间,为节点内的相对名称添加命名空间前缀;
args=“arguments”:节点需要的输入参数。
嵌套复用
launch文件中包含另外一个launch文件
<include file="$(dirname)/other.launch" />
重映射机制
<remap from="/turtlebot/cmd_vel" to="/cmd_vel" />
将话题重映射为新的名称,这时发布信息时就要用新名称了,原名称就不能用了。