ROS launch文件

2023-12-26 19:32:02

ROS中的launch文件是一种XML格式配置文件,主要用于同时启动和管理多个节点。这些节点可能提供一整套功能,例如机器人的各种传感器和执行器的驱动程序。

一个基本的launch文件不仅包括需要启动的节点信息,还可能包含参数、话题和服务等信息。这使得我们可以灵活地控制和配置每个节点的行为。

以下是对ROS节点运行管理launch文件的详细介绍和基本用法:

1、创建launch文件:

在launch目录下,创建一个新的XML文件,

例如:my_launch_file.launch。

XML文件必须包含一个根元素,launch文件中的根元素采用<launch>标签定义,文件中的其他内容都必须包含在这个标签中

<launch>

……

</launch>

2、launch文件的基本结构:

一个基本的launch文件通常包含以下元素:

?<launch>:这是整个launch文件的根元素。

?<node>:定义一个要启动的ROS节点,包括节点的可执行文件、参数和其他设置。

?<param>:在参数服务器上设置或重置参数。

?<arg>:定义命令行参数,可以在运行时通过roslaunch命令传入。

?<include>:包含其他launch文件,用于模块化和复用。

3、启动节点:

使用<node>标签来启动一个ROS节点。

语法如下:

<node pkg=”package-name”?type=”executable-name”?name=”node-name”?/>

在启动文件中,启动一个节点需要三个属性:pkg、typename

其中pkg定义节点所在的功能包名称,type定义节点的可执行文件名称,这两个属性等同于在终端中使用rosrun命令执行节点时的输入参数。

name属性用来定义节点运行的名称,将覆盖节点中init()赋予节点的名称。

这是三个最常用的属性,在某些情况下,还有可能用到以下属性:

output="screen":将节点的标准输出打印到终端屏幕,默认输出为日志文档。

respawn="true":复位属性,该节点停止时,会自动重启,默认为false。

required="true":必要节点,当该节点终止时,launch文件中的其他节点也被终止。

ns="namespace":命名空间,为节点内的相对名称添加命名空间前缀。

args = "arguments": 节点需要的输入参数。

4、设置参数:

为了方便设置和修改,launch文件支持参数设置的功能,类似于编程语言中的变量声明。关于参数设置的标签元素有两个:<param> <arg>,一个代表parameter,另一个代表argument。这两个标签元素"参数"的意义是完全不同的。

(1)<param>

parameter是ROS系统运行中的参数,存储在参数服务器中。在launch文件中通过<param> 元素加载parameter;launch文件执行后,parameter就加载到ROS的参数服务器上了。每个活跃的节点都可以通过 ros::param::get()接口来获取parameter的值,用户也可以在终端中通过 rosparam 命令获得 parameter的值。

<param>标签用于在ROS的参数服务器上设置或重置参数。参数服务器是一个全局的数据存储服务,所有节点都可以访问和修改其中的参数。

<param>的使用方法如下:

<param name="output_frame" value="odom"/>

运行launch文件后,output_frame这个parameter的值就设置为odom,并且加载到ROS 参数服务器上了。但是在很多复杂的系统中参数的数量很多,如果这样一个一个地设置会非常麻烦,ROS也为我们提供了另外一种类似的参数(<rosparam>)加载方式:

<rosparam file="$(find 2dnav_pr2)/config/costmap_common_params.yaml”command="load" ns="local_costmap" />

<rosparam>可以将一个YAML?格式文件中的参数全部加载到ROS参数服务器中,需要设置command属性为"load",还可以选择设置命名空间"ns"。

(2)<arg>

argument是另外一个概念,类似于launch文件内部的局部变量,仅限于launch文件使用,便于launch文件的重构,与ROS节点内部的实现没有关系。

用于在launch文件中定义命令行参数。这些参数可以在运行时通过roslaunch命令传入,

<arg>标签用于设置节点运行时的参数,这些参数只能在对应的节点内部使用。

语法如下:

<launch>

??...

??<node name="node_name" pkg="package_name" type="executable_name">

????<arg name="parameter_name" default="default_value"/>

????...

??</node>

??...

</launch>

????其中,parameter_name 是要设置的参数名称,default_value 是参数的默认值。如果运行launch文件时没有提供该参数的值,将使用默认值。

5、运行launch文件:

使用roslaunch命令运行launch文件:

例如:roslaunch my_package my_launch_file.launch [args]

[args]是可选的,可以用来传入命令行参数。

文章来源:https://blog.csdn.net/2301_79503228/article/details/135228640
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。