轨迹规划入门:关节空间与笛卡尔空间

轨迹规划,说白了就是让机械臂知道怎么从A点走到B点。不是简单的直线运动,而是要考虑速度、加速度、甚至关节的物理限制。我刚开始接触这个领域时,总觉得不就是插值嘛,后来在项目里吃过亏才明白——选错规划方式,轻则抖动,重则撞机。

这一章我们聚焦两个核心问题:在哪个空间规划,以及用什么速度曲线。掌握了这些,你就能让机械臂走出平滑、可控的轨迹。

关节空间 vs 笛卡尔空间

先看一个直观对比。假设机械臂要从抓取位置移动到放置位置:

对比维度 关节空间规划 笛卡尔空间规划
控制对象 每个关节的角度 末端位姿(位置+姿态)
路径形状 关节角度的平滑变化 末端在空间中的直线/圆弧
计算量 低(无需逆解) 高(每个插值点都要逆解)
典型应用 点对点搬运、避障 焊接、涂胶、装配

我个人习惯这样区分:关节空间只关心关节角度从θ₁变到θ₂,末端走什么路径不管;笛卡尔空间则强制末端走直线或圆弧,关节怎么动是逆解算出来的。

核心原则:如果任务只要求起点和终点准确(比如码垛),用关节空间;如果要求中间路径也准确(比如焊缝),用笛卡尔空间。

梯形速度规划

梯形速度曲线是最常用的速度规划方法。名字很形象——速度随时间的变化像一个梯形:先匀加速,再匀速,最后匀减速。

为什么用梯形?因为简单、可靠。我在调试第一台六轴机器人时,用的就是梯形规划。它有三个关键参数:

  • 最大速度 v_max —— 受电机额定转速和减速比限制
  • 最大加速度 a_max —— 受电机扭矩和负载惯性限制
  • 总位移 S —— 起点到终点的关节角度差(或笛卡尔距离)

梯形规划有个经典问题:如果位移太短,还没加速到最大速度就要减速了。这时候梯形退化成三角形。嗯,这里要注意——必须判断是否存在匀速段。

避坑指南:我曾经在项目里直接套用梯形公式,没检查位移是否足够。结果加速段和减速段重叠,速度曲线变成了一个尖峰,电机直接过流报警。后来我加了一段判断逻辑:如果 v_max² / a_max > S,就按三角形规划处理。

梯形规划的数学表达很简单:

// 梯形速度规划核心逻辑
// 输入:总位移 S,最大速度 v_max,最大加速度 a_max
// 输出:加速时间 t_acc,匀速时间 t_const,减速时间 t_dec

t_acc = v_max / a_max;
S_acc = 0.5 * a_max * t_acc * t_acc;  // 加速段位移

if (2 * S_acc >= S) {
    // 三角形规划:没有匀速段
    t_acc = sqrt(S / a_max);
    t_const = 0;
    t_dec = t_acc;
} else {
    // 标准梯形
    S_const = S - 2 * S_acc;
    t_const = S_const / v_max;
    t_dec = t_acc;
}

你想想看,这个逻辑其实很直观。加速到最大速度需要时间和距离,如果总距离不够,那就只能加速到一半就开始减速。

五次多项式插值

梯形规划的缺点是加速度不连续——在加速结束和减速开始的瞬间,加速度会突变。这会导致机械臂产生冲击和振动。对于精密装配或高速搬运,这种冲击可能造成零件损坏或定位超差。

五次多项式插值就是为了解决这个问题。它保证位置、速度、加速度都连续。为什么是五次?因为我们需要六个边界条件:起点和终点的位置、速度、加速度,正好确定五个系数。

数学形式是这样的:

θ(t) = a₀ + a₁·t + a₂·t² + a₃·t³ + a₄·t⁴ + a₅·t⁵

边界条件:
θ(0) = θ_start,  θ(T) = θ_end
θ'(0) = v_start,  θ'(T) = v_end
θ''(0) = a_start, θ''(T) = a_end

解这个方程组,得到系数:

a₀ = θ_start
a₁ = v_start
a₂ = a_start / 2
a₃ = (20·Δθ - 8·v_end·T - 12·v_start·T - 3·a_start·T² + a_end·T²) / (2·T³)
a₄ = (30·Δθ + 14·v_end·T + 16·v_start·T + 3·a_start·T² - 2·a_end·T²) / (2·T⁴)
a₅ = (12·Δθ - 6·v_end·T - 6·v_start·T - a_start·T² + a_end·T²) / (2·T⁵)

其中 Δθ = θ_end - θ_start

注意:五次多项式的计算量比梯形大得多。在嵌入式控制器上,如果规划频率是1kHz,每次插值都要算一遍多项式,CPU开销不可忽视。我建议在离线规划时用五次多项式,在线实时规划时用梯形或S形曲线。

两种规划方式的对比总结

特性 梯形速度规划 五次多项式插值
加速度连续性 不连续(有突变) 连续(平滑)
计算复杂度 O(1),极低 O(n),较高
运动时间可控性 直接指定v_max和a_max 需要迭代求解时间T
适用场景 粗定位、快速搬运 精密装配、轨迹跟踪

我个人在实际项目中是这样用的:粗定位用梯形,精定位用五次多项式。比如码垛机器人,抓取和放置的粗运动用梯形,最后接近目标位置时切换成五次多项式,既保证了效率,又避免了冲击。

本章知识体系

下面这张图总结了轨迹规划的完整脉络:

轨迹规划知识体系 轨迹规划 关节空间规划 笛卡尔空间规划 梯形速度规划 五次多项式插值 加速度不连续 计算量小,适合实时控制 加速度连续平滑 计算量大,适合离线规划 选择原则: 粗定位用梯形 → 精定位用五次多项式 → 路径约束用笛卡尔空间

从图中可以看到,轨迹规划的核心是先选空间,再选速度曲线。关节空间和笛卡尔空间决定了路径的几何形状,梯形和五次多项式决定了运动的动态特性。两者组合,就能覆盖绝大多数工业场景。

我的建议:初学者先从关节空间+梯形规划入手,跑通一个点到点的运动。然后换成五次多项式,感受加速度连续带来的平滑效果。最后再尝试笛卡尔空间直线规划。一步一步来,别想一口吃成胖子。

这一章的内容就到这里。记住,轨迹规划不是数学游戏,而是工程实践。你写的每一行代码,最终都会变成机械臂真实的运动。所以,多调试、多观察、多总结。