第三章 轨迹规划入门:点到点运动、直线插补、圆弧插补、S型速度曲线

各位工程师朋友,今天我们来聊聊轨迹规划的基础。说实话,我刚入行那会儿,觉得轨迹规划不就是让电机从A点转到B点嘛,有什么难的?直到第一次调试六轴机器人,看着末端执行器在空间里划出一道诡异的弧线,差点撞上夹具,我才意识到——这玩意儿,真没那么简单。

轨迹规划,说白了就是解决两个问题:走什么路径,以及怎么走。路径是空间几何问题,速度是时间问题。两者一结合,才是完整的运动控制。

核心要点:轨迹规划 = 路径规划 + 速度规划。路径决定去哪,速度决定怎么去。

3.1 点到点运动:最基础的运动模式

点到点运动,也叫PTP运动。你想想看,工业机器人从抓取位移动到放置位,中间路径不重要,只要起点和终点准确就行。这就是典型的PTP。

我在项目中遇到过这样一个场景:一个码垛工作站,机器人只需要从传送带抓取箱子,放到托盘上。中间有没有障碍物?没有。那用PTP就足够了,简单高效。

PTP运动的特点:

  • 各轴独立运动,互不干涉
  • 每个轴以自己的最大速度、加速度运行
  • 各轴同时到达终点(同步)
  • 路径不可预测——这是最大的坑

注意:PTP运动的路径是空间中的一条曲线,你无法预知它具体怎么走。如果工作空间内有障碍物,千万别用PTP!我曾经见过一个新手,用PTP让机器人穿过一个狭窄的窗口,结果手臂直接撞上了窗框……嗯,那次维修费可不便宜。

3.2 直线插补:让运动沿着直线走

什么时候需要直线插补?比如焊接、涂胶、切割——这些工艺要求工具末端沿着直线运动,不能偏。

直线插补的原理其实不复杂:在起点和终点之间,等间距地插入一系列中间点。控制器计算每个插补点的位置,然后驱动各轴协同运动,让末端走出一条直线。

我习惯把直线插补分成三步:

  1. 计算总位移:ΔX = Xe - Xs,ΔY = Ye - Ys,ΔZ = Ze - Zs
  2. 确定插补步数:根据插补周期和运动速度,算出需要多少个中间点
  3. 逐点计算:第i个点的位置 = 起点 + (i/N) × 总位移

举个例子,假设起点(0,0),终点(100,100),插补步数N=100:

// 直线插补伪代码
for i = 0 to N:
    t = i / N
    x = 0 + t * 100
    y = 0 + t * 100
    // 输出位置指令到伺服驱动器

这里有个细节要注意:插补步数N不是随便选的。N太小,运动会一顿一顿的;N太大,控制器计算负担重。一般根据插补周期(比如1ms)和运动速度来算。

实战技巧:我一般把插补周期设为1ms,然后根据目标速度算出每毫秒的位移增量。比如速度100mm/s,那每毫秒就走0.1mm。这样计算简单,运动也平滑。

3.3 圆弧插补:曲线运动的基石

圆弧插补比直线复杂一些。为什么?因为圆弧需要三个点才能确定——起点、终点、中间点(或者圆心)。

圆弧插补的核心思路:

  • 先根据三点计算出圆心和半径
  • 然后计算起始角和终止角
  • 最后在角度上等间距插补

我记得有一次调试一个弧焊工作站,客户要求焊缝是圆弧形的。我一开始用直线插补逼近圆弧,结果焊出来的焊缝有棱角,客户不满意。后来换成真正的圆弧插补,焊缝光滑多了。

圆弧插补的代码逻辑大致如下:

// 圆弧插补 - 已知起点P1、中间点P2、终点P3
// 1. 计算圆心和半径
圆心 = 计算三点外接圆圆心(P1, P2, P3)
半径 = 距离(圆心, P1)

// 2. 计算起始角和终止角
起始角 = atan2(P1.y - 圆心.y, P1.x - 圆心.x)
终止角 = atan2(P3.y - 圆心.y, P3.x - 圆心.x)

// 3. 判断圆弧方向(顺时针/逆时针)
方向 = 判断方向(P1, P2, P3)

// 4. 角度插补
for i = 0 to N:
    θ = 起始角 + 方向 * (i/N) * (终止角 - 起始角)
    x = 圆心.x + 半径 * cos(θ)
    y = 圆心.y + 半径 * sin(θ)

避坑指南:我曾经遇到过一个问题——三点共线时,圆弧插补会崩溃。因为共线的三点无法确定一个唯一的圆。所以代码里一定要加判断:如果三点共线,就退化成直线插补。

3.4 S型速度曲线:让运动更丝滑

梯形速度曲线大家应该都熟悉:加速-匀速-减速。简单粗暴,但有个问题——加速度在切换点会突变,导致冲击和振动。

S型速度曲线就是为了解决这个问题。它把加速度的变化也规划成连续的曲线,让加加速度(Jerk)可控。

说白了,S型曲线就是:

  • 加加速度阶段:加速度从0逐渐增加到最大值
  • 匀加速阶段:以最大加速度加速
  • 减加速度阶段:加速度从最大值逐渐减到0
  • 匀速阶段:速度保持不变
  • 加减速阶段:加速度从0逐渐减到负最大值
  • 匀减速阶段:以最大减速度减速
  • 减减速阶段:加速度从负最大值逐渐回到0

一共7段,所以也叫七段式S型曲线。

我个人的习惯是,在精密定位场合(比如贴片机、晶圆搬运)一定用S型曲线。虽然计算量比梯形大,但运动结束时的残余振动明显减少。

S型曲线的关键参数:

参数 符号 说明
最大速度 Vmax 运动允许的最高速度
最大加速度 Amax 加速度的峰值
最大加加速度 Jmax 加速度的变化率,决定曲线的平滑程度
总位移 S 起点到终点的距离

这里有个经验值:Jmax一般取Amax的10~20倍。太小了,加减速时间太长;太大了,又失去了S型曲线的意义。

核心公式:S型曲线的速度表达式是分段函数,每段都是时间的二次或三次函数。实际工程中,我们一般用查表法或者预计算法,不会在实时中断里现场算——太慢了。

3.5 三种轨迹的对比与选型

讲了这么多,到底什么时候用哪种?我整理了一个对比表:

轨迹类型 路径可控性 计算复杂度 典型应用
点到点(PTP) 码垛、搬运、上下料
直线插补 焊接、涂胶、切割
圆弧插补 弧焊、打磨、轮廓加工

选型建议:

  • 如果空间开阔、没有障碍物 → PTP,简单高效
  • 如果需要精确走直线 → 直线插补
  • 如果需要走圆弧或曲线 → 圆弧插补
  • 如果对运动平滑度要求高 → 配合S型速度曲线

我的经验:实际项目中,往往是多种轨迹组合使用。比如机器人先PTP快速移动到工件附近,然后直线插补慢速接近,最后圆弧插补完成焊接。别死板地只用一种。

3.6 本章知识体系

下面这张图,是我梳理的本章知识结构。你可以把它当作一个快速索引:

轨迹规划入门 路径规划 速度规划 点到点(PTP) 直线插补 圆弧插补 梯形速度 S型速度 组合应用:PTP + 直线 + 圆弧 + S型 典型场景:焊接、码垛、搬运、涂胶、切割

这张图把本章的核心内容串起来了。左边是路径规划——选什么路走;右边是速度规划——怎么走才稳。两者结合,就是完整的轨迹规划。

好了,轨迹规划的基础就讲到这里。这些内容看着简单,但真正用好,需要在项目里反复打磨。下次调试的时候,不妨多想想:我选的轨迹类型合适吗?速度曲线够平滑吗?

专注资料整理