在航天器末端追逃博弈这一典型非合作动态对抗问题中,信息不对称往往成为制约追踪性能的关键瓶颈。传统研究多基于完全信息假设,而实际场景中逃逸方通过机动策略隐藏真实参数的情况屡见不鲜。本文复现的这项研究提出了一种创新解决方案:将扩展卡尔曼滤波(EKF)与博弈论相结合,构建了参数估计与策略调整的闭环系统。
核心创新点在于将逃逸方的控制矩阵参数视为待估计状态变量,通过EKF实现实时在线估计,并基于最新参数动态优化追踪策略。这种方法突破了传统静态博弈策略的局限,使得系统能在不完全信息条件下逐步逼近理想均衡状态。从工程实现角度看,该方案仅需在标准追踪算法中增加EKF模块,具有较高的可实施性。
近地轨道航天器的相对运动采用Clohessy-Wiltshire方程描述,其状态空间表示为:
code复制dx/dt = A·x + B·u - B·v
其中x=[x,y,z,dx,dy,dz]^T为相对状态向量,u和v分别代表追踪方与逃逸方的控制输入。A矩阵包含轨道角速度ω的动力学关系:
code复制A = [0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
3ω² 0 0 0 2ω 0
0 0 0 -2ω 0 0
0 0 -ω² 0 0 0]
B矩阵通常取[0;I]形式,但实际中逃逸方的真实B矩阵可能被主动隐藏或改变。这就引出了本文要解决的核心问题——当追踪方无法准确获知逃逸方的B矩阵时,如何保证有效拦截。
将追逃问题建模为零和微分博弈,双方的目标函数分别为:
code复制J_u = ∫(x'Qx + u'R_u u - v'R_v v)dt + x(T)'Q_T x(T)
J_v = -J_u
在完全信息条件下,纳什均衡策略可通过求解耦合的Riccati方程得到。但当B矩阵不确定时,传统方法直接失效。此时需要引入Epsilon纳什均衡概念——允许策略组合存在有限偏差ϵ,只要收益变化不超过ϵ即视为有效均衡。
关键步骤是将逃逸方的控制矩阵参数r扩展为系统状态:
code复制x_hat = [x; r]
建立新的非线性状态方程:
code复制f(x_hat,u,v) = [A·x + B·u - (r·B)·v
0] + w
观测模型保持线性:
code复制z = H·x_hat + v, H=[I 0]
在Matlab中实现时,需要特别注意:
matlab复制P = diag([1e-3*ones(1,6), 1e10]); % 反映参数r的高不确定性
matlab复制Qw = diag([1e-6,1e-6,1e-6,0.25e-6,0.25e-6,0.25e-6,1e10])/2;
matlab复制Rv = diag([1e-8,1e-8,1e-8,0.25e-8,0.25e-8,0.25e-8])/2;
实现EKF的核心循环包含:
matlab复制for k = 1:T
% 时间更新
x_pred = f(x_hat,u,v);
F = computeJacobian(x_hat,v); % 计算雅可比矩阵
P_pred = F*P*F' + Qw;
% 量测更新
K = P_pred*H'/(H*P_pred*H' + Rv);
x_hat = x_pred + K*(z - H*x_pred);
P = (eye(7)-K*H)*P_pred;
end
雅可比矩阵的计算需要特别注意对扩展状态项的求导:
matlab复制function F = computeJacobian(x,v)
F = zeros(7,7);
F(1:6,1:6) = A;
F(1:6,7) = -B*v; % 关键项:参数r对状态的影响
F(7,7) = 1;
end
基于EKF估计的参数r_hat,追踪策略动态更新为:
code复制u = -R_u^-1 B' P(t) x
其中P(t)通过求解时变Riccati方程获得:
code复制-dP/dt = A'P + PA - P(BR_u^-1B' - r_hatBR_v^-1B')P + Q
matlab复制sol = ode45(@(t,P) riccatiODE(t,P,A,B,r_hat,Ru,Rv,Q), [T 0], Q_T);
P_t = deval(sol,linspace(0,T,T));
matlab复制u = -Ru\B'*P_t(:,:,k)*x;
matlab复制if norm(r_hat_new - r_hat_old)/norm(r_hat_old) > 0.05
updateStrategy();
end
设置轨道高度500km(ω=1.13e-3 rad/s),初始相对位置1.5km,速度差0.05km/s。关键参数对比:
| 场景 | 拦截时间(s) | 终态误差(m) | 参数收敛性 |
|---|---|---|---|
| 完全信息 | 320 | 0 | - |
| 无估计(20%误差) | 480 | 15 | 不收敛 |
| EKF估计 | 350 | 2 | 200s内收敛 |
matlab复制plot3(x_P(:,1),x_P(:,2),x_P(:,3),'b-');
hold on;
plot3(x_E(:,1),x_E(:,2),x_E(:,3),'r--');
quiver3(x,y,z,u,v,w); % 显示控制方向
matlab复制semilogy(t,abs(r_hat-true_r)/true_r);
xlabel('Time(s)'); ylabel('Relative Error');
matlab复制plot(t,vecnorm(x_rel(1:3,:)),'LineWidth',2);
grid on; xlabel('Time(s)'); ylabel('Distance(m)');
当估计出现发散时,可采取:
matlab复制if any(eig(P)>1e10)
P = diag(min(diag(P),1e8));
disp('Covariance reset');
end
matlab复制[L,D] = ldl(P); % 使用LDL分解替代直接求逆
K = (L'\(D\(L\H')))/(H*(L'\(D\(L\H')))+Rv);
matlab复制parfor k = 1:100
P(:,:,k) = computeP(t(k));
end
在笔者实际测试中发现,当初值误差超过50%时,算法仍能保持稳定收敛,但收敛时间会延长约30%。一个实用技巧是在初始阶段施加试探性机动(如正弦扫频)来加速参数辨识。此外,将EKF与RL结合,通过奖励函数引导估计方向,可进一步提升在强干扰下的鲁棒性。