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

写在前面

在谈自己的一些思考之前,放上一本简明的教材(只有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…

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

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

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;共用同一个索…

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

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

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

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

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

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

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

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

静态网页托管_求职季,教你制作一份精美的在线网页简历,程序员必看!!

引言近期和学弟交流了一下找实习的相关的话题&#xff0c;谈到了简历这块。虽然近期没有找工作的打算&#xff0c;但还是会不定期的更新自己的简历。于是将自己的简历分享了一下&#xff0c;没想到得到了这样的评价&#xff0c;心里还是挺高兴的。简历的形式是一个在线的静态网…

为什么不可以使用哈曼顿距离_K-means真的不能使用曼哈顿距离吗?

问题说到k-means聚类算法&#xff0c;想必大家已经对它很熟悉了&#xff0c;它是基于距离计算的经典无监督算法&#xff0c;但是有一次在我接受面试时&#xff0c;面试官问了我一个问题&#xff1a;“k-means为什么不能使用曼哈顿距离计算&#xff0c;而使用欧式距离进行计算&a…

linux 查看进程_Linux怎么查看和监控每个进程的实时流量

请关注本头条号&#xff0c;每天坚持更新原创干货技术文章。如需学习视频&#xff0c;请在微信搜索公众号**“智传网优”**直接开始自助**视频学习**1. 前言NetHogs是一个开源的命令行工具(类似于Linux的top命令)&#xff0c;用来按进程或程序实时统计网络带宽使用率。来自NetH…

mysql修改密码1820_mysql5.7初始化密码报错ERROR1820(HY000):YoumustresetyourpasswordusingALTERUSERstateme...

1&#xff0c;mysql5.6是密码为空直接进入数据库的&#xff0c;但是mysql5.7就需要初始密码cat /var/log/mysqld.log | grep password或者&#xff1a;grep temporary password /var/log/mysqld.lo2&#xff0c;然后执行 mysql -uroot -p&#xff0c;输入上面的到的密码进入&am…

linux复制文件夹到另一个目录_Linux|一个命令行统计给定目录中有多少个子目录,学浪计划...

wc命令用于统计指定文件的字节数、字数、行数、并将统计结果显示出来。一般格式&#xff1a; wc [选项] [文件]选项&#xff1a;-c&#xff0c;--bytes 统计字节数-l&#xff0c;--lines 统计行数-w&#xff0c;--words 统计字数ls命令-l 以长格式显示文本的详细信息。-R 表示递…

mysql源码安装分析_MySQL源码分析(0):编译安装及调试(转)

编译安装为了实现MySQL的更高级别的性能调优&#xff0c;我们通常需要理解其内部实现机制&#xff0c;并对其进行优化调试。在下面的系列中&#xff0c;我们会分别介绍MySQL的部分内部实现机制。首先我们介绍如何从源代码部署一台MySQL服务器。1.下载MySQL Community Server源码…

前端做后台管理系统有前途吗_关于后台管理系统前端项目的思考

开发后台管理系统是大部分前端开发人员接触过的项目&#xff0c;如何更好的进行项目的搭建、组件的开发、数据结构的设计等等&#xff0c;这些都是需要考虑的问题。以下是我结合一些项目的经历和其他大佬的项目代码与技术分享&#xff0c;做出了对于后台管理系统中前端项目的思…

响应式编程优点 有效_什么是响应式编程?

响应式编程是一种通过异步和数据流来构建事物关系的编程模型。这里每个词都很重要&#xff0c;“事物的关系”是响应式编程的核心理念&#xff0c;“数据流”和“异步”是实现这个核心理念的关键。为了帮助大家理解这个概念&#xff0c;我们不妨以APP初始化业务为例来拆解一下这…

虚拟跳线软件干什么用的_视频教程:用 ESI 的虚拟跳线给你的声音添加效果

本视频讲述了如何在互联网上给你的声音添加效果。你可以使用任何想用的效果器&#xff0c;而且不仅可以输入你的声音&#xff0c;输入信号还可以是任何乐器音源&#xff0c;例如键盘或吉他&#xff0c;你甚至可以直播你的整个工程。请先看视频&#xff1a;视频中使用Bitwig给声…