现代控制理论

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一直是上下跳变的形式,这对执行器而言是非常高的要求

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

 

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

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

相关文章

Emacs之实现跨程序选中自动复制功能(一百一十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

贪心算法重点内容

贪心算法重点内容 4.1部分背包 按照单位重量的价值排序 4.2最小生成树 两种算法 4.3单源最短路径 4.4哈夫曼树

自守数 C语言实现

自守数 描述 自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 625,76^2 5776,9376^2 87909376。请求出n(包括n)以内的自守数的个数 数据范围: 1≤n≤10000 输入描述: int型整数 输出描述&#xf…

【Leetcode】54.螺旋矩阵

一、题目 1、题目描述 给你一个 m m m 行 n n n 列的矩阵 matrix,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例1: 输入:matrix =

k8s: kubectl: logs: rotate 问题

https://kubernetes.io/docs/concepts/cluster-administration/logging/ 当kubenet存放container的日志满了的时候,会发生rotate,当rotate发生的时候,是由kubectl logs 这个命令可能会出现以下两个问题: https://github.com/kubernetes/kubernetes/issues/28369 这里说,当…

Git下载与安装

文章目录 一、Git下载二、Git安装1.双击下载好的安装包进行安装2.Next3.选择Git的安装目录(不要带有中文和空格)→Next4.Next5.Next6.Next7.Next8.Next9.Next10.Next11.Next12.Next13.Next14.Next15.Next16.Install17.等待安装18.Finish19.鼠标光标放到系统桌面右击看到如下图所…

DRS 迁移本地mysql 到华为云

准备工作: 源端的IP地址(公网),用户明和密码。如果通过公网迁移,需要在安全组放通drs访问源端数据库的3306端口。目标端的IP地址,用户名和密码。 创建DRS迁移任务 创建迁移任务 登录华为云控制台。单击管…

华为eNSP:路由引入

一、拓扑图 二、路由器的配置 1、配置路由器的IP AR1: [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 1.1.1.1 24 [Huawei-GigabitEthernet0/0/0]qu AR2: [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 1.1.1.2 24 [Huaw…

K8S系统监控:使用Metrics Server和Prometheus

Kubernetes 也提供了类似的linux top的命令,就是 kubectl top,不过默认情况下这个命令不会生效,必须要安装一个插件 Metrics Server 才可以。 Metrics Server 是一个专门用来收集 Kubernetes 核心资源指标(metrics)的…

一文详解Spring Bean循环依赖

一、背景 有好几次线上发布老应用时,遭遇代码启动报错,具体错误如下: Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name xxxManageFacadeImpl: Bean with name xxxManageFa…

linux网卡命名规则与修改方法

一.前言: 在早期的的操作系统中例如fedora13或者ubuntu15之前网卡命名的方式为eth0,eth1,eth2,属于biosdevname 命名规范。当然这是针对intel网卡的命名规则,对于realtek类型的网卡会命名为ens33。但是这个编号往往不一…

elevation mapping学习笔记1之Ubuntu18.04+ROS-melodic编译安装elevation mapping高程图及示例运行

文章目录 0 引言1 安装依赖1.1 grid map1.2 Eigen1.3 kindr1.4 Point Cloud Library (PCL) 2 编译和问题解决3 运行示例3.1 turtlesim3_waffle_demo3.2 simple_demo 和 Ground Truth Demo 0 引言 苏黎世开源的elevation mapping指的是苏黎世联邦理工学院(ETH Zuric…

【iVX】构建新一代互联网研发体系

低代码开发平台作为一种快速、简化应用程序开发的方法,正在越来越受到关注。今天我们来了解下 iVX —— 首个通用无代码开发平台。 那么什么是iVX呢?下边的图就比较形象了。 文章目录 低代码未来的发展方向整合硬件和AI能力 编程真的很困难吗&#xff1…

SQL语句(三十二)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、SQL语句类型 二、数据库操作 ​三、数据表操作 1. 数据类型 2. 查看 3. 创建 4. 删除 5. 更改 5.1 表 5.2 列 四、数据操作 4.1 增 4.2 删 4.3 改 4.4 查…

Failed to load local font resource:微信小程序加载第三方字体

加载本地字体.ttf 将ttf转换为base64格式:https://transfonter.org/ 步骤如下 将下载后的stylesheet.css 里的font-family属性名字改一下,然后引进页面里就行了,全局样式就放app.scss,单页面就引入单页面 注: .title…

Packet Tracer – 使用 CDP 映射网络

# Packet Tracer – 使用 CDP 映射网络 ## 地址分配表 设备 接口 IP 地址 子网掩码 本地接口和互联邻居 Edge1 G0/0 192.168.1.1 255.255.255.0 G0/1 - S1 S0/0/0 S0/0/0 - ISP Branch-Edge S0/0/1 209.165.200.10 255.255.255.252 S0/0/1 – ISP Branch…

flink to starrocks 问题集锦....

[问题排查]导入失败相关 - 问题排查 - StarRocks中文社区论坛 starrocks官网如下: Search StarRocks Docs starrocks内存配置项: 管理内存 Memory_management StarRocks Docs 问题1:实时写入starrocks ,配置参数设置如下&a…

Java书签 #解锁MyBatis的4种批量插入方式及ID返回姿势

1. 今日书签 项目开发中,我们经常会用到单条插入和批量插入。但是实际情况可能是,项目初期由于种种原因,在业务各处直接使用单条插入SQL进行开发(未开启批处理),在后面的迭代中,系统性能问题渐…

【数据挖掘】如何修复时序分析缺少的日期

一、说明 我撰写本文的目的是通过引导您完成一个示例来帮助您了解 TVF 以及如何使用它们,该示例解决了时间序列分析中常见的缺失日期问题。 我们将介绍: 如何生成日期以填补数据中缺失的空白如何创建 TVF 和参数的使用如何呼叫 TVF我们将考虑扩展我们的日…

字典序排数(力扣)思维 JAVA

给你一个整数 n ,按字典序返回范围 [1, n] 内所有整数。 你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。 示例 1: 输入:n 13 输出:[1,10,11,12,13,2,3,4,5,6,7,8,9] 示例 2: 输入:n 2 输…