第一章:轨迹规划概述

各位同学好,我是老张。在机器人这行摸爬滚打了十几年,今天咱们来聊聊轨迹规划。

说实话,我刚入行时也觉得轨迹规划不就是让机器人从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 无人机

无人机轨迹规划最头疼的是三维空间和时间约束。我总结三个关键点:

  1. 动力学可行性:无人机的加速度受限于推力和姿态角,不能像机械臂那样随意加减速
  2. 避障实时性:环境变化快,轨迹必须在线重规划
  3. 能量最优:电池续航有限,轨迹要尽量省电

记得有个航拍项目,无人机要沿着山坡飞行拍摄。如果用简单的直线插补,飞机会在拐角处剧烈晃动,画面根本没法用。后来我们用了最小加加速度(jerk)轨迹,让加速度变化率最小化,画面才稳定下来。

1.4 本章知识体系

下面这张图是我自己整理的轨迹规划知识框架,你可以对照着看:

轨迹规划知识体系 轨迹规划 = 路径 + 时间律 位置(去哪儿) 速度(多快) 加速度(多稳) 机械臂(关节/笛卡尔) AGV(非完整约束) 无人机(三维/实时) 梯形速度曲线 S型速度曲线 B样条曲线 Dubins曲线 评价指标:平滑性 | 时间最优 | 能量最优 | 避障能力 | 实时性

这张图把轨迹规划的核心要素、应用场景、常见轨迹类型和评价指标串起来了。你可以在后续章节中逐一深入。

1.5 本章小结

轨迹规划不是简单的「画条线让机器人走」。它要同时考虑位置、速度、加速度,还要适配不同机器人的物理约束。我个人觉得,学轨迹规划最好的方法就是动手写代码——从最简单的梯形速度曲线开始,然后逐步加入平滑性约束、避障、实时重规划。

嗯,第一章就到这里。记住:好的轨迹规划,能让机器人跑得又快又稳又准。后面我们会一步步拆解各种算法,从多项式插值到最优控制,慢慢来。


公众号:蓝海资料掘金营,微信deep3321