行为树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,一经查实,立即删除!

相关文章

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

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

用GAN网络生成彩票号码

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

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

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

黑豹程序员 堆和栈

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

ZDH-智能营销-标签模块

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

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

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

WordPress模板推荐

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

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)坐下来,更深入地讨论了苹果智能公司在人工智能方面所做的努力,包括该公司是如何训练模…

三高系统的架构设计方案:高并发、高可用、高性能

文章目录 一、互联网系统三高概述1、互联网的三高2、高并发3、高可用4、高性能 二、高并发、高性能技术解决方案1、多高的并发才算高并发?2、水平扩展3、负载均衡思想4、缓存思想5、池化复用思想6、异步思想7、预处理-惰性更新思想8、分而治之思想 三、高可用技术解…

BCZYYb(钡铈锆钇镱)主要用作电解质 我国技术研究与生产步伐正在加快

BCZYYb(钡铈锆钇镱)主要用作电解质 我国技术研究与生产步伐正在加快 BCZYYb,钡铈锆钇镱氧化物,钙钛矿结构,外观为白色至浅黄色粉末状,主要用作电解质,功能是传输离子,具有化学稳定性…

硬核新品!M4E EDU民航考培一体无人机

天途上新啦! 应我国民用无人机首项强制性国家标准《民用无人驾驶航空器系统安全要求》,天途对现有小型无人机训练机的飞控、电池、感知避障和电子围栏等软硬件全面升级设计,严格按国标GB42590-2023规范生产。 M4E EDU四轴多旋翼无人机是天途…

LabVIEW处理大量数据时,怎样确保数据的准确性和完整性?

在LabVIEW处理中,确保大量数据的准确性和完整性至关重要。以下是详细的多角度分析和建议,以确保在LabVIEW中处理大量数据时,数据的准确性和完整性: 1. 数据采集阶段 1.1 高精度硬件选择 选择高精度的数据采集硬件,如…

[数据集][目标检测]变电站火灾检测电力场景烟雾明火检测数据集VOC+YOLO格式140张2类别真实场景非PS合成

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):140 标注数量(xml文件个数):140 标注数量(txt文件个数):140 标注类别…

服务部署:使用docker部署开源Xxl-Job任务调度平台项目

一、项目构建 1、从gitee上下载源码:xxl-job: 一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。https://gitee.com/xuxueli0323/xxl-job 2、本地使用…

wordpress轻量免费主题

WordPress建站公司 适合提供WordPress建站服务的公司或个体(个人)工作室使用的WordPress建站公司主题模板。 https://www.jianzhanpress.com/?p545 首屏大图红色简洁wordpress主题 首屏大图红色简洁wordpress主题,非常地高端大气上档次,可用于多个行…

轻松驾驭视频节奏:灵活调整视频播放速度,让视频内容更出彩!

视频已经成为了我们生活中不可或缺的一部分。无论是观看电影、电视剧,还是浏览短视频、直播内容,我们都希望能够根据自己的喜好和需求来调整视频的播放速度,甚至精确控制每一秒的播放内容。那么,如何轻松实现这一愿望呢&#xff1…

Pytorch 实现简单的 线性回归 算法

Pytorch实现简单的线性回归算法 简单 tensor的运算 Pytorch涉及的基本数据类型是tensor(张量)和Autograd(自动微分变量) import torch x torch.rand(5, 3) #产生一个5*3的tensor,在 [0,1) 之间随机取值 y torch.o…