CN112549029B - 一种基于行为树的机器人行为控制方法及装置 - Google Patents
一种基于行为树的机器人行为控制方法及装置 Download PDFInfo
- Publication number
- CN112549029B CN112549029B CN202011407802.6A CN202011407802A CN112549029B CN 112549029 B CN112549029 B CN 112549029B CN 202011407802 A CN202011407802 A CN 202011407802A CN 112549029 B CN112549029 B CN 112549029B
- Authority
- CN
- China
- Prior art keywords
- task
- event
- node
- robot
- level
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
Landscapes
- Engineering & Computer Science (AREA)
- Robotics (AREA)
- Mechanical Engineering (AREA)
- Manipulator (AREA)
Abstract
本发明涉及一种基于行为树的机器人行为控制方法及装置,包括:包括读取任务文件,获取所述任务文件对应的任务管理行为树;利用所述任务管理行为树,控制机器人执行任务;本发明提供的技术方案将事件机制、中断恢复机制、同步机制引入行为树中,并提供了基于XML文件的统一任务描述格式;本发明提出的方法及装置可以有效地对机器人的任务进行编排描述、存储调度和控制执行,具有重要的应用价值。
Description
技术领域
本发明涉及机器人控制技术领域,具体涉及一种基于行为树的机器人行为控制方法及装置。
背景技术
随着机器人技术的发展,由一小组较小的专用机器人取代大型复杂机器人已逐渐成为一种趋势。机器人任务管理是指借助控制和决策手段,控制多个无人个体有序执行任务,从而完成群体目标的技术,相关技术已在搜索、救灾等大规模场景中得到应用,并期望在可靠性、可扩展性和自动化方面表现出优势。
当前,机器人的任务管理方法主要分为静态管理方法和动态管理方法。早期机器人执行任务的环境较为简单,因此往往采用集中式、预先规划的方法管理机器人集群。航点坐标法是一种典型的静态任务管理方法,该方法通常将GPS航点坐标列表与相关任务和命令一起使用,实现对机器人的控制;MissionPlanner是一种基于航点坐标法设计的机器人任务管理程序,它使用导航指令让机器人前往指定坐标,执行特定的任务(如拍照);虽然,航点坐标法具有控制简单,易于实现的优点,但该方法通常基于固定的坐标列表,这些坐标在环境变化时无法动态更改,因此导致任务无法动态执行。
随着机器人任务场景逐渐复杂化,以及对协同、交互的需求不断提升,许多动态任务管理方法逐渐被人们提出和应用。其中,有限状态机是动态任务管理中功能齐全、应用广泛的方法,该方法将任务封装为状态,通过事件触发状态转移来控制任务在不同条件下进行切换。
然而,有限状态机在实际使用中存在如下问题和挑战:一方面,有限状态机不适合应用于大型复杂系统,尤其是完全响应系统(指所有任务间均可以相互切换),在具有n个任务的完全响应系统中,需要n(n-1)个任务转移控制模块,因此系统复杂度为O(n2),当任务量n较大时,会导致状态和转移爆炸,从而使系统变得难以维护和管理;另一方面,有限状态机中所有状态间的转移依赖于状态量,状态转移相关程序分布在各个状态之中,这导致基于状态机设计的系统扩展性和重用性较差。
目前,行为树是机器人领域内一种新兴的控制架构,近年来广泛应用于控制机器人在动态环境下执行任务。相对于状态机,行为树将任务间的转移隐含于树形结构中,由控制流节点管理任务切换。这种方式避免了频繁的转移声明,极大地简化了模型的结构。
状态机可类比于传统编程语言中的Goto语句,其状态间的转移通过显式声明的单向控制实现,而行为树可类比于现代编程语言中的双向控制结构,执行节点如同函数,而控制流节点如同for、if等语句,会在合适的位置调用执行节点,并在执行完后返回最初调用的位置。
因此,行为树在模块化、可维护性、可重用性等方面相对于状态机有较大优势,其控制策略可以被灵活地分离和重组,同时能够有效响应动态环境下的突发情况。目前,行为树在功能上已被证明与经典的控制架构(如有限状态机)等效。然而,主流行为树在任务管理方面尚未有成熟的支撑技术,难以在任务执行时切换任务、没有完善的任务中断和恢复机制、缺少多机器人协同支撑技术。
发明内容
针对现有技术的不足,本发明的目的是提供一种基于行为树的机器人行为控制方法及装置,该方法及装置将事件机制、中断恢复机制、同步机制引入行为树中,并提供了基于XML文件的统一任务描述格式。本发明提出的方法及装置可以有效地对机器人的任务进行编排描述、存储调度和控制执行。
本发明的目的是采用下述技术方案实现的:
本发明提供一种基于行为树的机器人行为控制方法,其改进之处在于,包括:
读取任务文件,获取所述任务文件对应的任务管理行为树;
利用所述任务管理行为树,控制机器人执行任务。
优选的,所述读取任务文件,获取所述任务文件对应的任务管理行为树,包括:
基于深度优先策略,利用XML解析器中的创建行为树函数依次解析出事件级子树、任务级子树和异常级子树;
利用所述事件级子树、任务级子树和异常级子树构建机器人的任务管理行为树;
所述任务级子树包括任务检查节点、事件级子树和任务执行节点;
所述异常级子树包括检测节点和异常处理节点;
所述事件级子树包括事件监测节点、同步节点和任务切换节点。
优选的,所述利用所述任务管理行为树,控制机器人执行任务,包括:
利用行为树中事件级子树的事件监测节点监测事件;
根据监测到的事件类型,利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到事件关联的任务执行节点;
利用事件级子树的任务切换节点采用事件机制切换机器人的执行状态,并控制机器人执行与监测到事件关联的任务执行节点中的相关任务。
进一步的,所述根据监测到事件类型,利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到的事件关联的任务执行节点,包括:
若监测到的事件为需要同步的事件,则利用事件级子树的同步节点采用发布和订阅话题的方式使需要同步的事件达到同步要求后,再利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到的事件关联的任务执行节点;
若监测到的事件为不需要同步的事件,则直接利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到的事件关联的任务执行节点。
进一步的,所述利用事件级子树的同步节点采用发布和订阅话题的方式使需要同步的事件达到同步要求,包括:
利用事件级子树的同步节点将需要同步的事件类型和地址发布到相对应的话题上,等待订阅该话题的机器人响应并在同步节点的回调函数中更新订阅该话题的机器人响应数量;
当在预设时限内机器人响应数量大于等于同步的事件所需的机器人数量,则需要同步的事件达到同步要求。
进一步的,所述等待订阅该话题的机器人响应的过程中,还包括:
循环检测所述任务管理行为树中事件级子树的同步节点的回调函数中的机器人的状态是否异常;
若是,则机器人在该话题上发布同步恢复的消息,更新所述任务管理行为树中事件级子树的同步节点的回调函数中订阅该话题的机器人响应的数量,否则继续等待订阅该话题的机器人响应。
进一步的,所述利用事件级子树的任务切换节点采用事件机制切换机器人的执行状态,并控制机器人执行与监测到事件关联的任务执行节点中的相关任务,包括:
若监测到的事件为需要同步的事件,则利用事件级子树的任务切换节点采用事件机制同时切换多机器人的执行状态,同时控制多机器人共同执行所述任务执行节点中的相关任务;
若监测到的事件为不需要同步的事件,则利用事件级子树的任务切换节点采用事件机制切换单个机器人的执行状态,并控制该机器人执行与监测事件关联的任务执行节点中的相关任务。
进一步的,所述事件机制,包括:
按照预设的事件与任务的关联关系,根据监测到的事件中断当前任务,并触发多个或单个机器人执行与监测事件关联的任务执行节点中的相关任务。
优选的,所述方法还包括:
若异常级子树的异常检测节点检测到机器人的执行状态异常或外部环境发生异常,则将从异常级子树查找到的相关异常处理节点作为当前待执行节点,利用事件级子树的任务切换节点中断当前任务,并控制所述异常处理节点执行相关异常处理任务;
若监测到当前异常处理完成,则利用事件级子树的任务切换节点切换至上一任务执行节点恢复执行相关任务;
优选的,当异常检测节点同时检测到至少两种异常或者当执行异常处理时检测到另一异常时,则根据预设的异常处理优先级,切换至优先级高的异常处理节点执行相关异常处理任务。
本发明提供一种基于行为树的机器人行为控制装置,其改进之处在于,包括:
读取模块,用于读取任务文件,获取所述任务文件对应的任务管理行为树;
控制模块,用于利用所述任务管理行为树,控制机器人执行任务。
与最接近的现有技术相比,本发明具有的有益效果:
本发明提供了一种基于行为树的机器人行为控制方法及装置,包括读取任务文件,获取所述任务文件对应的任务管理行为树;利用所述任务管理行为树,控制机器人执行任务。本发明提供的技术方案可以利用任务文件有效地对机器人的任务进行编排描述、存储调度,之后基于生成的任务管理行为树实现对机器人的控制,有效解决了基于有限状态机进行机器人任务描述和管理的相关技术中存在的状态和转移爆炸的问题,并填补了传统行为树在任务管理方面的空白,具有重要的应用价值。
进一步的,本发明提供的技术方案还通过引入事件机制解决传统任务管理行为树难以在任务执行中进行任务切换的问题,通过新增任务状态完善任务中断和恢复机制,通过设计同步节点提供多机器人同步切换功能,同时还利用具有较好可读性和存储管理方便特性的XML文件进行标准化地任务描述实现对机器人的任务编排描述,对于基于行为树的机器人行为控制方法具有重要意义。
附图说明
图1是本发明实施例1中提供的一种基于行为树的机器人行为控制方法的流程示意图;
图2为本发明实施例1中提供的一种基于行为树的机器人行为控制方法的任务管理行为树的结构示意图;
图3为本发明实施例1中提供的一种基于行为树的机器人行为控制装置的结构示意图;
图4为本发明实施例2中提供一种的基于行为树的机器人行为控制方法的总体系统框架和运行流程示意图;
图5为本发明实施例2中提供的一种基于行为树的机器人行为控制方法设计的扫地机器人在仿真实验中的效果图;
图6为本发明实施例2中提供的一种基于行为树的机器人行为控制方法设计的扫地机器人的任务管理行为树的结构示意图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步的详细说明。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
这里先解释本发明涉及到的一些术语:
行为树是机器人领域内一种新兴的控制架构,近年来广泛应用于控制机器人在动态环境下执行任务。与常用的树结构一样,行为树由节点和边组成,其内部节点称为控制流节点,叶子节点称为执行节点;节点的返回值主要有Success、Failure和Running,分别表示节点执行成功,节点执行失败和节点正在执行。
控制流节点用于控制子节点的执行方式,按类型分为顺序节点、选择节点、并行节点和装饰器节点;顺序节点控制机器人按照一定顺序执行任务。在该结构中,子节点按照执行的先后顺序从左到右排列,当所有子节点返回Success,该节点返回Success;选择节点控制机器人有选择地执行任务。在该结构中,子节点按照优先级从左到右排列,机器人优先执行左边节点对应的任务,当某个子节点返回Success,该节点返回Success;并行节点控制机器人同时执行任务。在该结构中,子节点并行执行,当约定数量的子节点返回Success,该节点返回Success。
装饰器节点是用户自定义的控制节点,只包含一个子节点;该节点根据用户自定义的规则改变节点的返回状态,或根据需要判断是否激活子节点。典型的装饰器节点有反转装饰器和max-T-sec装饰器,前者将子节点返回的状态进行反转,后者限制了子节点的运行时间(若在T秒内未返回Success,则返回Failure);执行节点用于判断条件或描述动作的执行方式,按类型分为条件节点和动作节点。
行为树的根节点会以一定频率向子节点发送信号(称为tick),子节点收到tick后才能执行,并向父节点返回当前的状态。
相对于状态机,行为树将任务间的转移隐含于树形结构中,由控制流节点管理任务切换。这种方式避免了频繁的转移声明,极大地简化了模型的结构。
状态机可类比于传统编程语言中的Goto语句,其状态间的转移通过显式声明的单向控制实现;而行为树可类比于现代编程语言中的双向控制结构,执行节点如同函数,而控制流节点如同for、if等语句,会在合适的位置调用执行节点,并在执行完后返回最初调用的位置。
目前,行为树在模块化、可维护性、可重用性等方面相对于状态机有较大优势,其控制策略可以被灵活地分离和重组,同时能够有效响应动态环境下的突发情况;
行为树在功能上已被证明与经典的控制架构(如有限状态机)等效,因此,本发明提供了一种基于行为树的机器人行为控制方法。
实施例1
本发明实施例中提出了一种基于行为树的机器人行为控制方法,如图1所示,包括:
步骤101,读取任务文件,获取所述任务文件对应的任务管理行为树;
步骤102,利用所述任务管理行为树,控制机器人执行任务。
本发明一优选的实施例中,步骤101中读取任务文件,获取所述任务文件对应的任务管理行为树,包括:
基于深度优先策略,利用XML解析器中的创建行为树函数依次解析出事件级子树、任务级子树和异常级子树;
利用所述事件级子树、任务级子树和异常级子树构建机器人的任务管理行为树;
所述任务级子树包括任务检查节点、事件级子树和任务执行节点;
所述异常级子树包括检测节点和异常处理节点;
所述事件级子树包括事件监测节点、同步节点和任务切换节点。
在本发明的实施例中,以XML描述行为树的结构,以增强行为树的可读性并便于系统的存储管理;
XML描述文件被划分为三个级别的描述,分别为事件级描述、任务级描述、全局级描述;
在定义的XML语法中,<BehaviorTree>标签用于定义一棵行为树,其属性type定义了行为树的描述级别,属性Id定义了行为树的名称;<Fallback>、<Sequence>、<Parallel>是控制节点标签,对应行为树中的控制流节点<ConditionNode>和<ActionNode>标签定义叶子节点类型,对应行为树中的条件判断节点和行为执行节点;<param>标签用于定义任务执行所需的参数,例如执行区域、机器人间隔等;<Subtree>标签根据行为树的Id调用模型库中的行为树;
事件级描述定义了一个机器人可以响应的事件,包括事件监测节点、同步节点和任务切换节点;
任务级的描述分为正常任务描述和异常处理任务描述;
其中正常任务描述定义了一个机器人可以执行的任务,包括任务检查节点、事件处理子树(通过<Subtree>标签调用)和任务执行节点;
一个异常处理任务描述通常由异常检测节点和异常处理节点组成;
全局级描述由任务级描述组合而成,表达了机器人可以管理的所有任务;
在全局级描述中,标签<PlatformTaskConfig>声明了所有机器人的初始任务;
本发明实施例还构建了一个XML解析器,用于解析描述行为树的XML文件;
该解析器基于第三方工具TinyXML2,其构建步骤如下:
首先,导入XML文件,将XML信息转化为c++对象,并获取根节点,从根节点开始向下遍历读取;
其次,根据读取的内容创建行为树节点或子树;当读取的标签为<BehaviorTree>时,创建行为树根节点;当读取的标签为<Subtree>时,调用模型库中的子树模型;当读取的标签是<Sequence>、<Fallback>、<Condition>等节点类型的标签时,根据类型名称和参数调用对应类的构造函数,创建行为树节点;
最后,将新建的节点或新调用的子树与其父节点建立联系;该解析器按照事件级、任务级、异常级和全局级描述的顺序依次解析,最终生成用于群体多任务管理行为树。
本发明一优选的实施例中,步骤102中利用所述任务管理行为树,控制机器人执行任务,包括:
S1021、利用行为树中事件级子树的事件监测节点监测事件;
S1022、根据监测到的事件类型,利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到事件关联的任务执行节点;
S1023、利用事件级子树的任务切换节点采用有限状态机的事件机制切换机器人的执行状态,并控制机器人执行与监测到事件关联的任务执行节点中的相关任务。
上述步骤102中,通过任务切换机制,即通过将有限状态机中的事件机制引入行为树的方法进行正常任务间的切换。上述正常任务的特点使其难以使用传统的行为树控制任务切换,因此,在任务级的行为树中,通过事件机制进行正常任务间的切换。
其中,事件机制包括事件源、事件、事件监测器和事件处理器;
事件源指事件的发送者,例如机器人本身,或周围环境;
事件指事件源发出的信息、状态或警告,例如巡逻、垃圾搬运等等;
事件监测器用于监测事件;
事件处理器用于对事件作出响应的反应;
首先将对事件的检测引入条件节点,使其成为一个事件监测节点;在该节点中,机器人按照一定频率(tick)从环境中搜集信息,并判断监测的事件是否发生;其次利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到事件关联的任务执行节点。
正常任务的任务级子树结构主要包括任务检查节点、事件级子树和任务执行节点;
任务检查节点指检查机器人当前执行的任务是否由该行为树控制;
事件级子树中的事件监测节点检查任务执行中的相关事件是否发生,用于触发任务切换;
任务执行节点封装了某个具体任务的执行方式,与事件级子树并行执行;
在某棵任务级子树中,如果通过了任务检查,则说明该机器人当前执行的任务由这棵行为树控制,那么会调用任务执行节点执行任务。在任务执行过程中,机器人会不断检查可响应的事件是否发生,若发生则会在事件级子树中进行任务切换,在下一个时间周期内,机器人将会执行其他任务;
引入事件机制需要在每个正常任务的任务级子树结构中显式声明事件,这在一定程度上影响了整个系统的模块化特性(因为如果添加或删除了某个正常任务,还需要在其他任务中修改与该任务相关的事件),但由于正常任务是非完全响应的,因此,对系统的影响是有限的、可控的;
引入事件机制是在有限状态机和传统行为树之间权衡的结果,一方面,有限状态机完全的显式声明严重破坏了系统的模块化;另一方面,行为树在任务切换上不如状态机灵活。因此,通过传统行为树调度需要完全响应的异常处理任务,通过事件机制调度非完全响应的正常任务,可以在灵活性和模块化之间获得良好的平衡。
本发明一优选的实施例中,所述根据监测到事件类型,利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到的事件关联的任务执行节点,包括:
若监测到的事件为需要同步的事件,则利用事件级子树的同步节点采用发布和订阅话题的方式使需要同步的事件达到同步要求后,再利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到的事件关联的任务执行节点;
若监测到的事件为不需要同步的事件,则直接利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到的事件关联的任务执行节点。
在本发明的实施例中,需要同步的事件指多机器人同时从它们当前执行的任务切换到另一个任务的机制,本发明在事件级子树的任务切换节点中加入了同步机制,将行为树从单机领域扩展到多机领域。
本发明一优选的实施例中,利用事件级子树的同步节点采用发布和订阅话题的方式使需要同步的事件达到同步要求,包括:
利用事件级子树的同步节点将需要同步的事件类型和地址发布到相对应的话题上,等待订阅该话题的机器人响应并在同步节点的回调函数中更新订阅该话题的机器人响应数量;
当在预设时限内机器人响应数量大于等于同步的事件所需的机器人数量,则需要同步的事件达到同步要求。
本发明一优选的实施例中,等待订阅该话题的机器人响应的过程中,还包括:
循环检测所述任务管理行为树中事件级子树的同步节点的回调函数中的机器人的状态是否异常;
若是,则机器人在该话题上发布同步恢复的消息,更新所述任务管理行为树中事件级子树的同步节点的回调函数中订阅该话题的机器人响应的数量,否则继续等待订阅该话题的机器人响应。
在本发明的实施例中,同步切换指多机器人同时从它们当前执行的任务切换到另一个任务的机制,将行为树从单机领域扩展到多机领域;
同步机制被封装为一个可复用的任务管理行为树的同步节点中,并通过话题实现。
同步节点需要三个参数进行构造,nreq表示任务切换需要的同步数量,topic表示不同机器人之间消息传递的话题名称,tduration表示同步的时间限制;此外还有两个变量now和Δt,分别表示当前已准备就绪的机器人数量和同步节点已运行时间;
该机制具体包括:
同步请求:在同步节点被首次访问触发,节点在topic上发布同步请求消息,订阅这个话题的机器人会在回调函数中更新now(now++);
状态检测:同步节点循环检查自己的状态,当节点状态为Interrupted(指在同步期间发生了异常)或同步超时(Δt≥tduration),则同步失败;当有足够多的机器人准备就绪(now≥nreq),则同步成功;
同步恢复:无论同步成功还是失败节点都会发布同步恢复消息,用于在回调函数中更新now(now--)。
本发明一优选的实施例中,所述利用事件级子树的任务切换节点采用有限状态机的事件机制切换机器人的执行状态,并控制机器人执行与监测到事件关联的任务执行节点中的相关任务,包括:
若监测到的事件为需要同步的事件且需要同步的事件达到同步要求时,则利用事件级子树的任务切换节点采用有限状态机的事件机制同时切换多机器人的执行状态,同时控制多机器人共同执行所述任务执行节点中的相关任务;
若监测到的事件为不需要同步的事件,则利用事件级子树的任务切换节点采用有限状态机的事件机制切换单个机器人的执行状态,并控制该机器人执行与监测事件关联的任务执行节点中的相关任务。
本发明一优选的实施例中,上述有限状态机的事件机制,包括:
在有限状态机中按照预设的事件与任务的关联关系,根据监测到的事件中断当前任务,并触发多个或单个机器人执行与监测事件关联的任务执行节点中的相关任务。
在本发明的实施例中,当进行任务切换时,需要定义一种中断当前任务的方法,以及当任务需要重新执行时对中断现场进行恢复;
首先,新增中断状态,用于描述任务在中断状态下的行为;
其次,定义启动、停止、中断、激活四种操作,与空闲状态(Idle状态)、运行状态(Running状态)、中断状态(Interrupted状态)三种任务管理行为树节点状态共同构成新的状态循环;具体描述如下:
启动操作:任务执行节点请求资源,加载相关算法,初始化通信话题,机器人开始执行任务,任务执行节点状态由Idle状态转换为Running状态;
停止操作:任务执行节点根据执行情况返回成功或失败,释放所有资源,节点状态由Running状态转换为Idle状态;
中断操作:任务执行节点安全停止当前任务并保存现场,释放资源,节点状态由Running状态转换为Interrupted状态;
激活操作:根据数据恢复现场,重新请求资源,节点状态由Interrupted状态转换为Running状态;
在本实施例中,一个任务执行节点可能在两种情况下被设置为Interrupted状态,分别是异常任务发生或任务切换;
当异常发生时,机器人会执行对应的异常处理任务,从而中断当前正在执行的正常任务;
当任务发生切换时,当前任务级行为树的任务检查节点无法通过,因此当前任务被中断,机器人执行其他任务;
此处定义当任务执行节点状态为Interrupted状态时,节点不执行任何与该任务相关的操作,用户也可根据实际需求自定义状态为Interrupted状态时节点的行为;
当机器人从当前任务执行节点离开时,节点内会记录当前任务的执行进度;
任务执行节点中对机器人需要执行的任务和当前的异常情况进行循环检查,当发现机器人需要执行的任务由该节点控制,并且当前没有异常发生时,任务执行节点会启动任务恢复程序;
在任务恢复程序中,会根据离开时记录的任务执行进度来进行任务现场恢复,并将任务执行节点的状态由Interrupted状态更改为Running状态,从而使节点继续控制任务的执行。
本发明一优选的实施例中,本发明的控制方法还可以包括在机器人执行正常任务的过程中发生异常状态时的异常处理过程,具体步骤如下:
若异常级子树的异常检测节点检测到机器人的执行状态异常或外部环境发生异常,则将从异常级子树查找到的相关异常处理节点作为当前待执行节点,利用事件级子树的任务切换节点中断当前任务,并控制所述异常处理节点执行相关异常处理任务;
若监测到当前异常处理完成,则利用事件级子树的任务切换节点切换至上一任务执行节点恢复执行相关任务。
本发明一优选的实施例中,优选的当异常检测节点同时检测到至少两种异常或者当执行异常处理时检测到另一异常时,则根据预设的异常处理优先级,切换至优先级高的异常处理节点执行相关异常处理任务。
在本发明的实施例中,机器人的任务可以划分为异常处理任务和正常任务。
其中,正常任务是机器人的常规任务,异常处理任务由异常级子树根据异常状态进行控制的,用于机器人的异常处理。异常状态可以是机器人自身的状态异常,例如电量不足等状态或警告,或者是外部环境中的异常状态,例如发现障碍物等状态或警告。
为了便于理解,本实施例以无人机为例进行说明。无人机具有巡逻、跟踪和打击任务,当无人机巡逻时发现目标,则切换到跟踪任务;当无人机跟踪时确认目标,则切换到打击任务;当无人机跟踪时丢失目标或打击时摧毁目标,则切换到巡逻任务;
从无人机的示例中可以看出,正常任务具有以下特点:
首先,正常任务之间往往不具有优先级关系;巡逻、跟踪和打击这三种任务没有重要程度之分,它们根据任务执行中发生的事件进行切换;
其次,正常任务之间可以在执行过程中相互切换,例如巡逻过程中发现了目标,则中断巡逻任务,执行跟踪任务;而跟踪过程中丢失了目标,则中断跟踪任务,执行巡逻任务;
最后,正常任务常常是非完全响应的,例如只有在无人机执行巡逻任务时发现了目标才会切换到跟踪任务,而无人机在执行打击任务时即使发现了新目标也不会切换到跟踪任务。这意味着正常任务并不需要声明过多的转移关系;
根据任务划分结果和特点分析,在任务管理行为树中,异常处理任务被放置在左子树,采用传统行为树的机制进行切换;正常任务被放置在右子树,采用事件机制进行切换;为了便于说明,本实施例提供了如图2所示的任务管理行为树的具体结构示意图,其中E1、E2和E3均为异常任务,T1、T2和T3均为正常任务。
通常对于异常任务来说,不同的异常有着不同的紧急和重要程度,对应地,异常处理任务也有不同的优先级,且异常处理任务是完全响应的:无论当前机器人在执行哪个任务,当发生异常时,都需要进行异常处理,同时当多个异常同时存在时,优先处理高优先级的异常。例如,充电和避障是两种典型的异常处理任务,前者在机器人电量不足时触发相应的异常处理,后者在遇到障碍物时触发相应的异常处理;
由于异常处理任务是完全响应的,因此在有限状态机中,其转移关系需要密集的显式声明,这极大地提升了状态机的复杂性;而在行为树中,异常的检测和处理方式被封装在叶子节点中,由控制流节点调度,因此不需要在节点内部声明转移关系,从而使系统具有很好地模块化特性。
基于相同的发明构思,本发明还提供了一种基于行为树的机器人行为控制装置,如图3所示,包括:
读取模块,用于读取任务文件,获取所述任务文件对应的任务管理行为树;
控制模块,用于利用任务管理行为树,控制机器人执行任务。
优选的,读取模块,包括:
解析单元,用于基于深度优先策略,利用XML解析器中的创建行为树函数依次解析出事件级子树、任务级子树和异常级子树;
构建单元,用于利用所述事件级子树、任务级子树和异常级子树构建机器人的任务管理行为树;
所述任务级子树包括任务检查节点、事件级子树和任务执行节点;
所述异常级子树包括检测节点和异常处理节点;
所述事件级子树包括事件监测节点、同步节点和任务切换节点。
优选的,控制模块,包括:
监测单元,用于利用行为树中事件级子树的事件监测节点监测事件;
查找单元,用于根据监测到的事件类型,利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到事件关联的任务执行节点;
控制单元,用于利用事件级子树的任务切换节点采用有限状态机的事件机制切换机器人的执行状态,并控制机器人执行与监测到事件关联的任务执行节点中的相关任务。
进一步的,查找单元,具体用于:若监测到的事件为需要同步的事件,则利用事件级子树的同步节点采用发布和订阅话题的方式使需要同步的事件达到同步要求后,再利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到的事件关联的任务执行节点;
若监测到的事件为不需要同步的事件,则直接利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到的事件关联的任务执行节点。
进一步的,利用事件级子树的同步节点采用发布和订阅话题的方式使需要同步的事件达到同步要求,包括:
利用事件级子树的同步节点将需要同步的事件类型和地址发布到相对应的话题上,等待订阅该话题的机器人响应并在同步节点的回调函数中更新订阅该话题的机器人响应数量;
当在预设时限内机器人响应数量大于等于同步的事件所需的机器人数量,则需要同步的事件达到同步要求。
进一步的,等待订阅该话题的机器人响应的过程中,还包括:
循环检测所述任务管理行为树中事件级子树的同步节点的回调函数中的机器人的状态是否异常;
若是,则机器人在该话题上发布同步恢复的消息,更新所述任务管理行为树中事件级子树的同步节点的回调函数中订阅该话题的机器人响应的数量,否则继续等待订阅该话题的机器人响应。
进一步的,控制单元,具体用于:
若监测到的事件为需要同步的事件,则利用事件级子树的任务切换节点采用有限状态机的事件机制同时切换多机器人的执行状态,同时控制多机器人共同执行所述任务执行节点中的相关任务;
若监测到的事件为不需要同步的事件,则利用事件级子树的任务切换节点采用有限状态机的事件机制切换单个机器人的执行状态,并控制该机器人执行与监测事件关联的任务执行节点中的相关任务。
进一步的,有限状态机的事件机制,包括:
在有限状态机中按照预设的事件与任务的关联关系,根据监测到的事件中断当前任务,并触发多个或单个机器人执行与监测事件关联的任务执行节点中的相关任务。
优选的,该装置还包括异常模块,具体用于:
若异常级子树的异常检测节点检测到机器人的执行状态异常或外部环境发生异常,则将从异常级子树查找到的相关异常处理节点作为当前待执行节点,利用事件级子树的任务切换节点中断当前任务,并控制所述异常处理节点执行相关异常处理任务;
若监测到当前异常处理完成,则利用事件级子树的任务切换节点切换至上一任务执行节点恢复执行相关任务。
优选的,当异常检测节点同时检测到至少两种异常或者当执行异常处理时检测到另一异常时,则根据预设的异常处理优先级,切换至优先级高的异常处理节点执行相关异常处理任务。
实施例2
为了便于对本发明提供的技术方案进行说明,本发明提供另一实施例,具体如图4所示的基于行为树的机器人行为控制方法的总体系统框架和运行流程图:主要包括控制台端和无人系统平台端,具体实施方式如下:
步骤S1,读取任务文件,获取所述任务文件对应的任务管理行为树;
步骤S11,在控制台端,使用者根据相关技术领域知识(本实施例是智能扫地机器人技术领域)和框架提供的标签库构建用于描述任务的XML文件,该文件可以通过文件系统进行存储和管理;
任务文件为XML文件,该文件中设计的事件级描述部分:本实例中定义了“sundries_found”和“delivery_finish”,两个事件,它们分别表示已发现房间内的杂物和已将杂物运送到储物间;设计的任务级描述部分:本实例中定义了“Patrol”和“Deliver”两个正常任务,它们分别表示机器人在房间里指定位置巡逻和机器人将杂物运送到储物间,同时本实例定义了“BetteryLowHandle”和“AvoidObstacle”两个异常处理任务,它们分别用于处理电量不足和障碍物阻挡的异常情况;设计的全局级描述部分:本实例中定义了“CleanRoom”全局任务,它定义了一个由两个机器人共同完成的房间清理任务,控制机器人根据环境的动态变化分别执行充电、避障、巡逻、运送四种子任务。
步骤S12,任务分发,即将S11设计的XML文件根据<PlatformTaskConfig>分发给指定的机器人完成了文件从控制台端到无人系统平台端的传输。
步骤S13,XML文件解析:
在无人系统平台端,接收到的XML文件会被送往XML解析器中,按照深度优先策略依次解析出事件级子树、任务级子树和异常级子树;
解析过程中会调用行为树节点库中的控制流节点和自定义节点,以及模型库中的行为树,同时,解析的结果也会被存储到模型库中,并在其它的<subtree>标签下调用;
步骤S2,将解析结果送入行为树执行引擎,利用任务管理行为树,控制机器人执行任务。
在本实施例的基础上,还提出了具体如图5所示的基于行为树的机器人行为控制方法设计的扫地机器人在仿真实验中的效果图。
实验场景由3D仿真器Gazebo搭建,使用两台TurtleBot机器人进行实验,采用上述XML文件进行控制,要求机器人独立执行巡逻任务,合作执行运送任务;
图5a是任务管理行为树刚刚启动时,两台机器人均执行巡逻任务,机器人1的左侧发现杂物,发布“sundries_found”事件,但由于机器人2未准备就绪则不满足同步切换任务条件,机器人不能进行任务切换;
图5b中,机器人2的右侧也发现杂物,利用事件级子树的同步节点采用发布和订阅话题的方式使需要同步的事件达到同步要求后,再利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到的事件关联的任务执行节点,此时两机器人均已准备就绪,符合同步要求,机器人同时从巡逻任务切换到运送任务;
图5c中,机器人在汇合点集合,并合作将杂物运送到储物间;
图5d中,机器人将杂物运送到指定位置,完成运送任务;机器人发布“delivery_finish”事件,机器人根据该事件将任务切换为巡逻任务;
图5e中,由于机器人1电量低于设定阈值,异常级子树的异常检测节点检测到机器人的执行状态异常或外部环境发生异常,则将从异常级子树查找到的相关异常处理节点作为当前待执行节点,利用事件级子树的任务切换节点中断当前任务,并控制所述异常处理节点执行相关异常处理任务;此时任务管理行为树控制其暂停巡逻任务,处理电量不足异常,机器人1前往充电站充电;
图5f中,机器人1前往充电站的途中遇到了障碍物,任务管理行为树触发更高级别的异常处理,根据异常任务的优先级,机器人1执行避障操作;
图5g中,机器人1完成避障任务,继续处理上一异常任务即电量不足异常;
图5h中,机器人1处理完所有异常,继续执行上次中断的正常任务即巡逻任务;
为了便于描述本实施例,提供了如图6所示的“CleanRoom”实例任务管理行为树的结构,包括避障和充电两种异常处理任务以及巡逻和运送两种正常任务,任务管理行为树控制机器人根据环境需求在这四种任务间进行灵活切换。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (2)
1.一种基于行为树的机器人行为控制方法,其特征在于,所述方法包括:
读取任务文件,获取所述任务文件对应的任务管理行为树;
利用所述任务管理行为树,控制机器人执行任务;
所述读取任务文件,获取所述任务文件对应的任务管理行为树,包括:
基于深度优先策略,利用XML解析器中的创建行为树函数依次解析出事件级子树、任务级子树和异常级子树;
利用所述事件级子树、任务级子树和异常级子树构建机器人的任务管理行为树;
所述任务级子树包括任务检查节点、事件级子树和任务执行节点;
所述异常级子树包括检测节点和异常处理节点;
所述事件级子树包括事件监测节点、同步节点和任务切换节点;
所述利用所述任务管理行为树,控制机器人执行任务,包括:
利用行为树中事件级子树的事件监测节点监测事件;
根据监测到的事件类型,利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到事件关联的任务执行节点;
利用事件级子树的任务切换节点采用事件机制切换机器人的执行状态,并控制机器人执行与监测到事件关联的任务执行节点中的相关任务;
所述根据监测到事件类型,利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到的事件关联的任务执行节点,包括:
若监测到的事件为需要同步的事件,则利用事件级子树的同步节点采用发布和订阅话题的方式使需要同步的事件达到同步要求后,再利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到的事件关联的任务执行节点;
若监测到的事件为不需要同步的事件,则直接利用行为树中任务级子树的任务检查节点查找任务级子树中与监测到的事件关联的任务执行节点;
所述利用事件级子树的同步节点采用发布和订阅话题的方式使需要同步的事件达到同步要求,包括:
利用事件级子树的同步节点将需要同步的事件类型和地址发布到相对应的话题上,等待订阅该话题的机器人响应并在同步节点的回调函数中更新订阅该话题的机器人响应数量;
当在预设时限内机器人响应数量大于等于同步的事件所需的机器人数量,则需要同步的事件达到同步要求;
所述等待订阅该话题的机器人响应的过程中,还包括:
循环检测所述任务管理行为树中事件级子树的同步节点的回调函数中的机器人的状态是否异常;
若是,则机器人在该话题上发布同步恢复的消息,更新所述任务管理行为树中事件级子树的同步节点的回调函数中订阅该话题的机器人响应的数量,否则继续等待订阅该话题的机器人响应;
所述利用事件级子树的任务切换节点采用事件机制切换机器人的执行状态,并控制机器人执行与监测到事件关联的任务执行节点中的相关任务,包括:
若监测到的事件为需要同步的事件,则利用事件级子树的任务切换节点采用事件机制同时切换多机器人的执行状态,同时控制多机器人共同执行所述任务执行节点中的相关任务;
若监测到的事件为不需要同步的事件,则利用事件级子树的任务切换节点采用事件机制切换单个机器人的执行状态,并控制该机器人执行与监测事件关联的任务执行节点中的相关任务;
所述事件机制,包括:
按照预设的事件与任务的关联关系,根据监测到的事件中断当前任务,并触发多个或单个机器人执行与监测事件关联的任务执行节点中的相关任务;
所述方法还包括:
若异常级子树的异常检测节点检测到机器人的执行状态异常或外部环境发生异常,则将从异常级子树查找到的相关异常处理节点作为当前待执行节点,利用事件级子树的任务切换节点中断当前任务,并控制所述异常处理节点执行相关异常处理任务;
若监测到当前异常处理完成,则利用事件级子树的任务切换节点切换至上一任务执行节点恢复执行相关任务;
优选的,当异常检测节点同时检测到至少两种异常或者当执行异常处理时检测到另一异常时,则根据预设的异常处理优先级,切换至优先级高的异常处理节点执行相关异常处理任务。
2.一种基于行为树的机器人行为控制装置,其特征在于,所述装置包括:
读取模块,用于读取任务文件,获取所述任务文件对应的任务管理行为树;
控制模块,用于利用所述任务管理行为树,控制机器人执行任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011407802.6A CN112549029B (zh) | 2020-12-03 | 2020-12-03 | 一种基于行为树的机器人行为控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011407802.6A CN112549029B (zh) | 2020-12-03 | 2020-12-03 | 一种基于行为树的机器人行为控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112549029A CN112549029A (zh) | 2021-03-26 |
CN112549029B true CN112549029B (zh) | 2022-05-27 |
Family
ID=75048452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011407802.6A Active CN112549029B (zh) | 2020-12-03 | 2020-12-03 | 一种基于行为树的机器人行为控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112549029B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113534662B (zh) * | 2021-06-04 | 2022-12-02 | 中国人民解放军军事科学院国防科技创新研究院 | 一种基于行为树的无人系统集群控制方法 |
CN115213889B (zh) * | 2021-08-18 | 2023-01-13 | 达闼机器人股份有限公司 | 机器人控制方法、装置、存储介质及机器人 |
CN113848812B (zh) * | 2021-09-03 | 2023-12-08 | 珠海格力智能装备有限公司 | 机器人的控制方法、控制装置以及控制系统 |
CN114326495B (zh) * | 2021-12-24 | 2024-02-09 | 中电海康集团有限公司 | 一种机器人控制系统架构及语音指令处理方法 |
WO2023142079A1 (zh) * | 2022-01-29 | 2023-08-03 | 西门子股份公司 | 工作流创建方法、系统、介质及程序产品 |
CN117651925A (zh) * | 2022-03-16 | 2024-03-05 | 深圳市大疆创新科技有限公司 | 可移动平台的控制方法、行为树的编辑方法及可移动平台 |
CN115061736A (zh) * | 2022-05-19 | 2022-09-16 | 北京控制工程研究所 | 一种基于服务注册机制的动态任务管理方法及系统 |
CN115946128B (zh) * | 2023-03-09 | 2023-06-09 | 珞石(北京)科技有限公司 | 一种基于层级状态机的人机协作策略的实现方法 |
CN117400243A (zh) * | 2023-10-26 | 2024-01-16 | 南京天创电子技术有限公司 | 一种用于巡检机器人的自主任务编排调度系统及方法 |
CN117369795B (zh) * | 2023-12-06 | 2024-03-01 | 中国科学院自动化研究所 | 用于无人机决策的行为树模型可达性分析方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108290290A (zh) * | 2015-12-23 | 2018-07-17 | 英特尔公司 | 导航半自主移动机器人 |
CN109807903A (zh) * | 2019-04-10 | 2019-05-28 | 博众精工科技股份有限公司 | 一种机器人控制方法、装置、设备和介质 |
CN110270998A (zh) * | 2019-06-12 | 2019-09-24 | 上海宾通智能科技有限公司 | 机器人调度方法、电子设备和计算机可读存储介质 |
CN111143223A (zh) * | 2019-12-30 | 2020-05-12 | 珠海金山网络游戏科技有限公司 | 一种服务器压力测试方法及装置 |
CN111716356A (zh) * | 2020-06-18 | 2020-09-29 | 南京邮电大学 | 一种仿人多机器人的协作方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2266077A1 (en) * | 2008-04-02 | 2010-12-29 | iRobot Corporation | Robotics systems |
-
2020
- 2020-12-03 CN CN202011407802.6A patent/CN112549029B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108290290A (zh) * | 2015-12-23 | 2018-07-17 | 英特尔公司 | 导航半自主移动机器人 |
CN109807903A (zh) * | 2019-04-10 | 2019-05-28 | 博众精工科技股份有限公司 | 一种机器人控制方法、装置、设备和介质 |
CN110270998A (zh) * | 2019-06-12 | 2019-09-24 | 上海宾通智能科技有限公司 | 机器人调度方法、电子设备和计算机可读存储介质 |
CN111143223A (zh) * | 2019-12-30 | 2020-05-12 | 珠海金山网络游戏科技有限公司 | 一种服务器压力测试方法及装置 |
CN111716356A (zh) * | 2020-06-18 | 2020-09-29 | 南京邮电大学 | 一种仿人多机器人的协作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112549029A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112549029B (zh) | 一种基于行为树的机器人行为控制方法及装置 | |
EP0622714B1 (en) | Integrated automation development system and method | |
CN111459763B (zh) | 跨kubernetes集群监控系统及方法 | |
CN112000350B (zh) | 一种动态规则更新方法、装置及存储介质 | |
CN114443435A (zh) | 一种面向容器微服务的性能监控告警方法及告警系统 | |
CN113179190B (zh) | 边缘控制器、边缘计算系统及其配置方法 | |
CN108009258A (zh) | 一种可在线配置的数据采集与分析平台 | |
CN112346926B (zh) | 资源状态监控方法、装置及电子设备 | |
CN113220431A (zh) | 跨云的分布式数据任务调度方法、设备及存储介质 | |
CN109088750B (zh) | 基于容器的网络态势感知系统设计与部署方法 | |
CN106027674A (zh) | 一种互联网与智能制造相结合的架构系统 | |
CN113704046A (zh) | 一种故障告警处理方法及装置、设备、存储介质 | |
CN116089027A (zh) | 一种基于jvm的非阻塞分布式计划任务调度方法 | |
CN107995026B (zh) | 基于中间件的管控方法、管理节点、受管节点及系统 | |
CN109725916B (zh) | 流处理的拓扑结构更新系统和方法 | |
CN111930561B (zh) | 流式任务自动化监控告警重启系统及方法 | |
CN101515864B (zh) | 告警信息配制系统及其配制方法 | |
Merz et al. | Control system framework for autonomous robots based on extended state machines | |
CN115237728B (zh) | 一种实时操作系统运行状态的可视化监视方法 | |
CN112231231B (zh) | 云端服务的调试方法、系统及装置 | |
CN114595042A (zh) | 任务执行方法、机器人、存储介质及计算机程序产品 | |
CN113824601A (zh) | 一种基于业务日志的电力营销监控系统 | |
WO2023164835A1 (zh) | 工作流执行方法、装置、存储介质及程序产品 | |
CN110443910A (zh) | 无人驾驶装置的状态监控方法、系统、设备和存储介质 | |
Kumar | Integrated timing analysis and verification of component-based distributed real-time systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |