ROS 2 index翻译(一)——ROS 2 概念概览

ROS是一个基于匿名发布/订阅(publish/subscribe)机制的中间件(middleware),该机制允许在不同的ROS进程中传递消息。
ROS 2系统的核心是ROS图(Graph)。ROS图泛指ROS系统的节点网络及其通信连接。

1.图(Graph)概念速览
①节点(Nodes):节点就是一个用ROS与其他节点通信的实体。
②消息(Messages):订阅和发布给一个话题(topic)所用到的ROS数据类型。
③话题(Topics):节点发布消息给一个话题,同时也可以从一个话题中接收消息。
④发现(Discovery):各节点间决定如何相互会话(talk)的自动化过程(process)。

2.节点
节点是ROS图的参与者。ROS节点使用ROS客户端库(client library)与其他节点通信。节点能向话题发布和订阅消息,也可以提供或使用一项服务(Service)。节点包含一些配置参数。节点之间的连接通过分布式发现过程(distributed discovery process)来建立。节点可能位于相同或不同的进程,或者在不同的机器中。这些概念将在下面详细阐述。

3.客户端库(Client Libraries)
ROS客户端库允许用不同编程语言编写的节点之间通信。这里有一个核心ROS客户端库(RCL),它实现了不同语言的ROS API所需的通用功能。这使得基于特定语言的客户端库更易于编写,并且具有更一致的行为。
以下客户端库由ROS 2团队维护:
① rclcpp = C++ 客户端库;
② rclpy = Python 客户端库。
另外,ROS社区还开发了其他客户端库。有关更多详细信息,请参阅ROS2客户端库文章。

4.发现
节点的发现通过ROS2的底层中间件自动发生,可以总结如下:
①开启一个节点时,该节点向具有相同ROS域的网络上其他节点广播其存在(使用ROS_DOMAIN_ID环境变量)。其他节点使用关于自身的信息响应该广播,由此可以进行适当的连接并且节点可以进行通信。
②节点定期广播其存在,由此可以与新建节点进行连接,甚至是在最初的发现周期之后。
③节点下线时会向其他节点广播(说拜拜)。
假如节点兼容Quality of Service设定,它们将只能和其他节点建立连接。

5.示例:talker-listener
在一个PC机系统终端(terminal),开启一个将在主题上发布消息的节点(用C++编写)。

ros2 run demo_nodes_cpp talker

在另一个终端,启动第二个节点(用Python编写),该节点将订阅同一主题的消息。

ros2 run demo_nodes_py listener

你应该会看到这些节点自动发现彼此,并且开始交换信息。

英语原文:https://index.ros.org/doc/ros2/Concepts/Overview-of-ROS-2-concepts/

posted on 2019-02-27 03:49  tuxinbang  阅读(578)  评论(0编辑  收藏  举报

导航