4. 前馈控制技术:速度前馈与加速度前馈

做龙门机器人控制这么多年,我越来越觉得——反馈控制是底线,前馈控制才是上限

什么意思呢?

反馈控制就像你开车时盯着后视镜调整方向。你看到偏了再打方向盘,总归是慢半拍。前馈控制呢?是你提前看到弯道,提前打方向。车还没到弯心,你的动作已经到位了。

说白了,前馈就是「预判」。在龙门机器人这种高速高精度的场景下,没有前馈,你很难把跟随误差压到理想水平。

4.1 速度前馈与加速度前馈的原理

先讲原理,不绕弯子。

龙门机器人的运动控制,本质上是在解决一个「力与运动」的关系。你给电机一个电流,电机产生力矩,力矩驱动负载运动。但问题是——负载有惯性,有摩擦力,有各种扰动。

反馈控制器(比如PID)看到误差才动作。误差越大,输出越大。但如果你只靠反馈,你会发现一个现象:速度越快,跟随误差越大

为什么会这样?

因为反馈天生滞后。它必须等到误差出现才能响应。而前馈不一样,它直接根据你期望的运动轨迹,提前计算出需要施加的力。

速度前馈:根据目标速度,提前给一个与速度成正比的补偿量。主要克服的是粘性摩擦和反电动势。

加速度前馈:根据目标加速度,提前给一个与加速度成正比的补偿量。主要克服的是惯性力。

我打个比方你就明白了。

你推一个很重的箱子。如果你等箱子开始动了再加力,那起步一定很慢。但如果你提前预估好需要多大的力,在推的一瞬间就使上劲——箱子起步就快,而且平稳。

速度前馈就是那个「预估的力」,加速度前馈就是那个「起步的爆发力」。

核心公式(简化版):

前馈输出 = Kvff × 目标速度 + Kaff × 目标加速度

其中:

  • Kvff:速度前馈增益
  • Kaff:加速度前馈增益

4.2 前馈补偿量的标定方法

标定,说白了就是找到合适的Kvff和Kaff

这步做不好,前馈不但没效果,反而可能帮倒忙。我见过太多人把前馈增益调得过大,结果系统震荡得一塌糊涂。

我个人习惯用「两步法」来标定:

  1. 先标加速度前馈
  2. 再标速度前馈

为什么是这个顺序?

因为加速度前馈影响的是动态响应,速度前馈影响的是稳态跟随。先搞定动态,再优化稳态,逻辑上更顺。

第一步:标定加速度前馈

操作步骤:

  1. 让机器人跑一段梯形速度曲线(加速-匀速-减速)
  2. 将速度前馈设为0
  3. 逐渐增大加速度前馈增益,观察加速段和减速段的跟随误差
  4. 理想的加速度前馈,应该让加速段和减速段的误差峰值基本对称且最小

我曾经在一个双驱龙门项目上,加速度前馈标定花了整整两天。为什么?因为两个轴的惯量不一样,标出来的Kaff也不一样。后来我干脆写了个自动扫参脚本,让机器自己跑,自己记录误差曲线。

小技巧:

标定加速度前馈时,建议用S型速度曲线而不是梯形曲线。S型曲线的加速度变化更平滑,不容易激发机械谐振,标出来的参数更准。

第二步:标定速度前馈

操作步骤:

  1. 保持刚才标好的加速度前馈不变
  2. 让机器人跑一段匀速运动
  3. 逐渐增大速度前馈增益,观察匀速段的跟随误差
  4. 理想的速度前馈,应该让匀速段的误差趋近于0

这里有个坑,我得提醒你。

注意:

速度前馈增益不要调得太大。调太大,系统对速度指令的噪声会非常敏感。你想想看,速度指令上有一点毛刺,经过前馈放大后直接变成电流波动——电机就开始抖了。

我一般把速度前馈控制在0.8~1.2之间,超过1.5就要小心了。

4.3 前馈与反馈的协同工作

前馈和反馈不是二选一的关系,而是搭档关系。

前馈负责「大头」——把已知的、可预测的力提前补偿掉。反馈负责「小头」——把模型误差、摩擦力变化、外部扰动这些不确定因素吃掉。

你可以这样理解:

  • 前馈:开环补偿,基于模型,响应快,无延迟
  • 反馈:闭环修正,基于误差,响应慢,但能消除稳态误差

两者配合得好,效果是1+1>2。

我画了一张图,帮你理清这个逻辑:

前馈与反馈协同控制框图 目标轨迹 前馈控制器 反馈控制器 + 被控对象 输出 反馈回路(误差修正) 前馈:基于模型提前补偿 | 反馈:基于误差实时修正

从图上你能看到:目标轨迹同时送给前馈和反馈。前馈直接算出一个补偿量,反馈根据误差算出一个修正量,两者相加后送给被控对象。

这样做的优势很明显:

  • 前馈承担了大部分的控制任务,反馈只需要处理「残差」
  • 反馈的增益可以适当降低,系统更稳定
  • 整体跟随精度大幅提升

我做过一个对比测试:只用PID反馈,跟随误差大约0.5mm;加上前馈后,误差直接降到0.05mm以内。十倍以上的提升。

实战建议:

前馈和反馈的权重分配,我一般遵循「三七原则」——前馈承担70%的控制力,反馈承担30%。当然这个比例不是固定的,要根据你的机械刚性和负载特性来调。

如果机械刚性差,前馈比例要降低,否则容易激振。如果机械刚性很好,前馈比例可以提到80%以上。

4.4 常见问题与避坑

最后聊几个我踩过的坑。

坑一:前馈参数和反馈参数互相打架

我曾经在一个项目上,前馈和反馈都调得很大。结果系统响应快是快了,但一遇到微小扰动就震荡。后来发现是前馈和反馈在「抢功劳」——前馈已经补偿了大部分,反馈还在拼命修正,两者叠加导致过冲。

解决办法:先调好前馈,再调反馈。前馈调好后,反馈的P增益可以适当降低。

坑二:加速度前馈导致末端抖动

龙门机器人如果结构刚性不够,加速度前馈太大时,加减速瞬间会产生明显的抖动。这是因为加速度突变激发了机械谐振。

解决办法:用S型速度曲线平滑加速度变化,或者在前馈路径上加一个低通滤波器。

坑三:速度前馈在低速时效果不明显

低速运行时,摩擦力占主导,而摩擦力是非线性的。速度前馈是线性补偿,对非线性摩擦力效果有限。

解决办法:低速段可以引入摩擦力前馈模型(比如Stribeck模型),或者干脆在低速时降低速度前馈权重,让反馈来处理。

嗯,前馈控制这块内容不少,但核心就一句话:用已知的模型,提前做补偿。你模型建得越准,前馈效果越好。你标定做得越细,系统跑得越稳。

下次调试龙门机器人时,试试先把前馈调好,再动反馈。你会发现,原来那些让你头疼的跟随误差,其实没那么难搞定。


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