第四章:轨迹规划基础

各位同学,今天我们来聊聊轨迹规划。说实话,这是从仿真到真机迁移中最容易被忽视、却又最致命的一环。我见过太多团队,仿真里跑得飞起,一到真机就抖成筛子——十有八九是轨迹规划没做好。

4.1 关节空间 vs 笛卡尔空间规划

先问个问题:你希望机器人末端走直线,还是关节转得顺?

这两个目标,对应着两种规划思路。

4.1.1 关节空间规划

说白了,就是只关心每个关节从角度A转到角度B。中间路径什么样?不管。末端走的是弧线还是直线?也不管。

优点很明显:

  • 计算量小,实时性高
  • 不会遇到奇异点(这个后面细说)
  • 关节运动平滑

缺点也致命:

  • 末端轨迹不可预测
  • 可能撞到障碍物

我的经验: 在码垛、搬运这类对路径无要求的场景,我几乎只用关节空间规划。省心,稳定。但如果你要让机器人画个圆、或者沿着焊缝走——那就必须用笛卡尔空间了。

4.1.2 笛卡尔空间规划

笛卡尔空间规划,就是让末端执行器在三维空间中走指定的路径。直线、圆弧、样条曲线,都行。

听起来很美好?代价是:

  • 每个路径点都要做逆解,计算量大
  • 可能遇到奇异点,关节速度突变
  • 关节可能超限

避坑指南: 我曾经在焊接项目里,让机器人走一条完美的直线焊缝。仿真里一切正常,一上真机,第六轴突然疯狂旋转——因为路径经过了一个奇异点。后来我加了奇异点规避算法,才搞定。

4.2 梯形速度规划

好,路径定好了。接下来怎么走?

最简单的方案:梯形速度规划。加速段、匀速段、减速段,三段式。速度曲线像个梯形,所以叫这名。

数学表达:

v(t) = 
  a * t,          0 ≤ t < t1    (加速段)
  v_max,          t1 ≤ t < t2   (匀速段)
  v_max - a*(t-t2), t2 ≤ t ≤ t3 (减速段)

其中 a 是加速度,v_max 是最大速度。

实用技巧: 梯形规划的参数就三个:最大速度、加速度、减速度。我习惯把减速度设得比加速度小一点——这样减速更柔和,末端抖动小。

优缺点:

优点 缺点
实现简单,计算量小 加速度突变,有冲击
参数直观,好调 高速时抖动明显
适合低速、大负载场景 不适合精密装配

嗯,这里要注意:梯形规划在加速段结束和减速段开始的瞬间,加速度会突变。你想想看,一个重载机器人突然变向——那冲击力,啧啧。

4.3 S型速度规划

为了解决梯形规划的冲击问题,工程师们搞出了S型速度规划。

名字很形象:速度曲线像字母S。加加速度(Jerk)是连续的,没有突变。

七段式S型规划:

  1. 加加速段(Jerk为正)
  2. 匀加速段
  3. 减加速段(Jerk为负)
  4. 匀速段
  5. 加减速段(Jerk为负)
  6. 匀减速段
  7. 减减速段(Jerk为正)

看着复杂?其实核心就一个:让加速度的变化也是连续的。

// S型规划核心参数
float jerk = 500;    // 加加速度,单位 mm/s³
float acc = 2000;    // 最大加速度,单位 mm/s²
float vel = 500;     // 最大速度,单位 mm/s

我的建议: 精密装配、打磨、涂胶这类对轨迹平滑度要求高的场景,必须用S型规划。虽然计算量大一点,但换来的稳定性和精度,值。

两种规划的对比:

特性 梯形规划 S型规划
加速度连续性 不连续 连续
运动时间 短 稍长
冲击力 大 小
适用场景 搬运、码垛 装配、打磨

为什么会这样?说白了,S型规划用时间换平滑。多花10%-20%的时间,换来的是机器人寿命延长、产品精度提升。这笔账,划算。

4.4 知识体系总览

下面这张图,是我自己总结的轨迹规划知识体系。你把它存下来,以后做项目时对照着看,基本不会跑偏。

轨迹规划知识体系 关节空间规划 笛卡尔空间规划 梯形速度规划 S型速度规划 最大速度 v_max 加速度 a 加加速度 jerk 减速度 应用场景:搬运 | 码垛 | 焊接 | 打磨 | 装配 | 涂胶 ⚠ 注意事项 奇异点规避 | 关节限位 | 加速度限制 | 轨迹平滑度

个人心得: 我做了这么多年机器人部署,总结下来就一句话——关节空间配梯形规划,适合粗活;笛卡尔空间配S型规划,适合细活。中间怎么选?看你的末端负载和精度要求。

好了,轨迹规划的基础就这些。下一节我们讲插补算法,到时候会用到今天讲的速度规划知识。记得把梯形和S型的代码敲一遍,光看是学不会的。

可可精品资料库