👨🎓个人主页
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
无人机平台的非移动 GPS 干扰环境下多传感器融合算法性能分析
💥1 概述
【无人机】无人机平台的非移动 GPS 干扰器进行位置估计的多种传感器融合算法的性能分析【AEPF、UKF、PF、AHINF、HIF、EPF、 AKF、 UPF、 EKF】研究
任务的障碍是在 MATLAB/Simulink 提供的合成环境中开发和实现不同的传感器融合算法。提供的问题定义分为两个子部分。第一部分侧重于在具有各向同性干扰器行为的环境中开发某些传感器融合算法。本节重点介绍扩展卡尔曼、无迹卡尔曼和粒子滤波算法的实现,以估计非移动 GPS 干扰平台的位置。在第二部分中,干扰器模式在扩散过程中是各向异性的 行为。应使用先前开发的算法(扩展卡尔曼、无迹卡尔曼和粒子滤波器)来分析它们使用新干扰器模式的行为。作为任务的最后一部分,应该已经实现了新的 abd 未呈现的传感器融合算法。该算法的目标是改进各向异性干扰器行为情况下的位置估计
GPS干扰器定位方法
GPS干扰车的位置不能直接观察到,因此必须利用观测测量来观察。为了定位混淆GPS信号的目标,使用干扰信号的功率测量。这种方法称为接收信号强度(RSS)方法,通常用于能量发射源的定位。
无人机制导方法
用于无人机制导的制导方法是基于矢量场的路径跟踪。其中无人机首先遵循直线方法到达目标的估计位置。当无人机到达一定距离时,它开始沿着徘徊路径行驶。
传感器融合算法
该任务的目标是为各向同性和各向异性GPS干扰器模式开发和实现不同的传感器融合算法。实现了以下算法:
扩展卡尔曼滤波器
昂森特卡尔曼滤波器
粒子过滤器
扩展粒子过滤器
无厘头粒子过滤器
H-无限滤光片
自适应卡尔曼滤波
H-无限粒子过滤器
粒子过滤器重采样
已经采用了一套潜在的重新采样方法。该分析的目的是比较重采样方法在同一环境中的不同性能,并选择性能最佳的算法。已实施并调查了以下方法:
多项重采样
系统重采样
残余重采样
残差系统重采样
局部选择重采样
分层重采样
无人机平台的非移动 GPS 干扰环境下多传感器融合算法性能分析
一、GPS干扰对无人机定位的影响机制
非移动GPS干扰器通过发射与GPS信号同频的噪声或虚假信号,导致无人机无法接收有效卫星信号,具体影响包括:
- 定位功能丧失:GPS信号中断后,无人机可能从高精度模式(如RTK)回退至低精度模式,甚至完全失去定位能力。
- 导航误差累积:依赖惯性传感器(IMU)的航位推算(DR)会产生累积误差,尤其在长时间干扰下,位置偏差显著增大。
- 欺骗攻击风险:未加密的民用GPS信号易受虚假信号诱导,导致无人机偏离预定航线或失控。
在此场景下,多传感器融合算法的核心目标是通过结合IMU、视觉、气压计等数据,补偿GPS缺失带来的定位误差,并提升系统鲁棒性。
二、多传感器融合算法的性能分析
1. 自适应扩展粒子滤波(AEPF)
- 原理:结合自适应滤波与扩展粒子滤波(EPF),动态调整粒子采样分布和噪声协方差,优化重要性密度函数。
- 优势:
- 在GPS干扰下,通过自适应机制估计噪声统计特性,抑制IMU累积误差。
- 引入注意力机制(如AEPF-L变体),在复杂场景下提升特征融合效率。
- 局限性:计算复杂度较高,需平衡粒子数量与实时性。
2. 无迹卡尔曼滤波(UKF)
- 原理:通过无迹变换(UT)处理非线性系统,避免EKF的线性化误差。
- 优势:
- 在GPS/INS组合导航中,位置误差较EKF降低25.8%,姿态误差降低22.2%。
- 平方根UKF(SR-UKF)通过协方差矩阵分解提升数值稳定性,适用于高动态环境。
- 局限性:对初始误差敏感,需精确建模系统噪声。
3. 粒子滤波(PF)
- 原理:基于蒙特卡洛采样估计后验概率,适用于非线性非高斯系统。
- 优势:
- 在编队协同导航中,精度较UKF提升60%以上,尤其适用于时变非高斯噪声。
- 改进PF(如快速重采样)减少计算量,粒子数降至40个时仍保持8ms/周期的实时性。
- 局限性:粒子退化问题显著,需依赖重采样策略和高性能硬件。
4. 自适应模糊推理神经网络滤波(AHINF)
- 原理:融合模糊推理规则与神经网络,动态构建非线性系统模型。
- 优势:
- 在强非线性系统中(如GPS干扰下IMU数据突变),鲁棒性优于传统滤波器。
- 通过模糊规则库自适应调整参数,抑制传感器异常值影响。
- 局限性:规则库设计依赖先验知识,泛化能力受限。
5. H无穷滤波(HIF)
- 原理:最小化滤波误差的H∞范数,不依赖噪声统计特性。
- 优势:
- 在模型不精确或非高斯噪声下,SOC估计误差较EKF降低2%。
- 抗干扰能力强,适用于多源传感器数据冲突场景。
- 局限性:计算复杂度高,需优化权重矩阵设计。
6. 扩展粒子滤波(EPF)
- 原理:利用EKF生成重要性密度函数,改善粒子分布。
- 优势:
- 在无人机目标跟踪中,KL散度优化粒子数量,计算时间减少50%。
- 融合容积信息滤波(CIF),多传感器数据融合效率提升。
- 局限性:对EKF线性化误差敏感,需结合UKF改进。
7. 自适应卡尔曼滤波(AKF)
- 原理:基于新息协方差动态调整系统噪声和量测噪声。
- 优势:
- 在GPS信号突变时,经度误差峰值从19m降至5m,收敛速度提升40%。
- 均值误差较KF降低39%~95%,适合低精度传感器融合。
- 局限性:对量测异常值的识别依赖卡方检验阈值设定。
8. 无迹粒子滤波(UPF)
- 原理:结合UKF与PF,利用UT生成更优提议分布。
- 优势:
- 在高动态GPS信号跟踪中,相位误差较EPF降低30%。
- 引入新息加权策略,抑制野值影响,授时精度提升至纳秒级。
- 局限性:实时性较差,需优化粒子更新策略。
9. 扩展卡尔曼滤波(EKF)
- 原理:一阶泰勒展开线性化非线性模型。
- 局限性:
- 在GPS失锁后,IMU误差累积导致发散,位置偏差可达19m。
- 对强非线性系统(如无人机急转)适应性差,雅可比矩阵计算复杂。
三、综合性能对比与场景适配建议
算法 | 精度 | 计算复杂度 | 鲁棒性 | 实时性 | 适用场景 |
---|---|---|---|---|---|
AEPF | 高 | 高 | 强 | 中 | 复杂噪声、多模态传感器 |
UKF | 中高 | 中 | 较强 | 高 | 中低动态、资源受限平台 |
PF | 极高 | 极高 | 中等 | 低 | 高精度需求、离线处理 |
AHINF | 中高 | 中高 | 极强 | 中 | 强非线性、规则库完备 |
HIF | 中 | 高 | 强 | 低 | 模型不确定、非高斯噪声 |
EPF | 高 | 高 | 中等 | 中 | 动态目标跟踪、中等计算资源 |
AKF | 中高 | 低 | 较强 | 高 | 噪声时变、低成本传感器 |
UPF | 高 | 极高 | 较强 | 低 | 高动态、抗野值需求 |
EKF | 低中 | 低 | 弱 | 高 | 线性近似良好、短期干扰 |
场景推荐:
- 高动态干扰环境:优先选择UPF或AEPF,兼顾抗野值与自适应能力。
- 资源受限平台:采用UKF或AKF,平衡精度与计算开销。
- 强非线性系统:AHINF或HIF更适合,避免模型失配。
- 长期GPS失效:PF与视觉/激光雷达融合,减少累积误差。
四、结论
在非移动GPS干扰环境下,多传感器融合算法的选择需综合考虑动态特性、噪声类型及硬件资源。AEPF与UPF在自适应性和抗干扰方面表现突出,而UKF和AKF在实时性上更具优势。未来研究可探索混合滤波架构(如AHINF-UPF),结合模糊推理与粒子优化,进一步提升复杂场景下的定位鲁棒性。
📚2 运行结果
2.1 UKF
2.2 PF
2.3 EKF
2.4 AEPF
2.5 AHINF
2.6 HIF
2.7 EPF
2.8 AKF
2.9 UPF
部分代码:
% ------------------------ Algorithm ------------------------------
% -----------------------------------------------------------------------
% The algorithm goes through: prompts & constants, simulation parameters,
% variable initialisation, main loop, error checking and plotting
% There are two distinct parts: the flyby section and the orbital
% adaptation main loop uses simple Euler integration to update the UAV
% dynamics and it updates filter parameters
% Matrices (or vectors) are in column form that is each new entry forms a
% new line i.e: A(k+1,:)=...
% WARNING: THE ONLY EXCEPTIONS are filters' states which are in line form
% i.e: A(:,k+)=...
% The floor function is used to get a integer out of a percentage of
% another integer e.g floor((5/100)*N_loops_fb): integer of 5/100 of total
% number of iterations of the simulation
% The rem (remainder) function is used to know if a number divided by
% another is an integer (Euclidian division)
% Workspace cleaning
clc; close all; clear all;
global d2r
% Constants (not to be modified)
d2r=pi/180; % Value in rad = Value in deg * d2r
r2d=1/d2r; % Value in deg = Value in rad * r2d
g_0=9.81; % Gravity acceleration assumd constant [m/s^2]
f_L1=1575.42*10^6; % L1 frequency [Hz]
c_0=299792458; % speed of light [m/s]
k_b=1.3806488*(10^(-23)); % Boltzmann constant
%%
% -----------------------------------------------------------------------
% -------------------- Simulation parameters ----------------------
% -----------------------------------------------------------------------
% Parameters (Simulation design): Change according to desired simulation
% Within the simulation, these are fixed
% Area parameters and number of iterations are global variables
global x_bnd y_bnd N_loops_fb
% Simulation parameters
D_T=1/2; % Sampling time of the simulation (for Euler integration) [s] - half a second is fine for filter accuracy and animation speed
t_0=0; % Initial time [s]
t_f_fb=4.5*60; % Final time for flyby [s] - Check with speed to know what distance will be travelled - 6 minutes at 30m/s is fine for straight flyby
t=(t_0:D_T:t_f_fb-t_0)'; % Time vector for flyby [s]
N_loops_fb=size(t,1); % Number of loops in the flyby simulation
t_f_vf=15*60; % Final time for the Vector field part. Note it is not its duration but the time at which it stops
t=(t_0:D_T:t_f_vf-t_0)'; % Time vector for whole simulation
N_loops_vf=size(t,1); % Total number of loops for the simulation
% Search Area parameters
x_bnd=12*10^3; % x area boundary [m]
y_bnd=12*10^3; % y area boundary [m]
A_area=x_bnd*y_bnd; % Area of search [m瞉
% Jammer parameters
% Static Jammer true location : located within a square centred
% inside the search area. These parameters are not known by the UAV
x_t_vec=place_jammer(); % See corresponding function. It places the jammer randomly in a square in the search area
% GPS jammer model for the simulation
P_t_min=1*(10^(-3)); % [W] - Generally around 1mW
P_t_max=650*(10^(-3)); % [W] - Generally 650mW
% Jammer power in the L1 band: to be adjusted for desired
% simulation. Assumed always constant (civil jammers)
% Jammer orientation
psi_jammer=0; % Degrees [0-360]
psi_jammer=psi_jammer*d2r; % In radians
% Jammer Gain distribution
% Load data: azimvals,elevvals and gainvals that are used in
% the simulink 'lookup' file
load('Ducati_jam2_LHCP.mat');
% Jammer power
P_t=(P_t_min+(P_t_max-P_t_min)*rand(1,1)); % Power [W] - Line to comment if the user wants to specify a given power within power bounds
% Display jammer power as it is an important simulation parameter
P_t_jammer_str=num2str(P_t*(10^3)); % convert to mW, then to string for display
disp('--> GPS jammer Power in L1 band for this simulation is :'); % display
disp([P_t_jammer_str,' mW']); % display
% Jammer gain
G_t=1; % Isotropic, lossless antenna []
% Jammer sweep range: [f_L1-f_min ; f_L1+f_max]
f_min=f_L1-30*10^6; % [Hz] - f_min and f_max around 10-20-30 MHz
f_max=f_L1+30*10^6; % [Hz]
% UAV parameters
% Initial position and heading
[x_vec psi_0]=place_uav(); % See corresponding function. It places the UAV randomly in a small square in the South-West area with a random heading
% Altitude-hold
h_0=125; % Constant altitude of the UAV [m]
% UAV airspeed
V_g=28.3; % Average Cruising Airspeed of the aerosonde [m/s]
V_min=15; % Minimum safe speed [m/s]
V_max=50; % Maximum safe speed [m/s]
% UAV minimum turn radius
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。