☰
基于LADRC与微分平坦的伸缩臂抖动抑制方法解析
2026/10/21 8:46:37 网站建设 项目流程

简介:这是一篇发表于《农业机械学报》的学术论文PDF,题为《基于微分平坦与自抗扰控制的伸缩臂抖动抑制研究》,适合从事农业装备、机器人控制或机电一体化研究的工程师、研究生阅读。论文针对伸缩臂受冲击后抖动影响作业精度的问题,提出基于微分平坦理论构造平坦输出,并设计线性自抗扰控制器,通过扩张状态观测器实时补偿扰动;在拉格朗日动力学模型基础上,实现了不同臂长条件下2秒内消除抖动的效果。资料为1个PDF文件,大小2.46MB,内容包含完整摘要、关键词、引言、建模过程、仿真实验及结论,并附有基金项目与作者信息,可作为控制算法设计、抑振系统搭建及论文写作的重要参考文献。该资源已吸引149人学习,其中模型简化为两刚性杆的思路、参数整定方法以及农业机械与机器人应用探讨,均有较高参考价值。

1. 伸缩臂抖动不是刚度问题,是控制问题

高空作业车在果园授粉、林木修枝这类精细作业时,臂体末端的抖动能把操作精度直接拉垮——你这边刚对准目标,那边臂尖已经画上圈了。传统思路是加粗臂体、提高刚度,但减重设计的大趋势下这条路越走越窄。这篇论文给的思路很直接:把套叠伸缩臂等效成扭簧连接的两根刚性杆,用拉格朗日方程建模型,再用微分平坦把欠驱动系统的两个输出合成一个,最后用线性自抗扰控制器(LADRC)在不依赖精确模型的前提下把扰动估出来、补回去。核心结论是:不同臂长条件下,2秒内消抖,仰角不掉。对做农业装备、高空作业平台控制系统的工程师来说,这套「等效建模 + 平坦输出 + LADRC」的组合拳,比硬怼PID试凑靠谱得多,而且每个参数都有明确的物理含义,调起来不玄学。

2. 等效建模与微分平坦输出:为什么要把两个物理量合成一个

2.1 套叠结构臂体的两刚体等效

论文没有把伸缩臂当成柔性梁去解析,而是从控制角度做了工程简化:以驱动铰接点为界,把套叠臂分成两根刚性杆,中间用刚度k的扭簧连接。这个等效非常聪明,因为控制系统关心的是输入力矩到输出的传递关系,而不是臂体内部每一点的应力应变。

等效后系统的物理参数如下表所示:

参数含义
m₁、l₁、l_c1、θ₁、I_c1第1杆质量、长度、质心距、仰角、转动惯量
m₂、l₂、l_c2、θ₂、I_c2第2杆质量、长度(外伸段)、质心距、仰角、转动惯量
k套叠段等效扭簧刚度
τ第1杆输入力矩

基于拉格朗日方程,论文给出了完整的动力学方程(原文式(1))。注意到这个方程里有cos(θ₁-θ₂)这类耦合项,是典型的欠驱动结构——输入只有一个τ,输出却有θ₁和θ₂两个。不做处理直接设计控制器,反馈变量都选不齐。

关键转折在小变形假设。抖动发生在平衡位置附近,于是论文做了θ₁-θ₂≈0、cos(θ₁-θ₂)≈1、角速度平方项≈0这套近似,把非线性模型在平衡点附近线性化成式(3)的形式:

a·θ̈_δ1 + d·θ_δ1 + b·θ̈_δ2 - k·θ_δ2 = τ_δ b·θ̈_δ1 - k·θ_δ1 + c·θ̈_δ2 + e·θ_δ2 = 0

其中a、b、c、d、e都由杆长、质量、刚度组合而成。这里的坑在于d和e里含有sinθ₁₀、sinθ₂₀项,意味着平衡仰角变了,等效刚度也在变。后面设计控制器时必须把这个算进去。

2.2 平坦输出的构建逻辑

有了线性化模型,接下来要解决欠驱动问题。常见做法是选一个输出直接反馈,但选θ₁的话θ₂的抖动观测不到,选θ₂的话又缺少直接的执行机构对应关系。

论文的思路是构造一个平坦输出y,定义为第1杆仰角增量与第2杆末端加速度的线性组合:

y = θ_δ1 - (c/k)·θ̈_δ2

这里c是第2杆的转动惯量相关项,k是扭簧刚度。为什么是这个组合?推导的动机在式(8):把y代入原方程后,令c+αk=0,输入力矩τ_δ就会直接作用于y的二阶导数——这就把一个欠驱动系统变成了单输入单输出的二阶积分串联型系统。

ÿ = b₀·τ_δ + α·y + β·τ̈_δ

b₀是输入增益,α是y的系数,β是输入二阶导的系数。三者都由a、b、c、d、e组合而成,而a~e又由臂长、质量、刚度决定。也就是说,只要知道当前外伸长度l₂和目标仰角θ₂₀,b₀和α就能实时算出来。

2.3 为什么不用末端激光位移或应变片

论文明确对比了末端变形测量的几种方案。应变片的问题是无法消除未知末端荷载变化带来的稳定点偏移,光学传感器在野外作业环境下无法实施,倾角传感器输出频率一般只有20Hz(最大50Hz),撑不起3Hz左右的臂体振动抑制闭环。最终方案是根部装倾角传感器测θ₁,末端装加速度计测ẍ,再由几何关系换算成θ̈₂。

这个选型决策在做工程落地时很关键。加速度计便宜、频带宽、好安装,倾角传感器提供绝对零点。两个传感器各干各擅长的,中间用平坦输出把量纲不同的两个信号统一起来,绕开了「直接测θ₂」这个物理上不好实现的点。

3. 线性自抗扰控制器设计:带宽整定与参数实时更新

3.1 扩张状态观测器与控制器结构

拿到ÿ = b₀τ_δ + αy + f这个二阶模型后,LADRC的设计就是套模板了。f是总扰动,包含了模型简化误差、未建模动态、外部冲击,全部打包让扩张状态观测器去估计。定义状态向量x₁=y,x₂=ẏ,x₃=f,得到三阶系统:

ẋ = Ax + Bτ + Eḟ y = Cx

扩张状态观测器(LESO)的增益矩阵L由观测器带宽ωₒ唯一确定:

l₁ = 3ωₒ l₂ = 3ωₒ² + α l₃ = ωₒ³ + 3αωₒ

控制器采用PD形式,u₀ = k₁(r - z₁) - k₂z₂,闭环极点配置在控制器带宽ω_c上:

k₁ = ω_c² k₂ = 2ω_c

最终控制量为τ_δ = (u₀ - z₃)/b₀。整个过程就是先让观测器把总扰动f估出来,再用控制量直接抵消掉。

3.2 参数随臂长自动更新的实现

这套方案最实用的点在于b₀和α不是固定常数,而是跟随臂长变化实时更新。原文给出了两个典型工况的参数:

外伸长度l₂b₀αω_c
1.46 m(最短)0.11955.11767
1.96 m(最长)0.07784.09854

观测器带宽ωₒ固定为12不变,控制器带宽ω_c随外伸长度按线性关系自动更新:

ω_c = 15.76 - 6·l₂

从数值趋势上能看出物理含义:臂越短刚度越大,本振频率越高,控制器需要更高带宽才能压住;臂越长刚度越小,控制器带宽降低,避免放大噪声和传感器误差。这就是「用一个公式代替整定表」的价值——现场调试人员不需要理解控制理论,只需输入当前臂长。

3.3 在Simulink中复现控制回路

用Matlab Simulink搭建这个控制回路不算复杂,核心是LESO部分。以下是一个可直接运行的参数计算脚本片段:

% 伸缩臂LADRC参数计算脚本 % 输入:外伸段长度l2,目标仰角theta20 % 输出:b0、alpha、观测器增益L、控制器增益K function [b0, alpha, L, K] = ladrc_param(l2, theta20) % 结构参数(来自实验装置) m1 = 0.3; m2 = 2.7; m = 1.53; l1 = 0.4; la = 0.8; lb = 1.2; E = 70e9; % 截面参数:固定段40x30mm,伸缩段30x20mm,壁厚1.5mm w_a = 0.04; h_a = 0.03; w_b = 0.03; h_b = 0.02; t = 0.0015; % 套叠段等效刚度k(按材料力学悬臂梁挠度公式) [k, lc2] = equiv_stiffness(w_a, h_a, w_b, h_b, t, E, la, lb, l2, m); % 等效刚体参数 Ic1 = m1 * l1^2 / 12; % 第1杆转动惯量(近似) Ic2 = m2 * l2^2 / 12; % 拉格朗日模型系数 a~e a = m1*l1^2 + m2*l1^2 + Ic1; b = m2 * l1 * lc2; c = m2 * lc2^2 + Ic2; d = k - (m1*l1 + m2*l1)*lc2*9.8*sind(theta20); e = k - m2*lc2*9.8*sind(theta20); % 平坦输出模型系数 den = (b*k + c*d)*(a*b*c - 2*b*e*k - b^3) - ... a*e*k*(b*e + c*k) - b*c*k^3 - c^2*d^2*e; b0 = (a*b*c*e + b^2*c*k^2 - c*d*e^2 - b*e^2*k) / den; alpha = (c*d*e*(d*e - k^2 - a*b) + d*e*k*(b*e - c*k) - ... b*k^2*(b^2 + e*k + a*c) - b*c*d*(c*d + 3*b*k)) / den; % 观测器与控制器带宽 wo = 12; wc = 15.76 - 6*l2; % 线性化调参公式 % 观测器增益 L = [3*wo; 3*wo^2 + alpha; wo^3 + 3*alpha*wo]; % 控制器增益 K = [wc^2, 2*wc]; end

代码里的equiv_stiffness函数需要按论文式(4)、(5)实现套叠段质心和等效扭簧刚度的计算。我实际复现时发现,k的计算有几个易错点:一是两段梁的惯性矩要按各自截面对中性轴计算,不能用矩形截面公式直接套;二是外伸段长度l₂变化时,重叠部分长度也在变,质心位置公式里的l₂是总外伸长度而不是重叠长度,需要仔细核对几何关系。

Simulink里LESO的实现方式是用积分器搭状态方程,反馈增益接L矩阵,输出u接b₀的倒数再乘以(u₀-z₃)。需要注意的是z₃的初值要设成0,否则启动瞬间观测器会有一段瞬态过程。

4. 仿真与实验验证:两种臂长下的抗扰表现

4.1 仿真条件设置与PID对比

仿真参数与实验台架一致:两根矩形截面铝管,弹性模量70GPa,外伸段长度调节范围1.46~1.96m,目标仰角66°。冲击载荷为0.5s时刻对第2杆施加单位脉冲力矩,同时在平坦输出y中加入白噪声模拟未建模动态。

论文给出了ADRC与PID的仿真对比,结论归纳如下:

对比项ADRCPID(不完整积分)
调节时间1.5s内回到平衡与ADRC相近
控制力矩平滑性平滑明显波动
末端加速度响应噪声影响小对噪声敏感,幅值偏高
参数整定规律ω_c = 15.76 - 6l₂两组臂长需分别试凑
外伸段变化适应性b₀、α自动更新需重新整定

这里值得展开说的是PID参数整定的工作量问题。论文中PID在1.96m臂长下的整定结果为KP=521.9、KI=467.2、KD=92.3,低通滤波系数17.3;到1.46m臂长时变为KP=608.4、KI=359.6、KD=129.1,低通滤波系数15.9。两组参数之间没有任何可归纳的规律,中途改臂长就要从头试凑。而ADRC只需改ω_c一个变量,且公式是线性的。

我复现仿真时注意到一个容易被忽略的细节:PID对比时采用「不完整积分」结构,即微分项加低通滤波,这是因为末端加速度计输出高频振荡信号,直接微分会放大噪声导致控制量剧烈抖动。这个处理在工程上很常见,但很多论文对比时不给这个细节,导致复现出来的PID性能差得离谱——不是PID不行,是没加滤波。

4.2 实验台架与冲击扰动方式

实验验证的关键在于冲击扰动的重复性和一致性。论文用气动射钉枪实现冲击:钉质量0.047g,速度约8m/s,接触时间7.2μs,按冲量定理等效冲击力约50N。每次实验保持枪口与末端质量块垂直距离1cm,确保冲击条件一致。

无控制状态下,1.96m臂长受冲击后约13s加速度才回到零点,期间抖动约30个周期。这个数据很说明问题——光靠结构自身阻尼,收敛时间以十秒计,完全没法做精细作业。

ADRC控制下的实验结果:

  • 1.46m臂长:冲击后1s内振动消除,1.5s后仰角恢复到设定值
  • 1.96m臂长:冲击后1s内大幅度振动被抑制,2s内小幅振动完全消除

两种极端的臂长条件下,末端振动都在两个往复摆动周期内被有效抑制。论文还提到1.96m臂长时因刚度下降、末端加速度显著增大,出现了控制量饱和现象,但控制仍然有效——这说明LESO的扰动估计能力在饱和工况下依然能维持系统稳定,只是收敛时间稍长。

4.3 控制量输出与实际推力的换算

实验装置采用24V直流电机驱动电推杆,PWM值与推力比值约1.35,最大推力1000N,最大推进速度12mm/s。控制器输出的是力矩增量τ_δ,需要换算成电推杆的推力:

F = (l₀² + l₁² - 2l₀l₁cosθ₁) / (l₀l₁sinθ₁) · τ

这个换算里l₀是电推杆固定铰接点到第1杆铰接点的距离,是一个常量。实际运行时θ₁实时变化,所以换算系数也在变。我在这里踩过坑:如果直接用初始角度算一个固定换算系数,臂体大幅变幅时控制增益会偏差20%以上,严重的会直接激发振荡。正确做法是在控制周期内实时计算换算系数,或者至少按θ₁分段查表。

5. 工程落地避坑与常见问题排查

5.1 倾角传感器带宽不足导致反馈滞后

现象:实际控制效果比仿真差,稳定时间超过2s,振动衰减变慢。 原因:多数倾角传感器输出频率只有20Hz,而臂体振动频率约3Hz,传感器输出滞后于真实运动,相当于反馈通道上串了一个大惯性环节。 解决:根部倾角传感器只用于测θ₁的绝对仰角(变化较慢),末端角度信息由加速度计高频信号提供。两者通过平坦输出合成,各取所长。如果后端反馈必须用倾角传感器,至少选择100Hz以上输出频率的型号,并在观测器设计中把传感器延迟建模为额外扰动。

5.2 扭簧刚度k算偏导致b₀失真

现象:控制器输出异常,系统发散或者收敛极慢。 原因:k值的计算来自材料力学悬臂梁挠度公式,对外伸段长度l₂、重叠长度、截面惯性矩都很敏感,任何一处几何尺寸出错都会导致k偏大或偏小,进而影响b₀、α和观测器增益。 解决:不要直接套公式完事,先用静力学校验:给末端加已知力,测静态偏转角,反推k。实测与理论值通常有10%~30%的偏差,这个偏差直接丢进总扰动f里让LESO去扛即可,但如果b₀偏差超过50%,LESO的估计负担太重,系统会出现持续振荡。

5.3 ωₒ不是越大越好

现象:抗扰效果变差,末端加速度反馈信号里高频噪声明显放大。 原因:观测器带宽ωₒ越大,LESO跟踪总扰动的速度越快,但同时对噪声的放大也越严重。论文取12,是平衡了跟踪速度与噪声抑制的结果。 解决:观测器带宽先按被控对象穿越频率的5~10倍估算,再在仿真里做扰动与噪声的扫频对比。具体操作是固定ω_c不变,逐步增加ωₒ,观察控制量方差和振动衰减速度,取两者平衡点。白噪声功率越大,ωₒ越要保守。

5.4 外伸段长度传感器缺失

现象:臂长变化后控制性能明显退化,但传感器数据显示一切正常。 原因:控制器没有实时获取l₂,b₀和α还停留在上一组参数上,模型失配。 解决:方案一是在伸缩驱动机构上加编码器或位移传感器;方案二是如果电推杆本身是伺服控制的,直接读取其内部的位置反馈。实在没有条件时,用根部倾角θ₁的变化速率推断臂长变化方向,至少保证参数更新的趋势正确。

5.5 控制量饱和后系统反弹

现象:长臂工况下冲击后控制量打到限幅,振动能压住但反弹明显,恢复时间变长。 原因:电推杆推力有限(最大1000N),PWM占空比饱和后控制器输出与执行机构实际输出不再线性,LESO的扰动估计出现偏差。 解决:在LESO设计时把控制量限幅值告知观测器(即b₀乘以实际PWM输出而非指令输出),避免观测器基于虚假的控制量做估计。另外可以加抗饱和补偿——当检测到控制量进入饱和区时,冻结或衰减积分项,防止退出饱和时过冲。

6. 把方法迁移到其他柔性结构:先辨识等效刚度,再定带宽

这套「两刚体等效 + 平坦输出 + LADRC」的框架,不止能用在伸缩臂上。旋转倒立摆、轮摆系统、压电梁抑振,都可以按同样的流程处理:先做等效刚体拆分,再用拉格朗日方程建模并线性化,然后构造平坦输出把欠驱动问题降维,最后交给LADRC兜底模型误差。

从论文的仿真和实验数据看,整套流程的落地步骤可以提炼成四步:

  • 第一步:确定等效刚体拆分的段数。对大多数套叠结构(高空作业臂、起重机吊臂、农用喷雾机桁架),两段等效足够。段数太多会导致平坦输出的解析表达式爆炸,而且b₀和α的物理意义开始模糊。
  • 第二步:用小变形假设做线性化时,必须把平衡点附近的等效刚度算准。我曾经在模拟项目X里直接用了名义刚度值,结果前馈增益偏差30%,系统一上电就啸叫。
  • 第三步:平坦输出的构建不能生搬公式。核心是找到「两个物理量的线性组合,使输入直接作用于其二阶导数」这个组合,也就是令输入到输出的相对阶为2。这个条件本质上是微分平坦定义的工程化表达,需要对系统结构有一定的直觉。
  • 第四步:带宽整定遵循两个原则——观测器带宽固定(用仿真或实验扫频确定一个合适值),控制器带宽跟随结构参数变化(找到线性或查表关系)。如果结构参数变化不大,控制器带宽甚至可以固定不动,LADRC的鲁棒性完全扛得住。

有一件事我从这个项目之后养成了习惯:每次搭新的LADRC系统,先做一次开环阶跃响应实验,辨识出输入到输出的直流增益,用来校验b₀的理论计算值。这个动作只需要半小时,但能避免后续整定过程中大量的「玄学调参」。如果理论b₀和实测增益差了很远,我会更信任实测值——毕竟控制器最终要驱动的是物理世界里的真实系统,模型只是它的近似。希望这次拆解能帮你少走几步弯路。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询