多无人机编队控制仿真为什么发散?先核对相对运动公式
摘要:本文针对多无人机编队控制仿真发散问题,从相对运动公式入手进行核查。通过公式对照、MATLAB 实现和阶段仿真,发现论文不同位置的相对运动表达存在符号差异,导致误差变化方向相反;速度模长满足不等于速度分量满足;在相同输入下原式基线出现严重指令限幅和位置误差发散。文中给出三机对照仿真结果,并强调误差与加速度需按仿真边界解释,不能据此判断真实飞机性能或作者原意。
编队控制仿真出现大误差时,常见做法是调整增益、缩短步长或增加限幅。但如果相对位置的定义和导数符号不一致,控制器可能把误差越推越大。复现这篇多无人机编队论文时,我先从相对运动关系入手,再将论文原式放入三机仿真,检查公式、代码和轨迹是否对应。
目前核对到的结果是:论文不同位置的相对运动表达存在符号差异;在补充的仿真模型中,原式基线出现严重指令限幅和位置误差发散。下面给出公式对照、对应 MATLAB 实现和阶段结果。这里的数值用于复现核查,不是论文试飞结果,也不据此判断作者原意。
01|相对位置的正方向会改变误差变化方向
下面的误差推导限定在长机北向直飞、僚机与长机航向相同、目标纵向间距固定且横向误差为零的情形。令纵向相对位置表示长机北向位置减去僚机北向位置;长机、僚机的北向速度分别记为 V_L、V_i,纵向误差是目标相对位置减去实际相对位置。论文式(1)–(3)和式(4)对同一纵向相对位置给出了相反的导数表达:
取长机速度 10 m/s、僚机速度 8 m/s。按前一组表达,相对位置变化率为 10−8=+2 m/s;按式(4)则为 8−10=−2 m/s。代入论文的纵向误差反馈项后,两种写法分别得到正、负的误差变化率:在这个简化直飞条件下,一种让误差增大,另一种让误差减小。
这会影响控制方向,不只是符号记法不同。检查时需要把相对位置定义、导数、误差定义和控制律放在同一坐标约定下逐项代入。若只确认控制律中含有误差反馈,而没有检查误差导数的符号,仿真发散就可能被误当作增益不合适。
02|速度模长满足,不代表速度分量满足
论文式(9)要求僚机速度在相对坐标方向上的两个分量分别等于 A、B;式(10)用 A、B 计算速度大小,式(11)给出航向角速率。这里 a 是长机与僚机的航向差,A、B 是推导要求的速度分量。下图列出分量条件、速度模长和使两项同时成立的方向条件:
因此,得到一个有限的速度大小还不足以说明式(9)成立;还要核对当前航向以及式(11)的闭环响应是否让速度方向满足该条件。模块0用固定参数代入式(9)–(12)核查了这一点,结果显示式(10)的速度模长本身没有保证两个分量条件。
论文式(10)(11)在 MATLAB 中逐项转写为paper_control.m第6–10行。下面是对应源码,error是目标相对位置减实际相对位置,hypot(A,B)对应 A、B 的合成模长:
error=target(:)-d(:);A=targetRate(1)+leaderSpeed-leaderTurnRate*d(2)+gains(1)*error(1);B=-targetRate(2)+leaderTurnRate*d(1)-gains(2)*error(2);command=[hypot(A,B);leaderTurnRate+gains(3)*headingError...+gains(2)*error(2)^2/(abs(headingError)+1)];代码保留了原式中的 A、B 和航向角速率表达,没有在这里替换控制方法。相对坐标输入由paper_diagnostic_control.m生成;该原式诊断场景限定长机北向直飞,因此不将这段实现外推到转弯长机。
03|相同输入下,原式基线发生发散
论文图10给出了转弯和风扰时段,但未公开精确复算所需的全部初始状态、控制增益、飞机与内环模型、采样设置和限幅参数。当前三机对照使用 350 s 仿真,并补充了半圆转弯、东向 4 m/s 风扰及点质一阶内环等设置;因此是图10近似场景,不是图10精确复现。
下表的三个版本使用相同输入。全过程 RMSE 和末端误差均对两架僚机分别计算后取平均;限幅比例按僚机指令统计。
| 版本 | 僚机平均 RMSE | 平均末端误差 | 指令限幅比例均值 |
|---|---|---|---|
| 论文原式 | 5,258.03 m | 4,123.51 m | 99.49% |
| 修正相对运动学、保留式(11)的诊断对照 | 0.54 m | 0.016 m | 0% |
| 一致性诊断候选 | 0.21 m | 0.075 m | 0% |
仿真在每个时间步先计算原始控制指令,再按补充的执行器限值生成实际施加指令。simulate_three_uav.m第34行对应限幅:
command=min(max(raw,lower),upper);原式基线限幅前的速度指令峰值约 736 m/s,转率指令峰值约 13,015 rad/s。这些是控制器的原始计算指令,不是飞机实际速度或实际转率;它们与持续限幅及位置误差增大同时出现,说明该基线在当前补充模型和输入下不适合直接作飞行性能解释。两个诊断版本的误差较小,只能说明对照中的公式处理显著影响当前仿真,不能证明候选改法就是作者本意。
04|误差和加速度都要按仿真边界解释
模块3继续使用论文式(10)(11)原式,对三、四、五机拓扑进行 20 s 北向直线保持。状态机事件用于检查流程逻辑,不是实际飞行轨迹。部分僚机末端位置误差达到约 204.75 m,单机指令限幅比例最高约 34.83%,所以这组结果没有通过队形保持性能验证。
过载核查采用空速、航向、航迹角和实际转率计算运动加速度,并除以重力加速度作量纲比较。原式图10近似基线的峰值约为 1.62g 等效值;它不是结构载荷或传感器实测过载。风速从零跳变到 4 m/s 会造成地速变化,对位置二次差分形成额外峰值,因此地面轨迹加速度被单独列出,没有当作机体过载。
论文没有公开试验无人机的具体型号和载荷限制,当前模型也没有质量、气动系数及结构载荷数据,因而不能据此判断真实飞机是否超载。能确认的是当前模型中的指令限幅、误差和运动加速度;结构安全结论超出这些数据支持的范围。
这一阶段没有把诊断候选写回论文原式,也没有声称完成论文全部仿真或试飞复现。结果把需要复核的符号链、代码实现和仿真假设分开呈现;原文各公式之间的差异仍需结合论文定义和作者说明进一步判断。
资料来源:赵创新等,《多无人机协同编队控制及试飞验证》,2024,DOI:10.7527/S1000-6893.2024.30249。
仿真中的转弯、风场、模型和限幅包含补充设置,数值不是论文试飞数据。