第一章:轨迹规划概述
各位同学好,我是老张。在机器人这行摸爬滚打了十几年,今天咱们来聊聊轨迹规划。
说实话,我刚入行时也觉得轨迹规划不就是让机器人从A点到B点嘛,有啥难的?直到第一次在产线上看到机械臂因为轨迹不合理,把工件甩飞出去……嗯,从那以后我再也不敢小看这个环节了。
1.1 什么是轨迹规划?
轨迹规划,说白了就是回答三个问题:
- 去哪儿——目标位置和姿态
- 怎么去——路径的形状和走向
- 多快去——速度、加速度随时间的变化
我习惯用一个比喻:你让一个朋友帮你拿杯水。路径规划是告诉他「绕过桌子,走到饮水机前」;而轨迹规划还要告诉他「先慢走两步,再快走三步,最后减速停下」。你看,后者多了时间和运动的细节。
核心定义:轨迹规划 = 路径规划 + 时间律。它生成的是机器人关节或末端执行器随时间变化的运动序列,包含位置、速度、加速度信息。
为什么会这样区分?因为很多初学者只关注路径,忽略了速度和加速度的约束。我在项目中遇到过一位同事,他规划的路径很漂亮,但机器人一跑就剧烈抖动——后来发现加速度曲线有突变,电机根本跟不上。
1.2 轨迹规划在机器人系统中的地位
你想想看,一个机器人系统从上到下大概分几层?
| 层级 | 功能 | 典型周期 |
|---|---|---|
| 任务规划 | 做什么(抓取、搬运、焊接) | 秒级 |
| 路径规划 | 走哪条路(避障、最优路径) | 百毫秒级 |
| 轨迹规划 | 怎么走(速度、加速度、平滑性) | 十毫秒级 |
| 运动控制 | 执行(PID、前馈、力矩控制) | 毫秒级 |
轨迹规划正好卡在中间。它上接路径规划,下连运动控制。如果轨迹规划做得不好,上层再好的路径也白搭,下层再快的控制也救不回来。
我的经验:调试机器人时,如果出现抖动或过冲,先别急着调PID参数。先看看轨迹规划输出的加速度曲线是否连续。我曾经花了两天调PID,最后发现是梯形速度曲线的拐点太陡——换成S型曲线,问题立刻解决。
1.3 常见应用场景
1.3.1 机械臂
机械臂的轨迹规划,我习惯分两类:
- 关节空间规划:直接控制每个关节的角度变化。适合点对点运动,比如从A点抓取到B点放置。优点是计算简单,不会出现奇异点。
- 笛卡尔空间规划:控制末端执行器在三维空间中的直线或圆弧运动。适合焊接、涂胶这类对路径形状有严格要求的场景。
举个例子,我在做汽车焊接项目时,焊枪必须沿着焊缝走直线。如果用关节空间规划,末端轨迹会走弧线,焊缝就歪了。这时候必须用笛卡尔空间规划,而且还要保证末端姿态不变——嗯,这里要注意,笛卡尔空间规划容易遇到奇异点,需要额外处理。
// 一个简单的梯形速度轨迹生成(伪代码)
float t_acc = 0.5; // 加速时间
float t_const = 1.0; // 匀速时间
float t_dec = 0.5; // 减速时间
float v_max = 1.0; // 最大速度
for (float t = 0; t < t_acc + t_const + t_dec; t += dt) {
if (t < t_acc) {
v = v_max * (t / t_acc); // 加速段
} else if (t < t_acc + t_const) {
v = v_max; // 匀速段
} else {
v = v_max * (1 - (t - t_acc - t_const) / t_dec); // 减速段
}
// 积分得到位置
pos += v * dt;
}
避坑指南:我曾经在AGV项目里直接用梯形速度曲线,结果车在加速结束瞬间猛地一冲——因为加速度有跳变。后来改成了S型曲线(加速度连续变化),才解决了平稳性问题。记住:加速度不连续,轻则抖动,重则损坏机械结构。
1.3.2 AGV(自动导引车)
AGV的轨迹规划和机械臂不太一样。AGV要考虑:
- 非完整约束:车不能横着走,转弯有最小半径
- 地面摩擦:加速度太大会打滑
- 多车协同:多台AGV同时运行时,轨迹要避免冲突
我做过一个仓储项目,AGV在货架间穿梭。最开始用B样条曲线规划路径,轨迹很平滑,但忽略了车的转弯半径——结果车在窄通道里卡住了。后来改用Dubins曲线(考虑最小转弯半径的路径),才顺利通过。
1.3.3 无人机
无人机轨迹规划最头疼的是三维空间和时间约束。我总结三个关键点:
- 动力学可行性:无人机的加速度受限于推力和姿态角,不能像机械臂那样随意加减速
- 避障实时性:环境变化快,轨迹必须在线重规划
- 能量最优:电池续航有限,轨迹要尽量省电
记得有个航拍项目,无人机要沿着山坡飞行拍摄。如果用简单的直线插补,飞机会在拐角处剧烈晃动,画面根本没法用。后来我们用了最小加加速度(jerk)轨迹,让加速度变化率最小化,画面才稳定下来。
1.4 本章知识体系
下面这张图是我自己整理的轨迹规划知识框架,你可以对照着看:
这张图把轨迹规划的核心要素、应用场景、常见轨迹类型和评价指标串起来了。你可以在后续章节中逐一深入。
1.5 本章小结
轨迹规划不是简单的「画条线让机器人走」。它要同时考虑位置、速度、加速度,还要适配不同机器人的物理约束。我个人觉得,学轨迹规划最好的方法就是动手写代码——从最简单的梯形速度曲线开始,然后逐步加入平滑性约束、避障、实时重规划。
嗯,第一章就到这里。记住:好的轨迹规划,能让机器人跑得又快又稳又准。后面我们会一步步拆解各种算法,从多项式插值到最优控制,慢慢来。
公众号:蓝海资料掘金营,微信deep3321