
无人机通信这几年被问得最多的一个问题不是速率能拉多高、时延能压多低而是信息在空中走怎么保证只有该收到的人能收到。尤其当通信节点换成无人机——地面站、中继机、编队飞机之间互相传数据链路本身暴露在开放空间里传统加密解决的是“密文被截获也解不开”但怕的是攻击者直接把你的物理信号抄走离线慢慢破。所以就有了从物理层下手做安全的思路也就是这项目的核心运动适应光束控制叠加人工噪声让合法链路始终保持高质量同时让窃听者手里的信号烂到没法用。这套仿真我在Matlab里完整跑通过整体包含发射端、合法接收端、窃听者三方的建模加上光束对准闭环控制和人工噪声注入模块最终输出的是保密率曲线、瞄准误差曲线这类能直接写进论文的结果图。如果你正在做无人机通信、自由空间光通信、物理层安全或者波束赋形相关的课题这个项目能帮你把“光束控制”和“人工噪声”两条技术线串起来也省掉很多从零搭框架的时间。1. 这套系统到底在解决什么问题1.1 无人机通信的“秘密传信”困境无人机通信的物理层安全和地面通信有个显著的差异节点在高空链路以视距传播为主信道开放程度更高。地面上还能靠建筑物遮挡、多径衰落天然形成随机性空中链路干净得几乎没有任何掩护。射频信号是全方位辐射的波束再窄也有旁瓣窃听者不需要飞得很近只要待在覆盖范围内用高增益天线对准你的方向就能截获信号。自由空间光通信会好一些激光光束非常窄发散角通常在毫弧度量级旁瓣几乎可以忽略但代价是对准极难——无人机本身就是个六自由度的运动平台姿态稍微一偏光束就不知道打到哪里去了。这项目把这两个问题放在一起解决用运动适应光束控制保证合法链路的稳定性同时利用人工噪声技术主动压制窃听信道。组合起来的效果是合法接收端收到的信号质量始终在线窃听者即使截获到了信号片段信噪比也被压到无法解调的程度。1.2 为什么是“光束控制人工噪声”的组合拳我自己刚接触这个方向的时候也想过一个问题光束本来就够窄了是不是天然就反窃听答案是只对了一半。窄光束确实让窃听者很难从旁路截获但存在两个漏洞。第一当窃听者位于合法接收端附近甚至就搭载在同一架伴飞无人机上时旁瓣信号或者散射信号仍然可能被接收第二窄光束带来的安全优势完全建立在“对准”这个前提上一旦跟踪失效、光束抖动加剧链路质量会迅速恶化发射端为了维持通信会下意识提高功率反而给窃听者制造了机会。人工噪声的思路就是在发射信号里掺入人为设计的干扰。它不是把信号淹没而是把干扰功率“定向”打到窃听者那一侧对合法接收端几乎无感。这个操作在射频多天线系统里已经非常成熟用零空间投影就能实现。但在运动平台上它的前提是信道信息相对准确而这恰恰需要光束控制先把链路稳住。所以这两者是协作关系光束控制管合法链路的质量下限人工噪声管窃听链路的质量上限。一升一降保密率自然就出来了。2. 运动适应光束控制让激光始终咬住目标2.1 PAT系统三步走捕获、瞄准、跟踪光束控制的工程实现业内通常叫PAT三个字母分别对应捕获、瞄准、跟踪。捕获是粗对准阶段靠GPS坐标、惯性导航系统或者无线电测向把发射端的光轴大致转到接收端方向这个阶段精度要求不高能到百微弧度量级就算成功。瞄准是精对准阶段这时候要开启光学探测链路用接收端的信标光或者反射光确定精确角度偏差把光束拉进跟踪视场。跟踪是闭环阶段持续探测角误差并通过快速转向镜或万向支架对光束方向进行实时修正。在Matlab仿真里这三个阶段不需要全部逐一实现。捕获阶段可以等效成一个初始角度偏移量瞄准阶段可以通过设置一个“进入跟踪视场”的阈值来判断重点放在跟踪阶段的闭环建模上。我实现的闭环结构是接收端位置动态变化导致的实际角误差 → 四象限探测器等效输出 → 控制器计算修正量 → 快速转向镜角度响应 → 新的误差。整个环路跑起来之后能看到瞄准误差从初始的大角度迅速收敛到微弧度级再跟随无人机的机动缓慢波动。2.2 核心误差模型与控制器设计误差模型是整个跟踪仿真的地基。这里的关键是把接收端相对发射端的位移换算成光束指向的角度误差。我的做法是建立一条从发射端指向接收端的单位向量再建立发射端光轴的当前指向单位向量两个向量之间的夹角就是跟踪误差。简化处理可以用叉积和点积来算% 接收端相对发射端的位置向量 relPos posRx - posTx; % 归一化得到目标方向 targetDir relPos / norm(relPos); % 当前光轴方向 beamDir beamDir / norm(beamDir); % 角度误差弧度 angleErr atan2(norm(cross(targetDir, beamDir)), dot(targetDir, beamDir));计算出来的角度误差会作为反馈量送给控制器。控制器我选了PID加前馈的结构前馈项来自无人机轨迹的已知运动模型能提前补偿部分大范围机动PID负责处理残差和扰动。纯PID在慢变误差下没问题但无人机机动幅度一大就容易滞后所以我加了一阶低通滤波器对误差信号做平滑避免高频抖动直接驱动镜面。关于PID参数我踩过一次坑Kp调得太大系统出现持续振荡光束在目标附近来回甩误差反而比不加控制还大。Kp太小又收敛太慢。后来我把仿真停下来先用传递函数做了近似分析估算出开环截止频率再按经典整定方法得到了一组合用参数。仿真里如果发现误差曲线是等幅振荡的优先检查Kp是否过大、微分项是否被噪声污染。2.3 运动中不能忽略的三个细节第一个是执行器饱和。快速转向镜不是无限转角的通常只有正负几毫弧度的工作范围。如果控制量超出这个范围Mirror根本执行不了仿真里不设限的话会出现“控制量很大但结果还很漂亮”的假象。我在代码里给镜面转角加了饱和限幅这个细节能让仿真结果真实很多。第二个是时延。从探测器采样到控制器输出再到镜面动作每一拍都有时间开销。我之前为了省事把时延设成0结果整个闭环就变成了一个纯比例反馈稳定裕度虚高。实际项目中这个时延通常在毫秒量级加上之后控制带宽就得往低里调跟踪性能会明显下降。仿真里用一个单位延迟模块就能模拟。第三个是探测器噪声。四象限探测器在高频下噪声很明显这会直接污染误差信号。我加了高斯白噪声之后PID的微分项开始剧烈抖动解决办法是在微分路径上做滤波或者干脆用不完全微分PID——也就是给微分项串联一个低通滤波器。效果很直接镜面控制量立刻平滑下来。3. 人工噪声反窃听在物理层就给窃听者断粮3.1 窃听信道模型与保密率定义人工噪声的理论基础是Wyner提出的窃听信道模型。场景里有三方发射端是合法发送者接收端是合法接收者第三者是窃听者。发射端希望把消息可靠地传给接收端同时尽可能少地泄露给窃听者。衡量安全性最常用的指标是保密率定义是合法信道容量减去窃听信道容量的正值部分。合法信道质量越高、窃听信道越差保密率越大系统就越安全。在无人机场景中合法信道和窃听信道的主要差异来自两方面。一方面合法信道经历了精确的波束对准接收信号功率高且稳定窃听者可能处于波束边缘或者旁瓣区本身接收功率就低。另一方面人工噪声的注入会进一步拉开两者差距。噪声被设计成对合法接收端无影响或影响极小但对窃听者来说它会被当作真实噪声叠加在截获信号上使窃听信噪比急剧下降。这里有个容易混淆的点人工噪声不是说发射合法信号的同时发射大功率白噪声那样会同时干扰所有接收者。正确做法是利用多天线的空间自由度把噪声投射到合法信道的零空间里让接收端所在方向上几乎没有噪声功率而其他方向上保有完整的干扰强度。3.2 零空间投影法的Matlab实现思路假设发射端有Nt根天线合法接收端和窃听者各有一根天线。合法信道是一个1×Nt的复向量hB窃听信道是1×Nt的复向量hE。零空间投影法分三步走。% 已知合法信道向量 hB1 x Nt % 求 hB 的零空间基Nt x (Nt-1) nullBasis null(hB); % 生成人工噪声Nt-1 个独立高斯随机变量 noiseSymbols randn(Nt - 1, numSymbols) 1i*randn(Nt - 1, numSymbols); % 映射到零空间得到实际发射的干扰向量 noiseVec nullBasis * noiseSymbols;关键在第2步。通过null函数算出来的零空间基任意一列都与hB正交所以噪声向量经过合法信道后输出为零。合法接收端完全感知不到干扰的存在。而窃听者的信道hE不在这个零空间里所以人工噪声对窃听者是实实在在的干扰。信息信号的发射很简单就是沿合法信道方向做波束成形把全部功率集中在接收端方向。发射端总功率P在信息信号和人工噪声之间的分配比例直接决定系统在可靠性和安全性之间的权衡。分配给信息的功率大合法速率高但噪声功率小窃听信道衰减有限分配给噪声的功率大窃听端被压得很惨但合法链路速率也会下降。这个权衡背后的数学逻辑是合法接收端不受噪声影响所以合法信噪比只取决于信息功率而窃听者同时受到信息信号和人工噪声的作用窃听信噪比中噪声功率占的分母会变大。3.3 功率分配因子怎么取我在仿真中把总功率拆成两部分信息功率alpha乘以P噪声功率1-alpha乘以P。alpha取1的时候相当于没有人工噪声系统只靠波束成形alpha取0的时候系统全部发噪声完全无法通信。在两组信道条件都固定的情况下保密率相对alpha是一条单峰曲线存在一个最优值。求这个最优值有个实用小技巧在Matlab里用一个循环把alpha从0.05扫到0.95画出保密率曲线峰值对应的alpha就是当前信道下的准最优分配。我从实验结果看合法信道质量明显好于窃听信道时最优alpha通常在0.6到0.8之间当窃听信道和合法信道质量接近时需要把更多功率让给噪声alpha会降到0.5以下。这跟直观判断一致信道优势越不明显越需要人工噪声来人为制造差距。这个单峰特性的原因也不难理解。alpha太小信息功率严重不足合法接收端解调都成问题即使窃听者也什么都收不到保密率依然很低alpha太大人工噪声几乎消失窃听者可以轻松解调保密率也低。中间一定存在一个平衡点让合法链路勉强够用、窃听链路完全瘫痪。4. Matlab仿真的完整实操路线4.1 仿真框架与文件结构这套项目我建议按模块拆分文件方便调试和复用。整个工程结构大概是这样的main.m主脚本设置全局参数调用各个子模块汇总结果initParams.m参数初始化包括无人机运动参数、光束控制参数、信道参数genTrajectory.m生成发射端和接收端的运动轨迹beamControl.m光束对准闭环控制核心输出每个时刻的残余瞄准误差artificialNoise.m生成人工噪声并计算合法端和窃听端的接收信噪比calcSecrecyRate.m根据信噪比计算保密率plotResults.m统一出图模块化带来的好处是想改运动轨迹只动genTrajectory想调控制器只动beamControl不会牵一发而动全身。我早期图省事把所有代码写在一个脚本里后来每次改参数都要在几百行代码里找位置效率太低了。4.2 核心代码拆解轨迹生成这块我让接收端沿一条直线飞行并叠加了正弦摆动模拟无人机巡航时的小幅机动。发射端保持静止代表地面站或悬停节点。这样一个简化的场景足够验证跟踪算法的性能。% 接收端轨迹巡航加正弦扰动 t 0 : dt : simTime; posRxX 1000 20 * t; % 沿X轴匀速飞行 posRxY 50 * sin(2 * pi * 0.2 * t); % Y方向周期摆动 posRxZ 100; % 固定高度 posRx [posRxX; posRxY; posRxZ];光束控制模块是仿真的核心。在一个时间步内先用几何关系计算理想的指向角再叠加跟踪残差最后把残差更新到光轴方向上。关键代码如下for k 1:numSteps targetDir (posRx(:,k) - posTx) / norm(posRx(:,k) - posTx); angleErr(1,k) acos(dot(targetDir, beamDir)); % PID 控制 u Kp * angleErr(1,k) Ki * integral Kd * deriv; u max(min(u, mirrorMax), -mirrorMax); % 执行器饱和 % 更新光束方向简化角度积分 beamDir updateBeamDir(beamDir, u, dt); end人工噪声模块里发射端天线数量我设成了4根合法信道和窃听信道都生成服从瑞利衰落的随机向量。零空间投影的关键就在null函数上。之后再按功率分配因子加权叠加信息信号和人工噪声计算出合法端和窃听端的接收信噪比。保密率计算前最后一步是换算信道容量。合法端信噪比高容量就高窃听端信噪比被人工噪声压制容量就低。两者相减再取正值得到每个时刻的保密率。把整个仿真时段的保密率画出来就能直观看到在接收端持续运动的情况下系统的安全性保持得怎么样。4.3 仿真结果怎么看我跑完一组典型参数之后输出三张图第一张是瞄准误差随时间的变化看跟踪系统有没有收敛、收敛之后残差有多大第二张是合法信噪比和窃听信噪比的对比人工噪声的效果一目了然第三张是保密率曲线这是论文里最常用作结果图的一张。看瞄准误差图的时候重点看稳态阶段的波动幅度。以毫弧度为单位的话稳态残差能控制在0.1毫弧度以下说明跟踪系统正常工作。如果误差曲线有等幅振荡、一直不收敛或者收敛了但稳态误差过大都要回到控制器参数去排查。看信噪比对比图的时候关注两点合法信道的信噪比是否维持在通信所需门限以上窃听信道信噪比是否持续低于解调门限。理想情况是两条曲线之间拉开明显差距。如果窃听信噪比过高优先增加人工噪声功率占比或者检查零空间计算有没有出错。保密率曲线最终会反映系统安全性的整体水平。需要留意的是如果窃听信道条件在某个瞬间变得异常好保密率可能跌到接近零甚至负值。这说明当前方案在某些特殊空间位置下失效就需要联合轨迹规划和功率分配来优化。我后面在扩展里做过把无人机飞行路径作为优化变量配合功率分配联合搜索保密率整体提升非常明显。5. 调试过程中常见的坑与排查方法5.1 跟踪环路发散最典型的问题是光束方向震荡发散。表现是瞄准误差越来越大控制量在饱和边界反复冲击。排查顺序我先看执行器饱和限幅有没有生效再看PID的Kp和Kd是否匹配。很多情况下是Kd过大微分项放大了探测器噪声导致控制量高频抖动。另一种情况是初始误差角度超出了镜面可调范围。PAT系统本身是有捕获视场限制的镜面只能在小范围内精调超出范围必须先用粗转台对准。仿真里如果初始指向偏差在5度以上控制再好的PID也救不回来这不是算法问题是物理约束。处理办法是把瞄准阶段单独建模或者把初始误差设在一个合理范围内。5.2 保密率出现负值保密率计算出来是负值的时候很多人第一反应是代码算错了。其实不完全对保密率定义为合法容量减窃听容量再取正但容量公式里的信噪比是用实际接收信噪比算的当窃听信道质量异常好时窃听容量确实可以超过合法容量。要分清楚是计算问题还是信道条件本质问题。我排查这类问题时先打印每个时刻的合法信噪比和窃听信噪比如果窃听信噪比已经高于合法信噪比那说明当前信道条件下这个物理层安全方案本身就失效了需要调整功率分配或采用其他安全手段。如果窃听信噪比明明很低但保密率还是负的检查信道容量公式里的带宽和信噪比单位是否一致这类低级错误我犯过不止一次。5.3 仿真速度慢无人机通信仿真的时间粒度和尺度经常不匹配。跟踪控制需要毫秒级步长但一次飞行仿真往往持续几十秒甚至几分钟循环次数会非常庞大。我一开始用最小时间步长仿真全程结果跑一次要几分钟调参效率极低。后来做了两件事第一是把控制环路和性能统计模块解耦控制环路用细步长性能统计只在外层采样第二是能用向量化运算的地方不用循环特别是轨迹生成和信噪比计算这些部分。优化之后同样场景的仿真时间从几分钟降到几秒钟调参体验完全不一样。5.4 零空间投影失效还有一个隐蔽问题值得单独说。null函数算出的零空间在理论上与合法信道完全正交但数值计算中由于浮点精度限制正交性并不完美。当仿真中信道变化剧烈时泄漏到合法端的噪声会积累导致合法信噪比下降。处理办法是在每次信道变化后重新计算零空间并做一次正交性校验。校验方法很简单把零空间基左乘合法信道向量看结果是否接近数值零。如果偏差明显说明信道信息更新不及时或者矩阵病态需要调整参数。这个问题在真实系统中对应的是信道估计误差效应也是一个很值得在论文里展开讨论的点。写在最后的一点体会从最开始在Matlab里把光束对准环路跑通到后来加入人工噪声模块得到完整的保密率曲线这套项目最让我受益的是它把两个看起来独立的技术方向串成了协同的整体。光束控制保证了合法链路持有的信道优势人工噪声则把这个优势转化为真正的安全边界。单独看任何一个模块都能成立但合在一起才回答了“无人机之间到底怎么安全传输”这个问题。如果后续还想扩展我个人建议先做两个方向一个是在功率分配的基础上引入轨迹规划让无人机的飞行路径主动配合保密率优化另一个是把信道估计误差建模加进链路里看看在非理想信道信息下人工噪声方案还能保住多少安全性能。这两个方向我都试过出结果很快实验效果也明显学位论文或者期刊投稿都能用得上。