警告
您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.
概念
以下 "概念 "页面提供了 ROS 2 关键方面的概述。 概念概述将帮助您了解 ROS 2 系统的 "全貌"。
参见 https://docs.ros2.org/ 以获取更多高级 ROS 2 文档。
ROS 2 概念概述
ROS 2 是一个基于匿名发布/订阅机制的中间件,可以在不同的 ROS 进程之间传递信息。
ROS 2 系统的核心是 ROS 图。ROS 图指的是 ROS 系统中的节点网络以及节点之间的通信连接。
图表概念快速概览
节点:节点是使用 ROS 与其他节点通信的实体。
消息:订阅或发布主题时使用的 ROS 数据类型。
主题节点可以向主题发布信息,也可以订阅主题接收信息。
发现:节点确定如何相互通信的自动过程。
节点
节点是 ROS 图形中的一个参与者。ROS 节点使用 ROS 客户端库与其他节点通信。节点可以发布或订阅主题。节点还可以提供或使用服务和操作。节点可配置相关参数。节点之间的连接是通过分布式发现过程建立的。节点可以位于同一进程、不同进程或不同机器上。这些概念将在后面的章节中详细介绍。
客户图书馆
ROS 客户端库允许使用不同编程语言编写的节点进行通信。有一个核心 ROS 客户端库(RCL)可以实现不同语言的 ROS 应用程序接口所需的通用功能。这样一来,特定语言的客户端库就更容易编写,而且它们的行为也更加一致。
以下客户端库由 ROS 2 团队维护:
rclcpp = C++ 客户端库
rclpy = Python 客户端库
此外,ROS 社区还开发了其他客户端库。请参见 ROS 2 客户端库 文章了解更多详情。
发现
节点的发现是通过 ROS 2 的底层中间件自动完成的,可以概括如下:
当一个节点启动时,它会向网络上具有相同 ROS 域(通过 ROS_DOMAIN_ID 环境变量设置)的其他节点发出自己存在的广告。节点会对该广告作出回应,提供有关自己的信息,以便建立适当的连接和进行通信。
节点会定期公布自己的存在,以便与新发现的实体建立连接,即使在最初的发现期之后也是如此。
节点离线时,会向其他节点发布广告。
节点只有在与其他节点具有兼容的 服务质量 设置
采取 对话者-听众演示 例如在一个终端运行 C++ talker 节点将发布主题消息,在另一个终端运行 Python 监听器节点将订阅同一主题的消息。
您会发现这些节点会自动发现对方,并开始交换信息。