行为树(Behavior Tree)类似于状态机,其将行为作为树的节点,通过从树根发出信号,不断在树结构中游走而产生各样的行为。通常行为树用在智能体领域。

概念

行为树有下规则:

  • 信号从跟树根部发出,在树中传播,直到达到叶节点。
  • 收到信号的节点都会执行其回调函数,并且回调返回「成功」「失败」「运行」中的一种状态。(「运行」意味着动作还需要更多时间才会有结果)
  • 叶节点是存储实际行为的节点,信号传导叶节点就进行叶节点的动作。

节点类型

行为树的节点可以用树状图来表示

  • TreeNode 树节点
    • ControlNode 控制节点
    • DecoratorNode 修饰节点
    • LeafNode 叶节点
      • ConditionNode 条件节点
      • ActionNode 动作节点

控制节点是进行流程控制的节点,例如 Sequence、ReactiveSequence、SequenceWithMemory 等。

修饰节点则是对节点功能进行修饰。例如下面这些例子:

  • 逆转节点:如果子节点返回成功,则其返回失败。
  • 强制成功节点:不论子节点返回成功还是失败,都返回成功。
  • 强制失败节点:参上。
  • 重复节点:如果子节点返回成功,则再次执行,直到重复 N 次。如果中途子节点返回失败,则退出循环。
  • 重试节点:如果子节点返回失败,则再次执行,直到重复 N 次。如果中途子节点返回成功,则推出循环。

更多节点可以参考参考资料。

参考资料