datetime:2023/05/11 15:12
author:nzb
BT1:初识行为树
行为树是什么?
行为树(BT,Behavior Tree
)是一种 tree-structured control architecture
,常用来做任务或状态管理。最先也最多应用于游戏领域,后来引入到机器人、自动驾驶等需要规划决策的领域。
行为树与有限状态机(FSM,Finite State Machine
)、决策树(Decision Tree
)等常被对比,他们在绝大多数情况下可以发挥同样的作用,并且可以相互转换。下面我罗列了一些显著的对比,在应用中会更有体会。后面的内容也会展开介绍BT的这些特性。
行为树怎么用?
像上面提到的一样,FSM简单易用,绝大多数情况开发者都可以逐行逐字的手撕代码,从头实现一个个性化的状态机,只需定义清楚状态类别、跳转条件、每个状态的执行内容等,典型的就是switch-case。当然,也有很多开源库,可以提供更完善的代码实现,比如TinyFSM等。
对比之下,如果要自行实现行为树的话,工作量就要大一些。有很多优秀的开源实现,这里推荐BehaviorTree.CPP
基于C++14,支持ROS,也是ROS2-Navigation
使用的库。本系列文章就以BehaviorTree.CPP
为例,讲解行为树的概念和应用。