状态观测控制器设计与仿真验证

news2025/1/30 17:28:20

【无限嚣张(菜菜)】:hello您好,我是菜菜,很高兴您能来访我的博客,我是一名爱好编程学习研究的菜菜,每天分享自己的学习,想法,博客来源与自己的学习项目以及编程中遇到问题的总结。

座右铭:尽人事,听天命

个人主页:无限嚣张(菜菜)

目录

  • 状态观测器的提出
  • 状态观测器定义
  • 状态观测器的设计原理
  • 状态观测器的设计
  • 状态观测器的仿真验证

状态观测器的提出

        并不是所有系统的状态变量都是很容易能直接检测得到的,大多系统的状态变量都是不容易直接检测到的,有些状态变量甚至根本无法检测。这样,就提出了所谓的状态观测和状态重构问题,由龙伯格(Luenberger)提出的状态观测器理论,所以也叫Luenberger观测器。通过系统的输入和输出来估计状态,从而解决了在确定性条件下受控系统的重构问题,从而使状态反馈成为一种可实现的控制率。

状态观测器定义

        设线性定常系统\sum =(A,B,C)的状态矢量x不能直接检测。如果动态系统\hat{\sum }\sum的输入u和输出y作为其输入量,能产生一组输出量\hat{x}渐近于x,即\lim\limits_{t\to+\infty} |x-\hat{x}|=0,则称\hat{\sum }\sum的一个状态观测器。

        根据状态观测器的的定义,我们可以知道构造观测器的原则是:

        (1)观测器\hat{\sum }应以观测器\hat{\sum }的输入u和输出y作为输入量。

        (2)为了满足\lim\limits_{t\to+\infty} |x-\hat{x}|=0\hat{\sum }必须完全能观,或其不能观子系统是渐进稳定的。

        (3)\hat{\sum }的输出\hat{x}应以足够的速度渐进与x,即\hat{\sum }应有足够宽的频带。但从抑制干扰角度看,又希望频带不要太宽。因此,要根据具体情况予以兼顾。

        (4)\hat{\sum }在结构上要尽量简单。即具有尽可能低的维数,以便于物理实现。

状态观测器的设计原理

        给出单输入单输出系统如下,假设给出的系统是能观(rank(C,CA,...,CA^{n-1})^T)=n)的,如果不能观,我们设计降阶观测器,观测他一部分状态。

                                               \begin{cases}\dot{x}=Ax+Bu\\ y = Cx \end{cases}                                                              

        根据观测器的设计原则,闭环观测器的的状态方程设计如下:

\dot{\hat{x}} = A\dot{x}+Bu+G(y-C\hat{x})

      我们可以很容易知道闭环观测器的误差状态 

                                                    ​​​​​​ ​​​​​   \begin{cases} e = x-\hat{x}\\ \dot{e} = \dot{x}-\dot{\hat{x}} =(A-GC)e\end{cases}                                            

        证明确定使\hat{x}渐进与x的条件:

对误差求导,我们可以得到如下解:

e = e^{(A-GC)t}e(0)=e^{(A-GC)t}[\dot{x}_{0}-x_{0}]

由上式可知,当(A-GC)的特征值均为负实部,才能满足\lim\limits_{t\to+\infty} |x-\hat{x}|=0

状态观测器的设计

        假设一个线性系统如下:

\begin{cases} \dot{x}_{1} = x_{2}\\ \dot{x}_{2}=m_{1}x_{1}+m_{2}x_{2}+5u\\y=5x_{1} \end{cases}       

将上式写成状态空间的形式如下,设x = [x_{1},x_{2}]^{T}

                                                                                                                

其中A=(\begin{matrix} 0& 1 \\ m_{1} & m_{2} \\ \end{matrix}) ,\quad B=(\begin{matrix} 0 \\ 5 \\ \end{matrix}),\quad C=(\begin{matrix} 5 &0 \\ \end{matrix}),

        判断系统是否能观:R=(\begin{matrix} C \\ CA \\ \end{matrix})=(\begin{matrix} 5&0 \\ 0&5 \\ \end{matrix})=2,由此可知,此系统是满秩,所以能观,根据状态观测器的构造原则可知,可以构造观测器。

        原系统构建:若原系统渐进稳定,那么矩阵A满足Hurwitz条件,即系统A的所有特征值全部小于0.即

|\lambda I-A|=\lambda^{2}-\lambda m_{2}-m_{1}=0

因此特征值和积需满足:\lambda_{1}+\lambda_{2}=m_{2}<0,\lambda_{1}\lambda_{2}=-m_{1}>0,取m_{2}=-2,m_{1}=-1

        观测器构建:

\begin{cases} \dot{\hat{x}} = A\hat{x}+Bu+G(y-C\hat{x}) \\ y = C{x} \end{cases}

观测器的误差为:

\begin{cases} e = x-\hat{x}\\ \dot{e} = \dot{x}-\dot{\hat{x}} =(A-GC)e\end{cases}

我们最初目的是为了让\lim\limits_{t\to+\infty} |x-\hat{x}|=0,也就是目的让误差趋于0。此时我们需要让矩阵A-GC满足Hurwitz条件,即:

A-GC=(\begin{matrix} 0& 1 \\ m_{1} & m_{2} \\ \end{matrix}) -(\begin{matrix} 5g_{1}& 0 \\5g_{2} & 0 \\ \end{matrix})=(\begin{matrix} -5g_{1}& 1 \\ m_{1}-5g_2 & m_{2} \\ \end{matrix})

m_{2}=-2,m_{1}=-1带入上式中,我们并求det(\lambdaI-(A-GC)),使其满足Hurwitz条件

A-GC=(\begin{matrix} -5g_{1}& 1 \\ m_{1}-5g_2 & m_{2} \\ \end{matrix})=(\begin{matrix} -5g_{1}& 1 \\ -1-5g_2 & -2 \\ \end{matrix})

det(\lambdaI-(A-GC))=\lambda^{2}+(5g_{1}+2)\lambda +5g_{2}+2=0,

因此特征值和积需满足,\lambda_{1}+\lambda_{2}=-(5g_{1}+2)<0,\lambda_{1}\lambda_{2}=5g_{2}+2>0,取g_{2}=2,g_{1}=1

状态观测器的仿真验证

控制输入,也就是控制器,我们输入一个正弦函数

x1的状态,以及x1的状态观测

 x2的状态,以及x2的状态观测

 

代码:

clc 
clear all
close all

stepLength = 0.002;                               
N = 100000;                                        
timeStart = 0;                                     
timeEnd = N * stepLength;                          
t = timeStart:stepLength:timeEnd ; 
u = sin(t);
k = 1;  % 迭代起始步数
x1 = zeros(size(t));
x2 = zeros(size(t));
x1(:,1) = 1;
x2(:,1) = 1;
x1_hat = zeros(size(t));
x2_hat = zeros(size(t));
x1_hat(:,1) = 0.2;
x2_hat(:,1) = 0.2;
for tt = timeStart : stepLength: (N-1)*stepLength
    k

    % 原系统
    dx1 = x2(:,k);
    dx2 = -x1(:,k)-2*x2(:,k)+5*u(:,k);
    
    % 观测器
    dx1_hat = x2_hat(:,k)+5*(x1(:,k)-x1_hat(:,k));
    dx2_hat = -x1_hat(:,k)-2*x2_hat(:,k)+5*u(:,k)+2*5*(x1(:,k)-x1_hat(:,k));
    
    %
    % 更新坐标
    x1(:,k+1) = x1(:,k) + dx1 * stepLength;                                            
    x2(:,k+1) = x2(:,k) + dx2 * stepLength;  
    
    x1_hat(:,k+1) = x1_hat(:,k) + dx1_hat * stepLength;                                            
    x2_hat(:,k+1) = x2_hat(:,k) + dx2_hat * stepLength;  
    k = k+1;  
end
figure
plot(t,x1,'linewidth',1.5)
hold on
plot(t,x1_hat,'--red','linewidth',1.5)
hold on
xlabel('Time(Sec)')
legend('x_{1}','observe x_{1}')

figure
plot(t,x2,'linewidth',1.5)
hold on
plot(t,x2_hat,'--green','linewidth',1.5)
hold on
xlabel('Time(Sec)')
legend('x_{2}','observe x_{2}')

        

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

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

相关文章

深度学习炼丹-数据处理和增强

前言一&#xff0c;Normalization 概述 1.1&#xff0c;Normalization 定义1.2&#xff0c;什么情况需要 Normalization1.3&#xff0c;Data Normalization 方法1.4&#xff0c;示例代码 二&#xff0c;normalize images 2.1&#xff0c;图像 normalization 定义2.2&#xff0c…

[XCTF]halo(2019护网杯)(难度2)

目录 前言 一、题目重述 二、解题思路 1.Base64解密 2.难以想到的异或运算 三、flag 总结 前言 注意&#xff01;攻防世界题目有误&#xff01;&#xff01;给出题目与原题不一样但是答案却和护网杯原题答案一样&#xff01;&#xff01; 一、题目重述 aWdxNDs0NDFSOz…

NVM Express Base Specification 2.0c - 2 Theory of Operation

The interface has the following key attributes: 在命令提交或完成路径中不需要非缓存/ MMIO寄存器读取;在命令提交路径中最多需要一个MMIO寄存器写或一个64B消息;支持多达65,535个I/O队列&#xff0c;每个I/O队列支持多达65,535个未完成的命令;优先级与每个I/O队列相关联&a…

【MySQL】基于InnoDB的数据库索引

文章目录前言1、索引引入2、索引语法2.1、创建索引2.2、查看索引2.3、删除索引2.4、案例引入3、索引结构3.1、概述3.2、引擎支持3.3、BTree3.4、Hash4、索引类别4.1、分类4.2、过程分析5、性能分析5.1、执行频率5.2、慢查询日志5.3、explain6、最左前缀原则7、索引失效7.1、范围…

2023年学一门IT技术的最佳选择就是软件测试!

互联网行业的不断发展&#xff0c;也增加了IT行业的就业机会&#xff0c;作为最适合零基础小白入行、门槛低的软件测试岗位来说&#xff0c;也受到越来越多转行者的关注&#xff0c;但是耳边依然充斥着各种关于这个行业不好的言论&#xff0c;诸如“行业饱和了&#xff0c;学完…

华为OD机试真题 Python 实现【最长连续方波信号】

目录 题目 思路 考点 Code 题目 输入一串方波信号,求取最长的完全连续交替方波信号,并将其输出,如果有相同长度的交替方波信号,输出任一即可, 方波信号高位用1标识,低位用0标识,如图: 说明: 1) 一个完整的信号一定以0开始然后以0结尾,即010是一个完整信号,但10…

【自动化】【autojs】02 autox环境搭建和踩坑

▒ 目录 ▒&#x1f6eb; 导读需求开发环境1️⃣ 环境搭建AutoXadbVSCode插件scrcpy2️⃣ ADB方式实战控制微信启动正确设置autox选项启动服务执行代码停止代码执行3️⃣ 踩坑函数id需要传递全名称app.launch未生效ui.layout报错&#x1f4d6; 参考资料&#x1f6eb; 导读 需求…

基于区块链技术的信息服务新架构探讨

【摘 要】为探索区块链技术对信息通信基础架构的影响及实现,在梳理信息技术架构和信息服务架构演进的基础上,分析了区块链新型数字化分布式账本体系赋予数字世界生产关系升级的功能,并基于“云-管-端-边”信息服务架构研究了区块链技术实现信息物理空间中“设备民主”的具体…

EL表达式与JSTL标签库(JSP标准标签库)

EL表达式 EL 全名为Expression Language&#xff0c;是表达式语言。 EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出。因为EL表达式在输出数据的时候&#xff0c;要比jsp的表达式脚本要简洁很多。 不需要加任何jar包。不依赖任何其它库。提供了在脚本元素…

《软件开发本质论》笔记——了解价值,然后从可能去做的所有事情中选择那些最重要的去做

目录 一、传统的软件项目分阶段进行 二、根据”挑战性的目标“制订计划&#xff0c;危害性很大 三、推荐随时发现缺陷随时修复 四、 价值是什么 一、传统的软件项目分阶段进行 潜在风险&#xff1a;试图去计划并实现所有的功能特性&#xff0c;这使我们处于不利的境地。我们…

转行互联网,零基础应届生应该选择什么样的岗位作为切入点?

对于想要转行互联网的零基础小白&#xff0c;如果你耐心看完了这个答案&#xff0c;恭喜你已经找到了转行互联网的方法&#xff01;我不说空的理论&#xff0c;也不讲心灵鸡汤&#xff0c;作为文艺青年&#xff0c;我只说经验&#xff0c;我是工作十三年的互联网老兵&#xff0…

整合第三方登录之微信扫码登录

&#x1f4c2;文章目录&#x1f393;前言&#x1f3f7;️引入相关依赖&#x1f9f1;操作步骤&#x1f4d4;生成微信登录二维码&#x1f4d4;获取微信用户信息并实现微信注册登录&#x1f497;总结&#x1f393;前言 前置条件&#xff1a;具备微信开发者资质。 通过微信开放平…

Contest2874 - 【在线编程平台】2022年计算机类数据结构作业14.20221215-1220

目录 问题 A: 大顶堆还是小顶堆&#xff1f; 问题 B: sort by age 问题 C: 统计字母个数 问题 D: 字母排序 问题 E: 算法10-6~10-8&#xff1a;快速排序 问题 A: 大顶堆还是小顶堆&#xff1f; 内存限制&#xff1a;128 MB时间限制&#xff1a;1.000 S标准输入输出 题目类…

数学建模国赛 2020B-穿越沙漠 第二关至第六关思路分享

穿越沙漠第二关至第六关思路 开始讲题之前唠嗑一下&#xff1a; 很感谢所有读者和粉丝对上一篇的第一关解题博文的喜欢&#xff0c;也收到很多人的称赞&#xff0c;我很高兴大家能喜欢我写的东西。 其实这道题的模型在建立之处就是对着六关通用的目标去写的&#xff0c;因为本…

现货黄金时间表怎么安排?

现货黄金交易时间表&#xff0c;最好每一个投资者打印一份出来&#xff0c;放在你的电脑旁边。为什么呢&#xff1f;以前我对现货黄金交易时间表也没有特别关心&#xff0c;为什么在二十四小时的全天候交易要花时间到这里面来呢&#xff1f; 黄金市场是一个全球性的市场&#x…

APP测试技术:ADB——安卓手机测试一座神奇的“桥”

前言&#xff1a; 近年移动互联网好比IT界的一条浩瀚银河&#xff0c;安卓手机测试可谓其中最璀璨的一颗明珠&#xff0c;这里有一座你不得不熟悉的桥--ADB 曾见过不少相关的文章或培训&#xff0c;不乏空谈多&#xff0c;实战少&#xff1b;期望大&#xff0c;效果差。也见过…

idea上传代码到GitHub,每一步附带注意事项(炒鸡炒鸡详细)

1. idea配置git 2. 在idea里面登录自己的GitHub账号 需要到GitHub生成token 点击后&#xff0c;翻到最底部&#xff0c;点击左侧导航栏的Developer settings&#xff0c;到达下面这张图 最后点击最底部的绿色按钮&#xff0c;然后复制token即可。 3. 在创建本地仓库&#xff0…

【强化学习基础】强化学习的基本概念:状态、动作、智能体、策略、奖励、状态转移

文章目录1.状态&#xff08;State&#xff09;2.动作&#xff08;Action&#xff09;3.智能体&#xff08;Agent&#xff09;4.策略&#xff08;Policy&#xff09;5.奖励&#xff08;Reward&#xff09;6.状态转移&#xff08;State transition&#xff09;7.智能体与环境交互…

生成模型6-重参数技巧

Stochastic Back Propagation &#xff08;Reparametrization Trick&#xff09; 本章主要介绍的是&#xff0c;神经网络用函数逼近器&#xff0c;那么我们将想想神经网络和概率图模型之间有什么关系呢&#xff1f;能不能用NN去逼近一个概率分布呢&#xff1f;把他们两结合到一…

如今的测试行业都怎么了?面试题有必要出这么难吗?

在测试行业摸爬滚打了十年左右的我&#xff0c;时不时会被公司要求去做面试官面试别人。在这段期间我也收到了不少的简历&#xff0c;面试了各种技术不一的人。许多候选人的工作年限都不少&#xff0c;基本都是在3~5年左右&#xff0c;但他们做的都是一些非常传统的项目&#x…