ROS2学习(四).ROS 2 核心概念
ROS 2 概念速览
- 官方文档
- 图(Graph)的概念
- 节点(Node)
- 客户端库(Client Libraries)
- 发现机制(Discovery)
- 参考
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的底层中间件自动进行,按照下述流程进行:
在该流程中,节点会定期发布自身的存在,这样就可以与新发现的实体建立连接
节点离线时,也会向其他节点进行通知。
节点只会同具有兼容的QoS3策略的节点建立连接。
以之前提到过的的talker-listener Demo4为例: 在一个终端中运行c++ talker节点将发布关于一个主题的消息,而在另一个终端中运行的Python listener节点将订阅关于同一主题的消息。
可以看到,这些节点自动发现彼此,并开始交换消息。
参考
Quick overview of ROS 2 Concepts ↩︎
About ROS 2 client libraries ↩︎
Quality of Service ↩︎
talker-listener Demo ↩︎
ROS2学习(四).ROS 2 核心概念相关推荐
- 【ROS入门-4】嘴对嘴讲解ROS的核心概念——ROS话题通信机制
文章目录 前言 ROS系列文章 ROS的通信机制 话题(topic) 发布者 订阅者 消息(Message) 用C++来写话题通信的代码 发布者 订阅者 使用rqt_graph 源码附录 引用说明 参 ...
- 【ROS入门-3】嘴对嘴讲解ROS的核心概念——节点与节点管理器
文章目录 前言 ROS系列文章 ROS的通信机制 节点(Node) 节点管理器(Master) 简单运行 引用说明 参考 前言 我要给大家来介绍一下ROS当中一些核心的概念,帮助大家去在后面的ROS学 ...
- 区块链学习 | 区块链的核心概念
想要学习区块链的相关知识,区块链的核心概念--区块.哈希算法.公钥和私钥.时间戳等是必须要弄懂的.区块链由多个相连的区块构成,所以我们先从了解区块的概念开始! 一.区块 区块的结构图 先看上面的区块的 ...
- Spark学习之路---Spark核心概念
Spark核心概念简介 一个Spark应用都由驱动器程序发起集群上的各种并发操作,一个驱动器程序一般包含多个执行器节点,驱动器程序通过一个SaprkContext对象访问saprk.RDD(弹性分布式 ...
- ArcGIS开发基础教程(四):核心概念之图层和数据(下)
核心概念之图层和数据(下) 外部数据源图层介绍 外部数据源的数据和文件是由Layer类的不同子类支持的.包括用于处理外部文件(如CSV或GeoJSON文件)或加载外部地图(如GeoQ,高德,Bing ...
- NIO学习–核心概念与基本读写
转载自 NIO学习–核心概念与基本读写 这两天花了时间学习了java的nio,看的书是Ron Hitchens著的 <Java NIO>,总的来说,这本书真的写的非常好,而且整本书将jav ...
- Maven学习总结(四)——Maven核心概念
2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(四)--Maven核心概念 一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平 ...
- 学习 JavaScript (四)核心概念:操作符
JavaScript 的核心概念主要由语法.变量.数据类型.操作符.语句.函数组成,前面三个上一篇文章已经讲解完了.后面三个内容超级多,这篇文章主要讲解的是操作符. 操作符 什么叫做操作符? 这是一种 ...
- ROS2学习(十六).ROS概念 - 构建系统
关于ROS 2的构建系统 `ament_package`包 **package.xml** **ament package** `ament_cmake`代码库 `ament_lint`代码库 构建工 ...
最新文章
- 看大神如何使用vue导出pdf
- sqlplus执行mysql_在SQLPLUS启动和停止Oracle数据库
- 15行代码AC——习题5-5 复合词(Compound Words, UVa 10391)——解题报告
- 手机号段对应地区编码_漫画:“哈夫曼编码” 是什么鬼?
- 判断设备是否是iphone5 及对iphone5 屏幕的适应
- 嵌入式计算机的发展阶段,嵌入式发展经历了哪四个阶段?
- 戳破“砖家”假面:唯快不破的时代,为什么这件事一定要慢慢做?
- 机器学习速成课程 | 练习 | Google Development——编程练习:提高神经网络的性能
- 《引爆点》读书笔记(一)
- 在SpringMVC中使用拦截器(interceptor)拦截CSRF***
- SCDN博客的转载方法
- ReportMachine终于有更新了。
- 查看文件夹和文件大小
- 安卓苹果一键秒改运动步数方法
- 南丁格尔图文字颜色跟随
- GDAL 地图切片层级计算公式
- 稳压二极管、肖特基二极管、静电保护二极管、TVS管
- 基于bibtex的文献管理(详细)
- 如何解决SQL Server 2008 无法连接到(local)(服务器名称)
- uniapp如何使用微信开发者工具调试
热门文章
- 笔记本电脑清洁小记(附螺丝滑丝处理,常见意外情况)
- matlab 维纳滤波恢复运动模糊,运动模糊恢复专题
- springboot配置连接rds_java – 在AWS-EC2上运行的SpringBoot应用程序无法连接到MySQL AWS-RDS数据库...
- 反序列化工具_JBOSS反序列化漏洞
- 像素纵横比基础知识(正方形像素,非正方形像素)
- PHP爬虫音乐,PHPCrawl爬虫库实现抓取酷狗歌单
- Spring中注解大全和应用
- Rocketmq源码分析(一)整体架构
- mysql 必知必会 笔记
- Android NFC读取电子标签