CBS多机器人路径规划(Conflict-Based Search)

这篇具有很好参考价值的文章主要介绍了CBS多机器人路径规划(Conflict-Based Search)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

多机器人路径规划

多智能体路径规划 (Multi-Agent Path Finding, MAPF) 研究多智能体的路径规划算法,为多机系统规划无冲突的最优路径.
CBS(Conflict-Based Search) 是一种基于冲突的 MAPF 算法, CBS 算法给出 MAPF 问题的全局最优结果.

参考文献:

  • Conflict-based search for optimal multi-agent path finding

CBS 多机路径规划

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定义的一些术语:

  • p a t h path path: 一条机器人的路径,也就是我们平时用得最多的单机规划结果
  • s o l u t i o n solution solution: 多机系统中所有机器人的 p a t h path path 的集合( n n n p a t h path path),也就是 mapf 算法的全局规划结果
  • c o n f l i c t conflict conflict: 冲突.上述的 s o l u t i o n solution solution 中, n n n p a t h path path 之间可能会有冲突(没冲突当然皆大欢喜了).具体的描述形式为 ( a i , a j , v , t ) (a_i, a_j, v, t) (ai,aj,v,t) ,表示在时刻 t t t, a i a_i ai a j a_j aj 同时占据了顶点 v v v. 拿栅格地图来说,就是在时刻 t t t, a i a_i ai a j a_j aj 同时占据了矩阵的一个格子 m a t r i x ( i , j ) matrix(i, j) matrix(i,j).
  • c o n s t r a i n t s constraints constraints: 约束.一个约束 ( a i , v , t ) (a_i, v, t) (ai,v,t) ,表示在时刻 t t t, a i a_i ai 不能占据顶点 v v v.

顶层

CBS算法顶层使用约束树(Search the Constraint Tree (CT))数据结构来解决底层冲突,大概长这样:

cbs算法,多机器人路径规划,自动驾驶,图搜索算法
其实就是一颗树(可以设计成二叉树或者多叉树),树的每个节点除了有指向子节点的指针,还包括:

    1. 约束( c o n s t r a i n t s constraints constraints) : 约束根据冲突( c o n f l i c t s conflicts conflicts)得到
    1. 当前计算的全局路径( s o l u t i o n solution solution, 注意这个可能包含冲突,一旦无冲突即为全局最优路径, 算法退出)
    1. 全局代价 c o s t cost cost
生成树

顶层算法中,最核心的一点就是树的生成,也就是说从父节点 N N N 该如何生成子节点 N N N-> c h i l d child child

假设现在有一个节点 N N N,节点内包括:

  • 当前节点的约束 c o n s t r a i n t s constraints constraints
  • 根据当前 c o n s t r a i n t s constraints constraints计算出来的全局路径 s o l u t i o n solution solution (怎么得到的?通过将约束施加到底层规划算法,例如 A A A*,得到一堆 p a t h path path, 把这些 p a t h path path 合起来就叫 s o l u t i o n solution solution. 怎么样将约束施加到底层算法呢?在后面来解释)
  • 根据 s o l u t i o n solution solution 计算出来的全局代价 c o s t cost cost
    cbs算法,多机器人路径规划,自动驾驶,图搜索算法

生成子节点 N N N-> c h i l d child child :

  • 第一步: 遍历 s o l u t i o n solution solution, 搜索 p a t h path path 之间的冲突 c o n f l i c t conflict conflict
    • 没冲突:就找到全局最优结果,算法退出
    • 有冲突:假设现在找到了一个冲突 ( a i , a j , v , t ) (a_i, a_j, v, t) (ai,aj,v,t) ,表示在时刻 t t t, a i a_i ai a j a_j aj 同时占据了顶点 v v v
  • 第二步:解决冲突
    • ( a i , a j , v , t ) (a_i, a_j, v, t) (ai,aj,v,t) 表示在时刻 t t t, a i a_i ai a j a_j aj 同时占据了顶点 v v v, 怎么解决?打个比方,两伙人去饭店吃饭,只剩一桌空桌了,怎么办呢,很显然,在当前文明社会,来个石头剪刀布,输了的人等下一桌.虽然字母很抽象,但算法都来源于生活.
    • 好,按照生活常理,在时刻 t t t, a i a_i ai a j a_j aj 只能有一个占据顶点 v v v,也石头剪刀布?这样不好,计算机里面不是文明社会,谁也不服谁,容易打架.加一桌?不行,店就这么大,会挤到其他人.好在计算机能力强,不行的话我再开一家店吧,就在旁边立马复制一个一模一样的店,一样的味道,一样的人气,一样只空一桌, a i a_i ai 去这边, a j a_j aj去那边,谁也不亏,谁也不占便宜.
    • 注意,就在此时,父节点分叉了(fork),诞生出了两个子节点, a i a_i ai 去的子节点施加约束 ( a j , v , t ) (a_j, v, t) (aj,v,t) a j a_j aj 去的子节点施加约束 ( a i , v , t ) (a_i, v, t) (ai,v,t). 一个冲突 ( a i , a j , v , t ) (a_i, a_j, v, t) (ai,aj,v,t),拆成了两个约束 ( a i , v , t ) (a_i, v, t) (ai,v,t) ( a j , v , t ) (a_j, v, t) (aj,v,t)
  • 第三步:生成子节点
    • 对于一个冲突 ( a i , a j , v , t ) (a_i, a_j, v, t) (ai,aj,v,t), 给予 a i a_i ai a j a_j aj 同等机会, 节点 N N N 分叉成两个子节点, 每个子节点都继承父节点原有的约束,并施加每个子节点独有的约束,如下图:
    • cbs算法,多机器人路径规划,自动驾驶,图搜索算法
    • 将每个子节点的约束施加到底层规划算法,计算出一堆 p a t h path path, 把这些 p a t h path path 合起来变成 s o l u t i o n solution solution, 计算每个子节点的全局 c o s t cost cost, 然后在整个约束树找 c o s t cost cost 最小的节点 N N N, 回到第一步继续查找冲突, 如果有冲突,每个子节点继续分叉

底层

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*),可以参考这篇文章

例子

这是论文中的例子.

cbs算法,多机器人路径规划,自动驾驶,图搜索算法
如图,有两只小老鼠 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算法,多机器人路径规划,自动驾驶,图搜索算法

好,接下来正式按步骤:

  • 第一步:遍历 s o l u t i o n solution solution, 搜索 p a t h path path 之间的冲突 c o n f l i c t conflict conflict
    • 很明显有冲突:一眼找到两条 p a t h path path 中的第 2 步(起点不算)都到 C C C, 生成冲突 ( a 1 , a 2 , C , 2 ) (a_1, a_2, C, 2) (a1,a2,C,2) ,表示在时刻 2 2 2, a 1 a_1 a1 a 2 a_2 a2 同时占据了顶点 C C C
  • 第二步:解决冲突
    • 一个冲突 ( a 1 , a 2 , C , 2 ) (a_1, a_2, C, 2) (a1,a2,C,2),拆成两个约束 ( a 1 , C , 2 ) (a_1, C, 2) (a1,C,2) ( a 2 , C , 2 ) (a_2, C, 2) (a2,C,2)
  • 第三步:生成子节点
    • 对于冲突 ( a 1 , a 2 , C , 2 ) (a_1, a_2, C, 2) (a1,a2,C,2), 给予 a 1 a_1 a1 a 2 a_2 a2 同等机会, 节点 r o o t root root 分叉成两个子节点, 每个子节点都继承父节点原有的约束,并施加每个子节点独有的约束
    • 将每个子节点的约束 ( a 1 , C , 2 ) (a_1, C, 2) (a1,C,2) ( a 2 , C , 2 ) (a_2, C, 2) (a2,C,2) 施加到底层规划算法,计算出一堆 p a t h path path, 把这些 p a t h path path 合起来变成 s o l u t i o n solution solution, 如下图:
      cbs算法,多机器人路径规划,自动驾驶,图搜索算法
    • 计算每个子节点的全局 c o s t cost cost,发现都是 7 7 7,由于搜索的时候一般从左边开始, 所以先考察左子节点, 回到第一步,遍历左子节点的 s o l u t i o n solution solution, 发现无冲突,说明找到了全局最优路径,算法返回.

总结

到这里,可以发现,CBS就是一个算法框架,顶层解决冲突,底层进行搜索.

优化 CBS 算法,就是考虑最优性(Optimal)和完全性(Complete), 来优化顶层约束树的生成方式和底层搜索算法.

例如 ECBS, 就是一种有界次优的 CBS 算法, 通过优化约束树进行节点分叉的启发函数和底层搜索算法给出有界次优结果,在可接受的情况下大大降低时间复杂度,有兴趣可以看看.

  • Suboptimal Variants of the Conflict-Based Search Algorithm for the Multi-Agent Pathfinding Problem

多机器人路径规划(Multi-Agent Path Finding, MAPF) 这里展示了 CBS 算法在 ros 上的实现效果,有兴趣可以看看.文章来源地址https://www.toymoban.com/news/detail-782733.html

到了这里,关于CBS多机器人路径规划(Conflict-Based Search)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器人学习-关于经典路径规划(二)

    8.Roadmap路线图 即将学习的第一组离散化方法被称为路线图,该方法使用一个简单的连通图来表示配置空间——类似于用地铁地图来表示城市。 路线图方法通常分两个阶段实现: — 构建阶段 从空间的连续表示中构建图形。这个阶段通常会花费大量的时间和精力,但是生成的图

    2024年02月16日
    浏览(46)
  • 多机器人路径规划(MAPF)综述

    Multi-Agent Pathfinding: Definitions, Variants, and Benchmarks 这篇综述详细介绍了多机器人路径规划问题(Multi-Agent Path Finding, MAPF)统一的描述形式和研究 MAPF 问题需要参考的术语定义,并介绍了评估 MAPF 算法的标准数据集. 文中介绍了一个关于 MAPF 非常重要的网站 : http://mapf.info, 里面实时更

    2024年02月06日
    浏览(91)
  • 机器人学习-关于经典路径规划(一)

    1.内容简介 识别不同类型的路径规划算法 理解一组算法的内部工作原理 评估算法对特定应用的适用性 实现搜索算法 2.路径规划示例 术语 完整性 ——如果一个算法能够在起点和目标之间找到一条路径,那么这个算法就是完整的。 最优性 ——如果一个算法能够找到最佳的解

    2024年02月06日
    浏览(58)
  • 【路径规划】基于遗传算法求解机器人栅格地图路径规划问题matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年01月24日
    浏览(67)
  • 【路径规划matlab代码】基于遗传算法求解机器人栅格地图路径规划问题

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年03月08日
    浏览(73)
  • SLAM+路径规划:巡检机器人算法设计

    标题:Research on SLAM and Path Planning Method of Inspection Robot in Complex Scenarios 作者:Xiaohui Wang,Xi Ma,Zhaowei Li 编译:东岸因为 编辑:郑欣欣@一点人工一点智能 入群邀请:7个专业方向交流群+1个资料需求群 原文:SLAM+路径规划:巡检机器人算法设计 工厂安全检查对于保持生产环境

    2024年02月03日
    浏览(49)
  • 华为云API对话机器人CBS的魅力—实现简单的对话操作

    云服务、API、SDK,调试,查看,我都行 阅读短文您可以学习到:人工智能AI智能的问答管理、全面的对话管理、高效训练部署 API插件支持 VS Code IDE、IntelliJ IDEA等平台、以及华为云自研 CodeArts IDE,基于华为云服务提供的能力,帮助开发者更高效、便捷的搭建应用。API插件关

    2024年02月09日
    浏览(45)
  • 基于粒子群算法的机器人动态路径规划

    基于粒子群算法的机器人动态路径规划 粒子群算法(Particle Swarm Optimization,PSO)是一种基于群体智能的优化算法,常用于解决优化问题。在机器人动态路径规划中,粒子群算法可以被应用于寻找最优路径,以使机器人在动态环境中能够高效地规划路径并避免障碍物。 本文将

    2024年02月07日
    浏览(53)
  • 改进灰狼算法实现机器人栅格地图路径规划

    改进灰狼算法实现机器人栅格地图路径规划 在机器人路径规划领域中,灰狼算法是一种具有全局搜索能力的优化算法。为了进一步提高其性能,可以结合和声算法对其进行改进。本文将介绍如何使用改进的灰狼算法实现机器人在栅格地图上的路径规划,并提供相应的MATLAB源代

    2024年02月06日
    浏览(59)
  • 基于灰狼算法的机器人栅格地图路径规划

    基于灰狼算法的机器人栅格地图路径规划 路径规划是机器人领域中一项重要的任务,它涉及在给定的环境中找到机器人从起始点到目标点的最优路径。灰狼算法是一种基于自然界中灰狼群体行为的优化算法,可以用于解决路径规划问题。在本文中,我们将介绍如何使用灰狼算

    2024年02月06日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包