一种通过云服务协议访问机器人软件包的方法技术

技术编号:15795013 阅读:140 留言:0更新日期:2017-07-10 10:49
本发明专利技术公开了一种通过云服务协议访问机器人软件包的方法,技术方案是搭建由机器人计算节点与云计算中心组成的云机器人计算节点环境,然后比较机器人计算节点的发布主题名对应的主题消息类型与云计算中心上的同名订阅主题名的主题消息类型是否相同,同时比较机器人计算节点的订阅主题名的主题消息类型与云计算中心的发布主题名的主题消息类型是否相同;若相同,机器人计算节点使用订阅主题名订阅云计算中心同名主题的ROS消息,同时机器人计算节点向云计算中心按发布主题名发布ROS消息。本发明专利技术使得ROS机器人软件包无需修改就可部署在云计算中心,且使用WebSocket协议实现了机器人计算节点与云计算中心之间ROS消息的交互。

【技术实现步骤摘要】
一种通过云服务协议访问机器人软件包的方法
本专利技术涉及机器人分布计算
,具体涉及一种在云机器人架构中,将机器人软件包部署为云计算服务,通过云服务协议访问机器人软件包,使得机器人软件包能够通过互联网远程为机器人提供后台云计算支持的方法。
技术介绍
机器人中间件是支撑机器人架构的软件基础设施,它封装了机器人服务共性问题(如数据通信、事务)的解决方案,从而可以大幅简化此类应用的开发过程。ROS(RobotOperatingSystem)是目前主流的机器人中间件,它包含了一个开源的中间件框架和一个用于机器人开发和管理的综合工具链。这个中间件框架实现了能够与各个软件模块进行交互的通讯基础设施,综合的工具链包括一系列机器系统开发、调试、检查、状态可视化的工具,包括基本的命令行工具、传感器数据可视化工具、图形化界面开发工具等。从分布式的观点出发,ROS可以看做一个面向消息的中间件。一个ROS应用由一组ROS自描述软件实体组成,这种软件实体称为软件包。这些软件包能够在不同的位置运行,它们通过ROS消息传输通道交互ROS消息从而实现共同的任务目标。ROS消息传输有两种传输通道,一种是主题(Topic)消息通道,该消息通道基于发布/订阅机制广播消息。主题消息通道上传输的消息叫主题消息,主题消息按照主题名进行分类。主题消息通道分成两种消息模式:1)消息发布(Publish)模式,ROS机器人软件包基于主题名发布ROS消息用于广播数据;2)消息订阅(Subscribe)模式,ROS机器人软件包订阅其他软件包发布的主题消息,订阅完成之后,其他软件包一旦发布该消息,就能接收到该消息内容。另一种是服务(Service)消息通道。服务消息通道上传输的消息叫服务消息。通过这种消息通道,ROS机器人软件包能够远程调用其他ROS机器人软件包中定义的服务,并获取所需的结果。ROS中主题消息由主题名和主题消息内容构成。ROS的主题名由字母、数字和“/”符号组成,一个ROS主题名唯一标识一类主题消息。主题消息内容由符合主题消息类型的值组成,主题消息类型规定了一个主题名对应的主题消息内容所包含数据的数据类型(例如int、string等)以及这些数据类型数据的组合方式。ROS中服务消息由服务名和服务消息内容构成。ROS的服务名由字母、数字和“/”符号组成,一个ROS服务名唯一标识一类服务消息。服务消息内容由符合服务消息类型的值组成,服务消息类型规定了一个服务名对应的服务消息内容所包含数据的数据类型(例如int、string等)以及这些数据类型数据的组合方式。ROSMaster软件包是提供目录服务的一种ROS机器人软件包,是ROS消息功能实现的核心。ROSMaster软件包可以记录每个软件包发布的主题名和对应的主题消息类型,同时也记录了每个软件包所提供服务名以及对应的服务消息类型。任何想要发布主题消息或者提供服务的软件包都要在ROSMaster上注册。一个ROS机器人软件包通过ROSMaster软件包知道其他ROS机器人软件包发布了什么主题消息以及对应的主题消息类型,也通过ROSMaster软件包告诉其它ROS机器人软件包自己发布了什么主题消息以及对应的主题消息类型,同时通过ROSMaster软件包知道其他ROS机器人软件包能够提供什么服务以及对应的服务消息类型,也告诉其它ROS机器人软件包自己能够提供什么服务以及对应的服务消息类型。因此每一个使用ROS消息机制的机器人软件包都必须与ROSMaster进行交互。为了保证ROS消息功能的正确实现,防止出现在ROSMaster软件包上注册信息不一致的情况,ROS运行机制限定了同一个ROS系统上只能运行一个ROSMaster软件包,并且要求不同ROS机器人软件包在同一个ROSMaster上注册的同名消息(包括主题消息和服务消息)必须保证消息类型一致。由于ROS为机器人应用提供了良好消息通讯机制以及开发和管理的综合工具链,使得机器人应用的开发过程得到大幅简化。基于ROS的机器人应用得到快速的发展。目前ROS软件生态系统中已经积累了上千个可以重用的机器人软件包,这些机器人软件包包含了许多独立的包装好的自动化机器人算法,大大减少了机器人开发的重复性工作,使得ROS机器人中间件在机器人社区被广泛地接受。云机器人指云计算服务和机器人的组合,它利用云计算和大数据等后台基础设施,提升机器人在复杂环境下遂行任务的能力。云机器人架构是指通过云计算服务来增强机器人个体能力,协助机器人完成任务的系统架构。在云机器人架构中,机器人所需的部份功能(如计算密集型的算法)由云计算服务实现,实现本地计算卸载。机器人本地只运行必要的环境信息获取、行动机构控制等软件,这些本地软件与云计算服务紧密交互,相互配合完成指定的任务。引入云机器人架构,带来简化机器人本地软件开发、降低机器人本地计算资源占用等优点。鉴于ROS软件生态系统提供了大量的现成的可以重用的机器人软件包,以及云机器人的优势和特点,如何在云机器人架构中不需要修改ROS软件包直接为机器人提供云服务成为核心目标。实现这个目标的关键是实现云端与机器人计算节点之间的通讯。ROS本身提供消息机制,但是ROS消息机制基于ROSMaster软件包的中心化架构以及ROS软件包之间的消息交互通讯机制,这使得ROS消息机制只能为运行在本地局域网上的小规模系统服务。为了不需要修改ROS机器人软件包就将其部署在云端为机器人提供服务,必须克服ROS只能为本地局域网的小规模机器人系统服务这个缺陷,需要提供一种通过云服务协议访问ROS机器人软件包的方法。目前主流的云服务访问协议包括HTML协议、WebSocket协议等。其中,基于TCP连接的全双工通信协议WebSocket协议提供了能够在单个TCP连接上进行全双工交互通信的能力。通过WebSocketAPI,客户端和服务端只需进行一个“握手”动作,就可以建立一条“快速通道”,两者之间可以随时直接进行数据传送。目前,WebSocket已经在互联网和云计算领域上得到了较为广泛的应用。如何将云服务访问协议WebSocket用于机器人ROS消息的传输,使得部署在云端的ROS机器人软件包能够无需修改地转换成云计算服务,并且与部署在机器人上的ROS机器人软件包进行即时的通信,减少将机器人应用“云”化的成本,使得机器人能够更加便利地利用云端资源为自己服务,提高机器人应用的效率,是本领域急于解决的技术问题。
技术实现思路
本专利技术要解决的技术问题是提供一种通过云服务协议访问ROS机器人软件包的方法,使得无需修改ROS机器人软件包,就可以将ROS机器人软件包部署在云计算中心,并且机器人使用的ROS机器人软件包能够使用主流的云服务访问协议与云端运行的ROS机器人软件包进行交互。本专利技术的技术方案是直接将ROS机器人软件包部署在云计算中心,使用WebSocket协议实现机器人计算节点的ROS机器人软件包与云计算中心的ROS机器人软件包之间ROS消息的交互。本专利技术能使得ROS消息机制中基于单ROSMaster的本地机器人通讯系统扩展成支持在多个ROS系统之间也就是基于多个ROSMaster的实时通讯系统。机器人计算节点的ROS机器人软件包与云计算中心的ROS机器人软件包之间的本文档来自技高网
...
一种通过云服务协议访问机器人软件包的方法

【技术保护点】
一种通过云服务协议访问机器人软件包的方法,其特征在于包括以下步骤:第一步,搭建云机器人计算节点环境,它由m个机器人计算节点与1个云计算中心组成,m≥1,m是整数;机器人计算节点是可以运行软件程序的机器人硬件设备;云计算中心是运行计算密集型或者数据密集型机器人应用并对外提供服务的计算设备;机器人计算节点间以及云计算中心通过网络设备互联;每个机器人计算节点上除了安装有操作系统Ubuntu、机器人中间件ROS、WebSocket协议外,还安装有第一ROS消息执行模块、第一消息转换模块和WebSocket连接模块;第一ROS消息执行模块由第一服务验证组件、第一消息订阅组件和第一消息发布组件组成;第一服务验证组件的功能是比较机器人计算节点和云计算中心发布与订阅具有相同主题名的主题消息类型是否一致;第一服务验证组件与第一消息转换模块、第一消息发布组件、第一消息订阅组件和用户相连;第一服务验证组件从用户接收发布与订阅主题名,设置消息操作类型、调用服务名称,将消息操作类型、调用服务名称和主题名发送给第一消息转换模块;第一服务验证组件从第一消息转换模块接收云计算中心返回的发布与订阅主题名对应的主题消息类型和应答结果标记,使用发布与订阅的主题名作为参数调用所属机器人计算节点的/rosapi/topic_type服务获取所属机器人计算节点这些主题名对应的主题消息类型,并与从云计算中心获取的主题名对应的主题消息类型进行比较,若机器人计算节点和云计算中心相同的主题名对应的主题消息类型相同,则机器人计算节点和云计算中心的ROS机器人软件包可以通过云服务协议进行交互,将订阅主题名和主题消息类型发送给第一消息订阅组件,将发布主题名和主题消息类型发送给第一消息发布组件;若主题消息类型不同,则不能访问;消息操作类型是用于描述ROS消息传输的操作方式的变量,它的值有三种:发布主题操作即publish、订阅主题操作即subscribe、调用服务操作即call_service;第一消息订阅组件使用已经通过验证的订阅主题名订阅云计算中心的ROS消息,并接收云计算中心返回的主题名和主题消息内容,在所属机器人计算节点构造和发布ROS消息;第一消息订阅组件与第一服务验证组件、第一消息转换模块、ROS机器人软件包中ROS消息订阅者相连;第一订阅消息组件从第一服务验证组件接收订阅主题名和主题消息类型,设置消息操作类型,将主题名、主题消息类型和消息操作类型发送给第一消息转换模块;第一消息订阅组件从第一消息转换模块获取主题消息内容和主题名,通过ROS消息机制构造和发布ROS消息,ROS机器人软件包中ROS消息订阅者通过ROS消息机制接收到ROS消息;第一消息发布组件的功能是将已经通过验证的发布主题名上的ROS消息发布到云计算中心;它与第一服务验证组件、第一消息转模块、ROS机器人软件包中ROS消息发布者相连;第一消息发布组件从第一服务验证组件接收发布主题名和主题消息类型,使用ROS消息机制订阅该主题上的ROS消息;第一消息发布组件使用ROS机制接收到ROS消息发布者在该主题上发布的ROS消息,将ROS消息和消息操作类型发送给第一消息转换模块;第一消息转换模块与第一消息订阅组件、第一消息发布组件、第一服务验证组件、WebSocket连接模块相连,具有构造和解析JSON消息的功能;WebSocket连接模块与第一消息转换模块、云计算中心相连;WebSocket连接模块通过URL即统一资源定位符和端口与云计算中心建立WebSocket链接;WebSocket连接模块的功能是发送和接收JSON消息;WebSocket连接模块从第一消息转换模块接收JSON消息,使用WebSocket链接将JSON消息发送给云计算中心;WebSocket连接模块通过WebSocket链接从云计算中心接收JSON消息,将JSON消息发送给第一消息转换模块;云计算中心上除了装有操作系统Ubuntu、机器人中间件ROS、WebSocket协议外,还有第二ROS消息执行模块、第二消息转换模块和WebSocket服务模块;WebSocket服务模块与第二消息转换模块、机器人计算节点的WebSocket连接模块相连;WebSocket服务模块的功能是使得机器人计算节点能够通过URL和端口与云计算中心建立WebSocket链接;WebSocket服务模块通过监听WebSocket连接从WebSocket连接模块接收JSON消息,将JSON消息发送给第二消息转换模块;WebSocket服务模块从第二消息转换模块接收JSON消息,使用WebSocket连接将JSON消息发送给机器人计算节点的WebSocket连接模块;第二消息转换模块与WebSocket服务模块相连,其功能与机器人计算节点的第一消息转换模块的功能基本相同,具有构...

【技术特征摘要】
1.一种通过云服务协议访问机器人软件包的方法,其特征在于包括以下步骤:第一步,搭建云机器人计算节点环境,它由m个机器人计算节点与1个云计算中心组成,m≥1,m是整数;机器人计算节点是可以运行软件程序的机器人硬件设备;云计算中心是运行计算密集型或者数据密集型机器人应用并对外提供服务的计算设备;机器人计算节点间以及云计算中心通过网络设备互联;每个机器人计算节点上除了安装有操作系统Ubuntu、机器人中间件ROS、WebSocket协议外,还安装有第一ROS消息执行模块、第一消息转换模块和WebSocket连接模块;第一ROS消息执行模块由第一服务验证组件、第一消息订阅组件和第一消息发布组件组成;第一服务验证组件的功能是比较机器人计算节点和云计算中心发布与订阅具有相同主题名的主题消息类型是否一致;第一服务验证组件与第一消息转换模块、第一消息发布组件、第一消息订阅组件和用户相连;第一服务验证组件从用户接收发布与订阅主题名,设置消息操作类型、调用服务名称,将消息操作类型、调用服务名称和主题名发送给第一消息转换模块;第一服务验证组件从第一消息转换模块接收云计算中心返回的发布与订阅主题名对应的主题消息类型和应答结果标记,使用发布与订阅的主题名作为参数调用所属机器人计算节点的/rosapi/topic_type服务获取所属机器人计算节点这些主题名对应的主题消息类型,并与从云计算中心获取的主题名对应的主题消息类型进行比较,若机器人计算节点和云计算中心相同的主题名对应的主题消息类型相同,则机器人计算节点和云计算中心的ROS机器人软件包可以通过云服务协议进行交互,将订阅主题名和主题消息类型发送给第一消息订阅组件,将发布主题名和主题消息类型发送给第一消息发布组件;若主题消息类型不同,则不能访问;消息操作类型是用于描述ROS消息传输的操作方式的变量,它的值有三种:发布主题操作即publish、订阅主题操作即subscribe、调用服务操作即call_service;第一消息订阅组件使用已经通过验证的订阅主题名订阅云计算中心的ROS消息,并接收云计算中心返回的主题名和主题消息内容,在所属机器人计算节点构造和发布ROS消息;第一消息订阅组件与第一服务验证组件、第一消息转换模块、ROS机器人软件包中ROS消息订阅者相连;第一订阅消息组件从第一服务验证组件接收订阅主题名和主题消息类型,设置消息操作类型,将主题名、主题消息类型和消息操作类型发送给第一消息转换模块;第一消息订阅组件从第一消息转换模块获取主题消息内容和主题名,通过ROS消息机制构造和发布ROS消息,ROS机器人软件包中ROS消息订阅者通过ROS消息机制接收到ROS消息;第一消息发布组件的功能是将已经通过验证的发布主题名上的ROS消息发布到云计算中心;它与第一服务验证组件、第一消息转模块、ROS机器人软件包中ROS消息发布者相连;第一消息发布组件从第一服务验证组件接收发布主题名和主题消息类型,使用ROS消息机制订阅该主题上的ROS消息;第一消息发布组件使用ROS机制接收到ROS消息发布者在该主题上发布的ROS消息,将ROS消息和消息操作类型发送给第一消息转换模块;第一消息转换模块与第一消息订阅组件、第一消息发布组件、第一服务验证组件、WebSocket连接模块相连,具有构造和解析JSON消息的功能;WebSocket连接模块与第一消息转换模块、云计算中心相连;WebSocket连接模块通过URL即统一资源定位符和端口与云计算中心建立WebSocket链接;WebSocket连接模块的功能是发送和接收JSON消息;WebSocket连接模块从第一消息转换模块接收JSON消息,使用WebSocket链接将JSON消息发送给云计算中心;WebSocket连接模块通过WebSocket链接从云计算中心接收JSON消息,将JSON消息发送给第一消息转换模块;云计算中心上除了装有操作系统Ubuntu、机器人中间件ROS、WebSocket协议外,还有第二ROS消息执行模块、第二消息转换模块和WebSocket服务模块;WebSocket服务模块与第二消息转换模块、机器人计算节点的WebSocket连接模块相连;WebSocket服务模块的功能是使得机器人计算节点能够通过URL和端口与云计算中心建立WebSocket链接;WebSocket服务模块通过监听WebSocket连接从WebSocket连接模块接收JSON消息,将JSON消息发送给第二消息转换模块;WebSocket服务模块从第二消息转换模块接收JSON消息,使用WebSocket连接将JSON消息发送给机器人计算节点的WebSocket连接模块;第二消息转换模块与WebSocket服务模块相连,其功能与机器人计算节点的第一消息转换模块的功能基本相同,具有构造和解析JSON消息的功能;第二ROS消息执行模块由第二服务验证组件、第二消息订阅组件和第二消息发布组件组成;第二服务验证组件的功能是获得发布与订阅主题名对应的主题消息类型;第二服务验证组件与第二消息转换模块相连,第二服务验证组件从第二消息转换模块接收调用服务名称和主题名,使用主题名作为参数调用服务,获得主题名对应的主题消息类型,并将消息操作类型和主题消息类型发送给第二消息转换模块;第二消息订阅组件使用订阅消息主题名订阅ROS消息,接收ROS消息并向机器人计算节点发布ROS消息;它与第二消息转换模块、ROS机器人软件包中ROS消息发布者相连;第二消息订阅组件从第二消息转换模块接收订阅消息主题名和主题消息类型,使用ROS消息机制进行ROS消息订阅;第二消息订阅组件使用ROS消息机制接收ROS消息发布者在某一主题上发布的ROS消息,将ROS主题消息内容和消息操作类型发送给第二消息转换模块;第二消息发布组件使用ROS消息机制发布ROS消息;它与第二消息转换模块、ROS机器人软件包中ROS消息订阅者相连;第二消息发布组件从第二消息转换模块接收消息主题名和主题消息内容,使用ROS消息机制构造和发布ROS消息,机器人软件包中ROS消息订阅者通过ROS消息机制接收到ROS消息;第二步,机器人计算节点和云计算中心相互配合,比较机器人计算节点的发布主题名对应的主题消息类型与云计算中心上的同名订阅主题名的主题消息类型是否相同,同时比较机器人计算节点的订阅主题名的主题消息类型与云计算中心的发布主题名的主题消息类型是否相同;具体步骤如下:2.1机器人计算节点的WebSocket连接模块通过使用URL和端口与云计算中心的WebSocket服务模块建立WebSocket连接;如果无法连接则显示报错信息,执行第四步,正确连接则执行步骤2.2;2.2机器人计算节点的第一服务验证组件接收用户指定的发布和订阅主题名,使用主题名作为参数,通过WebSocket连接模块获得云计算中心同样主题名对应的主题消息类型;具体步骤如下:2.2.1机器人计算节点的第一服务验证组件接收用户指定的发布和订阅主题名,设置调用服务名称为“/rosapi/topic_type”和消息操作类型为"call_service",将该用户指定的发布和订阅主题名、调用服务名称和消息操作类型发送给第一消息转换模块;2.2.2机器人计算节点的第一消息转换模块接收到发布和订阅主题名、调用服务名称和消息操作类型,对消息操作类型进行判断;消息操作类型是"call_service",构造调用服务请求格式的JSON消息,并将调用服务请求格式的JSON消息发送给WebSocket连接模块;2.2.3机器人计算节点的WebSocket连接模块接收到调用服务请求格式的JSON消息后,使用WebSocket连接向云计算中心的WebSocket服务模块发送调用服务请求格式的JSON消息;如果发送失败则打印错误信息并执行第四步,发送成功则执行步骤2.2.4;2.2.4云计算中心的WebSocket服务模块通过监听WebSocket连接获得机器人计算节点发送的调用服务请求格式的JSON消息,将调用服务请求格式的JSON消息发送给云计算中心的第二消息转换模块;2.2.5云计算中心的第二消息转换模块接收到调用服务请求格式的JSON消息后,解析调用服务请求格式的JSON消息的内容,获取消息操作类型;消息操作类型是call_service,第二消息转换模块解析调用服务名称和参数,并将调用服务名称和参数发送给云计算中心的第二服务验证组件;2.2.6云计算中心的第二服务验证组件接收到调用服务名称和参数,使用发布与订阅主题名作为参数运行服务/rosapi/topic_type,获取主题消息类型;如果成功获取主题消息类型,设置应答结果标记为“1”,表示成功获取结果;否则设置应答结果标记为“0”,主题消息类型置为空;第二服务验证组件将发布与订阅主题的主题消息类型、应答结果标记、调用服务名称和消息操作类型发送给云计算中心的第二消息转换模块;2.2.7云计算中心的第二消息转换模块接收到消息操作类型、调用服务名称、发布与订阅主题的主题消息类型和应答结果标记之后,构造调用服务应答格式的JSON消息,并将调用服务应答格式的JSON消息发送给WebSocket服务模块;2.2.8云计算中心的WebSocket服务模块接收到调用服务应答格式的JSON消息后,使用WebSocket连接将调用服务应答格式的JSON消息发送给机器人计算节点的WebSocket连接模块;2.2.9机器人计算节点的WebSocket连接模块接收到调用服务应答格式的JSON消息后,将其发送给第一消息转换模块;2.2.10机器人计算节点的第一消息转换模块接收到调用服务应答格式的JSON消息后,解析调用服务应答格式的JSON消息的内容,获取消息操作类型;消息操作类型是call_service,获取云计算中心发布与订阅主题的主题消息类型和应答结果标记,并将主题名的主题消息类型和应答结果标记发送给第一服务验证组件;2.3机器人计算节点的第一服务验证组件接收到云计算中心发布与订阅主题的主题消息类型和应答结果标记,对应答结果标记进行判断;如果应答结果标记是0,说明没有成功获得云计算中心发布与订阅主题名对应的主题消息类型,打印错误信息并执行第四步;如果应答结果标记是1,使用云计算中心发布与订阅的主题名作为参数调用所属机器人计算节点的/rosapi/topic_type服务,获取所属机器人计算节点发布与订阅主题名对应的主题消息类型,将所属机器人计算节点发布与订阅的主题名对应的主题消息类型与云计算中心的同名主题名对应的主题消息类型进行比较;如果机器人计算节点的发布主题名对应的主题消息类型和云计算中心同名的订阅主题名对应的主题消息类型相同并且机器人节点订阅主题名对应的主题消息类型和云计算中心同名的发布主题名对应的主题消息类型相同,则将发布主题名和主题消息类型发送给第一消息发布组件,将订阅主题名和主题消息类型发送给第一消息订阅组件,执行第三步;否则显示错误信息并执行第四步;第三步,机器人计算节点按3.1的步骤使用订阅主题名订阅云计算中心同名主题的ROS消息;同时,机器人计算节点按3.2的步骤向云计算中心按发布主题名发布ROS消息,具体步骤如下:3.1机器人计算节点使用订阅主题名订阅云计算中心同名主题的ROS消息,具体步骤如下:3.1.1机器人计算节点的第一消息订阅组件从第一服务验证组件接收订阅主题名和主题消息类型,将消息操作类型设置为"subscribe",将消息操作类型、订阅主...

【专利技术属性】
技术研发人员:丁博王怀民刘惠胡奔张鹏飞史佩昌李艺颖车慧敏包慧
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:湖南,43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1