launch文件 通过XML形式描述
实现多节点的一键配置与启动
XML文件必须包含一个根元素
launch文件的根元素是
结束标志
设置节点 Node
name为运行后在ROS节点群中的名字叫什么
name将覆盖node中ros_init赋予的名字
type为节点自身的可执行文件的名字
pkg为节点自身所在功能包的名字
可选部分:
output="screen"输出到屏幕上
respawn=“true”节点被kill自动复活节点
required="true"设置为必要节点,该节点被kill时其他节点也被kill
ns="namespace"命名空间,为节点相对名称添加命名空间前缀
args=“arguments” 其他参数
<node pkg=name="set_by_you_node_name" "package_name" type="executableFile_name" output="screen" />
设置参数 Parameter
Parameter参数在launch后会存储在参数服务器供其他节点调用
1.单个参数
<param name="output_frame" value="odom"/>
2.多个参数
A: 123
B: "hello"
group:
C: 456
D: "HELLO"
yaml里的 group是命名空间 为了避免资源冲突
yaml格式十分严格,在其中若有 :后面必须加空格
其中空格有缩进的作用,用于表示层级
将yaml格式文件里的参数全部上传,可以选择设置命名空间ns
<rosparam file="params.yaml" command="load" ns="params"/>
3.在launch文件内设置局部变量
arg和ROS节点内部的功能实现没有关系
是launch文件内部的局部变量
<arg name="arg_name" default="arg_value"/>
调用:
<param name="foo" value="$ (arg arg-name)"/>
<node name="node" pkg="pkg" type="type" args="$(arg arg-name)"/>
remap
重映射 重命名
当需要用别人的东西的时候
比如自己的速度控制指令是叫/cmd_vel
想用其他人分享的速度控制指令/turtlebot/cmd_vel
无须修改对方提供的功能包接口,只需要给接口起别名就行了
即可将/turtlebot/cmd_vel" 重映射为"/cmd_vel"
<remap from="/turtlebot/cmd_vel" to="/cmd_vel"/>
from=映射前原名
to=映射后名字
include
launch文件的嵌套,可以把其他launch文件一并加载
<include file="$(dirname)/other.launch"/>
详细标签文档可参考https://wiki.ros.org/roslaunch/XML