在ROS中,每个节点通常有许多参数需要设置,为了方便高效操作多个节点,可以编写launch文件,然后用roslaunch命令运行
使用方式:
roslaunch [options] [package]<filename>[arg_name:=value...]
roslaunch [options] <filename>[<filename>...][arg_name:=value...]
launch文件的一般格式,参数
<launch>
<node .../>
<rosparam .../>
<param .../>
<include .../>
<env .../>
<remap .../>
<arg.../>
</launch>
任何一个launch文件的重点都是,节点node元素的集合,启动的每一个节点node都要有自己独一无二的名字name,如果node节点元素有children,就需要显式标签来定义,children比如是:remap元素或者是param元素。显式关闭标签的形式:
<node pkg="" type="" name=""></node>
<launch>
<include file="$(find region_cover_start)/launch/amcl.launch.xml" />
<node pkg="mapfile_genrate" name="mapfile_genrate_node" type="main.py" respawn="false" output="screen">
<rosparam file="$(find common_param)/param/$(env VIEW_ROBOT)_track_footprint.yaml" command="load" />
<remap from="scan" to="base_scan"/>
<param name="/use_sim_time" value="true" />#node的children, param元素
<rosparam file="$(find cleaning_info_catch)/param/cleaning_info_catch.yaml" command="load" />
</node> #显示关闭标签node
</launch>
pkg为节点的功能包,程序包名字
type为需要运行的那个节点,可执行文件的名字
name为节点的名字,
拓展属性:
1.output="screen"输出结果显示在屏幕上, 一般在node元素中使用output属性
2。 respawn="true",启动完所有请求的节点之后,roslaunch监测每一个节点,让他们保持正常的运行状态,对于每一个节点,当它终止时,可以要求roslaunch重新启动它。
-remap标签
在launch文件中重新命名,使用remap元素
<remap from="original-name" to="new-name" />
-include标签
1.file属性
<include file="path-to-launch-file" />
包含其他文件,这个file属性期望我们添加想要包含的文件的完整路径。但是大多数时候,include元素使用一个find命令来搜索一个程序包,代替一个明确的完整路径
<include file="$(find package-name)/launch-file-name" />
这样做是正确的
<include file = "find learning_tutrols"/launch/start_demo.launch" / >
这样做是错误的
<include file = "find learning_tutrols"/start_demo.launch" />
rosparam
rosparam命令一次性的将多个参数加载到参数服务器。