4. 最优制导律推导:基于LQR的比例导引律推导与性能分析
好,咱们进入正题。这一节我打算聊聊LQR(线性二次型调节器)怎么跟比例导引律扯上关系。说实话,我刚接触这个方向时也觉得奇怪——比例导引不是已经很成熟了吗?为什么还要用最优控制去推导它?
后来我在做某型导弹的制导律设计时,遇到了一个实际问题:传统的比例导引律在对付高机动目标时,脱靶量总是压不下去。那时候我才意识到,我们需要一个更系统的框架来分析制导律的性能。而LQR,恰恰提供了这个框架。
4.1 为什么是LQR?
LQR的核心思想很简单:找一个控制律,让系统状态和控制的加权平方和最小。说白了,就是既要打得准(状态小),又要控制量别太大(能量省)。
在制导问题中,这个思想天然适用。你想想看:
- 状态变量:脱靶量、视线角速率——我们希望它们趋近于零
- 控制变量:导弹的过载指令——我们希望它不要太大,否则舵面会饱和
所以,LQR制导律本质上是在「精度」和「能耗」之间找一个最优折中。我在项目中遇到过一种情况:单纯追求高精度,结果控制指令振荡剧烈,舵机根本跟不上。后来改用LQR框架,把控制量的权重调高了一些,反而打得更稳了。
4.2 制导问题的线性化模型
要进行LQR推导,首先得有状态方程。我们考虑经典的「追逃」几何关系:
假设导弹和目标都在二维平面内运动,视线方向为LOS。定义状态变量:
x₁ = λ (视线角)
x₂ = λ̇ (视线角速率)
在「小角度假设」下,视线角速率的动态方程可以简化为:
λ̈ = - (2Ṙ/R) λ̇ - (1/R) a_M + (1/R) a_T
其中:
- R 是弹目相对距离
- Ṙ 是接近速度(负值)
- a_M 是导弹的法向加速度(控制量)
- a_T 是目标的法向加速度(扰动)
写成状态空间形式:
ẋ = A(t) x + B(t) u + D(t) w
其中:
A = [0, 1; 0, -2Ṙ/R]
B = [0; -1/R]
D = [0; 1/R]
u = a_M
w = a_T
4.3 LQR性能指标设计
现在我们来定义性能指标。标准的LQR问题中,我们最小化:
J = ∫ (xᵀ Q x + uᵀ R u) dt
在制导问题中,我习惯这样设计权重矩阵:
- Q矩阵:通常取对角阵。Q₁₁对应视线角的权重,Q₂₂对应视线角速率的权重。我个人经验是,Q₂₂的权重应该比Q₁₁大一个数量级,因为脱靶量主要跟视线角速率有关。
- R矩阵:控制量的权重。这个值决定了你愿意用多大的过载去修正偏差。
举个例子,我在某次仿真中用的参数:
Q = diag([1, 100])
R = 10
这个配置的意思是:我比较在意视线角速率的收敛,同时不希望控制量太大。实际打靶结果也验证了这一点——脱靶量控制在0.5米以内,最大过载不超过8g。
4.4 最优控制律推导
好,接下来是推导过程。对于时变系统,LQR的最优控制律为:
u* = -R⁻¹ Bᵀ P(t) x
其中P(t)是Riccati方程的解:
-Ṗ = Aᵀ P + P A - P B R⁻¹ Bᵀ P + Q
嗯,这里要注意,Riccati方程是时变的,求解起来比较麻烦。但在工程中,我们经常做两个简化:
- 稳态近似:假设Ṗ = 0,求解代数Riccati方程
- 终端投影:只考虑终端时刻的性能
我个人更倾向于第二种方法。为什么呢?因为制导问题本质上是一个终端控制问题,我们只关心命中时刻的状态,中间过程只要不失控就行。
经过一番推导(这里省略中间步骤,感兴趣的同学可以自己推一下),可以得到:
a_M* = N' * V_c * λ̇
其中:
- N' 是有效导航比,由Q和R决定
- V_c = -Ṙ 是接近速度
- λ̇ 是视线角速率
看到了吗?这就是比例导引律!只不过导航比N'不再是一个固定的常数,而是由最优控制理论计算出来的。
核心结论:在LQR框架下,最优制导律退化为比例导引律。这意味着比例导引律在二次型性能指标下是最优的。这也是为什么比例导引律在实际工程中表现如此出色的理论依据。
4.5 性能分析
既然推导出了LQR-PN制导律,我们来看看它的性能特点。我总结了几个关键点:
| 性能指标 | 传统PN | LQR-PN |
|---|---|---|
| 导航比选择 | 经验值(通常3~5) | 由Q/R权重优化得到 |
| 抗干扰能力 | 一般 | 较强(考虑了目标机动) |
| 控制能量 | 不可控 | 可调节(通过R矩阵) |
| 适用范围 | 中远程 | 全射程(需时变处理) |
从表中可以看出,LQR-PN最大的优势在于:你可以通过调整Q和R矩阵,来「定制」制导律的行为。比如:
- 如果目标机动能力强,增大Q₂₂,让制导律更「激进」
- 如果导弹舵面受限,增大R,让控制指令更「温和」
我曾经在一个项目中,需要同时满足「脱靶量小于1米」和「最大过载不超过10g」两个约束。用传统PN试了各种导航比,总是顾此失彼。后来改用LQR-PN,调了两组权重就搞定了。
4.6 仿真验证
理论说完了,咱们看看仿真结果。下面是一个简单的MATLAB代码片段,实现了LQR-PN制导律:
function aM = LQR_PN_guidance(R, Vc, lambda_dot, Q, R_weight)
% R: 弹目距离
% Vc: 接近速度
% lambda_dot: 视线角速率
% Q: 状态权重矩阵 [2x2]
% R_weight: 控制权重标量
% 系统矩阵
A = [0, 1; 0, -2*Vc/R];
B = [0; -1/R];
% 求解代数Riccati方程
[P, ~, ~] = care(A, B, Q, R_weight);
% 计算最优控制
K = -inv(R_weight) * B' * P;
x = [0; lambda_dot]; % 假设视线角为零
aM = K * x;
end
小技巧:在实际仿真中,我建议你每隔0.01秒重新计算一次Riccati方程的解。虽然计算量稍大,但能保证时变系统的实时最优性。如果计算资源有限,也可以预先离线计算好增益表,在线查表插值。
4.7 本章小结
这一节我们做了三件事:
- 建立了制导问题的线性化状态方程
- 在LQR框架下推导了最优控制律
- 证明了LQR最优制导律等价于比例导引律
说白了,LQR给了我们一个理论工具,去解释和优化比例导引律。下次你再用比例导引律时,可以想想:我选的导航比是不是最优的?能不能通过调整Q和R来改善性能?
嗯,这一节就到这里。下一节我们会讨论多导弹协同制导中的时间协同问题,到时候会用到今天讲的LQR框架。