一、路径规划到底在规划什么?

说实话,我刚入行那会儿,觉得路径规划不就是「从A点到B点找条路」嘛。后来被现实狠狠教育了几次——有一次在仓库里,我的AGV明明规划出了最短路径,结果卡在货架中间动弹不得。嗯,从那以后我才真正理解,路径规划远没想象中那么简单。

路径规划,说白了就是:在给定的环境中,找出一条从起点到终点的可行路径,同时满足某些性能指标。这里的「可行」很关键——你不能撞墙、不能压线、不能和障碍物亲密接触。

我个人习惯把路径规划拆成三个核心问题:

  • 我在哪?——定位问题,你得知道起点
  • 我要去哪?——目标设定,终点坐标
  • 我怎么去?——路径搜索,核心算法

你想想看,第三个问题才是我们真正要啃的硬骨头。而「怎么去」又分成了两个流派:全局规划和局部规划。下面我详细说说。

二、全局路径规划 vs 局部路径规划

这两个概念,我建议你从「地图信息是否完整」这个角度去理解。

2.1 全局路径规划

全局规划,也叫离线规划。它假设你手里有一张完整的地图——障碍物位置、道路宽度、可行区域,全都已知。算法在这张静态地图上算出一条从起点到终点的路径。

我在项目中遇到过最典型的场景:工厂投产前,我们先拿到CAD图纸,把货架、工作台、通道全部标注好。然后让AGV跑全局规划,生成一条「理论上最优」的路径。

常用的全局规划算法有:

  • A*算法——最经典,启发式搜索,效率高
  • Dijkstra——保证最短路径,但慢
  • RRT/RRT*——适合高维空间,随机采样

但全局规划有个致命弱点:它假设环境是静态的。一旦出现动态障碍物——比如突然有人走过、叉车临时停靠——全局路径就废了。

2.2 局部路径规划

局部规划,也叫在线规划。它只依赖传感器实时感知的局部环境信息(比如激光雷达扫描到的2米范围),在全局路径的引导下,实时调整行驶轨迹。

我经常跟团队说:全局规划负责「大方向」,局部规划负责「躲坑」

常见的局部规划方法:

  • DWA(动态窗口法)——在速度空间采样,选最优轨迹
  • TEB(时间弹性带)——优化轨迹的时间与空间
  • MPC(模型预测控制)——带约束的滚动优化
⚠️ 我曾经踩过的坑: 有一次局部规划的参数调得太激进,AGV为了躲一个纸箱,直接原地打转,差点撞到货架。后来我学乖了——局部规划的避障半径和最大转角一定要做限幅,别让机器人「太灵活」。

2.3 两者的关系

全局规划和局部规划不是二选一,而是配合使用。我画了一张图帮你理解:

路径规划双层级架构 全局路径规划 输入:完整静态地图 输出:全局参考路径 特点:离线、全局最优 局部路径规划 输入:传感器实时数据 输出:实时控制指令 特点:在线、动态避障 提供参考路径 反馈执行状态 底层运动控制 电机驱动 → 速度调节 → 轨迹跟踪 环境感知(激光雷达/视觉/IMU)

你看,全局规划先算出一条粗路径,局部规划再根据实时感知做微调。两者缺一不可。

三、路径规划的评价指标

路径好不好,不能光凭感觉。我一般用三个核心指标来评价:

3.1 最短路径

这是最直观的指标——路径总长度最小。但我要提醒你:最短路径 ≠ 最优路径

举个例子,我在一个密集仓储项目里,A*算出来的最短路径要从两个货架中间挤过去。路径确实短,但AGV每次经过都要减速到0.1m/s,生怕刮蹭。结果总耗时反而更长。

💡 我的经验: 最短路径适合空旷环境。在复杂场景里,别死磕「最短」,要综合考虑。

3.2 时间最优

时间最优考虑的是「从起点到终点需要多久」。它比最短路径更实用,因为时间 = 距离 / 速度,而速度受曲率、障碍物密度影响。

我常用的时间最优评价函数长这样:

J = ∫ (w₁·v(t) + w₂·κ²(t) + w₃·δ²(t)) dt

其中:

  • v(t)——速度,越大越好
  • κ(t)——曲率,越小越好(转弯减速)
  • δ(t)——与障碍物的距离,越大越安全

说白了,时间最优就是在安全和效率之间找平衡

3.3 平滑度

平滑度这个指标,新手容易忽略。但做过实车调试的人都知道——不平滑的路径,机器人根本跑不起来

平滑度通常用路径的曲率变化率(jerk)来衡量。曲率突变的地方,机器人要么急刹,要么甩尾。

我评估平滑度时看三个维度:

指标 含义 理想值
最大曲率 路径最弯处的弯曲程度 < 0.2 m⁻¹
曲率变化率 曲率的变化速度 < 0.5 m⁻¹/s
路径连续性 至少C²连续(曲率连续) C²及以上
🔧 实用技巧: 我一般先用A*算出一条折线路径,然后用B样条曲线做平滑。这样既保证了全局最优性,又让路径可执行。

四、三个指标的权衡

你可能会问:这三个指标能不能同时做到最优?

答案是:不可能。最短路径往往不平滑,平滑路径可能绕远路,时间最优又可能牺牲安全性。

我个人的做法是:

  1. 先保证安全性——路径不能碰障碍物,这是底线
  2. 再追求平滑度——让机器人能稳定跟踪
  3. 最后优化时间——在安全和平滑的基础上,尽量快

这个优先级顺序,是我在多次现场调试中总结出来的。你想想看,一条路径再短再快,如果机器人跑着跑着就撞了,那还有什么意义?

好了,这一章的内容就到这里。路径规划的定义、全局与局部的区别、三个核心评价指标,我都结合自己的实战经验讲了一遍。下一章我们会深入A*算法的实现细节,到时候手撕代码,敬请期待。


专注资料整理