A-A+

ROS和ROS2.0现在到底该学习哪个呢?

2017年01月06日 ROS 暂无评论 阅读 1,033 次
作者:Top Liu
链接:https://zhuanlan.zhihu.com/p/24391444
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权。

很多朋友经常问ROS1.0(下文简称ROS)和ROS2.0我到底该学习/使用哪个呢?

(声明:欢迎拍砖讨论,但若是因此对您的项目或产品造成了损失,本人不负任何责任!

我先给出个人的观点,再说明其中原因。


对于大众学习者、普通开发者、机器人算法开发者,在2017年仍推荐使用ROS,至于以后,要看形势再作评估。

对于软件架构的学习者、强调实时性的开发者,推荐ROS2.0。


原因:

ROS 1.0历经10年的发展,已经积累了非常非常丰富且稳定的功能包集、各类工具和完备的教程。在未来即便是ROS2.0大行其道,仍会有机制保证ROS 2.0代码与现有ROS代码共存。例如,ROS仍然还可以通过message bridges等方式与ROS2.0一起工作。


ROS 2.0未来将成为机器人应用程序开发的终极SDK。相比于ROS1.0,它使用更先进的分布式架构,更高的可靠性,以及对实时性和嵌入式设备的支持。最大的不同在于采用了数据分发服务(DDS)技术,DDS适用于实时分布式嵌入式系统。2016年有一篇会议论文。Exploring the performance of ROS2。 分析了ROS2.0的性能。详细内容可看原文:链接:pan.baidu.com/s/1jHITCX 密码:f0ih

File-Notional_OMG_DDS_Interoperability

(图片来源:Data Distribution Service

但2.0的进展并不是一帆风顺,目前仍是Alpha版本,计划在2016-12推出Beta 1 (circa)(ROS, 2016)。除非您是尖端的架构开发者,如果只是作为使用者,那不妨保持关注,等坑填平了再来趟这条路。另外,目前除了官网(ROS2, 2016)和Erle(Erle, 2016)目前还没见有其他的教程。


那为什么会出现ROS 2.0 ?


Gerkey在《为什么ROS 2.0 ?》(Gerkey, 2016)做了详尽的回答。归结起来,分为三个原因:1.历史原因2. 出现了新的需求3.出现了新的技术。

 

1.设计时的“”没想到

ROS始于2007年11月,最早是“柳树车库”用于PR2机器人的开发。同时希望ROS能用于其他机器人。为了便于多研究所合作,避免重复造轮子,所以柳树车库花费大量精力定义了抽象级别(通常是通过消息的接口),允许软件重用。

其解决思路是:
1、 让多个程序分别完成特定任务, 能够相互通信, 并且定义好常用的格式让大家使用
基于面向服务 Service-oriented
2、 ROS 提供构建环境,让大家能够较容易的使用他人的工作, 容易交换代码

(在这里引用邵天兰观点:由于ROS设计于2007年,介于当时的现状(虽然当时很先进了),(但今天看来)其设计思想和工具都比较古旧,例如XmlRpc,就很渣。所以今天千万不要把ROS当做学习架构设计的典范)

按照当时以及能够想到的机器人现状,ROS主要设计指向是:

· 单个机器人;

· 板载工作站级别的计算资源;

· 没有实时性需求;

· 理想的网络连接;

· 应用于学术研究;

· 强调最大的灵活性,没有过多的约定或者禁止。

然而,结果却是万万没想到….

第一个没想到……

ROS设计初衷是用于家用服务机器人,然而出乎意料的是:ROS被应用于各式各样的机器人:轮式机器人、腿式机器人、工业手臂、室外无人车辆、自动驾驶汽车、飞行器、无人艇……

第二个没想到……

ROS设计初衷是用于学术研究,然而出乎意料的是:大量基于ROS的产品进入市场,包括制造业机器人、农业机器人、商业清洁机器人,甚至NASA将运行ROS的Robonaut 2部署到国际空间站。

随着应用场景的扩大,导致产生了一系列新的需求。

 

2.新的需求

以下是ROS目前感觉蛋疼的领域,也是ROS2.0意图解决的问题。

· 多个机器人组成的集群; ROS的单master结构就蛋疼了。

· 小型嵌入式平台,甚至“裸奔”的微控制器;依赖于Ubuntu的ROS太重了。

· 实时系统:包括进程间和跨机器通信,ROS做不到。

· 非理想的网络;ROS延迟很大,甚至断网再连接时会挂。

· 生产制造等环境:ROS可靠性还不够。

· 为一些新特性,如部署的生命周期管理和静态配置,提供清晰的模式和支持工具。

 

3.新的技术

ROS的核心是匿名发布-订阅中间件系统,从2007年开始,在ROS这些相关领域产生了一些更新、更好、值得借鉴使用的技术,如:

  • Zeroconf;
  • Protocol Buffers;
  • ZeroMQ (and the other MQs);
  • Redis;
  • WebSockets; and
  • DDS (Data Distribution Service)

先总结到这,下次接着整理下ROS2.0的设计特点。


补充资料

下面是ROS2.0历次会议介绍的ppt (Github, 2016)

ROS 2 Update - summary of alpha releases, architectural overviewROSCon 2016 presentationslides /video
Evaluating the resilience of ROS2 communication layerROSCon 2016 presentationslides /video
State of ROS 2 - demos and the technology behindROSCon 2015 presentationslides /video
ROS 2 on "small" embedded systemsROSCon 2015 presentationslides /video
Real-time control in ROS and ROS 2.0ROSCon 2015 presentationslides /video
Why you want to use ROS 2ROSCon 2014 presentationslides /video
Next-generation ROS: Building on DDSROSCon 2014 presentationslides /video
标签:

给我留言

Copyright © ExBot易科机器人实验室 保留所有权利.   Theme   Robin modified by poyoten

用户登录

分享到: