扩展状态观测器(ESO)——超详细解读!
扩展状态观测器(Extended State Observer, ESO)
ESO不仅仅是一个观测器,它更是一种控制哲学的体现,其核心思想非常巧妙且强大。它是由中国学者韩京清研究员在其开创性的自抗扰控制(Active Disturbance Rejection Control, ADRC) 技术中提出的核心概念。
第一部分:ESO 是什么?—— 核心思想与直观理解
1.1 传统状态观测器的局限
在经典控制理论中,状态观测器(如Luenberger观测器)的任务是利用系统的输出量 y 和输入量 u 来估计系统内部无法直接测量的状态变量 x。它的前提是,你必须拥有一个相对准确的系统数学模型。
但现实是残酷的:
- 模型不确定性: 我们建立的模型(如 ẋ = Ax + Bu)永远是真实物理系统的简化或近似。
- 未知扰动: 系统总会受到来自外部和内部的未知扰动(如风阻、负载变化、摩擦、非线性等)。
传统观测器无法区分“由控制输入 u 引起的状态变化”和“由未知扰动/模型误差引起的状态变化”。因此,当模型不准确或存在扰动时,它的估计效果会大打折扣。
1.2 ESO 的革命性思想
ESO 的核心思想可以用一句话概括:
将系统总的不确定性(包括模型未知部分、非线性、内外部扰动)统统视为一个额外的“状态”,即“扩展状态”,然后设计一个观测器去同时估计系统的原始状态和这个“总扰动”。
这个思想非常巧妙,它做了两个关键动作:
- 扩张状态空间: 将 n 阶系统的状态向量 x 扩展为 n+1 维,新增的一维就是“总扰动” f,记作 x_{n+1} = f。
- 统一观测: 设计一个观测器,能够根据输出 y 和输入 u,同时估计出所有的原始状态 x₁, x₂, ..., xₙ 和这个扩展状态 f。
一旦我们得到了总扰动 f 的实时估计值 ˆf,我们就可以在控制律中直接将其抵消:
u = (u₀ - ˆf) / b₀
其中 u₀ 是控制器(如PID)计算出的原始控制量,b₀ 是我们对系统控制增益的一个粗略估计。
一个绝佳的比喻:
想象你在划一条小船,目标是保持直线航行。
- 传统控制(PID): 你发现船向左偏了(误差),你就向右划(控制)。但如果有持续的左风(扰动),你就要不停地、费力地修正。
- ESO + 控制: 你带了一个聪明的观察者(ESO)。这个观察者不仅能看出船偏了,还能估计出风有多大(估计出扰动 ˆf)。然后你不再仅仅根据偏差来划船,而是先故意用一个角度向右划,这个角度正好能抵消风的影响(u = -ˆf),在此基础上再做微调。这样你划得又轻松,船又稳。
ESO 让你拥有了“感知并抵消扰动”的能力,从而将一个复杂、不确定的非线性系统变成了一个简单、确定的“积分器串联型”系统,极大地简化了控制器的设计。
第二部分:数学原理与设计(以二阶系统为例)
让我们用一个最经典的二阶系统来彻底剖析 ESO 的设计过程。
2.1 被控对象模型
假设一个常见的二阶系统,但我们并不精确知道其模型,它受到未知扰动 w(t):
ÿ = f(y, ẏ, w(t)) + b*u
这里:
- y 是系统输出(可测量)。
- u 是控制输入(已知)。
- f(.) 是一个未知的总扰动函数,它包含了未建模动力学、非线性项和外部扰动 w(t)。
- b 是控制增益,我们可能只知道它的一个粗略估计值 b₀。
2.2 状态空间扩展
首先,定义状态变量:
- x₁ = y (位置,即输出)
- x₂ = ẏ (速度)
现在,关键一步:将总扰动 f(.) 定义为第三个状态变量:
- x₃ = f(y, ẏ, w(t)) (扩展状态)
假设总扰动 f 的变化率是未知但有界的,即 ḟ = h(t)(h(t) 未知)。现在我们的系统方程变成了:
ẋ₁ = x₂
ẋ₂ = x₃ + b*u
ẋ₃ = h(t)
y = x₁
看!通过扩展状态,我们将一个充满未知和扰动的复杂二阶系统,转化为了一个简单的、线性的三阶积分器串联系统。这就是 ESO 的精髓所在。
2.3 ESO 的设计
对于上面这个新的三阶系统,设计一个状态观测器就非常容易了。我们设计一个龙伯格观测器(Luenberger Observer)形式的 ESO:
定义 ESO 的估计状态为 z₁, z₂, z₃,分别对应 x₁, x₂, x₃ 的估计值。
ESO 的动态方程如下:
ż₁ = z₂ + β₁*(y - z₁)
ż₂ = z₃ + β₂*(y - z₁) + b₀*u
ż₃ = β₃*(y - z₁)
其中:
- β₁, β₂, β₃ 是观测器的增益参数,需要精心设计以保证估计误差收敛。
- b₀ 是我们已知的控制增益的估计值(b ≈ b₀)。
- (y - z₁) 是输出估计误差,是驱动观测器收敛的反馈信号。
ESO 的工作流程:
- 实时测量输出 y 和控制量 u。
- 通过求解上面的 ESO 微分方程组(通常在微处理器中离散化实现),实时计算出 z₁, z₂, z₃。
- z₁ 是系统输出 y 的估计值(平滑滤波后的信号)。
- z₂ 是系统速度 ẏ 的估计值(无需安装速度传感器!)。
- z₃ 是总扰动 f 的估计值 ˆf!这就是我们最想要的东西。
2.4 参数整定(带宽法)
如何选择增益 β₁, β₂, β₃ ?最常用、最有效的方法是带宽法。
我们希望观测器的误差 dynamics(估计误差的微分方程)是稳定的,并且能快速收敛。可以证明,通过将观测器的特征方程极点全部配置在 -ω₀(ω₀ 称为观测器带宽),可以得到一组增益:
对于 n 阶系统(扩展后为 n+1 阶),增益系数为:
β_i = C_{n+1}^i * ω₀^i, (i = 1, 2, ..., n+1)
其中 C 是组合数。
对于我们的二阶系统(n=2),ESO 是三阶的(n+1=3):
- β₁ = 3 * ω₀
- β₂ = 3 * ω₀²
- β₃ = ω₀³
整定哲学:
- ω₀ 越大,观测器收敛速度越快,能跟踪更快速的扰动。
- ω₀ 过大,会对测量噪声极其敏感(因为高频增益变大),估计值 z₂ 和 z₃ 会充满噪声。
- 因此,ω₀ 的选取是在动态性能和抗噪性能之间的一个权衡。通常从较小的值开始,逐步增加,直到达到满意的扰动估计和状态跟踪效果。
第三部分:与控制器结合(ADRC)
ESO 本身只是一个“感知器”,它需要与一个控制器结合才能构成完整的控制律。这就是自抗扰控制(ADRC)。
继续使用二阶系统的例子。有了 ESO 提供的估计值,我们可以设计控制律:
u = (u₀ - z₃) / b₀
将其代入原始系统方程 ÿ = f + b*u:
ÿ = f + b * [ (u₀ - z₃) / b₀ ] ≈ f + (b/b₀) * (u₀ - ˆf)
如果我们的增益估计得比较准(b ≈ b₀),并且 ESO 估计得很准(z₃ ≈ f),那么:
ÿ ≈ f + u₀ - f = u₀
神奇的事情发生了! 原来的系统 ÿ = f + b*u 被成功地“线性化”并“扰动抵消”为了一个纯双积分器系统 ÿ ≈ u₀。
现在,对于这个简单的双积分器系统 ÿ = u₀,我们可以用非常简单的控制律来控制它,例如一个简单的 PD 控制器:
u₀ = Kp*(r - z₁) + Kd*(ṙ - z₂)
其中 r 是目标指令。
总结 ADRC 的控制结构:
- 安排过渡过程: (可选) 对阶跃指令 r 进行平滑滤波,生成柔和的参考信号,避免初始冲击。
- ESO: 实时估计状态 z₁, z₂ 和总扰动 z₃。
- 扰动补偿: 计算控制量 u = (u₀ - z₃) / b₀。
- 误差反馈: 针对“理想”的积分器串联模型,用 PD 计算 u₀ = Kp*e + Kd*ė。
第四部分:实现细节与离散化
在实际的数字控制系统中,我们需要将连续的 ESO 方程进行离散化。
采用欧拉前向差分法(一阶近似):
ż ≈ (z[k+1] - z[k]) / T,其中 T 为采样周期。
离散化的 ESO 方程为:
e[k] = y[k] - z1[k]
z1[k+1] = z1[k] + T * ( z2[k] + β1 * e[k] )
z2[k+1] = z2[k] + T * ( z3[k] + β2 * e[k] + b0 * u[k] )
z3[k+1] = z3[k] + T * ( β3 * e[k] )
在每个采样周期 k,执行上述计算,即可实时更新状态估计值。
注意: 离散化后的系统性能与采样周期 T 密切相关。T 越小,离散系统越接近连续系统。ω₀ 的选取必须考虑采样频率(通常 ω₀ 应远小于采样频率 1/T)。
第五部分:优势与挑战
优势:
- 不依赖精确模型: “模型免费”,只需知道系统的近似阶次和大致控制增益 b₀。
- 强大的抗扰能力: 能实时估计并补偿内外扰动,这是传统PID等控制器难以做到的。
- 状态观测功能: 无需传感器即可获得速度、加速度等状态信号(无传感器控制)。
- 控制器设计简化: 将复杂系统补偿为标准型,后续可用简单的线性控制器(如PD)。
- 强鲁棒性: 对系统参数变化和扰动不敏感。
挑战与注意事项:
- 相位滞后: 观测器本质上是滤波器,估计出的扰动 z₃ 总会比真实扰动 f 有一定的相位滞后。ω₀ 越高,滞后越小,但噪声越大。
- 测量噪声: 对输出 y 的测量噪声非常敏感,尤其是对估计出的微分信号 z₂(速度)和 z₃(扰动)。在高噪声场合,需要谨慎调节 ω₀,或对 y 进行预处理滤波。
- 控制增益 b₀ 的选取: b₀ 的误差会影响扰动补偿的效果。b₀ 取得比实际 b 小会比取得大更安全。
- 积分饱和: 在离散实现中,需要注意控制输出的限幅问题,防止积分饱和。
总结
扩展状态观测器(ESO)是一种极具创意的控制思想。它通过扩张状态空间,将不确定性视为可观测的状态,借助一个观测器结构对其进行实时估计,并在控制律中主动抵消其影响,从而将被控对象“改造”为一个易于控制的简单系统。
它不仅是ADRC的核心,其思想也可以被融入到其他控制架构中,为解决实际工程中模型不确定性和扰动问题提供了强大而实用的工具。理解和掌握ESO,是现代控制工程师应对复杂系统控制挑战的一把利剑。
注:
之所以能用一个简单的PD控制器来控制 ÿ = u₀ 这个系统,是因为这个双积分器系统是一个最简单、最规范、动态特性完全已知的线性系统。
下面从几个层面来详细解读为什么PD控制器对此类系统如此有效。
1. 从系统动力学角度理解
系统 ÿ = u₀ 是一个纯双积分器。它的物理意义是:加速度 与 控制输入 u₀ 成正比,没有任何其他因素(如阻尼、弹性、非线性、扰动)的影响。
- 第一次积分: 对加速度 ÿ 积分得到速度 ẏ。
- 第二次积分: 对速度 ẏ 积分得到位置 y。
我们的控制目标是:让输出 y 跟踪上一个期望的指令 r。
对于一个这样的系统,控制器 u₀ 的设计逻辑非常直观:
- 如果输出位置 y 落后于目标 r(存在正误差 e = r - y),我们需要施加一个正的加速度 u₀,让系统加速追上去。
- 如果系统速度 ẏ 太快了(相对于目标速度 ṙ),我们需要施加一个负的加速度 u₀,让它减速,防止冲过头(超调)。
这正好就是比例-微分(PD)控制器的作用:
- 比例项 Kp * (r - y):处理位置误差。误差越大,需要的控制力(加速度)越大。它决定了系统的“刚度”和收敛速度。Kp 越大,系统响应越快(但如果太大,会导致振荡)。
- 微分项 Kd * (ṙ - ẏ):预见未来,抑制超调。它感知的是误差的变化率。如果系统正在快速地冲向目标(误差在快速减小),微分项会产生一个反向的控制力,提前开始“刹车”,从而有效地抑制超调和平稳过渡。它决定了系统的“阻尼”。
因此,PD控制器的行为与纯双积分器系统的控制需求是完美匹配的。
2. 与经典控制理论对照(极点配置)
在经典控制理论中,二阶系统是最常见且特性明确的系统。ÿ = u₀ 是一个二阶系统,其开环传递函数为:
G(s) = Y(s) / U₀(s) = 1 / s²
这是一个临界稳定系统(在虚轴上有两个极点),自身没有阻尼,需要控制器来稳定它。
现在我们引入PD控制器:U₀(s) = (Kp + Kd * s) * E(s)
整个系统的闭环传递函数为:
Y(s) G(s) * C(s) (Kp + Kd*s) * (1/s²) Kd*s + Kp
----- = ------------ = ----------------------- = ----------------
R(s) 1 + G(s)*C(s) 1 + (Kp + Kd*s) * (1/s²) s² + Kd*s + Kp
这个闭环传递函数的分母 s² + Kd*s + Kp 是一个标准的二阶系统特征多项式。我们可以将其与标准形式进行对比:
标准形式:s² + 2ζω_n s + ω_n²
其中:
- ω_n = √Kp 是系统的自然频率,决定了系统的响应速度。
- Kp 越大,ω_n 越大,系统响应越快。
- ζ = Kd / (2√Kp) 是系统的阻尼比,决定了系统的平稳性。
- Kd 越大,ζ 越大,系统阻尼越强,超调越小。
这意味着:
通过调节 Kp 和 Kd 这两个简单的参数,我们可以精确地、解耦地将整个闭环系统的动态性能配置成我们想要的任何样子:
- 想要响应快?增大 Kp。
- 想要超调小?增大 Kd。
- 想要临界阻尼(最快无超调响应)?令 ζ=1,即 Kd = 2√Kp。
这种参数的直观性和可控性,是其他复杂系统所不具备的。
3. 与未被ESO补偿的原始系统对比
让我们看看为什么原始系统不能用简单的PD控制。
原始系统:ÿ = f(·) + b*u
- f(·) 是未知的总扰动(非线性、扰动、模型不确定性)。
- b 是未知的控制增益。
如果我们对这个系统粗暴地使用PD控制:u = Kp * e + Kd * ė
闭环方程变为:ÿ = f(·) + b * (Kp * e + Kd * ė)
这个方程非常复杂且不可预测,因为 f(·) 和 b 是未知的、非线性的、时变的。Kp 和 Kd 的效果会被 f(·) 和 b 严重扭曲和干扰。
- 你调好的 Kp 和 Kd,换一个负载(f(·) 变了)可能就完全失效了。
- 为了抑制扰动,你不得不引入积分项(I),而积分项会带来相位滞后、积分饱和等问题,参数非常难调。
而ESO的魔法就在于:
它通过实时估计 f(·) 并用 u = (u₀ - z₃)/b₀ 将其抵消,将控制设计师从与未知扰动 f(·) 和不确定参数 b 的搏斗中解放了出来。我们只需要面对一个纯净的、理想的、完全已知的双积分器系统 ÿ = u₀。
总结
对于 ÿ = u₀ 这个系统,可以用简单的PD控制器,是因为:
- 模型纯净已知: 它是一个无扰动、无不确定性、无非线性的标准双积分器模型。控制输入 u₀ 和系统输出 y 之间的关系是绝对清晰、确定的。
- 控制需求匹配: PD控制器的比例作用对付位置误差,微分作用抑制超调和提供阻尼,其功能恰好是控制一个纯惯性系统所必需的全部。
- 理论设计完备: 基于经典控制理论(如极点配置),PD控制器的参数 Kp 和 Kd 与闭环系统的性能(响应速度、超调量)有直接、准确、解耦的数学关系,参数整定非常简单直观。
- 对比优势明显: ESO的前馈补偿作用承担了最困难的“抗扰”和“模型线性化”工作,使得后台的PD控制器只需要在一个“理想实验室环境”下工作,从而可以用最简单的控制律实现极佳的性能。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)