标签与标签之间可以相互调换位置,标签的作用域会相对应的有所改变,根据实际用途修改。
重要部分:
<!--launch标签表示这是launch文件--!>
<launch>
<!--从此之后的original-name都用new-name代替--!>
<!--如果仅是在组内,则对组内成员有效,作用域有限制--!>
<remap from="original-name" to="new-name" />
<!--group标签分组,ns属性定义命名空间,使用if或者unless来决定是启用还是跳过该组内节点,1或0--!>
<group ns="turtl_1" if="$(arg arg-name)" unless="$(arg arg-name)">
<!--node标签表示节点,pkg属性表示包名,name属性表示节点名称,type属性表示可执行文件的名字--!>
<node pkg="turtlesim" name="turtlesim" type="turtlesim_node">
<!--output = “screen”表示将节点输出输出到屏幕上--!>
<!--respawn=”true” 表示若节点关闭,则重新启动--!>
<!--required=”true”表示必需节点关闭之后,关闭其他所有节点--!>
<!--launch-prefix = “command-prefix”表示在rosrun之前的控制台命令,例子如下--!>
<!--launch-prefix=”xterm -e”相当于 xterm -e rosrun turtlesim turtle_teleop_key.--!>
<!--xterm表示新开终端--!>
<!-- -e 参数告诉 xterm :执行其命令行剩余部分(rosrun turtlesim turtle_teleop_key)--!>
<!--ns = “namespace” 表示自己的命令空间--!>
<!--args属性,传递参数到节点--!>
<!--args="arg_1 arg_2 ....."--!>
</node>
</group>
<group ns="turtl_2">
<!--group中的param标签,相当于rosparam set--!>
<param name="param-name" value="param-value" />
<node pkg="turtlesim" name="turtlesim" type="turtlesim_node">
<!--node标签中的param标签设置为该节点的子元素,私有参数--!>
<param name="param-name" value="param-value" />
<!--加载param文件,一次加载大量parm参数--!>
<rosparam command="load" file="path-to-param-file" />
</node>
</group>
<!--包含其他我们需要的文件,各类都行--!>
<!--<include file="$(find package-name)/launch-file-name" />--!>
<include file="path-to-launch-file" ns="namespace_name"/>
<!--将文件内容推送到某命名空间下--!>
<!--arg标签,设置局部参数值,本launch文件内用的,default和value二选一 --!>
<!--default表示可通过控制台修改,value设置不可通过控制台修改--!>
<arg name="arg-name" default="arg-value" value="arg-value"/>
<!--arg参数无法直接传递到include file的file里面去使用--!>
<include file="path-to-launch-file">
<!--自己单独再写一遍--!>
<arg name="arg-name" value="arg-value"/>
<!--将外界arg-name的值赋给内部file的arg-name--!>
<arg name="arg-name" value="$(arg arg-name)" />
</include>
</launch>