优点
模块化
BT的每个子树都可以是一个模块。模块化系统可以设计、应用、测试和重用一个模块。分而治之的模块化系统会随着系统的复杂度增加而变得更加有益。
分层组织
BT包含多个级别的决策。在不同层次上的设计和分析结构能实现迭代细化和计划拓展。
可重用代码
BT的所有子树只需要返回“运行“、”成功“和”失败“,这使得一个子树在任意子树都是可重用的。
反应性
BT的反应性表现为每Tick对树进行闭环遍历 。
可读性
可读性可以降低开发和调试的成本。由于BT的树结构和模块化,使得BT具有可读性
表达能力
BT至少有四种表达方式:有限状态机、包容体系结构、远程反应程序、决策树。
适用于分析
BT可以从这几个特性进行定性和定量分析:安全性,避免不可逆的不良行为;鲁棒性,适用于很大的操作范围;效率性,完成时间的意义上;可行性,成功概率的意义上;可组合性,分析子任务的组合是否保留了属性。
适用于自动综合
BT适用于任务规划或机器学习技术自动合成任务或策略的动作排序。
缺点
BT引擎应用复杂
单线程顺序编程会使BT引擎的应用变得复杂。
检查所有的条件需要很大的代价
BT需要检查几个条件来执行闭环任务。在某些应用中需要付出很大的代价。
有时前馈执行效果足够好
机器人在结构化的环境中工作时,可以在空间和时间上预测机器人的状态,此时BT与更简单的架构相比没有任何优势。
BT与FSM不同
BT与FSM相比更容易理解,但在设计解决方案时需要新的思维方式,BT的执行并不关注状态,而是关注条件,并且切换不是事件驱动而是时钟驱动的。
BT工具不成熟
开发BT的软件在软件数量和成熟度上不如FSM。
标签:子树,可读性,模块化,优缺点,FSM,BT,适用,行为 From: https://www.cnblogs.com/youzimo/p/16788506.html