ROS已经走过11个年头,伴随机器人技术的大发展,ROS也得到了极大的推广和应用。尽管还存在不少局限性,但依然无法掩盖ROS的锋芒,社区内的功能包还是呈指数级逐年上涨,为机器人开发带来了巨大的便利。
ROS最初设计的目标机器人是PR2,这款机器人搭载了当时最先进的移动计算平台,而且网络性能优异,不需要考虑实时性方面的问题,主要应用于科研领域。
如今ROS应用的机器人领域越来越广:轮式机器人、人形机器人、工业机械手、室外机器人(如无人驾驶汽车)、无人飞行器、救援机器人等等,美国NASA甚至考虑使用ROS开发火星探测器;越来越多的机器人开始从科研领域走向人们的日常生活。
ROS 1虽然仍是机器人领域的开发利器,但介于最初设计时的局限性,也逐渐暴露出不少问题。
目前的ROS 1主要存在以下问题:
- 多机器人系统
多机器人系统是机器人领域研究的一个重点问题,可以解决单机器人性能不足、无法应用等问题,但是ROS 1中并没有构建多机器人系统的标准方法。
- 跨平台
ROS 1基于Linux系统,在Windows、MacOS、RTOS等系统上无法应用或者功能有限,这对机器人开发者和开发工具提出了较高要求,也有很大的局限性。
- 实时性
很多应用场景下的机器人对实时性有较高要求,尤其是工业领域,系统需要做到硬实时的性能指标,但是ROS 1缺少实时性方面的设计,所以在很多应用中捉襟见肘。
- 网络连接
ROS 1的分布式机制需要良好的网络环境保证数据的完整性,而且网络没有数据加密、安全防护等功能,网络中的任意主机都可获得节点发布或接收的消息数据。
- 产品化
ROS 1的稳定性欠佳,ROS Master、节点等重要环节在很多情况下会莫名宕机,这就导致很多机器人从研究开发到消费产品的过渡非常艰难。
虽然不少开发者和研究机构针对以上部分问题进行了改良,但这些局部功能的改善往往很难带来整体性能的提升,机器人开发者对新一代ROS的呼声越来越大,ROS 2.0的消息也不绝于耳。
终于!
ROSCon 2014上,新一代ROS的设计架构(Next-generation ROS: Building on DDS)正式公布。
2015年8月第一个ROS 2.0的alpha版本落地;
2016年12月19日,ROS 2.0的beta版本正式发布;
2017年12月8日,万众瞩目的ROS 2.0终于发布了第一个正式版——Ardent Apalone。
2018年7月2日,第二个正式版——Bouncy Bolson发布,保持半年更新一个版本的节奏。
2018年12月,第三个正式版——Crystal Clemmys也将发布。
众多新技术和新概念应用到了新一代的ROS之中,不仅带来了整体架构的颠覆,更是增强了ROS 2.0的综合性能。
ROS 2诞生的目标并不是取代ROS 1,也不可能立刻取代ROS 1,众多功能包迁移到ROS 2将会是一个漫长的过程,ROS 2自身功能的完善也还需要迭代多个版本,所以在很长一段时间内,ROS 2和ROS 1将会并存。
最后,用一张图来总结ROS 2和ROS 1的主要特性: