ROS2 介绍

ROS2 的前身是 ROS,ROS 即机器人操作系统(Robot Operating System)。但 ROS 本身并不是操作系统,而是一个软件库和工具集。 Ros 的出现解决了机器人各个组件的通信问题。后来,越来越多的机器人算法被集成到 ROS 中。ROS2 继承了 ROS,比 ROS 更强大、更优秀。

1 ROS2 的设计目标和特点

ROS2 肩负着改变智能机器人时代的历史使命。在设计之初,它就考虑到要满足各种机器人应用的需求。

  • 多机器人系统: 未来机器人不再是独立的个体,机器人之间也需要交流和协作。 ROS2 为多机器人系统的应用提供了标准的方法和通信机制。

  • 跨平台: 机器人应用场景不同,使用的控制平台也会有很大差异。 为了让所有的机器人都能运行 ROS2,ROS2 可以跨平台运行在 Linux、Windows、MacOS、RTOS 上。

  • 实时: 机器人运动控制和许多行为策略都要求机器人是实时的。 例如,机器人必须在 100 毫秒内可靠地检测到前方的行人,或在 1 毫秒内完成运动学和动力学计算。 ROS2 是像这样实时提供基本要求的。

  • 产品化: 大量的机器人已经进入我们的生活,未来还会越来越多,ROS2 不仅可以用于机器人研发阶段,还可以直接安装在 产品并进入消费市场。 这也对 ROS2 的稳定性和鲁棒性提出了巨大的挑战。

  • 项目管理: 机器人开发是一项复杂的系统工程。 设计、开发、调试、测试、部署全过程的项目管理工具和机制也将在 ROS2 中得到体现,方便我们开发机器人。

2 发行版本

ROS2 和 Ubuntu 对应的发行版本和维护周期。

ROS2 版本 发布日期 维护期限 Ubuntu 版本
Dashing 2019.5 2021.5 Ubuntu 18.04 (Bionic Beaver)
Eloquent 2019.11 2020.11 Ubuntu 18.04 (Bionic Beaver)
Foxy 2020.6 2023.5 Ubuntu 20.04(Focal Fossa)
Galactic 2021.5 2022.11 Ubuntu 20.04(Focal Fossa)
Humble 2022.5 2027.5 Ubuntu 22.04(Jammy Jellyfish)

3 ROS 和 ROS2 的比较

ROS2 重新设计了系统架构。两代 ROS 之间的架构变化如下:

  • OS Layer: OS 层。在 ROS2 中,它可以构建在 linux 或其他系统上,甚至是没有操作系统的裸机。

  • Middleware Layer: 中间件层。ROS1 的通信系统基于 TCPROS/UDPROS,而 ROS2 的通信系统基于 DDS。 DDS 是分布式实时系统中数据发布/订阅的标准解决方案。

  • Application Layer: 应用层。ROS1 依赖于 ROS Master,而在 ROS2 中,节点之间使用了一种名为“Discovery”的发现机制来帮助彼此建立连接。

ROS 设计了一套完整的通信机制(主题、服务、参数、动作)来简化机器人开发。 通过这种机制,可以连接机器人的各个部件。 这种机制设计了一个叫做 Ros Master 的节点,所有其他组件的通信都必须经过 master 节点。 一旦主节点挂掉,就会导致整个机器人系统的通信崩溃! 所以不能利用 Ros 的不稳定性来做一些自动驾驶等高风险的机器人。 此外,还有以下缺点:

  • 基于 TCP 的通信实时性差,系统开销大
  • 对 python3 支持不友好
  • 消息机制不兼容
  • 无加密机制,安全性低

ROS2 首先移除 ROS 中存在的 master 节点。 去掉主节点后,各个节点可以通过 DDS 节点相互发现,各个节点是平等的,可以实现一对一、一对多、多对多的通信。 使用 DDS 进行通信后,可靠性和稳定性得到了增强。

与只支持 Linux 系统的 ROS 相比,ROS2 还支持 windows、mac 甚至 RTOS 平台。


← 上一节 | 下一页 →

results matching ""

    No results matching ""