第四章:轨迹规划基础
各位同学,今天我们来聊聊轨迹规划。说实话,这是从仿真到真机迁移中最容易被忽视、却又最致命的一环。我见过太多团队,仿真里跑得飞起,一到真机就抖成筛子——十有八九是轨迹规划没做好。
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型规划:
- 加加速段(Jerk为正)
- 匀加速段
- 减加速段(Jerk为负)
- 匀速段
- 加减速段(Jerk为负)
- 匀减速段
- 减减速段(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型规划,适合细活。中间怎么选?看你的末端负载和精度要求。
好了,轨迹规划的基础就这些。下一节我们讲插补算法,到时候会用到今天讲的速度规划知识。记得把梯形和S型的代码敲一遍,光看是学不会的。