路径规划与轨迹规划的区别:路径 vs 轨迹、时间参数化、运动学约束的引入

很多刚入行的朋友问我:「路径规划和轨迹规划,不就是一回事吗?」
说实话,我当年也这么以为。直到第一次把路径直接丢给机器人跑,结果电机嘎嘎响,末端抖得像筛糠……嗯,那次之后我才真正搞明白——路径是几何的,轨迹是时间的。

这一章,我们就来掰扯清楚这两个概念的本质区别。我会结合自己踩过的坑,带你理解为什么轨迹规划必须引入时间参数化和运动学约束。

3.1 路径 vs 轨迹:几何与时间的分水岭

先给个最直白的定义:

  • 路径(Path):空间中的一条几何曲线,只描述「从哪到哪、经过哪些点」。没有速度、没有加速度、没有时间。
  • 轨迹(Trajectory):路径 + 时间信息。每个点都绑定了时刻、速度、加速度,甚至加加速度(Jerk)。

说白了,路径是地图上的路线,轨迹是开车时的油门和刹车。

核心区别一句话:路径是q(s),轨迹是q(t)。s是路径参数(比如弧长),t是物理时间。

我在项目中遇到过一位同事,他把A*算法搜出来的路径直接发给伺服驱动器。结果机器人每到拐角就急停急启,焊缝质量一塌糊涂。为什么?因为路径只给了位置序列,没告诉机器人「什么时候该减速、什么时候该加速」。

3.2 时间参数化:给路径注入灵魂

路径规划完成后,我们得到了一串离散点或一条样条曲线。但机器人控制器需要的是每个控制周期(比如1ms)的位置指令。这就需要对路径做时间参数化。

时间参数化的本质是:
路径参数 s → 时间 t
即找到一个单调递增函数 s(t),使得 q(t) = q(s(t))。

常见的参数化方式有三种:

方式 特点 适用场景
匀速参数化 s(t) = v·t,最简单 传送带抓取、简单搬运
梯形速度参数化 加/减速段 + 匀速段 大多数工业机器人点位运动
S形速度参数化 加加速度连续,运动平滑 高精度加工、医疗机器人

我的习惯:只要不是特别赶时间,我都会用S形速度参数化。虽然计算量稍大,但电机寿命和末端精度都明显更好。有一次在打磨项目里,从梯形换成S形后,表面粗糙度直接降了30%。

下面这张图展示了时间参数化的核心逻辑:

时间参数化:从路径到轨迹 路径规划输出 q(s) 几何点序列 时间参数化 s(t) 映射函数 速度/加速度约束 轨迹输出 q(t), v(t), a(t) 关键点: 路径只关心「走哪条路」,轨迹关心「什么时候走到、走多快、加减速多猛」。 时间轴上的轨迹点示例 t=0s q₀, v=0 t=0.5s q₁, v=0.2m/s t=1.0s q₂, v=0.5m/s t=1.5s q₃, v=0.3m/s t=2.0s q₄, v=0

3.3 运动学约束的引入:为什么不能随便跑

你想想看,如果只给机器人一条路径,不限制速度和加速度,会发生什么?

  • 速度超限:电机转速跟不上,丢步或过载报警。
  • 加速度过大:末端抖动、结构共振,甚至把工件甩飞。
  • 加加速度(Jerk)突变:轨迹不平滑,减速器磨损加剧。

所以,轨迹规划必须引入运动学约束。常见的约束包括:

约束类型 物理含义 典型限值
关节速度 每个关节的最大转速 如 180°/s
关节加速度 电机力矩限制 如 360°/s²
末端速度 TCP在笛卡尔空间的最大线速度 如 2 m/s
末端加速度 避免工件惯性力过大 如 5 m/s²
加加速度 冲击度,影响振动和寿命 如 50 m/s³

我曾经踩过的坑:在一条汽车焊装线上,我只约束了关节速度,没管加速度。结果机器人启动瞬间电流飙升,直接跳闸。后来加了加速度约束,问题才解决。记住——速度决定能不能跑,加速度决定跑得稳不稳。

3.4 一个完整的例子:从路径到轨迹的转换

假设我们有一条直线路径,从点A(0,0)到点B(1,0),路径长度1米。

步骤1:路径定义

// 路径:直线插补
q(s) = (s, 0),  s ∈ [0, 1]

步骤2:选择时间参数化方式
这里用梯形速度曲线,最大速度 v_max = 0.5 m/s,加速度 a_max = 1.0 m/s²。

步骤3:计算时间参数

加速段时间:t_acc = v_max / a_max = 0.5 s
加速段位移:s_acc = 0.5 * a_max * t_acc² = 0.125 m
匀速段位移:s_const = 1 - 2 * 0.125 = 0.75 m
匀速段时间:t_const = s_const / v_max = 1.5 s
总时间:T = 2 * 0.5 + 1.5 = 2.5 s

步骤4:生成轨迹点(每10ms一个点)

t=0.00s: q=(0.000, 0), v=0.00, a=1.0
t=0.10s: q=(0.005, 0), v=0.10, a=1.0
t=0.50s: q=(0.125, 0), v=0.50, a=0.0
t=1.00s: q=(0.375, 0), v=0.50, a=0.0
t=2.00s: q=(0.875, 0), v=0.50, a=0.0
t=2.50s: q=(1.000, 0), v=0.00, a=-1.0

我个人习惯:在实际工程中,我不会手动算这些。我会用样条曲线 + 时间最优参数化算法(比如TOPP或TOPP-RA)。这些算法能自动在约束下找到最快且可行的轨迹。但理解背后的梯形/S形原理很重要——调试时能快速定位问题。

3.5 路径规划与轨迹规划的协作流程

在实际机器人系统中,两个模块是串联工作的:

  1. 环境感知:获取障碍物、目标位置
  2. 路径规划:搜索无碰撞的几何路径(如RRT、A*、PRM)
  3. 路径平滑:用B样条或贝塞尔曲线使路径连续可微
  4. 时间参数化:给路径绑定时间,生成速度/加速度曲线
  5. 运动学约束检查:验证轨迹是否超限,必要时重新参数化
  6. 下发执行:将轨迹点发送给伺服控制器

这里有个容易忽略的点:路径平滑必须在时间参数化之前做。如果路径本身不光滑(比如有尖角),时间参数化后速度会突变,运动学约束根本满足不了。

避坑指南:我曾经在路径规划后直接做时间参数化,结果路径上有几个折角,导致加速度瞬间冲到10 m/s²,电机直接报错。后来在路径规划和轨迹规划之间加了一层路径平滑(用三次样条插值),问题才解决。记住——路径的光滑度决定了轨迹的可行性。

3.6 本章小结

路径规划和轨迹规划的区别,说白了就是「地图」和「驾驶」的区别。路径告诉你走哪条路,轨迹告诉你什么时候踩油门、什么时候刹车。

三个核心要点:

  • 路径是几何的,只关心空间位置;轨迹是时间的,每个点都有速度、加速度。
  • 时间参数化是把路径映射到时间轴的过程,梯形和S形是最常用的两种方式。
  • 运动学约束是轨迹规划的硬边界,速度、加速度、加加速度一个都不能少。