mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
932 字
5 分钟
Behavior Tree 介绍

关于(此部分博主套用官方介绍BehaviorTree#

关于此库#

这个 C++ 库提供了一个创建行为树的框架。 它被设计为灵活、易用且快速。

即使我们的主要用例是__机器人学__,你也可以使用这个库来构建 游戏AI,或者在你的应用中替换有限状态机。

与其它实现相比,BehaviorTree.CPP 有许多有趣的特性:

  • 它将__异步动作__,即非阻塞例程,作为一等公民。
  • 树在运行时创建,使用__解释型语言__(基于XML)。
  • 它包含一个__日志/分析__基础设施,允许用户 可视化、记录、重放和分析状态转换。
  • 你可以静态链接你的自定义TreeNodes,或者将它们转换为插件 在运行时加载。

什么是行为树?#

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

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

如果你已经熟悉有限状态机(FSM),你将 很容易掌握大部分概念,但希望你会发现BT 更具表现力和更容易推理。

将__树的节点__想象成一组积木。 这些积木用C++实现并且是”可组合的”:换句话说,它们可以被 “组装”来构建行为。

在上图中,你可以看到我们将这些动作安排在一个简单的序列中; 动作将从左到右依次执行。要了解更多,请访问页面 BT介绍

行为树的主要优势#

  • 它们本质上是分层的:我们可以_组合_ 复杂的行,为,包括将整个树作为更大树的子分支。 例如,“拿啤酒”的行为可能重用 “抓取物体”的树。

  • 它们的图形表示具有语义意义:更容易 “阅读”BT并理解相应的工作流程。 相比之下,FSM中的状态转换 在文本和图形表示中都更难理解。

  • 它们更具表现力:现成的ControlNodes和DecoratorNodes 使得表达更复杂的控制流成为可能。用户可以使用他/她自己的自定义节点来扩展 “词汇表”。

“好的,但是为什么我们需要行为树(或有限状态机)?”#

许多软件系统,机器人学就是一个显著的例子,本质上 是复杂的。

管理复杂性、异构性和可扩展性的通常方法是 使用 基于组件的软件工程的概念。

任何现有的机器人中间件都正式或非正式地采用了这种方法, ROSYARPSmartSoft就是一些显著的例子。

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

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

如果我们从一开始就不考虑这些概念,我们创建的 软件将是紧密耦合的且可重用性差。

通常,一个软件系统的业务逻辑被”分散”到许多 组件中,这使得__开发者 很难推理它并调试错误__。

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

__有限状态机__正是为了这个目标而创建的,但在 近年来,__行为树__获得了普及,尤其是在游戏行业。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Behavior Tree 介绍
https://github.com/qingfeng3374-lab
作者
suilli
发布于
2026-01-14
许可协议
Apache 2.0

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00