核心思想:把“不知道”合成总扰动
对许多二阶对象,可以把已知输入通道和所有未知项写成下面的形式:
其中 b_0 是控制器对输入通道增益的估计,f(t) 称为总扰动,包含未建模动力学、参数误差、负载变化和外部扰动。ADRC 的关键不是假装 f(t) 不存在,而是在线估计它并补偿它。
Active disturbance rejection
本页采用二阶线性 ADRC(LADRC)模型:把未知对象动力学、参数误差和外部扰动合并为总扰动,用扩张状态观测器实时估计,再在控制律中主动补偿。页面适合观察观测器带宽、控制带宽、增益估计和噪声之间的取舍。
这里讲的是二阶线性 ADRC。它不是完整的非线性 ADRC 体系,也没有加入跟踪微分器;这样做是为了让仿真和公式保持一一对应。
对许多二阶对象,可以把已知输入通道和所有未知项写成下面的形式:
其中 b_0 是控制器对输入通道增益的估计,f(t) 称为总扰动,包含未建模动力学、参数误差、负载变化和外部扰动。ADRC 的关键不是假装 f(t) 不存在,而是在线估计它并补偿它。
真实对象仍然用一个带阻尼和刚度项的二阶系统来产生响应:
本页固定 r=1、ωn=1.55 rad/s、ζ=0.38,并令滑块 g=b_real/2.00,因此:
重置状态后,扰动在 td=3 s 施加。令 τ=t−td,滑块 A 是波形尺度而不是峰值:
从 ADRC 的角度看,它等价于:
这就是为什么即使对象参数和 b_0 不完全一致,ADRC 仍然可能保持较好的扰动抑制:增益误差的一部分也被并入总扰动。由于总扰动的定义含有 (b_real−b0)u,改变 b0 会改变图中“真实总扰动”的数学分解,即使真实对象本身没有变化。
定义扩张状态 x1=y、x2=dy/dt、x3=f,并把 h=dx3/dt=df/dt 视为未知但变化率有限的输入。页面把噪声加入测量 y_m,再用创新 y_m-z1 修正观测器:
在连续域中将观测器三个极点都放在 -ωo 时,常用带宽整定为:
代码以 Ts=0.002 s 用前向 Euler 离散 LESO,对应离散极点近似为 1−ωoTs;当前参数范围内 ωoTs≤0.07。突变扰动在跳变瞬间不可微,因此 ESO 只能在跳变发生后逐步收敛,不能无延迟地精确重建任意高频扰动。
仿真采用阶跃参考,因此参考速度为 0。名义控制量为:
再用总扰动估计 z3 做补偿:
如果 z3≈f,代回 y''=f+b0u 后,未知项会被近似抵消,剩下的是由 Kp 和 Kd 决定的二阶闭环。
本页把期望闭环写成近似二阶系统:
取 ζc=1 时,对应:
增大 ωc 会让响应更快,但控制量更大,也更容易受到执行器饱和和观测误差的影响。
观测器带宽可能太低,或者测量噪声与系统变化太剧烈。此时补偿会滞后,扰动进入输出。
观测器太快时会把测量噪声也当作状态变化放大。实际系统常要加滤波、限幅或降低 ωo。
b0 至少要给出正确符号和大致量级。差得太多时,补偿项会过强或过弱,甚至让闭环不稳定。
ωc=2.40、ωo=18.0、b0=2.00。观测器带宽约为控制带宽的 7.5 倍,响应和抗扰都比较稳妥。
ωc=1.40、ωo=8.0、b0=2.00。曲线更慢但更容易读,适合先理解 z1、z3 和 u 的关系。
若 z3 抖动明显,不要继续提高 ωo;若 u 长时间贴近 ±12,先降低 ωc 或减小参考变化速度。
b0:它表示输入对二阶加速度的近似增益,符号必须正确。ωc 调到目标响应速度,不要一开始就追求很快。ωo 设为 ωc 的 3 到 10 倍附近,观察 z1 和 y 是否贴合。ωo。ωc 或限制参考变化速度。“扰动后最大偏差”按 100%·max|y−r|/|r| 计算,并在每次扰动施加时重新开始统计。页面的“扰动恢复时间估计”采用实时驻留判据:扰动后若输出曾离开参考值 ±5% 范围,重新进入并连续驻留 0.65 s 后才记录首次进入时刻;若始终没有离开误差带,则显示“未超出”。之后再次越界时,指标会撤销并重新计算。ESO RMSE 使用最近最多 6000 个样本,即最长 12 s。