ROS中的常用组件(一)——launch启动文件

ROS中的常用组件(一)——launch启动文件
每当需要运行一个ROS节点或工具时,都需要打开一个新的终端运行一个命令。
启动文件(Launch File)便是ROS中一种同时启动多个节点的途径,它还可以自动启动ROS Master节点管理器,并且可以实现每个节点的各种配置,为多个节点的操作提供很大便利。
一、基本元素
一个简单而完整的launch文件,采用XML的形式进行描述,包含一个根元素和两个节点元素
1、< launch >
XML文件必须包含一个根元素,launch文件中的根元素采用标签定义,文件中的其他内容都必须包含在这个标签中:

<launch>
    ...
<launch>

2、< node >
启动文件的核心是启动ROS节点,采用标签定义,语法如下:

<node pkg="package-name" type="executable-name" name="node-name" />

二、参数设置
为方便设置和修改,launch文件支持参数设置的功能,类似于编程语言中的变量声明。关于参数设置的标签元素有两个:< param >和< arg >,一个代表parameter,另一个代表argument。这两个标签元素翻译成中文都是“参数”的意思,但是这两个“参数”的意义是完全不同的。
1、< param >
parameter是ROS系统运行中的参数,存储在参数服务器中。在launch文件中通过< param >元素加载parameter;launch文件执行后,parameter就加载到ROS的参数服务器上了。每个活跃的节点都可以通过ros::param::get()接口来获取parameter的值,用户也可以在终端中通过rosparam命令获得parameter的值。
< param >的使用方法如下:

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

2、< arg >
argument是另外一个概念,类似于launch文件内部的局部变量,仅限于launch文件使用,便于launch文件的重构,与ROS节点内部的实现没有关系。
设置argument使用< arg >标签元素,语法如下:

<arg name="arg-name" defauit="arg-value"/>

launch文件中需要使用到argument时,可以使用如下方式调用:

<param name="foo" value="$(arg arg-name)" />
<node name="node" pkg="package" type="type" args="$(arg arg-name)" />

三、重映射机制
ROS的设计目标是提高代码的复用率,所以ROS社区中的很多功能包我们都可以拿来直接使用,而不需要关注功能包的内部实现。
ROS提供一种重映射的机制,简单来说就是取别名,类似于C++中的别名机制,我们不需要修改别人的功能包的接口,只需要将接口名称重映射一下,取一个别名,我们的系统就认识了(接口的数据类型必须相同)。launch文件中的< remap >标签可以帮助我们实现这个重映射功能。
四、嵌套复用
在复杂的系统中,launch文件往往有很多,这些launch文件之间也会存在依赖关系。如果要直接复用一个已有launch文件中的内容,可以使用< include >标签包含其他launch文件,这与C语言中的include几乎是一样的。

<include file="$(dirname)/other.launch" />

launch是ROS框架中非常实用、灵活的功能,它类似于一种高级编程语言,可以帮助我们管理启动系统时的方方面面。在使用ROS的过程中,很多情况下我们并不需要编写大量代码,仅需要使用已有的功能包,编辑一下launch文件就可以完成很多机器人功能。

猜你喜欢

转载自blog.csdn.net/weixin_45661757/article/details/112754953