4. 路径与轨迹的区别:路径规划 vs 轨迹规划、时间参数化、速度与加速度约束
很多刚入行的朋友,甚至一些工作了两三年的工程师,都容易把「路径」和「轨迹」混为一谈。我当年刚接触机器人时也犯过这个错——以为规划出一条不撞墙的路线就万事大吉了。结果呢?机器人是没撞墙,但抖得像帕金森,末端执行器根本没法用。
说白了,路径只关心「走哪条路」,轨迹才关心「怎么走」。今天我们就把这个核心区别彻底讲透。
4.1 路径 vs 轨迹:本质差异
先看一个最直观的例子。你让机械臂从A点移动到B点:
- 路径规划:输出一系列空间位置点(P₁, P₂, ..., Pₙ),只描述几何形状。
- 轨迹规划:在路径点的基础上,给每个点分配时间戳和运动学状态(速度、加速度)。
我习惯用一个比喻来理解:
路径就像地图上的路线,轨迹则像你实际开车时的油门、刹车和方向盘操作。
| 维度 | 路径规划 | 轨迹规划 |
|---|---|---|
| 输出内容 | 位置序列(几何) | 位置 + 时间 + 速度 + 加速度 |
| 约束类型 | 避障、可达性 | 运动学、动力学、平滑性 |
| 典型算法 | A*、RRT、PRM | S形曲线、梯形曲线、多项式插值 |
| 是否考虑时间 | 否 | 是(核心) |
关键认知:路径规划解决的是「能不能到」,轨迹规划解决的是「能不能稳到」。很多抖动问题,根源就在于只做了路径规划,没做轨迹规划。
4.2 时间参数化:给路径注入灵魂
路径只是一串冰冷的坐标点。要让机器人动起来,必须引入时间参数 t。这个过程就叫时间参数化。
假设我们有一条路径 P(s),其中 s 是路径参数(0 ≤ s ≤ 1)。时间参数化就是找到一个函数 s(t),把路径参数映射到时间轴上。
举个例子:
// 路径点(关节空间)
q_path = [0°, 30°, 60°, 90°]
// 时间参数化后
t = 0s → q = 0°
t = 1s → q = 30°
t = 2s → q = 60°
t = 3s → q = 90°
看起来很简单对吧?但实际项目中,时间参数化的选择直接影响运动品质。我记得有一次调试码垛机器人,用了均匀时间分配,结果末端在拐角处速度突变,整个托盘都晃起来了。
我的经验:时间参数化时,尽量让路径曲率大的区域分配更多时间。说白了就是「弯道慢行,直道快跑」。这个原则能避免大部分由几何路径引起的抖动。
4.3 速度与加速度约束:抖动的根源
为什么机器人会抖?
绝大多数情况下,是因为加速度不连续。
你想想看,加速度突变意味着力突变。电机输出力突然变化,机械结构就会产生冲击,反映在末端就是抖动。
常见的约束类型:
- 速度约束:v ≤ v_max(电机转速限制)
- 加速度约束:a ≤ a_max(电机力矩限制)
- 加加速度约束:j ≤ j_max(冲击限制,直接决定抖动程度)
我曾经在一个焊接机器人项目里,只加了速度和加速度约束,没管加加速度。结果焊缝表面全是波纹,质检直接打回。后来加上加加速度约束,波纹立刻消失。
避坑指南:我曾经见过有人把加速度约束设得特别小,以为这样就不抖了。结果机器人慢得像蜗牛,节拍完全跟不上。记住:约束不是越小越好,而是要在「平滑」和「效率」之间找平衡。
4.4 路径规划 vs 轨迹规划:完整流程
在实际工程中,这两个阶段是串联的。我画了一张图,帮你理清整体逻辑:
4.5 实战中的常见陷阱
讲几个我踩过的坑,希望能帮你省点调试时间:
- 路径点太稀疏:两个路径点之间距离过大,轨迹插值后速度曲线会出现尖峰。我建议路径点间距不超过机器人工作空间的 5%。
- 忽略关节空间 vs 笛卡尔空间:在笛卡尔空间规划的路径,映射到关节空间后速度可能突变。我习惯在关节空间做轨迹规划,除非有严格的末端姿态要求。
- 加速度约束设成常数:不同关节的惯量不同,统一约束会导致某些关节过载。最好每个关节单独设置。
一句话总结:路径规划告诉你「去哪里」,轨迹规划告诉你「怎么去」。没有轨迹规划的路径,就是一张没有红绿灯的地图——理论上能到,实际开起来全是问题。