Xiaohei's Blog
headpicBlur image

Linear Quadratic Regulator - LQR#

  1. Linear(线性模型)

Linear

  1. Quadratic(二次),LQR就是根据二次函数的性质,找到最低点,也就是找到一个能量最优的点/能量最优的控制方案。

Quadratic

  1. Regulator(调节器)

Regulator

  1. 优缺点(更适用于多输入多输出的模型)

point

与PID的区别#

PID为输出反馈控制,LQR为状态反馈控制,有了多维度的控制信息。下图为LQR的控制流程框图。

frame

求增益矩阵K#

首先明确一个代价函数J,这个代价函数来衡量这个方法是不是最优的一个方法。其中Q1、Q2、Q3(权重)这三个因数的大小决定了x中每个量的重要性

k

黎卡提方程(Riccati):目的就是在有了代价函数的基础上,找到能量最优的解,从而求出K增益矩阵(在matlab中直接调用函数即可)

r

观测器的作用#

需要观测器本质还是因为状态反馈控制,需要知道我们反馈的每个状态变量。有时候我们的一些状态变量是无法直接从传感器获取的。

无法从传感器直接获取,我们就需要用观测器把未知的一个状态变量给估计出来(如果只是单纯的用数学方法进行微分积分变换,会出现很多的噪声,同时也可能会产生相位滞后。甚至有些数据是无法从传感器得到或者说直接微分积分就得到的)。

ob

LQR 仿真#

  1. 先写状态方程和状态空间。

sim1 sim2 sim3

  1. 搭建simulink仿真系统
  • 先设置状态空间方程模型 sim4
  • 再添加卡尔曼观测器 sim5
  • 完整系统结构 sim6

QR矩阵调参#

通过调QR矩阵得到新的增益矩阵K,从而达到闭环再来做状态反馈控制。

note

R的调节举例:u为控制量。t为时间。所以当R变大时,控制量u会变小,导致一个结果是控制量会比以前更小,从而响应的时间更长,响应的速度更慢。

note1

QR矩阵影响控制系统的方法:QR矩阵改变的是他们所对应的状态变量的收敛速度,即趋近于0的速度。如果想要让这个状态变量收敛的更快,更早的趋近于零,那就通过增大状态变量对应的权重系数即可。(例如:让X1收敛的更快就增大Q1,让X2收敛的更快就增大Q2)。

note2

跟踪参考输入#

  1. 参考输入放在哪里?
  • 假设给定一个单位阶跃信号的输入,希望输出可以跟踪我们的参考输入(如果只按照PID的控制流程再结合上LQR的控制方法发现无法完成跟踪参考输入)。

  • 在LQR控制框前加上积分环节,之后控制系统如果存在误差(实际值与目标值的差距),就会被一直的累加,直到误差被消除。从而解决LQR状态反馈引起的输出无法跟踪的问题。

note3

  1. 为什么要额外加输出反馈:LQR本身作为状态反馈控制,要想跟踪输出就必须用上输出反馈控制,引入积分环节就可以达到这个目的。

note4 note5

实物中的LQR对应的C语言程序#

  • 变量初始化
  • 观测器运算
  • 反馈、增益矩阵k乘以对应的几个状态变量
  • 得到控制量u

code

LQR 控制算法
https://xiaohei94.github.io/blog/lqr
Author 红鼻子小黑
Published at May 19, 2025
Comment seems to stuck. Try to refresh?✨