ROS2学习(四).ROS 2 核心概念

19 篇文章 10 订阅


ROS2的核心概念主要有:

  • 节点
  • 客户端库
  • 发现机制

官方文档

Quick overview of ROS 2 Concepts1

图(Graph)的概念

ROS 2是一个基于匿名的发布订阅机制的中间件,允许不同的ROS进程间进行消息传递。
任何ROS 2系统的核心都是ROS图(Graph),它包含:

  • 节点Nodes:
    • 一个使用ROS与其他节点进行通信的实体
    • 节点间通过topic, service,action或parameter进行数据传输
    • 一个可执行程序可以包括一个或多个节点
  • 消息Message:
    • 当发布或订阅一个主题topic时使用到的ROS数据类型
  • 主题Topic:
    • 节点可以向主题发布消息
    • 节点可以订阅主题接收消息
  • 发现Discovery:
    • 节点之间决定如何相互通信的过程

节点(Node)

  • 节点是ROS图的参与者
  • 使用ROS客户端库与其他节点通信
  • 发布主题
  • 订阅主题
  • 使用服务(Service)
  • 使用操作(Action)
  • 节点独立的可配置参数
  • 节点间的连接通过分布式发现过程加以建立
  • 节点部署
    • 同进程
    • 不同进程
    • 不同主机

客户端库(Client Libraries)

ROS客户端库允许用不同编程语言编写的节点进行通信。
有一个核心ROS客户端库,实现了不同语言的ROS API所需的通用功能。
这使得面向不同语言的库可以更易于编写,并保持一致性。

ROS2官方团队维护了C++和Python两种语言的客户端库(rclcpp/rclpy)。
此外,ROS社区开发了其他客户端库包括:2

  • JVM and Android
  • Objective C and iOS
  • C#
  • Swift
  • Node.js
  • Ada
  • _.NET Core, UWP and C#
  • Rust

发现机制(Discovery)

节点发现通过ROS2的底层中间件自动进行,按照下述流程进行:

Created with Raphaël 2.3.0 节点启动 向相同ROS domain的节点 告知自己的存在 (拥有相同的 ROS_DOMAIN_ID) 收到通告的节点 回复自己的信息 建立连接 节点间得以通信 广播周期到? yes

在该流程中,节点会定期发布自身的存在,这样就可以与新发现的实体建立连接
节点离线时,也会向其他节点进行通知。
节点只会同具有兼容的QoS3策略的节点建立连接。

以之前提到过的的talker-listener Demo4为例: 在一个终端中运行c++ talker节点将发布关于一个主题的消息,而在另一个终端中运行的Python listener节点将订阅关于同一主题的消息。
可以看到,这些节点自动发现彼此,并开始交换消息。

参考


  1. Quick overview of ROS 2 Concepts ↩︎

  2. About ROS 2 client libraries ↩︎

  3. Quality of Service ↩︎

  4. talker-listener Demo ↩︎

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值