第1章:路径规划与轨迹规划的区别
各位工程师朋友,今天我们来聊聊一个基础但特别容易混淆的问题——路径规划和轨迹规划到底差在哪?
我刚开始做机器人项目那会儿,也傻傻分不清。有一次给AGV小车做导航,我吭哧吭哧规划出一条漂亮的路径,结果小车一跑起来就抖得像帕金森。后来才明白,我做的只是路径规划,根本没考虑速度和加速度。嗯,这里面的坑,我今天一次性给你讲透。
1.1 核心区别:几何 vs 时间
说白了,区别就一句话:
- 路径规划:只关心「走哪条路」——几何上的点序列
- 轨迹规划:关心「什么时间走到哪」——路径 + 时间信息
你想想看,路径规划的输出是一串坐标点:(x1,y1) → (x2,y2) → ... → (xn,yn)。但轨迹规划的输出是:在t1时刻到达(x1,y1),速度v1,加速度a1。这完全是两个层次的问题。
我的经验之谈:路径规划是「空间问题」,轨迹规划是「时空问题」。做项目时,我习惯先把路径规划搞定,再往上加时间维度。千万别一上来就搞轨迹规划,容易把自己绕晕。
1.2 时间参数化:给路径加上「心跳」
路径规划完了,怎么变成轨迹?答案就是——时间参数化。
假设我们有一条路径,用参数s表示(s从0到1):
路径:p(s) = (x(s), y(s)), s ∈ [0, 1]
现在我们要给s加上时间t的关系:
轨迹:p(t) = (x(s(t)), y(s(t)))
这个s(t)就是时间参数化函数。它决定了机器人沿着路径走的时候,什么时候加速、什么时候减速、什么时候匀速。
我记得有个项目,客户要求机器人必须在10秒内走完一段路径。我直接做了个线性时间参数化s(t) = t/10,结果机器人启动和停止时冲击特别大。后来改成S形曲线,才把问题解决。
小技巧:常用的时间参数化方法有梯形速度曲线和S形速度曲线。梯形简单但加速度有突变,S形平滑但计算量大。根据实际需求选,别盲目追求复杂。
1.3 速度/加速度约束:别让机器人「飞」起来
路径规划不考虑动力学约束,但轨迹规划必须考虑。为什么?
你想想看,如果路径上有个急转弯,但速度没降下来,机器人直接甩出去了。或者加速度太大,电机过载烧了。这些都是真实发生过的事故。
常见的约束包括:
- 速度约束:
|v| ≤ v_max(每个轴或合速度) - 加速度约束:
|a| ≤ a_max(保证不抖动) - 加加速度约束:
|j| ≤ j_max(保证舒适度,人机协作场景特别重要)
我曾经做过一个码垛机器人项目,一开始只约束了速度和加速度。结果运行一段时间后,减速器齿轮磨损特别快。后来加上加加速度约束,寿命直接翻了一倍。嗯,有些坑只有踩过才知道。
1.4 知识体系总览
下面这张图是我自己总结的,帮你理清路径规划和轨迹规划的关系:
1.5 一个简单的对比表格
| 对比项 | 路径规划 | 轨迹规划 |
|---|---|---|
| 核心问题 | 怎么走不撞墙? | 怎么走才平稳? |
| 输出内容 | 几何点序列 (x,y,z) | 时间序列 (t,x,y,z,v,a) |
| 考虑约束 | 障碍物、运动学 | 动力学、执行器限制 |
| 典型算法 | A*、RRT、Dijkstra | 梯形速度、S形曲线、多项式 |
| 应用场景 | 导航、避障 | 机械臂、数控机床 |
避坑指南:我曾经犯过一个低级错误——用路径规划的结果直接控制机器人运动。结果在拐角处速度没降下来,机器人直接撞上了工件。后来我养成了习惯:路径规划做完后,必须做轨迹规划,加上速度/加速度约束,再下发执行。这个流程,一步都不能省。
1.6 实际项目中的选择策略
那么问题来了:什么时候只需要路径规划?什么时候必须做轨迹规划?
我的判断标准很简单:
- 低速场景(如AGV在仓库里慢悠悠走):路径规划就够了,速度慢到可以忽略动力学
- 高速场景(如机械臂高速抓取):必须做轨迹规划,否则机器人会「飞」
- 人机协作场景(如机器人旁边有人):轨迹规划 + 加加速度约束,保证安全舒适
嗯,说白了就是看你的机器人跑多快。跑得慢,路径规划够用;跑得快,轨迹规划必须上。这个道理,我是在摔过几次跟头后才真正理解的。
好了,这一章的内容就到这里。记住一句话:路径规划告诉你「去哪」,轨迹规划告诉你「怎么去」。两者缺一不可,但千万别搞混了。