ROS 2 新特性 , 探索总结

2017 年 12 月 12 日 无人机

机器人开源操作系统软件ROS 2已经推出首个正式版了,新版本命名为“Ardent Apalone”,代号“ardent”。


ROS 2因何而来?

常年混迹机器人圈的朋友们,肯定对ROS(Robot Operating System,机器人操作系统)不陌生。这款为机器人开发者提供程序库和工具的架构,第一版还是2007年推出的。

为什么在增强ROS性能的基础上还要开发新一代的ROS 2平台?在项目介绍中,开发团队给出了答案。

“我 们最初的目标是开发一些软件工具,方便在Willow Garage的PR2机器人上研究,”项目介绍中写着,“但PR2不是世界上唯一的机器人,我们希望ROS也能帮助其他的机器人开发者。”因此,研究人员 通过很多消息接口定义抽象层次,让ROS能在构建其他机器人时可用。

 Willow Garage公司的机器人PR2

ROS开源后,研究人员发现了新诉求。

一是之前没有考虑到一些新用例,比如机器人的多样性,用户对小型嵌入平台和实时系统等诉求。

二是这几年出现了Zeroconf、Protocol Buffers、ZeroMQ、Redis、WebSockets、DDS等新技术,不利用岂不是浪费了。

三是研究人员想借机也升级API,将一代API中用户提出的建议加进新API中。

因此,ROS 2闪亮登场——

新特性

平台和依赖性

ROS 2支持在Ubuntu Xenial、OS X El Capitan和Windows 10上进行CI测试。

在语言方面,ROS 2广泛使用了C++11,并且还用到了部分C++14,Python至少为3.5版。

此外,ROS使用自定义的序列化格式、自定义传输协议和自定义中心发现机制;ROS 2有一个抽象的中间设备接口,目前该接口的所有实现都基于DDS标准。

构建系统

ROS 2开始支持除CMake以外的其他构建系统,并且Python包可以使用setup中的所有特性。

ROS 2中的环境设置被分成特定package和特定工作空间的脚本。

在ROS中,用户可以在单个CMake context上构建多个package,但ROS 2只支持单独构建。

在ROS中,研究者可以在不安装它们的情况下构建package,用ROS 2必须提前安装。

此外,ROS 2中重构的CMake API简化了编写代码,并且可以在没有清单文件的文件夹中检测支持的构建系统package。

消息与服务

在ROS 2中——

生成的代码使用了单独的命名空间。

可以设置消息中的默认初始值。

数组和字符串的可选上限。

持续时间和时间类型被定义为消息。

删除了Header message中的序列字段。

客户端库

ROS 2目前还不支持主题名称中的命名空间,在使用C或C++时,部分情况下可以编写实时节点。

资源查找

在ROS 2中的资源可在编译时在索引处注册,在运行时可被有效查询。

相关资料

项目介绍地址:

https://github.com/ros2/ros2/wiki

关于你想要的ROS 2的所有介绍,都在上面这个地址中。

ROS 2.0 探索总结

 ROS刚刚度过了9岁生日,这九年以来,无论国外还是国内,越来越多机器人开发者或者机构选择ROS,同时也为社区贡献了更多更优秀的代码,从下边这张图我们可以看到,这种成长几乎是指数级的。

      2007年11月,Willow Garage公司孕育许久的一个宝宝终于诞生了,并且取名叫做ROS,Willow Garage 专门为他设计了一个机器人玩具——PR2,没想到,ROS宝宝悟性极强,很快就学会了怎么玩这个PR2,Willow Garage 发现ROS宝宝潜力很大,就继 续教ROS宝宝学习更多通用机器人软件包的知识,让他学会了怎么去玩更多的机器人,就算遇到一个新的机器人,也可以将以前学到的知识运用到上边,继续愉快 的玩起来。但是那个时代,毕竟ROS宝宝可以玩、会玩的机器人少,主要就是玩PR2,于是迫于局限,也存在一些性格上的不足:

  1. 只能同时玩一个机器人,多机器人就不会玩了。

  2. 脑力有限,只能依靠自身的资源做心算,如果要玩的功能太复杂,就心有余而力不足了。

  3. 脑子转的慢,没有实时性,有的时候会算不过来。

  4. 神经系统不发达 ,自身的各个关节部分都需要保持良好的连接,各部分通讯数据量有点大。

  5. 还只能在实验室或者研究机构里托管,不能让他带着机器人和大众玩。

       但是 Willow Garage相信自己的孩子,并且把该上小学的ROS放到了社区这个学校里,接收世界各地开发者老师的培养和教育,这也让ROS接触到了众多资源,激发了 他内心强大的学习欲望,并且一路从小学到初中到高中,成绩越来越好,最后以名列前茅的成绩考入了理想的大学

       在这段成长最重要的时光里,我们确实可以看到,ROS已经不是当年的宝宝,也不仅仅会玩PR2、TurtleBot等机器人,在轮式机器人、类人机器人、 工业机械臂、自动驾驶汽车、探索飞船、救援车辆等领域,都已经可以看到这位ROS小朋友勤奋努力的身影。而且他已经不是当年那个会打碎花瓶的熊孩子,他逐 渐成长为一个教养有佳的翩翩少年,他带着不少服务机器人走进了人类的日常生活,同时和农业机器人、工业机器人一起,为人类的生产生活贡献着力量,最酷的 是,NASA的叔叔阿姨还让他搭乘 Robonaut 2去了国际空间站,曾经那些欺负他的小朋友( MSRDS等),不仅没有打倒他,还让他学会了吸星大法的内功,现在在机器人领域,几乎无人能敌。

      但是ROS并没有骄傲,在上大学里,他发现了一个全新的世界。那里有很多课程需要他去学习,他第一次接触到那么多从来没听说过的新技术,而这些技术都是他的基础课程:

  1. Zeroconf: 零配置网络服务规范, 用于自动生成可用IP地址的网络技术,不需要额外的手动配置和专属的配置服务器。

  2. Protocol Buffers: Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面, 它不依赖于语言和平台并且可扩展性极强。

  3. ZeroMQ (and the other MQs): 一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。

  4. Redis: 一个高性能的key-value数据库

  5. WebSockets:HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。

  6. DDS (Data Distribution Service): 新一代分布式实时通信中间件技术规范,DDS采用发布/订阅体系架构,强调以数据为中心,提供丰富的QoS服务质量策略,能保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。

   在学习以上这些基础技术课程的基础上,ROS需要灵活应用这些技能,并且在高年级的学习中修炼综合能力:

  1. 多机器人控制。这个能力厉害了,以后可以同时驾驭多个机器人,别提多炫酷了,必须好好修炼,说不定还能靠此技能吸引异性呢。

  2. 多平台应用支持。这个能力要求ROS要学会大丈夫能屈能伸,不仅要能在性能强劲的计算机上跑,还要能在资源有限的嵌入式平台上跑。

  3. 实时应用支持。这个需要好好修炼内功,让自己完善时间管理能力,说几点起就几点起,说几时完成任务就几时完成任务。

  4. 增强网络通信能力。这个能力正是ROS所需要的,原来上100楼,走到50楼还得缓冲一下,这门课就是教ROS如何上100楼大气不喘的,就算楼要倒,还能飞起来。

  5. 产品应用。这个能力要求ROS具备更强的可靠性,以后就可以带着更多机器人去到更多普通人的家里玩了。

  6. 灵活构建。这是个学习能力,要求ROS学习更多的新特性,无论面对多么复杂的机器人系统,都可以轻松应对。

     这么多的课程需要学习,这么多的能力需要修炼,这个大学生涯对于ROS可不轻松了。


     ROS就像一个孩子,在加速成长的过程中,也需要不断适应外部坏境的发展,吸收更多与时俱进的技术,从而使自己更加优秀强壮。 相信等到他毕业之时,必将是一个全新的自我,我们可以使用全新的API与他交流,他也会变得更加优秀,不仅依然会玩曾经的机器人,还可以玩好更多机器人, 甚至可以玩机器人领域之外的东东。他并不会在原有基础上查漏补缺,而是脱胎换骨的涅磐重生,从少年成长为青年,更加蓬勃也更加好强,带着多年所学,立志闯 出大好未来 。

       所以,他也应该有一个全新的名字——ROS 2.0。

源自:易科机器人实验室


长按识别图中二维码关注我们!


登录查看更多
2

相关内容

【干货书】现代数据平台架构,636页pdf
专知会员服务
250+阅读 · 2020年6月15日
专知会员服务
142+阅读 · 2020年6月15日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
已删除
将门创投
10+阅读 · 2019年3月6日
2018年最全干货总结
计算机视觉战队
3+阅读 · 2018年10月15日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
为什么你应该学 Python ?
计算机与网络安全
4+阅读 · 2018年3月24日
设计和实现一款轻量级的爬虫框架
架构文摘
13+阅读 · 2018年1月17日
TensorFlow 相关论文与研究汇总
云栖社区
4+阅读 · 2018年1月7日
ROS 2正式版终于来了,还增加了这些新特性
量子位
3+阅读 · 2017年12月11日
文本聚类:从非结构化数据快速获取见解
Datartisan数据工匠
15+阅读 · 2017年10月12日
十五条有用的Golang编程经验
CSDN大数据
5+阅读 · 2017年8月7日
AdarGCN: Adaptive Aggregation GCN for Few-Shot Learning
Pluralistic Image Completion
Arxiv
8+阅读 · 2019年3月11日
Arxiv
3+阅读 · 2018年3月5日
VIP会员
相关资讯
已删除
将门创投
10+阅读 · 2019年3月6日
2018年最全干货总结
计算机视觉战队
3+阅读 · 2018年10月15日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
为什么你应该学 Python ?
计算机与网络安全
4+阅读 · 2018年3月24日
设计和实现一款轻量级的爬虫框架
架构文摘
13+阅读 · 2018年1月17日
TensorFlow 相关论文与研究汇总
云栖社区
4+阅读 · 2018年1月7日
ROS 2正式版终于来了,还增加了这些新特性
量子位
3+阅读 · 2017年12月11日
文本聚类:从非结构化数据快速获取见解
Datartisan数据工匠
15+阅读 · 2017年10月12日
十五条有用的Golang编程经验
CSDN大数据
5+阅读 · 2017年8月7日
Top
微信扫码咨询专知VIP会员