ROS 2 — 托管(生命周期)节点简介

一、说明

这篇文章是关于理解ROS 2中托管(生命周期)节点的概念。我们描述了概念性的想法以及我们为什么需要它*。*所以让我们开始吧!

二、托管式节点 --- 什么和为什么?

为了理解托管式节点,让我们从一个简单的问题陈述开始。

假设您正在处理一个具有 5 个节点的 ROS 项目,其中一个节点用于从相机获取图像。

我们通常做的是,我们用发布者为相机创建一个普通节点。一旦此节点启动,它将加载设备驱动程序,配置相机并开始发布图像。

但是,如果我们想对这个节点有更多的控制呢?

假设节点已启动,但我们希望确定何时加载设备驱动程序、何时启动相机、何时开始和结束发布、何时取消配置相机。我们甚至希望控制发布 --- 我们选择在运行时暂停和恢复发布。

一个普通的ROS节点在这里不足(至少没有我们在内部保存状态)。

但是看哪!这就是托管(生命周期)节点所启用的 --- 它抽象了此控件,我们需要做的就是向它发送一个信号,说明我们希望节点在运行过程中的任何时候执行的操作。

怎么会这样?
让我们用一些例子来回答这个问题------

三、示例一 --- 通常的听众-说话者

这是我们在学习 ROS 1/ROS 2 基础知识时看到的常见听众-说话者示例。

  • 谈话者节点 --- 具有发布者以发布有关主题的消息的节点
  • 侦听器节点 --- 具有订阅者的节点,用于从发布者获取有关同一主题的消息

一旦这些节点启动,说话者节点将发布消息,侦听器节点将接收它们。

但请注意,默认情况下,我们对说话者节点没有运行时控制。一旦它开始发布,它就是一匹野生种马 😉

现在让我们看看基于托管节点的谈话者如何为我们提供更多控制权,这就是我们在 ROS 2 中使用托管节点的原因。

四、示例二 --- 基于托管节点的侦听者-说话者

这是我们基于托管节点的侦听者-说话者示例,其中说话者发布,听众接收消息。像往常一样,对吧?

但这里有一个问题 --- 我们可以在运行时使用服务客户端节点控制说话者节点(或者我们现在称之为生命周期说话者节点)。让我们更深入地了解------

  • 谈话者节点 --- 实际继承自生命周期节点的节点,而不是 ROS 2 中的"普通节点"。此节点现在通过其内部的服务公开控制,可以使用您希望节点转到的状态调用该服务。每个状态都映射到此节点中的服务回调。
    例如,假设此节点已启动。现在,如果要在其中配置实际的发布者(或者可能是我们前面示例中的相机),则可以使用服务客户端,要求节点进入"配置"状态。这将导致"on_configure()"方法执行。在编写此节点时,您可以覆盖此方法或决定其中实际发生的情况。很酷,不是吗?
  • 侦听器节点 --- 具有订阅者的节点,用于从发布者获取有关同一主题的消息。因此,它像以前一样继承了我们的"正常节点"。
    但我们也在这里看到了一个新的订阅 - 通知订阅。这只是意味着侦听器节点可以订阅生命周期说话者在转换期间不断更新其内部状态的主题。就是这样
  • 服务客户端节点 --- 具有 2 个服务客户端的节点,一个用于更改生命周期发布者的状态,另一个用于询问其当前状态。
    如前所述,生命周期节点使用服务公开其控制。因此,我们需要一个服务客户端来请求生命周期节点的转换。
  • 被调用方脚本 --- 使用服务客户端节点和请求状态转换的脚本。好吧,这个只是在代码中演示概念。因此,如果您只是对概念感兴趣,则可以忽略这一点。

五、构建基于托管(生命周期)节点的演示 ---

我们脑子里有这个概念。现在怎么办?

我们将在 ROS 2 中从头开始编写上面显示C++的示例。理想情况下,我们会在这里这样做。但那将是一个冗长的帖子,解释不理想。所以我用实时编码在托管节点上制作了一个 2 小时的视频。
机器人
罗斯2
罗斯
机器人操

相关推荐
Ronin-Lotus3 小时前
上位机知识篇---ROS2命令行命令&静态链接库&动态链接库
学习·程序人生·机器人·bash
绿箭薄荷6 小时前
机器人领域中的AI
机器人
鸭鸭鸭进京赶烤7 小时前
计算机工程:解锁未来科技之门!
人工智能·科技·opencv·ai·机器人·硬件工程·软件工程
艾思科蓝 AiScholar12 小时前
【连续多届EI稳定收录&出版级别高&高录用快检索】第五届机械设计与仿真国际学术会议(MDS 2025)
人工智能·数学建模·自然语言处理·系统架构·机器人·软件工程·拓扑学
水兵没月15 小时前
钉钉群机器人设置——python版本
python·机器人·钉钉
XianxinMao15 小时前
机器人学习的范式转变:从专用走向通用基础模型
机器人
xwz小王子1 天前
加州大学伯克利分校最新研究:通过语言融合视听触觉异构传感器实现机器人通用操作策略微调
机器人·视听触·异构·
晨欣1 天前
基于LangGraph、Groq和Tavily打造可以调用外部搜索引擎工具的对话机器人(核心代码 & 万字详解)
机器人
不爱原创的Yoga2 天前
自动驾驶汽车目前面临的最大技术挑战是什么?
人工智能·自动驾驶·汽车
陈傻鱼2 天前
ROS2测试仿真
机器人·ros·slam