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

本文介绍了多智能体路径规划问题(MAPF)以及CBS算法的工作原理。CBS通过两层规划解决冲突,底层使用如A*算法进行单机规划,顶层通过约束树解决冲突,生成无冲突的全局路径。算法在冲突发生时将约束分叉到子节点,确保最终找到全局最优解。此外,文章提到了CBS的优化变种ECBS,用于提高效率并提供有界次优结果。

多机器人路径规划

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

参考文献:

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))数据结构来解决底层冲突,大概长这样:

在这里插入图片描述
其实就是一颗树(可以设计成二叉树或者多叉树),树的每个节点除了有指向子节点的指针,还包括:

    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

【资源说明】 基于CBS算法多AGV路径规划仿真系统源码+项目开发说明.zip 多Agent路径规划仿真系统 针对多AGV物流分拣场景建立的仿真模拟系统,是我的本科毕业设计 本系统使用p5.js编写,推荐使用atom等支持该语言的IDE编辑。 下载IDE后,下载插件 ```bash File -> Settings -> Packages Search p5js-toolbar and Install it ``` ## Run Locally 完成后开启p5js-toolbar ```bash Packages -> p5js-toolbar -> Toggle p5.js toolbar Click the run button and that's all ``` ## Optimizations ### V1.0 算法基本实现,逻辑已基本无bug 输入 : * agent:start,end * obstacles * map:rows,cols 输出: * 如果没冲突,给出每个agent的路径数组 #### 待实现 UI界面,参数调整接口,单步模式和直接运行模式。 ### V1.1 UI界面初步完成,目前提供参数如下: * 地图行数、列数、障碍物比例 * 障碍物、每辆小车的起点和终点都可以自由设定 * 运行功能(直接执行模式)和重置功能 ### V1.15 UI界面进一步完善,加入如下功能: * 可以添加小车 * 添加单步执行模式 * 显示当前运行状态 #### 待实现 删除小车功能,设定小车颜色(可选),加入预设的特殊布局地图、计时功能。 ### V1.2 删除小车功能完成 #### 问题记录 ![image-20201119153155889](C:\Users\AA\AppData\Roaming\Typora\typora-user-images\image-20201119153155889.png) 如图所示情况,绿色小车到达终点后,在实际情况中会离开,继续执行下一个任务,但在路径中,绿车停靠在终点,会和红车路径不断产生冲突,导致死循环,这是不合理的。 #### 解决方案 * 每个小车有一个任务列表,执行完一个就去做下一个。 * 在补全小车路径到maxT时,补为特殊点,即不会再和其它小车冲突的点。 ### V1.25 删除小车bug修复,计时功能初步完成,修改小车速度功能完成 #### 关于计时功能 对于单轮任务,需要对每个Agent的执行时间单独计时 最好拓展到多轮任务,对任务直接计时 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zjyspeed

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值