赞
踩
多智能体路径规划 (Multi-Agent Path Finding, MAPF) 研究多智能体的路径规划算法,为多机系统规划无冲突的最优路径.
CBS(Conflict-Based Search) 是一种基于冲突的 MAPF 算法, CBS 算法给出 MAPF 问题的全局最优结果.
参考文献:
CBS是一种中央规划算法(Centralized Planning for Distributed Plans),什么意思呢?也就是由一台主机作为中央控制器,在全局视角生成每一台机器人的路径并统筹解决冲突.除了中央规划算法,还有分布式规划算法(Distributed Planning for Centralized Plans,Distributed Planning for Distributed Plans)等,具体可以参考这篇综述 Survey of the Multi-Agent Pathfinding Solutions.
CBS 是一族方法.算法的思想主要将多机规划分为两层,底层执行带有约束的单机规划,例如用传统 A* 算法,顶层遍历底层的规划路径,检查路径之间是否有冲突,如果有冲突则施加约束重新进行底层单机规划,直到所有底层路径无冲突为止.
先来讲讲CBS定义的一些术语:
CBS算法顶层使用约束树(Search the Constraint Tree (CT))数据结构来解决底层冲突,大概长这样:
其实就是一颗树(可以设计成二叉树或者多叉树),树的每个节点除了有指向子节点的指针,还包括:
顶层算法中,最核心的一点就是树的生成,也就是说从父节点 N N N 该如何生成子节点 N N N-> c h i l d child child
假设现在有一个节点 N N N,节点内包括:
生成子节点 N N N-> c h i l d child child :
CBS的底层是单机搜索,理论上,可以用任意一种搜索算法,比如经典的 A A A* . 只不过这个 A A A* 除了空间维度,还需要搜索时间维度.顶层施加约束在底层的逻辑处理其实就是将约束当成一个虚拟障碍物,比如约束 ( a i , v , t ) (a_i, v, t) (ai,v,t)在 A A A* 算法中,只是一个空间 x 时间的立方体里的一个障碍物方块,与二维里的障碍物没有本质的区别.
关于时空 A*(space-time A*),可以参考这篇文章
这是论文中的例子.
如图,有两只小老鼠
a
1
a_1
a1 和
a
2
a_2
a2 想要吃蛋糕, 分别从
S
1
S_1
S1 和
S
2
S_2
S2 出发,想要到达
G
1
G_1
G1 和
G
2
G_2
G2
我们按照步骤来生成顶层搜索约束树:
现在约束树暂时没有节点,先生成一个根节点,约束集为空, 在空约束集的约束下调用底层搜索,生成两个
p
a
t
h
path
path:
a
1
a_1
a1:
<
S
1
,
A
1
,
C
,
G
1
>
<S_1, A_1, C, G_1>
<S1,A1,C,G1>
a
2
a_2
a2:
<
S
2
,
B
1
,
C
,
G
2
>
<S_2, B_1, C, G_2>
<S2,B1,C,G2>
计算一下所有
p
a
t
h
path
path (也就是
s
o
l
u
t
i
o
n
solution
solution) 的
c
o
s
t
cost
cost: 3 + 3 = 6(起点不算)
现在的
r
o
o
t
root
root 约束树如图:
好,接下来正式按步骤:
到这里,可以发现,CBS就是一个算法框架,顶层解决冲突,底层进行搜索.
优化 CBS 算法,就是考虑最优性(Optimal)和完全性(Complete), 来优化顶层约束树的生成方式和底层搜索算法.
例如 ECBS, 就是一种有界次优的 CBS 算法, 通过优化约束树进行节点分叉的启发函数和底层搜索算法给出有界次优结果,在可接受的情况下大大降低时间复杂度,有兴趣可以看看.
多机器人路径规划(Multi-Agent Path Finding, MAPF) 这里展示了 CBS 算法在 ros 上的实现效果,有兴趣可以看看.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。