本文由Matteo Iovino、Edvards Scukins、Jonathan Styrud、Petter Ögren和Christian Smith共同完成,作者均来自瑞典皇家理工学院(KTH Royal Institute of Technology)。该综述发表于2022年的期刊*Robotics and Autonomous Systems*(第154卷,文章编号104096),并于2022年4月12日正式在线发布。
行为树(Behavior Trees, BTs)最初是为计算机游戏设计的模块化人工智能工具,但近年来在机器人学领域受到广泛关注。传统有限状态机(Finite State Machines, FSMs)在复杂任务中扩展性差且难以复用,而行为树通过层次化结构和统一的接口设计解决了这些问题。本文全面综述了行为树在人工智能与机器人应用中的研究进展,涵盖理论基础、应用场景、方法论及开源工具,并总结了当前研究的挑战与未来方向。
行为树的核心在于其层次化任务切换逻辑,通过控制流节点(如序列节点、回退节点、并行节点)和执行节点(动作与条件)的组合实现模块化设计。相较于有限状态机,行为树具有以下优势:
- 模块化:任务逻辑集中在树结构中,而非分散于状态间,便于调试与扩展。
- 反应性:通过“运行中”(Running)状态和周期性“滴答”(Tick)信号实现动态任务切换。
- 可读性:统一的接口(成功、失败、运行中)简化了人类与算法的分析与合成。
支持证据:文献[5,6,7]通过游戏AI和机器人案例对比了行为树与有限状态机的性能,证明行为树在复杂任务中更具优势。
研究者提出了多种行为树变体以适配不同场景:
- 效用行为树(Utility BTs):文献[60]引入效用值动态调整回退节点的子任务优先级。
- 并行行为树(Concurrent BTs):文献[107]通过进度函数和资源管理解决并行任务冲突。
- 扩展行为树(Extended BTs):文献[136]结合分层任务网络(HTN)规划优化执行效率。
理论支持:文献[102,158]证明行为树可泛化决策树、子sumption架构和teleo-reactive方法。
行为树在机器人领域的主要应用包括:
- 机械臂操控:如ABB YuMi和KUKA协作机器人的抓取与装配任务[8,97,104]。
- 移动机器人:用于导航、多机协作(如KUKA youBot[134])及救援任务[106]。
- 无人机与水下机器人:文献[119,121]通过行为树实现高海拔无人机任务管理和AUV故障处理。
案例研究:IMAV 2017竞赛冠军方案[125]使用行为树协调无人机穿越障碍、搜索目标等复杂动作。
综述列举了主流行为树库(如py_trees、BehaviorTree.CPP),并对比其特性:
- 语言支持:Python、C++、JavaScript等。
- ROS兼容性:部分库(如py_trees_ros)专为机器人开发设计。
- 可视化工具:如Groot编辑器支持图形化调试。
本文首次系统梳理了行为树在跨领域的研究进展,其价值体现在:
1. 学术价值:明确了行为树的理论基础与扩展方向,为后续研究提供框架。
2. 应用价值:总结了行为树在工业机器人、无人机等场景的最佳实践,推动模块化AI的落地。
3. 方法论贡献:对比了学习与规划方法的优劣,指导开发者选择合适的行为树合成策略。
本文通过详实的文献分类(见表2-6)和理论分析,为行为树研究提供了权威参考,其跨学科视角尤其适合机器人学与游戏AI领域的研究者。