尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

从几何交汇到UKF滤波:纯方位无源定位在数学建模中的实践

从几何交汇到UKF滤波:纯方位无源定位在数学建模中的实践 1. 项目概述一次高强度竞赛的深度复盘每年九月的那个周末对于全国数十万理工科大学生而言都是一场没有硝烟的“头脑风暴”。高教社杯全国大学生数学建模竞赛简称国赛无疑是国内规模最大、影响力最广的学科竞赛之一。2022年的B题以其独特的背景和复杂的多目标决策要求给参赛者们留下了深刻的印象。题目聚焦于无人机遂行编队飞行中的纯方位无源定位问题这听起来像是一个纯粹的军事或前沿科技课题但实际上它完美地融合了几何、优化、算法和实际工程约束是一道检验学生综合建模能力的经典赛题。简单来说这道题要求我们解决这样一个核心问题假设你在一个区域内部署了若干架位置已知的无人机称为FY系列它们作为“信标”或“观察站”。同时另有一架位置未知的无人机称为R系列在区域内飞行它自身不主动发射信号但FY系列无人机可以持续测量到R的相对方位角即方向没有距离信息。我们的任务就是仅凭这些随时间变化的方位角观测数据精确地估计出R无人机的实时位置和速度。这就像在一场捉迷藏游戏中你只能听到声音传来的方向却不知道声音离你有多远需要凭借连续听到的声音方向变化来推断出那个躲藏者的移动轨迹。这道题的价值远不止于竞赛。它本质上是一个非线性滤波与状态估计问题在目标跟踪、导航定位、无线传感器网络等领域有着广泛的应用。对于参赛学生而言挑战在于如何将这一实际问题抽象成数学模型选择合适的算法进行求解并充分考虑无人机飞行中的物理约束如最大转弯角、速度限制最终给出一个稳定、精确且计算高效的解决方案。接下来我将结合我们团队的解题过程深入拆解这道题的思路、方法、实现细节以及那些“踩过坑”才获得的经验。2. 核心问题拆解与建模思路面对一个复杂问题最有效的策略就是“分而治之”。2022年B题可以清晰地划分为几个子问题每个子问题对应着建模的不同阶段。2.1 问题一静态单点定位的理论可行性第一问通常作为“开胃菜”旨在验证模型的基本可行性。题目给出了一些FY无人机的位置和它们对同一架R无人机在同一时刻的方位角测量值要求判断仅凭这些信息能否唯一确定R的位置并给出可解的条件。核心思路这是一个纯粹的几何交汇定位问题。每个FY无人机及其测量的方位角定义了一条从该FY点出发的射线。R无人机必然位于这条射线上。多条这样的射线如果相交于一点那么该交点就是R的唯一位置。因此问题的关键转化为在二维平面上需要至少几条不平行且不共点的射线才能唯一确定一个交点答案与建模显然两条不平行且不共点的射线可以确定一个唯一交点。所以理论上至少需要2个FY无人机提供2条方位射线。但这里有一个至关重要的细节——测量误差。在实际中方位角测量必然存在误差这使得射线不会精确交于一点而是形成一个小的误差区域。因此我们需要建立包含误差的定位模型。我们采用了最小二乘法来建模设R的真实位置为 $(x, y)$第 $i$ 个FY无人机的位置为 $(x_i, y_i)$测量方位角为 $\theta_i$含有误差。那么理论上方位角应满足 $\tan(\theta_i) (y - y_i) / (x - x_i)$。我们可以构造关于 $(x, y)$ 的非线性最小二乘优化问题目标是最小化所有测量方程的计算值与实测值之差的平方和。通过求解这个优化问题可以得到R位置的最优估计。这就从“能否”的定性判断过渡到了“如何更准”的定量计算。注意这里必须考虑反正切函数的周期性和象限问题。直接使用 $\arctan$ 函数会带来 $180^\circ$ 的模糊性。更稳健的做法是使用atan2(y - y_i, x - x_i)函数它能返回 $(-\pi, \pi]$ 范围内的完整方位角自动处理象限。2.2 问题二与三动态轨迹追踪与滤波算法第二问和第三问是题目的主体和难点要求处理随时间连续的方位角观测序列估计R无人机的完整运动轨迹位置和速度。核心思路转变问题从静态估计转变为动态状态估计。我们需要建立一个描述无人机运动的状态空间模型并利用随时间到来的观测数据持续更新对目标状态的估计。这引出了两类核心算法批处理优化和序列化滤波。批处理优化思路我们可以将一段时间内的所有观测数据比如100个时刻的方位角放在一起假设R在这段时间内做匀速直线运动初始假设那么其轨迹仅由初始位置 $(x_0, y_0)$ 和速度 $(v_x, v_y)$ 四个参数决定。对于每个时刻我们都能根据这4个参数计算出R的预测位置进而计算出预测方位角。通过构建一个覆盖所有时刻的巨型最小二乘问题一次性优化这4个参数使得预测方位角与实测方位角的总体误差最小。这种方法概念直观但计算量较大且对初始猜测值敏感。序列化滤波思路我们采用的主流方法这是更符合实时定位场景的思路。我们将R无人机的状态定义为 $\mathbf{X}k [x_k, y_k, v{x,k}, v_{y,k}]^T$即k时刻的位置和速度。建模包括两个部分状态方程运动模型描述状态如何随时间演化。最简单的是匀速CV模型$\mathbf{X}_{k1} \mathbf{F} \mathbf{X}_k \mathbf{w}_k$。其中 $\mathbf{F}$ 是状态转移矩阵$\mathbf{w}_k$ 是过程噪声代表模型误差如突然的加减速。观测方程描述状态如何产生观测值。这里观测值就是方位角 $z_k \theta_k \text{atan2}(y_k - y_{i,k}, x_k - x_{i,k}) \mathbf{v}_k$。其中 $\mathbf{v}_k$ 是观测噪声。有了这两个方程就可以应用经典的卡尔曼滤波KF或其非线性变种。由于观测方程是方位角与状态呈非线性关系标准KF要求线性不再适用。因此我们必须使用扩展卡尔曼滤波EKF或无迹卡尔曼滤波UKF。EKF其核心是对非线性观测方程在当前状态估计处进行一阶泰勒展开将其线性化然后套用标准KF的更新公式。我们需要计算观测方程的雅可比矩阵即导数矩阵。对于方位角观测雅可比矩阵的计算需要一点耐心但公式是明确的。UKF采用一种不同的思路它不进行线性化而是通过精心挑选一组样本点Sigma点来直接传播状态的均值和协方差理论上对于非线性系统有更好的逼近效果尤其适用于像方位角这种高度非线性的观测模型。我们的选择我们最终选择了UKF。主要考虑是在纯方位定位中当目标位于FY无人机侧方或后方时方位角对位置的变化非常敏感非线性极强。EKF的一阶线性近似可能会引入较大误差甚至导致滤波发散。UKF虽然计算量稍大但在这种场景下通常表现更稳健。实际编程中我们参考了经典的UKF算法步骤自己实现了Sigma点生成、状态预测、观测预测和状态更新这一套流程。2.3 问题四引入机动约束与更复杂的模型第四问在第三问的基础上增加了现实约束R无人机有最大飞行速度和最大转弯角度的限制。这要求我们的运动模型不能再是简单的匀速模型。核心思路升级我们需要一个能描述机动转弯的运动模型。一个常见的选择是恒定转弯率和速度模型CTRV。在这个模型中状态量变为 $\mathbf{X} [x, y, v, \psi, \dot{\psi}]^T$其中 $v$ 是速度标量$\psi$ 是航向角$\dot{\psi}$ 是转弯率角速度。状态方程变得非线性描述了物体以恒定速度和恒定转弯率做圆周运动的过程。挑战与应对模型切换R无人机的运动可能包括直线段和转弯段。我们需要设计一个机制来判断当前应该使用CV模型还是CTRV模型。一种实用的方法是使用交互式多模型IMM滤波。IMM同时运行多个滤波器例如一个CV滤波器和一个CTRV滤波器根据模型与当前数据的匹配程度模型概率进行加权融合最终输出一个综合的估计结果。这能很好地适应目标运动模式的变化。约束处理速度和转弯角的限制需要在滤波过程中体现。一种方法是在状态预测后对违反约束的状态估计进行“裁剪”或投影使其回到可行域内。更优雅的方法是将约束作为优化问题的一部分融入到UKF的更新步骤中但这会大大增加计算复杂度。在竞赛时间限制下我们采用了相对简单的后处理裁剪方法如果估计出的速度超过最大值则将其缩放至最大值同时按比例调整位置预测对于转弯角则通过限制相邻时刻航向角的变化量来实现。3. 算法实现与关键细节思路清晰后实现就成了决定成败的关键。我们使用MATLAB进行编程因其强大的矩阵运算和可视化能力非常适合数学建模。3.1 数据预处理与坐标系选择原始数据通常是经纬度坐标。第一步永远是坐标转换。我们将所有FY无人机和R无人机的经纬度通过地图投影如UTM投影转换为平面直角坐标单位米。这能简化距离和角度的计算避免球面几何的复杂性。方位角计算与归一化观测数据给出的方位角可能是以正北为0度顺时针增加。我们需要将其统一转换到数学标准坐标系东为x轴正方向北为y轴正方向逆时针角度为正。使用atan2(dy, dx)函数计算理论方位角时要确保与观测数据的定义一致。所有角度操作都应在 $(-\pi, \pi]$ 或 $(0, 2\pi]$ 区间内进行避免跨 $360^\circ$ 的跳变。我们在计算角度差时都使用了angdiff函数或自行编写的角度差处理函数来保证连续性。3.2 UKF滤波器的具体实现步骤以下是我们在MATLAB中实现UKF的核心步骤简述初始化设定初始状态估计 $\mathbf{\hat{x}}_0$ 和初始误差协方差矩阵 $\mathbf{P}_0$。初始位置可以通过第一问的方法粗略估计初始速度可以设为零或一个较小值。$\mathbf{P}_0$ 反映了我们对初始估计的不确定度通常设为较大的对角阵。生成Sigma点对于当前时刻的状态估计 $\mathbf{\hat{x}}{k-1}$ 和协方差 $\mathbf{P}{k-1}$根据UKF的规则如缩放参数 $\alpha$, $\beta$, $\kappa$计算一组 $2n1$ 个Sigma点$n$为状态维数。这些点代表了状态分布的均值和协方差。状态预测时间更新将每个Sigma点通过状态方程CV或CTRV模型进行传播得到预测的Sigma点集。对预测的Sigma点集进行加权平均得到预测状态 $\mathbf{\hat{x}}^-_k$。计算预测状态的协方差 $\mathbf{P}^-_k$并加上过程噪声协方差 $\mathbf{Q}$。观测预测将预测的Sigma点通过观测方程方位角计算函数进行传播得到预测的观测Sigma点集。对预测的观测Sigma点集进行加权平均得到预测观测 $\mathbf{\hat{z}}^-_k$。计算预测观测的协方差 $\mathbf{S}_k$ 以及状态与观测的互协方差 $\mathbf{T}_k$。状态更新测量更新计算卡尔曼增益$\mathbf{K}_k \mathbf{T}_k \mathbf{S}_k^{-1}$。当实际观测值 $z_k$ 到来时计算新息观测残差$\mathbf{y}_k z_k - \mathbf{\hat{z}}^-_k$。这里必须对角度新息进行归一化处理确保其在 $(-\pi, \pi]$ 之间。更新状态估计$\mathbf{\hat{x}}_k \mathbf{\hat{x}}^-_k \mathbf{K}_k \mathbf{y}_k$。更新误差协方差$\mathbf{P}_k \mathbf{P}^-_k - \mathbf{K}_k \mathbf{S}_k \mathbf{K}_k^T$。3.3 参数调优噪声协方差矩阵的艺术UKF的性能极度依赖于两个关键的噪声协方差矩阵过程噪声协方差 $\mathbf{Q}$ 和观测噪声协方差 $\mathbf{R}$。过程噪声 $\mathbf{Q}$它代表了我们对运动模型的不信任程度。如果 $\mathbf{Q}$ 设得太大滤波器会过于依赖观测导致估计轨迹噪声大、抖动剧烈如果设得太小滤波器会过于相信模型对目标的机动反应迟钝甚至跟不上真实轨迹。我们通过分析无人机可能的加速度范围来设置 $\mathbf{Q}$。例如假设无人机最大加速度为 $a_{max}$采样间隔为 $\Delta T$那么速度分量的过程噪声方差可粗略设为 $(0.5 * a_{max} * \Delta T^2)^2$ 量级。这是一个需要反复调试的参数。观测噪声 $\mathbf{R}$它代表了方位角测量仪的精度。题目通常会暗示或给出测量误差的标准差 $\sigma_\theta$。那么 $\mathbf{R}$ 就是 $\sigma_\theta^2$。这个值相对固定但也可以微调。如果观测噪声设得比实际小滤波器会过于信任单次观测在观测出现野值时容易受影响。我们的调试策略是先使用一部分已知轨迹的数据如果有的话或者用仿真数据固定 $\mathbf{R}$调整 $\mathbf{Q}$观察滤波轨迹的平滑性和对真实轨迹的跟踪延迟找到一个平衡点。4. 仿真验证与结果分析在提交最终答案前进行充分的仿真验证是必不可少的。我们构建了一个仿真环境生成真实轨迹我们设计了一条包含直线、匀速转弯和S型机动的R无人机轨迹使其符合题目中的速度、转弯角约束。生成观测数据根据FY无人机的真实位置和R的真实轨迹计算出每一时刻的理论方位角然后人为加上高斯白噪声标准差设为题目假设值模拟出带噪声的观测数据。运行滤波器将生成的观测数据输入我们编写的UKF滤波器得到估计轨迹。评估指标我们计算了位置均方根误差RMSE和速度估计误差作为主要指标。同时我们绘制了真实轨迹、估计轨迹和观测射线的对比图直观地查看滤波效果。结果分析在直线运动段CV模型和CTRV模型的UKF都能很好地跟踪RMSE很小。在转弯机动段使用CV模型的UKF会出现明显的跟踪滞后估计轨迹的转弯半径变大误差显著增加。而使用CTRV模型或IMM滤波器的UKF则能更紧密地跟随真实轨迹。观测噪声的大小直接影响滤波精度。当噪声增大时所有滤波器的误差都会变大但UKF相比EKF表现出更好的鲁棒性发散的概率更低。通过调整 $\mathbf{Q}$我们可以在“跟踪敏捷性”和“估计平滑性”之间做出权衡。对于机动性强的目标需要更大的 $\mathbf{Q}$。5. 实战心得与避坑指南回顾整个解题过程有几个关键点决定了最终结果的好坏这些是教科书和算法描述里不会强调的“软经验”。“起点”的重要性UKF等滤波算法对初始状态非常敏感。如果初始位置猜得偏离太远滤波器可能需要很长时间才能收敛甚至永远收敛不到真实轨迹。我们采用的方法是利用前几个时刻的观测用最小二乘法批量估计一个初始位置和速度作为滤波器的初始值。这比随意设定一个零值或中心点要可靠得多。角度处理的“魔鬼细节”整个问题围绕角度展开任何一个环节的角度处理不当都会导致灾难性失败。必须建立一个统一的、连续的角度处理管道所有内部计算使用弧度制。使用atan2计算角度确保象限正确。在计算角度差、新息时一定要用类似angdiff mod(angle1 - angle2 pi, 2*pi) - pi的公式将结果规整到 $(-\pi, \pi]$ 区间。这是滤波器中新息计算最易出错的地方。协方差矩阵的“健康”维护在滤波迭代过程中误差协方差矩阵 $\mathbf{P}$ 必须保持对称正定。由于计算舍入误差有时 $\mathbf{P}$ 会失去对称性或出现负特征值。我们采用了两种保护措施一是在每次更新后对 $\mathbf{P}$ 进行强制对称化P (P P) / 2二是使用平方根UKFSR-UKF的变体它直接传播协方差矩阵的平方根能更好地保证数值稳定性。我们在后期复现时尝试了SR-UKF效果确实更稳。模型与参数的“接地气”选择不要一味追求复杂模型。对于问题二和问题三如果目标运动确实接近匀速CV模型UKF就是最佳组合简单有效。CTRV和IMM是为第四问的机动场景准备的。参数$\mathbf{Q}$, $\mathbf{R}$的设定要有物理依据可以基于无人机的大致性能参数最大加速度、测向精度进行量级估算然后微调。可视化是最高效的调试工具在调试过程中我们编写了实时动画脚本将FY无人机、R的真实轨迹仿真时、滤波估计轨迹、观测射线实时画出来。通过观察动画可以立刻看出滤波器是收敛了、发散了、还是滞后了比直接看误差数字直观一百倍。这能帮你快速定位问题是出在模型、参数还是代码bug上。论文写作中的“算法表述”在最终提交的论文中不能只写“我们使用了UKF”。需要清晰地写出你选择的状态向量 $\mathbf{X}$ 是什么状态方程 $\mathbf{F}$或 $f$ 函数的具体形式观测方程 $h$ 的具体形式以及过程噪声 $\mathbf{w}$ 和观测噪声 $\mathbf{v}$ 的统计假设。给出UKF中关键参数如 $\alpha$, $\beta$的设置值。将算法流程类似3.2节的步骤用公式清晰地表述出来这体现了你对算法的真正理解而不是简单调包。这道2022年的B题就像一座微缩的“系统工程”山峰。它从最基础的几何原理出发途经状态估计的理论核心最终落到受现实约束的算法实现。解决它不仅需要扎实的数学和算法功底更需要将理论灵活应用于实际问题的建模能力、严谨的编程实现能力和系统化的调试分析能力。这个过程远比最终的那个答案更珍贵。
返回列表