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)便于友商对接

  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值