主讲导师|廖洪涛
本文编辑|师侥
本文根据优必选联席CTO廖洪涛,在「智东西公开课」的超级公开课优必选专场第二讲《服务机器人操作系统ROSA技术架构与应用开发》的讲解整理而来。
廖洪涛博士以常见机器人操作系统为引,结合当下机器人领域开发过程中普遍存在的问题,为大家详细解读ROSA系统开发背景、系统架构及技术特征,以此帮助开发者迅速开发出机器人应用、让整机厂商更高效地打造出产品级机器人,与内容提供者们一起构建机器人生态系统。
以下是廖洪涛博士的主讲实录,共计7101字,预计10分钟读完。
一起了解下本次讲解的提纲:
1、机器人操作系统现状简介
2、ROSA系统架构及技术特征
3、第三方如何基于ROSA快速开发机器人技能和应用
精华整理
廖洪涛:大家好,我是优必选联席CTO廖洪涛,很荣幸能有机会与大家一起分享优必选开发的服务机器人操作系统ROSA的技术架构和应用开发。首先做个自我介绍,我在法国留学并获得统计学博士学位,在中国也工作了很长时间,从事数字电视、智能电视、数据处理以及软件系统研发工作超过20年,期间也负责过多个国家级的科研项目。
今晚我分享的课题是服务机器人操作系统ROSA的技术架构和基于ROSA的应用开发,主要分为三个部分展开。首先我将介绍机器人操作系统的现状,其次是优必选机器人操作系统ROSA技术架构和功能特征,最后我将为大家介绍如何基于ROSA为机器人开发技能与应用。
第一部分:机器人操作系统现状
说到操作系统,大家最容易想到的可能是Windows。在这里,我们把操作系统分成两类,一类是设备操作系统,一类是应用操作系统。
设备操作系统,主要包括电脑或其他设备的操作系统,如Windows、Linux、iOS等。
机器人操作系统是应用操作系统,它是为了完成某一类型的特定功能而设计的软件功能模块、应用和工具包等。机器人操作系统中比较出名的是ROS系统,ROS是在2007年由斯坦福大学人工智能实验室与机器人技术公司Willow Garage为了个人机器人项目的合作而开发的,2008年后由Willow Garage来进行推动。
ROS是建立在Linux(ubuntu)系统上、为机器人的特定功能应用而开发的一系列的软件工具包,它有类似于设备操作系统的一些功能,例如硬件抽象、底层的设备控制、消息的传递、应用进程之间的管理等,所以,ROS就是典型的为机器人应用而设计的应用类操作系统。WG公司也基于ROS开发了PR2机器人,另外还有很多机器人样机都是基于这个操作系统来开发的。
我先简单介绍一下ROS系统的版本发布历史。ROS是一个开源的系统,于2010年3月发布,当年也同时发布了一些样机和模拟器。2010年至今,ROS系统一直在进行更新,今年5月23日,ROS发布了最新版本,为科研和教学提供了很多便利,诸多研究所和开发教学类产品的公司都基于ROS系统进行研究和开发,也为我们提供了丰富的应用。
ROS操作系统有一些特点,它是一个分布式架构,其中主要是ROS Master来控制各个节点不同的运行,每一个节点都可以提供一些特定的功能,这些不同的节点可以在同一台机器人或电脑上完成,也可以分布在不同机器人或者电脑上完成。另外,这些节点都需要向ROS Master进行注册,同时,每个节点也能接收其它不同节点之间的事件和信息,Master具有针对不同节点之间的发布和接收信息的机制,这也是分布式架构中比较典型的节点管理方式。当每个节点要发布这些信息时,都有一个主题(topic),相关的内容则通过信息(Message)进行传递,从一个节点发布到另一个节点,即机器人的一个功能模块发布到另一些功能模块所需要完成的指令动作及状态信息等。
ROS有三大主要的技术特征。
第一,ROS将很多复杂的机器人工具代码封装在不同的软件库里,构建了系统化的功能模块,便于不同需求的调用;
第二,ROS工具包非常丰富,能够支持多种不同的任务,也支持第三方开发者添加功能组件或节点功能包,它提供一个图形化的模拟器,接受各种指令,可以查看每个节点实时运行的状况;
第三,也是ROS目前在业内较为流行的原因,ROS是开源免费的,它基于GPL等开源协议,在很多领域都可以免费使用。
尽管ROS机器人操作系统的工具包很丰富,但由于它太复杂,而且目前主要是基于ubuntu系统,现阶段更多的是适用于科研教学,要用它真正实现完整的机器人开发及其他商业化产品开发依然较为困难,还有很多需要改进的地方。因此,目前将ROS直接作为机器人的软件系统进行产品商业化的案例并不多。
第二部分:优必选机器人ROSA系统架构及应用开发
尽管有开源的ROS,但优必选却选择自己开发机器人操作系统,这是为什么呢?原因主要有三点:
第一,ROS软件庞杂,同时也不是很成熟,距离商业化的道路还较长,并且它基于Linux系统、运行于x86芯片(有人将它移植到ARM架构芯片上,但未有实质性的样机和软件推出),芯片成本和软件开发成本都相当高。目前,我们用的基本都是基于MTK、高通或其它的支持安卓系统的芯片,其成本相对较低,开源的ROS操作系统在这些芯片上难以很好地运行。
第二,机器人公司开发机器人不仅是为了做一个简单的终端产品,机器人也属于IoT产品,需要机器人和用户信息的汇聚,通过云平台进行统一管理,同时也需要向用户推送其感兴趣的业务和内容,因此基于机器人终端的软件系统必须统一,这就需要一个公共平台化的软件。
第三,通过操作系统及后台管理系统构建一种生态体系,不仅需要很多的应用开发者加入到生态圈里,还需要有一个跨平台支撑不同硬件体系的应用开发环境来保障应用能够顺利运行。
基于这些原因,我们就需要开发一个可商业化、能够支撑构建机器人生态体系的机器人操作系统,将机器人终端的公共软件统一起来。
优必选机器人操作系统ROSA的定位是,在机器人终端中介于机器人个性化应用和机器人终端硬件驱动之间的公共软件平台,它使得不同机器人的应用能够在不同机器人终端上运行,而且这个操作系统能够方便地移植到不同的机器人终端上,我们可以通过硬件抽象层(HAL)把机器人硬件的驱动软件与个性化应用分隔。
基于ROSA的定位,ROSA的系统架构与设计理念如上图所示,它是一个分层和分模块的设计。从下往上可以看到,在软件层面,有不同的硬件驱动或硬件组件,比如有足式模块、导航模块、舵机模块、电源模块、灯光模块等控制面板或控制板层。
这些驱动能够连接到硬件抽象层的接口层上,基于这些接口,我们可以开发各种不同的服务。在Framework层,是操作系统架构中最核心的服务管理总师(Service Master),它能够根据规定的调度策略来管理不同的资源和服务,使得每个应用和服务之间能够分离,所有应用和服务之间的通信以及对系统资源的调用都通过服务管理总师来协调执行。
在系统中,除了服务总师以及服务外,还有一些基于这些服务的内置公共应用,比如机器视觉、图传管理(通过机器人拍摄并上传到服务器或手机终端进行管理)、电源管理、机器人配网以及应用升级等。
在框架层(Framework)之上,ROSA提供应用开发的API,不同的机器人产品可以去开发定制化应用,比如商场或机场指南、医疗健康、旅游导航、图片浏览、酒店介绍以及儿童教育等应用,所有应用都是基于Framework中的服务以及服务管理总师来对机器人的硬件以及驱动进行操控以实现所需要的功能。
接下来介绍服务总师的管理原理。如图,不同应用和不同服务之间都可以通过总师来进行通信和调用,在ROSA系统中也有专门的配置文件告诉应用如何调用不同系统服务之间的功能。因此,服务总师不仅将应用和服务进行屏蔽和分离,也使得各个系统服务之间分离,同时服务总师还能根据不同的策略进行资源管理、事件信息传递以及权限管理等。
在这个设计中,Master完成的功能非常多,使得不同应用在系统调用时可以进行管理,比如当机器人在导航时,语音是否可以中断,当机器人在唱歌时,是否可以命令它去导航等,针对这些问题都可以制定不同的策略,并通过Master进行管理,使得服务和应用之间能够很好地协调。
下面来具体看看语音服务如何利用Master机制。语音是机器人的基础和核心服务之一。
上图可以看到,语音服务与不同的语音引擎以及相关的驱动和硬件(如麦克风阵列)之间有一个服务抽象层,服务抽象层可以使得不同的软件驱动能够连接在语音服务的组件上,而语音服务和服务总线之间是通过RPC进程调用实现的,不同的应用之间也要通过RPC和Master来调用,可以看到整个系统是一个多进程的管理系统。
在整个ROSA系统中有非常多的服务功能组件,这些功能都已经实现了,并且是开放的。包含的服务有:语音、运动、舵机、电源管理、灯光、升级、情感、数据收集、导航、文件同步等。基于ROSA系统服务,还有一些内置的应用,如闹钟、对话闲聊、网络配置、摄像头管理、音乐播放、视频会议等等。
基于ROSA中的服务组件,我们提供API(应用编程接口),个性化应用都可以通过这些API来进行开发。ROSA系统也提供了很多应用,根据不同的产品可以进行定制化修改,如对音乐的播放形式、视频的会议系统等进行修改。
接下来介绍ROSA在不同产品上的支持情况,目前优必选的产品主要分为两大类,一类面向To B市场,包括智能云平台商用服务机器人Cruzr(克鲁泽)、智能巡检机器ATRIS、双足机器人Walker等;另一类面向To C市场,如消费级人形机器人Alpha系列等。
ROSA对这两类机器人基本都支持。其中,有一些服务在Alpha系列机器人中用不到,如导航服务(Navigation),尽管它们也有双腿可以行走,但一般不需要用到导航功能。而在To B机器人上,如Cruzr机器人则需要导航;另外Alpha系列机器人也不需要诊断服务(Diagnose)。这个功能在To B产品上需要用到。随着产品的需要,上图左列的这些服务组件,我们会陆续扩展添加。
ROSA不仅有众多服务组件,还具有丰富的系统能力。如语音操控,ROSA系统支持多种语音引擎,也内置了语音唤醒功能。对于产品的不同语音引擎,在需要用到时只需去动态切换或静态指定即可。
视觉识别能力,包括人脸识别、物体检测以及文字图像识别等;
定位导航,包括建模、路径规划、自动避障等服务;
运动控制,包括机器人舵机控制、机器人行走、手臂动态姿势、行进转弯等;
表现力,即机器人的各种表情,根据不同的需要,可以设置不同的灯效以及灯光颜色、播放长短或者舞蹈等;
除此以外,系统还支持很多的传感器,这些传感器都通过硬件和控制板进行接入,包括红外、重力传感器等,使得机器人可以感知外部环境以及相关变化,这些都通过相应的服务实现了其功能;
任务的决策,就是根据不同场景执行不同任务;
设备互联,是设备与云端、不同设备之间、设备和手机之间的联系等;
资源调度,由于机器人是在同一台设备上,对同一资源进行调用,如麦克风阵列,可能有不同的应用都需要去调用它,ROSA系统会自动对这些资源按优先级进行调度,协调不同应用之间的冲突。因此,ROSA系统的这些能力都能很好地协调不同的服务,也能很好地使不同应用之间的调用服务更顺畅。
ROSA的技术先进性表现在以下几方面。
第一,模块化,整个系统都是基于模块化设计、层次性的架构。各个层次、各个模块之间相互协同,屏蔽了硬件平台的差异,它们之间又能相互联系,对整个模块进行分布式的管理,具有非常好的可扩展性和系统的重用性。目前ROSA系统支持Java语言编程,也可以扩展到支持Python、JS编程,对硬件的抽象层使得应用之间可以跨平台执行。
第二,平台的开放性,我们支持第三方开发应用来扩展机器人的功能,让开发者的创意创新有更好发挥的舞台。
第三,松耦合,ROSA采用服务管理总师这种管理方式,我们可以看到服务管理总师在ROSA系统管理中的作用非常重要并具有多样性,它不只是传递消息,还能实现对系统资源的配置、权限的管理以及对系统调用策略的优化,使应用采用技能组件式的模式进行扩充、服务之间互不依赖,因而整个系统完全松耦合,不同功能可进行组合,根据产品的需要进行扩展。
第四,功能全集成,ROSA内置的功能非常丰富,它集成了机器人所必需的硬件模块和必要传感器,包括激光雷达导航、舵机操控以及协同处理、感知避障、语音等功能等,另外,还有表情、视觉、电源管理、机器人联网等,这些组件和功能,使得产品开发和应用的定制可以很轻松、方便地实现。
ROSA的服务给应用和开发者提供了便利,而且,内置的服务和应用将来会随着在市场上的使用情况不停地扩展。
第三部分:基于ROSA如何快速开发机器人技能和应用
我们为应用开发者提供了创新平台,使得个人用户、企业用户以及其他的运营人员都可以通过开发者平台来发布机器人的创新性应用。
今年9月27日,优必选正式发布ROSA,宣布为大家提供应用开发者平台,只要获得授权就可以参与应用的开发。在基于安卓等应用生态体系中,大家可以发挥创意、创建应用。
基于ROSA的应用开发者平台,开发者进行简单申请认证,开发应用,再发布上架。用户可以通过操控机器人的手机端应用自动检测、下载新的服务,并进行执行。我们为广大应用开发者提供创新平台的同时也为机器人的使用者提供了更多的功能。
除了为应用开发者提供开发平台外, ROSA系统的服务和内置的应用也为整机厂商提供了软件解决方案。
基于ROSA系统,整机厂商可以不开发软件,只需自行准备自己的硬件,直接采用ROSA软件平台。优必选可以提供完整的应用软件。开发者只需直接去实现驱动组件,再进行集成、认证性测试,这样就可以很容易地开发并生产出整机机器人。采用和优必选机器人相同的成熟的软件可以加快上市的时间,同时整机厂商可以基于ROSA系统开发新的硬件和驱动,集成到ROSA平台中作为新的服务,也可以去定制个性化的应用,增加产品的附加值。
优必选为机器人厂商和产业链分享人工智能技术,也把我们自己在人工智能领域的好的经验和技术分享给广大机器人整机厂商。
优必选在今年9月27日发布的悟空机器人就是基于ROSA系统开发的。接下来我会简单介绍一下如何基于ROSA系统在悟空机器人上进行应用开发,这里我们提供了一些简单的代码和示例供大家参考。
第一个例子是让机器人模拟一些动作,如手臂和头部的动作。对很多复杂功能的控制,都已经封装到服务中了。上图有一些示例代码,主要分三步,第一,将Master进行初始化。第二,通过Motion服务需要获取对机器人运动描述的文件Get Motion List。第三,获取Motion List后存储在infos上,再调用Play Motion的操作即可。
参考视频1:动作
第二个例子是通过调用表情服务来模拟人类常用表情的能力。首先是对Master初始化,通过Get Express List来获取表情服务,再调用Play Express即可完成表情动作。
参考视频2:表情
第三个代码段是调用语音服务,通过机器人TTS把一段话给播放出来,这个比较简单,只需要把一句话输进去并播出来即可。
参考视频3:语音调用
刚刚我对于以上三种应用分别提供了简单的示例。可以看出,对于很多比较复杂的动作,只需要进行一些简单的调用就能完成其中所有复杂的逻辑,同时我们也把复杂的硬件设备的管理都封装在代码中,这为基于ROSA系统进行应用开发带来了很大的便利性。
接下来介绍ROSA系统为行业带来的好处。主要包括以下几点:
第一,ROSA为应用开发者提供应用开发平台,为整机生产厂商提供了软件系统的解决方案,其中很多功能都集成到了ROSA系统中,很多成熟的人工智能方案及软件可以直接使用,大大缩短了开发周期及产品上市的时间;
第二,ROSA集成了很多功能组件,使用成熟的软件,整机厂商可以更多专注于品牌和销售,帮助减少研发成本,提高运营的竞争力;
第三,提供更多的创新性应用和服务,ROSA采用主流的Java编程语言、基于Android平台进行产品开发,有大量的应用开发群体,他们的应用开发将使机器人增加更多的功能,让用户获得更多更好的服务,从而增加用户黏性,提升产品销量;
第四,ROSA机器人操作系统可以构建一个应用生态体系,使很多基于教育、医疗健康、智能问诊等用户喜爱的内容都能提供给机器人的终端用户,从而扩大内容的覆盖面、提高内容的价值。
ROSA系统为应用开发者提供创新平台,为整机厂商提供软件解决方案,以此构建机器人生态系统,让整机厂商、应用开发者以及机器人终端用户能够紧密结合,为更多的内容提供商提供更好的平台,通过内容集成、应用创新、合作运营、服务用户,最终实现整个系统与参与者共创双赢的新局面。
目前,ROSA系统已在优必选全系列机器人产品上应用。悟空机器人是其中一个例子,未来我们将基于ROSA系统开发更多的产品和应用。同时ROSA系统也是机器人行业第一个实现商业化并大规模部署应用的操作系统,尽管ROS在2010年就已经推出,但基于它来开发大量商业化的应用还非常困难,我们希望未来基于ROSA系统能更快地完成这一使命。
我今天的分享到这里就结束了,欢迎大家提问并共同探讨,谢谢。
完整回放
超级公开课优必选专场第二讲全程回放包括主讲环节与问答环节两部分,点击下方「智东西公开课」小程序,即可收听完整回放。
入群方式
目前,智东西服务机器人社群面向机器人从业者限时开放,想加入社群和行业高管、高级工程师、高校博士生一起交流的朋友可以扫描下方二维码添加智东西公开课联络员“果果(zhidxguoguo)”为好友,申请进入课程群交流。(添加时请备注“姓名-公司-职位或姓名-学校-专业”)