2021雷军年度演讲结尾,雷军展示了一个探索概念项目——小米第一代仿生四足机器人CyberDog,取了一个非常接地气的名字铁蛋,价格依然屠夫,直接9999( 工程探索版),一时间机器人圈再次热闹起来。

雷军的演讲中,我们发现铁蛋身上背负着两个全球共创的浩瀚工程,其中之一便是“ROS 2”ROS 2是何方神圣,为何能够成为铁蛋的软件灵魂,且听古月君娓娓道来。

一、什么是ROS

时光回到2007年美国斯坦福大学的机器人实验室,大家正在讨论如何实现一款机器人家庭助手。这个实验室聚集了全球精英,但是他们依然无法从零制造一个能够走进千家万户的机器人,于是这群人诞生了一个想法:为什么不把更多人的智慧集合到一起呢?

                            (一辆汽车是各种零部件厂商合作的结果)

正如一家做汽车的公司,从零制造汽车并不是一个明智的做法,他们通常会采购A家的轮子、B家的引擎、C家的钢材,最后把这些集成到一起做成汽车。同理,我们也可以将已有的传感器、移动底盘、机械手臂、智能软件等集合到一起,在此之上去实现自己的创意,这样岂不是可以站在巨人的肩膀上,向前走的更远么?

于是斯坦福大学的这群学生就脑洞大开,做了一套针对机器人的软件框架,把开源社区里很多优秀的软件集成其中,这样就可以在上边快速开发做饭、做家务等应用了。

所谓“软件框架”,就像房子的骨架一样,再高的楼房都是先把“框架”搭起来,然后再在里边精装每个房间。所以有了这样一个机器人的软件框架,做机器人就更加简单了。他们为这个软件框架起了一个名字——机器人操作系统,Robot Operating System,缩写为ROS。

 ROS类似Windows和Android系统一样,为开发者提供了一个针对机器人的平台,大家可以像开发手机程序一样开发机器人的应用功能,这大大加速了基于ROS开发机器人的进度,也迅速掀起了ROS开发与应用的热潮。

在短短的几年时间里,ROS得到了广泛应用,各大机器人平台几乎都支持ROS框架,例如Pioneer、Nao、TurtleBot、Lego NXT等,开源社区内的ROS功能包也呈指数级增长,涉及的应用领域包括轮式机器人、人形机器人、工业机器人、农业机器人等,美国NASA已经开始研发下一代基于ROS的火星探测器。

ROS在机器人领域的浪潮很快涌入国内,近年来国内开发者及公司也普遍采用ROS开发自己的机器人,ROS在中国的使用人数已经一跃成为全球第一,并且不断反哺ROS社区,促进了开源社区的繁荣发展。

这就是ROS的快速发展过程,我们把这一代称之为ROS 1。

二、为什么是ROS 2

在雷总的介绍中,铁蛋使用的ROS系统是第2代,这又是为什么呢?

ROS 1虽然成为机器人领域的开发利器,但介于最初设计时的局限性,也逐渐暴露出不少问题。

终于,在ROSCon 2014上,新一代ROS的设计架构正式公布。2015年8月第一个ROS 2的alpha版本落地;2017年12月8日,万众瞩目的ROS 2终于发布了第一个正式版——Ardent Apalone。众多新技术和新概念应用到了新一代的ROS之中,不仅带来了整体架构的颠覆,更是增强了ROS 2.0的综合性能。

  

相比ROS 1,ROS 2的设计目标也更加丰富。

 

  1. 增加了对多机器人系统的支持,提高了多机器人之间通信的网络性能;
  2. 不仅针对科研领域,还可以让更多机器人直接搭载ROS 2系统走向市场;
  3. 支持MCU等嵌入式微控制器,比如常用的ARM-M4、M7内核。
  4. 加入了实时控制的支持,可以提高控制的时效性和整体机器人的性能。
  5. 增加了对Windows、MacOS、RTOS等系统的支持,让开发者的选择更加自由。

 ROS 2重新设计了系统架构,可以从下图中看到两代ROS之间架构的变化。

                                                                      ( ROS 2与ROS 1的系统架构比)

  1. OS层

ROS 1主要构建于Linux系统之上;ROS 2带来了改变,支持构建的系统包括Linux、Windows、Mac、RTOS,甚至没有操作系统的裸机。

  1. 中间件

ROS中最重要的一个概念就是计算图中的“节点”,可以让开发者并行开发低耦合的功能模块,并且便于二次复用。ROS 1的通信系统基于TCPROS/UDPROS,而ROS 2的通信系统基于DDS。DDS是一种分布式实时系统中数据发布/订阅的标准解决方案,下一小节会具体讲解。ROS 2内部提供了DDS的抽象层实现,用户不需要关注底层DDS的提供厂家。

在ROS 1的架构中,Nodelet和TCPROS/UDPROS是并列的层次,可以为同一个进程中的多个节点提供一种更优化的数据传输方式。ROS 2中也保留了类似的数据传输方式,命名为“Intra-process”,同样独立于DDS。

  1. 应用层

     ROS 1强依赖于ROS Master,可以想象一旦Master宕机,整个系统会面临如何的窘境。但是在右边ROS 2的架构中,让人耿耿于怀的Master终于消失了,节点之间使用一种称为“Discovery”的发现机制来帮助彼此建立连接。

总而言之,ROS 2的发展方向是成为一款适合所有机器人的操作系统,成为机器人的软件灵魂。与小米铁蛋的选择一致,ROS 2逐渐成为机器人公司的首选,比如知名的无人驾驶开源框架Autoware

 

ROS已经掀起一场机器人的技术革命,开源就是力量,我们相信越来越多开发者和机器人公司会做出明智的选择,同时也会为ROS社区做出更多贡献,让世界看到中国智造!

好课推荐

本课程将以CoppeliaSim(V-rep)作为物理仿真引擎,用Matlab作为编程语言来实现一个12自由度的四足机器人的基本动作仿真。

点击下方链接开始学习吧~

四足机器人控制与仿真入门