【H∞鲁棒控制】状态反馈、输出反馈、混合灵敏度H∞控制器设计

  最近在学H∞鲁棒控制,因为后面项目中可能要用到此控制方法,所以提前进行了学习,刚开始接触感觉看不太懂,涉及的数学专业知识较深,而且网上资料也比较零星且局限,摸爬了好几天才搞懂了点,现自己总结了下方便后面回顾。

以下内容不涉及过多理论底层知识,更多的是如何上手使用,如何设计控制器。

0. H∞控制概念

  H∞控制是专门针对一类不确定性系统的控制方法,用来削弱外部扰动带来的影响,本质也是状态反馈,通过设计一个状态反馈矩阵K使闭环系统稳定的同时,让外部干扰对系统期望输出影响最小。
  H∞控制属于鲁棒控制问题中的一种,H∞的∞是无穷范数的意思,即扰动传递函数的无穷范数最小,也即最大幅值最小。
  应用场景:H∞控制的由于其具有较强的鲁棒性,对于那些参数大范围变化、模型动态不确定及非线性严重的对象,特别适应,因而在飞行控制系统中得到了广泛的应用。

1. 标准H∞控制


  H∞控制的所有问题(收敛控制、跟踪控制)均可转化为标准H∞控制框图,通过构造广义矩阵,然后求解LMI不等式或者Riccati方程得到的控制器K。

2. 状态反馈H∞控制

  状态反馈控制分为标准状态反馈H∞控制、次优状态反馈H∞控制、最优状态反馈H∞控制三种,本质是求解LMI不等式矩阵得到的控制矩阵K。三种控制器的LMI不等式矩阵基本一样,只是某几项多乘个系数。这里直接给出三种状态反馈H∞控制的LMI不等式矩阵:
标准状态反馈H∞控制:

次优状态反馈H∞控制:

最优状态反馈H∞控制:

LMI不等式矩阵可利用matlab的LMI工具箱定义,然后再利用LMI求解函数feasp、mincx函数即可求得控制矩阵K。对于使用上面来说,状态反馈控制器设计需要自己定义LMI不等式,较麻烦一些,而输出反馈控制matlab封装了现成的函数,无须自己定义LMI,更为方便。

3. 输出反馈H∞控制

  本质是设计具有状态空间形式的控制器K,输出反馈LMI不等式相比状态反馈要复杂些,自己定义的话要更麻烦,不过好在matlab有封装好的函数直接调用即可。简单说一下底层原理,由于输出反馈的LMI不等式矩阵中包含了未知的控制器参数,所以无法直接定义LMI矩阵,需要使用消元法和变量替代法消去,最终的LMI不等式如下:

看上去是复杂不少哈,不过可以通过定义广义矩阵P,然后直接调用matlab库函数hinflmi进行求解即可,可太方便了。

:仿真结果这里只放输出反馈H∞的次优控制了,不然篇幅有点长,状态反馈和输出反馈扰动抑制效果都挺好的。以下图片是二阶倒立摆在具有外部正弦扰动的情况下输出反馈H∞控制器的控制效果,可以看到,摆角和位移在初始状态(1,1)的情况下最终均收敛至零,控制效果良好,达到了扰动抑制的效果。

4. H∞/H2混合控制

  即多目标优化问题,让扰动不仅满足H∞范数的指标,还要让扰动满足H2范数的指标。

同样,matlab还是提供了现成的库函数hinfmix可以直接调用,不过在调用之前需要定义广义矩阵P和将系统极点配置在LMI区域,求解之后可得到控制矩阵K,该控制器能使得总性能指标最小化。

5. 混合灵敏度H∞控制

  混合灵敏度控制主要是针对跟踪控制问题进行求解,而前两种控制主要是做收敛控制用的。混合灵敏度以跟踪、抗干扰指标作为目标函数,既考虑了系统模型不确定性的鲁棒跟踪问题,又考虑了对干扰的抑制效果。
  混合灵敏度控制的概念有点绕,简单说一下就是,W1对跟踪误差e评价,W2对控制器输出u评价,W3对模型输出y评价,让三者的值均小于某个指标。

  常见的鲁棒H∞混合灵敏度问题主要分为 S/T 问 题、S/KS 问题及 S/KS/T 问题三种形式。其中,灵敏度函数 S :d–>y 的传递函数,表征系统抗干扰能力,灵敏度S越接近0越好。补灵敏度函数 T :r->y的传递函数,表征系统的跟踪性能和噪声对系统的影响,T越接近1越好。
  在目前的文献调研中,发现有两种解决思路,一种是将跟踪问题转化为标准H∞控制框图得到广义矩阵P,然后对其进行Riccati方程的求解;另一种是直接调用matlab库函数mixsyn,该方法无须求解广义矩阵,直接根据标称矩阵设计权函数得到控制矩阵K。第一种思路对于系统单输入单输出的话矩阵维度没问题,如果是多输入多输出矩阵维度感觉有些问题,暂时还没找到解决办法。第二种的话目前看来只适用于系统输入个数=输出个数的情况,如果个数不相等的话也有点问题。
  以下是第二种方法得到的仿真结果,模型为二阶常规模型,参考指令为正弦指令,扰动为在第2s时有个阶跃扰动,只能说控制效果勉强还行。

:权函数的选择相当重要,权函数的选择决定了控制效果的优劣。经过目前的总结,选取规则如下:

  • W1 应选择控制带宽内较大的W1,应低通
  • W2 设为空矩阵表示不对控制输入限幅,或设为一个小的数
  • W3 应选择控制带宽外较小的W3 应高通,并且是被控对象加性或者乘性不确定的上界,从而优化求解得到的控制器可以在理论上保证鲁棒稳定性的要求
  • W1的截止频率小于W3的截止频率
  • % |dcgain| > mag > |hfgain| for a low-pass weight
    % |dcgain| < mag < |hfgain| for a high-pass weight

5.1 一种简化的混合灵敏度H∞控制

  引用某篇文献中的一段话,“采用H∞控制的混合灵敏度控制策略可直接对闭环传递函数( 如S和T) 的增益进行成形,这是一个H∞优化问题,由于设计中需要选择权函数,设计者不得不进行反复迭代和大量的演算以积累实际经验,无捷径可走,甚至有文献称权函数的选择方法及参数调整是一门艺术”。由此可见,权函数的选择实在是太过于繁琐,对设计者进行控制器设计带来了巨大的麻烦,因此一种简化了的H∞控制混合灵敏度方法诞生了,该方法无须设计任何权函数,直接设计出矩阵K。

  应用此种方法可直接得到控制矩阵K,采用这种方法进行仿真,得到的控制效果如下图所示,将其与标准H∞混合灵敏度控制进行对比,控制效果显而易见,此方法不仅跟踪效果更好,还避免了反复尝试不同的权函数,方便还好用。

不过该方法也存在些问题,同样的只适用于系统输入个数=输出个数的情况,对于个数不相等的情况,控制器参数也不好求解。

6 总结与展望

  基于以上结论,初步完成了H∞状态反馈、输出反馈、H∞/H2混合控制、混合灵敏度控制器设计,能够完成对系统的收敛与跟踪控制,控制效果良好。其次针对混合灵敏度控制的权函数选择过于繁琐的问题,提出了一种简化的混合灵敏度H∞控制,该方法好处在于无须求解权函数,直接设计控制矩阵K,且控制效果更好。坏处在于,仅适用于系统输入个数=输出个数的情况。

  后续改进之处有:

  • 目前收敛控制问题已得到解决,跟踪控制的系统输入个数=输出个数也得到了解决,但当需要设计系统输入个数不等于输出个数的跟踪控制问题时,应该怎么办?

参考文献

[1] 鲁棒控制——线性矩阵不等式处理方法[M]. 俞立. 清华大学出版社
[2] 李阳,李树民. 基于LMI的输出反馈H∞控制及其仿真[J]. 战术导弹技术,2004(5):44-48. DOI:10.3969/j.issn.1009-1300.2004.05.011.
[3] 甘童辉. 基于鲁棒H∞控制理论的实时混合模拟试验研究[D]. 江苏:东南大学,2022.
[4] 博客——H无穷控制学习笔记——H无穷控制
[5] 博客——H无穷控制

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

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

相关文章

「Java服务」快速接入SkyWalking方法指南

一、背景 背景&#xff1a;Apache SkyWalking 是一个开源的分布式应用性能监控&#xff08;APM&#xff09;系统&#xff0c;主要用于监控微服务、云原生和容器化应用的性能。接入SkyWalking可以排查以智能投放服务为主的服务响应问题 技术架构 SkyWalking 的核心架构包括以…

银河麒麟V10系统+Windows10双系统启动顺序正确修改方法

***正确可行方法***&#xff0c;测试OK且稳定&#xff1b; 银河麒麟桌面操作系统V10是一款适配国产软硬件平台并深入优化和创新的新一代图形化桌面操作系统&#xff0c;同源支持国内外主流处理器架构&#xff0c;并不断使能GPU、桥片、网卡等各种新硬件&#xff0c;提供更优的软…

vue3学习之插槽slot

关于slot web组件内部的占位符&#xff0c;可以使用自己的标记填充这个占位符 &#xff0c;具名插槽就是在slot标签上添加name属性&#xff08;https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/slot&#xff09; vue3官方文档&#xff1a;https://cn.vuejs.org/gui…

深入解析Java 22:专栏介绍

深入解析Java 22&#xff1a;专栏介绍 Java&#xff0c;作为一种广泛使用的编程语言&#xff0c;一直以来都在不断地发展和改进。2024年3月19日&#xff0c;Java 22的GA版本正式发布&#xff0c;带来了众多令人瞩目的新特性和性能优化。本专栏将深入解析Java 22&#xff0c;带…

AD9680(adc直采芯片)使用说明

写这篇文章之前我是没有使用过AD9680的芯片&#xff0c;但是使用过GMS011芯片&#xff08;是国内24S&#xff09;下的公司出来的芯片&#xff0c;寄存器和管脚全对标。 在这里我就大概说一下芯片的说用方法 一、硬件设计 该芯片支持双通道射频直采 支持协议JESD204B 14位 采样…

leetcode二叉树(五)-二叉树层序遍历

题目 102.二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7…

【网络篇】计算机网络——网络层详述(笔记)

目录 一、网络层 1. 网络传输流程简述 2. 转发和路由选择 3. 控制平面&#xff1a;SDN 方法 二、路由器工作原理 1. 概述 &#xff08;1&#xff09;输入端口 &#xff08;2&#xff09;交换结构 &#xff08;3&#xff09;输出端口 &#xff08;4&#xff09;路由选…

CAS详谈---无锁的锁机制

假设有多个线程想要操作同一个资源对象&#xff0c;我们首先想到的是使用互斥锁&#xff0c;但是互斥锁是悲观的。 悲观&#xff0c;即操作系统会悲观的认为如果不严格同步线程调用&#xff0c;那么一定会产生异常&#xff0c;所以互斥锁会将资源锁定&#xff0c;只供一个线程…

【动手学深度学习】7.5 批量规范化(个人向笔记)

训练深层神经网络是十分困难的&#xff0c;特别是在较短的时间内使它们收敛更加棘手。而本节的批量规范化&#xff08;batch normalization&#xff09; 可以持续加速深层网络的收敛速度结合下节会介绍道德残差块&#xff0c;批量规范化使得研究人员能够训练100层以上的网络 1.…

nbsaas vue3管理后台框架

nbsaas vue3管理后台框架 一、项目概述 Nbsaas Admin Vue 是一个基于 Vue.js 3.0 构建的轻量级后台管理系统&#xff0c;结合了现代前端技术栈的最佳实践&#xff0c;旨在帮助开发者快速构建具有高可扩展性和良好用户体验的后台管理系统。该项目拥有简洁的 UI 设计&#xff0…

Hikyuu教程 | 滚动回测与滚动寻优系统

前面介绍了如何使用 hikyuu 进行策略回测参数优化&#xff0c;同时也提到了这种简单的参数优化本质其实是对历史数据的过拟合&#xff0c;通常并不具备直接使用的意义。那么有什么办法来减缓这种过拟合影响&#xff0c;让参数优化发挥实际的作用呢&#xff1f;答案是——使用滚…

源码编译方式安装htppd软件

一.源码编译安装httpd软件 1.安装阿帕奇的依赖&#xff0c;安装apr软件&#xff0c;阿帕奇正常运行的环境这个环境就是apr。 2.安装apr-util软件&#xff0c;主要提供针对apr环境的管理工具&#xff0c; 3.安装阿帕奇软件即httpd软件。 如上图所示&#xff0c;就是三个软件的…

E38.【C语言】练习:数据结构时间复杂度的计算

目录 1.二分法的时间复杂度 解: 2.求阶乘的时间复杂度 解: 3.递归实现斐波那契数,求时间复杂度 解: 4.时间复杂度的排名 备注:有关时间复杂度的讲解参见80.【C语言】数据结构之时间复杂度 1.二分法的时间复杂度 (代码来自E7.【C语言】练习&#xff1a;在一个有序数组中…

CentOS 7 yum失效的解决办法

文章目录 一、CentOS 7停止维护导致yum失效的解决办法解决方案 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、CentOS 7停止维护导致yum失效的解决办法 020 年&#xff0c;CentOS 项目与红帽联合宣布将全部投资转向 CentOS Stream&#xff0c;这是…

SpringBoot项目热部署-devtools

DevTools 会使用两个类加载器&#xff08;一个用于加载不变的类&#xff0c;一个用于加载可能会变化的类&#xff09;&#xff0c;每次重启只重新加载管理变化的类的加载器&#xff0c;因此会快很多 1.导入依赖 <dependency> <groupId>org.springframework.boot&l…

HCIE-Datacom题库_01_防火墙【18道题】

一、单选题 1.相比较于路由器、交接机&#xff0c;防火墙转发独有的模块为? 交换网板 MPU LPU SPU 解析&#xff1a; SFU&#xff08;Switch Fabric Unit&#xff09;&#xff1a;交换网板&#xff0c;负责整个系统的数据平面数据平面提供高速无阻塞数据通道&#xff0…

关于SOCKS协议的常见误区有哪些?

代理协议在设备与代理服务器之间的数据交换中起到了关键作用。在这方面&#xff0c;SOCKS代理协议是常见的选择之一&#xff0c;被广泛应用于下载、传输和上传网络数据的场景。然而&#xff0c;关于SOCKS代理协议存在一些常见的误解&#xff0c;让我们来逐一了解。 一、使用SO…

爬虫逆向-js进阶(续写,搭建网站)

1.搭建简单网站1 from flask import Flask,render_template import requests import json app Flask(name)# **location**的温度是**temp**度&#xff0c;天气状况&#xff1a;**desc**app.route(/) # 绑定处理函数 def index_url():location 101010100data get_weather(lo…

【学习】word保存图片

word中有想保存的照片 直接右键另存为的话&#xff0c;文件总是不清晰&#xff0c;截屏的话&#xff0c;好像也欠妥。 怎么办? 可以另存为 网页 .html 可以得到&#xff1a; 原图就放到了文件夹里面

C++简易日志系统:打造高效、线程安全的日志记录工具

目录 引言&#xff1a; 1.日志的基本概念 1.1.什么是日志&#xff1f; 1.2.我们为什么需要日志&#xff1f; 2.自己实现一个简易日志 2.1.日志的等级 2.2日志的格式 2.3.获取时间的方法 2.4.日志的主体实现 参数&#xff1a; 代码解析&#xff1a; 问题&#xff1a…