引用
Introduction to behavior trees - Robohub 这个讲的非常好,建议仔细阅读
A survey of Behavior Trees in robotics and AI - ScienceDirect
目录
三、一个例子Robot example: searching for objects
一、行为树的定义
从根节点开始按具体的顺序遍历执行,直到返回最终状态
•叶节点(Execution Nodes)
与底层代码结合起来,会执行具体的任务(action)或者检查(condition),返回 (success, failure, or running)
•控制结点
接受其子结点返回的状态,并决定下一个将展开哪个结点
二、行为树的术语
行为树的节点每执行一次称为tick
(1) Execution Nodes
可以分为动作节点和条件节点
- 条件节点
在一个tick之后只能得到success和failure Eg:“is the gripper open?”
- 动作节点
可以跨越多个ticks Eg: “open the door”
(2) Control Nodes
根据其孩子( can be execution nodes or control nodes themselves. )的状态,如何遍历行为树
1、Sequence
按顺序执行孩子结点直到其中一个孩子结点返回失败状态或所有孩子结点返回成功状态
2、Fallback
按顺序执行孩子结点,直到其中一个孩子结点返回成功状态或所有孩子结点返回失败状态。
3、Parallel
Parallel nodes 当至少有M(1-N)个节点返回成功时返回成功,所有节点失败时返回失败
4、Decorator
用规定的策略去更新被装饰的节点
eg:“Invert” decorator will change Success to Failure, and vice-versa
(3) 总结
三、一个例子Robot example: searching for objects
- 当只有一个目标点A
- 但上述考虑是不完全的,我们在执行GoToA之前我们要先检测。例如当机器人已经到目的A时,就不需要再执行动作GoToA。直接FoundObj
- 当执行环境有多个目标点时,寻找单个物体
- 当执行环境有多个目标点时,寻找多个物体
因为由于去不同的地点会导致重复过多次,通过decorators and blackboards的引入,可以简化行为树