4.3 launch之xml、yaml实现
4.3 launch之xml、yaml实现
本节主要介绍 launch 文件的 xml 与 yaml 实现语法。xml 与 yaml 实现语法雷同,所以本节会将二者集合在一起介绍。4.3.1 节点设置
需求:launch 文件中配置节点的相关属性。
示例:
在 cpp01_launch/launch/xml 目录下新建 xml01_node.launch.xml 文件,输入如下内容:

在 cpp01_launch/launch/yaml 目录下新建 yaml01_node.launch.yaml 文件,输入如下内容:

代码解释:
在XML 实现中 node 标签用于表示节点,其属性包含:
pkg:功能包;
exec:可执行文件;
name:节点名称;
namespace:命名空间;
exec_name:流程标签;
respawn:节点关闭后是否重启;
args:调用指令时的参数列表;
ros_args:相当于 args 前缀 --ros-args。
node 标签的子级标签包含:
param,设置参数的标签,其属性包含:
name:参数名称;
value:参数值;
from:参数文件路径;
remap,话题重映射标签,其属性包含:
from:原话题名称;
to:新话题名称。
YAML 实现规则与之类似。
4.3.2 执行指令
需求:在 launch 文件中执行 ROS2 命令,以简化部分功能的调用。
示例:
在 cpp01_launch/launch/xml 目录下新建 xml02_cmd.launch.xml 文件,输入如下内容:

在 cpp01_launch/launch/yaml 目录下新建 yaml02_cmd.launch.yaml 文件,输入如下内容:

代码解释:
在 XML 实现中 executable 标签用于表示可执行指令,其属性包含:
cmd:被执行的命令;
output:日志输出目的地设置。
YAML 实现规则与之类似。4.3.3 参数设置
需求:启动turtlesim_node节点时,可以动态设置背景色。
示例:
在 cpp01_launch/launch/xml 目录下新建 xml03_args.launch.xml 文件,输入如下内容:

在 cpp01_launch/launch/yaml 目录下新建 yaml03_args.launch.yaml 文件,输入如下内容:

代码解释:
在 XML 实现中,arg 标签用于声明参数,其属性包含:
name:参数名称;
default:参数默认值。
参数的调用语法为:
$(var 参数名称)。
可以在启动 launch 文件时动态传入参数,其语法与 Python 格式实现的 launch 文件一致。
YAML 实现规则与之类似。4.3.4 文件包含
需求:新建 launch 文件,包含 4.2.3 中的 launch 文件并为之传入设置背景色相关的参数。
示例:
在 cpp01_launch/launch/xml 目录下新建 xml04_include.launch.xml 文件,输入如下内容:

在 cpp01_launch/launch/yaml 目录下新建 yaml04_include.launch.yaml 文件,输入如下内容:

代码解释:
在 XML 实现中,include 标签用于实现文件包含,其属性如下:
file:被包含的launch文件的路径。
let 标签用于向被包含的 launch 文件中导入参数,其属性如下:
name:参数名称;
value:参数值。
YAML 实现规则与之类似。4.3.5 分组设置
需求:对 launch 文件中的多个 Node 进行分组。
示例:
在 cpp01_launch/launch/xml 目录下新建 xml05_group.launch.xml 文件,输入如下内容:

在 cpp01_launch/launch/yaml 目录下新建 yaml05_group.launch.yaml 文件,输入如下内容:

代码解释:
在 XML 实现中,group 标签用于分组,其子标签如下:
push_ros_namespace:可以通过该标签中的 namespace 属性设置组内节点使用的命名空间。
node:节点标签。
YAML 实现规则与之类似。

B站有完整的ros系列教程视频,可以观看完整内容ros课程ROS2理论与实践
更多内容将在猛狮知识星球社区更新最新课程,后续将推出更多优质内容——详情可关注猛狮集训营公众号和猛狮集训营官方网站。