LQR控制器设计

这篇文章,笔者将从基础分析开始,讲解LQR控制器的原理和工程设计方法

Linear Quadratic Regulator

LQR原理

闭环系统状态方程

首先,我们将一个系统用状态空间方程进行表示

$$
\dot{x} = A\cdot x
$$

那么根据矩阵对角化原理,我们可以得到:

$$
\because A = P^{-1} M P
\\ \therefore
\dot{x} = P^{-1} M Px
\\
P\dot{x} = M Px
\\ \therefore
y = Px
\\ \therefore
\dot{y} = My
$$

把上推导结果先记着,让我们继续回到原形式的系统状态方程,进行拉普拉斯分析:

$$
\dot{x} = A\cdot x
\\ \Rightarrow
s\cdot x = A\cdot x
\\
(sI-A)\cdot x = 0
$$

则此时我们可以很容易发现该方程的解是求原系统矩阵的特征向量!即:

$$
|sI-A| = 0 \Rightarrow s = {\lambda}
\\
(\lambda I -A)\cdot x = 0 \Rightarrow \vec{x} = {\vec{n}}
$$

注:本文中为了方便,除了在防止理解错误的地方,均不在向量上加向量符号

所以,一个系统其状态将由系统矩阵的特征值和特征向量决定

在上述开环(不对一个系统进行控制)的情况下,由于系统状态由特征值决定,所以可能存在不稳定的情况(这是常见的);那么我们就需要加上控制器,进行人工校正系统特性,使其稳定并满足我们想要的响应参数。对上述一个普通系统,加入线性反馈后:

$$
\dot{x} = A\cdot x + B\cdot u
$$

其中控制器反馈值

$$
\vec{u} = - \vec{k}\vec{x} = -\begin{bmatrix}
k_1 & k_2 & \dots & k_n
\end{bmatrix}
\cdot \begin{bmatrix}
x_1 \\ x_2 \\ \dots \\ x_n
\end{bmatrix}
$$

代入后进行整理可以得到闭环情况下的系统:

$$
\dot{x} = (A-Bk)x = A_{cl}x
$$

这时候,系统的表现(闭环系统矩阵特征值)就是我们可以通过k值进行配置的了!!!

能量函数

在闭环的情况下,我们已经能够通过配置反馈的k值来调整系统满足稳定的条件了,那么调整到什么样的值是不仅稳定又符合我们某些响应要求的呢?这就引入了能量函数/损失函数这一概念:

$$
J = \int^{t_0 + \Delta T}_{t_0} (x^T Q x + u^T R u )dt
$$

很明显,这就是LQR(中文名称:线性二次型调节器)的命名来源,积分对象都是二次多项式。

这个函数中通过调节Q和R矩阵就能调节我们对系统某个状态或者控制器输出的关注程度,我们以一个汽车控制系统为例:系统状态包括速度和加速度,控制器输出包括发动机燃油量(与推力、输出功率成正比)。那么如果我们希望汽车耗油量少,就要适当增大R矩阵中对燃油控制量的值;如果我们希望汽车速度更暴力,就适当调整Q矩阵中的对速度状态的值。

其实选择Q和R矩阵也有点最优控制的味道

LQR控制器

那么我们的LQR控制器很简单啦!就是在满足系统稳定的情况下,设计好我们关注参数的Q和R矩阵,然后计算损失函数最小时的反馈矩阵k值,即:

$$
\vec{k} | \min J = \int^{t_0 + \Delta T}_{t_0} (x^T Q x + u^T R u )dt
$$

这样一个反馈系统就是LQR控制器了,笔者截取一个简单的二阶LQR系统框图如下:

LQR

工程设计LQR控制器

可分为如下几个步骤:

  1. 建立系统状态方程

    $$
    \dot{x} = Ax + Bu
    $$

  2. 计算系统是否满足可控性

    • 系统矩阵为
      $$
      A\in R^{n\times n},B\in R^{n\times r}
      $$
    • 则有可控性矩阵
      $$
      C_{o} = [B,AB,\cdots,A^{n-1}B]
      $$
    • 该矩阵的秩若和系统阶数相同(满秩)则系统是可控的
      $$
      \text{Rank}(C_o) = n
      $$

    毕竟系统要是不可控,那也没啥分析的必要了

    使用matlab工具计算:

    1
    2
    Co = ctrb(A,B)  # 能控性矩阵
    rank(Co) # 求秩
  3. 设计Q和R矩阵

    这部分先略

  4. 求解反馈K值

    这一部分我们直接借助matlab解算

    1
    K = lqr(A,B,Q,R)

参考文档

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2022-2023 RY.J
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信