行为树(BT)笔记(一):BehaviorTree.CPP库简介

BehaviorTree.CPP库

该C++库提供了创建行为树的框架,它设计灵活,易于快速使用。

尽管我们主要是用在机器人身上,但你也能使用该库为游戏创建AI,或者在你的应用中取代有限状态机。

BehaviorTree.CPP库具备许多有趣的功能:

  • 它能异步操作,即非阻塞,第一类公民;
  • 在运行时创建树,它允许使用文本(XML)表示;
  • 可以将静态链接到自定义TreeNodes或将它们转换为在运行时加载的插件;
  • 它包含一个日志/分析基础结构,允许用户可视化,记录,回放和分析状态转换。

ReadTheDocs

 

什么是行为树(BT)?

行为树(BT)是一种构建自主代理(例如机器人或计算机游戏中的虚拟实体)中的不同任务之间的切换的方式。

BT是创建模块化和反应性复杂系统的一种非常有效的方式。这些属性在许多应用程序中至关重要,这导致BT从计算机游戏编程扩展到AI和机器人的许多分支。

如果您已经熟悉有限状态机(FSM),您将轻松掌握大多数概念,但希望您会发现BT更具表现力且更容易推理。

与有限状态机相比,行为树的主要优点是:

  • 它们内部是分层的:这意味着我们可以组成 复杂的行为,包括整个树作为更大树的子分支。例如,行为“获取啤酒”可以在其一个节点中重用树“抓取对象”。
  • 它们的图形表示具有语义含义:更容易“读取”BT并理解相应的工作流程。通过比较,FSM中的状态转换在文本和图形表示中都难以理解。
  • 它们更具表现力:准备使用ControlNodes和DecoratorNodes可以表达更复杂的控制流。用户可以使用他/她自己的自定义节点扩展“词汇表”。

 

为什么使用行为树(或者有限状态机)?

在许多的软件系统中,机器人是一个重要的例子,它本身就很复杂;

管理复杂性,异构性和可伸缩性的常用方法是使用组件基础软件工程的概念 。

任何现有的机器人中间件都采用非正式或正式的方式,是ROSYARP和 SmartSoft的一些值得注意的例子。

一个“好的”软件架构应该具备以下特征:

  • 模块化
  • 组件的复用性
  • 组合性
  • 良好的关注点分离

如果我们一开始没记住这些概念,那么我们就会创建高度耦合到特定应用程序的软件模块/组件,而不是可重用的。

通常,协调的关注与计算混合在一起。换句话说,人们解决协调行动和在当地做出决策的问题。

业务逻辑在许多位置“扩散”,开发人员很难对其进行推理并调试控制流中的错误

为了实现关注点的强烈分离,最好将业务逻辑集中在一个位置。

有限状态机是专门为此目标而创建的,但近年来行为树受到欢迎,特别是在游戏行业。

 

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值