清晨七点半的城市十字路口,四面八方都在涌向同一个路口:赶地铁的白领、送孩子上学的家长、骑车的外卖员、刚出站的旅客——每个人都有明确目的地,每个人都想最快通过,但路口只有一个。为什么大多数时候大家都能顺利过去?因为有人看信号灯、有人减速让行、有人预判对方车速,偶尔还会堵成一团。现在把这幅画面里的行人换成仓库里的搬运机器人、天空中的无人机、工厂里的机械臂——这就是多机器人规划要解决的日常。它为每一个“赶路的机器人”安排速度、方向和通行顺序,让它们在共享空间里既不撞车、不堵死,又能尽快到达目的地。

岗位关联

多机器人规划是机器人从“单兵作战”走向“群体协作”的必修课。掌握它,你才能设计出像城市交通一样高效运转的机器人系统——这是物流、安防、无人机等领域最核心的工程能力之一。

目录
  1. 可视化演示
  2. 基本概念:共享空间里的早高峰
  3. 集中式规划:总交警台的统一指挥
  4. 分布式规划:没有总控的老司机们
  5. 优先级规划:救护车先行的默契
  6. 速度障碍法:老司机的预判艺术
  7. 死锁规避:四个方向谁也不让谁
  8. 工程应用:真正早高峰的落地答卷
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示多机器人规划三大核心:路径规划(8×6网格3机器人R1/R2/R3独立A*寻路5障碍物避障)、冲突解决CBS(冲突检测R1/R2路径交叉CF→搜索树分支约束重路由→无冲突最优解)、集中式vs分布式对比(CBS全局最优但慢O(n^k) vs 优先级局部反应快速但次优O(n)),三模式切换理解多机器人协调全貌。

本节配有交互动效(进入视口后自动加载,约 3KB)。

'+C1+'

基本概念:共享空间里的早高峰

清晨的十字路口,四条路上都排满了赶时间的人。每个人的目标不同,但地面只有一个,空间是共享的。多机器人规划面对的问题一模一样:多台机器人在同一片物理空间中执行各自任务,它们共享工作空间、共享通道、共享路口,任何一个都不能把别人当成空气。

从单机器人规划到多机器人规划,最大的变化在于“协调”。单机器人只要考虑自己与静态障碍物的关系,而多机器人系统里,每一个移动的机器人对其他机器人来说都是“动态障碍”。你不仅要规划自己的路,还要预测别人怎么走、什么时候可能挡路、谁该让谁。这些交互带来了成倍增加的计算负担。

这就是为什么现实中的多机器人系统不能靠“把所有机器人两两配对检查一遍”来硬算。早高峰的交警不会挨个问每个司机“你和谁可能撞车”,他需要用规则、优先级、红绿灯来把平方级的混乱降下来——这也正是后面各种规划方法的目标。

C(n)=n(n−1)2∼O(n2)\displaystyle \mathcal C(n) = \frac{n(n-1)}{2} \sim O(n^2)
公式含义:n 台机器人在共享空间中,任意两台之间都可能需要检查避碰关系,因此协调成本的量级随机器人数量呈平方级增长——这就是“车越多路口越乱”的数学本质。
  1. n 台机器人n 代表系统中机器人的总台数,是复杂度计算的输入变量。
    nn
  2. 两两组合数从 n 台机器人中任选两台进行避碰检查,组合数为 n(n-1)/2。
    n(n−1)2\frac{n(n-1)}{2}
  3. 平方级增长当 n 翻倍时,协调工作量大约变为原来的 4 倍,这称为 O(n²) 复杂度。
    O(n2)O(n^2)

集中式规划:总交警台的统一指挥

想象一座小城市,只有一个总交警台。交警通过摄像头看到所有车辆的位置和目的地,在电脑上算好每辆车的红绿灯时长和放行顺序,然后通过信号统一指挥。所有车辆都按这个全局方案行驶,理论上可以做到整体最优——这就是集中式规划。

集中式规划的核心思想,是把多台机器人当成一个整体看待。它不再分别考虑“机器人 1 的路径”和“机器人 2 的路径”,而是构造一个“联合状态空间”:把每个机器人的状态空间放在一起,形成一个更高维度的空间,然后在其中搜索一条整体路径。

集中式规划的优点非常诱人:全局一致,不会出现两台车互相矛盾的行动指令,能找到全局最优解。但它的代价也像总交警台一样明显——如果城市很大、车辆很多,指挥中心根本算不过来。每增加一台机器人,状态空间的维度就增加一维,搜索量呈指数爆炸。所以集中式规划只适合机器人数量较少、环境相对简单的场景。

S=S1×S2×⋯×Sn\displaystyle \mathcal S = \mathcal S_1 \times \mathcal S_2 \times \cdots \times \mathcal S_n
公式含义:联合状态空间是每个机器人状态空间的笛卡尔积,相当于把所有机器人的状态打包成一个“超级状态”来搜索。
  1. 单个机器人状态空间S₁ 表示第 1 台机器人所有可能位置和姿态的集合。
    S1\mathcal S_1
  2. 状态空间的乘积× 表示把多个状态空间组合起来,得到一个包含所有机器人状态的高维空间。
    S1×S2\mathcal S_1 \times \mathcal S_2
  3. n 台机器人的联合一直乘到第 n 台机器人,就得到了全局统筹所需的联合状态空间。
    S1×S2×⋯×Sn\mathcal S_1 \times \mathcal S_2 \times \cdots \times \mathcal S_n

分布式规划:没有总控的老司机们

现实中,大多数城市并没有一个全知全能的总交警台。每个司机靠眼睛观察、靠转向灯交流、靠默认的交通规则完成避让——这更像分布式规划。每台机器人先独立规划自己的路径,运行时通过局部感知和信息交换来调整,谁发现问题谁就让一步。

分布式规划也叫解耦规划,它的基本思路是“先各自为政,再局部协商”。每台机器人只对自己的路径负责,在运动过程中检测到与其他机器人的潜在冲突时,通过局部的速度调整、路径微调来化解。这种方式的优点是可以扩展到几十上百台机器人,某一台出故障也不会让整个系统瘫痪。

分布式规划像一群默契的老司机:没有中央指令,但靠着观察、让行和沟通就能在早晚高峰里穿行。代价是它很难保证全局最优——每台车只顾眼前的路况,可能两台车在局部反复互相避让,绕了远路。不过对大规模系统来说,“够用且能扩展”往往比“全局最优但算不动”更实际。

f(τ1,…,τn)=∑i=1nfi(τi)+∑i<jλij gij(τi,τj)\displaystyle f(\tau_1, \dots, \tau_n) = \sum_{i=1}^{n} f_i(\tau_i) + \sum_{i<j} \lambda_{ij} \, g_{ij}(\tau_i, \tau_j)
公式含义:整个系统的代价由每台机器人自身的路径代价和两两之间的交互代价共同组成,其中交互代价正是分布式中最需要处理的部分。
  1. 自身的路径代价fᵢ(τᵢ) 是第 i 台机器人沿轨迹 τᵢ 行驶所需的时间或能耗。
    fi(τi)f_i(\tau_i)
  2. 两两交互代价gᵢⱼ 表示第 i 台和第 j 台机器人之间的冲突程度,比如距离过近产生的风险。
    gij(τi,τj)g_{ij}(\tau_i, \tau_j)
  3. 耦合权重λᵢⱼ 是交互代价的权重,权重越大,说明这对机器人越需要协调避让。
    λij\lambda_{ij}

优先级规划:救护车先行的默契

城市的交通规则里,永远有一些车享有“优先权”:救护车鸣笛时,社会车辆纷纷让行。不是因为救护车更会开车,而是因为它被赋予了更高优先级。多机器人规划也大量使用这个思路:给每台机器人分配一个优先级编号,编号高的先规划,编号低的把高优先级机器人的轨迹当作“移动障碍物”来绕开。

优先级规划的计算逻辑非常清晰:按优先级从高到低依次求解。第一台机器人畅通无阻地规划自己的最优轨迹;第二台机器人规划时,必须避开第一台的轨迹;第三台要同时避开前两台……依此类推。高优先级者“插队”成功,低优先级者自动绕行或等待。

优先级规划虽不能保证全局最优,但计算量小、实现简单,而且实际效果非常好——这就是为什么绝大多数仓库里的 AGV 调度系统都在用类似“让行规则”。它把复杂的多机同时规划问题,拆成了一个个简单的单机避障问题,像排队过窄巷一样稳健。

τk∗=arg⁡min⁡τJk(τ),s.t.    τ∩O<k=∅\displaystyle \tau_k^* = \arg\min_{\tau} J_k(\tau), \quad \text{s.t.} \;\; \tau \cap \mathcal O_{<k} = \emptyset
公式含义:第 k 台机器人在规划时,要找出自身代价最小的轨迹,同时保证这条轨迹与所有更高优先级机器人已占用的时空区域不相交。
  1. 求解第 k 台的轨迹τ_k 是第 k 台机器人的候选轨迹,星号表示最终选出的最优轨迹。
    τk∗\tau_k^*
  2. 自身代价最小化argmin 表示在可选的轨迹中挑出一条使代价函数 J_k 最小的轨迹。
    arg⁡min⁡τJk(τ)\arg\min_{\tau} J_k(\tau)
  3. 高优先级占用集合O₍ₖ₎ 是所有编号小于 k 的机器人已经占用的时空区域集合。
    O<k\mathcal O_{<k}
  4. 不相交约束自己选出的轨迹 τ 必须与 O₍ₖ₎ 没有交集,也就是“绝不去抢别人的路”。
    τ∩O<k=∅\tau \cap \mathcal O_{<k} = \emptyset

速度障碍法:老司机的预判艺术

真正成熟的老司机,不会等两车快要贴上时才踩刹车。他会观察对方的车速和方向,心里快速算一笔账:“以他现在这个速度,三秒后正好会到我的车道。”于是提前轻点刹车或打一把方向,优雅地错开。速度障碍法(Velocity Obstacle)就是这个预判过程的数学化。

速度障碍法的核心是利用“相对速度”。把其他机器人的速度折算到自己身上来看,如果按照当前相对速度和方向继续走下去,会在未来某一时刻撞上对方,那么这个速度就落入了“碰撞锥”;反之则是安全速度。动态窗口法(DWA)进一步把这个思路工程化:在每个控制周期里,根据当前速度和加速度限制,圈出一个可行的速度窗口,在这个窗口内采样一批候选速度,分别打分,选出最优。

老司机的预判能让他不刹车也能错车,靠的就是对相对速度的敏感。速度障碍法也是如此——它不是看到障碍再绕路,而是在速度层面提前排除所有“危险速度”,让机器人在每一个瞬间都自动避开动态风险。这种反应式避障思路,正是无人机和移动机器人最常用的安全网。

v∗=arg⁡max⁡v∈Va(α⋅heading(v)+β⋅clearance(v))\displaystyle v^* = \arg\max_{v \in V_a} \big( \alpha \cdot \text{heading}(v) + \beta \cdot \text{clearance}(v) \big)
公式含义:最优速度是从可行速度窗口里挑出来的,评分标准兼顾“是否朝目标方向”和“离障碍物有多远”这两项。
  1. 可行速度窗口V_a 是所有不超过加速度和最大速度限制、且不会撞到障碍的速度集合。
    VaV_a
  2. 目标朝向评分heading(v) 衡量速度方向与目标方向的夹角,越朝向目标得分越高。
    heading(v)\text{heading}(v)
  3. 安全距离评分clearance(v) 表示按速度 v 行驶时与最近障碍物的距离,距离越大越安全。
    clearance(v)\text{clearance}(v)
  4. 权重平衡α 和 β 是两个权重,用于调节“冲向目标”和“保持安全”之间的优先级。
    α,β\alpha, \beta

死锁规避:四个方向谁也不让谁

最让人崩溃的交通场景是什么?不是慢,而是堵死:四个方向的车都涌进路口,互相别住,谁也无法前进。每个人都想等别人先动,结果谁都不动。在多机器人系统里,这种状态叫“死锁”,一旦出现,整个系统就停摆了。

死锁有四个经典必要条件:互斥、占有并等待、不可抢占、循环等待。多机器人场景中最常见的是“循环等待”——机器人 A 等着 B 让路,B 等着 C 让路,C 又等着 A 让路。判断死锁有一个高效工具:等待图。把每台机器人画成一个点,如果 A 在等 B,就画一条从 A 指向 B 的边;当这个图里出现闭环,就意味着循环等待发生了。

解决死锁的思路也随之而来:要么在设计阶段就避免形成环(比如优先级让行、单向通行规则);要么在运行阶段检测到环后主动打破它(比如让某台机器人倒退、绕行或等待超时重规划)。这就像现实路口在堵死之后,总会有司机主动倒车让出空间,僵局才被打破。

deadlock  ⟺  ∃ cycle in Gwait\displaystyle \text{deadlock} \iff \exists \ \text{cycle in } G_{\text{wait}}
公式含义:死锁发生当且仅当等待图中存在有向环,这个环上的每台机器人都在等待下一台释放资源。
  1. 等待图G_wait 是一个有向图,节点是机器人,有向边表示“我在等你让开”。
    GwaitG_{\text{wait}}
  2. 有向环环意味着 A 等 B、B 等 C、C 再等 A,形成无法打破的循环。
    ∃ cycle\exists \ \text{cycle}
  3. 死锁的充要条件检测到环就立刻确认死锁,反过来没有环就不会有循环等待造成的死锁。
    deadlock  ⟺  ∃ cycle\text{deadlock} \iff \exists \ \text{cycle}

工程应用:真正早高峰的落地答卷

城市交通规划最终要服务于真实生活,多机器人规划也一样。今天最典型的应用场景已经在我们身边批量出现:电商仓库里上千台 AGV 在货架间穿行取货,它们共享巷道、共用路口,却极少碰撞;城市低空物流中,无人机编队要在同一片空域里各自飞往目的地;园区安防巡逻中,多台机器人接力覆盖同一片区域。

这些真实系统的共同策略是“分层组合拳”:全局层做任务分配和粗略路径规划,局部的动态层用速度障碍法、动态窗口法做实时避碰,再叠加优先级规则和死锁检测兜底。任务分配本身也是一个经典优化问题——把哪台机器人派往哪个任务,才能使总代价最小?

回到开头的早高峰十字路口:真正的城市不会只靠一种方法解决交通问题,它同时有红绿灯、公交专用道、救护车优先、交警手势等多种机制。工程中的多机器人规划也一样,把集中式、分布式、优先级、速度障碍和死锁预防巧妙组合,才能让成百上千台机器人在同一片空间里各行其道、井然有序。

---

min⁡∑i=1m∑j=1ncijxij,s.t.    ∑jxij=1,    xij∈{0,1}\displaystyle \min \sum_{i=1}^{m}\sum_{j=1}^{n} c_{ij} x_{ij}, \quad \text{s.t.} \;\; \sum_{j} x_{ij} = 1, \;\; x_{ij} \in \{0, 1\}
公式含义:为每台机器人指派一个任务,使总代价最小,同时保证每个任务恰好被一台机器人执行。
  1. 指派代价cᵢⱼ 表示把第 j 个任务交给第 i 台机器人需要付出的代价,比如路径长度或时间。
    cijc_{ij}
  2. 决策变量xᵢⱼ 是 0-1 决策变量,取 1 表示指派,取 0 表示不指派。
    xij∈{0,1}x_{ij} \in \{0, 1\}
  3. 每个任务只指派一次约束条件 ∑xᵢⱼ=1 保证任务不会重复分配,也不会漏掉。
    ∑jxij=1\sum_{j} x_{ij} = 1

AI 应用场景

智能仓库 AGV 群体调度

阶段:决策与规划层——任务分配 + 路径规划 + 局部避碰

解决的问题:传统仓库用传送带或人工叉车,路线固定、吞吐量低、改造成本高。AI 多机器人规划让成百上千台 AGV 共享仓库地图,按实时订单动态分配任务,规划最优路径,并在巷道交叉口自动让行,大幅提升分拣效率。

具体案例:某电商仓内 300 台 AGV 同时运行,系统采用“中央任务分配 + 分布式避碰”的混合架构:中央服务器用指派模型决定每台车去哪取货,每台车运行时用动态窗口法避开同伴。即使某台车故障,其余车辆也会自动重新规划,不会整仓瘫痪。

城市低空无人机编队配送

阶段:协同路径规划层——多机航线共享与安全间隔保持

解决的问题:单台无人机配送效率有限,多架无人机在同一片低空空域飞行时,容易互相干扰甚至碰撞。AI 多机器人规划为每架无人机在时空上安排“虚拟航线走廊”,结合优先级规则让紧急任务先飞,确保安全编队。

具体案例:某城市试点“无人机即时配送走廊”,高峰期同时有 20 架无人机在 3 公里范围内执行外卖配送。系统利用速度障碍法实时判断每对无人机是否会在未来几秒内过近,自动微调速度,使机群在保持效率的同时始终满足安全间距。

智慧园区多机器人安防巡逻

阶段:感知—规划—执行闭环中的多机协同层

解决的问题:单台巡逻机器人覆盖范围有限、充电即停工。多机器人规划将园区划分为若干巡逻区,多台机器人接力覆盖,并用分布式协调机制在交叉区域互相让行,保证 7×24 小时无死角安防。

具体案例:某科技园区部署 5 台巡逻机器人,每台负责一个片区,但充电桩和主干道是共享的。运行时通过低带宽通信交换位置信息,在共享路口按“先到先过 + 低优先级让行”的规则通行,死锁时自动触发超时回退逻辑,已在真实环境中稳定运行超过一年。

Python 演示

python64 行
import mathimport random  class Robot:    """一台在窄巷中行驶的机器人,具有优先级和是否到达状态。"""     def __init__(self, name, start, goal, priority):        self.name = name        self.x, self.y = start        self.gx, self.gy = goal        self.priority = priority        self.speed = 2.0        self.done = False     def move(self, others):        """根据其他机器人位置决定前进还是等待。"""        if self.done:            return         # 发现前方有更高优先级的机器人挡路时,原地等待        for other in others:            if other.priority < self.priority and not other.done:                if abs(other.x - self.x) < 15 and abs(other.y - self.y) < 15:                    return  # 让行,原地等待         dx = self.gx - self.x        dy = self.gy - self.y        dist = math.hypot(dx, dy)        if dist < self.speed:            self.x, self.y = self.gx, self.gy            self.done = True            return         # 朝目标方向移动固定步长        self.x += self.speed * dx / dist        self.y += self.speed * dy / dist  def simulate():    """模拟两台机器人在同一巷道相向而行,用优先级让行避免碰撞。"""    robot_a = Robot("A", (0, 50), (100, 50), priority=1)    robot_b = Robot("B", (100, 50), (0, 50), priority=2)     for t in range(60):        robot_a.move([robot_b])        robot_b.move([robot_a])         if robot_a.done and robot_b.done:            print(f"t={t}: 两台机器人全部到达,全程无碰撞")            return         print(            f"t={t:02d} "            f"A=({robot_a.x:6.1f},{robot_a.y:5.1f}) "            f"B=({robot_b.x:6.1f},{robot_b.y:5.1f})"        )     print("达到最大时间步,仍未全部到达(可能死锁)")  if __name__ == "__main__":    random.seed(42)    simulate()
目的:用优先级规划模拟两台机器人在窄巷中相向而行,高优先级机器人先走,低优先级机器人检测到对方挡路时原地等待,最终两车无碰撞地分别到达对侧终点。
  1. class Robot:定义一台机器人,包含位置、目标点、优先级和速度属性。
  2. self.priority = priority记录该机器人的让行优先级,数值越小优先级越高。
  3. def move(self, others):每步决策的核心方法,输入其他机器人列表,输出本次移动结果。
  4. if other.priority < self.priority只有遇到比自己优先级更高的机器人才会让行,同级或更低则无视。
  5. abs(other.x - self.x) < 15判断对方是否进入了自己的“等待区”,避免过早刹车。
  6. return # 让行,原地等待让行就是什么都不做,当前位置保持不变。
  7. self.x += self.speed * dx / dist用方向向量归一化后移动固定步长,实现匀速直线运动。
  8. for t in range(60):最多模拟 60 个时间步,防止死锁时无限循环。
  9. robot_a.move([robot_b])每步先让 A 决策,再让 B 决策,模拟分布式逐个决策过程。

常见误区

误区我只要分别给每台机器人算好一条从起点到终点的最短路径,最后拼在一起就是多机器人规划了。路径都是各自最优的,加起来不也应该是系统最优吗?

正解完全忽略其他机器人的“独立规划”,在时间维度上一定会产生冲突。就像四个人都按自己的最短路线冲向同一路口,每个人都觉得自己的路线最优,结果就是撞成一团。多机器人规划的核心恰恰在于处理这些“别人的路径”——要么让行,要么错开时间,要么统一调度,而不是简单拼接。

为何常见:因为很多初学者是从单机器人路径规划入门的,习惯性地认为“避障 = 避开静态障碍”,没意识到其他机器人是动态的、会互相影响的。

误区集中式规划能看到所有机器人的信息,算出来的方案一定是全局最优的,所以它肯定比各管各的分布式规划更高级、更好用。

正解集中式规划确实能求出全局最优,但代价是联合状态空间维度随机器人数量指数爆炸。10 台机器人也许还能硬算,100 台就会让主控算到崩溃。真实系统里,分布式规划虽然只能求局部次优解,却能轻松扩展到几十上百台机器人,而且不会因为中央节点宕机而全盘瘫痪。工程上更常用“集中式做任务分配,分布式做局部避碰”的混合方案。

为何常见:因为在小规模演示中,集中式规划的“全局最优”效果太惊艳,让人误以为它只是慢一点,忽略了维度爆炸的本质瓶颈。

误区优先级规划不就是排个队吗?让机器人按编号先后逐个走,一点技术含量都没有,肯定不如那些高级算法。

正解优先级规划是整个多机器人领域最实用的方法之一,几乎所有商业仓储 AGV 系统都在用。它把复杂的多机协同问题拆解为“依次求解单机避障”,计算量小、行为可预测、易于调试,还能搭配动态优先级调整来逼近接近全局最优的效果。高级算法如果不能落地,反而不如这个“简单排队”可靠。

为何常见:因为教材里喜欢把集中式和分布式作为理论框架重点讲解,学生容易把“实现简单”和“效果差”划等号。

误区速度障碍法听名字就是为躲避障碍物设计的,静态障碍还可以,遇到动态移动的机器人肯定还是得靠全局重新规划路径。

正解速度障碍法的核心恰恰是“相对速度”——它把其他机器人的速度也折算进判断里,天生就是处理动态障碍的。碰撞锥会随着对方的速度变化而移动,只要对方的速度和位置可以观测,就能实时计算。动态窗口法更是专门为“每时每刻面对动态环境”设计的在线速度选择算法。

为何常见:从字面理解“障碍”两个字,以为只是静态地图上的障碍物,忽略了 VO 公式里最关键的是相对速度向量。

误区每台机器人都在避碰,大家遇到冲突都会让一步,那整个系统怎么可能会卡住?肯定不存在死锁问题。

正解局部避碰只保证“每一对机器人之间不碰撞”,无法保证“整个系统不陷入循环等待”。A 等 B、B 等 C、C 等 A,每一对看起来都在安全避让,但整体就是谁也动不了。就像路口堵死时每辆车都停着没撞,但所有人都被困在原地。所以工程系统必须额外设计死锁检测与恢复机制,比如等待图判环、超时让行或指令回退。

为何常见:因为死锁是系统级涌现现象,单看任何两台的交互都发现不了问题,必须从全局拓扑结构去观察。

面试题

Q1. 多机器人规划与单机器人规划最本质的区别是什么?

单选题 · easy

  • A.机器人数量成倍增加
  • B.机器人之间需要相互避让协调← 正确答案
  • C.需要更强的中央计算资源
  • D.需要更大的存储与带宽

答案:B。单机器人规划只需考虑自身与静态环境的关系,而多机器人规划的真正难点在于机器人之间的动态交互——它们互为移动障碍,需要协调避让。数量多、算力强只是表面差异,不是本质。

Q2. 集中式规划把多台机器人看作什么?

单选题 · easy

  • A.互不干扰的独立个体
  • B.一个联合状态空间整体求解← 正确答案
  • C.若干个串行的小任务
  • D.由环境决定的被动单元

答案:B。集中式规划将多台机器人的状态空间做笛卡尔积,形成一个高维联合状态空间,在其中搜索整体最优路径。它把“多机器人”视为一个组合体,而不是独立的个体。

Q3. 集中式规划在机器人数量增大时主要面临什么问题?

单选题 · mid

  • A.通信完全中断无法协作
  • B.状态空间维度随数量指数爆炸← 正确答案
  • C.传感器精度明显下降
  • D.无法获得全局环境信息

答案:B。联合状态空间的维度等于所有单机状态空间维度的和,每增加一台机器人,搜索空间的维度就增加一层,搜索量呈指数级增长。这就是集中式规划只适用于小规模系统的直接原因。

Q4. 优先级规划中低优先级机器人如何避让?

单选题 · mid

  • A.完全忽略高优先级轨迹
  • B.把高优先级轨迹视为动态障碍← 正确答案
  • C.让高优先级重新规划路径
  • D.等待中央控制器统一分配

答案:B。优先级规划按顺序求解:高优先级先确定轨迹,低优先级在规划时把前面那些轨迹在时空上占据的区域当作障碍来避让,从而保证不与高优先级机器人重叠。

Q5. 速度障碍法判断碰撞的关键依据是什么?

单选题 · mid

  • A.机器人当前位置与目标距离
  • B.机器人之间的相对速度向量← 正确答案
  • C.全局地图的静态障碍物
  • D.中央调度的任务优先级

答案:B。速度障碍法的核心是把两台机器人的速度之差作为相对速度,如果相对速度的方向落入碰撞锥,就意味着继续这样运动会撞上,需要调整自己的速度。判断关键不是静态距离,而是相对速度。

Q6. 动态窗口法搜索最优速度的限制范围是?

单选题 · mid

  • A.速度采样受限的可行窗口← 正确答案
  • B.机器人整个可达速度空间
  • C.每条路径上的离散点集合
  • D.所有机器人联合状态空间

答案:A。动态窗口法不会在整个速度空间盲目搜索,而是根据当前速度和加速度能力圈出一个“动态窗口”作为可行速度集合,只在这个窗口内采样和评分,既安全又高效。

Q7. 等待图中的有向环代表多机器人系统出现什么?

单选题 · hard

  • A.通信链路带宽不足
  • B.循环等待导致死锁← 正确答案
  • C.路径规划结果最优
  • D.所有机器人均已到达

答案:B。等待图中每个节点是一台机器人,每条边表示“我在等你让开”。如果图中出现有向环,说明 A 等 B、B 等 C、C 又等 A,形成循环等待——这正是死锁的充要判据。

Q8. 下列哪些属于多机器人规划的典型应用?

多选题 · easy

  • A.仓库自动导引车的群体调度← 正确答案
  • B.无人机编队飞行与物流配送← 正确答案
  • C.单台扫地机的墙边清扫
  • D.手机地图上的路径搜索

答案:AB。仓库 AGV 群体调度和无人机多机编队都是典型的多机器人协调场景。单台扫地机是单机器人规划,手机地图路径搜索是纯软件导航,不涉及实体机器人间的物理协调。

Q9. 分布式规划相对集中式规划的优势包括?

多选题 · mid

  • A.系统规模扩展性更好← 正确答案
  • B.计算压力分摊到各机器人← 正确答案
  • C.总能求得全局最优解
  • D.单点故障影响范围更小← 正确答案

答案:ABD。分布式规划让每台机器人只做局部决策,所以扩展性好、算力分散、即使某台故障也不会让全系统崩溃。但它的代价恰恰是难以保证全局最优,C 是集中式规划的优点而非分布式。

Q10. 下列哪些策略可以有效缓解多机器人死锁?

多选题 · hard

  • A.让高优先级机器人优先通行← 正确答案
  • B.设置超时等待并回退重规划← 正确答案
  • C.所有机器人加速向目标猛冲
  • D.检测等待图环路并提前让行← 正确答案

答案:ABD。优先级让行从根源上破坏循环等待的形成;超时回退能在死锁发生后打破僵局;检测等待图环路可以在死锁发生前预防。让所有机器人加速猛冲只会加剧冲突,让死锁更严重。