云机器人架构和特征概述
2018-02-22史殿习
洪 臣 史殿习
(国防科技大学并行与分布处理重点实验室,长沙,410073)
0 引言
随着无线网络技术的发展,尤其是云计算和物联网的流行,人们尝试把其内涵应用到机器人领域,这极大地促进了机器人技术的发展。以前机器人由于体积有限,制约了其处理、存储信息和储电的能力,因此机器人的功能也受到限制。当下,通过网络连接机器人,采取专用的服务器硬件辅助机器人执行更复杂的计算和存储更多的数据、提升机器人的能力、扩展机器人的应用领域已成为一种解决方案,采用这一方式的机器人被称为云机器人。由于云技术的不断成熟,云与机器人的结合成为解决机器人上述提及的瓶颈问题的重要途径,云机器人的部署架构、服务平台和服务应用等已经成为国内外研究的热点。
20 世纪90 年代,东京大学Inaba 教授提出远程大脑(remote brain)的概念[1],并提议将机器人和外部的计算机相连接,随着互联网的发展,这一概念后来发展为网络机器人。网络机器人是指一组机器人设备通过有线/无线通信网络实现连接[2],它还包括传感器等各种网络资源,典型例子是K. Goldberg 等人利用互联网浏览器远程控制网络机器人[3]。后来Han[4]等人实现了采用UDP 协议连接无线传感器和群体机器人的网络控制系统,虽然网络机器人侧重于通过网络连接实现群体机器人的多机协作,但仍然不能解决单台机器人存在的瓶颈问题。2010 年,美国卡耐基梅隆大学的Kuffner 博士首次提出云机器人(Cloud Robotics)的概念[5],他指出机器人可以利用互联网进行大规模分布式并行计算和大数据的存储和处理,这样机器人本身就不需要超强的计算和存储能力,只需在必要时连接服务器获取信息即可。机器人借助互联网的大规模并行计算资源和海量数据存储能力,把本体要解决的识别、规划和协作等复杂计算卸载到云端去执行,这样消除了机器人的物理限制,从根本上解决了制约机器人的瓶颈问题。
云计算是2007 年开始流行的新名词,不同的机构对其有不同的定义,云计算的主要作用是通过互联网进行计算,共享软硬件资源和数据,按需求提供给其他设备。自从云机器人概念被提出后,诸多机构、公司的科研人员都开始在该领域进行探索研究,不仅只是在机器人层面进行研究,其他各种图像算法、地图构建技术也通过互联网和机器人关联起来被研究。
1 云机器人架构
云机器人的整体架构并不复杂,可以简单分为云平台和机器人两个层面。通常云平台包括云网络、云存储和云引擎三大部分,其中,云网络负责通信传输、协议规则和资源优化等任务;云存储负责存储机器人相关资源,比如对象模型、算法库、语义映射等;云引擎是核心部分,负责协调云平台和机器人相关组件的各个部分,收集机器人上传的数据,并对这些信息数据进行融合、计算和分析,得到最终决策命令后下发给机器人。
云计算是融合分布式计算、并行计算、网格计算、存储和虚拟化等传统技术的新产物,其核心目标是减少客户端的压力,并且对资源进行统一调度和管理。云计算的服务模式包括基础设施即服务(Infrastructure as a Service,IaaS)、平台即服务(Platform as a Servece,PaaS)和软件即服务 (Software as a Service,SaaS)3 种,这3 种模式在资源如何被利用的方式上有所不同。其中,SaaS 的针对性更强,它可以将某些特定软件功能直接封装成服务让用户按需求选择。使用SaaS 不需要提供代码,甚至是算法,只需要把相应的服务提供暴露出来,用户就能够利用对应的算法完成相应的任务。Furrer[6]等人设计了普适网络机器人平台(Ubiquitous Network Robot Platform,UNRPF),该平台应用分布式的协调和控制框架,以Iaas 模式抽象了机器人具体的硬件,将机器人和智能传感器作为云基础设施的一部分,UNR-PF 还可以提供由应用程序开发人员创建的独立于硬件的机器人通用服务接口,开发人员可以请求满足给定规范的组件,然后由UNR-PF 分配合适的可远程控制的设备,给研究和开发云机器人系统提供了方便。Chen[7]等人在面向服务架构[8](Service-Oriented Architecture,SOA)的基础上,提出机器人即服务(Robot as a Service,RaaS)模型,将机器人视为云端基础设施的一部分,每台机器人具有一定的自主能力,并作为一个RaaS 单元为用户提供服务。
当下,许多研究人员致力于开发、应用在云机器人上的中间件、框架和平台等。其中,使用最广泛的软件框架之一是机器人操作系统(Robot Operating System,ROS),ROS[9]是由美国斯坦福大学开发的一款开源机器人操作系统,其消息发布/订阅机制大大提高了代码复用率,受到众多开发者和机器人公司的青睐。如图1 所示,在ROS 中,椭圆表示节点(Node),矩形表示话题(Topic),用节点表示一个可执行的应用程序,不仅可以发布(Publish)和订阅(Subscribe)话题,也能够调用服务(Service)和对服务进行响应(Respond),节点之间利用事先定义好的消息(Message)结构来实现通信。ROS 采用分布式的设计结构,运行时可以松散耦合,而且ROS 节点可以放在云端上来执行,故非常适合云机器人架构。
图1 ROS 消息发布/订阅机制示意图
想要广泛传播机器人服务,就需要让更多的人快速、方便地进入机器人领域,因此,机器人服务网络协议(Robot Service Network Protocol,RSNP) 被 提 出 来。RSNP 由RSI(Robot Service Initiative)[10]发布,确定了机器人服务标准化规范,主要用于机器人服务的协议规范和功能协调。Kato[11]等人提出的RSI-Cloud 利用RSNP,使机器人服务和互联网服务相结合,还利用RSNP 基于Web 服务的特点,方便互联网领域的研究人员和工程师加入机器人服务开发。如图2 所示,jeeves 系统[12]是一个分布式框架,利用RSNP 整合机器人服务和互联网服务。jeeves 的关键机制在于机器人分配功能,该功能可以发现机器人资源并将服务需求任务分配给合适的机器人,通过发布/订阅的方式将服务需求任务和机器人的处理分开,具有松散耦合的特点。
图2 jeeves 系统架构
文献[13]利用Web 技术和ROS 设计出模块化的软件架构,通过网络公开机器人的硬件和软件资源。针对ROS 开发复杂应用的抽象程度不够等问题,Koubaa 等人还为ROS 设计出面向服务的软件体系结构[14],通过Web服务提供ROS 所具备的功能,为服务机器人提供新的抽象接口,使应用程序的开发以及与机器人的交互变得更容易,文献[14]还集成了与ROS 中间件不同的Web 服务技术,利用多层次架构,允许不同层次的抽象,使架构更加模块化并保证部署的灵活性。Rosbridge[15]是一个用于非ROS 系统和ROS 系统进行交互通信的程序包,通过在创建的WebSocket 上采用JSON 格式数据与ROS 话题和服务进行交互,Rosbridge 为ROS 机器人开发提供简洁的基于套接字的编程接口,可供非机器人专业的开发者使用。文献[16]通过扩展Rosbridge 来支持RESTful Web 服务,提出了ROStful 的概念,并开发了一个轻量级Web 服务器,通过REST 风格的Web 服务公开ROS 话题和服务,但RosBridge 的缺点是Websocket 服务端运行必须在机器人端,意味着每台机器人必须拥有独立、公共的IP 才能被客户端访问,这在当前不现实。文献[17]通过在云端服务器上部署代理服务器作为机器人端和用户端的中间件,采用代理服务器转发消息的方式解决了Rosbridge 存在的问题;为了方便机器人和云端标准化交换信息,该文献还设计了一套通信协议ROSlink,包括状态消息和命令消息两大类,可通过JSON 格式字符串传递,而且可以根据用户和应用程序的要求进行扩展。
2 云机器人特征
2.1 卸载计算
机器人通常搭载多个处理器来执行计算,但是像移动机器人或无人机等产品,由于其严格的尺寸和有限的负荷要求,只具备有限的处理能力,这类机器人就可以利用网络把重型计算任务卸载到云端去执行。云计算满足大规模并行计算的远程计算要求,AbdelBaky 等人提出将高性能计算(High Performance Computing,HPC)的概念作为一种服务,旨在改变传统的高性能计算,使其成为一个更方便的服务[18]。当下,公共领域的云服务产品也层出不穷,比如,亚马逊公司的弹性计算云EC2、谷歌公司的Google App Engine 和微软公司的Microsoft Azure 等,这些产品允许出租各种计算资源来进行计算任务,同时更多的研究人员也在利用这些服务进行高性能计算任务。欧盟的DreamCloud 项目[19]实现了在多核心嵌入式高性能系统中进行动态资源分配,目的是让高性能计算和云计算系统来平衡工作量和管理资源,使计算任务能够有效利用性能和能源。
云机器人可以利用云计算平台,远程卸载和处理计算任务,云计算可以辅助机器人运行视频监控任务、点云库(Point Cloud Library,PCL)建模任务、传感器信息跟踪及其效果评估等实时交互任务。Agostinho[20]等人根据云计算的PaaS 模型,为网络机器人开发了REALabs 平台,并使用该平台为网络机器人应用程序服务。新加坡ASORO 实验室的DAvinCi 项目[21]设计了一个PaaS 平台,平台架构如图3 所示,该平台利用了分布式架构ROS、Hadoop 分布式文件系统(Hadoop Distributed File System,HDFS)、Map/Reduce 框 架,机 器 人 上 的ROS 节 点 和DAvinCi 后台服务器进行交互,服务器利用Hadoop 集群和Map/Reduce 机制提高计算效率。文献[21]还利用该平台验证了快速同步定位和地图构建(FastSLAM)算法,所构建的地图可以通过云端来存储,并且可以与其他机器人共享,DAvinCi 在提高机器人算法执行效率和减少机器人传感器数量方面取得了进步,但是它的通信机制完全依赖ROS,而且ROS 主节点(ROS Master)在云端服务器运行,一旦主节点崩溃,整个系统将无法运行。
图3 DAvinCi 云平台架构
欧盟的RoboEarth 项目[22]建立了一个开源网络数据库,为机器人提供动作序列、对象模型和运行环境等语义映射信息,该数据库可以被所有机器人访问并更新数据,被称为“机器人万维网”。Hunziker 等人[23]提出的Rapyuta 是一个开源云机器人平台,通过云端提供可定制的计算环境,帮助机器人卸载重型运算,也允许机器人轻松访问RoboEarth 知识库。如图4 所示,Rapyuta 是一个弹性平台,可以为机器人动态分配资源,平台内部采用Linux Container(LXC)进程隔离技术,确保运行速度不受影响;外部采用WebSocket 通信,实现服务器和机器人全双工双向通信,并且优化了通信协议,提高了机器人资源利用率。
图4 Rapyuta 平台简易架构图
机器人可以通过卸载运算任务到云端以提升其性能;云平台为机器人提供计算和存储服务,扮演远程大脑的角色,这不仅降低了机器人本体的性能要求,也降低了机器人制造成本,促进机器人朝着小型化、微型化发展。但是由于云端大脑需要为机器人提供所有分析和决策功能,因此对数据的稳定性、安全性和准确性具有更高的要求,这也是目前研究面临的主要问题。
2.2 数据共享和群体学习
2.2.1 数据共享
同一个云平台可以同时为多台机器人提供服务,不同的云平台之间也可以实现互访,云平台为机器人提供可扩展的资源,同时也促进机器人之间实现信息共享。RoboEarth 项目通过系统将收集到的机器人共享信息构建网络知识库,目的是为了共享目标识别、导航和环境等机器人所需的数据信息。机器人有时会涉及许多无法使用关系数据库的数据结构,比如,视频、图片、地图、实时传感数据等,而这些大规模的数据必须使用云端提供的高性能计算资源进行管理、转换、移动和有效的分析。自主机器人通常配备多个传感器、摄像头等设备,其中,这些传感器收集到的数据通常会决定机器人的姿态、定位和路径等。多台机器人之间共享这些数据,虽然增加了数据体积,但是管理好这些数据可以让机器人简化计算过程,从而提升自身能力,因为所有被收集的基础知识数据,在进一步研究中可能会被直接用于处理其他信息。
目前,已经有许多研究项目收集了大量图像、地图等与机器人和自动化相关的数据,其中,典型例子是Columbia Grasp 数据集[24],它是有成千上万三维模型的大数据集,还有麻省理工学院的KIT 对象数据集[25],这些数据集都可以在线获得,并且被广泛应用于评估抓取算法等。通过传感器收集数据,与云端在线数据库进行匹配是机器人和云资源大数据结合的典型示例。Kim[26]等人为生成一个三维点云数据,提出一种基于二维图像的多视点三维信息融合方法,他们使用配有摄像头和3D 激光雷达的移动机器人捕捉图像,采用算法来匹配机器人所拍摄的2D 图像特征来创建三维点云。
除了在机器人视觉方面的应用,云机器人的大数据优势在生物医疗信息方面也有所体现,例如,Yokoo[27]等人利用物理治疗机器人收集病人信息和日志到医疗云康复数据库,作为机器人和医生学习和改善医疗流程的基础知识。Dogmus[28]等人将云机器人和物理医学相结合,设计了一台云康复机器人“RehabRobo-Onto”,还构建了基于Web 的软件“RehabRobo-Query”机器人系统,该机器人系统利用亚马逊提供的云服务,将康复机器人的数据同步在云存储上,全球康复机器人设计师和医学专家都可以对这些数据进行访问。
2.2.2 群体学习
云计算平台为机器人数据共享、信息处理和提高感知能力提供了良好支撑,这些丰富的数据可以辅助机器人学习,让机器人群体间相互共享数据以提高群体智能性,即所谓的群体智慧或群体学习。比如在DAvinCi 中进行的一个实验:配备不同传感器的移动机器人被要求去建立一个完整的室内地图,这些机器人通过一个中央云服务器进行通信,每台机器人发布的本地化信息可以与其他机器人共享,云平台综合所有数据,通过更强的计算性能提高地图构建等算法的效率,此外,机器人还可以将控制命令、运动轨迹、路径规划、反应策略和实时感知数据等贡献给群体学习。
群体学习的另一个典型案例是亚马逊公司的KIVA 系统,该系统利用数百个移动机器人在仓库中派发包裹,通过本地网络协调运动和更新跟踪数据,移动机器人可以相互感知位置,也能和该公司的另一款机器人Robo-Stow 机械臂相互配合,大大节省人力成本,也提高了派发包裹的准确率。这类系统在国内快递公司中也陆续发展起来,比如,申通快递有限公司的自主分拣机器人。
来自RobotShop 的Myrobots 项目[29]提出了面向机器人的一个社交网络,用户可以连接、监控和分享机器人。如同人类从社交、合作和共享中受益一样,机器人也可以共享传感器信息,以其他机器人视角观察自身的状态,在交互中相互受益。
Hu[30]等利用由机器到机器(M2M,Machine to Machine)和由机器到云(M2C,Machine to Cloud)两种通信架构形成的组合,设计出一种新架构,扩展机器人的计算和信息共享能力,并且提出一种通信协议,便于任务卸载和信息共享,为云机器人的不同应用提供云共享能力。
3 云机器人发展趋势
机器人是自动化、智能化制造的典型代表,随着各种技术的发展成熟,未来新一代机器人不仅会在价格上更加便宜,而且会更加灵活和智能,与人类实现共融。大数据和云计算技术作为信息时代的典型技术将和机器人行业紧密联系起来,因此,云机器人作为大数据、云计算与机器人的结合体,必会在未来成为主流方向。
机器人与人之间的关系在于神似形不似,所以人形机器人并不是研发重点,云机器人才是具有同人类智慧相通的未来机器人。云机器人主要依托云技术优势,当前的重点研究方向主要在于感知行为上,前期阶段应该侧重于研发图像丰富、认知复杂但动作简单的特定机器人,比如导航机器人;云机器人和深度学习的结合也是未来的发展趋势,机器人的记忆认知和计算认知可以从云端获得,但是感知、交互和行为控制协调在机器人端,机器人需要有自主学习和主动寻求帮助的能力,深度学习吸收云计算和大数据的优点,通过大数据样本并行训练,是提升机器人智能性的一种高效途径。云机器人以云端作为机器人的大脑,能使机器人的运算能力、逻辑能力和制造能力达到甚至超过人类,也许在将来,人工智能都将无法区分真正的人类与机器人。
4 结语网络技术的发展
、尤其是无线网络技术普及,使得机器人不再是单一的个体,而是可以通过网络实现互联互通的群体。机器人受制造成本、体积等限制搭载的资源极其有限,这严重限制了机器人的行为能力,而云计算的产生为计算能力有限的机器人提供了应对多样环境和处理复杂任务的能力,同时,在物联网的浪潮下,机器人与智能设备之间可以无缝对接,极大扩展了机器人的应用领域。云计算、物联网和机器人的结合,不仅能够为机器人提供按需使用的计算资源,而且能够通过大数据和机器学习等技术极大扩展机器人的智能性,同时还可以支撑大规模机器人进行有效的协同任务。然而,云机器人技术虽然引起了广泛关注,但是目前仍然存在许多亟待解决的问题,相信随着研究的深入,各类技术的成熟,云机器人将凭借其优势在各个领域引起智能性变革。