什么是ROS?ROS和ROS 2区别有哪些?为什么建议使用ROS 2?

一、前言
ROS是一个得到广泛使用的机器人操作系统框架,可以在不同的机器人系统中实现底代码复用,使开发人员专注于机器人应用功能的实现。本文将为大家介绍 ROS 的起源、架构和特点。


二、ROS 起源
ROS 起源于 2007年,是斯坦福大学人工智能实验室与机器人技术公司Willow Garage的合作项目。2008年之后,由Willow Garage 公司进行推广,该项目研发的机器人PR2就是在ROS 框架的基础上实现的。2010年,Willow Garage 公司开源了 ROS,其很快在机器人研究领域引起了越来越多的关注。


ROS 的主要目标是为机器人研究和开发提供代码复用的支持和服务,包括硬件抽象、底层设备控制、常用函数调用、进程间消息传递,以及包(Package)管理,并提供跨计算机、分布运行代码所需的工具和库函数。ROS是一个分布式的进程(也就是“节点”)框架,这些进程被封装在易于分享和发布的程序包和功能包中。


为支持机器人项目的开发和实现,ROS支持一种类似于代码存储库的联合系统,这个系统可以实现各个工程项目的协作及发布,从文件系统到用户接口完全独立(不受ROS限制),所有的工程项目都可以被 ROS 的基础工具整合在一起。

三、ROS架构
ROS 架构共分为三层:OS 层(OS Layer)、中间件层(Middleware Layer)和应用层(Application Layer)。
1. OS 层
ROS 不能直接运行在计算机硬件之上,需要依托操作系统。在 OS 层,可以直接使用 ROS官方支持度最好的 Ubunt 操作系统(Linux),也可以使用 Mac、WindowS、RTOS 等操作系统


2.中间件层
Linux 是一个通用系统,并没有针对机器人开发提供特殊的中间件,所以 ROS 设计了中间件层,其中最为重要的是基于 TCPROS/UDPROS 的通信系统。ROS的通信系统基于TCP/UDP 网络,并进行了再次封装,即得到 TCPROS/UDPROS。ROS 通信系统使用发布阅、客户端/服务器等模型,可以实现多种通信机制的数据传输。

除 TCPROS/UDPROS 的通信机制外,ROS 还提供一种进程内的通信方法--Nodelet,其可以为多进程通信提供一种更优化的数据传输方式,适合对数据传输实时性方面有较高要求的应用。
在通信系统的基础上,ROS提供了大量机器人开发相关的库,如数据类型定义、坐标变换、运动控制等,可以提供给应用层使用。


3.应用层
在应用层,节点(Node)管理器 Master 组件负责管理整个系统的运行。ROS开源社区内共享了大量的机器人应用功能包,这些功能包内的模块以节点为单位运行,以 ROS标准的输入/输出作为接口,只需要了解接口规则即可实现复用,极大地提高了开发效率。随着机器人技术的快速发展,ROS得到了极大的推广和应用。尽管ROS还存在不少的局限性,但是 ROS开源社区内的功能包数量逐年呈指数级上涨,不少开发者和研究机构还针对ROS 的局限性进行了改良,为机器人开发者带来了巨大的便利。为提高ROS 整体性能,在ROS Con 2014上,正式发布了新一代 ROS 架构(Next-generation ROS: Building on DDS),2015年8月,ROS2.0的Alpba版本发布,经过一年多的测试与优化,2016年12月19日,ROS2.0的 Beta 版本正式发布。众多新技术和新概念被应用到了新一代的 ROS 2.0之中,提升了架构的整体性能,增强了 ROS 各方面的综合能力。

四、ROS 2.0与 ROS 1.0的系统架构对比
(1)ROS1.0主要构建于 Linux 系统之上,ROS2.0支持的操作系统包括Linux、WindowsMac、RTOS,甚至支持没有操作系统的裸机。

(2)ROS 1.0的通信基于 TCPROS/UDPROS,强依赖于 Master 节点的处理,而 ROS 2.0取消了 Master,通信是基于数据分发服务(Data Distribution Service,DDS)的,同时 ROS 2.0内部提供了 DDS 的抽象层实现,用户可以不用关注底层的 DDS 使用了哪个API。ROS 中最重要的一个概念是“节点”,这种基于发布/订阅模型的节点,可以让开发者并行开发低耦合的功能模块,并且便于进行二次复用。ROS 2.0采用的 DDS,提升了发布/订阅模型的性能。

(3)在 ROS1.0 中,Nodelet 和 TCPROS/UDPROS 是并列的层次,也是负责通信的,Nodels可为同一个进程中的多个节点提供一种更优化的数据传输方式。ROS2.0中仍保留了这种数据传输方式,改名叫 Intra-process,同样也独立于 DDS。可以看到,ROS 2.0与ROS 10架构的不同主要是由数据分发服务引起的。DDS 是对象管理组织(Obiect Management Group,OMG)在 2004年正式发布的一个专门为实时系统设计的数据分发/订阅标准,最早应用于美国海军,解决舰船复杂网络环境中大量软件升级的容性问题。目前 DDS 已经成为美国国防部的强制标准,已广泛应用于国防、民航、工业控制等领域,成为分布式实时系统中数据发布/订阅的标准解决方案。DDS 是以数据为核心的发布/订阅模型,这种模型创建了一个“全局数据空间”(GlobaData Space)的概念,所有独立的应用都可以访问该空间。在DDS中,每个发布者或者订阅者都成为参与者(Participant),类似于 ROS 节点的概念。每个参与者都可以使用某种定义好的数据类型来读/写全局数据空间。

ROS 2.0还在不断发展中,在学术界和工业界未得到大范围的使用,但有着更强性能的ROS 2.0 将成为未来的发展趋势。

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值