
不完全信息下的航天器末端追逃博弈EKF 参数估计如何撑起一套自适应策略做航天器末端追逃博弈仿真时最让人头疼的不是动力学方程本身而是“不完全信息”这四个字。你算你的最优规避我算我的最优追踪可问题在于——我根本不知道你的机动能力上限、传感器精度、甚至你对“末端”的定义是否和我一致。这种情况下教科书里那些干干净净的纳什均衡解几乎没法直接用。最近我复现了一篇期刊论文的方法核心思路是用EKF扩展卡尔曼滤波在线估计对方的关键参数再把估计结果塞进一个自适应博弈框架里最终收敛到Epsilon纳什均衡策略。整套东西用Matlab实现下来效果比我想象中稳不少。这篇我把代码思路、参数设计、以及踩过的坑都整理出来适合正在做追逃博弈、微分博弈、或者对EKF做参数估计感兴趣的读者参考。先说结论这套“EKF参数估计自适应博弈”组合拳解决的不只是“我猜你在想什么”的问题更是把“猜得准不准”和“策略稳不稳”这两件事解耦了。EKF负责把不确定性压缩成可用的一阶矩和二阶矩博弈层负责基于这些统计量做策略迭代。换句话说你把怎么猜交给滤波器把怎么打交给博弈器。1. 系统建模末端追逃博弈到底在解什么1.1 追逃两方的相对运动方程先建立最基础的两航天器相对运动模型。末端追逃场景一般用C-W方程Clohessy-Wiltshire描述轨道坐标系下的相对运动忽略J2摄动和大气阻力把问题聚焦在制导末端段。状态向量取相对位置和相对速度共6维控制输入取推力加速度约束条件包括推力幅值上限、末端交会距离阈值等。动力学方程写出来是这样的状态x [rx, ry, rz, vx, vy, vz]^T追逃双方分别在各自的控制量u_p和u_e作用下运动。追逐方Pursuer希望终端相对距离最小化逃逸方Evader则反之。连续时间下这是一个零和微分博弈但实际问题中需要离散化因为EKF和数值积分都工作在离散时间框架下。我把离散步长取为0.1秒末端博弈时长取10秒这样总步数是100步。这个参数不是拍脑袋定的——末端制导段的时间尺度本来就在秒级到十秒级步长太大则EKF估计精度断崖式下降步长太小则每步的机动增量不明显策略演化看起来像静止画面。1.2 不完全信息具体指什么论文标题里的“不完全信息”不是泛泛而谈而是有一套数学定义。博弈论里不完全信息意味着参与者的支付函数、可行策略集或对手的类型存在未知成分。映射到航天器场景中有三个典型的不确定来源第一是逃逸方的推力上限未知。你只知道对方有发动机但不知道它能拉出多大的过载这直接影响你的拦截策略设计。第二是逃逸方的测量噪声水平未知它的传感器误差协方差R_e你不知道导致你无法精确推断它当前掌握的信息状态。第三是末端条件的优先权重未知对方究竟是更看重绝对距离最小化还是更看重燃料消耗约束这是一个权重配比问题。EKF参数估计的思路是把这些未知量扩充进增广状态向量和相对运动状态一起递推估计。比如把逃逸方推力上限当作一个常数型未知参数给它一个缓慢变化的随机游走模型这样EKF会在递推过程中不断修正对它的估计值。1.3 为什么完整的纳什均衡算不出来如果信息是完全的这个追逃博弈可以转化为求解一个HJIHamilton-Jacobi-Isaacs方程的边值问题得到精确纳什均衡。但HJI方程在六维状态空间下几乎不可能解析求解数值方法也会因维度灾难而崩溃。更致命的是不完全信息让每个人的“最优反应函数”都建立在对方参数的先验猜测上。你不知道对方推力上限就无法确定它的可达集自然也无法真正算出自己的最优拦截轨迹。这就是为什么需要Epsilon纳什均衡——你不再追求数学上的最优点而是接受一个带容差ε的近似均衡。提示Epsilon纳什均衡的白话解释是——没有人能通过单方面偏离当前策略获得超过ε的收益改善。ε用来量化“大约最优”的边界在实际工程里这个边界比理论上的零更现实。2. EKF参数估计让博弈双方学会“察言观色”2.1 状态扩维与EKF递推框架把逃逸方的推力上限a_max_e和测量噪声系数q_e扩充进状态向量新的增广状态y [rx, ry, rz, vx, vy, vz, a_max_e, q_e]^T维度从6升到8。动力学模型里前6维按C-W方程更新后2维按随机游走模型更新。EKF的核心步骤大家应该都熟预测步用f(y)计算先验均值和协方差更新步用h(y)的雅可比矩阵算卡尔曼增益。关键在于雅可比矩阵怎么求——扩充维度之后原本6x6的状态转移矩阵变成了8x8其中新参数对位移和速度的耦合项需要通过动力学方程偏导得到。设测量方程为 z H·[rx, ry, rz] v即只测相对位置三个分量H矩阵是3x6的稀疏阵对应扩维后变成3x8其中后两列全零。这个设计的意图是模拟星载相对导航传感器只能提供位置量测的实际情况速度和对方参数都需要靠滤波器的动态估计能力去反推。2.2 过程噪声协方差的整定细节EKF的估计质量很大程度上取决于过程噪声协方差Q和量测噪声协方差R的匹配程度。Q设置太小则滤波器过于自信观测新息长期不等于零发散风险极大Q设置太大则参数估计震荡剧烈给博弈策略层传递过多噪声。我采用的Q矩阵结构是分块对角阵前6维对应相对运动状态Q1 0.01^2 * I6后2维对应参数状态Q2 0.005^2 * I2。这个量级设定基于半物理仿真的经验相对位置噪声通常由星间链路测量精度决定米级到分米级参数慢变量每步最多变化0.005不会因为单次观测产生突变。实际调试时我发现a_max_e的初始估计偏差如果超过真实值30%EKF会在前20步内快速收敛但如果在收敛过程中博弈双方策略已经发生过一次“危险接近”那么后续的估计曲线可能出现持续偏移。解决办法是加重参数状态的随机游走激励让Q2在初始阶段取大一些等估计收敛后再通过调度函数逐步减小。2.3 新息序列是判断滤波器健康的窗口日常调试EKF最重要的诊断道具是新息序列innovation sequence也就是zk - h(xk|k-1)。理论上如果滤波器模型匹配新息应该是零均值白噪声其协方差应该等于Sk H Pk|k-1 H^T R。我在Matlab里每步计算新息并做3σ检验一旦连续三步超出边界立刻输出告警。这一步看似简单但在追逃博弈仿真中极其关键——当双方距离很近时相对运动非线性增强C-W线性方程的偏差被放大新息序列会出现大幅跳变如果不做干预后续的EKF估计和博弈策略都会“漂移”。3. Epsilon纳什均衡策略接受不完美但不放弃最优3.1 从最优控制问题到策略迭代EKF输出的是当前对系统状态的估计值以及状态协方差矩阵。博弈层如何利用这些信息核心思路是模型预测控制MPC框架下的滚动时域优化——每步基于当前估计状态求解一个有限时域内的最优控制问题。追逐方的问题可以写成给定当前估计的逃逸方参数选择控制序列u_p(0...N-1)最小化终端距离加上全程控制代价。逃逸方则相反最大化同样的目标函数。两个优化问题互相耦合你中有我、我中有你没法一次性求解。策略迭代法是处理这类耦合问题的经典手段。第k步先固定逃逸方的策略求解追逐方的最优反应再固定追逐方的策略求解逃逸方的最优反应交替迭代直到策略不再显著变化。此时得到的是该估计参数下的纳什均衡策略。3.2 Epsilon如何体现“不完全”的妥协每一次策略迭代都基于当前EKF参数估计值来计算这个估计值本身带着不确定性协方差P。因此所谓的“最优反应”在这个意义上只对估计均值最优对真实参数而言并非严格最优。这就是Epsilon纳什均衡的来源这里的ε不是一个静态常数而是由估计协方差投影到目标函数变化量上的动态结果。数学表达上如果参数估计的不确定性为δ那么策略和目标函数之间满足的关系可以表达为|J_i(u_i, u_-i) - J_i(u_i^*, u_-i)| ≤ ε(δ)其中ε随δ增大而单调递增。换句话说你不知道得越多你离严格纳什均衡就越远你只能接受一个更大的ε。这个性质其实给工程实现留了后门不需要盲目追求参数估计的极致精度只需要把ε压到任务可接受的范围内。比如末端交会精度要求是10米那么ε对应的目标函数偏差只要不超过10米这个策略就是可用的。我实测下来用EKF估计后的ε大约比完全不估计小了一个数量级这就是滤波器的价值所在。3.3 自适应博弈让策略跟随估计动态调整自适应体现在哪不是简单地在每步用新的EKF估计重新解一遍博弈而是引入策略平滑和置信度加权。具体做法是定义当前参数的估计置信度c trace(P_param)^-1/2然后让当前策略为前一步策略与新计算策略的加权平均。权重分配我用的是α 0.7 * c / (c c0)其中c0是归一化常数。当参数估计不稳时c值小策略更新幅度被压缩避免在博弈过程中“急转弯”当估计逐渐收敛、c值变大时策略调整更积极可以充分利用新信息。这个自适应机制本质上是给策略迭代加了一个阻尼项。4. Matlab代码实现模块划分与核心代码解析4.1 工程目录与模块划分把整个仿真分成7个模块每个模块一个脚本或函数文件。initParams.m负责所有参数的初始化包括物理常数、轨道参数、协方差初值dynamics.m实现C-W方程的单步递推ekfEstimator.m封装EKF递推全过程gameSolver.m实现固定参数下的策略迭代求解adaptiveScheduler.m实现置信度加权和策略平滑mainSim.m是主循环plotResults.m负责绘图和指标统计。这种模块划分的好处是每个文件职责单一调试时可以单独测试某个模块比如把gameSolver单独跑一遍看策略迭代是否收敛、迭代步数是否异常而不需要每次都跑完整的仿真。4.2 主循环的伪代码与关键细节主循环的逻辑非常简洁for k 1:N_total真实状态按动力学方程推进模拟双方真实运动计算量测值叠加高斯噪声供EKF使用EKF预测、更新输出状态估计与参数估计基于最新估计值调用gameSolver解得当前步最优策略经adaptiveScheduler平滑后得到实际控制量作用于真实状态记录新息、估计误差、ε值等诊断数据end看似短短七行每一行都有不可忽视的细节。比如真实状态推进时双方的控制量用的是上一步平滑后的策略而不是当前步刚解出的策略——这模拟了执行机构延迟和策略更新的离散特性。忽略这一点仿真结果会过于乐观现实中执行器不可能瞬时响应。4.3 代码实现中性能问题的规避策略迭代求解每步都在进行计算开销不可忽视。末端时长10秒、步长0.1秒总共100步每步求解一个6维控制序列优化若每步规划10步控制那决策变量就是60维——如果用fmincon直接干单步耗时可能几百毫秒整个仿真跑下来要几十秒甚至更久。我的实测优化方案是置信域反射法配解析梯度。把动力学递推写成矩阵形式目标函数的梯度可以通过链式法则解析求得避免finite difference带来的额外开销。单步求解时间从约300ms降到约40ms整个仿真可以轻松跑完。如果还想更快可以把规划时域从10步降到5步精度损失在Epsilon阈值允许范围内。5. 仿真结果与性能评估EKF不是万能的但够用5.1 参数估计的收敛性分析关注两个参数逃逸方推力上限和量测噪声系数。在仿真中设真实推力上限为12 NEKF初值给定为8 N观察估计曲线。前10步估计值快速上升20步左右越过真实值达到12.5 N之后在真实值附近震荡30步后稳定在12 ± 0.3 N范围内。噪声系数q_e的收敛速度稍慢要到第50步才基本稳定。原因是推力上限直接通过动力学方程影响位置量测可观测性强而噪声系数主要通过协方差传播间接影响量测预测可观测性弱得多。这部分差异是EKF内在结构的限制单纯调大Q2能加快收敛但会增大稳态波动只能折中。5.2 终端精度对比不估计 vs 估计我做了三组对照完全信息理想上界、不完全信息EKF参数估计本文方法、不完全信息固定参数猜测对照组。末端交会距离的结果如表所示配置方案末端相对距离m燃料消耗Δv, m/s平均ε值完全信息3.245.80EKF参数估计6.848.30.8固定参数猜测15.752.63.4这个结果很直观EKF参数估计把末端距离从15.7米压到6.8米收益巨大距离完全信息水平还有3.6米的差距这恰好对应ε0.8时的裕度。如果末端脱靶量要求是10米EKF方案达标固定参数方案不达标。这就是为什么做工程不能拍脑袋猜参数——误差会被博弈过程放大而不是平均掉。5.3 算法稳定性与策略平滑效果最让我担心的场景是估计初始误差极大、且双方初始距离很近。这种情况下EKF给的错误参数会让策略迭代得出一个不合理的机动方案如果不加平滑追逐方可能做出一个急转机动反而增加脱靶量。加了自适应平滑之后前5步策略变化幅度被限制在每步最大2 m/s^2以内等估计逐步修正后再放开约束。仿真结果证明这个机制非常重要——策略平滑让整体轨迹更加光滑没有出现振荡也避免了“因为猜错而乱动、因为乱动而更猜错”的恶性循环。6. 常见问题与调参实战我踩过的坑都在这里6.1 EKF发散问题不在滤波器在模型失配我调试过程中遇到过三次EKF发散前两次以为是Q矩阵设得太小把Q放大后情况更糟。后来回查代码发现是动力学函数里C-W方程的线性化矩阵写错了一个符号——相对运动方程中径向方向的重力梯度项系数是3n^2而非n^2这是经典易错点。修好之后即使Q设得很保守也能稳定收敛。经验是发散时首先检查状态转移矩阵的雅可比推导是否正确而不是盲目调噪。EKF对模型误差的敏感性远高于对噪声参数的敏感性。6.2 策略迭代不收敛初值和步进长度是主因策略迭代的收敛性依赖于终端约束的可行性。如果初始猜测策略导致终端距离为负——这在相对距离很小且速度同向时可能出现——fmincon会陷入局部极值迭代曲线出现“山脊”状震荡。我的处理方法有两步。第一每次调用gameSolver时将上一时刻的最优策略作为当前时刻的初值这样利用了热启动思路大幅提高收敛概率。第二施加控制量限幅——单步控制变化幅值上限设为最大推力的20%防止迭代过程出现不合物理的跨步。6.3 参数估计“假收敛”协方差陷阱最后分享一个相对隐蔽的问题。EKF的状态协方差P会随着观测信息积累而不断缩小但这不意味着参数估计一定准确。如果可观测性本来就弱协方差缩小只是滤波器“自信”的表现而真实误差可能仍然很大。我在仿真输出中用了一个辅助指标参数估计误差的滑动平均MAE。规定只有当MAE持续20步低于设定阈值时才认为参数估计真正可用了。这个指标比只看P矩阵更可靠适合在论文图表或工程验收中作为正式的估计质量判据。在实际操作中我还习惯把EKF估计值和“真实值”直接对比并输出归一化直方图这样能直观看出估计分布是否有偏。如果分布中心偏移超过一倍标准差我就要怀疑可观测性不足需要调整量测配置或轨道机动设计。注意追逃博弈的EKF估计和标准卡尔曼跟踪有本质区别——这里的量测数据在未来会受到自己策略影响闭环耦合迫使你不能离线预标定必须在线实时估算。这也是为什么EKF虽然老但在这个场景里仍然不可替代。整套方案跑下来我个人最大的体会是不完全信息博弈的关键不是信息本身而是你如何量化不确定性并让它进入策略决策的权重方程。EKF在这里不是花哨的“黑魔法”它像是一个诚实的情报员——告诉你我知道什么、我不知道什么、以及我对当前猜测有多大信心。把这个不确定性老老实实交给博弈层ε纳什均衡策略才有扎实的落脚点。如果有人想在这个方向上继续扩展我个人觉得可以从两个维度出发一个是在线估计模型扩展到逃逸方控制策略的完整参数族而不只是推力上限另一个是把单参数EKF换成无迹卡尔曼滤波处理更复杂的分布形态。但作为稳定可靠的第一步这个EKF自适应博弈组合方案已经足够实用了。