行为树算法
行为树算法
目录
行为树(Behavior Tree) 是一种用于描述AI行为的树状数据结构,通过节点之间的层次关系来组织复杂的行为逻辑。
开源项目
BehaviorTree.CPP
Golang
- behavior3go
- go-behave
- go-behaviortree 实现了Sequence and Selector,与 PyTrees 类似
PyTrees
PyTrees 是一个强大的 Python 行为树实现,专为机器人和其他复杂系统创建决策引擎而设计。PyTrees 提供了一个优雅的模块化框架,使复杂的决策管理变得简单。
PyTrees 可用来实现机器人在动态环境中导航或游戏 AI 角色响应玩家操作
开源代码:
详细的文档:
基于py_trees实现的的机器人ROS扩展:
🌳 PyTrees基本结构
节点类型:
控制节点(Composites) - 决定执行流程
Sequence(顺序):所有子节点成功才算成功Selector(选择):直到一个子节点成功Parallel(并行):同时执行多个子节点
执行节点(Behaviours) - 具体行为
Action:执行具体动作Condition:检查条件
装饰节点(Decorators) - 修饰行为
- 重复、取反、超时等修饰
惯用模式
- idioms.pick_up_where_you_left_off 从中断处继续
- idioms.either_or 二选一
- idioms.oneshot 单次执行
⚡ 工作方式
- 自顶向下执行
- 从左到右遍历
- 每个节点返回三种状态:
- ✅
SUCCESS(成功) - 🔄
RUNNING(执行中) - ❌
FAILURE(失败)
- ✅
📊 简单示例
Selector (主行为)
├── Sequence (遇到敌人)
│ ├── Condition (发现敌人?)
│ └── Action (攻击)
└── Sequence (日常巡逻)
├── Action (移动)
└── Action (观察)