LQR的理解与运用 第一期——理解篇

目录标题

  • 0.本系列目的
    • 理解
      • 六个问题
    • 运用
      • 一阶倒立摆
        • matlab+simscape multibody实现
      • 简单的轮足模型(二阶倒立摆)
  • 1 理解LQR
    • 写在前面
    • Q1:LQR控制的是什么
    • Q2:LQR的适用场景与形式
    • Q3:LQR的变量、输入、输出
    • Q4:LQR的解决思路
      • Q4.1 LQR控制器设计步骤:
    • Q5:LQR中做出的...假设?
      • 反馈矩阵K的推导*
      • 怎么理解u=-Kx
    • 稳定性分析
    • 可控性分析
    • ✨matlab实现LQR可视化
      • 模型介绍
        • 物理模型
        • 状态方程模型
        • 代码
        • 运行结果
          • Q单位阵,R=10
          • Q为eig(10,1,10,1),R=1
    • Q6:稳态误差相关控制
      • 回答一:Q后加常数
      • 回答二:加入积分项【LQI】
  • 下一期指路
  • 参考文档

0.本系列目的

理解运用LQR

理解

六个问题

解释什么是LQR,并梳理LQR求解过程。
大家可以思考这么几个问题:

  1. LQR控制的是什么(什么是LQR)?
  2. LQR的适用场景是(使用条件)?
  3. LQR的变量是什么,输入是什么,输出是什么?
  4. LQR是怎么解决这些问题的?
  5. LQR中有没有为了优化问题设置的假设条件?

  1. 在实际控制中,怎么改变状态变量的初值,如果我想让LQR控制器控制的某个状态变量存在稳态误差,该怎么设置参数?
  • 可能需要一点自控理论知识,不过对聪明人来说,学过矩阵乘法就行^ ^

如果看不懂就看下面的参考文章,保证好懂
本文部分片段搬运自以下文章,并根据学校课件和个人理解进行修改,侵删!
(个人感觉最好✨→) 线性二次型调节器(LQR)原理详解
https://blog.csdn.net/qq_36133747/article/details/123413115
LQR最优控制方法小结
https://zhuanlan.zhihu.com/p/363033191
RoboMaster平衡步兵机器人控制系统设计
https://zhuanlan.zhihu.com/p/563048952

运用

一阶倒立摆

matlab+simscape multibody实现

  1. 一阶倒立摆模型进行建模,设计LQR参数
  2. matlab上,实现模型的框图设计
  3. 通过simscape multibody将这一过程可视化

见下一期LQR的理解与运用 第二期——一阶倒立摆在matlab上的LQR实现

简单的轮足模型(二阶倒立摆)

参考RoboMaster平衡步兵机器人控制系统设计
构造以下模型
在这里插入图片描述

1 理解LQR

写在前面

本文讨论LQR基本原理时,被控对象都是线性定常系统,即系统状态不随时间变化的系统。状态空间表达如下:
x ˙ = A x + B u y = C x + D u (1) \begin{array}{l} \dot{x}=A x+B u \\ y=C x+D u \end{array}\tag{1} x˙=Ax+Buy=Cx+Du(1)

符号意义
A A A状态转移矩阵,描述了系统状态的演化规律。
B B B输入矩阵,描述了外部输入对系统状态的影响。
C C C输出矩阵,描述了状态变量如何映射到输出信号。
D D D直接传递矩阵,描述了外部输入直接传递到输出信号的影响。
x x x状态变量,系统的内部状态,可以描述系统的动态特性。
u u u输入变量,系统的外部输入,可以是一个或者多个变量。
Q Q Q控制效果矩阵,表示控制器对状态变量的重视程度。
R R R状态效果矩阵,表示控制器对控制输入的重视程度。

Q1:LQR控制的是什么

结论:LQR控制的是线性时不变系统的状态变量 x x x的变化。
具体而言,LQR通过对系统状态变量的反馈控制,使系统状态向着期望的状态稳定,并且能够实现一定的性能指标要求,如响应速度、稳态误差等。


我们设定一个线性反馈控制器 u = − K x u=-K x u=Kx,用以得到输入参数 u {u} u状态变量 x {x} x的关系(求解矩阵 K K K的方法会在后面提到),此时第一行可以写为
x ˙ = A x − B K x = ( A − B K ) ⏟ A c l x (2) \dot{x}=A x-B K x=\underbrace{(A-B K)}_{A_{c l}} x\tag{2} x˙=AxBKx=Acl (ABK)x(2)
让系统稳定的条件是矩阵 A c l A_{cl} Acl 的特征值的实部均为负数(?),我们当然可以手动选择几个满足上述条件的特征值,然后反解 K K K,从而得到控制器。

而LQR的出现,就是为了让几个参数的选择更为合理,从而使得控制器控制效果更好。其实现方式正是通过设计代价函数 J J J实现的。

本文讨论无限时间的LQR问题(有限时间的LQR问题属于状态时变的问题,这里暂时不考虑),无限时间的LQR问题设计的成本代价泛函 J J J为:

J = ∫ 0 ∞ ( x T Q x + u T R u ) d t , Q = Q T , R = R T , Q ≥ 0 , R > 0 (3) J=\int_{0}^{\infty}\left(x^{T} Q x+u^{T} R u\right) d t, Q=Q^{T}, R=R^{T}, Q \geq 0, R>0\tag{3} J=0(xTQx+uTRu)dt,Q=QT,R=RT,Q0,R>0(3)

一般来说,Q阵和R阵为对角阵,分别确定了状态变量 x x x和输入参数 u u u的权重。对角阵上的值越大说明我们设计时对于该量的重视程度越大,即希望这个量在变化过程中保持较小的值,换种说法就是对于该量的“惩罚”越大。我们的设计目标就是得到一系列的控制序列使代价累积的最小。

代价函数的解释,举例:

在这里插入图片描述

图片内容及部分文字来自线性二次型调节器(LQR)原理详解

因此,问题转变为了选择合适的反馈矩阵 K K K使得代价函数 J J J最小。(见Q3)

Q2:LQR的适用场景与形式

  • LQR是一个多输入,多输出(MIMO)的调节器(仅适用于线性系统);其目的是在给定代价为二次的代价方程中找出最小代价。
  • 在多个输入参数中,可分别设置不同权重。
    此外,由于LQR为状态方程形式,因此输入参数为n*1的形式,而权重矩阵(下文 Q , R Q,R Q,R)往往是n*n的对角矩阵,即除了主对角线均为0;故为了表现加权二次多输入,代价函数往往为以下形式:( x x x, u u u的位置见上文状态空间表达形式)
    J = x T ( t ) Q x ( t ) + u T ( t ) R u ( t ) J = x^{T}(t) Q x(t)+u^{T}(t) R u(t) J=xT(t)Qx(t)+uT(t)Ru(t)

Q3:LQR的变量、输入、输出

  • 变量:状态变量 x x x和输入变量 u u u,作用在前面表格中已列出。
  • 输入:在LQR设计中,我们需要选择合适的状态反馈矩阵K,使得反馈控制器能够有效地控制系统状态的变化,并实现期望的性能指标。
    在状态方程

Q4:LQR的解决思路

接Q1,下一步是选择合适的反馈矩阵 K K K使得代价函数 J J J最小。
根据式 ( 3 ) (3) (3),我们另定义一个辅助常量矩阵 P P P
d d t x T P x = − ( x T Q x + u T R u ) (4) \frac{\mathrm{d}}{\mathrm{d} t} x^{T} P x=-\left(x^{T} Q x+u^{T} R u\right)\tag{4} dtdxTPx=(xTQx+uTRu)(4)

(?) P P P是对称矩阵, P = P T > 0 P=P^T>0 P=PT>0

  • P P P的作用
    ( 4 ) (4) (4)带入 ( 3 ) (3) (3)
    J = − ∫ 0 ∞ d d t x T P x d t = − ( x T P x ∣ ∞ − x T P x ∣ 0 ) = − ( 0 − x T P x ∣ 0 ) = x T ( 0 ) P x ( 0 ) (5) \begin{aligned} J & =-\int_{0}^{\infty} \frac{\mathrm{d}}{\mathrm{d} t} x^{T} P x \mathrm{~d} t \\ & =-\left(\left.x^{T} P x\right|_{\infty}-\left.x^{T} P x\right|_{0}\right) \\ & =-\left(0-\left.x^{T} P x\right|_{0}\right) \\ & =x^{T}(0) P x(0) \end{aligned}\tag{5} J=0dtdxTPx dt=(xTPx xTPx 0)=(0xTPx 0)=xT(0)Px(0)(5)

    当系统稳定时, t ⟶ ∞ , x ⟶ 0 t \longrightarrow \infty , x \longrightarrow 0 t,x0

    可见代价函数只跟初始状态和矩阵 P P P有关

带入 u = K x u = Kx u=Kx,结合式 ( 2 ) (2) (2) ( 4 ) (4) (4),有
x ˙ T P x + x T P x ˙ + x T Q x + x T K T R K x = 0 x T A c l T P x + x T P A c l x + x T Q x + x T K T R K x = 0 x T ( A c l T P + P A c l + Q + K T R K ) x = 0 (6) \begin{aligned} \dot{x}^{T} P x+x^{T} P \dot{x}+x^{T} Q x+x^{T} K^{T} R K x & =0 \\ x^{T} A_{c l}^{T} P x+x^{T} P A_{c l} x+x^{T} Q x+x^{T} K^{T} R K x & =0 \\ x^{T}\left(A_{c l}^{T} P+P A_{c l}+Q+K^{T} R K\right) x & =0 \end{aligned}\tag{6} x˙TPx+xTPx˙+xTQx+xTKTRKxxTAclTPx+xTPAclx+xTQx+xTKTRKxxT(AclTP+PAcl+Q+KTRK)x=0=0=0(6)

代入 A c l = A − B K A_{c l}=A-B K Acl=ABK 可以得到

A c l T P + P A c l + Q + K T R K = 0 ( A − B K ) T P + P ( A − B K ) + Q + K T R K = 0 A T P + P A + Q + K T R K − K T B T P − P B K = 0 (7) \begin{aligned} A_{c l}^{T} P+P A_{c l}+Q+K^{T} R K & =0 \\ (A-B K)^{T} P+P(A-B K)+Q+K^{T} R K & =0 \\ A^{T} P+P A+Q+K^{T} R K-K^{T} B^{T} P-P B K & =0 \end{aligned}\tag{7} AclTP+PAcl+Q+KTRK(ABK)TP+P(ABK)+Q+KTRKATP+PA+Q+KTRKKTBTPPBK=0=0=0(7)

K = R − 1 B T P K=R^{-1}B^TP K=R1BTP(暂不推导,见Q4)代入,有
A T P + P A + Q + ( R − 1 B T P ) T R ( R − 1 B T P ) − ( R − 1 B T P ) T B T P − P B ( R − 1 B T P ) = 0 A T P + P A + Q − P B R − 1 B T P = 0 (8) \begin{array}{l} A^{T} P+P A+Q+\left(R^{-1} B^{T} P\right)^{T} R\left(R^{-1} B^{T} P\right)-\left(R^{-1} B^{T} P\right)^{T} B^{T} P-P B\left(R^{-1} B^{T} P\right)=0 \\\\ A^{T} P+P A+Q-P B R^{-1} B^{T} P=0 \end{array}\tag{8} ATP+PA+Q+(R1BTP)TR(R1BTP)(R1BTP)TBTPPB(R1BTP)=0ATP+PA+QPBR1BTP=0(8)
上式也被称为微分Riccati方程(Algebraic Riccati Equation ,ARE)

到这一步就可以认为 P P P是solvable的了,现在已经有很完善的方法能求解ARE了

Q4.1 LQR控制器设计步骤:

步骤一:根据我们想要的期望状态,初步设计好 Q Q Q R R R(一般凭借经验,可以通过迭代不断调整)

步骤二:根据代数Riccati方程(由系统矩阵组成的等式),情况下求解矩阵P用的是数值解法,很少的情况可以求其解析解。

步骤三:根据 P P P,得到反馈矩阵 K K K的表达式,得到最优控制序列:

Q5:LQR中做出的…假设?

K = R − 1 B T P K=R^{-1} B^{T} P K=R1BTP并不是假设,而是推导的结果,过程如下

反馈矩阵K的推导*

如果只是应用LQR方法,那么推导过程可以不用细看,记住下面的表达式就可以,现在用matlab或是python中的一些库就可以直接求解,应用时理解K的含义就可以。
推导过程应用到矩阵求导相关公式,推荐一个在线矩阵求导网站:Matrix Calculus,可以用来验证自己算的对不对。

推导过程:
观察式 ( 7 ) (7) (7) A , B , Q , R , P A,B,Q,R,P A,B,Q,R,P都是常值矩阵,唯一可变的是 K K K阵,所以问题转换为找到一个 K K K使得代价函数最小,下面用到了一些构造,主要关注带 K K K的部分,求解的想法是要将 K K K包含在一个满足一定约束的式子里面或许可以得到 K K K的计算表达式,一种思路是如果我们可以把含有 K K K的部分转换成类似 ( M + N ) T ( M + N ) (M+N)^T(M+N) (M+N)T(M+N) 的结构,那么要使得代价最小,就会有 M + N = 0 M + N = 0 M+N=0 ,那么 K K K就可以求。

R = T T T R=T^TT R=TTT,代入式 ( 7 ) (7) (7),有

A T P + P A + Q − K T B T P − P B K + K T T T T K = 0 A T P + P A + Q − K T B T P − P B K + ( T K ) T T K = 0 (9) A^{T} P+P A+Q-K^{T} B^{T} P-P B K+K^{T} T^{T} T K=0\\\\ A^{T} P+P A+Q-K^{T} B^{T} P-P B K+(T K)^{T} T K=0\tag{9} ATP+PA+QKTBTPPBK+KTTTTK=0ATP+PA+QKTBTPPBK+(TK)TTK=0(9)

为向 ( M + N ) T ( M + N ) (M+N)^{T}(M+N) (M+N)T(M+N)$ 上面靠,将目标形式展开: M T M + N T N + M T N + N T M M^{T} M+N^{T} N+M^{T} N+N^{T} M MTM+NTN+MTN+NTM ,令 M = T K M=T K M=TK ,刚好可以满足上面其中一项,剩下的用待定系数,带进去解 N N N的表达式:

M T M + N T N + M T N + N T M = − K T B T P − P B K + ( T K ) T T K , M = T K ⇒ N T N + K T T T N + N T T K = − K T B T P − P B K (10) M^{T} M+N^{T} N+M^{T} N+N^{T} M=-K^{T} B^{T} P-P B K+(T K)^{T} T K, M=T K\\\\ \Rightarrow N^{T} N+K^{T} T^{T} N+N^{T} T K=-K^{T} B^{T} P-P B K\tag{10} MTM+NTN+MTN+NTM=KTBTPPBK+(TK)TTK,M=TKNTN+KTTTN+NTTK=KTBTPPBK(10)

注意 ( 10 ) (10) (10)左右并不一定相等,只是为了让等式右凑出等式左的样子

继续观察,等式两边都有含 K T K^T KT项和含 K K K 项 ,先用含 K K K 项拼凑出 N N N:

N T T K = − P B K ⇒ N = [ − P B ( T − 1 ) ] T ⇒ N = − ( T − 1 ) T B T P T = N = − ( T − 1 ) T B T P (11) \begin{array}{l} N^{T} T K=-P B K \Rightarrow N=\left[-P B\left(T^{-1}\right)\right]^{T} \Rightarrow N=-\left(T^{-1}\right)^{T} B^{T} P^{T}=N= \\ -\left(T^{-1}\right)^{T} B^{T} P \end{array}\tag{11} NTTK=PBKN=[PB(T1)]TN=(T1)TBTPT=N=(T1)TBTP(11)

N N N 代入,求剩下的部分:

N T N + K T T T N + N T T K = − K T B T P − P B K , N = − ( T − 1 ) T B T P (12) N^{T} N+K^{T} T^{T} N+N^{T} T K=-K^{T} B^{T} P-P B K, \quad N=-\left(T^{-1}\right)^{T} B^{T} P\tag{12} NTN+KTTTN+NTTK=KTBTPPBK,N=(T1)TBTP(12)

发现含 K T K^T KT 项也消掉了,仅剩下不含 K K K 的第一项:

N T N = [ ( T − 1 ) T B T P ] T [ ( T − 1 ) T B T P ] = P B R − 1 B T P (13) N^{T} N=\left[\left(T^{-1}\right)^{T} B^{T} P\right]^{T}\left[\left(T^{-1}\right)^{T} B^{T} P\right]=P B R^{-1} B^{T} P\tag{13} NTN=[(T1)TBTP]T[(T1)TBTP]=PBR1BTP(13)

带到代数Riccati方程中有:

A T P + P A + Q + [ T K − ( T − 1 ) T B T P ] T [ T K − ( T − 1 ) T B T P ] − P B R − 1 B T P = 0 (14) A^{T} P+P A+Q+\left[T K-\left(T^{-1}\right)^{T} B^{T} P\right]^{T}\left[T K-\left(T^{-1}\right)^{T} B^{T} P\right]-P B R^{-1} B^{T} P=0\tag{14} ATP+PA+Q+[TK(T1)TBTP]T[TK(T1)TBTP]PBR1BTP=0(14)

因为:
x T [ T K − ( T − 1 ) T B T P ] T [ T K − ( T − 1 ) T B T P ] x ≥ 0 (15) x^T\left[T K-\left(T^{-1}\right)^{T} B^{T} P\right]^{T}\left[T K-\left(T^{-1}\right)^{T} B^{T} P\right]x \ge 0\tag{15} xT[TK(T1)TBTP]T[TK(T1)TBTP]x0(15)
T K − ( T − 1 ) T B T P = 0 T K-\left(T^{-1}\right)^{T} B^{T} P = 0 TK(T1)TBTP=0,可以解出 K = R − 1 B T P K=R^{-1} B^{T} P K=R1BTP

怎么理解u=-Kx

u = − K x u=-Kx u=Kx是将输入向量 u u u用状态变量 x x x的线性表达,不妨把这理解为LQR的特征,或者说LQR这一形式就意味着这一假设

稳定性分析

想要分析系统的稳定性,一般采用李雅普诺夫稳定性理论来证明。
首先,定义李雅普诺夫函数:

V ( x ) = x T P x , P = P T P > 0 (16) V(x)=x^{T} P x, P=P^{T} P>0\tag{16} V(x)=xTPx,P=PTP>0(16)

P P P为正定常数矩阵,所以 V ( x ) V(x) V(x) 是 正定的。(?)
然后,对 V ( x ) V(x) V(x) x x x 的一阶导数:

V ˙ ( x ) = x ˙ T P x + x T P x ˙ (17) \dot{V}(x)=\dot{x}^{T} P x+x^{T} P \dot{x}\tag{17} V˙(x)=x˙TPx+xTPx˙(17)

x ˙ = A x + B u , u = − K x = − R − 1 B T P x \dot{x}=A x+B u, u=-K x=-R^{-1} B^{T} P x x˙=Ax+Bu,u=Kx=R1BTPx 带入上式,得到:

V ˙ ( x ) = x T [ A T P − K T B T P + P A − P B K ] x (18) \dot{V}(x)=x^{T}\left[A^{T} P-K^{T} B^{T} P+P A-P B K\right] x\tag{18} V˙(x)=xT[ATPKTBTP+PAPBK]x(18)

再代入 K K K,得到:

V ˙ ( x ) = x T [ A T P + P A − 2 P B R − 1 B T P ] x (19) \dot{V}(x)=x^{T}\left[A^{T} P+P A-2 P B R^{-1} B^{T} P\right] x\tag{19} V˙(x)=xT[ATP+PA2PBR1BTP]x(19)

因为通过无限时间LQR设计的 P P P 会满足上面的代数Riccati方程 ( 8 ) (8) (8),带进来,得到:

V ˙ ( x ) = − x T [ Q + P B R − 1 B T P ] x (20) \dot{V}(x)=-x^{T}\left[Q+P B R^{-1} B^{T} P\right] x\tag{20} V˙(x)=xT[Q+PBR1BTP]x(20)

因为: Q > 0 , R > 0 , P > 0 Q>0, R>0, P>0 Q>0,R>0,P>0 ,故 V ˙ ( x ) < 0 \dot{V}(x)<0 V˙(x)<0 , 系统是渐进稳定的。

上面是从别处搬运的,我只是看了一遍公式无误,自己其实也看不太懂
也有一种说法,是说稳定性取决于状态矩阵A的特征值的符号,利用MATLAB语句[V,F] = eig(A)求得状态矩阵A的特征值以及对应的特征向量。
当全部为实根的时候,只有它们都小于零,系统才是稳定的。

可控性分析

只要满足一些基本条件,LQR的设计过程就能保证得到一个让系统稳定的反馈控制器。

  • LQR定理
    令系统 ( A , B ) (A,B) (A,B) 可控, R R R Q Q Q 都是正定的,则闭环系统 ( A − B K ) ( A − B K ) (ABK)近稳定。

    注意,不管系统的开环稳定性如何,这都是成立的。
    回顾现控的相关知识:可控性可以通过检查可控性矩阵 U = [ B A B A 2 B ⋯ A n − 1 B ] U=\left[\begin{array}{lllll} B & A B & A^{2} B & \cdots & A^{n-1} B \end{array}\right] U=[BABA2BAn1B]是否满秩来判断

✨matlab实现LQR可视化

模型介绍

物理模型

我们以经典的一阶倒立摆模型为例,进行建模【模型如图】
在这里插入图片描述

在此模型中,设

物理量符号
滑块质量 M M M
摆杆质量 m m m
摆杆转动轴心到杆质心长度【半杆长】 l l l
摆杆在转轴处转动惯量 J J J
小车受到外力 F F F
小车位置 x x x
摆杆与竖直方向夹角【本文顺时针为正】 θ \theta θ

x = [ x 1 x 2 x 3 x 4 ] = [ θ θ ˙ x x ˙ ] , u = F x=\left[\begin{array}{l} x_{1} \\ x_{2} \\ x_{3} \\ x_{4} \end{array}\right]=\left[\begin{array}{c} \theta \\ \dot{\theta} \\ x \\ \dot{x} \end{array}\right],u=F x= x1x2x3x4 = θθ˙xx˙ ,u=F

状态方程模型

通过物理建模及化简,最终能得到状态方程 A 、 B 、 C 、 D A、B、C、D ABCD四个矩阵的表达式【表达式推导见第二期】
x ˙ = A x + B u y = C x + D u (1) \begin{array}{l} \dot{x}=A x+B u \\ y=C x+D u \end{array}\tag{1} x˙=Ax+Buy=Cx+Du(1)

代码

% ------------------------------------------
%     本代码使用最经典的一阶倒立摆模型建模
%    
% ------------------------------------------
clc;clear;close all;
g = 9.80665;
m = 1;
M = 0.1;
l = 0.18;  % 半杆长
J = 1/3 * m * (2 * l)^2;% ------------------------------------
% 创建一个状态空间模型
A21 = m*g*l*(M+m)/(J*(M+m)+M*m*l^2);
A41 = -m^2*g*l^2/(J*(M+m)+M*m*l^2);
A = [0  1  0  0;A21 0  0  0;0  0  0  1;A41 0  0  0];
% [theta, dtheta, x, dx]B2 = -m*l/(J*(M+m)+M*m*l^2);
B4 = (J+m*l^2)/(J*(M+m)+M*m*l^2);
B = [0;B2;0;B4];C=[1 0 0 0;0 0 1 0];D=[0;0];% ------------------------------------
% 检验状态空间模型的可控性、稳定性分析
eig(A)
%% Qc=ctrb(A,B)
%% rank(Qc)
Qb=obsv(A,C);
rank(Qb)% ------------------------------------
% 设计 LQR 控制器
Q = [1 0 0 00 1 0 00 0 10 00 0 0 10];
R = 1;
K = lqr(A,B,Q,R)% ------------------------------------
% 定义输入信号和时间向量
t = 0:0.02:4;
u = 20 * sin(4*t);
%u = zeros(size(t)) * 0.2;% ------------------------------------
% 模拟系统的响应
% [theta, dtheta, x, dx]
x0 = [30;0;10;0]; % 初始状态
sys=ss(A-B*K,B,C,D); %经过状态量反馈后的新状态矩阵
[y, t, x] = lsim(sys, u, t, x0);% ------------------------------------
% 绘制系统的输出信号和状态变量的时间响应
figure;
subplot(2,1,1);
plot(t, u, 'r--', t, y(:,1), 'b-', t, y(:,2), 'r-');
legend('输入信号', '输出信号-theta', '输出信号-x');
xlabel('时间');
ylabel('幅值');
title('系统的输入输出信号');
subplot(2,1,2);
plot(t, x(:,1), 'r-', t, x(:,2), 'b--', t, x(:,3), 'black-', t, x(:,4), 'g--');
legend('theta', 'omega', 'x', 'v');
xlabel('时间');
ylabel('幅值');
title('系统的状态变量');
% =========================================

运行结果

Q单位阵,R=10

在这里插入图片描述

Q为eig(10,1,10,1),R=1

在这里插入图片描述
可以发现,输入信号的变化对于状态变量的收敛影响不大。

Q6:稳态误差相关控制

先贴ChatGPT的回答,有待笔者补充完善

Q:如果我想让LQR控制器控制结果中出现可被我准确控制的稳态误差,该怎么做?

回答一:Q后加常数

要让LQR控制器在系统稳定后出现可控的稳态误差,可以在成本函数中添加一个稳态误差的惩罚项。这个惩罚项可以使用系统输出与期望输出之间的偏差来表示。

具体来说,在LQR的成本函数中加入一个与系统输出偏差成比例的惩罚项。这可以通过在 Q Q Q矩阵中增加一个与输出偏差平方成比例的权重来实现。可以通过试验和调整权重的大小,以实现对稳态误差的控制。

以下是一个例子,演示如何在LQR控制器中添加一个稳态误差惩罚项:

假设我们有一个二阶系统,其状态空间表示为:

A = [0 1; 0 0];
B = [0; 1];
C = [1 0];
D = 0;

我们希望控制系统的稳态误差,并使其快速响应。我们可以使用LQR控制器来优化控制器参数,同时在成本函数中添加一个与输出偏差平方成比例的惩罚项。具体而言,我们可以将 Q Q Q矩阵设置为:

Q = [1 0; 0 10];

这样做可以增加对状态 x 2 x_2 x2的权重,从而加速系统的响应。然后,我们可以添加一个惩罚项来惩罚输出偏差,例如:

Q(2,2) = Q(2,2) + 1000;

这样可以增加对输出偏差的权重,从而减小稳态误差。

最后,我们可以使用lqr函数计算LQR控制器的增益矩阵,并将其应用于系统:

R = 1;
K = lqr(A, B, Q, R);
sys_cl = ss(A-B*K, B, C, D);

通过这样的设置,LQR控制器将通过调整输入信号来控制系统状态,并在稳态时保持输出与期望输出之间的偏差尽可能小。

回答二:加入积分项【LQI】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下一期指路

LQR的理解与运用 第二期——一阶倒立摆在matlab上的LQR实现

参考文档

(个人感觉最好✨→) 线性二次型调节器(LQR)原理详解
https://blog.csdn.net/qq_36133747/article/details/123413115
(推导K→) LQR最优控制方法小结
https://zhuanlan.zhihu.com/p/363033191
(应用篇)RoboMaster平衡步兵机器人控制系统设计
https://zhuanlan.zhihu.com/p/563048952当时的

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

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

相关文章

【GPT4】微软 GPT-4 测试报告(5)与外界环境的交互能力

欢迎关注【youcans的AGI学习笔记】原创作品 微软 GPT-4 测试报告&#xff08;1&#xff09;总体介绍 微软 GPT-4 测试报告&#xff08;2&#xff09;多模态与跨学科能力 微软 GPT-4 测试报告&#xff08;3&#xff09;编程能力 微软 GPT-4 测试报告&#xff08;4&#xff09;数…

GPT-4 即将问世!不仅能搞文字,还支持视频

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 作为当前全球最火的生成式 AI&#xff0c;ChatGPT 仅用了 3 个月&#xff0c;就几乎搅动了整个科技圈&#xff0c;人们不断惊叹于 ChatGPT 的强大——但微软和 OpenAI 想要的&#xff0c;显然不至于此…

文心一言 VS ChatGPT测评--多轮对话

上面的图&#xff0c;蓝色图表是文心一言&#xff1b;下面的图&#xff0c;绿色图标是chatGPT。 Round1 chatGPT还会抢答了。。。 Round2 chatGPT更有条理&#xff0c;1,2,3,4.。。。 Round3 文心一言的时效性更强一点&#xff0c;这回合算文心一言赢 Round4 还是chatGPT更有条…

多模态版ChatGPT,拿下视觉语言新SOTA, 代码已开源

点击上方“AI遇见机器学习”&#xff0c;选择“星标”公众号 重磅干货&#xff0c;第一时间送 文&#xff5c;羿阁 发自 凹非寺源&#xff5c;量子位 2022年流行“文生图”模型&#xff0c;那2023年流行什么&#xff1f; 机器学习工程师Daniel Bourke的答案是&#xff1a;反过来…

担心工作被AI取代?大模型再造一个“黄金时代”

文&#xff5c;光锥智能&#xff0c;作者&#xff5c;雷宇 随着人工智能在数据、算力、算法、工具、模型等方面的技术推进&#xff0c;AI已经实现由实验室到产业应用的层级跃升&#xff0c;更广范围、更深层次地影响着人们的经济发展与生产生活方式变革。 IDC数据显示&#xf…

从 Linus Torvalds 的成功中,我发现了这五个“残酷”真相

摘要&#xff1a;在每一位成功人士身上&#xff0c;我们总希望找出其与众不同之处&#xff0c;并以此来勉励自己。但事实证明&#xff0c;成功之路上还有许多我们忽略的残酷真相。 链接&#xff1a;https://medium.com/codex/5-harsh-truths-from-linus-torvalds-406ab20cea02 …

小米手机任意版本MIUI安装Google Play服务

声明&#xff1a;因年代久远&#xff0c;本文方法已失效。 2022-05-17&#xff1a;如有需要&#xff0c;可以试下直接下载安装gmail&#xff0c;因本人无测试环境&#xff0c;不保证可行 链接&#xff1a;https://share.weiyun.com/OknKLICv 打开小米应用商店 → 搜索“gmail…

小米商城项目

一、基本要求 1.1、小米商城PC Web 5-10个页面 功能&#xff1a;产品列表&#xff0c;注册&#xff0c;登录&#xff0c;产品详细&#xff0c;产品分类列表&#xff0c;瀑布流展示商品 数据使用ajax从服务器获得&#xff0c;技术不限&#xff08;.Net,java,php,node.js,python.…

支付系统设计三:渠道网关设计02-客户端报文解析

文章目录 前言一、后台配置管理1.1 渠道配置1.1.1 渠道基本信息新增1.1.2 渠道交易类型配置1.1.3 渠道商户信息配置1.1.4 账户配置1.1.5 交易类型机构配置 1.2 渠道通讯配置1.2.1 内部渠道通讯1.2.1 外部渠道通讯 1.3 资源配置1.4 证书管理1.5 路由配置 二、运行时逻辑处理1. 控…

完美解决小爱同学蓝牙音箱(包括触屏版)连接电脑后找不到音频设备问题

前言&#xff1a; 最近入手了一台Redmi小爱同学触屏版8Pro,发现正常连接手机蓝牙是可以播放音乐的&#xff0c;但是连接电脑后虽然提示连接成功&#xff0c;但是不能播放音乐&#xff0c;在选择播放设备处没有显示该设备&#xff0c;如下图是正常的状态 &#xff08;正常的样子…

小米互联网音箱首次促销 你买还是不买?

小米互联网音箱自去年底发布以来&#xff0c;凭借着时尚外观&#xff0c;海量内容&#xff0c;还有不俗音质创造了屡次售罄的佳绩。而近日&#xff0c;这款高性价比互联网音箱再度升级&#xff0c;可正式支持接入米家&#xff0c;从而实现更强大的远程控制功能。为了感谢广大消…

智能音箱的差评|为什么我要买一堆垃圾回来吃灰!

我终于没有躲过智能音箱的坑&#xff0c;还是在618的时候买了叮咚2代回来玩。 作为第一批亚马逊echo智能音箱的体验用户&#xff0c;这次中文版的坑是补踩了。 用了一个月&#xff0c;叮咚同学目前吃灰中&#xff0c;每天唤醒次数不超过一次。 在痛心疾首的检讨中&#xff0c;认…

多用户分销商城系统开发及多商家入驻的功能介绍

多用户商城是一种电子商务平台&#xff0c;允许多个商家在同一个平台上出售自己的产品或服务。这种商城模式可以吸引更多的消费者&#xff0c;因为他们可以在同一个网站上找到多个商家的产品&#xff0c;而不需要分别访问不同的网站。同时&#xff0c;多用户商城也可以为商家提…

在智能家居音箱领域上的音频功放芯片IC

目前&#xff0c;音频功放芯片主要应用于手机、音响、车载、可穿戴设备、计算机设备、智能家居等领域。随着人机交互逐步落地&#xff0c;从应用广度上对音频功放芯片需求完全放开&#xff0c;截止2021年以“智能音箱”、“智能家居”为代表的音频智能终端也持续放量&#xff1…

支付渠道网关设计2.0版本

文章目录 支付渠道网关设计2.0版本前言概述业务架构设计技术分层设计友情链接 支付渠道网关设计2.0版本 前言 之前写过一篇支付渠道网关设计的文章https://shanglishuai.blog.csdn.net/article/details/103545708 随着业务的复杂性&#xff0c;对支付业务的理解也越来越深刻…

全志成智能音箱最大赢家,索尼、腾讯、小米、百度、京东都在用,累计出货超千万台

全球范围内智能音箱销量都在持续增长&#xff0c;报告显示&#xff0c;在2018年第一季度的出货量已经超过900万台。中国已经成为仅次于美国的全球第二大智能音箱消费市场&#xff0c;其中国产的智能音箱产品更是占据了大头。我们都知道智能音箱的“智能”主要依靠它的心脏&…

小米荣获首张智能家居系统用户体验水平泰尔测评证书

近日&#xff0c;“小米全屋智能家居系统V1.0”荣获中国泰尔实验室颁发的首张智能家居系统用户体验水平泰尔测评证书。中国泰尔实验室依据中国通信标准化协会团体标准T/CCSA 357-2022 《移动互联网智能家居系统 用户体验评测方法》对其进行评估测试&#xff0c;测试总分达到用户…

小米商城官网(登录页,首页,详情页,我的购物车页,我的订单页,确认订单页)HTML+CSS+JS

文章目录 前言一、登录页二、首页三、我的购物车页四、我的订单页五、确认订单页六、详情页七、整体结构和效果图总结 前言 仿小米商城官网项目是本人实训内容&#xff0c;实训老师带着做的首页和登录页&#xff0c;本人在此基础上加入了我的购物车页&#xff0c;我的订单页&am…

小米网关+HomeAssistant获取智能硬件数据

因为想获取小米智能网关的温湿度传感器数据的可视化&#xff0c;希望可以和智能网关交互。 最后的技术方案采用&#xff1a;dockerHomeAssistant 1、安装docker 我是在mac上做的&#xff0c;所以去官网下载&#xff0c;一键安装 2、下载HomeAssistant镜像 docker pull hom…

小米智能家居接入智能家居平台homeassistant的方法

[原文] 在安装和设置完homeassistant之后,我们终于来到激动人心的一步——把智能家居产品接入homeassistant了。把智能家居产品接入homeassistant智能家居平台之后,就可以实现用亚马逊echo智能音箱或叮咚智能音箱语音控制智能家居产品;也可以实现打破品牌壁垒,让不同的品牌…