ROS中的launch文件是一种XML格式的配置文件,主要用于同时启动和管理多个节点。这些节点可能提供一整套功能,例如机器人的各种传感器和执行器的驱动程序。
一个基本的launch文件不仅包括需要启动的节点信息,还可能包含参数、话题和服务等信息。这使得我们可以灵活地控制和配置每个节点的行为。
以下是对ROS节点运行管理launch文件的详细介绍和基本用法:
1、创建launch文件:
在launch目录下,创建一个新的XML文件,
例如:my_launch_file.launch。
XML文件必须包含一个根元素,launch文件中的根元素采用
……
2、launch文件的基本结构:
一个基本的launch文件通常包含以下元素:
:在参数服务器上设置或重置参数。
3、启动节点:
使用
语法如下:
在启动文件中,启动一个节点需要三个属性:pkg、type和name。
其中pkg定义节点所在的功能包名称,type定义节点的可执行文件名称,这两个属性等同于在终端中使用rosrun命令执行节点时的输入参数。
name属性用来定义节点运行的名称,将覆盖节点中init()赋予节点的名称。
这是三个最常用的属性,在某些情况下,还有可能用到以下属性:
output="screen":将节点的标准输出打印到终端屏幕,默认输出为日志文档。
respawn="true":复位属性,该节点停止时,会自动重启,默认为false。
required="true":必要节点,当该节点终止时,launch文件中的其他节点也被终止。
ns="namespace":命名空间,为节点内的相对名称添加命名空间前缀。
args = "arguments": 节点需要的输入参数。
4、设置参数:
为了方便设置和修改,launch文件支持参数设置的功能,类似于编程语言中的变量声明。关于参数设置的标签元素有两个: 和<arg>,一个代表parameter,另一个代表argument。这两个标签元素"参数"的意义是完全不同的。
(1)
parameter是ROS系统运行中的参数,存储在参数服务器中。在launch文件中通过 元素加载parameter;launch文件执行后,parameter就加载到ROS的参数服务器上了。每个活跃的节点都可以通过 ros::param::get()接口来获取parameter的值,用户也可以在终端中通过 rosparam 命令获得 parameter的值。
标签用于在ROS的参数服务器上设置或重置参数。参数服务器是一个全局的数据存储服务,所有节点都可以访问和修改其中的参数。
运行launch文件后,output_frame这个parameter的值就设置为odom,并且加载到ROS 参数服务器上了。但是在很多复杂的系统中参数的数量很多,如果这样一个一个地设置会非常麻烦,ROS也为我们提供了另外一种类似的参数(
(2)
argument是另外一个概念,类似于launch文件内部的局部变量,仅限于launch文件使用,便于launch文件的重构,与ROS节点内部的实现没有关系。
用于在launch文件中定义命令行参数。这些参数可以在运行时通过roslaunch命令传入,
语法如下:
...
...
...
其中,parameter_name 是要设置的参数名称,default_value 是参数的默认值。如果运行launch文件时没有提供该参数的值,将使用默认值。
5、运行launch文件:
使用roslaunch命令运行launch文件:
例如:roslaunch my_package my_launch_file.launch [args]
[args]是可选的,可以用来传入命令行参数。