LQR控制

LQR

1.概念

LQR是线性二次型调节器 Linear Quadratic Regulator。

公式是连续的,实际使用时是离散的。

2.公式推倒

系统方程
  x ˙ = A x + B u   \ {\dot x} = Ax + Bu\  x˙=Ax+Bu 


离散方法:
x ( t + 1 ) = x ( t ) + A ζ x(t+1) = x(t) + A\zeta x(t+1)=x(t)+Aζ
向前欧拉法
x ( t + 1 ) = ( I + A ) x ( t ) x(t+1) = (I + A)x(t) x(t+1)=(I+A)x(t)
向后欧拉法
x ( t + 1 ) = ( I − A ) − 1 x ( t ) x(t+1) = (I-A)^{-1}x(t) x(t+1)=(IA)1x(t)
中间欧拉法
x ( t + 1 ) = ( I − A / 2 ) − 1 ( I + A / 2 ) x ( t ) x(t+1) = (I-A/2)^{-1}(I+A/2)x(t) x(t+1)=(IA/2)1(I+A/2)x(t)


设计一个线性反馈控制器
  u = − K x   \ u = -Kx \  u=Kx 
代价函数
  J = x T Q x + u T R u   \ J = x^TQx + u^TRu \  J=xTQx+uTRu 
其中 Q Q Q R R R是权重矩阵,人为设定。
需要求解
K K K
求解方式
K = R − 1 B T P K = R^{-1}B^TP K=R1BTP
离散
K = ( R + B T P B ) − 1 B T P A K = (R + B^TPB)^{-1}B^TPA K=(R+BTPB)1BTPA
其中
A T P + P A + Q = P B R − 1 B T P A^TP + PA + Q = PBR^{-1}B^TP ATP+PA+Q=PBR1BTP
离散
P = A T P A − A T P B ( R + B T P B ) − 1 B T P A + Q P = A^TPA - A^TPB(R + B^TPB)^{-1}B^TPA+Q P=ATPAATPB(R+BTPB)1BTPA+Q
其中,P的初值可为Q。
P i n i t = Q P_{init} = Q Pinit=Q

3.示例及流程

0.写出状态方程

1.写出矩阵A

2.写出矩阵B

3.计算误差

4.计算离散矩阵 A d , B d A_d, B_d Ad,Bd

A d = ( I − A / 2 ∗ d t ) − 1 ( I + A / 2 ∗ d t ) A_d = (I-A/2*dt)^{-1}(I+A/2*dt) Ad=(IA/2dt)1(I+A/2dt)
B d = ( I − A / 2 ∗ d t ) B ∗ d t B_d = (I- A/2*dt)B*dt Bd=(IA/2dt)Bdt
式中, d t dt dt是控制周期,较小,例如0.001,故通常省略 B d B_d Bd中的 ( I − A / 2 ∗ d t ) (I- A/2*dt) (IA/2dt),得到:
B d = B ∗ d t B_d = B*dt Bd=Bdt

5.求解LQR矩阵,计算得到K

P = Q
P n e x t = A T P A − A T P B ( R + B T P B ) − 1 B T P A + Q P_{next} = A^TPA - A^TPB(R + B^TPB)^{-1}B^TPA+Q Pnext=ATPAATPB(R+BTPB)1BTPA+Q
i f ( P − P n e x t ) < e if(P - P_{next}) < e if(PPnext)<e
b r e a k break break

6.计算反馈 u = − K x u = -Kx u=Kx

### LQR 控制(线性二次型调节器)实现方法 #### 定义与基本概念 LQR(Linear Quadratic Regulator),即线性二次型调节器,是一种解决线性系统最优控制问题的经典方法。它通过对系统的状态变量和控制变量进行加权组合,构建一个二次型的目标函数 \( J \),并通过最小化该目标函数来寻找最优的控制策略[^1]。 在现代控制理论中,LQR 方法的核心在于设计一个状态反馈控制器 \( u(t) = -Kx(t) \),使得目标函数 \( J \) 达到最小值。这里的权重矩阵 \( Q \) 和 \( R \) 决定了如何平衡状态误差和控制输入的能量消耗[^2]。 --- #### 数学表达式 对于连续时间系统,假设动态方程为: \[ \dot{x}(t) = Ax(t) + Bu(t), \] 其中 \( x(t) \in \mathbb{R}^n \) 表示系统的状态向量,\( u(t) \in \mathbb{R}^m \) 表示控制输入向量,\( A \in \mathbb{R}^{n \times n} \) 和 \( B \in \mathbb{R}^{n \times m} \) 分别表示系统的状态转移矩阵和输入矩阵。 目标是最小化如下形式的成本函数: \[ J = \int_{0}^{\infty} \left( x^T(t)Qx(t) + u^T(t)Ru(t) \right) dt, \] 其中 \( Q \geq 0 \) 是半正定矩阵,用来衡量状态偏差的重要性;\( R > 0 \) 是正定矩阵,用来衡量控制能量的消耗[^3]。 通过求解黎卡提方程(Riccati Equation),可以得到最优增益矩阵 \( K \): \[ A^TP + PA - PBR^{-1}B^TP + Q = 0. \] 最终的控制律为: \[ u(t) = -Kx(t), \quad K = R^{-1}B^TP. \] --- #### 实现步骤 以下是基于 MATLAB 或其他工具实现 LQR 的一般流程: 1. **建立系统模型** 需要明确系统的动力学方程 \( \dot{x}(t) = Ax(t) + Bu(t) \)[^4]。如果是非线性系统,则需先对其进行线性化处理。 2. **定义代价函数中的权重矩阵** 权重矩阵 \( Q \) 和 \( R \) 的选择直接影响控制效果。通常情况下,较大的 \( Q \) 对应更严格的状态跟踪需求,而较大的 \( R \) 则倾向于减少控制输入的能量消耗[^5]。 3. **计算 Riccati 方程并获得增益矩阵 \( K \)** 使用数值算法或软件包(如 MATLAB 中的 `lqr` 函数)求解黎卡提方程,并得出最优增益矩阵 \( K \)。 4. **验证稳定性与性能** 将所得的 \( K \) 应用于控制系统,观察其响应特性是否满足预期要求。必要时调整 \( Q \) 和 \( R \) 进一步优化性能。 --- #### 示例代码 以下是一个简单的 MATLAB 实现案例,展示如何利用 LQR 设计控制器: ```matlab % 系统参数 A = [0 1; -1 -1]; % 状态转移矩阵 B = [0; 1]; % 输入矩阵 C = eye(2); % 输出矩阵(仅作演示) D = zeros(1, 1); % 直接传递项 % 定义权重矩阵 Q = diag([1, 1]); % 状态权重矩阵 R = 1; % 控制输入权重矩阵 % 计算 LQR 增益矩阵 [K, S, E] = lqr(A, B, Q, R); disp('LQR 增益矩阵:'); disp(K); ``` 上述代码展示了如何针对给定的线性系统计算出最优增益矩阵 \( K \) 并打印结果。 --- #### 特点与优势 - LQR 能够提供解析解,在许多实际工程场景中有广泛应用。 - 具有良好的鲁棒性和易用性,尤其适合于已知精确模型的线性系统。 - 易于扩展至离散时间域或其他复杂约束条件下的变体版本。 然而需要注意的是,当面对高度非线性或者不确定性强的系统时,可能需要引入额外的技术手段加以改进。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值