全局路径规划 vs 局部路径规划:区别、联系、典型算法概览
做机器人路径规划这些年,我经常被问到同一个问题:「全局规划和局部规划到底有啥区别?能不能只用一个?」
说实话,我刚入行时也犯过这个迷糊。有一次做AGV项目,我天真地以为只要一个A*算法就能搞定所有场景。结果呢?机器人倒是能找到从A到B的最短路径,但遇到动态障碍物时直接傻眼——要么撞上去,要么原地打转。
嗯,那次教训让我彻底明白了:全局规划和局部规划,就像人的大脑和眼睛,缺一不可。
一、核心区别:一个看地图,一个看眼前
说白了,全局路径规划解决的是「怎么从起点走到终点」的问题。它需要一张完整的地图,然后算出一条从起点到终点的可行路径。我习惯叫它「宏观决策者」。
局部路径规划解决的是「下一步该怎么走」的问题。它只关心机器人周围几米内的环境,处理动态障碍物、避让行人、平滑轨迹。我管它叫「微观执行者」。
| 对比维度 | 全局路径规划 | 局部路径规划 |
|---|---|---|
| 输入信息 | 全局地图(已知或SLAM构建) | 局部传感器数据(激光雷达、深度相机) |
| 计算范围 | 整个地图空间 | 机器人周围几米到几十米 |
| 更新频率 | 低(地图变化时才重规划) | 高(每帧传感器数据都更新) |
| 实时性要求 | 低(毫秒级即可) | 高(需要毫秒级响应) |
| 典型输出 | 离散路径点序列 | 速度指令(线速度+角速度) |
关键认知:全局规划告诉你「要去哪」,局部规划告诉你「怎么走」。两者是上下游关系,不是替代关系。
二、典型算法概览
全局路径规划算法
我个人习惯把全局算法分成三类:
- 基于图搜索:Dijkstra、A*、D* Lite。A*是我用得最多的,它用启发式函数引导搜索方向,比Dijkstra快很多。我在仓储机器人项目里,用A*在1000×1000的栅格地图上,平均0.2秒就能找到路径。
- 基于采样:RRT、RRT*、PRM。RRT适合高维空间,比如机械臂的关节空间规划。但RRT生成的路径通常很「锯齿」,需要后处理平滑。
- 基于智能优化:遗传算法、蚁群算法。说实话,这类算法在工业界用得不多,因为计算量大、稳定性差。我只有在学术研究时才会碰它们。
我的选型建议:如果你做的是二维平面移动机器人,无脑选A*。三维空间或高自由度机械臂,考虑RRT*。别在智能优化算法上浪费时间,除非你发。
局部路径规划算法
局部规划算法,说白了就是「怎么让机器人走得稳、不撞墙」。我接触过的算法有这些:
- DWA(动态窗口法):在速度空间采样,评估每条轨迹的安全性、速度、朝向。ROS里默认的局部规划器就是它。我在AGV项目里用过,效果不错,但容易陷入局部极小值。
- TEB(时间弹性带):把路径看作一条「弹性带」,通过优化调整带子的形状。它比DWA更平滑,能处理更复杂的约束(比如运动学约束)。我最近的项目都在用TEB。
- MPC(模型预测控制):基于模型预测未来轨迹,滚动优化。这是目前最前沿的方法,但计算量大,对硬件要求高。我只有在高速移动机器人上才用MPC。
避坑指南:我曾经在一个人机协作项目里,直接用DWA做局部规划。结果机器人遇到人时,总是急刹车然后重新规划,导致人机交互体验极差。后来换成TEB,加入了「人机距离」约束项,才解决了这个问题。
三、两者的联系:你中有我,我中有你
你想想看,全局规划和局部规划其实是一对「搭档」。
全局规划给局部规划提供参考路径。局部规划沿着这条参考路径走,同时处理动态障碍物。如果局部规划发现参考路径被堵死了(比如突然出现一堵墙),它会通知全局规划重新计算。
我习惯用这个比喻:全局规划是「导航仪」,局部规划是「驾驶员」。导航仪告诉你走哪条路,驾驶员负责看路况、避让行人、保持车道。导航仪不会管你前面有没有车,驾驶员也不会管最终目的地是哪里。
四、知识体系结构图
下面这张图,是我自己总结的路径规划知识体系。你看一眼就能明白全局和局部的关系:
五、实际项目中的选型建议
我在不同项目里用过不同的组合,给你几个参考:
- 仓储AGV:全局用A* + 局部用DWA。地图固定,路径简单,DWA足够应对偶尔出现的行人。
- 服务机器人:全局用A* + 局部用TEB。人机交互场景多,TEB的平滑轨迹和约束处理能力更优。
- 自动驾驶:全局用D* Lite(动态环境) + 局部用MPC。高速场景对实时性和轨迹质量要求极高。
- 无人机:全局用RRT* + 局部用MPC。三维空间搜索,RRT*能处理复杂障碍物分布。
我的经验:别一上来就追求「最先进」的算法。先跑通A* + DWA这个经典组合,理解它们的优缺点,再根据实际场景做替换。我见过太多人一上来就搞MPC,结果调参调了三个月还没跑起来。
六、总结
全局路径规划和局部路径规划,说白了就是「战略」和「战术」的关系。战略定方向,战术保执行。两者配合好了,你的机器人才能既找得到路,又走得了路。
嗯,这一章的内容就到这里。记住:选型没有银弹,关键是根据你的机器人类型、环境复杂度、实时性要求来权衡。
核心要点回顾:
- 全局规划:宏观决策,基于地图,低频更新
- 局部规划:微观执行,基于传感器,高频更新
- 两者是上下游关系,需要协同工作
- 选型时考虑:环境动态性、实时性要求、机器人运动学约束
可可精品资料库