4. 梯形速度轨迹:梯形速度曲线原理、加速/匀速/减速阶段计算、参数选择与平滑性

梯形速度曲线,这个名字听起来挺唬人。其实说白了,就是让机器人先加速,再匀速跑一段,最后减速停下来。你想想看,这跟开车一模一样——红灯起步踩油门,路况好就稳住速度,快到路口了轻踩刹车。

我最早接触这个,是在一个码垛项目里。那时候刚入行,觉得让电机直接全速跑不就完了?结果每次启停都咣当一声,机械臂抖得跟筛糠似的。后来才明白,梯形速度曲线就是解决这个问题的。

4.1 梯形速度曲线的原理

梯形速度曲线,顾名思义,速度-时间图像是个梯形。它由三段组成:

  • 加速阶段:速度从0线性增加到目标速度V_max
  • 匀速阶段:保持V_max运行
  • 减速阶段:速度从V_max线性减到0

为什么叫梯形?你画个图就明白了。横轴是时间,纵轴是速度,三段连起来就是个梯形。嗯,如果加速和减速时间相等,那就是个等腰梯形。

核心公式

加速度 a = V_max / t_acc

减速度 d = V_max / t_dec

总位移 S = ½·a·t_acc² + V_max·t_const + ½·d·t_dec²

这里有个关键点:加速和减速的斜率,就是加速度和减速度。斜率越大,启停越猛。我在项目中遇到过,有些工程师为了赶节拍,把加速度设得特别大。结果电机倒是跑得快,但机械结构受不了,螺丝都震松了。

4.2 三个阶段的计算方法

实际编程时,我们需要实时计算每个时刻的速度和位置。我习惯用时间分段法,简单粗暴。

4.2.1 加速阶段(0 ≤ t < t_acc)

v(t) = a * t
p(t) = 0.5 * a * t²

这个阶段,速度线性增长,位置是时间的二次函数。说白了就是越跑越快,位移增长得越来越快。

4.2.2 匀速阶段(t_acc ≤ t < t_acc + t_const)

v(t) = V_max
p(t) = p_acc + V_max * (t - t_acc)

匀速阶段最简单,速度不变,位置线性增长。p_acc是加速阶段结束时的位置。

4.2.3 减速阶段(t_acc + t_const ≤ t ≤ T_total)

v(t) = V_max - d * (t - t_acc - t_const)
p(t) = p_const + V_max * (t - t_acc - t_const) - 0.5 * d * (t - t_acc - t_const)²

减速阶段是加速的镜像。速度线性下降,位置增长越来越慢,直到停止。

我的小技巧:实际编码时,我习惯用一个状态机来管理这三个阶段。每个控制周期检查当前时间,切换到对应的计算分支。这样代码清晰,调试也方便。

4.3 参数选择与平滑性

参数选择,说白了就是三个数:最大速度V_max、加速度a、减速度d。怎么选?我踩过不少坑,总结几条经验。

4.3.1 最大速度V_max

V_max受两个因素限制:电机额定转速和机械结构允许的最大速度。别只看电机手册,实际跑起来,机械共振、负载惯性都会限制速度。

我记得有一次,电机标称3000转,我设了2500转。结果跑起来整个机架都在抖。后来一测,发现是某个支架的固有频率刚好在2500转附近。最后降到2000转才稳定。

4.3.2 加速度a和减速度d

这两个参数决定了启停的平缓程度。选大了,冲击大;选小了,效率低。

参数 选大的后果 选小的后果
加速度a 启动力矩大,可能丢步或过载 加速时间长,效率低
减速度d 制动距离短,但冲击大 减速时间长,可能过冲

避坑指南:我曾经在一个项目中,把加速度设得跟减速度一样。结果发现减速时电机刹不住,位置超调了。后来才意识到,负载在减速时惯性更大,减速度应该比加速度小10%-20%。

4.3.3 平滑性优化

梯形速度曲线有个天生的缺点:加速度突变。在加速开始、加速结束、减速开始、减速结束这四个时刻,加速度从0跳变到a,或者从a跳变到0。这种突变会产生冲击力,俗称「顿挫感」。

怎么优化?我常用的方法有两个:

  • S形曲线:在梯形曲线的拐点处,用圆弧或正弦曲线过渡。说白了就是把尖角磨圆。
  • 加加速度限制:限制加速度的变化率,让加速度平滑变化。这个在高端伺服驱动器里很常见。

不过话说回来,对于大多数普通应用,梯形曲线已经够用了。没必要为了追求完美平滑,把系统搞得太复杂。

4.4 梯形速度曲线的SVG流程图

下面这张图,展示了梯形速度曲线的完整逻辑。从输入参数开始,到三个阶段的计算,再到最终输出。我画这张图的时候,特意把参数选择和避坑点也标上了。

梯形速度曲线核心逻辑 输入参数 V_max, a, d, 总位移S 是否达到V_max? 加速阶段 v = a*t, p = 0.5*a*t² 到达终点? 匀速阶段 v = V_max, p线性增长 减速阶段 v = V_max - d*t, 位置二次下降 未达匀速直接减速 输出:当前速度v(t) + 当前位置p(t) 发送给电机驱动器,执行运动控制 ⚠️ 避坑指南 1. 减速度应比加速度小10%-20%,防止过冲 2. 最大速度要考虑机械共振频率,别只看电机标称 3. 短距离运动可能没有匀速段,直接加速后减速

这张图里,我特意标出了「未达匀速直接减速」的情况。你想想看,如果总位移很小,加速还没到V_max就得开始减速了。这时候梯形就变成了三角形。嗯,这种情况在短距离点动时很常见。

4.5 实际应用中的参数整定

参数整定,说白了就是调参。我一般按这个步骤来:

  1. 先定V_max:根据电机额定转速和机械限制,留20%余量
  2. 再定加速度a:从电机额定转矩反推,考虑负载惯量
  3. 最后定减速度d:取a的80%-90%,防止过冲
  4. 实际跑一下:观察位置误差和振动情况,微调

我的经验:如果条件允许,用示波器抓一下实际速度曲线。你会发现理论曲线和实际曲线总有偏差。比如加速阶段,实际速度会略滞后于理论值,因为电机有响应延迟。这时候适当增大加速度,可以补偿这个滞后。

好了,梯形速度曲线就讲到这里。核心就是三段式:加速、匀速、减速。参数选择要兼顾效率和稳定性。平滑性方面,如果要求不高,梯形曲线完全够用;要求高的话,可以考虑S形曲线。

专注资料整理