行为树(Behavior Tree)类似于状态机,其将行为作为树的节点,通过从树根发出信号,不断在树结构中游走而产生各样的行为。通常行为树用在智能体领域。
概念
行为树有下规则:
- 信号从跟树根部发出,在树中传播,直到达到叶节点。
- 收到信号的节点都会执行其回调函数,并且回调返回「成功」「失败」「运行」中的一种状态。(「运行」意味着动作还需要更多时间才会有结果)
- 叶节点是存储实际行为的节点,信号传导叶节点就进行叶节点的动作。
节点类型
行为树的节点可以用树状图来表示
- TreeNode 树节点
- ControlNode 控制节点
- DecoratorNode 修饰节点
- LeafNode 叶节点
- ConditionNode 条件节点
- ActionNode 动作节点
控制节点是进行流程控制的节点,例如 Sequence、ReactiveSequence、SequenceWithMemory 等。
修饰节点则是对节点功能进行修饰。例如下面这些例子:
- 逆转节点:如果子节点返回成功,则其返回失败。
- 强制成功节点:不论子节点返回成功还是失败,都返回成功。
- 强制失败节点:参上。
- 重复节点:如果子节点返回成功,则再次执行,直到重复 N 次。如果中途子节点返回失败,则退出循环。
- 重试节点:如果子节点返回失败,则再次执行,直到重复 N 次。如果中途子节点返回成功,则推出循环。
更多节点可以参考参考资料。