欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种分布式自主移动机器人调度系统独创技术33623字

一种分布式自主移动机器人调度系统

2020-11-22 07:52:17

一种分布式自主移动机器人调度系统

  技术领域

  本发明涉及一种分布式自主移动机器人调度系统,属于机器人调度领域。

  背景技术

  目前,物流公司、大型仓库等仓储的货物流动是不可能完全由人工完成的,现在开始渐渐采用多个自动导引运输车协同工作,无需人工操作,但需要通过调度系统解决多个自主移动机器人的路径规划、避障、规避碰撞、任务分配等问题。现有的自主移动机器人调度系统一般采用WIFI网络进行通信,调度方式主要有分布式调度和集中式调度两种。

  集中式调度系统,首先进行全部自主移动机器人行进路径的规划,由其实时控制自主移动机器人的行进,然后由自主移动机器人自行根据地图和避障传感器,规避障碍机制来实现对特殊情况的处理。当工作区域规模较大,有大量自主移动机器人同时运行时,集中式调度系统在进行路径规划、任务分配时会导致巨大的计算量,网络IO通信也会存在负担,从而出现调度的瓶颈。分布式调度系统,在路径规划时,不需要考虑全局的路径规划,每个自主移动机器人只规划自己的路径,遇到冲突时再重规划,由于计算的是一条路径,所以计算量比较小,系统对网络通信的开销也比价小,在分布式系统中还可以让一些充电或者无任务的移动机器人提供计算的帮助,从而减轻单个自主移动机器人的计算量,提高整个系统的性能。目前亟需高效、稳定的自主移动机器人调度系统。

  发明内容

  以往的调度系统通常存在资源管理服务器,用于任务的发布及自主移动机器人车辆的管理等调度任务。本发明设计了一种新的分布式自主移动机器人调度系统框架,与传统不同的是它不采用集中式的管理办法,不需要部署集中式服务器用于资源管理,所有调度任务都在自主移动机器人集群当中通过分布式计算和服务调用完成。

  本发明的目的是通过以下步骤实现的:一种分布式自主移动机器人调度系统,该系统包括机器人自主状态检测与数据共享单元、分布式任务分配单元、交通自主协调单元、数据库集群与同步单元、外部统一访问虚拟接口;

  机器人自主状态检测与数据共享单元:机器人根据自身传感器检测位置、姿态、工作状态、异常和故障信息,并通过无线网络模块与其他机器人进行信息共享和交互;

  分布式任务分配单元:机器人应对外部发起的任务指令,通过与其他机器人根据各自自身状态所决定的竞拍价格或协商价格的迭代交互,决策出唯一而且一致的“由谁来响应这个任务”的结论;

  交通自主协调单元:机器人通过自身当前位姿及已规划的运行路线,通过与邻近机器人运行规划路径的冲突检测,协商出一个无冲突、无死锁的可行路径,并进行实时动态更新;

  数据库集群与同步单元:每台机器人各自安装数据表格相同的数据库,并确保每台机器人的数据库发生更新时,可实时更新到所有其他机器人的数据库上;

  外部统一访问虚拟接口:所有机器人的web服务提供统一的一个对外虚拟接口,外部访问无需区分要访问哪台机器人的web服务器。

  进一步地,机器人自主状态检测与数据共享单元包括网联模块、通信与服务调用模块;

  所述自主移动机器人网联模块基于LAN通信,提供配置管理、分布式锁、集群管理功能;自主移动机器人网联模块单独分布式部署在每一台工作的机器人上,进入局域网后根据模块配置信息组成自主移动机器人集群;

  所述通信与服务调用模块分布式部署在每一台自主移动机器人上,通过远程调用方法,使每台自主移动机器人获取其他机器人上数据和调用其他机器人上服务能够像调用自己本机上的数据和服务一样容易;

  进一步地,自主移动机器人网联模块提供配置管理能力,分布式调度系统中不同机器人之间的通信和服务调用接口信息存在于网联模块中,当某些自主移动机器人上的服务发生变化时,网联模块可以及时将变动情况同步到其他机器人中,保证重要通信与服务的信息一致性和稳定性;

  所述自主移动机器人网联模块提供分布式锁能力,在自主移动机器人集群中,在集群中的每台自主移动机器人中可能会部署同样的服务;网联模块保证在集群中只有一台机器人执行一个服务,只有该台自主移动机器人出故障才能释放分布式锁,调用其他机器人的服务;

  所述自主移动机器人网联模块提供集群管理能力,在自主移动机器人集群中,有一台为Leader,集群中其他机器人都为Follower,所有自主移动机器人网联模块都保存一份配置副本,并保证全局一致性;当有机器人需要更改配置时,网联模块会转发该更改请求直到Leader,并由Leader实施更改;当有机器人需要读取配置,网联模块直接提供本机的全局配置。

  进一步地,通信与服务调用模块中包含服务提供者和服务消费者两部分,分别起向外部提供服务和从外部调用服务的功能,服务注册和调用流程包括以下步骤:服务容器负责启动,加载,运行服务提供者;服务提供者在启动时,向注册中心注册自己提供的服务;服务消费者在启动时,向注册中心订阅自己所需的服务;注册中心返回服务提供者地址列表给服务消费者,如果有变更,注册中心将基于长连接推送变更数据给服务消费者;服务消费者从提供者地址列表中,基于软负载均衡算法选择一台提供者进行调用,如果调用失败再选择另一台调用。

  进一步地,分布式任务分配单元中,任务分配通过竞拍算法实现,将任务集合M={M1,M2,…,Mm}分配到机器人集合R={R1,R2,…,Rn},其中m,n∈N+,使得收益最大,机器人Ri执行任务Mj可以获得收益aij,目标是给定这些任务的分配方案,使总收益最大;

  

  

  

  xij∈{0,1}

  其中,xij表示机器人Ri是否分配任务Mj,取0为未分配,取1为分配了任务,Ni为机器人执行任务的最大数量;

  每一台机器人都运行各自的任务分配竞拍算法,在虚拟市场中相互独立,相互作用,所有机器人只为自己的利益进行竞拍,选择任务;最终虚拟市场会趋于稳态,并且市场整体创造的价值达到最高,实现局部最优分配。

  进一步地,分布式任务分配单元中,采用单个机器人内部的任务自协调策略来提高整体任务分配的效率,自协调方法采用最优执行位置价值函数,将单个机器人所有未执行的任务自协调,合理安排机器人任务执行队列中的任务执行顺序,使得机器人执行任务收益最大化,具体为:

  对于新任务,计算机器人的任务执行队列中不同位置的最短任务完成距离;计算插入新任务前后的差异,选择距离增加最小的任务插入点上的执行收益,作为新任务的执行价值;

  

  其中,Lnew是机器人加入新任务后完成任务执行队列所需要经过的总路程,Lold是不加新任务的完成任务执行队列所需要经过的总路程;若机器人Ri所投标的任务为Mj,Mj的执行位置插在最后,机器人Ri的任务执行队列为TaskExecutionQueue:{Mj0,Mj1,Mj2,...,Mjs-1,Mj},s为未加入新任务时的任务执行队列长度;

  Lnew和Lold计算方法如下:

  

  

  其中,(xRi,yRi)为机器人Ri位置坐标,分别表示任务Mj0、Mj和Mjs-1的起点位置坐标,分别表示任务Mj0、Mj和Mjs-1的终点位置坐标;

  最优执行位置价值函数自协调算法步骤如下:

  (1)机器人Ri获取任务待分配列表TaskList={M1,M2,...,Mm};

  (2)机器人Ri根据自身任务执行队列和最优执行位置价值函数计算TaskList中每个新投标任务的最优执行位置价值;

  (3)机器人Ri记录每个新投标任务的最优执行位置和对应的最优执行位置价值;

  (4)进入任务分配竞拍算法并完成任务分配。

  进一步地,交通自主协调单元中,机器人R={R1,R2,...,Rn}需要搭建在同一局域网络下,保证各个机器人之间的通讯,能够做到机器人之间的实时共享,交通自协调步骤如下:

  (1)机器人的初始化:检查机器人R={R1,R2,...,Rn}的状态;初始化地图G,保证系统是可以运行的;定义所有机器人的路径集P={P1,P2,...,Pn},同时生成路径时间窗集T={T1,T2,...,Tn},其中P1,P2,...,Pn是n个机器人分别形成的n条路径,假设存在机器人Ri,生成路径Pi={si,ni1,ni2,...,gi},si,gi是机器人i所形成路径上的起点和终点,nit(t∈N)代表了一系列的路径上的点,其每个点的时间窗为表示起点启动时的时间,表示离开起点的时间,表示进入终点的时间,表示停止的时间,表示进入路径上其他点的时间,表示离开路径上其他点的时间;

  (2)路径规划:通过路径规划算法,机器人将会生成路径P={P1,P2,...,Pn}和路径上对应的时间窗T={T1,T2,...,Tn};

  (3)冲突检测:判断是否存在冲突及冲突的类型;

  当前的交通协调机制是要保证其中任意两个机器人Rj,Rk对应的路径Pj,Pk不存在冲突;假设nj,nj-1,nj+1是机器人Rj路径上的点,nj-1是nj的父节点,nj是nj+1的父节点,nk,nk-1,nk+1是机器人Rk路径上的点,nk-1是nk的父节点,nk是nk+1的父节点,代表点nj,nk所形成的边,nj对应的时间窗为nk对应的时间窗为当同时满足以下三个条件时,判断为存在冲突:

  

  在判断存在冲突的情况下,判断是否满足如满足则为十字冲突;

  在判断存在冲突的情况下,判断是否至少满足其中的一个条件,如满足则为赶超冲突;

  当不满足赶超冲突和十字冲突,则为死锁冲突;

  (4)解决冲突:通过重新规划策略和等待策略解决冲突,如果同时满足以下三个条件,那么执行重新规划策略,否则执行等待策略;

  Cr<CC,L<μ,

  Cr、CC的计算方法如下:

  

  其中,C是运行时间,V是速度,Cr是重规划时间,CC是当前规划路径的时间,L是路径长度,代表冲突点,zi代表零速点,ni代表路径中的所有点;分别代表加速、减速和匀速的时间;T代表速度阈值,μ代表路径长度阈值。

  进一步地,数据库集群与同步单元包括增量式数据更新模块,分布式数据库集群采用增量式同步方法,机器人被同步的数据表格具有相同的字段特征;增量式同步方法依赖机器人网联模块和增量式数据更新模块实现,所述增量式数据更新模块包含数据增量解析组件和数据增量同步组件;数据库集群增量式同步包括以下步骤:

  (1)机器人本地数据更新:当机器人本地数据库中数据存在更新,机器人本地数据库新数据会被写入二进制文件中,这部分新增的数据即增量数据,保存在机器人本地日志文件中;

  (2)数据更新增量解析:所有机器人将自己的数据增量解析组件注册到机器人网联模块中,一旦某机器人Ri的数据库中数据发生更新,其他机器人可以通过网联模块选择是否与该机器人数据增量解析组件保持连接;一旦某机器人Ri本地数据库存在更新,通过本机的数据增量解析组件将二进制文件转化为数据增量消息;每一个数据库中的表格都对应一个实例,转化后的数据增量消息保存在实例中;

  (3)其他机器人获取数据增量消息:当某机器人Ri的本地数据库存在更新,并通过增量数据解析模块生成了数据增量消息,集群中的其他机器人可以通过网联模块订阅机器人Ri数据增量解析组件中的实例,并获取数据增量消息;

  (4)其他机器人数据库同步:当其他机器人获取机器人Ri的数据增量消息,可以通过本机的数据增量同步组件将数据增量消息同步至本地的数据库中。

  进一步地,外部统一访问虚拟接口的实现包括:使用反向代理服务器提供一个虚拟对外接口,同时转发外部的请求,并根据负载均衡策略动态决定转发给哪个机器人web服务器;当某个正在提供web服务机器人突然离线,反向代理服务器可迅速切换至其他的机器人web服务器。

  进一步地,外部统一访问虚拟接口的设计过程中,对反向代理服务器进行集群部署,同时提供存活检测机制,反向代理服务器集群拥有一个主节点和多个副节点,对外暴露的虚拟接口首先连接主节点上的反向代理服务器,如果该主节点上的反向代理器宕机,则会立即杀死自身并在其他副节点中重新推选主节点,以此保持整个系统web服务的动态稳定。

  本发明的有益效果是:本发明中自主移动机器人负责各自数据的采集,并通过无线通讯模块与其他机器人进行数据和信息的交互,从而实现自主的决策与控制。本发明能够实现多个自主移动机器人个体之间的分散管理和调度、自主决策和控制等,提高机器人的自主性和协作能力,降低生产车间的管理成本,提高运行效率,具有较好的应用前景。

  附图说明

  图1是本发明实施例分布式自主移动机器人调度系统结构框图;

  图2是本发明实施例中自主移动机器人网联模块集群管理示意图;

  图3是本发明实施例中服务注册和服务调用流程图。

  具体实施方式

  下面结合本发明实施例附图对本发明的技术方案做进一步的详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚,需要说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明发明实施例的目的。

  如图1所示,本申请提出的一种分布式自主移动机器人调度系统,该系统包括机器人自主状态检测与数据共享单元、分布式任务分配单元、交通自主协调单元、数据库集群与同步单元、外部统一访问虚拟接口;

  机器人自主状态检测与数据共享单元:机器人根据自身传感器可以检测位置、姿态、工作状态、各种传感器数据、异常和故障等信息,并通过无线网络模块与其他机器人进行信息共享和交互;

  分布式任务分配单元:机器人应对外部发起的任务指令,通过与其他机器人根据各自自身状态所决定的竞拍价格或协商价格的迭代交互,决策出唯一而且一致的“由谁来响应这个任务”的结论;

  交通自主协调单元:机器人通过自身当前位姿及已规划的运行路线,通过与邻近机器人运行规划路径的冲突检测,协商出一个无冲突、无死锁的可行路径,并进行实时动态更新;

  数据库集群与同步单元:每个机器人各自安装数据表格相同的数据库,并确保每一台机器人的数据库发生更新时,可实时更新到所有其他机器人的数据库上;

  外部统一访问虚拟接口:所有机器人的web服务只提供统一的一个对外虚拟接口,外部访问无需区分要访问哪台机器人的web服务器。

  在本申请实施例中,机器人自主状态检测与数据共享单元的一种实现方式如下:

  机器人根据自身传感器可以检测位置、姿态、工作状态、各种传感器数据、异常和故障等信息,数据信息可以通过机器人无线网络共享;这些数据信息可以用于机器人分布式任务分配、交通协调等,部分持久化的数据还可用于故障机器人处理等。

  机器人可以利用自身传感器和实时更新的地图信息定位到自身的位置和储存点是否为空闲状态,从而充分利用仓储的空间,机器人可以根据自身的电量来调整工作状态,电量较多时可以适当接受一些更耗时的任务,以及低电量的自主充电。机器人也可以根据避障传感器来做异常和故障的判断,从而更好的实现机器人的自主状态检测。

  机器人数据信息共享依赖于网联模块、通信与服务调用模块。

  2.1自主移动机器人网联模块

  网联模块基于LAN通信,提供配置管理、名字服务、分布式锁、集群管理等功能,具备高实时性、同步性和可靠性。自主移动机器人网联模块单独分布式部署在每一台工作的机器人上,进入局域网后根据模块配置信息组成自主移动机器人集群。

  自主移动机器人网联模块提供强大的配置管理能力。分布式调度系统中不同机器人之间的通信和服务调用接口信息存在于网联模块中,当某些自主移动机器人上的服务发生变化时,网联模块可以及时将变动情况同步到其他机器人中,保证重要通信与服务的信息一致性和稳定性。

  自主移动机器人网联模块提供分布式锁能力。在自主移动机器人集群中,为了保证系统的可靠性,在集群中的每台自主移动机器人中可能会部署同样的服务。网联模块可以保证在集群中只有一台机器人执行一个服务,只有该台自主移动机器人出故障才能释放分布式锁,调用其他机器人的服务。

  自主移动机器人网联模块具有灵活的集群管理能力。在自主移动机器人集群中,有一台为Leader,集群中其他机器人都为Follower,如图2。所有自主移动机器人网联模块都保存一份配置副本,并保证全局一致性。当有机器人需要更改配置时,网联模块会转发该更改请求直到Leader,并由Leader实施更改。当有机器人需要读取配置,网联模块直接提供本机的全局配置。

  2.2通信与服务调用模块

  在传统集中式调度系统中,通信通常存在于任务发布机构——资源管理服务器、资源管理服务器——自主移动机器人运动控制器当中。在分布式自主移动机器人调度系统,资源管理服务器的计算需求被分散到了所有机器人当中,计算过程中往往需要机器人之间相互通信以及远程调用相关服务。本发明利用远程过程调用方法组建通信与服务调用模块。

  通信与服务调用模块分布式部署在每一台自主移动机器人上,本发明通过远程调用方法,使每一台自主移动机器人获取其他机器人上数据和调用其他机器人上服务能够像调用自己本机上的数据和服务一样容易。

  通信与服务调用模块中包含服务提供者和服务消费者两部分,分别起向外部提供服务和从外部调用服务的功能,服务注册和调用流程如图3所示,包括以下步骤:

  (1)服务容器负责启动,加载,运行服务提供者。

  (2)服务提供者在启动时,向注册中心注册自己提供的服务。

  (3)服务消费者在启动时,向注册中心订阅自己所需的服务。

  (4)注册中心返回服务提供者地址列表给服务消费者,如果有变更,注册中心将基于长连接推送变更数据给服务消费者。

  (5)服务消费者从提供者地址列表中,基于软负载均衡算法选择一台提供者进行调用,如果调用失败,再选择另一台调用。

  本发明采用的通信与服务调用模块具有高伸缩性,适合分布式机器人集群部署,可任意增加或减少集群中对等点的数量,注册中心会将最新的服务提供者信息传递给服务消费者,保证全局一致性。

  在本申请实施例中,分布式任务分配单元的一种实现方式如下:

  在本发明中,所有任务都来自于任务发布机构,所有任务发布机构分布在整个工作区域环境地图中。任务发布机构作为独立单位发布任务,所有任务发布机构之间没有相互联系,发布的任务信息包括任务起始点、终点、任务编号等。

  在不同局的任务分配竞拍算法结果中,每一局的分配呈最优性,但是不同局之间的分配没有影响。因此本发明采用单个机器人内部的任务自协调策略来提高整体任务分配的效率。

  (1)任务分配通过竞拍算法实现,将任务集合M={M1,M2,...,Mm}分配到机器人集合R={R1,R2,...,Rn},其中m,n∈N+,使得收益最大,机器人Ri执行任务Mj可以获得收益aij,目标是给定这些任务的分配方案,使总收益最大。

  

  

  

  xij∈{0,1}

  其中,xij表示机器人Ri是否分配任务Mj,取0为未分配,取1为分配了任务,Ni为机器人执行任务的最大数量,第一个约束表示每个任务有且仅有一个机器人执行。

  算法吸取博弈论纳什平衡思想,在每一竞拍局中构建虚拟市场,每一台机器人都是虚拟市场参与者。

  机器人应对外部发起的任务指令,通过与其他机器人根据各自自身状态所决定的竞拍价格或协商价格的迭代交互,决策出唯一而且一致的“由谁来响应这个任务”的结论。

  在本发明中,实现了自主移动机器人任务分配方法的完全分布式,即每一台机器人都运行各自的任务分配算法,在虚拟市场中相互独立,相互作用,所有机器人完全自私,只为自己的利益进行竞拍,选择任务。最终虚拟市场会趋于稳态,并且市场整体创造的价值达到最高,实现局部最优分配。

  本发明的任务分配竞拍算法在每一台机器人上都需要部署,可以将一台机器人上的复杂计算分摊至所有机器人中。同时,任务分配竞拍算法的完全分布式特性可以大大增强自主移动机器人系统的扩展性和鲁棒性,机器人进入和退出不会对整体分布式系统的任务分配造成太大影响。

  (2)单个机器人内部的任务自协调策略,将所有自主移动机器人未执行的任务自协调,合理安排机器人任务执行队列中的执行顺序,使机器人执行任务收益最大化。单个任务自协调策略通过在自身的任务执行队列中合理改变任务执行顺序,让单个机器人的任务执行收益最大化。本发明的自协调方法包括最优执行位置价值函数等。

  以下方法为最优执行位置价值函数方法,此法可直接用于任务分配竞拍算法的核心算法当中,替换原先旧价值函数计算,以此提高单个机器人的任务执行收益。对于新的投标任务,计算机器人的任务执行队列中不同位置的最短任务完成距离(假设任务在分配后没有立即执行)。计算插入新任务前后的差异,选择距离增加最小的任务插入点上的执行收益,作为新任务的执行价值。

  

  其中,Lnew是机器人加入新任务后完成任务执行队列所需要经过的总路程,Lold是不加新任务的完成任务执行队列所需要经过的总路程。若机器人Ri所投标的任务为Mj,Mj的执行位置插在最后,机器人Ri的任务执行队列为TaskExecutionQueue:{Mj0,Mj1,Mj2,...,Mjs-1,Mj},s为未加入新任务时的任务执行队列长度。

  Lnew和Lold计算方法如下:

  

  

  其中,(xRi,yRi)为机器人Ri位置坐标,分别表示任务Mj0、Mj和Mjs-1的起点位置坐标,分别表示任务Mj0、Mj和Mjs-1的终点位置坐标。对于不同插入位置的新任务Mj,其Lnew各不相同。

  最优执行位置价值函数自协调算法步骤如下:

  (1)机器人Ri获取任务待分配列表TaskList={M1,M2,...,Mm};

  (2)机器人Ri根据自身任务执行队列和最优执行位置价值函数计算TaskList中每个新投标任务的最优执行位置价值;

  (3)机器人Ri记录每个新投标任务的最优执行位置和对应的最优执行位置价值;

  (4)进入任务分配竞拍算法并完成任务分配。

  在本申请实施例中,交通自主协调单元的一种实现方式如下:

  本发明应用在分布式系统中,机器人R={R1,R2,...,Rn}需要搭建在同一局域网络下,保证各个机器人之间的通讯,能够做到机器人之间的实时共享。

  4.1机器人的初始化。检查系统中机器人R={R1,R2,...,Rn}的状态。地图G的初始化,保证系统是可以运行的。定义所有机器人的路径集P={P1,P2,...,Pn},同时生成路径时间窗集T={T1,T2,...,Tn},其中P1,P2,...,Pn是n个机器人分别形成的n条路径,假设存在机器人Ri,生成路径Pi={si,ni1,ni2,...,gi},si,gi是机器人i所形成路径上的起点和终点,nit(t∈N)代表了一系列的路径上的点,其每个点的时间窗为表示起点启动时的时间,表示离开起点的时间,表示进入终点的时间,表示停止的时间,表示进入路径上其他点的时间,表示离开路径上其他点的时间。

  4.2路径规划。通过路径规划算法,机器人将会生成路径P={P1,P2,...,Pn}和路径上对应的时间窗T={T1,T2,...,Tn}。

  4.3进行冲突检测判断,判断是否存在赶超冲突、十字冲突、死锁冲突等,根据不同的冲突实施不同的规则去解决冲突,具体为:

  根据式子(4.3.1)判断是否存在冲突,当前的交通协调机制就是要保证其中任意两个机器人Rj,Rk对应的路径Pj,Pk不存在冲突。假设nj,nj-1,nj+1是机器人Rj路径上的点,nj-1是nj的父节点,nj是nj+1的父节点,nk,nk-1,nk+1是机器人Rk路径上的点,nk-1是nk的父节点,nk是nk+1的父节点,代表点nj,nk所形成的边,nj对应的时间窗为nk对应的时间窗为当同时满足以下三个条件时,判断为存在冲突:

  

  在满足4.3.1的情况下,判断是否满足如果满足则为十字冲突;

  在满足4.3.1的情况下,判断是否至少满足其中的一个条件,如果满足则为赶超冲突;

  当无法满足赶超冲突和十字冲突,则为死锁冲突。

  4.4解决冲突。通过重规划和等待策略解决冲突。如果耗时短的话可以通过等待的方法进行冲突的解决。如果耗时长那么直接进行重新规划。具体通过规则1进行判断。

  规则1:Cr<CC,L<μ,

  如果同时满足这三个条件,那么执行重新规划策略,否则执行等待策略。

  Cr、CC的计算方法如下:

  

  其中,C是运行时间,V是速度,Cr是重规划时间,CC是当前规划路径的时间,L是路径长度,代表冲突点,zi代表零速点(起点、终点、拐点),ni代表路径中的所有点;分别代表加速、减速和匀速的时间;T代表速度阈值,μ代表路径长度阈值。

  在本申请实施例中,数据库集群与同步单元的一种实现方式如下:

  分布式数据库中具体存储地图信息,包括障碍物等,也需要存储机器人自身走过的路径便于分析,针对自主移动机器人的自主控制也需要同时存储其他机器人路径和任务信息,以保证某台自主移动机器人故障后,其他自主移动机器人不受其影响,系统中的信息可以通信共享,并且多机器人系统能够及时进行异常机器人自主处理。

  分布式数据库集群采用增量式同步方法。机器人被同步的数据表格具有相同的字段特征,包括地图信息、任务信息、机器人任务执行队列等重要可持久化字段。增量式同步方法主要依赖机器人网联模块和增量式数据更新模块。增量式数据更新模块中主要包含数据增量解析组件和数据增量同步组件,这些模块和组件均分布式部署在每一个机器人当中。数据库集群增量式同步包含以下步骤:

  5.1通过机器人网联模块组建移动机器人集群。移动机器人系统基于LAN通信,网联模块分布式部署在每一个机器人中,通过编写网联模块配置信息,一些独立的机器人可以组建一个集群,集群中的机器人能够通过网联模块找到其他机器人,并与其建立通信连接。

  5.2机器人本地数据更新。当机器人本地的数据库中数据存在更新,机器人本地数据库新数据会被写入二进制文件中,这部分新增的数据即增量数据,保存在机器人本地日志文件中。

  5.3数据更新增量解析。机器人通过本机的数据增量解析组件将二进制事件转化为增量消息,通过网联模块与其他机器人保持长连接,网联模块还有机器人连接数据增量解析的功能。

  主要包括以下步骤:

  (1)所有机器人将自己的数据增量解析组件注册到机器人网联模块中,一旦某机器人Ri的数据库中数据发生更新,其他机器人可以通过网联模块选择是否与该机器人数据增量解析组件保持连接。

  (2)一旦某机器人Ri本地数据库存在更新,通过本机上的数据增量解析组件将二进制文件转化为数据增量消息,数据增量消息可以支持多种数据解析协议。每一个数据库中的表格都对应一个实例,转化后的数据增量消息保存在实例当中,机器人本地若有多个数据库表格发生更新,则会产生多个实例。

  5.4其他机器人获取数据增量消息。集群中的其他机器人可有选择性地向感兴趣的机器人订阅增量信息,获取增量变更消息,具体为:当某机器人Ri的本地数据库存在更新,并通过增量数据解析模块生成了数据增量消息,集群中的其他机器人可以通过网联模块订阅机器人Ri数据增量解析组件中的实例,并获取数据增量消息。

  5.5其他机器人数据库同步。当其他机器人获取机器人Ri的数据增量消息,可以通过本机的数据增量同步组件将数据增量消息同步至本地的数据库中。

  在本申请实施例中,外部统一访问虚拟接口的一种实现方式如下:

  监控中心主要分为服务查询、服务统计、服务测试和数据查询等几个部分,通过web网页可视化实现。监控中心可以实现所有机器人工作量的统计、服务的调用等,也可以对全局访问某个工作机器人的状态。服务测试就是对机器人的某一功能进行测试,便于管理和开发。整个监控中心是为了实时监测系统的运行,让机器人在运行安全数据统计等方面更加方便。

  所有机器人的web服务只提供统一的一个对外虚拟接口,外部访问无需区分要访问哪台机器人的web端,外部通过一个虚拟接口便可对系统监控中心进行全局访问。本发明中使用反向代理服务器提供一个虚拟对外接口,同时转发外部的请求,并根据负载均衡策略动态决定转发给哪个机器人web服务器。反向代理服务器解决了机器人web服务的单点失效问题,当某个正在提供web服务机器人突然离线,反向代理服务器可迅速切换至其他的机器人web服务器。

  在机器人集群中,单点式反向代理服务器也容易宕机,本发明对反向代理服务器也进行集群部署,同时提供存活检测机制。反向代理服务器集群拥有一个主节点和多个副节点,对外暴露的虚拟接口会首先连接主节点上的反向代理服务器,如果该主节点上的反向代理器宕机,则会立即杀死自身并在其他副节点中重新推选主节点,以此保持整个系统web服务的动态稳定。

  以上所述仅是本发明的优选实施方式,虽然本发明已以较佳实施例披露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何的简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。

《一种分布式自主移动机器人调度系统.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)