想象一下,你是舞台边的一位编舞师。你要让舞者的手从腰间优雅地举到头顶,但这只是“空间目标”。真正难的是如何指挥身体:先转肩膀还是先抬肘?肩膀转多少度、手腕弯多少度?你可以直接告诉舞者“关节该怎么动”,也可以只在她面前画一条手要经过的弧线,让她自己用身体去贴合。这两种指挥方式,正是机器人轨迹规划中关节空间与笛卡尔空间的两套思路。本文用“编舞”贯穿始终:让机械臂像舞者一样,从起点姿态顺畅、安全地过渡到终点姿态。你会看到如何用插值控制角度变化、如何规划末端走直线或圆弧、如何在最短时间内完成动作、又如何让多段动作平滑衔接——最终理解一条工程上真正可执行的轨迹是怎样设计出来的。
轨迹规划是机械臂从“能动”走向“动得好”的必修课。掌握关节空间与笛卡尔空间两套方法论,你能为工业机器人设计出安全、高效、可落地的运动方案,这是机器人应用工程师的核心技能之一。
可视化演示
展示关节空间多轴S曲线插值、笛卡尔空间末端执行器直线圆弧路径规划、位置-速度-加速度平滑过渡与混合,交互切换核心环节。
本节配有交互动效(进入视口后自动加载,约 3KB)。
关节空间轨迹规划 各关节角度θ(t)独立插值,使用S曲线实现平滑启停 4个关节同时运动到目标角度,无奇点风险计算简单 θ_i(t) = θ_start + (θ_end - θ_start) × S(t) 关节空间规划避免逆运动学求解适合点到点运动
轨迹规划概述
编舞师站在舞台边,思考怎样让舞者的手从腰间举到头顶。她可以在脑海里画出一条空中的弧线——这是“空间路线”,但它并不等于舞者身体的真实指令。真正落地的是:肩膀转多少度、肘部弯多少度、手腕在什么时刻翻转。机器人也是这样:给机械臂一个目标位置,相当于导演画出空间路线;告诉每个关节转动的目标角度,则相当于舞者的身体指令。
轨迹规划的任务,就是在已知起点、终点和过程约束的条件下,生成一条“关节角度随时间变化”的曲线。这条曲线记为 $q(t)$,其中 $q$ 是关节向量,$t$ 是时间。规划结果的质量,体现在轨迹是否平滑、是否满足速度与加速度上限、是否会触碰机械限位。生产中常用的评价指标包括:是否无碰撞、是否在奇异点附近、总运动时间是否可接受。
从坐标系来看,规划可分为两个流派。关节空间规划直接对每个关节角度做插值,计算简单、不易遇到奇异点,但末端走出的路径往往不是直线;笛卡尔空间规划则针对末端执行器的位置与姿态做插值,视觉直观、能严格约束末端路径,但需要在每个时刻通过逆运动学换算回关节角度。
所以,轨迹规划本质上就是“选函数、定系数”。舞者的手怎么从 A 点移到 B 点,取决于导演选的是简洁匀速的动作、还是更细腻的变速动作。选好函数形式之后,再用起止条件把系数一个个解出来。
- 关节轨迹$q(t)$ 表示某个关节角度随时间的函数,它是机器人控制器的执行指令。
- 零次项$a_0$ 是 $t=0$ 时的初始角度,由起点边界条件确定。
- 幂次项$a_k t^k$ 中每一个幂次项共同塑造轨迹曲线,低阶项决定整体走势,高阶项决定曲线细节。
- 阶数选择$n=3$ 是三次多项式,$n=5$ 是五次多项式;阶数越高,可满足的边界条件越丰富。
关节空间插值
排练厅里,导演对着舞者喊:“肩膀转 30 度,肘再弯 60 度!”这种直接给关节下指令的方式,就是关节空间插值的真实手感。机器人的每个关节都由电机驱动,如果直接对关节角度随时间做插值,控制回路最容易实现,也最稳定。
最经典的是三次多项式插值。假设某个关节的起始角度为 $q_0$,目标角度为 $q_f$,运动周期为 $T$。我们希望轨迹满足:起始、终止角度分别对齐,且起始、终止速度都为 0(避免启动和停止时的冲击)。这恰好是 4 个条件,可以唯一确定三次多项式中的 4 个未知系数。
三次多项式能保证位置和速度连续,但加速度在起止时刻会发生跳变。若希望加速度也连续,工程上会升级到五次多项式。五次多项式有 6 个未知系数,除位置、速度外还能同时约束起止加速度,机械臂动作会更柔和。不过阶数越高,系数计算越复杂,也更容易引入数值误差。一般工程上优先用三次,要求高柔顺性时用五次。
编舞师回头看自己排的动作:三次多项式有点像“匀速抬手、轻轻停住”的基础动作;五次多项式则是“起手慢、中间快、收手柔”的细腻处理。关节空间插值的关键,就是选对花样的阶数,并确保每个关节都别超速。
\displaystyle q(t)=a_0+a_1t+a_2t^2+a_3t^3,\qquadq(0)=q_0,\quad q(T)=q_f,\quad \dot{q}(0)=0,\quad \dot{q}(T)=0- 三次多项式形式选择 $q(t)=a_0+a_1t+a_2t^2+a_3t^3$ 作为关节轨迹的假设形式,未知数是 4 个系数。
- 起点对齐条件$q(0)=q_0$ 保证动作开始时关节正好在起始角度,不会一开始就跳变。
- 终点与静止条件$q(T)=q_f$ 和 $\dot{q}(T)=0$ 保证结束时停在目标角度,同时速度归零。
- 系数求解结果联立边界条件解得二次、三次项系数,这两个系数决定了整段曲线的加速与减速特征。
笛卡尔空间插值
导演改主意了:她要求舞者的手指尖必须沿一条笔直的线,从裙边抬到眉心。因为舞台灯光打下来,观众会看到指尖划过的光影,任何弧线都会破坏效果。这就是笛卡尔空间规划的场景:末端执行器必须走精确的直线、圆弧或其他几何路径。
笛卡尔空间直线插值的公式很直观:已知起点位置 $p_0$ 和终点位置 $p_f$,让末端位置 $p(t)$ 在 $T$ 秒内从起点匀速滑向终点。这个公式描述的是末端位置,真正执行时还要把每个时刻的 $p(t)$ 通过逆运动学换算为关节角度。
圆弧插值是直线插值的孪生兄弟。当末端需要绕一个圆弧过渡时,可以先通过空间中不共线的三个点求出圆心与半径,再将角度匀速插值,即每次只更新角度参数,位置由圆心和半径重新合成。工程上常把圆弧插值用于机械臂转弯处,实现“直—弧—直”的连续路径。笛卡尔空间规划看似优雅,却有一个代价:末端走直线时,关节角往往呈复杂的非线性变化,甚至可能经过奇异点,因此必须配合运动学检查来使用。
导演手在空中画直线,舞者用身体去够——这就是笛卡尔空间规划的本质:目标很明确,但身体(关节)怎么扭,要额外费心去解算,而且还要随时提防动作变形或失控。
- 起点位置$p_0$ 是末端执行器在笛卡尔空间中的起始坐标。
- 位移向量$p_f - p_0$ 表示从起点指向终点的总位移,方向和长度确定了路径走向。
- 时间比例$\frac{t}{T}$ 是归一化时间,从 0 逐渐变到 1,表示运动完成的进度。
- 直线特性将时间比例乘上位移向量,再叠加起点,就得到当前位置;因为进度线性增长,所以位置沿直线运动。
时间最优轨迹
排练的时间总是紧张的。导演想:能不能让这段动作用最短时间完成?但舞者的肌肉力量和柔韧性有限,动作太快容易拉伤。在机器人世界里同样如此:电机有峰值扭矩,机械结构有加速度极限,盲目提速只会让轨迹失控。
时间最优轨迹规划,就是在满足速度与加速度约束的前提下,寻找最短运动周期。它的数学表达是一个简单的优化问题:目标是最小化总时间 $T$,约束条件则包括关节速度不超过上限 $v_{\max}$、关节加速度不超过上限 $a_{\max}$。
具体求解时,最常见的是梯形速度剖面:加速段以最大加速度提高速度,中间保持最高速度匀速运动,末尾以最大加速度减速。这个“先冲、再稳、后收”的过程,正是约束边界内的最短时间方案。若距离较短,加速段还没到最高速度就必须减速,速度剖面会退化成三角形。
时间最优不是“越猛越好”,而是“在安全边界上踩满油门”。像驾驶手动挡汽车,老司机总是用最大加速度起步,再匀速巡航,最后精准刹车——这就是时间最优的驾驶哲学。
- 优化目标$\min_{T} T$ 表示寻找使运动总时间最短的时间参数 $T$。
- 速度约束$|\dot{q}(t)| \le v_{\max}$ 保证任何时刻关节转速都不超过电机安全范围。
- 加速度约束$|\ddot{q}(t)| \le a_{\max}$ 限制关节的加加速度来源,防止驱动力矩超限或机械冲击。
平滑过渡技术
舞蹈中最难的不是单个动作,而是动作与动作之间的衔接。导演发现,舞者从第一个造型切换到第二个造型时,如果速度骤然归零再重新启动,画面会显得僵硬、顿挫。好的编舞会把这些停顿改成一段平滑的过渡动作,让能量流动起来。
机械臂的多段轨迹拼接也面临同样问题。如果前一段轨迹结束时速度为 1 m/s,后一段轨迹开始时速度变成 0,那么连接点处就出现了速度突变,理论上对应无穷大的加速度,会给机械结构带来冲击。解决办法是在拐点前提前减速,用一段平滑的过渡曲线替代速度跳变。这里最经典的是梯形速度剖面,它让速度在加速、匀速、减速三段之间都保持连续。
除了梯形速度剖面,工程上还常用圆弧过渡来平滑空间路径的拐角:在两条直线段之间插入一段与两边相切的圆弧,机械臂走到拐角前就沿圆弧平滑转向,而不是急停急转。这种方法的优点是不改变路径的主体直线段,只局部替换拐角,非常适合焊接、喷涂这类对路径形状有严格要求的任务。
编舞师的过渡动作让舞蹈行云流水,机械臂的平滑过渡则让产线运转行云流水。平滑过渡技术的核心,不是取消拐弯,而是让每一段速度都“接得上、续得住”。
- 加速段$0 \le t \le t_a$ 阶段,速度从 0 线性增长,斜率就是最大加速度 $a_{\max}$。
- 匀速段$t_a < t \le T-t_a$ 阶段,速度稳定在 $v_{\max}$,让运动在安全速度下快速推进。
- 减速段$T-t_a < t \le T$ 阶段,速度以 $a_{\max}$ 的斜率线性减小,最终回到 0。
- 连续性意义三段时间的端点处速度都恰好相等,因此速度曲线处处连续,避免了冲击。
工程应用要点
舞台布景总有一些危险的边缘:再往前一步舞者就会掉下台。导演会在彩排时反复确认这些边界,让舞者绕开它们。机械臂的世界里也有这样的“危险边缘”,那就是奇异点。
奇异点对应机械臂雅可比矩阵的行列式趋于 0 的位型。在奇异点附近,末端执行器在某个方向上几乎无法移动,关节速度却会剧烈飙升,可能触发过速报警甚至损坏设备。因此在笛卡尔空间规划时,必须在规划阶段检查整条路径上的雅可比行列式。
除了奇异点检查,工程落地还要走“先仿真、后部署”的流程。离线仿真平台上先导入机器人模型、工件和障碍物,运行全部规划轨迹,检查碰撞、超限和奇异点;确认无误后再把轨迹下载到真实控制器执行。这样做能显著降低现场调试风险。
好的导演会在彩排时踩遍每一寸舞台,好的机器人工程师也会在仿真里走完每一个轨迹点。规划得再漂亮,也要经过仿真验证、部署调优,才能真正服务于生产——这也正是轨迹规划从理论走向工程价值的最后一步。
- 雅可比矩阵$J(q)$ 把关节速度映射为末端速度,是连接关节空间与笛卡尔空间的桥梁。
- 行列式条件$\det(J)$ 的值反映了速度映射的稳定性,接近 0 表示映射退化。
- 奇异位型$\det(J) \approx 0$ 时机械臂处于奇异位型,末端在某个方向的运动速度会趋于无穷。
AI 应用场景
车身焊接轨迹规划
阶段:运动规划阶段
解决的问题:传统焊接依赖人工示教,操作员需要逐点记录焊枪位姿,工序繁琐且轨迹质量依赖个人经验;同时焊缝是直线和圆弧,人手工走的轨迹往往不够均匀,容易出现焊接缺陷。
具体案例:在某汽车焊装车间,工程师用离线规划软件导入车身模型与焊缝路径,利用笛卡尔空间直线插值保证焊枪沿焊缝匀速移动,在拐角处用圆弧过渡实现平滑转场,再叠加时间最优的速度剖面缩短节拍。整条轨迹先在高保真仿真环境里验证奇异点和碰撞,再下发到机器人控制器,焊接合格率从 92% 提升到 99%。
电子装配取放动作优化
阶段:轨迹生成与执行阶段
解决的问题:贴片机取放元件的动作频率极高,如果每次都简单用关节空间三次多项式插值,末端轨迹会在空中画出不必要的弧线,既浪费时间又可能碰到相邻元件;而且托盘与电路板之间的空间非常狭窄。
具体案例:某贴片机项目将取放轨迹拆成“垂直抬升—水平快速转移—垂直下降”三段,水平段使用关节空间插值配合时间最优梯形速度剖面,垂直段使用笛卡尔直线插值保证元件精确入位。整体节拍从 0.9 秒缩短到 0.6 秒,同时通过五次多项式平滑过渡消除了高速启停的振动,元件掉落率下降 40%。
手术辅助机械臂安全路径
阶段:安全约束规划阶段
解决的问题:手术空间狭小,机械臂末端既要在关键部位精确操作,又要避开骨骼、血管等障碍;关节空间规划虽然计算快,但末端路径不可控,笛卡尔空间规划又可能在奇异点附近出现关节速度暴增,两者都需要精细约束。
具体案例:某骨科手术机器人系统在术前用 CT 数据重建病灶区域,规划出末端直线穿刺路径,并在路径曲率大的拐角处插入平滑过渡段;同时实时监测雅可比行列式,一旦接近奇异阈值立即切换备选轨迹。整套方案经过上千例仿真验证后进入临床试验,显著减少了手术中的机械臂急停现象。
Python 演示
import numpy as np class CubicTrajectory: def __init__(self, q0, qf, v0, vf, T): h = qf - q0 t2 = T * T t3 = t2 * T # solve the 4 coefficients of a cubic polynomial a2 = (3.0 * h - vf * T - 2.0 * v0 * T) / t2 a3 = (v0 * T + vf * T - 2.0 * h) / t3 self.coeffs = (q0, v0, a2, a3) self.period = T def position(self, t): q0, v0, a2, a3 = self.coeffs return q0 + v0 * t + a2 * t * t + a3 * t * t * t def velocity(self, t): _, v0, a2, a3 = self.coeffs return v0 + 2.0 * a2 * t + 3.0 * a3 * t * t def acceleration(self, t): _, _, a2, a3 = self.coeffs return 2.0 * a2 + 6.0 * a3 * t if __name__ == "__main__": q0 = np.array([0.2, 1.3, 0.8]) qf = np.array([1.0, 0.6, 1.5]) traj = CubicTrajectory(q0, qf, np.zeros(3), np.zeros(3), T=2.0) for t in [0.0, 0.5, 1.0, 1.5, 2.0]: print("t=%.1f q=%s v=%s" % (t, np.round(traj.position(t), 3), np.round(traj.velocity(t), 3)))
h = qf - q0先算出每个关节需要转动的总角度,这是系数推导的核心中间量。a2 = (3.0 * h - vf * T - 2.0 * v0 * T) / t2根据边界条件求出二次项系数,决定中段的加速度强度。a3 = (v0 * T + vf * T - 2.0 * h) / t3求出三次项系数,与二次项配合保证终点速度和角度都严格对齐。self.coeffs = (q0, v0, a2, a3)把 4 个系数打包保存,后续采样时直接使用。def position(self, t)按多项式计算某个时刻的关节角度,这是控制器下发位置指令的依据。def velocity(self, t)对多项式求导得到速度,用于判断是否超过电机的速度上限。traj = CubicTrajectory(q0, qf, np.zeros(3), np.zeros(3), T=2.0)实例化三关节轨迹,起始和终止速度都设为 0,周期 2 秒。
常见误区
误区我以为在关节空间里让所有关节均匀转动,机械臂末端走出的路径自然就是两点之间的直线。
正解关节空间插值只保证每个关节角度单调变化,末端路径由正运动学叠加决定,通常是弯曲的弧线。若任务要求末端走直线,必须改用笛卡尔空间直线插值。类比:导演告诉舞者“肩膀和肘同时匀速转动”,舞者指尖在空中画出的往往是一道弧线,而不是直线。
为何常见:人很容易把“角度均匀变化”的直觉等同于“空间直线运动”,却忽略了正运动学中角度的非线性映射。
误区只要末端路径在笛卡尔空间里画得漂亮,关节就一定能顺利执行,不必检查限位和奇异点。
正解笛卡尔空间只约束末端位姿,关节角度必须通过逆运动学实时求解,沿途可能出现关节超限、奇异位型和碰撞。规划阶段必须把逆解、雅可比行列式和碰撞检测一并纳入检查。就像导演只关注手势造型,却忘了舞者的腰根本转不过去。
为何常见:笛卡尔坐标比关节角度更直观,容易让人误以为末端轨迹安全就代表整个机械臂安全。
误区时间最优轨迹规划就是把加速度拉到最大,电机越用力,到达越快,何乐而不为?
正解时间最优必须在速度、加速度(有时还有 jerk)约束下求最小时间。盲目拉满加速度会超过电机峰值扭矩,导致末端振动甚至控制器报警。梯形速度剖面正是用最大可行加速度加速、再匀速、再减速的典型最优方案。
为何常见:生活经验里“快”往往意味着“更用力”,容易忽略机器人是受物理极限约束的机电系统。
误区三次不够顺滑,那我就用七次、九次多项式,阶数越高应该越完美。
正解高次多项式确实能匹配更多边界条件,但也会引入不必要的中间波动和数值敏感。实际工程中常用三次或五次多项式,并通过分段拼接来平衡平滑度与稳定性,而不是无脑堆阶数。
为何常见:许多教程只强调“高次能约束更多条件”,却没有说明高次振荡和数值病态问题,容易误导初学者。
误区轨迹拼接点只要位置不跳变,就算平滑了,机械臂动作就不会顿挫。
正解真正的平滑还要求速度连续,甚至加速度连续。位置连续只代表不跳变,速度突变意味着无穷大加速度冲击。梯形速度剖面和圆弧过渡都是为了消除速度跳变,让运动更柔和。
为何常见:初学者最先关注的是“手到没到位”,容易忽视速度、加速度这些更高阶的运动连续性指标。
面试题
Q1. 关节空间轨迹规划的直接输入是什么?
- A.末端执行器的位置序列
- B.各关节角度随时间的变化← 正确答案
- C.机械臂的雅可比矩阵
- D.机器人末端的速度场
答案:B。关节空间轨迹规划以每个关节的角度为规划对象,输出是 q(t),因此输入是关节角度随时间的变化。末端位置序列、雅可比矩阵和末端速度场虽然都出现在运动学计算中,但它们不是关节空间轨迹规划的输入。
Q2. 三次多项式插值的主要用途是什么?
- A.在两点角度间生成连续轨迹← 正确答案
- B.计算机械臂的末端速度
- C.求解机器人奇异位型
- D.提高机械臂的负载能力
答案:A。三次多项式插值用 4 个边界条件确定 4 个系数,生成从起始角度到目标角度的连续光滑轨迹。它不负责求速度映射、求奇异点,也与负载能力无关。类比:三次多项式是导演给舞者写好的“基础动作过渡脚本”。
Q3. 笛卡尔空间直线插值规划的轨迹特点是?
- A.所有关节角度均线性变化
- B.末端位置沿直线匀速移动← 正确答案
- C.末端加速度恒等于零
- D.关节速度保持恒定
答案:B。笛卡尔空间直线插值中,末端位置 p(t) 按时间比例在 p0 与 pf 之间线性变化,因此末端沿直线匀速移动。但关节角度要经过逆运动学换算,通常不是线性变化,关节速度也不会恒定。
Q4. 时间最优轨迹规划关注的核心目标是什么?
- A.机器人能耗最小化
- B.完成两点运动时间最短← 正确答案
- C.末端轨迹路径长度最短
- D.末端轨迹绝对平滑
答案:B。时间最优规划是在速度和加速度约束下,找到最短运动时间。路径最短不一定时间最短,因为加速能力有限;能耗和平滑也不是时间最优的直接目标。就像赶时间开车,选择一个绕远的高速路往往比拥挤的短路更快。
Q5. 关节空间插值有哪些优点?
- A.计算简单可靠← 正确答案
- B.不易遇到奇异点← 正确答案
- C.轨迹一定走直线
- D.利于实时控制← 正确答案
答案:ABD。关节空间插值直接对角度做多项式拟合,计算代价小、可靠性高,也方便实时控制;由于关节角度连续变化,通常不会在路径中遇到奇异点。但末端路径并不保证是直线,所以 C 错误。
Q6. 在梯形速度剖面中,若两点距离过短,会发生什么?
- A.速度曲线变为三角形← 正确答案
- B.加速度必须反向
- C.匀速段时间变为正
- D.轨迹末端出现超调
答案:A。当距离不足以让速度加速到 v_max 再减速时,加速段一结束就必须立刻进入减速段,匀速段长度变成 0,速度剖面从梯形退化为三角形。这是梯形速度规划中典型的临界情况。
Q7. 末端在笛卡尔空间走直线时,关节空间中的轨迹通常是什么形态?
- A.一条标准直线
- B.复杂的非线性曲线← 正确答案
- C.恒定的角速度曲线
- D.完全不变的关节角
答案:B。末端位置线性变化时,关节角度需要通过逆运动学逐点求解,往往呈复杂的非线性曲线,甚至可能经过奇异点。因此笛卡尔空间规划后必须检查关节轨迹的连续性和奇异点,而不能默认“直线末端一定安全”。
Q8. 平滑过渡技术需要保证哪些连续性条件?
- A.位置连续← 正确答案
- B.速度连续← 正确答案
- C.加速度连续← 正确答案
- D.电流连续
答案:ABC。位置连续保证轨迹不跳变,速度连续避免冲击,加速度连续提升柔顺性。电流连续属于电机电气层面,不属于运动学轨迹规划的连续性范畴。就像舞蹈动作要位置对、速度顺、力度柔,而不是看心跳。
Q9. 当机械臂处于奇异位型时,雅可比矩阵的什么特征明显?
- A.任意元素都为零
- B.行列式的值接近零← 正确答案
- C.秩恒等于关节数
- D.特征值都等于一
答案:B。奇异位型的判据是 det(J(q)) ≈ 0,此时末端在某些方向失去运动能力,关节速度可能急剧变大。雅可比矩阵的元素不一定为零,秩会下降而非保持满秩,特征值也没有固定的“都等于一”的规律。
Q10. 多段轨迹拼接时,若每段都用三次多项式且只约束位置与速度,拼接点可能出现什么情况?
- A.位置连续且速度连续← 正确答案
- B.位置发生跳变
- C.加速度发生跳变← 正确答案
- D.速度发生跳变
答案:AC。三次多项式在段内约束了位置和速度,所以拼接点处位置和速度都连续,B 和 D 不会出现。但由于没有约束加速度边界,段间加速度一般会跳变,可能产生冲击。五次多项式增加加速度约束后才能真正实现平滑过渡。