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 轨迹规划:完整流程

在实际工程中,这两个阶段是串联的。我画了一张图,帮你理清整体逻辑:

路径规划 → 轨迹规划 完整流程 路径规划 输出:路径点序列 时间参数化 输出:s(t) 映射函数 轨迹生成 输出:q(t), v(t), a(t) 约束检查:速度 ≤ v_max?加速度 ≤ a_max?加加速度 ≤ j_max? 不满足则重新参数化 最终输出:平滑轨迹

4.5 实战中的常见陷阱

讲几个我踩过的坑,希望能帮你省点调试时间:

  1. 路径点太稀疏:两个路径点之间距离过大,轨迹插值后速度曲线会出现尖峰。我建议路径点间距不超过机器人工作空间的 5%。
  2. 忽略关节空间 vs 笛卡尔空间:在笛卡尔空间规划的路径,映射到关节空间后速度可能突变。我习惯在关节空间做轨迹规划,除非有严格的末端姿态要求。
  3. 加速度约束设成常数:不同关节的惯量不同,统一约束会导致某些关节过载。最好每个关节单独设置。

一句话总结:路径规划告诉你「去哪里」,轨迹规划告诉你「怎么去」。没有轨迹规划的路径,就是一张没有红绿灯的地图——理论上能到,实际开起来全是问题。