ROS2中间件

ROS2 是重新设计的 Robot Operating System,无论从用户API接口到底层实现都进行了改进。这里主要关注ROS2 的中间件。

1. 通信模式

ROS2 使用DDS协议进行数据传输,并通过抽象的rmw,支持多个厂家的DDS实现(FastDDS,Cyclone DDS 等)。

DDS 允许通过Qos 策略进行自定义通信行为。

ROS 支持的基本的Qos策略:

  1. 历史记录(History)
    1. 保留近期记录:仅仅保存最大N个样本数据,通过配置队列深度选项来指定最大数据限制。
    2. 保留所有记录:存储所有的样本数据,但受限于底层中间件的配置资源限制。
  2. 深度(Depth)
    1. 队列深度:仅仅当历史记录选择为"保留最近记录"时,配合指定最大数据限制。
  3. 可靠性(Reliability)
    1. 尽力的(Best effort):尝试传输样本,但如果网络不稳定可能会丢失数据。
    2. 可靠的(Reliable):保证样本的可靠传输,可能会尝试多次重传。
  4. 持续性(Durability)
    1. 局部瞬态(Transient local):发布者负责对晚到连接(late-joining)的订阅者保留样本数据。
    2. 易变态(Volatile):不尝试保留样本数据。

另外可以使用DDS厂商提供的方式(例如XML配置文件),进行更多的Qos配置。

DDS可以帮助ROS2 解决Robot Operating System 中的许多问题。

1)本地通信效率问题

进程间共享内存通信。相比于ROS1在本机内的进程间也使用TCP/UDP进行通信,理论上ROS2 具有更好的性能表现和更低的通信延迟。

需要注意的是,DDS在大于1M的数据传输方面性能表现不佳,需要一些额外的操作或技术进行优化。

PS: 进程内通信,有的DDS未实现,一般由ROS实现。ROS1 使用 Nodelet 实现,ROS2 通过 Composition 实现。

2)非理想网络的跨机通信问题

在可靠的网络环境下,标准解决方案是 TCP/IP,因为它在大多数操作系统中都进行了优化。但是TCP/IP 难以在无线通信中传递数据,因为网络中断会导致回退、重传和延迟等。ROS 1 建立在 TCP/IP 之上,并在这些情况下受到影响。

DDS是基于UDP的,没有这个问题。DDS 可以通过 QoS 来决定何时以及如何在不可靠的条件下重新传输,从而优化可用带宽和延迟。

3)rosmaster的单点问题

相比ROS1,ROS2 移除了中心节点rosmaster。使用 peer-to-peer discovery 的方式建立“连接”。

ROS2 的 底层中间件会自动进行 Discovery node。主要有以下几个流程:

  1. 当node 启动时,它向相同ROS domain下的其他node 进行广播,说明它已经上线。其他node收到这个广播会回复自己的相关信息,从而建立“连接”,并进行通信。
  2. node会定期的进行广播它的信息,这样即使它已经错过了最初的发现过程,它也可以和新上线的node进行"连接"。
  3. node 下线时,会广播其他节点自己要下线了。
4)安全性

ROS 2 不仅依赖于 DDS 安全标准,还提供了一套额外的工具 SROS2,以简化安全基础设施的管理

5)ReadTime 支持

为了满足安全和/或性能目标,系统的某些部分必须在确定的时间内执行。ROS 2为实时系统的开发人员提供 API,以强制执行特定于应用程序的约束

2. 架构设计

1)ROS 2提供了一种模式,用于管理通过状态机转换的节点的生命周期,这些节点的状态包括未配置、未激活、活动和最终完成等。这些状态允许系统集成商控制某些节点何时处于活动状态。这是协调分布式异步系统的各个部分的重要工具。

2)ROS 2的Node 可以利用Composition 动态配置它到任何进程。

3. 生态环境

1)更多的长期支持

ROS2 项目支持周期:

Humble        2022.5 - 2027.5

Foxy             2020.5 - 2023.5

ROS1 项目支持周期:

Noetic          2020.5 - 2025.5

Melodic        2018.5 - 2023.5

(备注:关于环宇能否支持 Xavier Jetpack 升级)

2)更多的硬件厂商开源支持:

Nvidia Isaac: High-performance computing for robotics built on ROS2  

NVIDIA Isaac ROS · GitHub

Nvidia ros2 开源工程:

https://github.com/orgs/NVIDIA-AI-IOT/repositories?language=&q=ros2&sort=&type=all

3)便于友商对接

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动驾驶系列—智能巡航辅助功能中的车道变换功能介绍

自动驾驶系列—智能巡航辅助功能中的车道中央保持功能介绍 自动驾驶系列—智能巡航辅助功能中的车道变换功能介绍 自动驾驶系列—智能巡航辅助功能中的横向避让功能介绍 自动驾驶系列—智能巡航辅助功能中的路口通行功能介绍 文章目录 1. 背景介绍2. 功能定义3. 功能原理4. 传感…

Adobe Dimension(DN)安装包软件下载

目录 一、软件简介 二、软件下载 三、注意事项 四、软件功能 五、常用快捷键 快捷键: 一、软件简介 Adobe Dimension(简称DN)是Adobe公司推出的一款三维设计和渲染软件。与一般的3D绘图软件相比,DN在操作界面和功能上有所不…

C语言航空售票系统

以下是系统部分页面 以下是部分源码&#xff0c;需要源码的私信 #include<stdio.h> #include<stdlib.h> #include<string.h> #define max_user 100 typedef struct ft {char name[50];//名字char start_place[50];//出发地char end_place[50];//目的地char …

微软蓝屏事件暴露的网络安全问题

目录 1.概述 2.软件更新流程中的风险管理和质量控制机制 2.1.测试流程 2.2.风险管理策略 2.3.质量控制措施 2.4.小结 3.预防类似大规模故障的最佳方案或应急响应对策 3.1. 设计冗余系统 3.2. 实施灾难恢复计划 3.3. 建立高可用架构 3.4. 类似规模的紧急故障下的响应…

对某次应急响应中webshell的分析

文章前言 在之前处理一起应急事件时发现攻击者在WEB应用目录下上传了webshell&#xff0c;但是webshell似乎使用了某种加密混淆手法&#xff0c;无法直观的看到其中的木马连接密码&#xff0c;而客户非要让我们连接webshell来证实此文件为后门文件且可执行和利用(也是很恼火&a…

如何用手机压缩视频?手机压缩视频方法来了

高清视频的大文件大小常常成为分享和存储的障碍&#xff0c;尤其是在数据流量有限或存储空间紧张的情况下。幸运的是&#xff0c;无论是智能手机还是个人电脑&#xff0c;都有多种方法可以帮助我们轻松压缩视频文件&#xff0c;以适应不同的需求和情境。本文将介绍如何在手机上…

GooglePlay 金融品类政策更新(7月17号)

距离上次政策大更新&#xff08;4月5号&#xff09;才过去了3个月&#xff0c;Google Play又迎来了一次大更新&#xff0c;不得不说Google Play的要求越来越高了。 我们来梳理一下这次GooglePlay针对金融品类更新了哪些政策: 1.要求提供金融产品和服务的开发者必须注册为组织…

VSCode部署Pytorch机器学习框架使用Anaconda(Window版)

目录 1. 配置Anaconda1.1下载安装包1. Anaconda官网下载2, 安装Anaconda 1.2 创建虚拟环境1.3 常用命令Conda 命令调试和日常维护 1.4 可能遇到的问题执行上述步骤后虚拟环境仍在C盘 2. 配置cuda2.1 查看显卡支持的cuda版本2.2 下载对应cuda版本2.3 下载对应的pytorch可能出现的…

php 存储复杂的json格式查询(如:经纬度)

在开发中&#xff0c;有时我们可能存了一些复杂json格式不知道怎么查。我这里提供给大家参考下&#xff1a; 一、先上表数据格式&#xff08;location字段的possiton经纬度以逗号分开的&#xff09; {"title":"澳海文澜府","position":"11…

【CTFWP】ctfshow-web32

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 题目介绍&#xff1a;题目分析&#xff1a;payload&#xff1a;payload解释&#xff1a;flag 题目介绍&#xff1a; <?php/* # -*- coding: utf-8 -*- # Autho…

新版本异次元荔枝V4自动发卡系统源码

新版本异次元荔枝V4自动发卡系统源码&#xff0c;增加主站货源系统&#xff0c;支持分站自定义支付接口&#xff0c;目前插件大部分免费&#xff0c;UI页面全面更新&#xff0c;分站可支持对接其他分站产品&#xff0c;分站客服可自定义&#xff0c;支持限定优惠。 源码下载&a…

leetcode-98. 验证二叉搜索树

题目描述 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左 子树 只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 1&…

spring整合mybatis,junit纯注解开发(包括连接druid报错的所有解决方法)

目录 Spring整合mybatis开发步骤 第一步&#xff1a;创建我们的数据表 第二步&#xff1a;编写对应的实体类 第三步&#xff1a;在pom.xml中导入我们所需要的坐标 spring所依赖的坐标 mybatis所依赖的坐标 druid数据源坐标 数据库驱动依赖 第四步&#xff1a;编写SpringC…

LeetCode 125.验证回文串 C++写法

LeetCode 125.验证回文串 C写法 思路&#x1f914;&#xff1a; 我们不对字符串进行删除&#xff0c;这样效率太低了&#xff0c;所以可以左右开工&#xff0c;下标begin和end遇到不是字母数字字符的就跳过&#xff0c;当两边都是字母就进行比对&#xff0c;一样就继续往后走&a…

TeraTerm 使用技巧

参考资料 自分がよく使うTeratermマクロによる自動ログインのやり方をまとめてみたよTera Term マクロでログインを自動化してみたTera Term のススメ 目录 简介一. 常用基础设置1.1 语言变更1.2 log设置 二. 小技巧2.1 指定host别名2.2 新开窗口2.3 设置粘贴多行命令时的行间…

PostgreSQL 中如何处理数据的唯一性约束?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中如何处理数据的唯一性约束&#xff1f;一、什么是唯一性约束二、为什么要设置唯一性约束…

【Elasticsearch】Elasticsearch 中的节点角色

Elasticsearch 中的节点角色 1.主节点&#xff08;master&#xff09;1.1 专用候选主节点&#xff08;dedicated master-eligible node&#xff09;1.2 仅投票主节点&#xff08;voting-only master-eligible node&#xff09; 2.数据节点&#xff08;data&#xff09;2.1 内容…

网站漏洞扫描软件Burp suite和Xray安装应用及联合使用

目录 1、网站漏洞扫描软件应用-Burp suite 01 burp 扫描工具使用介绍&#xff1a; 02 burp 扫描工具安装过程&#xff1a; 1&#xff09;获取扫描工具程序包 2&#xff09;安装部署扫描工具 3&#xff09;bp安装完毕的基础设置&#xff1a; 3.1&#xff09;抓取浏览器访…

【数据分享】2013-2022年我国省市县三级的逐年SO2数据(excel\shp格式\免费获取)

空气质量数据是在我们日常研究中经常使用的数据&#xff01;之前我们给大家分享了2000——2022年的省市县三级的逐年PM2.5数据和2013-2022年的省市县三级的逐年CO数据&#xff08;均可查看之前的文章获悉详情&#xff09;&#xff01; 本次我们分享的是我国2013——2022年的省…