陈 彬,黎晓东,尹作重,秦修功,张雪嫣
(北京机械工业自动化研究所有限公司,北京 100120)
传统机器人的存储和计算能力仅限于机器人本体,而智能化则要求更多的知识存储、检索以及推理计算能力。针对此问题,2010年卡耐基梅隆大学的James Kuffner教授首次提出云机器人的概念,云机器人是机器人与云计算的结合,把机器人的数据处理、规划、决策、协作等复杂计算功能卸载到云端,机器人本体只需配备简单的网络设备和基本的传感器就可以完成复杂的服务任务,为彻底解决机器人“物美”与“价廉”的矛盾提供了新思路[1]。同时,在2010年,新加坡的ASORO实验室研究了在Hadoop中运行FastSlam算法的框架Davichi[2],DAvinCi软件框架基于Hadoop集群,结合机器人操作系统(ROS)作为机器人生态系统的消息传递框架[3],将平台作为机器人的“大脑”,利用云计算为服务机器人提供可扩展性和并行性,可视为机器人云服务平台的雏形。2011~2014年欧洲开展了Roboearth[4]项目,RoboEarth已经发展成为一个巨大的基于云的数据库,各种机器人可以在其中分享有关环境、任务和对象的信息[5]。2015年,在RoboEarth的基础上,Mohanarajah等[6]提出了Raptuya云机器人平台[7]。的作者将RoboEarth项目的方法与UNR-PF的分布式执行能力结合起来,开发了一个网络化的机器人系统Rsi-Cloud,为服务提供商和机器人专家提供了一个可以分别开发机器人服务和机器人应用的平台。在文献[8]中,Lei等人提出了云机器人视觉平台(Cloud Robotics Visual Platform, CRVP)来增强机器人的视觉。在文献[9]中雷建和等人提出一种仿人机器人云平台。
本文将按照以下三个部分展开:1)机器人云平台架构:讨论云平台整体架构,研究云计算在机器人方面上的应用;2)机器人云平台关键技术:研究云平台资源管理、计算、通信和安全等;3)进行总结与对将来发展的一些展望。
本节主要就几种机器人云平台的架构进行分析。
Rapyuta云机器人平台使机器人将密集的计算任务委托给云中的计算环境,计算环境提供对RoboEarth知识库的访问,使机器人从知识库中下载地图、对象模型和操作方法来执行任务。图1展示了RoboEarth架构。服务器层包含RoboEarth数据库,存储了包括关于对象的可重复使用的信息、环境(例如地图和对象位置)和链接到语义信息的动作(例如动作顺序和技能)等模型,并提供基本的可推理Web服务。通用组件层是RoboEarth的动作集合,扩展了机器人的感知、推理、建模和学习能力。动作技能层通过技能抽象层为机器人特定的、基于硬件的功能提供通用接口。
图1 RoboEarth架构
图2展示了由ROS、Hadoop分布式文件系统(HDFS)和Map/Reduce组成的DAvinCi云计算平台架构。平台利用ROS和机器人之间数据传输和通信,利用分布式文件系统(HDFS)存储数据,利用Map/Reduce对机器人上传的数据进行批处理。将标准算法(SLAM、全局路径规划、传感器融合等)封装为云服务,平台充当机器人的代理和服务提供者,并从机器人生态系统收集数据,通过ROS和HDFS将机器人生态系统绑定到后端计算和存储集群。DAvinCi服务器作为运行ROS发布者列表的主节点,机器人上的ROS节点查询主节点以订阅和接收来自HDFS后端或其他机器人的消息/数据。
图2 DAvinCi云计算平台架构
图3展示了知识共享的机器人云平台架构。机器人通过传感器采集数据上传到云端和下载接收云服务,所以既是云服务的消费者,又是云服务信息的数据源和生产者。云平台包括四层:
协同机器人通信(CRC)层:远程云接入异构机器人,需要一个“网关”组件来记录机器人的特定信息,以及消息代理通道和本机机器人数据通道之间的映射。
处理层:用于过滤、聚类和处理从机器人收集的数据,包括实时接入处理、批量数据处理、数据浓缩处理。
数据库层:存储了一个全局世界模型,包括关于软件组件、环境(如用于导航的对象位置和地图)、对象识别模型(如点云、图像和模型)和任务知识(如操作配方和技能以及操作策略)的信息。
服务层:让机器人可以通过云端的机器人知识库与其他机器人即时分享他们所学到的技能,其他机器人就可以通过重用共享的知识来提高学习的速度。
图3 知识共享的机器人云平台架构
图4展示了服务机器人云平台总体架构,包括物理资源层,云平台基础层,服务实现层和SOA接口层。物理资源层为云平台各服务实例提供运行环境支持。基础层负责管理数据存储,为服务提供统一的访问接口。服务实现层由平台开发者对服务进行封装,注册、发布、部署、更新、管理和维护;服务分为服务定义和服务实例两种,云平台用户可对服务定义进行更新和修改,服务实例是在平台中用于完成特定功能的线程。SOA接口层是平台与用户交互的中间件,提供服务的配置和管理接口,主要实现用户交互、服务管理、服务调用和服务态势监测等功能。
图4 服务机器人云平台总体架构[1]
云机器人系统很好地解决了云机器人应用容量和多功能性的限制等,提高了云机器人的资源利用率并且可以转向基于云的服务以扩大它们的能力[10]。机器人与云平台交互也带来了很多新的问题,本节将探讨机器人云平台资源管理、计算、通信和安全这几个关键问题。
平台资源管理:云计算就是资源的一种“池化”,池化带来的好处是资源的按需分配,可重复利用,从而提高资源利用率。虚拟化是实现资源池化的一种方式,衍生出了多种技术,包括vmware的exsi,hyper-v,kvm,xen等。最常用的开源云平台管理系统为OpenStack,是构建云计算系统的基础框架,控制整个云平台计算、存储和网络资源。此外还有很多商业化云计算部署系统,如VMware、Amazon Web Services、弹性计算云(Elastic Compute cloud,俗称EC2)、谷歌计算引擎和Microsoft Azure等。
计算:平台一般使用Hadoop处理大量数据,由分布式文件系统HDFS和MapReduce组成。Hadoop是支持运行在大型计算机集群上的数据密集型分布式应用程序,能跨集群中的并行处理数据,加快了大型计算的速度。这些处理大部分发生在数据或存储附近,从而减少了网络上的I/O延迟。Hadoop的HDFS文件系统还负责将文件数据分割成可管理的块或块,并将它们分布在多个节点上,MapReduc负责并行处理大数据集。
通信:机器人通常由大量复杂的异构系统组成,采用不同的物理接口和通信协议。云基础设施只能存储和处理特定结构的数据,即输入接口需要将相应的数据结构转换成统一的格式,接口需要云平台自己定义。早期是通过网关将机器人连接到广域网,实现机器人与云服务平台的互联互通。在处理上传和下载数据时,必须对数据格式进行转换。上传数据必须进行适当的预处理,但数据交换的鲁棒性和实时性能对从一种形式到另一种数据格式的转换有很大的影响[10]。ROS框架提供了一种标准的跨机器人通信和消息传递形式,节点之间通过消息进行通信,这些消息包含一个节点发送给其他节点的信息数据,消息类型有ROS标准类型和基于标准消息开发的自定义类型两种。ROS将不兼容的传感器、执行器等硬件整合在一起,通过将其数据流转换成消息总线,使用在硬件驱动器和计算单元之间兼容的数据类型。此外文献[11]的作者提出的RSi Research cloud(RSicloud)架构具有一种标准化的通信协议——机器人服务网络协议(RSNP),可以结合不同的服务组件,利用机器人服务规范,提供各种新颖的服务。
安全:机器人通过云平台分享信息、知识共享,但存在的安全问题也一直是人们关注的焦点。在文献[12]中Nandhini et al.提出一种使用椭圆曲线密码术(ECC)提供身份验证和密钥协议的安全架构,用于访问托管在云中的机器人服务。为了改善云安全的相关问题文献[10]中提到了三种方法,包括:
1)信任建立:用户执行一些预先设定的行为来检查一个虚拟机的主机环境。
2)信任度量:一些不属于云平台提供商(如硬件供应商或虚拟化软件供应商)的一些信任成分组件监控虚拟机,并安全地向用户或第三方报告信任度量。
3)基于信誉的信任:用户通过服务提供商提供的身份验证VM的基础设施,然后依靠法律、业务或其他外部因素来推断信任。
云机器人技术发展迅速,机器人云平台的研究也更加深入。如何提高云与机器人之间的实时性交互,机器人云平台整体架构应怎样设计,云平台如何为机器人更好地提供服务,还需要时间去研究和解决。现有的云机器人平台大都采用点对点的服务提供方式,导致云平台需要重复构建服务,降低了云平台服务的效率和质量;规范机器人云服务平台的设计流程,统一机器人与云平台的接口,将更多类型的机器人或终端设备融入机器人云服务平台中,是今后的发展趋势。