ROS学习笔记(八):ROS2

news2024/11/18 5:58:29

ROS学习笔记(八):ROS2

  • ROS1存在的问题
  • ROS2
    • ROS2的设计目标
    • ROS2的系统架构
      • ROS2的关键中间件——DDS
    • ROS2的通信模型

ROS1存在的问题

ROS(一般ROS均指ROS1)经过多年的发展,已成为机器人领域的重要的工具与平台。但是ROS1主要存在以下问题:
(1)ROS1无法适用于多机器人系统。
(2)ROS1基于Linux系统,在Windows、macOS和RTOS上无法应用或功能有限。
(3)ROS1缺少实时性方面的设计。
(4)ROS1的分布式机制需要良好的网络环境才能保证数据的完整性,而且网络不具备数据加密、安全防护等功能。
(5)ROS1的稳定性不好,ROS Master和节点有时候可能会崩掉,导致难以产品化。

开发者与研究机构对新一代ROS的呼声越来越大,ROS2也就应运而生。

ROS2

ROS2的设计目标

(1)支持多机器人系统,提升多机器人之间通信的网络性能。
(2)满足产品化开发需求。
(3)支持x86、ARM系统,以及MCU等嵌入式微处理器。
(4)支持实时控制。
(5)支持跨系统平台。

ROS2的系统架构

在这里插入图片描述

  1. OS层:ROS1主要构建在Linux系统上;ROS2支持构建的系统包括Linux、Windows、macOS、RTOS,甚至没有操作系统的裸机。
  2. 中间层:ROS 中最重要的一个概念就是计算图中的“节点",它可以让开发者并行开发低耦合的功能模块,并且便于二次复用。ROS1的通信系统基于 TCPROS / UDPROS ,而ROS2的通信系统基于 DDS 。 DDS 是一种分布式实时系统中数据发布/订阅的标准解决方案,下面会详细介绍。ROS2内部提供了 DDS 的抽象层实现,用户无需关注底层 DDS 的提供厂家。在ROS1架构中, Nodelet 和 TCPROS / UDPROS 是并列的层次,可以为同一个进程中的多个节点提供一种更优化的数据传输方式。ROS2中也保留了类似的数据传输方式,命名为" Intra-process ",同样独立于 DDS 。
  3. 应用层:ROS1强依赖于 ROSMaster ,因此可以想象,一旦 Master 宕机,整个系统就会面临怎样的窘境。但是在右边的ROS2架构中,ROS Master 消失了,节点之间使用一种称为" Discovery "的发现机制来帮助彼此建立连接。

ROS2的关键中间件——DDS

DDS ( DataDistributionService ,数据分发服务),2004年由对象管理组织(ObjectManagementGroup , OMG )发布,是一种专门为实时系统设计的数据分发/订阅标准。
DDS 最早应用于美国海军,用于解决舰船复杂网络环境中大量软件升级的兼容性问题,目前已经成为美国国防部的强制标准,同时广泛应用于国防、民航、工业控制等领域,成为分布式实时系统中数据发布/订阅的标准解决方案。其技术关键是以数据为核心的发布/订阅( Data - CentricPublish - Subscribe , DCPS )模型,这种 DCPS 模型创建了一个"全局数据空间"( GlobalDataSpace )的概念,所有独立的应用都可以访问。目前已经有多家 DDS 厂商可以提供相关技术,包括可供 ROS 使用的开源版本和商业版本。

ROS2的通信模型

基于DDS的ROS2通信模型包含以下几个关键概念:
在这里插入图片描述

  1. 参与者(Participant):在 DDS 中,每一个发布者或者订阅者都称为参与者,对应于一个使用 DDS 的用户,可以使用某种定义好的数据类型来读/写全局数据空间。
  2. 发布者(Publisher):数据发布的执行者,支持多种数据类型的发布,可以与多个数据写入器(DataWriter)相连,发布一种或多种主题(Topic)的消息。
  3. 订阅者(Subscriber):数据订阅的执行者,支持多种数据类型的订阅,可以与多个数据读取器(DataReader)相连,订阅一种或多种主题(Topic)的消息。
  4. 数据写入器(DataWriter):上层应用向发布者更新数据的对象,每个数据写人器对应一个特定的主题(Topic),类似于ROS1中的一个消息发布者。
  5. 数据读取器(DataReader):上层应用从订阅者读取数据的对象,每个数据读取器对应一个特定的主题(Topic),类似于ROS1中的一个消息订阅者。
  6. 话题 (Topic):与ROS1中的概念类似,话题需要定义一个名称和一种数据结构,但ROS2中的每个话题都是一个实例,可以存储该话题中的历史消息数据。
  7. 质量服务原则(QualityofServicePolicy):质量服务原则简称QoSPolicy,这是ROS2中新增的、也是非常重要的一个概念,控制各方面与底层的通信机制,主要从时间限制、可靠性、持续性、历史记录这几个方面满足用户针对不同场景的数据需求。
  • 实时性增强:数据必须在 deadline 之前完成更新。
  • 持续性增强: DDS 可以为ROS2提供数据历史服务,新加入的节点也可以获取发布者发布的所有历史数据。
  • 可靠性增强:配置可靠性原则,用户可以根据需求选择性能模式(BEST _ EFFORT)或者稳定模式(RELIABLE)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/442000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【社区图书馆】《uni-app跨平台开发与应用》读书随想录

目录 导言 读书感悟 《uni-app跨平台开发与应用》(从入门到实践)图书目录 作者简介 导言 最近我读了一本关于uni-app跨平台开发与应用的书籍,名为《uni-app跨平台开发与应用从入门到实践》。这本书让我对uni-app跨平台开发与应用有了更深入的了解,作…

HttpServletResponse注意事项和细节和原理示意图

目录 HttpServletResponse HttpServletResponse 介绍 HttpServletResponse 类图 向客户端返回数据方法 处理中文乱码问题-方案 处理中文乱码问题-方案 2 请求重定向 请求重定向原理示意图 应用实例 DownServlet Java类 DownServletNew.java xml配置 请求重定向注意…

Ubuntu中用VSCode交叉编译程序放到从机上运行

文章目录 前言:1. 前期准备:1.1 树莓派系统烧录与虚拟机创建1.2 VSCode拓展下载 2. 树莓派交叉编译链查询与下载2.1 交叉编译链如何判断下哪一个2.2 交叉编译链各种版本含义 3. 开始操作3.1 创建helloworld程序3.2 配置交差编译链3.3 json文件说明与配置…

变压器感量计算

1、L:感量计算LBmax*Ae*Np*R/V0.3*17.1*123*1.8/1.01.15mH 第一步:根据经验确定一个大概的感量值。 第二步:实际Sense电压波形测试,判断有没磁饱和,频率是否正确。 W功率 L感量 变压器 …

学系统集成项目管理工程师(中项)系列08a_合同管理(上)

1. 合同(Contract) 1.1. 契约 1.2. 广义概念 1.2.1. 以确定各种权利与义务为内容的协议,即只要是当事人之间达成的确定权利义务的协议均为合同,不管它涉及哪个法律部门及何种法律关系 1.2.2. 合同除应包括民法中的合同外&…

HTTP请求UML时序图--(POST)图和(GET)图源码分析及代码分析和MIME 介绍--常用的状态码说明

目录 WEB 开发通信协议-HTTP 什么是 HTTP 协议 介绍 http 请求 hi.html 的 UML时序图 HTTP 请求包分析 1. HTTP 请求包分析(GET)图, 说明 可以通过浏览器抓包分析 代码说明 HTML部分 JAVA部分 web.xml部分 3) 完成测试,并抓包分析 HTTP 请求包分析(POST…

汽车车身钣金—车身连接方式

摘要: 当汽车车身构件遭受严重损伤失去维修意义时,汽车维修厂商一般采用更换部件或总成的方法进行修复。 车身连接方式 当汽车车身构件遭受严重损伤失去维修意义时,汽车维修厂商一般采用更换部件或总成的方法进行修复。 车身外部覆盖件大多由相对独立的板件相互…

场效应管(MOS)基础知识

MOSFET管是常用的半导体器件,又称为开关管、场效应管、英文名称(MOSFET),简称MOS管 按元件封装工艺可分为两大类:插件类、贴片类。大部分MOSFET管的外观极其类似,常见的封装种类有T0-252,T0-251,T0-220,T0—…

清华发布工具学习框架,让ChatGPT操控地图、股票查询,贾维斯已来?

文|小戏 首先来考大家一道初中历史题:人区别于动物的根本标志是什么›?书上的标准答案是人会制造与使用工具。那么再来一道思考题,如果 AI 会使用甚至会制造工具了以后,会发生什么呢?是像贾维斯一样的 AI 私…

【Java基础】day16

day16 一、switch-case 和 if-else 谁更快? switch-case 在 switch-case 中,case 的值是连续的话,会生成一个 TableSwitch 来进行优化,这样的情况下,只需要在表中进行判断即可。 这里使用 0-4 的连续值来进行测试 如…

UE4: Niagara系统实现雨天效果,并跟随人物移动

目录 创建雨丝Niagara系统雨丝跟随人物移动 创建雨丝Niagara系统 1.创建一个Niagara系统 选择Fountain选项,点一下加号,再点完成: 命名一下打开: 先从粒子生成的方向入手,在Niagara的界面中删掉“Add Velocity in…

springboot+vue小区物业管理系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的小区物业管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风…

C11新特性之Lambda表达式

一.lambda语法 优点: 1.可以定义简短的函数。 2.使用lambda表达式使代码更紧凑,可读性更好。 语法: []表示不捕获任何变量[this]表示值传递方式捕捉当前的this指针 [&]表示引用传递方式捕捉所有父作用域的变量(包括this&…

[架构之路-170]-《软考-系统分析师》-5-数据库系统-1-数据库模式、数据模型、数据库访问的标准接口

在当今的知识经济时代,信息是经济发展的战略资源,信息技术已经成为社会生产力中重要的组成部分。人们充分认识到,数据库是信息化社会中信息资源管理与开发利用的基础,当今的计算机信息系统也都以数据库技术为基础。对于一个国家来…

Linux DNS服务

DNS 作用 DNS是 域名系统 的英文缩写,作为将域名与IP地址相互映射的一个分布式数据库,让人可以通过域名访问互联网 正向解析 将域名解析为IP反向解析 根据IP查找对应域名 域名结构 http://www.sina.com.cn./ http://主机名.子域.二级域.顶级域.根域 / 每…

【Linux学习】信号——预备知识 | 信号产生 | 核心转储

🐱作者:一只大喵咪1201 🐱专栏:《Linux学习》 🔥格言:你只管努力,剩下的交给时间! 信号 🔔信号🎵预备知识🎵信号处理方法的注册 🔔信…

C/C++每日一练(20230421)

目录 1. 位1的个数 🌟 2. 递归和非递归求和 ※ 3. 俄罗斯套娃信封问题 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 位1的…

大数据技术之Kafka——Kafka入门

目录 一、概述 1.1 为什么要有Kafka ​编辑 1.2 定义 1.3 消息队列 1)消息队列的应用场景 2)消息队列的两种模式 1.4 基础架构 二、Producer生产者 2.1 生产者消息发送流程 2.1.1 发送原理 2.2 异步发送API 2.2.1 普通异步发送 2.2.2 带回调…

第八章_Redis复制(replica)

是什么 官网地址 一句话 就是主从复制,master以写为主,Slave以读为主 当master数据变化的时候,自动将新的数据异步同步到其它slave数据库 能做什么 读写分离容灾恢复数据备份水平扩容支撑高并发 怎么使用 配从(库)不配主(库) 权限细节&am…

YOLOv8 更换主干网络之 MobileNeXt

《重新思考瓶颈结构以实现高效移动网络设计》 倒置残差块成为了移动网络架构设计的主流。它通过引入学习倒置残差和使用线性瓶颈的两个设计规则,改变了经典的残差瓶颈。在本文中,我们重新思考了这种设计改变的必要性,并发现它可能会带来信息丢失和梯度混淆的风险。因此,我们…