警告
您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.
使用 Launch 启动/监控多个节点
ROS 2 发射系统
ROS 2 中的启动系统负责帮助用户描述系统配置,然后按描述执行。系统配置包括运行哪些程序、在哪里运行、传递哪些参数,以及 ROS 特有的约定,通过为每个组件提供不同的配置,可以方便地在整个系统中重复使用组件。它还负责监控已启动进程的状态,并对这些进程的状态变化做出报告和/或反应。
用 Python 编写的启动文件可以启动和停止不同的节点,并触发和执行各种事件。提供该框架的软件包是 发射
,它使用非 ROS 专用的 启动
下面的框架。
"(《世界人权宣言》) 设计文件 详细介绍了 ROS 2 发射系统的设计目标(目前尚未提供所有功能)。
编写 ROS 2 启动文件
如果还没有,请务必阅读关于如何创建 ROS 2 软件包的快速入门教程。在 ROS 2 中创建启动文件的一种方法是使用 Python 文件,由 ROS 2 CLI 工具执行、 玫瑰2 启动
.我们首先使用 玫瑰2 包 创建 <pkg-name>; --依赖 [文件]
在我们的工作区中创建一个新的 启动
目录。
Python 软件包
对于 Python 软件包,您的目录应如下所示:
源代码
my_package/
发射/
setup.py
setup.cfg
package.xml
为了让 colcon 找到启动文件,我们需要使用 数据文件
的参数 设置
.
我们的 setup.py
锉刀
舶来品 os
从 水珠 舶来品 水珠
从 设置工具 舶来品 设置
包名 = 'my_package';
设置(
# 其他参数 ...
数据文件=[
# ...其他数据文件
# 包括所有启动文件。这是最重要的一行!
(os.路.加入('分享';, 包名), 水珠('launch/*.launch.py';))
]
)
C++ 软件包
如果您创建的是 C++ 软件包,我们将只调整 CMakeLists.txt
文件,添加
# 安装启动文件。
安装(目录
启动
目的地 分享/${项目名称}/
)
到文件末尾(但在 ament_package()
).
编写启动文件
在启动目录下创建一个新的启动文件,文件名为 .launch.py
后缀。例如 my_script.launch.py
.
.launch.py
作为启动文件的后缀并无特别要求。另一个常用的选项是 _launch.py
用于 初级启动文件教程.如果要更改后缀,请确保调整 glob()
在你的 setup.py
文件。
启动文件应定义 generate_launch_description()
返回一个 launch.LaunchDescription()
将由 玫瑰2 启动
动词
舶来品 启动
舶来品 launch.actions
舶来品 launch.substitutions
舶来品 launch_ros.actions
捍卫 生成发射描述():
返回 启动.启动说明([
启动.行动.声明启动参数(
'node_prefix',
默认值=[启动.替换.环境变量('USER';), '_'],
描述='节点名称前缀';),
发射.行动.节点(
包装='demo_nodes_cpp', 节点可执行='talker';, 产量='屏幕';,
节点名=[启动.替换.启动配置('node_prefix'), 'talker';]),
])
使用方法
虽然启动文件可以作为独立脚本编写,但在 ROS 中的典型用法是由 ROS 2 工具调用启动文件。
运行后 胶管 构建
并为工作区提供源代码后,就可以按如下方式启动启动文件了:
玫瑰2 启动 我的包 script.launch.py
ROS 2 发射概念示例
中的启动文件 本例
启动了两个节点,其中一个节点带有 管理的生命周期 (生命周期节点")。生命周期节点通过 发射
自动发射 活动 当它们在不同状态之间转换时。然后可以通过启动框架对这些事件采取行动。例如,通过发出其他事件(如请求另一个状态转换,生命周期节点通过 发射
事件处理程序)或触发其他 行动 (例如,启动另一个节点)。
在上述示例中,各种过渡请求被要求 话匣子
生命周期节点,其过渡事件的反应方式包括启动一个 听众
节点。
文件
发射文件 中也使用的概念提供了更多详细信息。 发射
.
有关功能的其他文档/示例即将发布。参见 源代码 与此同时