BehaviorTree.CPP行为树BT的介绍(一)
2024-09-05 00:40:48
节点类型
- ControlNode是可以具有1到N个子节点的节点。一旦接收到
tick
,tick
可以传播到一个或多个子节点。 - DecoratorNodes与
ControlNode
相似,但只能有一个子节点。 - ActionNode是叶子且没有子节点。用户应该实现自己的
ActionNode
来执行实际的任务。 - ConditionNode与
ActionNode
一样,但是总是atomic【原子】
和synchronous【同步】
,即它们不得返回RUNNING。它们不应更改系统的状态。
第一个ControlNode:Sequence[序列]
最基本且最常用的ControlNode
:SequenceNode
。
ControlNode
的子节点始终是有序的;执行顺序是从左到右。
简而言之:
- 如果子节点返回
SUCCESS
,则tick下一个 - 如果一个子节点返回
FAILURE
,则子节点不再去tick
,并且该序列返回FAILURE
。 - 如果所有子节点返回
SUCCESS
,则序列也返回SUCCESS
。
Decorators[装饰器]
根据DecoratorNode
的类型可以取决该节点的目的:
- 转换从子节点接收到的结果
- 停止执行子节点
- 根据
Decorators
的类型去重复的tick
子节点
第二个ControlNode:Fallback[后备]
FallbackNodes
(也称为“选择器Selectors
”)是可以表达备用策略的节点,顾名思义,如果子节点返回FAILURE
,下一步改怎么做。
按照顺序tick
子节点,并:
- 如果子节点返回
FAILURE
,则tick
下一个。 - 如果子节点返回
SUCCESS
,则不再tick
任何子节点并且Fallback
返回SUCCESS
。 - 如果所有子节点返回
FAILURE
,则Fallback
也返回FAILURE
。
最新文章
- 安装yum
- 如何自己编写一个easyui插件续
- asihttprequest本机调试时正常,发布后闪退
- [Buzz.Today]2013.08.06
- alfresco 5.0 document
- qt 拖拽 修改大小(使用了nativeEvent和winEvent)
- ORACLE处理用户进程大剖析[阅读]
- mybatis取数据库为null的字段
- eclipse中的项目为什么无法添加到tomcat中?
- 1.写页面 2.css的继承属性有哪些 3.margin对布局的影响
- PHP实现中文字符串截取无乱码
- Solr实现 并集式、多值、复杂 过滤查询的权限【转】
- python学习笔记2-dict
- 用 Qt Creator 开发非 Qt 的 C/C++ 程序
- 20145221 《Java程序设计》第十周学习总结
- spring 添加controller返回值绑定
- Kail Linux渗透测试之测试工具Armitage
- Arduino I2C + 温湿度传感器AM2321
- Python 3基础教程32-正则
- 确保VDI顺利部署 试点项目是关键
热门文章
- Python中的sys.stdin和input、sys.stdout与print--附带讲解剑指offer42-连续子数组的最大和
- python 工具箱
- 前端HTML元素的类型名称
- 改善深层神经网络-week1编程题(GradientChecking)
- 第五次Alpha Scrum Meeting
- 如何用PADS进行PCB设计?这6步就够了
- 电脑cmd命令快速查看连接过的WIFI密码信息
- 洛谷 P4587 [FJOI2016]神秘数
- 并发编程从零开始(十一)-Atomic类
- .Net(c#)汉字和Unicode编码互相转换实例