launch文件:通过xml文件实现多节点的配置和启动(ROS Master也可通过它启动)
使用launch文件来启动多节点就可以省去开启多终端的麻烦,操作也更精准
语法
launch文件中的根元素定义
<launch>
...
</launch>
node 启动节点
<node pkg="package-name" type="executable-name" name="node-name" />
#需要配置节点参数时
<node pkg="package-name" type="executable-name" name="node-name" >
<param name="output_frame" value="odom"/>
<rosparam file="params.yaml" command="load" ns=“params"/>
</node>
pkg:节点所在的功能包名称
type:节点的可执行文件名称
name:节点运行时的名称
区分运行时名称则可使一个文件同时以不同身份运行
output :在终端输出日志信息
respawn :启动失败重启
required :是否要求该节点必须启动
ns :命名空间,避免冲突
args:用指令给节点输入参数
参数设置
param/rosparam 设置ROS系统运行中的参数,存储在参数服务器中
param:保存某个参数
rosparam:载入参数文件的所有参数
<param name="output_frame" value="odom"/> #name:参数名,value:参数值
<rosparam file="params.yaml" command="load" ns=“params"/> #加载参数文件中的多个参数
file可通过$(find package-name)/config/param.yaml来得到文件地址
find为搜索功能包指令
arg,launch文件内部的局部变量,仅限于launch文件使用
<arg name="arg-name" default="arg-value" /> #name:参数名,value:参数值
调用方式
<param name="foo" value="$(arg arg-name)" />
<node name="node" pkg="package" type="type " args="$(arg arg-name)" />
注:param的参数存在参数服务器,arg是launch文件内部的
remap 重映射ROS计算图资源的命名
可理解为重命名
<remap from="/turtlebot/cmd_vel" to="/cmd_vel"/>
#from:原命名,to:映射之后的命名
include 嵌套,包含其他launch文件,类似C语言中的头文件包含
<include file="$(dirname)/other.launch" />
#file:包含的其他launch文件路径
更多标签用法可见
http://wiki.ros.org/roslaunch/XML
应用
- 在工作空间的src目录下新建launch功能包,不需要编程依赖
- 在功能包下创建launch(可自定义)文件夹,用于管理功能包各种资源
- 将需要的launch文件放入launch文件夹
- 编译工作空间和运行
$ catkin_make
$ roslaunch package-name file-name