现代控制理论

B站学习视频https://space.bilibili.com/230105574/channel/seriesdetail?sid=1569601

一.引入状态-空间表达

(本质上是使用一组向量的线性组合来表示整个系统任意物理量,也就是一个特征分解的过程)

现代控制理论的基础是 状态-空间表达方式,还是用经典控制理论里的弹簧系统

在经典控制理论中会用到拉普拉斯变换来对上式进行转换,以找到这个系统的传递函数,而在现代控制理论中会找新的表达方式——状态-空间,这里可以理解成一种包含输入、输出和系统变量的集合,把这个集合用一阶微分方程的方式进行表达

就比如上面的m\ddot{x}+B\dot{x}+kx=f(t)就要选择合适的状态变量消除高阶项,例如z_{1}=x,z_{2}=\dot{x}\Rightarrow \dot{z_{1}}=\dot{x}=z_{2}, \dot{z_{2}}=\ddot{x}=\frac{f(t)-kx-B\dot{x}}{m}

(其实就是多用一个变量表示一阶项)

然后用矩阵的形式表示上述的\dot{z_{1}}\: and\: \dot{z_{2}},u(t)是输入,y=x是输出,只不过所有的东西都表示成\dot{z_{1}}\: \dot{z_{2}}\: and\: u(t)的关系——

\begin{bmatrix} \dot{z_{1}}\\ \dot{z_{2}}\end{bmatrix}=\begin{bmatrix} 0 &1 \\ -\frac{k}{m} & -\frac{B}{m} \end{bmatrix}\begin{bmatrix} z_{1}\\ z_{2}\end{bmatrix}+\begin{bmatrix} 0\\ \frac{1}{m}\end{bmatrix}\begin{bmatrix} u(t) \end{bmatrix}

\begin{bmatrix} y\end{bmatrix}=\begin{bmatrix} 1 &0 \end{bmatrix}\begin{bmatrix} z_{1}\\ z_{2}\end{bmatrix}+\begin{bmatrix} 0\end{bmatrix}\begin{bmatrix} u(t) \end{bmatrix}

 因此在现代控制理论中,特征值和系统的稳定性是会有一定关系的

二.状态-空间方程求解方法

例1:\dot{x}(t)=ax(t)

sX(s)-x(0)=aX(s)\Rightarrow X(s)=\frac{x(0)}{s-a}\Rightarrow x(t)=x(0)e^{at}

当出现多个状态变量时,有如下两种情况(无耦合和有耦合):

例2:\begin{cases} \dot{x_{1}}(t)=ax_{1}(t)\\ \dot{x_{2}}(t)=bx_{2}(t) \end{cases}\Rightarrow \left\{\begin{matrix} x_{1}(t)=x_{1}(0)e^{at}\\ x_{2}(t)=x_{2}(0)e^{bt} \end{matrix}\right.              例3:\begin{cases} \dot{x_{1}}(t)=ax_{1}(t)+bx_{2}(t)\\ \dot{x_{2}}(t)=cx_{1}(t)+dx_{2}(t) \end{cases}

如果表述为矩阵的形式即为\frac{\mathrm{d} }{\mathrm{d} t}\begin{bmatrix} x_{1}\\ x_{2} \end{bmatrix}=A\begin{bmatrix} x_{1}\\ x_{2} \end{bmatrix}\Rightarrow \frac{\mathrm{d} }{\mathrm{d} t}\vec{x}=A\vec{x}\frac{\mathrm{d} }{\mathrm{d} t}\vec{x}=A\vec{x}就是状态空间方程

例2是无耦合的形式,A=\begin{bmatrix} 1 & 0\\ 0& -2 \end{bmatrix}

例3是耦合的形式,\dot{x}_{1}(t)\: and\: \dot{x}_{2}(t)这两个变化率不仅仅和自身状态相关的,A=\begin{bmatrix} 1 & 1\\ 4& -2 \end{bmatrix}

这两个例子的求解都期望得到一个和例1一样的形式,即\vec{x(t)}=e^{At}\vec{x(0)}

\vec{x(t)}表示x_{1}(t)x_{2}(t)...x_{n}(t)

通过泰勒级数和矩阵分解可以得到e^{At}=Pe^{\Lambda t}P^{-1}(具体怎么求可以看学习视频,链接在文章置顶),\Lambda是A的特质值,P是特征值对应的特征向量,有了这些铺垫就可以开始求解:

回到上一部分得到的一般状态方程

 三.相图和相轨迹

其实就是表示\dot{x}x的关系,注意\dot{x}\dot{x(t)}这个形式,它本身是一个函数,而x是一个变量,描述的是变量和对应函数导数的关系

 这里 画的是不同状态变量共同变化的线

对于一般形式来说:

 我的理解:将x表示为pyp是坐标变换矩阵,y是对应x的新的状态变量,并且y是对角阵,即这一步的作用可以理解为“解耦”,解耦后\dot{y}y之间的关系按照上面的公式就是A的特征值(所以最后转回去的x中状态变量的变化图就是和A的特征值有关系),最后得出y中状态变量的变化图,再通过坐标变换矩阵转回去就是x中状态变量的变化图

再举个例子,同样按照上面的计算步骤,现有状态空间方程,然后写出A矩阵,对A矩阵求特征值和特征向量,再根据特征值写出\dot{y}y之间的关系,由p将y转回x,最后得到x中状态变量共同构建的关系,这里得到的是一个椭圆表示:

 这个例子主要是想说明特征值为仅有一个虚部的复数时,那么它的相图是椭圆,至于椭圆的方向可以举个x的例子算一个点判断

再举一个例子:

这个例子主要是想说明特征值为有实部虚部的复数,就像上面计算的y=e^{t}e^{2it}e^{2it}就决定了相图是循环往复转(情况和特征值为纯虚数的情况一样,而纯虚数就没有额外增益,就是在一个固定的椭圆上转),加上e^{t}后就是不会转到以前的位置,会越转越大/小,方向可以举个x的例子算一个点判断

(类似经典控制理论的极点,特征值的虚部为系统带来振荡,系统稳定就要特征值的实部小于0)

四.连续系统离散化

1.主要是计算机控制没有“时间”(数字控制器),因此需要将数据采样离散化

2.这里要关注的是采样周期的选择,当选择的采样周期较小时就会产生大量的数据,当选择的采样周期较大时就会使信号混叠,最终无法还原原信号(这些不懂的可以看数字信息处理的采样),理论上采样频率至少要达到原信号最高频率的两倍,但在实际中这只是一个下限,实际要选取达到五倍-10倍的来作为采样频率。

3.对于数字控制器而言,它产生的控制量也是离散的,这里就要引入零阶保持器产生一个小段的恒定信号,如下图中原来只有黑线,但是为了使控制信号连续,就补充蓝线(零阶保持器的作用)

 4.在实时控制中,一般使用时间中断来获取新信息,在中断之后会读取信息并进行计算,再输出控制量,并且从读取、计算到输出的时间必须在一个采样周期内完成(理所应当的,不然下一次采样得到数据,这边还没处理完不搞笑吗?)

对于现在的混合系统(连续离散都有)的控制器设计中,会将连续的系统转为离散系统,直接使用离散系统进行分析,根据这个设定算法再运用到混合系统当中

例如之前推导的\dot{\vec{x(t)}}=A\vec{x(t)}+B\vec{u(t)},解为\vec{x(t)}=e^{A(t-t_{0})}\vec{x(t_{0})}+\int_{t_{0}}^{t}e^{A(t-\tau )}Bu(\tau )d\tau

使用到零阶保持器后\vec{u(t)}=\vec{u(kT)},kT\leqslant t\leqslant (k+1)T,其实就是上图的补蓝线 

再当前的状态作为初始状态,则\vec{x(t_{k+1})}=e^{A(t_{k+1}-t_{k})}\vec{x(tk)}+\int_{t_{k}}^{t_{k+1}}e^{A(t_{k+1}-\tau )}Bu(\tau )d\tau

t_{k} \to t_{k+1}的时间内,由于使用了零阶保持器,那在这个时间段里面输入就是常数,并且数字控制器并不关系具体的时间,只关心当前的状态,因此有t_{k}\Rightarrow k\: \: ,t_{k+1}-t_{k}\Rightarrow T

五. 系统的可控性

 Co矩阵满秩则系统可控

可控性是点对点的可控呢?还是轨迹可控呢?

 其实从上面的相图就可以知道,蓝线是不可能的,因为蓝线表现速度一直为正数,那就不可能会反向移动到点x_{t},黑色的线才是合理的,因此可控性是点到点的可控,轨迹不一定是预期希望的轨迹【当然这也是理论上的可控,实际情况需要具体分析】

六.稳定性(李雅普诺夫意义下的稳定、渐进稳定)

初始状态以平衡状态x_{e}为球心

 蓝线表示李雅普诺夫稳定,只要x(t)一开始在以\delta为半径的圆以内,随着时间的增加,其最后的落点都会在限制在以\varepsilon为半径的圆内;李雅普诺夫稳定对应特征值只有非正实部的情况

棕线表示渐进稳定,只要x(t)一开始在以\delta为半径的圆以内,随着时间的增加,其最后的落点会回到平衡状态(原点);渐进稳定对应特征值只有负实部的情况

注:经典控制理论的稳定性是渐进稳定性(收敛到0)

(后面暂时不看,先看非线性了...)

非线性理论基础

补充:

1.李雅普诺夫稳定性

李雅普诺夫关于稳定性的研究均针对平衡状态,平衡状态是对所有的t满足\dot{x_{e}}=f(x_{e},t)=0,当然如果是时不变的就是f(x_{e})

李雅普诺夫第一法是求出线性化以后的常微分方程的解,从而分析系统稳定性;

李雅普诺夫第二法是不需要求解微分方程,常用于非线性、时变、MIMO系统,是一种基于广义能量函数V及其随时间变化函数\dot{V}的特性来研究系统稳定性

2.平衡状态

一般系统状态方程为\dot{x}=f(x,t),其初始状态为x(t_{0}),系统的状态轨线x(t)是随着时间而变化的,当且仅当x\rightarrow x_{e}时称x_{e}为系统平衡点,如果x_{e}不在坐标原点,可以通过非奇异线性变换使x_{e}=0,因此平衡状态的稳定性问题都可以归结为原点的稳定问题

3.三种稳定

李雅普诺夫意义下的稳定(参考上面的“六.稳定性”:初始状态限制在小圈,最终状态只在大圈内)

渐进稳定(参考“六.稳定性”:初始状态限制在小圈,在大圈内移动,最终收敛到稳定状态(原点))

大范围渐进稳定:即整个状态空间任取一点,最终收敛到稳定状态

一.李雅普诺夫直接方法

用李雅普诺夫第二法来分析平衡点是否稳定

前提条件:系统状态方程为\dot{x}=f(x,t),其平衡状态满足\dot{x}=f(x,t),原点为平衡状态,在原点的邻域存在关于状态的标量函数V(x,t),且V(x,t)具有一阶偏导

注意 稳定 和 渐进稳定 是不同的

定理一:V(x,t)正定,\dot{V}(x,t)负定,则原点为渐进稳定;

定理二:V(x,t)正定,\dot{V}(x,t)半负定,\dot{V}(x,t)x\neq 0时恒不为0,则原点为渐进稳定(如果只有前两个条件就是稳定)

定理三:V(x,t)正定,\dot{V}(x,t)半负定,\dot{V}(x[t;x_{0},t_{0}],t)x\neq 0时恒为0(导数在非平衡点外全为0),则原点为李雅普诺夫意义下的稳定

 我的理解是稳定只需要有包含某些点使\dot{V}为0的一整条轨迹就行,而渐进稳定则要求这条轨迹必须只能在(0,0)点使\dot{V}为0

二.非线性系统的稳定性设计

 对于上述的\dot{V},显然x^{3}不是负定项,-x^{4}是负定项,那么u的设计就是要消除非负定项

u_{1}是直接针对\dot{x}进行消除的,而u_{2}.u_{3}是针对设定的李雅普诺夫函数的导数\dot{V}来进行消除的

仿真结果通过simulink得到,可以看到包含高阶项u_{1}所所需要的初始状态x输入比另外两种u的初始状态x输入高,因此需要尽量避免高阶项;而从u_{2}.u_{3}两种情况下的u_{2}的收敛速度更快,从下列求解出来的x(t)也可以很清楚的看到,-x的引入带来了指数的衰减项,而没有-x的就是线性衰减

反步法(重要!)

第一次尝试自己推导理解(不一定对)

第二次尝试自己推导理解 

 三.自适应控制(系统参数变化慢)

 再引用前面的弹簧例题,若\alpha是要估计的

 

  四.滑模控制(  f(x)有界  )

 u里面的\rho就是f(x)的边界

 

 五.高增益控制和高频控制(  f(x)有界  )

滑模控制由于\frac{e}{|e|}会使得u一直是上下跳变的形式,这对执行器而言是非常高的要求

 对于高增益的理念就是用足够大的输入去抵消不确定性,高频率就是类似滑模那种跳变,只不过将跳变的范围缩小,即往内收

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA以服务列表的形式展示

IDEA以服务列表的形式展示 要是没有要显示的服务列表的话就右键将启动的全部添加进去。正常是懒加载的形式,正常启动了就会添加进去。

Toyota Programming Contest 2023#4(AtCoder Beginner Contest 311)(A-G)

Contest Duration: 2023-07-22(Sat) 20:00 - 2023-07-22(Sat) 21:40 (local time) (100 minutes) 头文件和宏 #include<iostream> #include<string> #include<vector> using namespace std; #define int long long #define fer(i,a,b) for(int ia;i<b;i…

【时间复杂度】

旋转数组 题目 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 /* 解题思路&#xff1a;使用三次逆转法&#xff0c;让数组旋转k次 1. 先整体逆转 // 1,2,3,4,5,6,7 // 7 6 5 4 3 2 1 2. 逆转子数组[0, k - 1] // 5 6 7 4 3…

Pytorch个人学习记录总结 03

目录 Transeforms的使用 常见的transforms Transeforms的使用 torchvision中的transeforms&#xff0c;主要是对图像进行变换&#xff08;预处理&#xff09;。from torchvision import transforms transeforms中常用的就是以下几种方法&#xff1a;&#xff08;Alt7可唤出…

多源BFS-- 矩阵距离

关于多源BFS&#xff0c;基本上就是单源BFS的简单升级了一下&#xff0c;比如在queue中队头开始时只有一个&#xff0c;我们通过这一个队头去推导其他的东西。而多源最短路就是队头一开始有1-n个可能的数&#xff0c;一个一个去BFS。 题目思路&#xff1a; 这个题就直接把所有的…

0成本搭建自己的云数据库

第一步&#xff0c;租免费的云服务器 www.aliyun.com 阿里云的&#xff0c;可以免费租三个月 进入主页后选择云服务器ESC 选择这款&#xff0c;点击试用就行 第二步&#xff0c;配置服务器 在配置服务器系统的时候选择centos&#xff0c;省事&#xff0c;别选ubuntu&#x…

[Spring] 三级缓存解决循环依赖详解

什么是循环依赖 注册一个bean对象的过程&#xff1a; Spring扫描class得到BeanDefinition – 根据得到的BeanDefinition去生成bean – 现根据class推断构造方法 – 根据推断出来的构造方法&#xff0c;反射&#xff0c;得到一个对象 – 填充初始对象中的属性(依赖注入) – 如果…

服务器中了360后缀勒索病毒,360后缀勒索病毒介绍解密数据恢复

360后缀勒索病毒&#xff0c;是BeijingCrypt勒索家族中的一种勒索软件病毒&#xff0c;这种恶意软件一旦攻击了企业的服务器就会利用自身独特的加密技术来全盘扫描系统文件&#xff0c;并对用户的全部文件进行加密&#xff0c;并要求用户支付赎金以解锁文件。近期&#xff0c;我…

C# 数据结构】Heap 堆

【C# 数据结构】Heap 堆 先看看C#中有那些常用的结构堆的介绍完全二叉树最大堆 Heap对类进行排序实现 IComparable<T> 接口 对CompareTo的一点解释 参考资料 先看看C#中有那些常用的结构 作为 数据结构系类文章 的开篇文章&#xff0c;我们先了解一下C# 有哪些常用的数据…

CNNdebug尝试

这算是啥问题&#xff1f;&#xff1f; 接着根据群里大佬提供的指示&#xff0c;将train和validate中的nums_work改成0即可 此处因为数据已经打乱了&#xff0c;所以在这里就不用打乱数据&#xff0c;把shuffle True修改成为False 后面查看指定目录下&#xff0c;竟然没有这个…

性能测试工具 Jmeter 引入 jar 包踩过的坑

目录 前言&#xff1a; Jmeter 中调用自己编写 jar 中的类出错 错误日志&#xff1a; 出现以上错误的原因&#xff1a; 解决方法&#xff1a; 前言&#xff1a; JMeter 是一种开源的性能测试工具&#xff0c;可以帮助我们快速地进行网站、应用程序等的性能测试和压力测试…

20230720在ubuntu22.04系统下载+解密+合并ts切片的步骤(STEP-BY-STEP版本)

20230720在ubuntu22.04系统下载解密合并ts切片的步骤&#xff08;STEP-BY-STEP版本&#xff09; 2023/7/20 23:06 https://app1ce7glfm1187.h5.xiaoeknow.com/v2/course/alive/l_64af6130e4b03e4b54da1681?type2&app_idapp1cE7gLFM1187&pro_idterm_645c69388953e_Nhew…

C# List 详解七

目录 42.Sort() 43.ToArray() 44.ToString() 45.TrimExcess() 46.TrueForAll(Predicate) C# List 详解一 1.Add(T)&#xff0c;2.AddRange(IEnumerable)&#xff0c;3.AsReadOnly()&#xff0c;4.BinarySearch(T)&#xff0c; C# List 详解二 5.Cl…

TEE GP(Global Platform)认证规范

TEE之GP(Global Platform)认证汇总 一、GP认证规范库 二、TEE GP认证规范文档 如果需要TEE对应的GP认证规范文档&#xff0c;请按照下方选择框选择TEE&#xff0c;然后Search&#xff0c;共查询到31个相关规范文档。 参考&#xff1a; GlobalPlatform Certification - Global…

[回馈]ASP.NET Core MVC开发实战之商城系统(一)

经过一段时间的准备&#xff0c;新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始&#xff0c;今天着重讲解布局设计&#xff0c;环境搭建&#xff0c;系统配置&#xff0c;及首页商品类型&#xff0c;banner条&#xff0c;友情链接等功能的开发。 首页布局设计 首页是…

工程安全监测无线振弦采集仪在建筑物中的应用

工程安全监测无线振弦采集仪在建筑物中的应用 工程安全监测无线振弦采集仪是一种用于建筑物结构安全监测的设备&#xff0c;它采用了无线传输技术&#xff0c;具有实时性强、数据精度高等优点&#xff0c;被广泛应用于建筑物结构的实时监测和预警。下面将从设备的特点、应用场…

(原创)自定义DialogFragment以及解决其内存泄漏问题

前言 日常开发中&#xff0c;dialog是常见的功能&#xff0c;我们时常需要弹出来一些弹框提示用户 今天就定义了一个方便的dialog基类BaseSimpleDialogFragment&#xff0c; 支持快速地显示一个dialog 主要功能有&#xff1a; initAnimation&#xff1a;设置入场和出场动画 ge…

【C进阶】指针进阶(1)_二次复习版

目录 1. 字符指针 1.1常量字符串的修改 加上const解决问题 打印常量字符串 1.2数组存放的字符串 1.3例题:数组创建与常量池的区别 2. 指针数组 2.1字符指针数组 2.2整型指针数组 2.3使用3个一维数组,模拟实现一个二维数组 2.4例题: 3.数组指针 3.1 数组指针的定义…

同步网盘使用中的五大突出优势

同步网盘是一种流行的云存储解决方案&#xff0c;它可以将您本地计算机上的文件与云端存储空间同步&#xff0c;以保证文件的备份和访问。那么&#xff0c;同步网盘使用中的突出优势是什么呢&#xff1f;下面就为您详细介绍。 一、数据备份 同步网盘最大的优势之一就是可以自动…

错误解决:Failed to create Spark client for Spark session

错误解决&#xff1a;Failed to create Spark client for Spark session "Failed to create Spark client for Spark session"的错误通常表示无法为Spark会话创建Spark客户端。这可能是由于以下一些常见问题导致的&#xff1a; Spark配置错误&#xff1a;请检查Spar…