【无人机】无人机平台的非移动 GPS 干扰器进行位置估计的多种传感器融合算法的性能分析【AEPF、UKF、PF、AHINF、HIF、EPF、 AKF、 UPF、 EKF】(Matlab代码实现)

 👨‍🎓个人主页:研学社的博客  

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚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 

🎉3 参考文献

🌈4 Matlab代码、数据、文章讲解


💥1 概述

任务的障碍是在 MATLAB/Simulink 提供的合成环境中开发和实现不同的传感器融合算法。提供的问题定义分为两个子部分。第一部分侧重于在具有各向同性干扰器行为的环境中开发某些传感器融合算法。本节重点介绍扩展卡尔曼、无迹卡尔曼和粒子滤波算法的实现,以估计非移动 GPS 干扰平台的位置。在第二部分中,干扰器模式在扩散过程中是各向异性的 行为。应使用先前开发的算法(扩展卡尔曼、无迹卡尔曼和粒子滤波器)来分析它们使用新干扰器模式的行为。作为任务的最后一部分,应该已经实现了新的 abd 未呈现的传感器融合算法。该算法的目标是改进各向异性干扰器行为情况下的位置估计

GPS干扰器定位方法
GPS干扰车的位置不能直接观察到,因此必须利用观测测量来观察。为了定位混淆GPS信号的目标,使用干扰信号的功率测量。这种方法称为接收信号强度(RSS)方法,通常用于能量发射源的定位。

无人机制导方法
用于无人机制导的制导方法是基于矢量场的路径跟踪。其中无人机首先遵循直线方法到达目标的估计位置。当无人机到达一定距离时,它开始沿着徘徊路径行驶。

传感器融合算法
该任务的目标是为各向同性和各向异性GPS干扰器模式开发和实现不同的传感器融合算法。实现了以下算法:

扩展卡尔曼滤波器
昂森特卡尔曼滤波器
粒子过滤器
扩展粒子过滤器
无厘头粒子过滤器
H-无限滤光片
自适应卡尔曼滤波
H-无限粒子过滤器
粒子过滤器重采样
已经采用了一套潜在的重新采样方法。该分析的目的是比较重采样方法在同一环境中的不同性能,并选择性能最佳的算法。已实施并调查了以下方法:

多项重采样
系统重采样
残余重采样
残差系统重采样
局部选择重采样
分层重采样

📚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 参考文献

部分理论来源于网络,如有侵权请联系删除。

🌈4 Matlab代码、数据、文章讲解

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值