一、路径规划概述
大家好,我是老张。做机器人这行十几年了,今天咱们聊聊路径规划。
说实话,我第一次接触路径规划是在一个AGV项目上。那会儿车总撞墙,我以为是硬件问题,折腾了两周才发现——原来是路径没规划好。嗯,从那以后,我就再也不敢小看这个环节了。
1.1 路径规划到底是什么?
路径规划,说白了就是:给定起点和终点,找一条能走的路。
但这里有个坑——不是随便找条路就行。你得考虑:
- 能不能走通——别撞墙、别掉坑
- 好不好走——距离短、转弯少、能耗低
- 安不安全——远离障碍物、避开动态风险
我习惯把路径规划拆成两个问题:
- 路径搜索——在地图上找一条可行路径
- 轨迹优化——让这条路径更平滑、更可执行
核心定义:路径规划 = 在约束条件下,寻找从起点到终点的最优或可行路径的过程。
1.2 应用场景——我在项目中踩过的坑
机器人领域
我最早做的是仓储机器人。那会儿遇到一个典型问题:多台机器人在同一个仓库里跑,路径规划不好就会「死锁」——你堵我、我堵你,全卡住了。
后来我用了A*算法 + 交通管制策略才解决。具体做法是:
- 全局规划:用A*找一条粗路径
- 局部调整:遇到其他机器人时,动态避让
- 优先级调度:给每个任务分配优先级,低优先级让高优先级
自动驾驶
做自动驾驶的朋友应该深有体会——城市道路的路径规划比高速难多了。为什么?
- 路口多、车道复杂
- 行人、自行车、其他车辆混行
- 交通规则约束(红灯、实线、限速)
我记得有个项目,车在十字路口总是犹豫不决。查了半天,发现是行为规划层和运动规划层的接口没对齐。嗯,这种「层间通信」的问题,新手特别容易忽略。
游戏AI
游戏里的路径规划,我接触得少一些,但有个案例印象很深。一个RTS游戏,单位寻路时总是「挤成一团」。后来用了流场寻路(Flow Field),让大量单位像水流一样自然分散,效果好了很多。
我的建议:如果你是初学者,先从机器人场景入手。因为机器人环境相对可控,调试起来方便。自动驾驶和游戏AI的复杂度更高,适合进阶学习。
1.3 算法分类——一张图看懂全局
路径规划算法种类很多,我习惯从两个维度来分类:
全局 vs 局部
| 维度 | 全局路径规划 | 局部路径规划 |
|---|---|---|
| 地图信息 | 已知完整地图 | 仅知道传感器范围内的信息 |
| 计算时机 | 任务开始前或离线 | 实时在线计算 |
| 典型算法 | A*, Dijkstra, RRT | DWA, TEB, MPC |
| 输出 | 一条完整路径(点序列) | 当前时刻的速度指令 |
| 我的经验 | 适合静态环境,计算量大但结果稳定 | 适合动态环境,实时性强但可能陷入局部最优 |
注意:全局规划和局部规划不是二选一的关系。实际项目中,我通常两者结合使用——全局规划提供宏观路径,局部规划负责微观避障。这叫「分层规划」,后面章节会详细讲。
静态 vs 动态
这个维度很多人会忽略,但实际项目中特别重要。
- 静态环境:障碍物位置固定不变。比如工厂里的货架、家里的墙壁。这种场景用A*就够了。
- 动态环境:障碍物会移动。比如行人、其他车辆、宠物。这时候需要局部规划来实时避障。
我曾经在一个商场导览机器人项目上吃过亏——只做了全局规划,没考虑动态避障。结果机器人遇到小孩就傻站着,被投诉了好几次。后来加了DWA局部规划,才算是能正常工作了。
1.4 一个简单的例子——帮你建立直觉
说了这么多理论,咱们看个实际例子。
假设你有一个扫地机器人,要从客厅(起点)到厨房(终点)。中间有沙发、茶几、一只猫(动态障碍物)。
- 全局规划:先根据户型图,规划一条绕过沙发和茶几的路径。这时候猫还没动,所以不考虑它。
- 局部规划:机器人开始移动后,传感器发现猫突然跑到路中间了。于是局部规划器调整速度,绕开猫,再回到全局路径上。
你看,这就是典型的「全局+局部」配合。没有全局规划,机器人可能找不到厨房;没有局部规划,机器人可能撞到猫。
一个小技巧:刚开始做路径规划时,我建议你先在仿真环境里调试。比如用ROS的Gazebo或者Python的pygame。等算法跑通了,再上真机。不然真机撞坏了,老板会心疼的。
1.5 本章小结
这一章我们聊了:
- 路径规划的定义——找一条能走、好走、安全的路
- 三个典型应用场景——机器人、自动驾驶、游戏AI
- 算法分类——全局vs局部、静态vs动态
下一章,我会带大家手写一个最简单的路径规划算法——Dijkstra。别看它简单,很多高级算法都是它的变体。掌握了它,后面的路就好走了。
公众号:蓝海资料掘金营,微信deep3321