状态观测控制器设计与仿真验证
创始人
2024-05-27 00:40:43
0

【无限嚣张(菜菜)】: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 allstepLength = 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)*stepLengthk% 原系统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}')

        

相关内容

热门资讯

华为手机适合安卓系统,安卓生态... 你有没有发现,最近华为手机在安卓系统圈子里可是风头无两呢?这不,我就来给你好好捋一捋,为什么华为手机...
安卓系统下载福建助学,安卓系统... 你有没有听说最近安卓系统上有个超级棒的福建助学项目?没错,就是那个能让你轻松下载各种学习资源的神器!...
i7安卓系统,引领智能科技新潮... 你有没有想过,手机和电脑的结合体是什么样的呢?想象一个既能流畅运行大型游戏,又能轻松处理日常办公的设...
安卓改鸿蒙系统安装,系统升级安... 你有没有想过给你的安卓手机换换口味呢?没错,就是那种焕然一新的感觉!今天,就让我来带你一起探索如何将...
安卓原生系统美化软件,个性化美... 你有没有发现,安卓手机用久了,界面总是有点单调乏味呢?别急,今天就来给你安利几款超好用的安卓原生系统...
安卓系统图案解锁方法,安卓系统... 手机解锁,这可是每天都要经历的小环节,是不是觉得有点儿单调呢?今天,就让我来带你一起探索一下安卓系统...
安卓系统怎么调俄语,安卓系统设... 你有没有想过,在安卓手机上轻松切换到俄语界面呢?这可不是什么高难度的任务,只要跟着我一步步来,保证让...
安卓系统怎么配置内网,安卓系统... 你有没有想过,家里的安卓设备怎么才能轻松连接到内网呢?这可是个实用的小技巧哦!想象你可以在手机上直接...
安卓系统更新 文件路径,安卓系... 你有没有发现,你的安卓手机最近是不是总在提醒你更新系统呢?每次更新,都感觉手机焕然一新,功能更强大了...
wish只能用安卓系统,探索无... 你知道吗?在手机世界里,有一个神奇的愿望清单,只有安卓系统的小伙伴们才能实现哦! 今天,就让我带你一...
开元安卓车机系统,智能驾驶新体... 你有没有发现,现在的汽车越来越智能了?这不,最近我入手了一辆配备了开元安卓车机系统的车,简直让我爱不...
安卓系统旁白怎么关,如何关闭安... 你是不是也和我一样,在使用安卓手机的时候,不小心开启了旁白功能,现在想把它关掉,却怎么也找不到方法?...
安卓手机系统流畅版,极致性能与... 你有没有发现,最近你的安卓手机用起来是不是特别顺滑?没错,就是那种点屏幕就立刻响应的感觉,简直让人爱...
forest安卓系统换到苹果,... 你有没有想过,手机操作系统就像是我们生活中的不同道路,有时候,你可能觉得一条路走得太久了,想要换一条...
华为鸿蒙系统安卓平板,开启智能... 亲爱的读者们,你是否也像我一样,对科技圈的新鲜事儿充满好奇?今天,我要和你聊聊一个最近在科技圈掀起波...
安卓系统藏族软件下载,精选安卓... 安卓系统藏族软件下载:探索藏族文化的数字新篇章在数字化时代,手机已经成为我们生活中不可或缺的一部分。...
显示安卓系统耗电大,深度剖析原... 手机电量总是不够用?是不是觉得安卓系统耗电特别大?别急,今天就来给你揭秘安卓系统耗电的秘密,让你手机...
抽取原装安卓系统驱动,深度挖掘... 你有没有遇到过这种情况?手机里的安卓系统突然卡顿,或者某个应用突然罢工,这时候你是不是想给它来个“大...
安卓系统手机游戏排行,热门游戏... 你有没有发现,最近你的手机里是不是又多了一款游戏?没错,安卓系统手机游戏排行又更新了!今天,就让我带...
安卓系统叫AR 特效,安卓系统... 你知道吗?最近在安卓系统上出现了一个超级酷炫的新功能,它就是AR特效!是不是听起来就让人兴奋不已?那...