机器人开源操作系统软件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,于是迫于局限,也存在一些性格上的不足:
只能同时玩一个机器人,多机器人就不会玩了。
脑力有限,只能依靠自身的资源做心算,如果要玩的功能太复杂,就心有余而力不足了。
脑子转的慢,没有实时性,有的时候会算不过来。
神经系统不发达 ,自身的各个关节部分都需要保持良好的连接,各部分通讯数据量有点大。
还只能在实验室或者研究机构里托管,不能让他带着机器人和大众玩。
但是 Willow Garage相信自己的孩子,并且把该上小学的ROS放到了社区这个学校里,接收世界各地开发者老师的培养和教育,这也让ROS接触到了众多资源,激发了 他内心强大的学习欲望,并且一路从小学到初中到高中,成绩越来越好,最后以名列前茅的成绩考入了理想的大学。
在这段成长最重要的时光里,我们确实可以看到,ROS已经不是当年的宝宝,也不仅仅会玩PR2、TurtleBot等机器人,在轮式机器人、类人机器人、 工业机械臂、自动驾驶汽车、探索飞船、救援车辆等领域,都已经可以看到这位ROS小朋友勤奋努力的身影。而且他已经不是当年那个会打碎花瓶的熊孩子,他逐 渐成长为一个教养有佳的翩翩少年,他带着不少服务机器人走进了人类的日常生活,同时和农业机器人、工业机器人一起,为人类的生产生活贡献着力量,最酷的 是,NASA的叔叔阿姨还让他搭乘 Robonaut 2去了国际空间站,曾经那些欺负他的小朋友( MSRDS等),不仅没有打倒他,还让他学会了吸星大法的内功,现在在机器人领域,几乎无人能敌。
但是ROS并没有骄傲,在上大学里,他发现了一个全新的世界。那里有很多课程需要他去学习,他第一次接触到那么多从来没听说过的新技术,而这些技术都是他的基础课程:
Zeroconf: 零配置网络服务规范, 用于自动生成可用IP地址的网络技术,不需要额外的手动配置和专属的配置服务器。
Protocol Buffers: Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面, 它不依赖于语言和平台并且可扩展性极强。
ZeroMQ (and the other MQs): 一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。
Redis: 一个高性能的key-value数据库。
WebSockets:HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。
DDS (Data Distribution Service): 新一代分布式实时通信中间件技术规范,DDS采用发布/订阅体系架构,强调以数据为中心,提供丰富的QoS服务质量策略,能保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。
在学习以上这些基础技术课程的基础上,ROS需要灵活应用这些技能,并且在高年级的学习中修炼综合能力:
多机器人控制。这个能力厉害了,以后可以同时驾驭多个机器人,别提多炫酷了,必须好好修炼,说不定还能靠此技能吸引异性呢。
多平台应用支持。这个能力要求ROS要学会大丈夫能屈能伸,不仅要能在性能强劲的计算机上跑,还要能在资源有限的嵌入式平台上跑。
实时应用支持。这个需要好好修炼内功,让自己完善时间管理能力,说几点起就几点起,说几时完成任务就几时完成任务。
增强网络通信能力。这个能力正是ROS所需要的,原来上100楼,走到50楼还得缓冲一下,这门课就是教ROS如何上100楼大气不喘的,就算楼要倒,还能飞起来。
产品应用。这个能力要求ROS具备更强的可靠性,以后就可以带着更多机器人去到更多普通人的家里玩了。
灵活构建。这是个学习能力,要求ROS学习更多的新特性,无论面对多么复杂的机器人系统,都可以轻松应对。
这么多的课程需要学习,这么多的能力需要修炼,这个大学生涯对于ROS可不轻松了。
ROS就像一个孩子,在加速成长的过程中,也需要不断适应外部坏境的发展,吸收更多与时俱进的技术,从而使自己更加优秀强壮。 相信等到他毕业之时,必将是一个全新的自我,我们可以使用全新的API与他交流,他也会变得更加优秀,不仅依然会玩曾经的机器人,还可以玩好更多机器人, 甚至可以玩机器人领域之外的东东。他并不会在原有基础上查漏补缺,而是脱胎换骨的涅磐重生,从少年成长为青年,更加蓬勃也更加好强,带着多年所学,立志闯 出大好未来 。
所以,他也应该有一个全新的名字——ROS 2.0。
文章来源:易科机器人实验室
《ROS机器人操作系统实战》课程将由外籍老师Dr.Juan Rojas亲授,课程面向想要系统学习ROS的学生,讲授内容是从基础知识开始,再逐步到高级案例。课程将不仅仅关注ROS,还会介绍不同阶段下的机器人核心概念。教你快速上手机器人开发。点击下方二维码报名课程