低通滤波器算法实现_控制算法手记自抗扰控制的几点思考

写在前面

在谈自己的一些思考之前,放上一本简明的教材(只有133页),对自抗扰控制ADRC (Active disturbance rejection control)的起源、基本思路、结构、发展及应用做了阐述,是很好的入门读物。

29fbd66d87a634262041dacf30914ba7.png

图1. 自抗扰控制入门书籍

如果要达到弄懂,并能做出相对合理的评价,还是需要经典控制理论和现代控制理论的基础知识和概念,如传递函数(从参考输入、干扰、噪声到控制输入、输出,即Gang of Six),控制器频域分析、设计方法(如波德图、根轨迹、乃奎斯特),状态空间表示(时域)、状态观测及稳定性分析等。

此外,还需要对控制系统设计中所面临的建模、不确定性、外部干扰、测量噪声等实际因素以及PID和其他不同控制器对这些非理想因素的处理方法有所了解。这样才能从不同面向对ADRC的提出、发展、应用以及优缺点做相对客观地评价。

基本思想:积分串联标准型及总扰动观测补偿

ADRC的原理及结构(图2)在上个世纪末由韩京清老师正式提出,经高志强老师等学者进一步发展,至今已经在学术研究和应用领域取得了丰硕成果。知乎及相关论文已经阐述的比较多了,B站上也有相关教学及讲座视频。这里只介绍下ADRC基本思想:即通过扩张状态观测器ESO(Extended State Observer),实时对总扰动(total disturbance)进行观测估计,并在输入端进行补偿,使得被控对象表现得像一个理想模型即积分串联标准性(尽管被控对象实际动态特性并非如此)。其中有两个概念最为关键:积分串联标准型和总扰动观测补偿。

d59e5d61b321bb903a17f0e7e3fa2a89.png

图2. ADRC基本架构

积分串联标准型的提出来源于韩京清老师对控制理论研究中模型论的反思以及Shipanov不变性原理的影响【1】。20世纪60年代以来,以模型和数学方法为基础的现代控制方法(如自适应控制、最优控制、鲁棒控制等)蓬勃发展,工程实践中PID仍占据统治地位(至今,这种状况仍未改变, 见图2, 2019年IFAC数据)。这种控制理论和实践脱节的现象引起了韩老师的反思,并提出了''控制理论——模型论还是控制论【2】''的质疑。加之受到Shipanov不变性(通过对扰动进行补偿,可使被控对象的动态特性不变)的影响,他认识到积分串联型作为动态系统的最简单描述(不涉及任何模型参数,如时间常数、阻尼系数等,只描述变量之间单纯的积分关系),本身就接近线性系统能控标准I型(最后一个状态变量为各状态变量线性叠加,其余满足积分串联关系),而且一些非线性系统经反馈线性化后能转换为能控标准I型。进一步地,如果将积分串联型当作标准型,那么只需要知道系统阶数(不需要知道任何模型参数),就可能摆脱对模型的依赖,发展出类似于PID控制器那样在工业实践中广泛运用的控制方法(PID控制器是一种最简单的数据驱动控制器,即控制器的实际运算完全基于输入到控制器的数据,没有用到任何系统模型的信息);

23ab0192ea6f00c5879eaca73ae5ad2c.png

图3. 时至今日,PID控制器在自动化控制仍据主导地位【3】

有了积分串联标准型,按照Shipanov不变性的思路,剩下的工作就是将不符合标准型的动态特性补偿掉。因此,需要引入总扰动观测的概念。异于标准型的一切动态都归在总扰动内,如高频未建摸动态、外部扰动、模型参数变化等。将总扰动视为标准型状态之外的扩张状态(Extended State),借用现代控制理论中Luenberger Observer的概念,设计ESO计算出总扰动并在输入端实时补偿

【注】韩老师提出来的ADRC版本中,还包含跟踪-微分器以及非线性状态反馈【1】【4】,但作者认为并不属于ADRC的核心,实际上,跟踪-微分器中安排过渡过程和计算微分本质上都是低通滤波器,实际中PID控制已广泛运用类似功能(参考轨迹规划和对微分项滤波)。非线性反馈控制(即大误差小增益,小误差大增益)和增益规划、自适应控制相关算法功能类似。

几点思考

ADRC自提出后,评价褒贬不一。在介绍ADRC发展起源和基本原理的基础上,结合作者自身控制理论和实践的体会,对其中一些问题提出一些思考角度,借此机会,进行相关探讨,加深对ADRC的理解。

ADRC和PID之间的关系

ADRC作为一种不依赖模型的控制方法,其低阶线性版本自然就和同样不依赖于系统模型的PID控制器存在某种对应关系,近期厦门大学金老师的文章【5】明白揭示了PID和ADRC之间的对应关系。

186db45eddbf53b0bf60f8d39ddc581b.png

图4. 二阶线性系统ADRC控制器等效框图及波德图【5】

如图4所示,相比PID控制,将ADRC转换到频域内,相当于在参考信号输入端加了一个低通滤波器C1(s),在PID控制器基础上加上了一个无零点的二阶低通滤波器(带宽omega0越大,截至频率越大),以衰减高频带范围内的干扰。即,使用ADRC,工程师不需要再单独设计这些低通滤波器,尽管这些低通滤波器单独设计时可以有更好的性能。

虽然,PID和ADRC存在着对应关系,然而作为一种从不同角度(时域角度)提出的抗扰控制方法,ADRC(包含ESO和反馈控制器)可视为一种二自由度控制器、在保证跟踪性能和抑制未知干扰(参数变化、模型不确定性等)有了更多自由度,如果在ESO引入模型相关信息,甚至能实现干扰抑制和跟踪性能的独立设计。另一方面,ESO观测出来的信息如何有效利用,仍有讨论的空间。                   

积分串联标准型问题

标准型不仅定义了总扰动的范围,也决定了系统目标动态特性,其选择对于ADRC的控制性能至关重要。对于运动控制系统来说,由于加速度-速度-位置三者本身存在积分关,采用积分串联标准型是合适的。然而对于一些其他类型的被控对象,如存在大时间滞后、死区以及其他未知特性时,本身难以用线性微分方程描述,仍采用积分串联标准型是否合适?对应的总扰动能否被ESO精确观测出来?进一步地,是否有其它标准型(一些研究中,在ESO中纳入模型信息其实相当于改进了标准型,对应ESO观测性能得到了提升【6】),这些标准型中如果涉及到相关参数又该如何选择,仍然是一个开放性问题。                                         

ESO问题

ESO的一个争议在于当纳入系统模型信息时(此时ESO转变为GESO,即General Extended State Observer),是否还算创新,与其他观测器相比优势在哪里?抛去学术上概念定义不提,从实用的角度来看,作者认为扩展状态最大优势在于给予了观测器设计极大的灵活性。取决与模型信息纳入程度(即标准型),总扰动涵盖的范围可大可小,被扩张为一个单独状态,可以在这个扩张状态里灵活处理各种可能性。另一方面,ESO存在的问题是总扰动到达什么程度,还能够观测到或者系统仍能够保持稳定性(参考鲁棒稳定性里的小增益定理【7】)?这方面仍需要进一步理论分析。同时,提高观测器带宽以保证对总扰动的观测效果时,测量噪声的影响也同步提高,这是在实际使用中必须加以考虑的。如参考文献【8】为避免高增益ESO对测量噪声的放大作用,将ESO改造成为级联结构。

其他问题

- ESO观测出来的扰动在输入端进行补偿。然而一些干扰并不是在输入端进入被控系统,因此不能直接在输入端进行完全补偿,此时需要设计合适的干扰动态补偿器【9】,才能够最小程度地减小干扰对被控系统输出性能的影响;

- 评价ADRC应该更多从ADRC背后的思想入手,而不是拘泥于某种固定表达形式。ADRC的基本思路是(标准型+总扰动观测补偿),达到简化‘被控对象系统特性’的目的,将以往高度依赖模型的控制器设计问题转化为系统抗扰(总扰动补偿)问题。从这个意义上,如何进一步发扬并深化ADRC背后的基本思想并将其运用到实践当中仍然需要研究者不断努力。-控制算法应该充分利用可用的离线信息(模型信息和历史数据)和在线信息(实时测量数据);动态系统控制不应该拘泥于基于模型或者数据驱动控制方法,也不应拘泥于已有的处理某类控制问题的标准算法和概念名称,而是要结合实际情况,运用一切可知的信息,掌握的信息越充分,所能达到的控制效果越好。从ADRC中ESO发展出来的GESO提供一种切实可行的框架:根据所掌握的模型信息多少,决定GESO纳入离线信息的程度,其余不了解的信息当作总扰动在线进行补偿。因此,作者认为,以此思路开展基于模型和数据驱动控制方法的融合应该是一条可行路径

【参考文献】

[1]. 朱斌, 自抗扰控制入门,北京航空航天大学出版社,2017.

[2]. 韩京清, 控制理论——模型论还是控制论. 系统科学与数学, 1989, 9(4): 328-325.

[3]. IFAC Industry Committee Update: https://www.ifac- control.org/newsletter_archive/IFAC_Newsletter_2019_2_April.pdf

[4]. Han, Jingqing. “From PID to Active Disturbance Rejection Control.” IEEE Trans. Indust. Elect., vol. 56, no. 3, 2009, pp. 900–906.

[5]. Huiyun Jin, JingChao Song, Weiyao Lan and Zhiqiang Gao, ''On the characteristics of ADRC: a PID interpretation." Science in China Series F:Information Science, vol. 63, no. 10, 2020.

[6]. Zheng, Qing, and Zhiqiang Gao. “Active Disturbance Rejection Control: Between the Formulation in Time and the Understanding in Frequency.” Control Theory and Technology, vol. 14, no. 3, 2016, pp. 250–259.

[7]. Jin, Huiyu, et al. “On Stability and Robustness of Linear Active Disturbance Rejection Control: A Small Gain Theorem Approach.” 2017 36th Chinese Control Conference (CCC), 2017, pp. 3242–3247.

[8]. Łakomy, Krzysztof, et al. “Active Disturbance Rejection Control with Sensor Noise Suppressing Observer for DC-DC Buck Power Converters.” Arxiv:Eess.SY, 2020.

[9]. Li, Shihua, et al. “Generalized Extended State Observer Based Control for Systems With Mismatched Uncertainties.” IEEE Transactions on Industrial Electronics, vol. 59, no. 12, 2012, pp. 4792–4802.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

添加日志_第五章springboot2.0添加aop日志实现记录请求地址

1. 添加spring-boot-starter-aop包<dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-aopartifactId><version>2.0.0.RELEASEversion>dependency>2. 新建WebLogAspect类3. 添加Aspect Component注解…

本机连接opc server有部分数据不刷新_实时数据库PI在企业MES系统中的应用

实时数据库是计算机控制系统和上层生产管理系统数据存储和展示的核心。结合河南天冠燃料乙醇有限公司MES系统应用实例&#xff0c;介绍了实时数据库PI的安装部署&#xff0c;建立信号量集和数据导入&#xff0c;以及客户端接口配置&#xff0c;数据库测试等相关主题。通过基于P…

pythonlistsort函数_python用List的内建函数list.sort进行排序

对List进行排序&#xff0c;Python提供了两个方法方法1.用List的内建函数list.sort进行排序list.sort(funcNone, keyNone, reverseFalse)Python实例&#xff1a;方法2.用序列类型函数sorted(list)进行排序(从2.4开始)Python实例&#xff1a;两种方法的区别&#xff1a;sorted(l…

java 数组赋值_自学JAVA每日记录(10)-欢迎指点欢迎共勉

接上一篇编程练习&#xff1a;编写一个JAVA程序&#xff0c;创建指定长度的 int 型数组&#xff0c;并生成 100 以内随机数为数组中的每个元素赋值&#xff0c;然后输出数组要求&#xff1a;1、 要求通过定义带参带返回值的方法来实现2、 通过参数传入数组的长度&#xff08;例…

agv系统介绍_AGV地面控制系统介绍

AGV控制系统分为地面(上位)控制系统、车载(单机)控制系统及导航/导引系统&#xff0c;其中&#xff0c;地面控制系统指AGV系统的固定设备&#xff0c;主要负责任务分配&#xff0c;车辆调度&#xff0c;路径(线)管理&#xff0c;交通管理&#xff0c;自动充电等功能&#xff1b…

python爬虫绕过验证码_爬虫怎样绕过验证码?

叶湘伦&#xff1a;【文字篇】如何系统地自学 Python&#xff1f;​zhuanlan.zhihu.com1&#xff0c;cookie登录利用cookie的特性&#xff1a;cookie会保持较长的时间&#xff0c;来避免用户频繁登录cookie一般由前端开发用js生成&#xff0c;可以利用抓包尝试下破解&#xff0…

python数据变更邮件提醒_如何使python脚本在某些数据更改时自动发送电子邮件?...

所以基本上&#xff0c;我做了一个python脚本&#xff0c;每12小时给我发送一封包含我公共IP地址的电子邮件。我的目标是使它自动发送电子邮件只有当我的IP更改。如果我能帮上忙的话。在我的密码是&#xff1a;from json import loadsfrom urllib.request import urlopenimport…

java异常处理机制_Java编程中的异常机制

本文旨在以初学者的角度来学习Java异常的知识&#xff0c;尽量简单&#xff0c;一些细枝末节的知识不会讲述&#xff0c;但不影响对知识的掌握。&#xff08;比如try-catch可以嵌套&#xff0c;不太会这么用&#xff09;1.什么是异常我们先举个例子int 在IDE里输入这样一个stat…

数组字典_VBA数组与字典解决方案第34讲:数组的传递

大家好&#xff0c;今日我们继续讲解VBA数组与字典解决方案&#xff0c;今日讲解的是第34讲&#xff1a;数组的传递。在应用数组的时候&#xff0c;我们往往需要要把数组的值由一个数组传递给另外一个数组&#xff0c;就如同变量的传递一样&#xff1a;AB 把B值赋给ACA 把A值赋…

为什么代码正确却没有爬虫的信息_为什么敷面膜没有效果?原来这才是敷面膜的正确步骤...

七夕泥萌都去哪浪了&#xff1f;是不是化个美美的妆&#xff0c;然后出门吃吃吃逛逛逛&#xff1f;说到出门前化妆&#xff0c;很多小仙女会在化妆前敷面膜&#xff0c;让皮肤保持一个好状态&#xff0c;壹知肤护肤研究中心贺老师&#xff08;sunny老师&#xff09;提到其实这是…

合并 多个dataframe_什么是Pandas的DataFrame?

1. 什么是DataFrameDataFrame是一个表格型的数据结构&#xff0c;它含有一组有序的列&#xff0c;每列可以是不同的值类型&#xff08;数值、字符串、布尔值等&#xff09;。DataFrame既有行索引也有列索引&#xff0c;它可以被看做由series组成的字典&#xff08;共用同一个索…

linux部署python web项目 详细_在linux服务器下部署python工程(爬虫)

---恢复内容开始---这两天 部署 这个 工程 &#xff0c;真的是 心力交瘁惹。如果有用到爬虫的话&#xff0c;python环境 先配好&#xff0c;如果是 python3的话 beautifulsoup 可以参见http://www.cnblogs.com/clover-xuqi/p/7155496.html 正题&#xff1a;简单来说 &#xff…

jap sql 保存_【hibernate spring data jpa】执行了save()方法 sql语句也执行了,但是数据并未插入数据库中...

【转】用CSS代码写出的各种形状图形的方法一共收集整理了图形20个,比较实用,同时也为了熟悉CSS的代码.整合了一下,有错误欢迎指出. 1.正方形 #square {width: 100px;height: 100px;background: ...转 -android&colon;程序无响应&#xff0c;你该如何定位问题&#xff1f;如…

web td不对齐_珍稀干货!阿里 Web 音视频开发趟坑指南

作者 | 阿里文娱前端技术专家 归影责编 | 夕颜出品 | CSDN(ID:CSDNnews)这不是一篇基于MSE开发Web播放器的入门文章&#xff0c;而是围绕Web播放器开发遇到的常见问题与解决方案&#xff0c;毕竟入门文章常有而趟坑干货不常有。如果您有Web播放开发经验和音视频技术基础&#x…

mysql57数据库命令_MySQL 5.7 mysql command line client 使用命令详解

MySQL 5.7MySQL command line client 使用命令1.输入密码&#xff1a;******2.ues mysql;使用Mysql3.show databases;显示数据库4.use register;使用数据库名为register5.show tables;显示register数据库中的表6.describe user;对表user进行操作&#xff1a;insert into user(u…

subscribe error不执行_你不知道的redis:第三方jar无封装命令我们该怎么执行?

redis的基本操作指令就不多说了&#xff0c;今天对redis的进阶操作给大家介绍一下&#xff0c;以及对于jedis和redisTemplate等工具包没有封装的命令我们该如何使用&#xff1f;相信大家读了本篇对redis的整体会有更深的认知。一、Pipelin模式介绍1、redis的通常使用方式大多数…

阿里云mysql 分布式_MySQL大型分布式集群

本套课程将通过分布式集群和分库分表两部分内容进行讲解1、主要解决针对大型网站架构中持久化部分中&#xff0c;大量数据存储以及高并发访问所带来是数据读写问题。分布式是将一个业务拆分为多个子业务&#xff0c;部署在不同的服务器上。集群是同一个业务&#xff0c;部署在多…

子窗体 记录选择_如何设计一个简单的Access登录窗体(1)

Access是一个对数据库新手相当友好的软件。Access的窗体功能确实是一种独一无二的前端设计平台&#xff0c;很多常见的人机交互用法&#xff0c;可以用Access的窗体来轻松实现&#xff0c;同时Access的查询和计算功能&#xff0c;也需要窗体的配合才能获得最佳的表达效果。 一、…

mysql 5.6.14 win32_mysql-5.6.14-win32为免安装解压缩版

mysql-5.6.14-win32为免安装解压缩版&#xff0c;安装版(http://dev.mysql.com/downloads/installer/5.5.html#downloads)存在很多弊端。mysql 5.6.14 win7 32位免安装版配置1.下载mysql 5.6.14&#xff1b;下载地址:http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.14-wi…

网页javascript加载不出_写给初学者的JavaScript异步编程和背后思想

导读&#xff1a;对于接触JavaScript这门编程语言没有多久的本菜鸡而言&#xff0c;在相当长的一段时间内&#xff0c;我都完全无法理解这门语言中的异步编程&#xff0c;不明白什么叫异步编程以及为什么需要异步编程。为什么顺序执行程序就不行了呢&#xff1f;非要使用异步回…