CN113534662B - 一种基于行为树的无人系统集群控制方法 - Google Patents

一种基于行为树的无人系统集群控制方法 Download PDF

Info

Publication number
CN113534662B
CN113534662B CN202110625204.4A CN202110625204A CN113534662B CN 113534662 B CN113534662 B CN 113534662B CN 202110625204 A CN202110625204 A CN 202110625204A CN 113534662 B CN113534662 B CN 113534662B
Authority
CN
China
Prior art keywords
tree
unmanned system
node
behavior tree
behavior
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
Application number
CN202110625204.4A
Other languages
English (en)
Other versions
CN113534662A (zh
Inventor
杨学军
武云龙
王彦臻
易晓东
戴华东
李晶华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Defense Technology Innovation Institute PLA Academy of Military Science
Original Assignee
National Defense Technology Innovation Institute PLA Academy of Military Science
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by National Defense Technology Innovation Institute PLA Academy of Military Science filed Critical National Defense Technology Innovation Institute PLA Academy of Military Science
Priority to CN202110625204.4A priority Critical patent/CN113534662B/zh
Publication of CN113534662A publication Critical patent/CN113534662A/zh
Application granted granted Critical
Publication of CN113534662B publication Critical patent/CN113534662B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B13/00Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
    • G05B13/02Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
    • G05B13/04Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric involving the use of models or simulators
    • G05B13/042Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric involving the use of models or simulators in which a parameter or coefficient is automatically adjusted to optimise the performance

Landscapes

  • Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及无人系统集群控制技术领域,具体提供了一种基于行为树的无人系统集群控制方法,旨在解决缺乏面向大规模异构无人系统集群的实现支撑的技术问题。所述无人系统集群由多个无人系统平台、无人系统平台的树间黑板以及无人系统平台共同拥有的平台间黑板组成,每个无人系统平台内置至少一个既定任务对应的行为树引擎,所述行为树引擎由事件向量、行为树以及行为树对应的树内黑板组成;该方案为无人系统集群建立一个分布式行为树框架,该框架应当消除现有时间驱动方式的弊端,能支撑无人系统集群的通信需求,能提供对行为树抽象层级的控制机制并且能实现其高效控制,最终满足无人系统集群控制框架的高效、有效、可控等需求。

Description

一种基于行为树的无人系统集群控制方法
技术领域
本发明涉及无人系统集群控制领域,具体涉及一种基于行为树的无人系统集群控制方法。
背景技术
无人系统的控制模型需要同时具有反应性和模块化的特性。所谓反应性是指控制模型能快速有效地对外界环境变化做出反应,而模块化是指一个控制模型的组件可以被分割成多个子模块并能够重新组合的程度。
长期以来,有限状态机(FSM,Finite State Machine)一直是控制模型的标准选择。但是就如同早期编程语句中的Goto语句一样,FSM是单向控制跳转,这就会导致系统需要在反应性和模块化之间进行权衡。而为了使系统具有反应性,需要在组件之间进行许多次转换,而多次转换意味着需要多个单向控制跳转,从而损失模块化的性质。例如,如果删除一个组件,则需要修改组件的每个转换。因此,FSM并不适合作为无人系统集群的控制模型。
行为树(Behavior Tree,简称BT)是一种典型的控制模型,广泛应用于计算机游戏和机器人领域。与其他控制模型相比,BT具有模块化、层次性、反应性、可读性和可重用性等优点,同时行为树能兼顾FSM、包容模型和决策树的功能。在行为树的概念中,一个行为通常由一系列与任务无关的子行为组成。也就是说,在创建子行为时,设计者不需要关注行为树的控制流,以及接下来要执行哪个子行为等。因此,行为树作为无人系统集群的控制模型是非常合适的。
传统行为树的通信机制为黑板,而在实现方式上主要是使用共享变量。创建一棵行为树时会实例化一块黑板,树内的节点通过该黑板进行数据交换。黑板的数据是以“键—值”形式存储的,发送和接收的树节点通过对相同“键”的读取和写入,从而实现树内节点的通信。条件节点仅支持对黑板数据的读取,动作节点同时支持黑板数据的读取和写入,控制节点则不支持对黑板数据的读取和写入。
但是,作为大规模无人系统集群的控制模型,传统行为树的实现存在以下不足:
传统的以多线程方式实现的行为树模型采用的是时间驱动方式,性能较低;
传统行为树的黑板通信机制,只支持单棵树内部节点的信息传输,并不支持平台间的通信,无法应用于无人系统集群的控制;
在传统的行为树设计中,各无人系统只使用单棵树(主树和子树概念下最终实际运行也只存在一棵行为树)进行描述。如果无人系统的行为树比较复杂,那么行为树的结构就会可读性比较差。若要使用多棵行为树对无人系统的行为进行描述,那么传统的设计理念中缺乏相应的多棵树的管理机制;
传统行为树是面向单无人系统平台的,缺乏面向大规模异构无人系统集群的实现支撑。
发明内容
为了克服上述缺陷,提出了本发明,以提供解决或至少部分地解决缺乏面向大规模异构无人系统集群的实现支撑的技术问题的基于行为树的无人系统集群控制方法。
第一方面,提供一种基于行为树的无人系统集群,所述无人系统集群由多个无人系统平台、无人系统平台的树间黑板以及无人系统平台共同拥有的平台间黑板组成,每个无人系统平台内置至少一个既定任务对应的行为树引擎,所述行为树引擎由事件向量、行为树以及行为树对应的树内黑板组成;
所述无人系统平台,用于通过其内置的既定任务对应的行为树引擎执行所述既定任务;
所述无人系统平台共同拥有的平台间黑板,用于执行各无人系统平台间的数据共享任务;
所述无人系统平台的树间黑板,用于在同一个无人系统平台内执行各行为树间的数据共享任务;
所述行为树对应的树内黑板,用于在该行为树中执行各节点间的数据共享任务;
其中,所述行为树引擎中的行为树由事件向量中的事件进行驱动。
优选的,所述事件向量定义为vev=[(i,ni),(j,nj),...,(k,nk)],其中i,j,k分别为既定事件对应的动作节点编号,ni、nj、nk分别为动作节点i,j,k的事件索引;
所述行为树引擎由事件向量vev的开始逐一响应事件向量vev中的既定事件,既定事件响应完成后删除该既定事件。
优选的,所述行为树中的动作节点被设置为运行状态时,其父节点对其互斥节点向量中的每个动作节点执行挂起操作,其中,互为互斥节点的条件为两个动作节点的祖先节点为相同的非并行节点,且自此祖先节点向下路径中的各共同祖先节点中不存在并行节点。
优选的,当所述行为树中的节点使用等待接口wait时,若有其他节点调用通知接口notifyOne或通知接口notifyAll设定非约定键值时,则该节点仍为等待状态;若有其他节点调用通知接口notifyOne或通知接口notifyAll设定约定键值时,则该节点得到通知并继续执行。
优选的,所述无人系统平台共同拥有的平台间黑板的底层通信机制采用ActiveMessage。
优选的,所述无人系统集群,还包括:通知接口notifyOne、通知接口notifyAll和等待接口wait;
当节点调用通知接口notifyOne或通知接口notifyAll时,键k和值v被打包并发送到Active Message内核模块,无人系统平台通过Active Message内核模块接收到的消息后触发用户注册的回调函数,利用该回调函将所述键k和值v写入树间黑板的共享内存,并使用条件变量唤醒一个或所有调用等待接口wait等待该键k和值v的动作节点继续执行。
第二方面,提供一种基于所述基于行为树的无人系统集群的控制方法,所述基于行为树的无人系统集群的控制方法包括:
所述无人系统平台通过其内置的既定任务对应的行为树引擎执行所述既定任务;
所述无人系统平台共同拥有的平台间黑板执行各无人系统平台间的数据共享任务;
所述无人系统平台的树间黑板在同一个无人系统平台内执行各行为树间的数据共享任务;
所述行为树对应的树内黑板在该行为树中执行各节点间的数据共享任务;
其中,所述行为树引擎中的行为树由事件向量中的事件进行驱动。
本发明上述一个或多个技术方案,至少具有如下一种或多种有益效果:
本发明提供了一种基于行为树的无人系统集群控制方法,旨在解决如何满足无人系统集群控制框架的高效、有效、可控等需求的技术问题。所述无人系统集群由多个无人系统平台、无人系统平台的树间黑板以及无人系统平台共同拥有的平台间黑板组成,每个无人系统平台内置至少一个既定任务对应的行为树引擎,所述行为树引擎由事件向量、行为树以及行为树对应的树内黑板组成;该方案首先,驱动方式改为更符合事理的事件驱动,能有效解决性能问题;其次,创新地提出多模式弹性黑板,满足不同的需求和功能;再次,创造性地提出层级行为树概念,并设计了层级行为树的通信和管理机制,便于用户任务的层次化抽象,同时能提高行为树效率以及满足各模块不同频率的处理需求;最后,提供了面向大规模无人系统集群的行为树设计模式。
具体的,针对传统行为树时间驱动方式所产生的性能损失与反应性之间不可调和的矛盾,本发明中提供了行为树的事件驱动实现方式,从根本上解决了上述问题,既能保证行为树对关键事件的反应性,使其能及时响应外部和内部变化,又不会产生无变化情况下的额外性能开销。
为了满足无人系统集群的通信需求,本发明提出了多模式黑板以满足多层级行为树的树内、平台内树间和平台间的通信。并且为降低空间开销和提高行为树运行效率,设计了黑板的弹性扩展功能。
针对行为树无(真实)层级实现机制的问题和单级单树所不能满足的不同频的实际需求和执行效率低等问题,本发明提出了层级化行为树的概念,对行为树进行层级化抽象,形成具备自治能力的多树结构,满足了实际任务中各模块或者子树不同频率驱动的需求,也有效降低了各树的层深、规模,同时提供了一种基于多模式黑板的层级行为树的管理机制,实现对层级化行为树的高效管理。
附图说明
图1是根据本发明的一个实施例的基于行为树的无人系统集群的主要结构框图;
图2是本发明实施例中行为树示例示意图;
图3是本发明实施例中行为树tick信号的传递示例示意图;
图4是本发明实施例中行为树节点分类示例示意图;
图5是本发明实施例中行为树时间驱动示例示意图;
图6是本发明实施例中针对大规模无人系统集群的分布式行为树框架概述图;
图7是本发明实施例中行为树引擎和动作节点之间的同步示例示意图;
图8是本发明实施例中树内黑板示意图;
图9是本发明实施例中树间黑板目录和黑板内存的结构示例示意图;
图10是本发明实施例中平台间黑板的机制描述示意图;
图11是本发明实施例中层级化行为树周期性检查示意图;
图12是本发明实施例中notifyOne机制示意图;
图13是本发明实施例中notifyAll机制示意图;
图14是本发明实施例中应用案例中装载到各平台上的两级(3棵)行为树结构示例示意图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步的详细说明。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为了理解行为树的基本概念,以下对传统行为树的相关原理和设计进行简要介绍。
1)行为树概述
从形式上来说,行为树是一种有向的树状结构,其中的内部节点称为控制节点,叶节点称为执行节点。对于节点间的关系,我们使用父节点和子节点进行描述。根节点是没有父节点的控制节点,除此之外,其余节点有且仅有一个父节点。控制节点至少有一个子节点,行为树结构示例如图2所示。
2)行为树的驱动方式
传统行为树的执行是通过给定频率的时钟信号触发根节点运行而驱动的,即时间驱动,而每一次时钟信号的触发称为tick。根据行为树结构中各层父节点(控制节点)的执行算法,递归将该信号传递给其子节点(一个或多个)驱动该子节点的运行(当接收到信号时),行为树的tick信号传递示例如图3所示。
3)行为树的节点类型
行为树的概念中将其节点类型分为控制节点和执行节点两类。控制节点下细分为顺序节点(Sequence)、选择节点(Fallback)、并行节点(Parallel)和装饰节点(Decorator)四类,执行节点分为条件节点(Condition)和动作节点(Action)两种,具体分类如图4所示。本小节重点介绍各控制节点的控制算法和各节点的特性。
其中,顺序节点会从左到右tick所有子节点,如果子节点返回失败,则立刻返回失败,并挂起后续所有节点;如果返回成功,则继续执行直到最后一个节点;如果返回运行,则该节点返回运行,并挂起后续节点。
选择节点的目的是尝试不同的策略,直到我们发现一个可以成功的子节点。当该节点的tick方法被调用时,首先调用最左侧节点的tick方法,如果该节点返回成功,则立刻返回成功,并挂起后续所有节点;如果返回失败,则继续执行直到最后一个节点;如果返回运行,则返回运行,并挂起后续节点。若返回运行,普通选择节点重置下一个要执行的子项的索引,当下一次被tick时,从第一个子节点开始tick;而带记忆的选择节点下一次被tick时,从上一次离开时的子节点开始tick。
并行节点可同时运行多个子节点。在传统行为树模型中,并行节点需设置M值,当有M个子节点返回成功,该节点返回成功;当有N-M个子节点返回失败时,该节点返回失败;否则返回运行。
装饰节点只有一个子节点(控制节点或执行节点)。装饰节点对其子节点的状态进行修饰,或根据特定逻辑执行子节点的tick方法。
动作节点具体执行一个特定的子任务,如果该行为成功执行,则返回成功;如果无法完成则返回失败;如果正在进行中则返回运行。
条件节点负责对环境或者任务状态进行检查和判断,该节点不返回运行状态,且不改变任何变量或状态。条件节点可视作执行任务的规则,如无人系统电量的判断等。
4)行为树的通信机制
传统行为树的通信机制为黑板,而在实现方式上主要是使用共享变量。创建一棵行为树时会实例化一块黑板,树内的节点通过该黑板进行数据交换。黑板的数据是以“键—值”形式存储的,发送和接收的树节点通过对相同“键”的读取和写入,从而实现树内节点的通信。条件节点仅支持对黑板数据的读取,动作节点同时支持黑板数据的读取和写入,控制节点则不支持对黑板数据的读取和写入。
作为大规模无人系统集群的控制模型,传统行为树的实现存在以下三点不足:
时间驱动方式性能较低;
传统黑板通信不支持行为树之间以及无人系统平台之间的通信;
缺乏多棵行为树的层级式管理机制。
具体的:
1)时间驱动方式性能较低
传统行为树的实现采用时间驱动方式,即以固定频率tick根节点,进而递归地tick其子孙节点,从而完成行为树的运行。本小节通过一个无人系统平台执行任务的行为树示例来进行分析说明。该示例中的任务可描述为:当平台电量充足时,无人系统执行任务;当电量不足时,无人系统执行充电动作,待充电成功后再执行任务。根据任务设定,对该任务对应行为树中的各执行节点的返回状态进行说明,如表1所示。
表1节点返回状态说明
节点名称 节点类型 返回成功条件 返回失败条件 返回运行条件
电量是否充足 条件节点 电量充足 电量不足 ——
执行任务 动作节点 执行任务完毕 执行任务异常 未完成任务且未出现异常
充电 动作节点 充电完毕 充电异常 未充电完成且未出现异常
同时,根据任务设定,设计如图5所示的行为树结构。由图可知,根据无人系统平台的电量水平,会出现两个执行分支。
T时刻条件节点执行时,由于无人系统平台电量充足返回成功状态,此时的执行分支为顺序节点→选择节点→电量是否充足(条件节点)→执行任务(动作节点)。当T+δt时刻条件节点执行时,由于电量不足返回失败状态,此时的执行分支变为顺序节点→选择节点→电量是否充足(条件节点)→充电(动作节点)。
传统行为树通过以固定频率传递tick信号,检查各节点返回状态,使其自身保持对环境的反应性。可知,tick信号频率越高,对环境的改变反应越迅速,越能更快的切换分支以应对改变,同时防止出现行为树中无任何执行节点运行的情况。反之,对环境的反应越缓慢,有更大的概率出现无执行节点运行的状况。
显然,这种反应性的损失对于执行任务是不利的。为保持行为树的反应性,需要更高的tick频率,但是这又会造成不必要的执行性能损失。假定无人系统平台自满电状态下开始运行,那么很长一段时间内,无人系统平台的电量都在充足状态下,但是由于行为树的tick频率是预先设定的固定频率,当tick信号到来时,顺序节点、选择节点、电量是否充足节点依然会被执行,这就导致了执行性能损失,而且这种情况会随着行为树tick频率和结构深度的增加而愈演愈烈。
因此,为了保证行为树的反应性,能及时处理环境和条件的变化以及避免无执行节点运行的状况,需要提高tick频率;为了保证行为树的执行效率,需要降低tick频率。面对千变万化的实际复杂任务需求、环境变化等,传统行为树的时间驱动方式,存在反应性和执行效率之间的不可调和的矛盾。因此,传统行为树的时间驱动方式难以同时满足大规模无人系统集群的反应性和性能需求。
2)传统黑板通信不支持行为树之间、无人系统平台之间的通信需求
传统黑板只支持行为树的内部节点之间的通信,而对于大规模无人系统集群,不只需要树内节点间的通信,更需要行为树之间通信以及无人系统平台之间进行通信,才能满足系统集群的任务实现要求。因此,传统的黑板通信,难以满足大规模无人系统集群的通信需求。
3)无层级式管理机制
传统行为树的实际运用中对于任务层级的划分概念为主树和子树。一个行为树结构中可以包含一个主树和若干个子树,这样可以对任务进行树结构的分解、组合,实现任务层级的模块化和复用等。但也仅仅只是完成了概念上的行为树层级抽象,实际上还是一棵树对无人系统平台的行为进行刻画。
首先,主树和子树的概念,只是对于树结构的某些功能独立或者可复用的节点集合进行了概念上的包装,即看似有多个树、多个根节点,但在实际的行为树的执行结构中,只有主树的根节点为实际根节点,tick信号传递也只从此根节点开始。其次,主树和子树的概念对行为树的层级进行了抽象,但却没有对这种抽象进行相应的管理。这样在大规模无人系统集群的实际应用中就会出现如下两个问题:
i.在面向复杂任务的行为树的设计中,不可避免的会造成行为树层深较大,导致从根节点tick一次时的时间消耗和资源消耗增大。
ii.行为树中对于每个节点和每个任务子树的tick(如果被tick的话)是同频的,即不能满足行为树中不同的模块或者子树驱动频率不同的需求(比如不同无人系统平台端口的数据获取频率)。
综上可见,传统的行为树的层级化抽象实现方式难以满足大规模无人系统集群的层级化抽象和管理的需求。
针对上述问题,本发明旨在提供一种面向大规模异构无人系统集群的高效控制方法,为无人系统集群建立一个分布式行为树框架,该框架应当消除现有时间驱动方式的弊端,能支撑无人系统集群的通信需求,能提供对行为树抽象层级的控制机制并且能实现其高效控制,最终满足无人系统集群控制框架的高效、有效、可控等需求。
行为树在大规模无人系统集群中的应用是实现各种具体算法创新的技术基础,本发明旨在探索其实现的途径为无人系统集群建立一个分布式行为树框架,提供一种基于行为树的无人系统集群,所述无人系统集群由多个无人系统平台、无人系统平台的树间黑板以及无人系统平台共同拥有的平台间黑板组成,每个无人系统平台内置至少一个既定任务对应的行为树引擎,所述行为树引擎由事件向量、行为树以及行为树对应的树内黑板组成;
所述无人系统平台,用于通过其内置的既定任务对应的行为树引擎执行所述既定任务;
所述无人系统平台共同拥有的平台间黑板,用于执行各无人系统平台间的数据共享任务;
所述无人系统平台的树间黑板,用于在同一个无人系统平台内执行各行为树间的数据共享任务;
所述行为树对应的树内黑板,用于在该行为树中执行各节点间的数据共享任务;
其中,所述行为树引擎中的行为树由事件向量中的事件进行驱动。
具体的,本发明提出了一个针对多线程环境的事件驱动行为树实现。首先,本发明给出了事件和事件向量的定义,设计了行为树引擎与动作节点之间的同步机制。然后,设计了多模式黑板,其可有效解决树内部、树间、无人系统平台间的通信。树间通信涉及到弹性内存优化,可以根据容量需求动态扩展。在无人系统平台间通信中,我们引入了并行计算中的主动消息(Active Message)技术,以适应在实际通信环境中的应用。最后,引入了一种层级式的行为树管理方法,实现了基于树间黑板、Active Message和线程同步的跨树等待和通知机制。
本发明提出的针对大规模无人系统集群的分布式行为树框架概述图如图6所示,其中包括两个主要部分:行为树引擎和多模式黑板。
行为树引擎负责根据预定义的事件正确地驱动行为树。所有事件都按时间顺序存储在事件向量中,行为树引擎由该向量中的事件驱动。如果事件向量中没有事件,则行为树引擎将停止,然后释放处理器的计算资源。在本发明的框架中,当一个动作节点将其状态从运行更新为成功/失败或在黑板上写入键值时,就会生成一个新的事件。为了支持无人系统集群的应用,我们设计了多模式黑板,用于在节点间、树间和无人系统平台间进行数据传输。树内黑板只能用于在同一树中的节点之间共享数据。如果需要在不同的树之间传输数据,可以使用树间黑板。此外,平台间黑板是设计来支持无人系统平台之间的通信。这三种黑板从逻辑上形成了多模式黑板。行为树引擎由事件向量中的事件驱动,通过多模式黑板实现通信。以下将针对上述提到的三个方面的具体技术方案进行详细说明。
一、事件驱动的行为树引擎
行为树引擎是驱动整个树迭代的控制器,具体设计主要包括事件和事件向量的定义、行为树引擎和动作节点线程间的同步方法、互斥动作节点相关定义及实现共三个方面。
1.事件和事件向量
我们首先定义事件及其相关的数据结构。当一个动作节点的状态从运行变为成功/失败或写入某个黑板上的键值时,一个新的事件被认为发生了。对于动作节点i,它的动作定义为(i,ni),其中ni代表动作节点i的事件索引。ni初值为0,每次生成该节点的事件时增加1。进一步定义树的事件向量为vev=[(i,ni),(j,nj),...,(k,nk)],其中i,j,k分别为既定事件对应的动作节点编号,ni、nj、nk分别为动作节点i,j,k的事件索引;一个新的事件将被插入到vev的尾部,而行为树引擎将从vev开始处理该事件。
2.行为树引擎与动作节点线程之间的同步
在我们的框架中,行为树引擎的控制节点及条件节点和动作节点分别实现在不同的线程中,该实现方式可以提高并行节点的执行效率。因此,为了实现事件驱动机制,引擎线程与动作线程的同步就显得尤为重要。根据事件相关的数据结构,本发明设计了一种基于事件向量的同步机制,其核心思想如图7所示。我们使用类C语言的描述方式阐述整个事件驱动的过程。
如图7中(a)所示,类C语言函数前面的数字表示时间发生的先后顺序。假设有三个动作节点:动作节点1,动作节点2和动作节点3。它们调用push_back()方法将事件{e1,e2,e3}插入到共享事件向量中。然后,事件向量的第一个事件将首先被响应,并通知引擎tick根节点。执行tick后,事件向量的第一个事件将被擦除,并通知等待的动作节点,如图7中(b)所示。除非引擎的根节点返回终态(成功/失败)或者事件队列为空,否则会重复相同的过程,如图7中(c)和图7中(d)所示。
在算法1和算法2分别描述了行为树引擎和动作节点对事件的处理以及两者之间的同步过程。下面将根据伪代码对该部分技术方案进行说明。
Figure BDA0003101904890000101
算法1首先根据输入的行为树描述文件路径p创建行为树b,然后在引擎进入主循环之前,创建一个互斥量为τem的锁κe,用于引擎线程和动作节点线程之间的同步。在循环过程中(第3行-第9行),行为树的根节点首先被tick,并返回根节点的状态s。如果s是终态(成功/失败),将跳出while循环,引擎停机。否则,引擎线程将等待来自动作节点线程的通知信号,然后暂时解锁κe(第7行)。当接收到通知信号时,引擎将删除事件向量vev的第一个事件,并通过γecv的notify_all()函数来通知所有等待的动作节点线程。值得注意的是,τem、γecv和γacv在引擎线程和动作节点线程之间是共享的。
Figure BDA0003101904890000111
算法2展示了动作节点线程中的事件处理过程。当动作节点将其状态从运行更改为成功/失败或写入黑板键值时,算法2将被调用。首先,一个新的事件(i,ni)被创建并插入到vev的尾部。然后,我们根据互斥量锁τam创建锁κac,其中τam在动作节点线程之间共享。第3行—第7行将检查当前事件是否是下一个要处理的事件。如果是,则继续执行,否则此动作节点线程将等待引擎线程按照事件时序处理完正确的事件后等待引擎线程的通知。在第9行-第14行,动作节点线程将尝试锁定引擎,并在引擎等待时获得锁(算法1中的第7行)之后,事件编号ni将增加1,动作节点线程可以继续执行其功能,例如,设置节点状态或黑板键值。最后,动作节点线程将通过条件变量γecv的notify_one()函数来唤醒引擎线程。
3.互斥动作节点
为确保多线程行为树中各节点按照时序执行,有必要确保所有后续的动作节点在选中当前动作节点之前都已挂起。因此,我们提出互斥动作节点的概念。互斥动作节点是指不能在同一时间点运行的动作节点。
下面,我们按照行为树的执行逻辑定义互斥动作节点,即两个动作节点具有相同的非并行节点作为祖先节点,且自此祖先节点向下路径中的各共同祖先节点中不存在并行节点。我们进一步定义非互斥动作节点为:两个动作节点具有相同的并行节点作为祖先节点,且自此祖先节点向下路径中的各共同祖先节点中不存在非并行节点。
为了获取行为树中每个动作节点的互斥动作节点序列,我们提出了基本数据结构:互斥动作节点矩阵和互斥动作节点向量。动作节点互斥矩阵是一个bool类型的对称矩阵,用于保存一个行为树结构中两个动作节点间是否为互斥关系,互斥为1,不互斥为0。互斥动作节点向量存在于每一个动作节点中,用于保存当前所属动作节点的所有与之互斥的动作节点的指针。
以此在行为树构建完成后,会首先根据树结构生成互斥动作节点矩阵,然后依照此矩阵为每个动作节点生成其互斥动作节点向量。当一次tick发生时,若一个动作节点将被设置为运行状态,则其父节点(控制节点)首先对其互斥节点向量中的每个动作节点执行挂起操作,从而避免互斥节点动作节点的同时运行。
Figure BDA0003101904890000121
算法3展示了建造这两个结构的细节。首先,初始化动作节点互斥矩阵M和祖先队列图qanc,qanc以动作节点为键,以该动作节点的祖先序列为值。然后,它遍历树中的每个动作节点a∈A,其中A表示动作节点集。第2行-第8行展示了qanc的创建过程,其中a.getParent()返回动作节点a的父节点,利用qanc,在第9行-第11行,构造了互斥矩阵M。最后,根据互斥矩阵,为每个动作节点i建立互斥向量vi,rn
Figure BDA0003101904890000131
算法4给出了判断两个动作节点是否为互斥节点的细节。首先,获取ai和aj的父节点编号,分别存储在ki,par、kj,par中。如果ki,par和kj,par相等且为平行节点,则ai和aj互为互斥节点。否则,将检查ai和aj的祖先节点。其核心思想是首先提取qi,anc和qj,anc元素个数的最小值,用于控制检查共同祖先节点的循环次数。然后,从qi,anc和qj,anc各自的队列首部(即该树的根节点)开始比较,如果节点编号相同则继续进行循环判断,直到遇到编号不相同的祖先节点。此时,在qi,anc(或qj,anc)中该祖先节点的前一个祖先节点即为ai和aj的最亲缘的共同祖先节点,跳出循环。如果最亲缘共同祖先节点不是并行节点,那么这两个节点是互斥节点,否则是非互斥节点。
通过互斥动作矩阵和互斥动作节点,可以实现控制节点的挂起机制,即在设置某个动作节点为运行状态前,先将其互斥动作节点设置为挂起状态。当tick一个动作节点时,控制节点首先挂起其互斥动作节点。挂起过程是阻塞的,只有当互斥动作节点确实挂起时才返回。
二、多模式黑板通信
在行为树理论中,黑板用于在同一树的节点之间共享数据。在传统的黑板实现中,数据是以“键-值”对的形式存储的。本文采用setValue和getValue作为黑板的读写接口。例如,setValue(k,v,B)意味着在黑板B上写键k和值v。为了支持无人系统集群中行为树的应用,有必要将黑板扩展到树间和无人系统平台间的实现。因此,本发明提出了多模式黑板,包括树内黑板、树间黑板和平台间黑板。
树内黑板
树内黑板类似于传统黑板,主要用于树内节点之间的数据交换。考虑到行为树的实现主要集中在一个多线程进程中,将树内黑板设计为堆上的共享变量。同一树中的每个节点都可以通过指针访问内树黑板上的数据。如图8所示,这对(k,v)在堆中是一个共享变量,同一个进程中的所有执行节点都可以通过调用setValue(k,v,Binner-tree)和getValue(k,v,Binner-tree)来访问树内黑板。
树间黑板
树间黑板用于在同一无人系统平台内部不同树之间共享数据。在技术实现方面,树间黑板主要基于共享内存实现,其互斥访问依赖于信号量机制,如图9所示。为了尽可能节省内存资源,采用了弹性内存设计,其中树间黑板的大小可以动态扩展。
为了支持该设计,主要需要构建两个表:黑板目录和黑板内存,如图10所示。黑板目录包含两个主要部分,一个存储目录信息,另一个保存键和它们对应的黑板内存ID。在目录信息部分,种子编号是一个符号,用来创建一个新的黑板内存。每创建一个新的黑板内存,种子编数增加1。当前内存ID保存最新的黑板内存ID。黑板内存是固定大小的共享内存。当黑板内存不足以存储一个新的键值时,它会申请一个新的内存。这个过程对用户是透明的。
Figure BDA0003101904890000151
算法5介绍了写入树间黑板值的过程。首先,我们需要检查黑板目录(第1行)中是否存在黑板键k。如果存在,我们可以修改k及其对应的值(第2行-第12行),否则创建一个新的键(第13行-第18行)。当k存在时,其对应的值将被更新(第3行)。如果值更新成功,此函数返回成功。否则,意味着更新值占用的内存空间超过k所在黑板内存的剩余空间。然后从目录中去掉k,调用getCurrentMemID()获取当前黑板内存ID。之后,黑板键及其相应的值将被添加到存储空间(第9行)。如果添加成功,更新目录中的k及其对应的内存ID。第13行-第18行呈现了k不存在的情况,过程与第8行-第12行相同。如果当前黑板内存无法保存当前值,需要应用新的内存。在这种情况下,种子编号需要增加1,并根据种子扩展一个新的黑板内存。值v将存储在当前存储器中。这里假设每个值的大小不会超过黑板内存的容量。
Figure BDA0003101904890000161
算法6给出了从黑板上读出一个黑板键值的过程。与setValue过程相比,getValue只需要查询给定k(第3行)对应的值。如果k存在,返回其值并返回真,否则返回假。
平台间黑板
为了支持无人系统平台之间的数据交换,设计了平台间黑板。不同的无人系统平台可以在黑板上读写值。平台间黑板采用分布式的方式实现,即每个机器人都有一个共享内存来存储部分无人系统平台间黑板。当一个无人系统平台向另一个无人系统平台发送数据时,它调用setValue(k,v,d,Binter-robot),其中k和v表示键和值,d表示接收无人系统平台ID,Binter-robot表示指向无人系统平台间黑板的指针。当用户调用setValue接口函数时,k和v将被打包,d将被加入该包中。通过对现有工作的研究,我们认为Active Message非常适合作为平台间黑板的底层通信机制。将封装好的数据包通过Active Message发送给接收无人系统平台。在接收无人系统平台中,接收到的数据包将触发回调函数handler(),该函数已在无人系统平台中注册。handler()函数的具体功能包括两部分:将接收到的键和值写入本地共享内存,调用行为树节点注册的回调函数,如图10所示。在用户定义的回调函数中,一个典型的工作是调用getValue接口函数来获取本地共享内存中的键和值。
三、层级式多行为树管理
使用多个行为树描述任务比使用单一行为树具有更高的模块化和可维护性。实现行为树管理的关键是设计一个合理的同步机制,保多个行为树调度的正确性。本节提出了一种基于Active Message的主动通知机制,该机制可看作是一种多进程环境下的条件变量。
1.周期检查方式
本发明设计的行为树的实现中,同一无人系统平台内树之间的通信依赖于树间黑板。因此,一种直观的实现层级化行为树管理的方法是让一棵树定期检查其他树所写的树间黑板上的某个约定的键值对,如图11所示。上级行为树中的某些执行节点持续检查由下级行为树中的执行节点写入的约定的黑板键值对。当下级行为树中的执行节点完成其任务时,它写入约定的黑板键的值,上级行为树中的节点将读取该值并执行相应的控制流。然而,这并不是一种高效的层级化行为树的管理方法,因为上级行为树需要不断地检查树间黑板上的值。它降低了黑板的访问效率,浪费了计算资源。因此,更好的解决方案是,当来自下级行为树的节点在树间黑板上读取到非约定的值时,它可以等待。当下级行为树在树间的黑板上写入约定的黑板键值时,上级行为树将得到通知并继续执行。
2.主动通知方式
为了满足层级化行为树的管理,本发明设计了三个树间通知接口:notifyOne、notifyAll和wait。notifyOne(k,v,Binter-tree)用于唤醒其他树上调用wait来等待相同的键k的一个节点,如图12所示。当一个节点调用wait(k,v,Binter-tree)时,相应的线程将被阻塞,直到某些节点调用notifyOne或notifyAll。类似地,notifyAll(k,v,Binter-tree)可以唤醒所有等待键k的节点,如图13所示。
具体的实现是,当节点调用notifyOne或notifyAll时,键k和值v被打包并发送到Active Message内核模块。在接收者无人系统平台中,接收到的消息将触发用户注册的回调函数,该回调函数主要完成两件事:将“键-值”对写入树间黑板的共享内存,并使用条件变量唤醒一个或所有正在等待该“键-值”对的动作节点。
四、面向无人系统集群的行为树设计模式
除了技术内容外,本发明还给出了一种针对无人系统集群应用的行为树设计模式。考虑到可扩展性和设计复杂性,单独为每个无人系统平台设计行为树结构是不现实和低效的。我们借鉴了并行计算的“单程序多数据”设计,其核心思想是同一程序运行在不同的进程上,每个进程根据不同的数据输入执行相应的子任务。基于“单程序多数据”思想,我们提出每个无人系统平台上的行为树应具有相同的结构。每个行为树节点都是数据驱动的,即根据不同的输入信息显示不同的行为。
本发明是面向大规模异构无人系统集群的控制方法,因此最好的实例是一个大规模异构无人系统集群的应用案例,在如图1所示的应用环境中,系统配置:
1.无人系统集群由N个无人系统平台构成,N可为任意大于0的正整数;
2.各平台可根据任务需要包含多个行为树,每个行为树包含1个树内黑板,每个平台包含1个树间黑板,集群所有平台共享1个平台间黑板;
3.各平台的行为树具有相同的结构。
案例描述:
图14给出了一个典型的两级行为树案例,也可根据实际应用需要增加层级。
该行为树的执行过程为:首先,无人系统平台均从根节点开始执行,依次执行到上级行为树的最左侧条件节点“电量是否充足”。初始时刻,电量充足,启动“执行任务”动作节点,该节点会启动一棵下级行为树,并调用wait等待。在下级行为树中,首先判断“任务路径是否有效”。第一次执行时,任务路径并没有生成,因此该动作节点此时返回失败。下级行为树执行“任务路径规划”动作节点规划任务路径。此时注意,该动作节点会根据无人系统平台的具体类型运行相应的路径规划算法,如无人机、无人车、无人艇运行的路径规划算法一般不同。同时,如果需要多个平台协同路径规划,则可在此节点中调用平台间黑板进行数据传输。当路径规划完成后,该动作节点的状态由运行切换为成功,此时将产生事件,并触发该下级行为树从根节点的一次执行。同时,路径规划的结果可写到树内黑板中,用以传递给“任务路径跟踪”动作节点。在整棵树的执行过程中,任务路径已经有效,因此将执行“任务路径追踪”动作节点。该节点是根据本平台的动力学约束展开对树内黑板上的规划路径进行追踪。路径追踪会消耗能量(如电池电量、燃油等)。当能量不足时,任务路径追踪节点会通过notifyOne/notifyAll函数使用树间黑板唤醒上级行为树的“执行任务”动作节点,然后调用wait等待。上级行为树wait被唤醒后,根据黑板状态返回成功或失败。该节点无论返回成功或失败均会产生一次事件,并触发该上级行为树从根节点的一次执行。在执行中,上级行为树的“能量是否充足”节点返回失败,从而触发“返回”节点的执行。返回节点将启动下级行为树,具体过程与“执行任务”动作节点类似,不再重复赘述。
基于同一发明构思,提供一种基于所述基于行为树的无人系统集群的控制方法,所述基于行为树的无人系统集群的控制方法包括:
所述无人系统平台通过其内置的既定任务对应的行为树引擎执行所述既定任务;
所述无人系统平台共同拥有的平台间黑板执行各无人系统平台间的数据共享任务;
所述无人系统平台的树间黑板在同一个无人系统平台内执行各行为树间的数据共享任务;
所述行为树对应的树内黑板在该行为树中执行各节点间的数据共享任务;
其中,所述行为树引擎中的行为树由事件向量中的事件进行驱动。
需要指出的是,尽管上述实施例中将各个步骤按照特定的先后顺序进行了描述,但是本领域技术人员可以理解,为了实现本发明的效果,不同的步骤之间并非必须按照这样的顺序执行,其可以同时(并行)执行或以其他顺序执行,这些变化都在本发明的保护范围之内。
上述基于所述基于行为树的无人系统集群的控制方法以用于执行图1所示的基于所述基于行为树的无人系统集群实施例,两者的技术原理、所解决的技术问题及产生的技术效果相似,本技术领域技术人员可以清楚地了解到,为了描述的方便和简洁,基于所述基于行为树的无人系统集群的具体工作过程及有关说明,可以参考基于所述基于行为树的无人系统集群的实施例所描述的内容,此处不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。

Claims (4)

1.一种基于行为树的无人系统集群,其特征在于,所述无人系统集群由多个无人系统平台、无人系统平台的树间黑板以及无人系统平台共同拥有的平台间黑板组成,每个无人系统平台内置至少一个既定任务对应的行为树引擎,所述行为树引擎由事件向量、行为树以及行为树对应的树内黑板组成;
所述无人系统平台,用于通过其内置的既定任务对应的行为树引擎执行所述既定任务;
所述无人系统平台共同拥有的平台间黑板,用于执行各无人系统平台间的数据共享任务;
所述无人系统平台的树间黑板,用于在同一个无人系统平台内执行各行为树间的数据共享任务;
所述行为树对应的树内黑板,用于在该行为树中执行各节点间的数据共享任务;
其中,所述行为树引擎中的行为树由事件向量中的事件进行驱动;
所述事件向量定义为vev=[(i,ni),(j,nj),...,(k,nk)],其中i,j,k分别为既定事件对应的动作节点编号,ni、nj、nk分别为动作节点i,j,k的事件索引;
所述行为树引擎由事件向量vev的开始逐一响应事件向量vev中的既定事件,既定事件响应完成后删除该既定事件;
所述行为树中的动作节点被设置为运行状态时,其父节点对其互斥节点向量中的每个动作节点执行挂起操作,其中,互为互斥节点的条件为两个动作节点的祖先节点为相同的非并行节点,且自此祖先节点向下路径中的各共同祖先节点中不存在并行节点;
当所述行为树中的节点使用等待接口wait时,若有其他节点调用通知接口notifyOne或通知接口notifyAll设定非约定键值时,则该节点仍为等待状态;若有其他节点调用通知接口notifyOne或通知接口notifyAll设定约定键值时,则该节点得到通知并继续执行。
2.如权利要求1所述的无人系统集群,其特征在于,所述无人系统平台共同拥有的平台间黑板的底层通信机制采用Active Message。
3.如权利要求1所述的无人系统集群,其特征在于,所述无人系统集群,还包括:通知接口notifyOne、通知接口notifyAll和等待接口wait;
当节点调用通知接口notifyOne或通知接口notifyAll时,键k和值v被打包并发送到Active Message内核模块,无人系统平台通过Active Message内核模块接收到的消息将触发用户注册的回调函数,利用该回调函将所述键k和值v写入树间黑板的共享内存,并使用条件变量唤醒一个或所有调用等待接口wait等待该键k和值v的动作节点继续执行。
4.一种基于权利要求1-3任一项所述的基于行为树的无人系统集群的控制方法,其特征在于,所述方法包括:
所述无人系统平台通过其内置的既定任务对应的行为树引擎执行所述既定任务;
所述无人系统平台共同拥有的平台间黑板执行各无人系统平台间的数据共享任务;
所述无人系统平台的树间黑板在同一个无人系统平台内执行各行为树间的数据共享任务;
所述行为树对应的树内黑板在该行为树中执行各节点间的数据共享任务;
其中,所述行为树引擎中的行为树由事件向量中的事件进行驱动。
CN202110625204.4A 2021-06-04 2021-06-04 一种基于行为树的无人系统集群控制方法 Active CN113534662B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110625204.4A CN113534662B (zh) 2021-06-04 2021-06-04 一种基于行为树的无人系统集群控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110625204.4A CN113534662B (zh) 2021-06-04 2021-06-04 一种基于行为树的无人系统集群控制方法

Publications (2)

Publication Number Publication Date
CN113534662A CN113534662A (zh) 2021-10-22
CN113534662B true CN113534662B (zh) 2022-12-02

Family

ID=78095151

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110625204.4A Active CN113534662B (zh) 2021-06-04 2021-06-04 一种基于行为树的无人系统集群控制方法

Country Status (1)

Country Link
CN (1) CN113534662B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115454587A (zh) * 2022-07-25 2022-12-09 中国人民解放军军事科学院国防科技创新研究院 智能卫星自主任务管理架构及方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8758125B2 (en) * 2009-07-24 2014-06-24 Wms Gaming, Inc. Controlling event-driven behavior of wagering game objects
CN105630578A (zh) * 2015-12-24 2016-06-01 中国人民解放军海军航空工程学院 一种基于分布式多Agent系统的作战仿真引擎
CN106250100B (zh) * 2016-08-15 2018-05-11 腾讯科技(深圳)有限公司 系统逻辑控制方法及装置
CN106933246B (zh) * 2017-03-29 2020-04-14 厦门大学 一种多无人机的复杂任务规划方法
CN109807903B (zh) * 2019-04-10 2021-04-02 博众精工科技股份有限公司 一种机器人控制方法、装置、设备和介质
CN112307622B (zh) * 2020-10-30 2024-05-17 中国兵器科学研究院 一种用于计算机生成兵力的自主规划系统及规划方法
CN112549029B (zh) * 2020-12-03 2022-05-27 天津(滨海)人工智能军民融合创新中心 一种基于行为树的机器人行为控制方法及装置
CN112381454B (zh) * 2020-12-04 2023-10-31 中国科学院自动化研究所 基于角色的多智能体任务协同系统
CN112882930B (zh) * 2021-02-04 2023-09-26 网易(杭州)网络有限公司 自动化测试方法、装置、存储介质及电子设备
CN112801540B (zh) * 2021-02-24 2023-12-05 中国人民解放军国防科技大学 基于无人集群的智能协同架构设计方法

Also Published As

Publication number Publication date
CN113534662A (zh) 2021-10-22

Similar Documents

Publication Publication Date Title
Davis The architecture and system method of DDM1: A recursively structured data driven machine
Bruno et al. Process-translatable Petri nets for the rapid prototyping of process control systems
CN102520925B (zh) Aadl2tasm模型转换方法
WO2021008258A1 (zh) 协处理器的数据处理路径中的数据流动加速构件及其方法
Morari et al. Scaling irregular applications through data aggregation and software multithreading
CN106095552B (zh) 一种基于i/o去重的多任务图处理方法及系统
CN113534662B (zh) 一种基于行为树的无人系统集群控制方法
Bruno et al. Petri-net based simulation of manufacturing cells
Hu et al. Component-based hierarchical state machine—A reusable and flexible game AI technology
Merz et al. Control system framework for autonomous robots based on extended state machines
Wu et al. micros. bt: An event-driven behavior tree framework for swarm robots
McKay et al. MULTI-a LISP based multiprocessing system
Montangero et al. Two-level control structure for nondeterministic programming
Loogen Programming language constructs
Farrell et al. A concurrent computer architecture and a ring based implementation
Chiang Programming parallel apriori algorithms for mining association rules
Su et al. Graphu: A unified vertex-centric parallel graph processing platform
Nikhil Id: A language with implicit parallelism
Wexler et al. Solving problems with transputers: background and experience
CN117032999B (zh) 一种基于异步运行时的cpu-gpu协同调度方法及装置
CN111475684B (zh) 数据处理网络系统及其计算图生成方法
CN115639982B (zh) 一种基于信号量的并发程序的执行演示方法和系统
Alpan et al. Synthesis of a closed-loop combined plant and controller model
Lin Advances in parallel programming for electronic design automation
Sköld et al. Rule contexts in active databases: A mechanism for dynamic rule grouping

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