news 2026/5/30 2:56:10

探索二阶非线性自抗扰控制器(ADRC)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
探索二阶非线性自抗扰控制器(ADRC)

二阶非线性自抗扰控制器(ADRC),用的模块搭建的,控制简单二阶传递函数,可以联合粒子群在线优化自抗扰参数(但粒子群不包含在这里面)。

在控制领域,二阶非线性自抗扰控制器(ADRC)以其独特的优势逐渐崭露头角。今天咱们就来聊聊基于模块搭建,用于控制简单二阶传递函数的 ADRC。

二阶传递函数

首先,我们得了解一下要控制的对象 - 简单二阶传递函数。一般形式为:

\[ G(s) = \frac{\omegan^2}{s^2 + 2\zeta\omegan s + \omega_n^2} \]

这里,\(\omega_n\) 是自然频率,\(\zeta\) 是阻尼比。这两个参数决定了系统的动态特性。比如在 Python 中,我们可以简单模拟这个传递函数的响应:

import control import matplotlib.pyplot as plt # 定义二阶系统参数 wn = 1.0 # 自然频率 zeta = 0.707 # 阻尼比 num = [wn**2] den = [1, 2*zeta*wn, wn**2] sys = control.TransferFunction(num, den) # 计算阶跃响应 t, y = control.step_response(sys) # 绘制响应曲线 plt.plot(t, y) plt.xlabel('Time (seconds)') plt.ylabel('Response') plt.title('Step Response of Second - Order System') plt.grid(True) plt.show()

这段代码使用了control库,先定义了二阶系统的分子分母多项式系数,然后通过TransferFunction创建系统对象,接着用step_response计算阶跃响应,最后绘制出响应曲线。从曲线我们能直观看到系统的动态变化。

二阶非线性自抗扰控制器(ADRC)模块搭建

ADRC 主要由跟踪微分器(TD)、扩张状态观测器(ESO)和非线性状态误差反馈控制律(NLSEF)组成。

跟踪微分器(TD)

TD 的作用是安排过渡过程,并提取输入信号的微分。其离散形式可以表示为:

\[ \begin{cases}

x{1}(k + 1) = x{1}(k) + hx_{2}(k) \\

x{2}(k + 1) = x{2}(k) + hfst(x{1}(k) - v(k), x{2}(k), r, h_{0})

\end{cases} \]

这里v(k)是输入信号,r是速度因子,h是采样周期,h0是滤波因子,fst是非线性函数。

def fst(x1, x2, r, h0): d = r * h0 d0 = h0 * d y = x1 + h0 * x2 a0 = (d**2 + 8 * r * abs(y))**0.5 if abs(y) <= d0: a = x2 + 0.5 * (a0 - d) * (y / abs(y)) else: a = x2 + (y / abs(y)) * (y - d0) / h0 fval = -r * (a / d) if abs(a) <= d else -r * (a / abs(a)) return fval # TD 实现 def TD(v, r, h, h0, x1_prev, x2_prev): x1 = x1_prev + h * x2_prev x2 = x2_prev + h * fst(x1 - v, x2_prev, r, h0) return x1, x2

在这段代码中,我们先定义了fst函数,根据公式计算其值,然后在TD函数中实现了跟踪微分器的离散迭代过程。

扩张状态观测器(ESO)

ESO 用于估计系统的状态和总扰动。离散形式如下:

\[ \begin{cases}

z{1}(k + 1) = z{1}(k) + h(z{2}(k) - \beta{01}e(k)) \\

z{2}(k + 1) = z{2}(k) + h(z{3}(k) - \beta{02}\text{fal}(e(k), \alpha{1}, \delta) + b{0}u(k)) \\

z{3}(k + 1) = z{3}(k) - h\beta{03}\text{fal}(e(k), \alpha{2}, \delta)

\end{cases} \]

其中,e(k) = y(k) - z1(k)fal是非线性函数。

def fal(e, alpha, delta): if abs(e) <= delta: return e / (delta**(1 - alpha)) else: return abs(e)**alpha * (e / abs(e)) # ESO 实现 def ESO(y, u, b0, beta01, beta02, beta03, alpha1, alpha2, delta, h, z1_prev, z2_prev, z3_prev): e = y - z1_prev z1 = z1_prev + h * (z2_prev - beta01 * e) z2 = z2_prev + h * (z3_prev - beta02 * fal(e, alpha1, delta) + b0 * u) z3 = z3_prev - h * beta03 * fal(e, alpha2, delta) return z1, z2, z3

这里先定义了fal函数,再在ESO函数中按照公式进行 ESO 的迭代计算。

非线性状态误差反馈控制律(NLSEF)

NLSEF 根据跟踪微分器的输出和扩张状态观测器的估计值生成控制量。

\[ u0(k) = \text{fal}(v1(k) - z1(k), \alpha{3}, \delta{1}) + \text{fal}(v2(k) - z2(k), \alpha{4}, \delta_{2}) \]

\[ u(k) = \frac{u0(k) - z3(k)}{b_{0}} \]

# NLSEF 实现 def NLSEF(v1, v2, z1, z2, z3, b0, alpha3, alpha4, delta1, delta2): u0 = fal(v1 - z1, alpha3, delta1) + fal(v2 - z2, alpha4, delta2) u = (u0 - z3) / b0 return u

这段代码依据公式计算出控制量u

通过将这些模块组合起来,我们就搭建好了用于控制简单二阶传递函数的二阶非线性自抗扰控制器。虽然粒子群在线优化自抗扰参数不在本次讨论范围内,但 ADRC 本身已经展现出强大的控制能力。通过合理调整各个模块的参数,能让系统达到良好的控制效果。

希望通过这篇博文,大家对二阶非线性自抗扰控制器基于模块搭建控制简单二阶传递函数有更清晰的认识。在实际应用中,根据不同的需求和系统特性,还可以进一步优化和调整这些模块。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 15:57:33

【RK3588开发】配置基于 VS Code + CMake 的 RK3588 交叉编译开发环境

配置基于 VS Code CMake 的 RK3588 交叉编译开发环境 &#xff08;1&#xff09;安装cmake工具&#xff08;2&#xff09;编写 CMake 交叉编译配置文件 (toolchain.cmake) 这段 CMake 配置代码的目的是为了告诉 CMake 如何进行交叉编译 set(CMAKE_SYSTEM_NAME Linux) set(CMAK…

作者头像 李华
网站建设 2026/5/29 22:01:27

机器学习——罗辑回归

一、逻辑回归概念点 1.1 逻辑回归优缺点 逻辑回归&#xff08;Logistic Regression&#xff09;是一种广泛使用的统计分析方法和机器学习算法&#xff0c;主要用于处理二分类问题&#xff08;即因变量为二元类别&#xff0c;如0和1、是和否等&#xff09;。尽管名字中有“回…

作者头像 李华
网站建设 2026/5/29 1:29:47

2025最新!专科生必看10个AI论文平台测评,写论文不再难

2025最新&#xff01;专科生必看10个AI论文平台测评&#xff0c;写论文不再难 2025年专科生论文写作工具测评&#xff1a;精准筛选&#xff0c;高效提效 随着AI技术的不断发展&#xff0c;越来越多的学术辅助工具进入高校师生的视野。对于专科生而言&#xff0c;论文写作不仅是…

作者头像 李华
网站建设 2026/5/28 16:18:26

拒绝“半吊子”AI代码,Java开发者迎来救星!

家人们&#xff0c;谁还没被AI生成的Java代码里那密密麻麻的“TODO”气得火冒三丈&#xff01;让AI写个Java接口&#xff0c;方法体里就孤零零躺着“// TODO 实现业务逻辑”&#xff1b;让它补全异常处理&#xff0c;直接甩来“// TODO 完善异常捕获”。咱花钱用AI&#xff0c;…

作者头像 李华
网站建设 2026/5/28 14:41:59

2025秋招最最最高薪岗位曝光!

秋招战场&#xff0c;冰火两重天。一边是“月薪过万”的普遍焦虑&#xff0c;另一边&#xff0c;部分方向的毕业生已将“年薪40万”纳入囊中......近日&#xff0c;《2025年秋季校园招聘白皮书》正式发布&#xff0c;它调研了2000毕业生、近1000家企业HR&#xff0c;里面的数据…

作者头像 李华