zoukankan      html  css  js  c++  java
  • 关于 BehaviorTree.CPP 库

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

    尽管我们的主要用例是机器人技术,但您也可以使用这个库来为游戏构建 AI,或用于替换应用程序中的有限状态机。

    与其它实现相比,BehaviorTree.CPP 具有许多有趣的功能:

    • 它使异步 Action(即非阻塞)成为一等公民( first-class citizen )。
    • 它允许在运行时使用文本表示( XML )创建树。
    • 您可以静态链接您的自定义 TreeNode,或将它们转换为在运行时加载的插件。
    • 它包括一个 logging/profiling 基础架构,允许用户可视化,记录,回放与分析状态转换。

    什么是行为树?

    行为树是一种用于组织自主智能体(例如机器人或计算机游戏中的虚拟实体)中不同任务之间进行切换的方式。

    行为树是一种创建模块化与响应式复杂系统的非常有效的方法。这些特性在许多应用中至关重要,使得行为树的应用范围从计算机游戏编程扩展到 AI 和机器人技术的许多分支。

    如果您已经熟悉有限状态机( FSM ),则可以轻松掌握大多数概念,但是您会发现行为树具有更强的表达力和推理能力。

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

    • 它们本质上是分层的:这意味着我们可以构成复杂的行为,包括将整棵树作为一棵更大树的子分支。例如,行为 "Fetch Beer" 可以重用为树 "Grasp Object" 中的某个节点。
    • 它们的图形表示具有语义含义:更容易阅读行为树并了解相应的工作流程。相比之下,有限状态机的状态转换在文本和图形表示上都很难理解。
    • 它们更具表现力:使用 ControlNode 和 DecoratorNode,使得表达更复杂的控制流成为可能。用户可以使用自定义节点来扩展"词汇表"。

    为什么需要行为树(或有限状态机)?

    许多软件系统(例如机器人技术)本质上是复杂的。

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

    任何现有的用于机器人技术的中间件都非正式地或正式地采用了这种方法,例如 ROSYARPSmartSoft 等。

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

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

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

    通常,对协同的关注与计算混杂在一起。换句话说,人们着手解决协同行为中的问题并局部做出决定。

    业务逻辑"散布"在许多地方,开发人员很难对此进行推理并调试控制流中的错误。

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

    有限状态机是专门为了实现这一目标而创建的,但是近年来,行为树得到了普及,尤其是在游戏行业。

  • 相关阅读:
    eVC4系列下载地址[更新](增加sp4)
    ABAP如何生成年月的输入帮助
    BW BW Connectivity(最佳实践适合BW3.5)
    MM公司委托加工流程
    ABAP一个读取EXCEL单元格的内容超过256个字符的代码样例
    ABAP如何实现合计字段分单位合计
    ABAPABAP程序员需要参加的课程
    ABAP关于ABAP Dictionary的一些简单问题
    FI分期收款发出商品物料数据(仅供参考)
    ABAP关于abap的subroutines的几个注意点
  • 原文地址:https://www.cnblogs.com/xGonZh10n/p/12844060.html
Copyright © 2011-2022 走看看