多机器人路径规划
多智能体路径规划 (Multi-Agent Path Finding, MAPF) 研究多智能体的路径规划算法,为多机系统规划无冲突的最优路径。
ECBS 算法由 CBS(Conflict-Based Search) 算法改进而来, 对 CBS算法的介绍可以参考笔者的这篇文章CBS多机器人路径规划(Conflict-Based Search)。CBS 算法给出 MAPF 问题的全局最优结果,ECBS 算法给出 MAPF 问题的有界次优结果。ECBS 之于 CBS,正如 A ϵ ∗ A^*_{\epsilon} Aϵ∗ 之于 A ∗ A^* A∗,获得有限损失的次优结果,换来极大的速度提升。
参考文献:
- Suboptimal Variants of the Conflict-Based Search Algorithm for the Multi-Agent Pathfinding Problem
ECBS(Enhanced CBS)
ECBS 基于 CBS 和 A ϵ ∗ A^*_{\epsilon} Aϵ∗,如果对 A ϵ ∗ A^*_{\epsilon} Aϵ∗ 不熟悉可以参考笔者的这篇文章 A*算法及其变种。
ECBS 沿用 CBS 框架,主要对 CBS 的顶层和底层搜索算法作出改进,论文由浅入深,依次介绍了次优的 GCBS(Greedy-CBS)、有界次优的 BCBS(Bounded Suboptimal CBS),以及对 BCBS 作出更灵活改进的 ECBS(Enhanced CBS),本文将依次介绍这些算法。
GCBS(Greedy-CBS)
在 CBS 中,顶层和底层都是最优搜索,GCBS 通过松弛(relax)顶层和底层的搜索条件提升算法效率。
GCBS 不是最优的,但是完备的。完备性的证明可以参考原论文,和 CBS 证明完备性的思想一样。
顶层松弛
CBS 的顶层搜索启发函数规则为全局 c o s t cost cost 最小,GCBS 的顶层启发函数的规则设计为基于 s o l u t i o n solution solution 中的冲突( c o n f l i c t s conflicts conflicts)数量,用 h c h_c hc 表示,作者给出了以下几个启发函数示例:
- h 1 h_1 h1:全局冲突数量:计算当前分支节点中 s o l u t i o n solution solution 的冲突数量
- h 2 h_2 h2:发生冲突的机器人数量:计算前分支节点中路径里存在冲突的机器人数量
- h 3 h_3 h3:发生冲突的机器人对(pairs):计算前分支节点中路径里存在冲突的机器人对的数量
- h 4 h_4 h4:顶点覆盖(Vertex cover):定义一个图 graph:其中机器人为顶点(nodes),路径之间有冲突的机器人之间有边(edges)相连。事实上, h 2 h_2 h2 描述了顶点, h 3 h_3 h3 描述了边, h 4 h_4 h4 计算顶点覆盖数。
- h 5 h_5 h5:可变启发式:在特定的条件下用特定的启发函数,更有鲁棒性,但编程比较麻烦。
作者声称,实测中 h 5 h_5 h5 的效果最好。但由于 h 3 h_3 h3 兼顾优秀性能和简洁性,介绍算法时选择 h 3 h_3 h3 作为实际的启发函数。在下文,所有的 h c h_c hc 都代表 h 3 h_3 h3。
底层松弛
松弛底层,最简单的方法就是把寻路算法改成次优的,例如 WA*。作者提到,这样看起来单机器人搜索变快了,但次优算法会得出更长的路径结果,增加了未来顶层需要解决的潜在冲突数(单条路径越长,这些路径之间产生冲突的可能性就越大)。
作者提出,在每次进行当前机器人的路径规划前,考虑之前其他机器人的路径,尽量提前躲避。也就是把之前其他机器人的路径当成障碍物,然后进行时空 A*(space-time A*) 搜索。这样就能直接在底层尽量的减小路径之间的冲突数量。
这种思想其实与基于优先级的搜索(Prioritized-Based Search, PBS)有点像:按顺序对多台机器人进行规划,先进行规划的机器人的路径作为障碍物信息附加在后进行规划的机器人的约束条件中。PBS 的底层可以用任意一种单机规划算法。
为什么说 GCBS 的底层和 PBS 有点像 而不是一样呢,因为为了快速计算出结果, GCBS 的底层只是尽量(倾向于)提前躲避障碍物,并不是完全躲避,未能躲避而产生的冲突交给顶层解决。
BCBS(Bounded Suboptimal CBS)
CBS 的顶层和底层搜索都使用 A* ,BCBS 的顶层和底层搜索都使用 F O C A L S e a r c h ( A ϵ ∗ ) FOCAL \space Search(A^*_{\epsilon}) FOCAL Search(Aϵ∗),对 A ϵ ∗ A^*_{\epsilon} Aϵ∗ 不熟悉可以参考笔者的这篇文章 A*算法及其变种。
首先,定义 f o c a l focal focal- s e a r c h ( f 1 , f 2 ) search(f_1,f_2) search(f1,f2) 表示使用启发函数 f 1 , f 2 f_1,f_2 f1,f2 的 F o c a l S e a r c h Focal \space Search Focal Search,其中, f 1 f_1 f1用于选择哪些节点被选入 F O C A L FOCAL FOCAL表, f 2 f_2 f2用于选择从 F O C A L FOCAL FOCAL表中选择哪一个节点作为下一步扩展。
顶层搜索
对约束树进行 f o c a l focal focal- s e a r c h ( g , h c ) search(g,h_c) search(g,hc),其中, g ( n ) g(n) g(n) 表示当前节点的 c o s t cost cost, h c ( n ) h_c(n) hc(n) 表示 h 3 ( n ) h_3(n) h3(n)(发生冲突的机器人对的数量)。
底层搜索
在底层应用 f o c a l focal focal- s e a r c h ( f , h c ) search(f,h_c) search(f,hc),其中 f ( n ) = g ( n ) + h ( n ) f(n) = g(n) + h(n) f(n)=g(n)+h(n) 与 A* 中的 f ( n ) f(n) f(n) 一致, h c ( n ) h_c(n) hc(n) 表示 h 3 ( n ) h_3(n) h3(n) (考虑在节点 n 的路径冲突)
定义 B C B S ( w H , w L ) BCBS(w_H,w_L) BCBS(wH,wL) 表示在 顶层的 f o c a l s e a r c h focal \space search focal search 使用 w H w_H wH 参数,在底层的 f o c a l s e a r c h focal \space search focal search 使用 w L w_L wL 参数 ( w = 1 + ϵ w=1+\epsilon w=1+ϵ)。
根据定义, B C B S ( w H , w L ) BCBS(w_H,w_L) BCBS(wH,wL)有如下特例:
- w L = 1 w_L = 1 wL=1,即 B C B S ( w H , 1 ) BCBS(w_H,1) BCBS(wH,1) :表示仅在顶层使用 f o c a l s e a r c h focal \space search focal search
- w H = 1 w_H = 1 wH=1,即 B C B S ( 1 , w L ) BCBS(1,w_L) BCBS(1,wL) :表示仅在底层使用 f o c a l s e a r c h focal \space search focal search
- w H = w L = 1 w_H = w_L = 1 wH=wL=1,即 B C B S ( 1 , 1 ) BCBS(1,1) BCBS(1,1) :BCBS 退化为 CBS
- w H = w L = ∞ w_H = w_L = \infty wH=wL=∞,即 B C B S ( ∞ , ∞ ) BCBS(\infty,\infty) BCBS(∞,∞) :BCBS 退化为 GCBS,此时, F O C A L FOCAL FOCAL 表与 O p e n Open Open 表一致。
B C B S ( w H , w L ) BCBS(w_H,w_L) BCBS(wH,wL) 能保证最终的全局 c o s t ≤ w H ⋅ w L ⋅ C ∗ cost \le w_H \cdot w_L \cdot C^* cost≤wH⋅wL⋅C∗,其中, C ∗ C^* C∗ 为最优 c o s t cost cost (也就是 CBS 的结果)。
ECBS(Enhanced CBS)
提出新方法的第一步是抨击旧方法。刚介绍完 BCBS,作者马上提到,BCBS 中关于 w L w_L wL 和 w H w_H wH 的调参是非常有讲究的,需要大量的调试经验,并且在整个搜索过程中 w L w_L wL 和 w H w_H wH 完全固定,会影响算法性能。
为了解决这个问题,ECBS 应运而生。
ECBS 的底层搜索算法与 B C B S ( 1 , w ) BCBS(1,w) BCBS(1,w) 一致。以下介绍 ECBS 的顶层搜索算法。
设在 CBS 底层搜索中,为机器人 a i a_i ai 搜索路径时使用的 O P E N OPEN OPEN 表为 O P E N i OPEN_i OPENi,则 O P E N i OPEN_i OPENi 中的最小 f f f 值 f m i n ( i ) f_{min}(i) fmin(i) 为 机器人 a i a_i ai 最优路径代价 c o s t cost cost 的下界(Lower Bound)。对一个约束树节点(CT node) n n n,设 L B ( n ) = ∑ i = 1 k f m i n ( i ) LB(n) = \sum^k_{i=1}f_{min}(i) LB(n)=∑i=1kfmin(i),根据定义有 L B ( n ) ≤ n . c o s t ≤ L B ( n ) ⋅ w LB(n) \le n.cost \le LB(n) \cdot w LB(n)≤n.cost≤LB(n)⋅w。
在 ECBS 中,每一个 CT node 传递两个值给顶层算法:
- n . c o s t n.cost n.cost
- L B ( n ) LB(n) LB(n)
设 L B = m i n ( L B ( n ) ∣ n ∈ O P E N ) LB = min(LB(n) | n \in OPEN) LB=min(LB(n)∣n∈OPEN) ,其中 O P E N OPEN OPEN 为顶层搜索中的 O P E N OPEN OPEN 表,则 L B LB LB 显然是全局最优代价 C ∗ C^* C∗ 的下界。ECBS 顶层算法的 F O C A L FOCAL FOCAL 表定义如下:
F O C A L = { n ∣ n ∈ O P E N , n . c o s t ≤ L B ⋅ w } FOCAL = \{n | n \in OPEN,n.cost \le LB \cdot w\} FOCAL={n∣n∈OPEN,n.cost≤LB⋅w}
由于 L B LB LB 是全局最优代价 C ∗ C^* C∗ 的下界,那么 F O C A L FOCAL FOCAL 里的所有节点的代价 c o s t cost cost 都小于等于 w w w 倍最优代价,因此,全局代价也小于等于 w ⋅ C ∗ w \cdot C^* w⋅C∗。
至此,ECBS 在顶层和底层的次优界限完成了统一。ECBS 既有 B C B S ( 1 , w ) BCBS(1,w) BCBS(1,w) 底层算法的灵活性,顶层也不局限于 B C B S ( w H , 1 ) BCBS(w_H,1) BCBS(wH,1) 的固定参数的 F O C A L FOCAL FOCAL 表,而是随着底层算法的搜索情况而改变。文章来源:https://www.toymoban.com/news/detail-745857.html
总结
本文所述的三个算法都是完备的。ECBS 为推进 MAPF 算法发展做出了重大贡献。 顺带一提,这个研究组居然在学术论文里使用文学笔法,这是非常罕见的。贴一下作者的结尾句:Time will tell how these new methods compare in general to traditional search approaches.文章来源地址https://www.toymoban.com/news/detail-745857.html
到了这里,关于ECBS多机器人路径规划的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!