路径规划与轨迹规划的区别:路径 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%。
下面这张图展示了时间参数化的核心逻辑:
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 路径规划与轨迹规划的协作流程
在实际机器人系统中,两个模块是串联工作的:
- 环境感知:获取障碍物、目标位置
- 路径规划:搜索无碰撞的几何路径(如RRT、A*、PRM)
- 路径平滑:用B样条或贝塞尔曲线使路径连续可微
- 时间参数化:给路径绑定时间,生成速度/加速度曲线
- 运动学约束检查:验证轨迹是否超限,必要时重新参数化
- 下发执行:将轨迹点发送给伺服控制器
这里有个容易忽略的点:路径平滑必须在时间参数化之前做。如果路径本身不光滑(比如有尖角),时间参数化后速度会突变,运动学约束根本满足不了。
避坑指南:我曾经在路径规划后直接做时间参数化,结果路径上有几个折角,导致加速度瞬间冲到10 m/s²,电机直接报错。后来在路径规划和轨迹规划之间加了一层路径平滑(用三次样条插值),问题才解决。记住——路径的光滑度决定了轨迹的可行性。
3.6 本章小结
路径规划和轨迹规划的区别,说白了就是「地图」和「驾驶」的区别。路径告诉你走哪条路,轨迹告诉你什么时候踩油门、什么时候刹车。
三个核心要点:
- 路径是几何的,只关心空间位置;轨迹是时间的,每个点都有速度、加速度。
- 时间参数化是把路径映射到时间轴的过程,梯形和S形是最常用的两种方式。
- 运动学约束是轨迹规划的硬边界,速度、加速度、加加速度一个都不能少。