本文对决策规划的方法进行了解。
文章目录
前言
本文将对基于行为树的决策规划进行了解
一、Behavior Tree(BT)
行为树方法本质是将各种状态模块化,可以基于不同的行为逻辑去调用它。
1.1 Behavior characteristics
- 行为树是树状有向图,树形结构,从根节点开始按照特定顺序来排列的这些任务直到最终状态是成功还是失败;
- 行为树的叶节点是可执行的行为或者任务,他会进行简单的检查或者复杂的操作,将会输出一个状态(成功、失败、运行);
- 内部节点控制树的遍历,树的内部非叶节点接受它的子节点的结果状态,并且基于规则应用到扩展结点。
- 行为树模型也是基于状态属性反应式地选取不同驾驶动作;
- 把驾驶状态和控制逻辑固化到树的结构中,并且通过自上而下轮式的方式进行驾驶方式的搜索和选择。
1.2 Behavior Tree Terminology
行为树是由各种节点组成的,这些节点可以用如下的图形来表达:
如图所示,图形大体分为两大类:
- 执行节点(树叶):动作、条件;
- 控制节点(内部节点,遍历):选择、序列、平行、修饰器。
行为树的执行是由称为ticks的更新步来引导的,当一个行为树被tick时,通常是一定频率的,它的子节点是依照树的结构的递归方式依次被执行。每个
节点执行完成之后返回一个状态给父节点(成功、失败、运行)。
二、Overtake Sence of Behavior TreeAction node
2.1 Action node
动作节点是行为树的叶子,它会扩展好多次,一直返回行为中,最终达到一个状态。可以表达复杂的任务。
超车场景中:
- 动作节点
(1)Turn out: 驶出
(2)Pass car:超车
(3)Turn in:驶入
2.2 Sequence node
按照顺序执行各个子节点,直到各个子节点中有任何一个子节点返回失败或者都返回成功。如何有一个子节点返回失败,则需要向上一层反应,只有当所有节点都返回成功时,顺序节点才能够顺利的返回成功。
算法:
2.3 Condition node
条件节点就是建立在什么样的条件下才能满足超车的条件,进行超车的触发。
条件节点在执行中只返回成功或者失败没有运行状态,一般用于简单任务的检查。
在有车的情况下进入条件节点判断,成功后触发超车。
2.4 Selector node
在判断有车在前方可以超过的条件下,还需要一个备选节点来判断超车是否是安全的。备选节点按照顺序来执行子节点,直到其中的子节点返回成功,或者所有字节点返回失败的状态,一旦任何一个子节点返回成功说明超车条件不合适则不会考虑超车行为,如果都返回失败则满足条件可以超车。
2.5 Parallel node
在一些场景情况下需要并行一些动作,需要并行节点,并行执行所有子节点,直到所有子节点状态返回成功或者所有子节点返回失败。
并行字节点可以触发多个操作节点同时进入运行状态。可以根据每个实例自行定义各个子节点并且报告成功与失败。
如在超车场景中超出的时候还需要打灯,这两个就是并行的任务。
2.6 Decorator node
它是包装基础的子树或者子树的功能,可以影响底层节点的行为或者修改其状态。
装饰器包括两种:
2. 逆变器:可以将结果从成功翻转为失败,反之一样。
3. 重复:重复某一个任务,如在超车场景中,一直重复超车检查的任务。
2.7 超车场景
如图所示,为超车场景决策树的规划,其中包括:
- 动作节点(非叶节点):Turn in/out,Pass car,Turn light on
- 并行节点:同时可以执行两个任务,Trun out/Turn light on
- 顺序节点:根据顺序来决定动作的执行
- 条件节点:根据不同的超车的条件来选择超车,如目标车在前面
- 选择节点:根据其他的安全条件来判断是否能够超车,如超车距离是否满足,对象是否有车等。
- 装饰节点:重复超车条件的各种检查,直到条件允许为止。
三、BT VS FSM
理论来说,任何东西都可以用行为树和有限状态机进行抽象,但是两种都有各自的有缺点。
BT和FSM在模块化和反应性都会有一定的权衡。
BT更容易编写和修改。
FSM在设计行为上又有一定的优势。
超车场景
我们需要在拐出、超车、拐回的过程中加一项环节来确定它是否和被超车相比足够快,能够超过去。
- 如果在FSM上增加这样一个环节,会导致变化的量非常多。
- 如果在BT上增加这样一个环节,比较简单,不需要替换或者修改其它模块。
前车有无车车检查
- FSM:前车无车检查后会进入超车环节,而检查不会重新激活,就不具有实时性。
- 可以在FSM超车环节上都加入这一检查,就会变得非常敏捷。
总结
本文主要是对于基于行为树的决策规划方法进行阐述,了解其概念、核心思想以及决策设计,详细介绍了行为树个节点的含义,并加入超车的场景实例进行理解,最后对比了FSM和BT的优缺点,希望这篇文章可以对想要学习自动驾驶规划控制方向的同学们有一定的帮助。
喜欢的朋友们动动小手点个关注,我会定期分享我的一些知识总结和心得体会,感谢大家!