LQR线性二次调节器

次浏览

概述

LQR(Linear Quadratic Regulator,线性二次调节器)是一种经典的最优控制方法,广泛应用于机器人、航空航天、过程控制等领域。它的核心思想是:对于线性系统,设计一个状态反馈控制器,使得某个二次型性能指标最小化。


一、问题描述

1.1 线性系统模型

考虑线性时不变系统:

$$ \dot{x}(t) = Ax(t) + Bu(t) $$

其中:

  • $x \in \mathbb{R}^n$:状态向量
  • $u \in \mathbb{R}^m$:控制输入
  • $A \in \mathbb{R}^{n \times n}$:系统矩阵
  • $B \in \mathbb{R}^{n \times m}$:输入矩阵

1.2 性能指标

LQR的目标是最小化以下二次型性能指标:

$$ J = \frac{1}{2}x^T(T)S_fx(T) + \frac{1}{2}\int_0^T \left[ x^T(t)Qx(t) + u^T(t)Ru(t) \right] dt $$

其中:

  • $Q \in \mathbb{R}^{n \times n}$:状态权重矩阵(半正定)
  • $R \in \mathbb{R}^{m \times m}$:控制权重矩阵(正定)
  • $S_f \in \mathbb{R}^{n \times n}$:终端权重矩阵(半正定)

权重矩阵的物理意义:

  • $Q$ 越大:对状态偏差的惩罚越大,系统响应更快
  • $R$ 越大:对控制输入的惩罚越大,控制更平缓

二、无限时间LQR

2.1 问题形式

对于无限时间($T \to \infty$)问题,性能指标简化为:

$$ J = \frac{1}{2}\int_0^{\infty} \left[ x^T(t)Qx(t) + u^T(t)Ru(t) \right] dt $$

2.2 Riccati方程

最优控制律通过求解代数Riccati方程(ARE)得到:

$$ A^TP + PA - PBR^{-1}B^TP + Q = 0 $$

其中 $P$ 是对称正定矩阵。

2.3 最优控制律

$$ u^*(t) = -Kx(t) = -R^{-1}B^TPx(t) $$

其中反馈增益矩阵:

$$ K = R^{-1}B^TP $$

2.4 求解步骤

1
2
3
4
1. 选择权重矩阵 Q 和 R
2. 求解 Riccati 方程得到 P
3. 计算反馈增益 K = R^{-1}B^TP
4. 实现状态反馈控制 u = -Kx

三、有限时间LQR

3.1 问题形式

对于有限时间问题,需要求解微分Riccati方程:

3.2 微分Riccati方程

$$ -\dot{P}(t) = A^TP(t) + P(t)A - P(t)BR^{-1}B^TP(t) + Q $$

边界条件:$P(T) = S_f$

3.3 时变反馈增益

$$ K(t) = R^{-1}B^TP(t) $$

四、离散时间LQR

4.1 离散系统模型

$$ x_{k+1} = Ax_k + Bu_k $$

4.2 性能指标

$$ J = \frac{1}{2}\sum_{k=0}^{\infty} \left[ x_k^TQx_k + u_k^TRu_k \right] $$

4.3 离散Riccati方程

$$ P = A^TPA - A^TPB(R + B^TPB)^{-1}B^TPA + Q $$

4.4 最优控制律

$$ u_k^* = -Kx_k = -(R + B^TPB)^{-1}B^TPA \cdot x_k $$

五、LQR性质

5.1 稳定性

在以下条件下,闭环系统渐近稳定:

  1. $(A, B)$ 可控
  2. $(A, Q^{1/2})$ 可观测

闭环系统矩阵:$A_{cl} = A - BK$

5.2 鲁棒性

LQR具有优秀的鲁棒性质:

  • 至少 $\pm 60°$ 的相位裕度
  • 至少 $6$ dB(约 $50%$)的增益裕度

5.3 最优性

对于给定的 $Q$ 和 $R$,LQR提供的是全局最优解。


六、权重矩阵选择

6.1 布莱森规则(Bryson’s Rule)

$$ Q = \text{diag}\left(\frac{1}{x_{1,max}^2}, \frac{1}{x_{2,max}^2}, \ldots\right) $$$$ R = \text{diag}\left(\frac{1}{u_{1,max}^2}, \frac{1}{u_{2,max}^2}, \ldots\right) $$

其中 $x_{i,max}$ 和 $u_{i,max}$ 是状态和控制的最大允许值。

6.2 迭代调整

  1. 初始选择:$Q = I$,$R = I$
  2. 观察响应,调整权重
  3. 状态响应慢 → 增大 $Q$
  4. 控制输入过大 → 增大 $R$

6.3 比例因子法

$$ Q = q \cdot I_n, \quad R = \rho \cdot I_m $$

调节比例因子 $q/\rho$ 来平衡性能与控制代价。


七、Python实现示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import numpy as np
from scipy import linalg

def lqr(A, B, Q, R):
    """
    求解连续时间LQR问题
    
    参数:
        A: 系统矩阵 (n x n)
        B: 输入矩阵 (n x m)
        Q: 状态权重矩阵 (n x n)
        R: 控制权重矩阵 (m x m)
    
    返回:
        K: 反馈增益矩阵 (m x n)
        P: Riccati方程解 (n x n)
    """
    # 求解Riccati方程
    P = linalg.solve_continuous_are(A, B, Q, R)
    
    # 计算反馈增益
    K = np.linalg.inv(R) @ B.T @ P
    
    return K, P


# 示例:倒立摆系统
# 状态: [位置, 速度, 角度, 角速度]
g = 9.81
L = 1.0
m = 1.0
M = 1.0

A = np.array([
    [0, 1, 0, 0],
    [0, 0, -m*g/M, 0],
    [0, 0, 0, 1],
    [0, 0, (M+m)*g/(M*L), 0]
])

B = np.array([
    [0],
    [1/M],
    [0],
    [-1/(M*L)]
])

# 权重矩阵
Q = np.diag([1, 1, 10, 1])  # 角度更重要
R = np.array([[0.1]])

# 求解LQR
K, P = lqr(A, B, Q, R)

print("反馈增益矩阵 K:")
print(K)
print("\n闭环系统特征值:")
print(np.linalg.eigvals(A - B @ K))

八、应用案例

8.1 倒立摆控制

1
2
3
状态: x = [小车位置, 小车速度, 摆角, 摆角速度]
控制: 小车施加的力
目标: 保持摆杆直立,小车回到原点

8.2 无人机姿态控制

1
2
3
状态: x = [roll, pitch, yaw, p, q, r]
控制: 各电机转速差
目标: 姿态稳定跟踪

8.3 航迹跟踪

1
2
3
状态: x = [位置偏差, 速度偏差]
控制: 舵面偏转或推力
目标: 跟踪期望轨迹

九、LQR的局限性

9.1 需要精确模型

LQR依赖于精确的系统模型,模型误差会影响控制效果。

9.2 无法处理约束

标准LQR无法显式处理:

  • 控制输入饱和
  • 状态约束
  • 输入变化率限制

9.3 全状态反馈

需要所有状态可测量,否则需要配合状态观测器(如卡尔曼滤波器)。


十、扩展方法

10.1 LQG(线性二次高斯)

LQR + 卡尔曼滤波器:

$$ \hat{x}_{k+1} = A\hat{x}_k + Bu_k + L(y_k - C\hat{x}_k) $$

10.2 LQR with Integral Action

添加积分项消除稳态误差:

$$ \dot{z} = r - y = r - Cx $$

扩展状态:$\begin{bmatrix} x \ z \end{bmatrix}$

10.3 LTV-LQR(线性时变)

对于时变系统 $\dot{x} = A(t)x + B(t)u$,求解时变Riccati方程。


总结

LQR是最优控制的基础方法,具有以下特点:

优点 缺点
解析解,计算简单 需要精确模型
全局最优 无法处理约束
鲁棒性好 需要全状态可测
广泛应用 线性系统限制

适用场景:

  • 线性系统或可线性化的系统
  • 无硬约束的场合
  • 有精确模型的情况

参考资料


🎯 LQR是控制理论的基石,理解它对于掌握更高级的控制方法至关重要!

使用 Hugo 构建
主题 StackJimmy 设计