一、概念
Launch文件是ROS提供的,可以同时运行多个nodes的文件。Launch文件以一种特殊的XML格式编写,在ROS packages中使用广泛。相较于rosrun, rosrun只能运行一个node, roslaunch可以同时运行多个node,而且roslaunch运行前会检测rosmaster是否启动,如果没启动则自动启动。
二、新建launch文件
launch文件一般以.launch后缀作为文件名,放在package的launch文件夹下, Launch文件是XML文件。
三、launch文件中标签
3.1 launch标签
每个XML文件必须有一个root element。而launch文件的root element由一对launch 标签定义。
<launch>
...
</launch>
Launch文件中的其他elements必须都在这一对tags之间。
launch标签中有一个属性:deprecated="弃用声明",可用来告知用户当前的launch文件已经弃用
3.2 node标签
launch文件的核心是一系列node elements,每个node element启动一个node。node element如下:
<node pkg=”package_name” type=”executable_name” name=”node_name”/>
每个node节点都是一个rosrun。并且每个node节点中都必须包含pkg,type,name三个属性,还可以包含output,respawn,required,ns等属性。
1.属性
pkg="包名" 节点所属的包
-
type="nodeType" 节点类型(与之相同名称的可执行文件名,即如果是py文件则 文件名.py,如果是cpp文件直接写编译后生成的可执行文件即可)
-
name="nodeName"
节点名称(在 ROS 网络拓扑中节点的名称)
-
args="xxx xxx xxx" (可选) :将参数传递给节点
-
machine="机器名" : 在指定机器上启动节点
-
respawn="true | false" (可选):如果节点退出,是否自动重启
-
respawn_delay=" N" (可选):如果 respawn 为 true, 那么延迟 N 秒后启动节点
-
required="true | false" (可选):该节点是否必须,如果为 true,那么如果该节点退出,将杀死整个 roslaunch
-
ns="xxx" (可选):在指定命名空间 xxx 中启动节点,命名空间即ros网络拓扑中节点前缀,这样做有助于避免节点重复
-
output="log | screen" (可选):日志发