2. 梯形速度规划:三段式数学模型与参数物理意义

梯形速度曲线,是运动控制里最基础、也最常用的速度规划方式。说白了,就是让电机先匀加速、再匀速、最后匀减速,画出来像个梯形。我刚开始做运动控制时,第一个调的就是梯形曲线——简单,但坑也不少。

2.1 梯形速度曲线的数学模型

先看一个典型的梯形速度曲线长什么样。横轴是时间 t,纵轴是速度 v。整个过程分成三段:

  • 加速段:速度从 0 线性增加到最大速度 Vmax
  • 匀速段:以 Vmax 恒速运行
  • 减速段:速度从 Vmax 线性减到 0

对应的位移曲线是 S 形——加速段是二次曲线,匀速段是直线,减速段又是二次曲线。嗯,这里要注意:如果加速和减速的斜率不一样,梯形就不对称了。

核心公式(单轴梯形规划):

  • 加速段时间:t₁ = Vmax / a
  • 减速段时间:t₃ = Vmax / d
  • 加速段位移:S₁ = ½ · a · t₁²
  • 减速段位移:S₃ = ½ · d · t₃²
  • 匀速段位移:S₂ = S_total - S₁ - S₃
  • 匀速段时间:t₂ = S₂ / Vmax

总时间 T = t₁ + t₂ + t₃。如果 S₂ ≤ 0,说明总位移太短,根本跑不到最大速度——这就是所谓的「三角形速度曲线」,只有加速和减速,没有匀速段。

// 梯形速度规划核心计算(伪代码)
float CalcTrapezoidalProfile(float totalDist, float vMax, float acc, float dec)
{
    float t1 = vMax / acc;
    float t3 = vMax / dec;
    float s1 = 0.5f * acc * t1 * t1;
    float s3 = 0.5f * dec * t3 * t3;

    if (s1 + s3 >= totalDist)
    {
        // 三角形规划:跑不到最大速度
        // 需要重新计算实际可达速度
        float vPeak = sqrtf(2.0f * totalDist * acc * dec / (acc + dec));
        t1 = vPeak / acc;
        t3 = vPeak / dec;
        return t1 + t3;
    }
    else
    {
        float s2 = totalDist - s1 - s3;
        float t2 = s2 / vMax;
        return t1 + t2 + t3;
    }
}

这段代码我用了很多年。注意那个三角形分支的判断——很多新手会忽略,结果规划出来的速度曲线在短距离时直接超调。

2.2 加速/匀速/减速三段式详解

三段式看起来简单,但每一段都有讲究。我一个个说。

加速段:决定响应速度

加速段是系统从静止到高速的过渡。加速度 a 越大,加速时间越短,系统响应越快。但加速度太大,电机电流会瞬间飙升,机械结构也会受到冲击。我在做一台高速贴片机时,加速度设得太高,结果每次启动时皮带都打滑——后来不得不降下来。

匀速段:决定生产效率

匀速段是系统以最大速度稳定运行的阶段。Vmax 越高,单位时间内的位移越大,效率越高。但匀速段的存在前提是总位移足够长。如果位移很短,可能刚加速完就要减速,根本进不了匀速段。

减速段:决定定位精度

减速段是从高速平稳停下来的关键。减速度 d 如果太大,停止时会有明显冲击,甚至过冲。如果太小,减速距离太长,浪费时间。我习惯让减速度略小于加速度——这样停止更柔和,定位更准。

我的经验:加速和减速一般设成相同值,方便计算。但如果负载有重力分量(比如垂直轴),加速和减速必须分开设——加速时电机要克服重力,减速时重力在帮忙,设成一样反而容易出问题。

2.3 参数物理意义与调优方向

三个核心参数:最大速度 Vmax、加速度 a、减速度 d。每个参数都有明确的物理意义,调优方向也完全不同。

参数 符号 物理意义 调大影响 调小影响
最大速度 Vmax 系统允许的最高运行速度 效率↑,冲击↑,安全风险↑ 效率↓,运行更平稳
加速度 a 速度上升的速率(m/s²) 响应↑,电机电流↑,机械冲击↑ 响应↓,启动更柔和
减速度 d 速度下降的速率(m/s²) 停止快↑,过冲风险↑ 停止慢↓,定位更准

调优时,我一般遵循这个顺序:

  1. 先定 Vmax:根据工艺节拍要求和电机额定转速,确定一个上限
  2. 再调加速度 a:从较小值开始,逐步增大,直到电机电流接近额定值或机械出现振动
  3. 最后调减速度 d:通常 d ≤ a,以定位精度为优先

避坑指南:我曾经在一个项目中,把加速度设得和减速度一样大,结果每次停止时负载都会晃动。后来把减速度降到加速度的 70%,问题就解决了。记住:停止比启动更需要温柔。

2.4 梯形规划的局限性

梯形曲线虽然简单,但有个硬伤:加速度在起点和终点是突变的。加速段开始时,加速度从 0 瞬间跳到 a;减速段结束时,加速度从 -d 瞬间跳到 0。这种加速度突变会产生冲击力,也就是所谓的「急动度(Jerk)」无穷大。

对于高精度设备(比如数控机床、半导体设备),这种冲击会直接影响加工质量。这时候就需要用 S 形速度曲线来平滑过渡——那是后面章节的内容了。

但话说回来,对于大多数普通应用(比如传送带、AGV、简易机械臂),梯形曲线完全够用。调好三个参数,就能跑得又快又稳。

梯形速度曲线三段式结构 t v 加速段 匀速段 减速段 t₀ t₁ t₂ t₃ Vmax 梯形曲线:加速→匀速→减速,参数 Vmax、a、d 决定曲线形状

这张图把三段式结构画得很清楚。你可以看到:加速段和减速段的斜率分别由 a 和 d 决定,匀速段的高度就是 Vmax。三个参数,决定了整个运动过程的效率和平稳性。

调梯形曲线,说白了就是在这三个参数之间找平衡。没有万能参数,只有适合你当前设备的参数。多试、多测、多记录——这是调参的唯一捷径。