多机器人智能交通控制方法及装置与流程

文档序号:26002451发布日期:2021-07-23 21:19阅读:83来源:国知局
多机器人智能交通控制方法及装置与流程

本发明涉及计算机技术领域,尤其是涉及一种多机器人智能交通控制方法及装置。



背景技术:

目前基于自主导航的机器人技术大规模应用在仓库、机场、码头等场景。其中交通控制,即联合路径规划与联合导航是多机器人调度中的难点,其中最大的问题在于如何避免多个机器人碰撞或陷入死锁状态。避免机器人相互之间发生碰撞的技术较为成熟,但避免机器人之间出现相互死锁还比较困难。在死锁状态下,死锁所涉及的任何一台机器人都无法执行其规划中的下一个动作,因此所有涉及的机器人都无法继续行动,其中一部分可以由系统重新规划路径找到一条可以绕开其它机器人的路线解决,另一部分只能由人工介入处理。无论何种处理方式,均会对交通效率产生负面影响。因此本发明着眼于通过避免多台机器人进入死锁状态从而提升交通效率。

通常控制机器人执行任务,并在运动中避免碰撞的流程如下(不能避免死锁),如图1所示:机器人首先在空闲状态下接到任务,由任务规划模块规划任务路径,之后根据机器人所在的当前位置确定下一步需要做的一个或多个动作(前进、转弯等),并尝试申请,然后由交通控制模块判断该动作是否可以执行(即申请成功)。一个动作申请成功后会将该动作加入待执行的动作队列,并可以继续申请其下一个动作,直到申请失败或下一步需要执行的所有动作都申请成功。申请结束后,机器人按顺序执行申请成功的命令,并在一段时间后根据最新的位置重复确定要申请的下一步动作。

在上述过程当中,交通控制模块判断该动作是否可以执行的标准通常是假设机器人执行这一个动作会不会与其他机器人待执行动作队列中的动作有冲突。这样的做法能够避免碰撞,但是在实际场景中,可能存在一些交通规则,例如单行线,导致机器人执行某些动作后,虽然不会与其他机器人发生碰撞,但会与其他机器人进入死锁状态,表现为所有这些机器人都无法进行其规划好的下一个动作,只能在原地静止。

图2展示了另一种可能的死锁,如图2所示,从点a和点b都只能单向运动到达点c,。两个机器人,其中agv1静止在a点,agv2由静止在b点,它们只能沿长边方向运动,它们处在当前位置时没有发生碰撞,但是agv1的下一个动作只能由a点走到c点。如图所示,从a点走到c点时,agv1的经过的区域(由ac1和ac2两条虚线表示)与agv2所在的位置有交集,即agv1唯一可能的动作被agv2阻挡;另一方面agv2由b走到c时,agv2经过的区域(由bc1和bc2两条虚线表示)与agv1所在位置也有交集,即agv2唯一可能的动作被agv1阻挡;因此agv1和agv2在它们的当前位置都无法行动。

已有的避免机器人死锁的方案有采用人工将地图上的一些点划分为管制区,在管制区内只允许一个机器人运行,从而避免多个车进入一个小区域,从而避免死锁。

但现有技术中存在以下技术问题:

首先,已有的通过划分管制区来避免死锁的方案主要依赖于人工经验,容易出错,需要不断地调试,当机器人运行区域比较大时容易遗漏;此外,管制区的存在会影响正常行走的机器人,它会阻挡正常行走,不会产生死锁的机器人的行动。最后,当管制区较为密集,相互接壤时,管制区与管制区之间又可能会形成新的死锁,例如机器人试图互相进入对方所在的管制区。因此现有技术并不能比较好的解决机器人相互死锁的问题,从而亟须解决多台机器人在其运行区域内可能发生死锁的问题。



技术实现要素:

本发明的目的在于提供一种多机器人智能交通控制方法及装置,旨在解决现有技术中的上述问题。

本发明提供一种多机器人智能交通控制方法,包括:

在机器人申请下一个元素时,进行碰撞检测和死锁检测,其中,所述死锁检测用于判断所述机器人申请的下一个元素之后是否会和其他机器人形成死锁;

在判断所述碰撞检测和/或所述死锁检测不通过时,禁止通过所述机器人的所述申请。

本发明提供一种多机器人智能交通控制装置,包括:

检测模块,用于在机器人申请下一个元素时,进行碰撞检测和死锁检测,其中,所述死锁检测用于判断所述机器人申请的下一个元素之后是否会和其他机器人形成死锁;

申请模块,用于在判断所述碰撞检测和/或所述死锁检测不通过时,禁止通过所述机器人的所述申请。

本发明实施例还提供一种多机器人智能交通控制装置,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述多机器人智能交通控制方法的步骤。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有信息传递的实现程序,所述程序被处理器执行时实现上述多机器人智能交通控制方法的步骤。

采用本发明实施例,使得运行区域可以由任意直线、曲线和旋转点组成;多台机器人可以具有不同的大小尺寸,可以运行在区域内的部分或所有线段和点上,解决了多台机器人在其运行区域内可能发生死锁的问题。能够自动判断多台机器人同时动作时是否会形成死锁,完全并避免出现死锁现象,增加交通效率,减少人为干预。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是现有技术的机器人执行任务的基本流程图;

图2是现有技术的机器人死锁示例的示意图;

图3是本发明实施例的多机器人智能交通控制方法的流程图;

图4是本发明实施例的多机器人智能交通控制方法的详细流程图一;

图5是本发明实施例的多机器人智能交通控制方法的详细流程图二;

图6是本发明实施例的多机器人智能交通控制方法的系统架构示意图;

图7是本发明实施例的多机器人智能交通控制装置的示意图一;

图8是本发明实施例的多机器人智能交通控制装置的示意图二。

具体实施方式

下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”、“顺时针”、“逆时针”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。此外,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

方法实施例

根据本发明实施例,提供了一种多机器人智能交通控制方法,图3是本发明实施例的多机器人智能交通控制方法的流程图,如图3所示,根据本发明实施例的多机器人智能交通控制方法具体包括:

步骤301,在机器人申请下一个元素时,进行碰撞检测和死锁检测,其中,所述死锁检测用于判断所述机器人申请的下一个元素之后是否会和其他机器人形成死锁;其中,该元素具体包括:机器人申请的下一个动作或下一个位置。在机器人申请下一个元素时进行死锁检测具体包括::

获取其它机器人待执行动作队列中所有的动作或位置队列中的所有位置;

判断其中是否存在一个动作或位置与所述机器人申请的所述下一个动作或位置存在死锁现象。。具体地,根据判断条件1和判断条件2进行判断:

判断条件1:判断其它机器人的某一个待执行的动作规划中的下一个动作被当前机器人试图申请的动作所阻挡;

判断条件2:如果当前机器人执行申请的所述下一个动作之后,其规划中的下一个动作也会被其它机器人待执行的动作所阻挡。

此外,在本发明实施例中,还可以预先在系统初始化后计算所有两个机器人可能出现死锁的动作组合,将所述动作组合进行缓存并建立索引;

在机器人申请下一个动作进行死锁检测具时,根据索引在缓存的所述动作组合中查询是否存在与其它机器人已申请的动作形成死锁的动作组合。

步骤302,在判断所述碰撞检测和/或所述死锁检测不通过时,禁止通过所述机器人的所述申请。

具体地,在所述判断条件1和所述判断条件2均同时满足的情况下,判断所述死锁检测不通过。

以下结合附图,对本发明实施例的上述技术方案进行详细说明。

如图4所示,在机器人申请下一个动作的时候除了原来需要做的碰撞检测等流程外,还需要判断申请到下一个动作之后是否会形成死锁。首先,需要获取其它机器人待执行动作队列中所有的动作,然后需要判断其中是否存在一个动作与机器人试图申请的动作存在死锁现象。存在死锁现象的条件是一方面其它机器人某一个待执行的动作规划中的下一个动作被当前机器人试图申请的动作所阻挡,另一方面假如当前机器人执行当前申请的动作之后,其规划中的下一个动作也会被上述其它机器人待执行的动作所阻挡。在当前机器人申请下一个动作时,如果上述两个条件同时成立,即意味着假如当前机器人申请到下一个动作之后会出现死锁现象,因此需要阻止机器人进行下一个动作,从而避免死锁。

如图5所示,为了进一步加速计算,可以在系统初始化之后通过人工配置或由系统自动计算出所有两个机器人可能出现死锁的动作组合,进行缓存并建立索引。此后,在机器人申请某个动作时,只需在缓存好的死锁的动作组合中查询是否会与其它机器人已申请的动作形成死锁的动作组合即可。

图6是本发明实施例中提供的一种任务作业系统的系统结构示意图。如图6所示,作业系统包括:工作站101、控制系统102、和机器人103。其中,控制系统至少包含处理器1021、存储器1022两个基本单元,存储器中储存了任务池1023。机器人103可以为自驱动机器人。

系统作业时,可以由人工在工作站101发起任务,或控制系统102自行产生任务,由控制系统102分配任务给机器人103,并控制机器人103完成相应的任务,在控制过程中,控制系统102会接收机器人实时上报的状态,并在合适的时机给机器人103下达指令。

机器人103接到任务并执行任务的过程如图4流程图所示,根据控制系统102下发的任务目的地首先规划路径,所述路径可以包含直线、曲线及原地旋转,然后根据机器人当前所处的位置确定下一个拟执行的动作,再根据各个机器人的状态(包含大小尺寸、方向)确定该动作是否会与其它机器人将要执行的动作相冲突,冲突既包含传统的碰撞冲突,也包含死锁冲突,只有当碰撞和死锁都不存在时,机器人才能将下一个拟执行的动作添加到将要执行的任务队列依次执行。通过以上步骤可以避免产生如图2所示的死锁冲突,从而提升机器人群体的通行效率,减少执行任务的所需时间。

装置实施例一

根据本发明的实施例,提供了一种多机器人智能交通控制装置,图7是本发明实施例的多机器人智能交通控制装置的示意图,如图7所示,根据本发明实施例的多机器人智能交通控制装置具体包括:

检测模块70,用于在机器人申请下一个元素时,进行碰撞检测和死锁检测,其中,所述死锁检测用于判断所述机器人申请的下一个元素之后是否会和其他机器人形成死锁;其中,该元素具体包括:机器人申请的下一个动作或下一个位置。所述检测模块70具体用于:

获取其它机器人待执行动作队列中所有的动作或位置队列中的所有位置;

判断其中是否存在一个动作或位置与所述机器人申请的所述下一个动作或位置存在死锁现象:具体地,在所述判断条件1和所述判断条件2均同时满足的情况下,判断存在死锁现象:判断条件1:判断其它机器人的某一个待执行的动作规划中的下一个动作被当前机器人试图申请的动作所阻挡;判断条件2:如果当前机器人执行申请的所述下一个动作之后,其规划中的下一个动作也会被其它机器人待执行的动作所阻挡;

在本发明的一个实施例中,该装置还可以进一步包括:索引模块,预先在系统初始化后计算所有两个机器人可能出现死锁的动作组合,将所述动作组合进行缓存并建立索引;

所述检测模块70具体用于:在机器人申请下一个动作进行死锁检测具时,根据索引在缓存的所述动作组合中查询是否存在与其它机器人已申请的动作形成死锁的动作组合。

申请模块72,在判断所述碰撞检测和/或所述死锁检测不通过时,禁止通过所述机器人的所述申请。

申请模块72具体用于:

在所述判断条件1和所述判断条件2均同时满足的情况下,判断所述死锁检测不通过。

图6是本发明实施例中提供的一种任务作业系统的系统结构示意图。如图6所示,作业系统包括:工作站101、控制系统102、和机器人103。其中,控制系统至少包含处理器1021、存储器1022两个基本单元,存储器中储存了任务池1023。机器人103可以为自驱动机器人。

系统作业时,可以由人工在工作站101发起任务,或控制系统102自行产生任务,由控制系统102分配任务给机器人103,并控制机器人103完成相应的任务,在控制过程中,控制系统102会接收机器人实时上报的状态,并在合适的时机给机器人103下达指令。

机器人103接到任务并执行任务的过程如图4流程图所示,根据控制系统102下发的任务目的地首先规划路径,所述路径可以包含直线、曲线及原地旋转,然后根据机器人当前所处的位置确定下一个拟执行的动作,再根据各个机器人的状态(包含大小尺寸、方向)确定该动作是否会与其它机器人将要执行的动作相冲突,冲突既包含传统的碰撞冲突,也包含死锁冲突,只有当碰撞和死锁都不存在时,机器人才能将下一个拟执行的动作添加到将要执行的任务队列依次执行。通过以上步骤可以避免产生如图2所示的死锁冲突,从而提升机器人群体的通行效率,减少执行任务的所需时间。

本发明实施例是与上述方法实施例对应的装置实施例,各个模块的具体操作可以参照方法实施例的描述进行理解,在此不再赘述。

装置实施例二

本发明实施例提供一种多机器人智能交通控制装置,如图8所示,包括:存储器80、处理器82及存储在所述存储器80上并可在所述处理82上运行的计算机程序,所述计算机程序被所述处理器82执行时实现如方法实施例中所述的步骤。

装置实施例三

本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有信息传输的实现程序,所述程序被处理器82执行时实现如方法实施例中所述的步骤。

本实施例所述计算机可读存储介质包括但不限于为:rom、ram、磁盘或光盘等。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

在20世纪30年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmablelogicdevice,pld)(例如现场可编程门阵列(fieldprogrammablegatearray,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardwaredescriptionlanguage,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。

控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书实施例时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本领域内的技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书的一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本文件的实施例而已,并不用于限制本文件。对于本领域技术人员来说,本文件可以有各种更改和变化。凡在本文件的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本文件的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1