行为树
行为树 行为树是什么 在构建较为复杂的机器人项目时,我们会发现让机器人自动执行动作的逻辑会随着业务需求的增加而变得非常复杂,用有限状态机(FSM)去管理状态之间的切换逻辑的维护成本也大幅提升。比方说现在想要从一个结构较为完整的机器人上删去某个动作节点或者判断逻辑,那我们需要在状态机的图上删去所有和这个源节点相连的关系,还要处理其他节点的依赖关系。更不用说其他令人头疼的问题了: 代码复杂、难以阅读:用状态机维护的行为逻辑会越来越复杂,交织的网络关系呈现出来可能是上千行的代码,给谁看都不乐意,徒增维护成本 逻辑修复困难:像上面提到的那样,删除节点、新增节点之前需要开发者对整个逻辑框架有良好的认知,需要在明确知晓操作影响的前提下再进行操作 运行监控和日志管理:机器人的状态监控需要远程和本地输出调试信息,一般情况信息较为复杂,难以管理 为了解决这些问题,BehaviorTree.CPP应运而生,它使用四种抽象节点的树状关系来管理逻辑:序列节点、选择节点、并行节点和装饰节点。通过树状结构的层次关系,行为树能够更清晰地表达复杂的行为逻辑,同时也更容易维护和扩展。 基本概念与入门 行为...
