行为树BehaviorTree

主要依托于BehaviorTree.CPP进行介绍。

1 基本概念

1.1 是什么与用来做什么

官网 https://www.behaviortree.dev/docs/learn-the-basics/BT_basics
Unlike a Finite State Machine, a behavior Tree is a tree of hierarchical nodes that controls the flow of execution of “tasks”.
用于任务流控制的多层节点树。不是有限状态机。(有限状态机不能表示同时做多件事情,任务流可能会出现同时做多件事情,都结束后执行另外一件事情,任务流的本质是单起点有向图)

BehaviorTree.CPP 是一个c++库,能够比较方便的集成到应用中。

1.2 tick和node

1 tick (时间步脉冲,类似于bpmn的token)
每一个tick都会从tree的根节点root传递到叶节点leaf。

2 每个节点收到tick后会执行callback,并返回状态
SUCCESS
FAILURE
RUNNING

3 节点会传递tick给其子节点,每个节点类型都有其规则来确定是否,何时或多少次数的传递tick给某一个子节点。

4 叶节点。具体执行某个任务的节点,Action nodes是最普遍的叶节点。

1.3 节点类型

节点分为3类,控制节点,装饰节点,叶节点,其中叶节点是负责执行具体事务的节点,其它节点的作用是流程控制。根据功能的区别,每一种节点还可以继续细分。

叶节点分为条件节点与动作节点。
控制节点可以分顺序节点等。
在这里插入图片描述

节点类型说明
ControlNode 控制节点常用节点类型为顺序节点
DecoratorNode 装饰节点可修改子节点的返回,可多次tick子节点; Retry和 Inverter类型节点
ConditionNode 条件节点不会返回running
ActionNode 动作节点执行某个任务的节点,分为同步和异步,同步会阻塞直到结束,返回 SUCCESS or FAILURE ,异步可能会返回RUNNING

1.3.1 控制节点

1)顺序节点
顺序执行。如果全部成功则执行成功,如果一个失败则不执行后续节点,直接返回失败。
顺序执行,直到失败返回失败,如果全部成功返回成功。
相当于以下结构:

if( activity1 ){if( activity2 ){if(activity3  ){return success;} else{return failure;}} else{return failure;}
} else{return failure;
}

2)Fallback节点。
顺序执行,直到成功返回成功,如果全部失败返回失败。
在行为树(Behavior Tree)的上下文中,FallbackNodes 通常被用于创建一个"或"(OR)逻辑:子节点将按照特定的顺序执行,只要有一个子节点成功(返回SUCCESS),则整个 FallbackNode 也被视为成功,并且不会进一步执行其它的子节点。但是,如果所有子节点都失败了(返回FAILURE),则 FallbackNode 本身也会返回 FAILURE。
相当于以下结构:

if( activity1 ){return success;
} else{if( activity2 ){return success;} else{if(activity3  ){return success;} else{return failure;}}
}

2 BehaviorTree.CPP 4.5使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/26133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索正则表达式的神奇魅力

正则表达式 正则表达式,如同一位技艺精湛的艺术家,能够以极致的精准和优雅,雕刻出你想要的文本形态。它的魅力在于其简练而灵活的语法,让你得以轻松地在庞杂的文字丛林中捕捉目标。 无论是验证数据格式的合法性、从复杂文本中提…

AWS概述

AWS概述EMR Serverless Aamzon Web Services提供了一系列全球范围的云产品,包括计算、存储、数据库、分析、网络、移动、开发工具、管理工具、IoT、安全和企业应用:按需交付、及时可用、采用随用随付的定价模式。你可以畅享200多种服务,从数据…

乡村振兴的乡村基础设施建设:完善基础设施,提升乡村生活品质,打造宜居宜业的美丽乡村

摘要:乡村振兴是新时代中国特色社会主义“三农”工作的重要内容,而乡村基础设施建设作为乡村振兴的基石,对于提升乡村生活品质、打造宜居宜业的美丽乡村具有至关重要的意义。本文从乡村基础设施建设的必要性出发,分析了当前乡村基…

用GAN网络生成彩票号码

本文将详细解析如何使用生成对抗网络(GAN)来生成彩票号码。我们将介绍代码的每个部分,并给出详细注释,帮助读者理解整个过程。效果如下: 导入依赖 首先,我们需要导入所需的库。 import numpy as np import pandas as pd import torch import torch.nn as nn import t…

区分POJO、DTO、DO、VO、BO、PO、Entity

简述: VO 用于后端向前端传输数据; DTO用于前端向后端传输数据; BO用于微服务之间传输数据; PO等同于Entity,DO是Entity的一种,三者用于表示数据库的一条记录,通常用Entity。 (…

14年后 苹果终于推出iPad原生计算器应用

迄今为止,在WWDC 2024大会上,新增的计算器应用获得了最热烈的掌声。iOS 官方计算器应用程序终于要登陆大屏幕了。该功能利用额外的屏幕空间带来了公司无法在 iPhone 上实现的新功能。其中最大的亮点是新增了"数学笔记"功能。新增的功能可以帮你…

酶酵母展示技术简介

酵母展示技术(Yeast Display Technology)是指将酶序列/酶突变文库序列与凝集素Aga2p融合表达,Aga2p蛋白亚基通过两个二硫键与固定在酵母细胞壁上的Aga1p 蛋白亚基结合(即载体蛋白将蛋白酶(带有特定标签)以活…

黑豹程序员 堆和栈

简单变量及作用域 main()   int x1; show ()   int x2 执行步骤: 第1步:main()函数是程序入口,JVM先执行,在栈内存中开辟一个空间,存放int类型变量x,同时附值1。 第2步:JVM执行show()函…

c++/c中野指针和悬空指针的示例

目录 一、野指针的概念 二、野指针示例 三、悬空指针的概念 四、悬空指针示例 1.指针释放后未置空 2.返回栈内存地址的指针 一、野指针的概念 野指针是指尚未初始化的指针,它指向的地址是未知的、不确定的、随机的。这种指针在使用时可能导致程序崩溃、数据损…

Kafka性能优化策略综述:提升吞吐量与可靠性

Kafka性能优化策略综述:提升吞吐量与可靠性 优化 Kafka 的性能可以从多个方面入手,包括配置调优、架构设计和硬件资源优化。下面详细介绍一些常用的优化策略: 1. 分区设计 增加分区数量:更多的分区意味着更高的并行处理能力&am…

ZDH-智能营销-标签模块

目录 主题 项目源码 预览地址 安装包下载地址 标签模块 什么是标签 标签场景分类 标签设计 标签按照场景做了分类,但是运营人员需要感知到吗 标签按照场景做了分类,底层的计算引擎是否需要划分? 标签模块,是否需要涉及…

openresty安装并使用lua进行业务逻辑处理

OpenResty 基础教程及Lua动态脚本实现 OpenResty 简介 OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,它将 Nginx 的 C 模块和 Lua 脚本相结合,提供了一个强大的 Web 应用服务器和反向代理服务器。OpenResty 特别适合处理高并发的 Web 应用&am…

爽快,通透,自洽

那些消耗你的人和事,多看一眼都是你的不对。不必过度为他人提供情绪价值,可以理解别人的处境,但边界感很重要。让别人开心不是你的责任。控制情绪不是让我们在生活中隐藏情绪,而是允许自己有情绪,并做自己情绪的主人。…

最新thinkphp5内核全开源女神赢口红H5公众号版第五版(100%可经营)

最新thinkphp5内核全开源女神赢口红H5公众号版第五版(100%可经营) 搭建教程 1、程序为thinkPHP5开发 php版本要求5.6!不支持虚拟主机! 2、上传程序到您的根目录!导入m213.sql文件!修改数据库配置文件app…

WordPress模板推荐

WordPress外贸主题 wordpress跨境电商独立站主题,wordpress外贸建站模板。 手机配件wordpress外贸网站模板 充电器、移动电源、手机膜、手机电池、手机壳、手机转接头等手机配件wordpress外贸网站模板。 毛巾WordPress外贸主题 毛巾、面巾、婴童毛巾、浴巾、方巾、…

【深度学习】【NLP】Bert理论,代码

论文 : https://arxiv.org/abs/1810.04805 文章目录 一、Bert理论BERT 模型公式1. 输入表示 (Input Representation)2. 自注意力机制 (Self-Attention Mechanism)3. Transformer 层 (Transformer Layer) 二、便于理解Bert的代码1. 自注意力机制2. Transformer 层3. …

2024 AEE | 风丘科技将亮相日本爱知国际会展中心——共同创造!

2024年名古屋汽车工程博览会(Automotive Engineering Exposition 2024 NAGOYA)将于7月17-19日在日本爱知县国际展示场(Aichi Sky Expo)开展。本展会是专门为活跃在汽车行业的工程师和研究人员举办的汽车技术展览,汇聚了…

Python办公MySQL(一):安装MySQL以及Navicat可视化工具(附送Navicat到期解决方法)

目录 专栏导读1、下载 MySQL Community Server2、安装3、安装Navicat4、连接刚刚安装的MySQL5、创建一个数据库方法1方法2 6、创建一张表方法1:准备一个test文件方法2: Navicat到期解决总结 专栏导读 🌸 欢迎来到Python办公自动化专栏—Pytho…

干货 | 2024元宇宙技术融合与新质生产力的创新实践(免费下载)

【1】关注本公众号,转发当前文章到微信朋友圈 【2】私信发送 【3】获取本方案PDF下载链接,直接下载即可。 如需下载本方案PPT/WORD原格式,请加入微信扫描以下方案驿站知识星球,获取上万份PPT/WORD解决方案!&#xff…

Craig Federighi 和 John Giannandrea 在 WWDC 上谈论苹果智能技术

WWDC 主题演讲结束后,苹果公司的克雷格-费德里吉(Craig Federighi)和约翰-吉安南德雷亚(John Giannandrea)坐下来,更深入地讨论了苹果智能公司在人工智能方面所做的努力,包括该公司是如何训练模…