【多传感器融合】基于卡尔曼、无迹卡尔曼、拓展卡尔曼、粒子滤波实现非移动 GPS 干扰器的多传感器融合和位置估计附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

GPS Jammer Localisation Methods

The position of the GPS jamming vehicle is not directly observable and must be therefore observed by utilizing obseravble measurements. In order to localise the target that is confusing the GPS signals, a power measurement of the jamming signal is used. This method is called the Received signal strength (RSS) method, which is often used for localisation of energy emitting sources.

UAV Guidance Approach

The guidance approach which is utilised for the UAV guidance is a vector field based path following. In which the UAV first follow a straight line approach to the estimated position of the target. When the UAV reaches a certain distance it starts to follow a loiter path.

Sensor Fusion Algorithms

The goal of the assignment was it to develop and implement different sensor fusion algorihtms for both an isotropic and anistropic GPS jammer pattern. The following algorhtms were implemented:

  • Extended Kalman Filter

  • Unscendet Kalman Filter

  • Particle Filter

  • Extended Particle Filter

  • Unscendet Particle Filter

  • H-Infinity Filter

  • Adaptive Kalman Filter

  • H-Infinity Particle Filter

Particle Filter Resampling

A set of potential resampling approaches have been implmented. The goal of that analysis was to compare the different performances of the resampling methods in the same environment and to choose the algorithm with the best performance. Following methods have been implemented and investigated:

  • Multinomial Resampling

  • Systemematic Resampling

  • Residual Resampling

  • Residual Systematic Resampling

  • Local Selection Resampling

  • Stratified Resampling

⛄ 部分代码

%   Main file for first geolocation simulation: isotropic static jammer

%   -----------------------------------------------------------------------

%   ------------------------    Algorithm    ------------------------------

%   -----------------------------------------------------------------------

%   The algorithm goes through: prompts & constants, simulation parameters,

%   variable initialisation, main loop, error checking and plotting

der+1)                                                                         %   If simulation has initialised

       P_r_filt_ratio(k,1)=((P_r_filt(k,1)))/(P_r_filt(1,1));                                       %   Get power ratio: alpha 

       if (abs((P_r_filt_ratio(k,1)-1))>0.05/100)                                                   %   If ratio away from 1 with confidence

        [centre_geo_circle(k,:) radius_geo_circle(k,1)]=get_geo_data(x_vec_all(1,:),x_vec_all(k,:),P_r_filt_ratio(k,1)); %    See corresponding function

       else

           alpha_eq_1=1;                                                                            %   Boolean to indicate that ratio is close to 1 therefore set to 1 in the simulation

       end

    end    

    

    

    

    

    %   Kalman filtering: EKF (UKF)

    

        %   First stage: intersection check

        if ((obs_check==0)&&(k>k_C_prim)&&(d_uav(k,1)-d_uav(k_C_prim,1)>50))%   If intersection is not true yet and UAV has travelled a small distance 

            obs_condtn=get_obs_condtn(centre_geo_circle(k_C_prim,1),centre_geo_circle(k_C_prim,2),centre_geo_circle(k,1),centre_geo_circle(k,2),radius_geo_circle(k_C_prim,1),radius_geo_circle(k,1));

            if (obs_condtn>0)                                               %   Circles begin to intersect

                obs_check=1;                                                %   EKF (UKF) may start is observable

                k_obs=k+(floor((2/100)*N_loops_fb)+1);                         %   Add safety margin for geometry to change

            end

            k_C_prim=k;                                                     %   Update k_C_prim for next distance check

        end        

        

        

        %   Calls to the EKF(UKF)

        if (((obs_check==1)&&(k==k_obs))||(re_run_bool==1))               %   If intersections have begun & first time EKF (UKF) is run

            

            

            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

            %---------- < Design a EKF (UKF) > ------------%

            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

            

            % To make sure this file run, I just put x_state(:,k) = x_t_vec

            % (the true target postion)            

            %x_state(:,k) = x_t_vec;

            %%% students must uncomment the following line and design a EKF

            %%% and UKF

            [x_state(:,k),P_cov(:,:,k),K_EKF_gain(:,k)]=UPF_form(x_vec_all(1,:),x_vec_all(k,:),h_0,P_r_filt_ratio(k,1),x_state_ini,P_cov_ini,F_KF,G_KF,Q_KF,R_KF);

            

            if (re_run_bool==1)

                re_run_bool=0;

                div_EKF_bool=0;

            end

        elseif ((obs_check==1)&&(k>k_obs))                                  %   If intersections have begun & EKF (UKF) has alreay started

            % To make sure this file run, I just put x_state(:,k) = x_t_vec

            % (the true target postion)            

            %x_state(:,k) = x_t_vec;

            %%% students must uncomment the following line and design a EKF

            %%% and UKF

            [x_state(:,k),P_cov(:,:,k),K_EKF_gain(:,k)]=UPF_form(x_vec_all(1,:),x_vec_all(k,:),h_0,P_r_filt_ratio(k,1),x_state_ini,P_cov_ini,F_KF,G_KF,Q_KF,R_KF);

        end

        

        

        %   RMS EKF(UKF) calculation and P_t estimation        

        

        

    

        

    %   Animation: plot new UAV, Jammer and UAV trace at each iteration.

    %   See corresponding function for detail

    plot_animation_search(N_plots,k,x_t_vec,x_vec_all(1:k,:),psi_all(k,1),r_est_l(k,1),r_est_h(k,1),centre_geo_circle(k,:),radius_geo_circle(k,1),x_state(:,1:k),k_obs,N_loops_fb,P_cov(:,:,k),p_e,0,psi_jammer);

end                              

%   ------------------------    End Main flyby loop -----------------------------

%%

%   -----------------------------------------------------------------------

%   -------------------    Flyby Results Analysis   -----------------------

%   -----------------------------------------------------------------------

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%% Students must analyse the performance of their own filters

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%

%   -----------------------------------------------------------------------

%   --    Initialise Vector field simulation parameters from flyby phase   -

%   -----------------------------------------------------------------------

%   This part consists in augmenting previous matrices from flyby with

%   initialised parameters (zeros mostly)

%   UAV

x_vec_all=[x_vec_all ; zeros(N_loops_vf-N_loops_fb,2)];                     %   Initialise uav position vector

x_vec_all(N_loops_fb+1,:)=x_vec_all(N_loops_fb,:)+D_T*x_vec_dot(N_loops_fb,:);  %   Initialise for first step

x_vec_dot=[x_vec_dot ; zeros(N_loops_vf-N_loops_fb,2)];                     %   Initialise uav velocity vector: derivative of x_vec_all

psi_all=[psi_all ; zeros(N_loops_vf-N_loops_fb,1)];                      %   Initialise uav heading vector

psi_all(N_loops_fb+1,1)=psi_all(N_loops_fb,:)+D_T*psi_dot(N_loops_fb,:);    %   Initialise psi for first step

psi_dot=[psi_dot ; zeros(N_loops_vf-N_loops_fb,1)];                        %   Initialise uav heading derivative vector

jammer_UAV_vec_p=[jammer_UAV_vec_p ; zeros(N_loops_vf-N_loops_fb,3)];       %    Initialise Jammer-->UAV vector (3D)

elev_angle=[elev_angle ; zeros(N_loops_vf-N_loops_fb,1)];                   %    Initialise elevation angle to vertical

azimuth_angle=[azimuth_angle ; zeros(N_loops_vf-N_loops_fb,1)];            %    Initialise Jammer-->UAV azimuth angle to horizontal

azimuth_rel_angle=[azimuth_rel_angle ; zeros(N_loops_vf-N_loops_fb,1)];    %    Initialise Jammer-->UAV azimuth angle to jammer direction

%   Measurements

r_true=[r_true ; zeros(N_loops_vf-N_loops_fb,1)];                           %   True slant range

P_r_true=[P_r_true ; zeros(N_loops_vf-N_loops_fb,1)];                      %   True received power

P_r_meas=[P_r_meas ; zeros(N_loops_vf-N_loops_fb,1)];                       %   Measured received power: with noise

%   Processing

r_est_l=[r_est_l ; zeros(N_loops_vf-N_loops_fb,1)];                         %   Lower range estimation

r_est_h=[r_est_h ; zeros(N_loops_vf-N_loops_fb,1)];                         %   Upper range estimation

r_est_unc=[r_est_unc ; zeros(N_loops_vf-N_loops_fb,1)];                     %   Range estimation uncertainty

P_r_filt_ratio=[P_r_filt_ratio ; zeros(N_loops_vf-N_loops_fb,1)];           %   Alpha: Power ratio between initial and current : see 'alpha' in report

centre_geo_circle=[centre_geo_circle ; zeros(N_loops_vf-N_loops_fb,2)];     %   Centre of geolocation circle at instant k

radius_geo_circle=[radius_geo_circle ; zeros(N_loops_vf-N_loops_fb,1)];     %   Radius of geolocation circle at instant k

%   Filters

    %   EKF (UKF)

    r_est=zeros(N_loops_vf,1);                                              %   Only used in the second part (VF)

    x_state=[x_state zeros(2,N_loops_vf-N_loops_fb)];                     %   Updated EKF (UKF) state vector for all steps                               

    P_cov(:,:,N_loops_fb+1:N_loops_vf)=0;                                   %   EKF (UKF) Covariance matrix for all    

    K_EKF_gain=[K_EKF_gain zeros(2,N_loops_vf-N_loops_fb)];               %   Kalman gain storage

                                        

%   Simulation data

d_uav=[d_uav ; zeros(N_loops_vf-N_loops_fb,1)];                            %   Distance travelled by the UAV

d_uav(N_loops_fb+1,1)=d_uav(N_loops_fb,:)+D_T*sqrt(x_vec_dot(N_loops_fb,:)*(x_vec_dot(N_loops_fb,:))');

%   Get Vector field orientation depending on UAV heading and azimuth to

%   jammer

psi_uav=rem(psi_all(N_loops_fb,1),2*pi);                                    %   UAV heading (0 - 2pi)

beta_angle=psi_uav-azimuth_angle(N_loops_fb,1);                             %   Angle between Jammer-->UAV and UAV heading

beta_angle = rem(beta_angle,2*pi);                                          %   psi_diff in [0 2*pi]

if abs(beta_angle)>pi

  beta_angle = beta_angle-2*pi*sign(beta_angle);

end

if (beta_angle>=0)

    VF_rot_sen=1;                                                           %   Counter-clockwise

else

    VF_rot_sen=-1;                                                          %   Clockwise

end

%%

%   -----------------------------------------------------------------------

%   ------      Main Vector Field (VF) simulation Part       --------------

%   -----------------------------------------------------------------------

for k=(N_loops_fb+1):N_loops_vf

    

    %   UAV dynamics:

    x_vec_dot(k,:)=V_g*[cos(psi_all(k,1)) sin(psi_all(k,1))];                                           %   Update UAV speed vector with speed and heading

   

    %   Lyapunov vector field guidance (LVFG)

        %   Range estimation

        r_est(k,1)=sqrt(((x_vec_all(k,1)-x_state(1,k-1))^2)+((x_vec_all(k,2)-x_state(2,k-1))^2)+(h_0^2)); %   Equation 3.5 in report: range determination

        %   Vector field calculation

        x_r=x_vec_all(k,1)-x_state(1,k-1);                                                                %   relative x distance

        y_r=x_vec_all(k,2)-x_state(2,k-1);                                                                %   relative y distance

        %   Vector field component

        f_1=(-alpha_f*V_g/r_est(k,1))*((x_r*((r_est(k,1)^2-r_d^2)/(r_est(k,1)^2+r_d^2)))+VF_rot_sen*(y_r*((2*r_est(k,1)*r_d)/(r_est(k,1)^2+r_d^2))));

        f_2=(-alpha_f*V_g/r_est(k,1))*((y_r*((r_est(k,1)^2-r_d^2)/(r_est(k,1)^2+r_d^2)))-VF_rot_sen*(x_r*((2*r_est(k,1)*r_d)/(r_est(k,1)^2+r_d^2))));

        %   Desired heading

        psi_d=atan2(f_2,f_1);

        %   Difference between current and desired

        psi_diff=psi_all(k,1)-psi_d;

        psi_diff = rem(psi_diff,2*pi);                                      %   psi_diff in [0 2*pi]

        if abs(psi_diff)>pi

            psi_diff = psi_diff-2*pi*sign(psi_diff);

        end

        %   Desired heading rate

        psi_dot_d=4*alpha_f*V_g*((r_d*r_true(k,1)^2)/((r_true(k,1)^2+r_d^2)^2));

        

        %   Turning rate command

        psi_dot(k,1)=-K_LVFG_psi*psi_diff+psi_dot_d;

        

        %   Saturation check / UAV turn radius limit

        if (abs(psi_dot(k,1))>(V_g/min_turn_r))

            psi_dot(k,1)=(V_g/min_turn_r)*sign(psi_dot(k,1));

        end

        

    %   UAV movement:

    if k~=N_loops_vf                                                        %   Not updated past (N_loops_vf-1)

        x_vec_all(k+1,:)=x_vec_all(k,:)+D_T*x_vec_dot(k,:);                %   Position Euler integration

        psi_all(k+1,:)=psi_all(k,:)+D_T*psi_dot(k,:);                       %   Heading Euler integration

        d_uav(k+1,:)=d_uav(k,:)+D_T*sqrt(x_vec_dot(k,:)*(x_vec_dot(k,:))'); %   Travelled distance Euler integration

    end

        

    

    %   UAV measurement:

    r_true(k,1)=sqrt(((x_vec_all(k,1)-x_t_vec(1,1))^2)+((x_vec_all(k,2)-x_t_vec(1,2))^2)+(h_0^2));

    %   True Received power through Friis equation. However f varies

    %   slightly and the instrumentation measures P_r with some error

    P_r_true(k,1)=(P_t*G_t*G_r*((c_0/(4*pi*r_true(k,1)*f_L1))^2));                                 %  Equation 3.6 in report: Friis P_r in [W] 

    P_r_meas(k,1)=P_r_true(k,1)+sig_P_r_W*randn(1);                                                 %   Add noise in W

    

    %   UAV measurement pre-processing

    %   Received power filtering

    if (k>3*butter_order)                                                                           %   filter only works with sufficient data points

        P_r_filt=zeros(k,1);                                                                        %   Re-Initialise filtered data at each step

        P_r_filt(1:k,1)=filtfilt(b_butter,a_butter,P_r_meas(1:k,1));                                %   Filter noisy P_r_true at each new step

    end

    

    

    %   Simulation data:

              

    %   Process measurements for geolocation

    %   First: process range determination

    if (k>3*butter_order)                                                                           %   If simulation has enough point (filtering)

        r_est_l(k,1)=((c_0/(4*pi*f_L1))*sqrt((G_t*G_r/(P_r_filt(k,1)))*P_t_min));                   %   Evaluate lower range from measurements

        r_est_h(k,1)=((c_0/(4*pi*f_L1))*sqrt((G_t*G_r/(P_r_filt(k,1)))*P_t_max));                   %   Evaluate Upper range from measurements

        r_est_unc(k,1)=abs(r_est_h(k,1)-r_est_l(k,1));                                              %   Evaluate uncertainty on range measurements

    end

    

    %   Second: process iso-(range ratio) curves

    if (k>3*butter_order+1)                                                                         %   If simulation has initialised

       P_r_filt_ratio(k,1)=((P_r_filt(k,1)))/(P_r_filt(1,1));                                       %   Get power ratio: alpha 

       if (abs((P_r_filt_ratio(k,1)-1))>0.05/100)                                                   %   If ratio away from 1 with confidence

        [centre_geo_circle(k,:) radius_geo_circle(k,1)]=get_geo_data(x_vec_all(1,:),x_vec_all(k,:),P_r_filt_ratio(k,1)); %    See corresponding function

       else

           alpha_eq_1=1;                                                                            %   Boolean to indicate that ratio is close to 1 therefore set to 1 in the simulation

       end

    end

    

    %   Kalman filtering: EKF (UKF)  

                

        if (re_run_bool==1)                                                 %   If EKF (UKF) has diverged and needs to reinitialised

            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

            %---------- < Design a EKF (UKF) > ------------%

            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

            

            % To make sure this file run, I just put x_state(:,k) = x_t_vec

            % (the true target postion)            

            %x_state(:,k) = x_t_vec;

            %%% students must uncomment the following line and design a EKF

            %%% and UKF

            [x_state(:,k),P_cov(:,:,k),K_EKF_gain(:,k)]=UPF_form(x_vec_all(1,:),x_vec_all(k,:),h_0,P_r_filt_ratio(k,1),x_state_ini,P_cov_ini,F_KF,G_KF,Q_KF,R_KF);

                        

            re_run_bool=0;

           div_EKF_bool=0;

        elseif (re_run_bool==0)                                             %   Normal operation condition: the EKF (UKF) has converged and remains on target

            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

            %---------- < Design a EKF (UKF) > ------------%

            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

            

            % To make sure this file run, I just put x_state(:,k) = x_t_vec

            % (the true target postion)            

            %x_state(:,k) = x_t_vec;

            %%% students must uncomment the following line and design a EKF

            %%% and UKF

            [x_state(:,k),P_cov(:,:,k),K_EKF_gain(:,k)]=UPF_form(x_vec_all(1,:),x_vec_all(k,:),h_0,P_r_filt_ratio(k,1),x_state_ini,P_cov_ini,F_KF,G_KF,Q_KF,R_KF);

            

        end        

    

        

    %   Animation: plot new UAV, Jammer and UAV trace at each iteration.

    %   See corresponding function for detail

    plot_animation_search(N_plots,k,x_t_vec,x_vec_all(1:k,:),psi_all(k,1),r_est_l(k,1),r_est_h(k,1),centre_geo_circle(k,:),radius_geo_circle(k,1),x_state(:,1:k),k_obs,N_loops_fb,P_cov(:,:,k),p_e,r_d,psi_jammer);

  

    

end

%%

%   -----------------------------------------------------------------------

%   ------------------------   Performance Check  -------------------------

%   -----------------------------------------------------------------------

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%% Students must analyse the performance of their own filters

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

⛄ 运行结果

⛄ 参考文献

[1] A. Brown and D. Roberts. ammer and interference loca- tion system - design and initial test results. In ION GPS ’99, 1999.

[2] B.W. O’Hanlon R.H. Mitch, M.L. Psiaki and S.P. Powell. Signal character

istics of civil gps jammers. In ION GNSS 2012, 2012.

[3] The economist. Gps jamming: No jam tomorrow, January 2013.

[4] K. Spingarn. Passive position location estimation using the extended kal

man fifilter. IEEE Transactions on Aerospace and Electronic Systems, AES-

23(4):558–567, 1987.

[5] F. Fletcher, B. Ristic, and D. Musicki. Recursive estimation of emitter loc

ation using tdoa measurements from two uavs. In Information Fusion, 2007

10th International Conference on, 2007.

[6] D. Musicki and W. Koch. Geolocation using tdoa and fdoa measurements. In Information Fusion, 2008 11th International Conference on, 2008.

[7] C. O’Driscoll D. Borio, J. Fortuny-Guasch. Characterization of gnss jam

mers. Coordinates: A monthly magazine on position, navigation, and beyond,May 2013.

[8] B. Eissfeller D. Fontanella, R. Bauernfeind. In-car gnss jammer localization

with a vehicular ad-hoc network. In the 25th International Technical Meeting

of The Satellite Division of the Institute of Navigation (ION GNSS 2012),

2012.

[9] S. Morris E. W. Frew, D. A. Lawrence. Coordinated standoff tracking of

moving targets using lyapunov guidance vector fifields. Journal of Guidance

Control and Dynamics, 31(2):290–306, 2008.

[10] Jeong Heon Lee and R.M. Buehrer. Location estimation using differential rss with spatially correlated shadowing. In Global Telecommunications Conference, 2009. GLOBECOM 2009. IEEE, pages 1–6, 2009.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 卡尔曼滤波是一种通过观测数据和预测模型之间的权衡,来估计系统状态的数学方法。GPS位置卡尔曼滤波模型是基于卫星信号、接收机测量误差和先验信息的位置估计算法。 首先,GPS接收机接收到卫星发射的信号,并测量来自不同卫星的信号传播时间。根据信号传播时间,可以计算卫星与接收机之间的距离。 然后,利用卡尔曼滤波模型对接收机的位置进行估计卡尔曼滤波模型包括两个主要步骤:预测和更新。 在预测步骤中,根据先验信息和系统动力学模型,对接收机的位置进行预测。这里的先验信息包括上一次的位置估计值和协方差矩阵,而系统动力学模型描述了接收机位置的变化规律。 在更新步骤中,使用测量数据来修正预测值。测量数据包括来自不同卫星的距离测量值和测量误差。通过将测量数据与预测值进行比较,可以得到位置估计的更新值和更新后的协方差矩阵。 最后,将更新后的位置估计值作为下一次的先验信息,并进行下一次的预测和更新步骤。通过不断地迭代求解,可以逐步减小估计值与实际值之间的误差,从而得到更准确的位置估计结果。 总之,GPS位置卡尔曼滤波模型通过结合卫星信号、接收机测量误差和先验信息,利用预测和更新的步骤,来进行位置估计。这种模型能够有效地减小噪声和误差,并提高GPS位置估计的精度和稳定性。 ### 回答2: 卡尔曼滤波是一种常用于估计和预测系统状态的统计算法。在GPS定位中,通过卡尔曼滤波模型可以更准确地估计设备的位置信息。 GPS位置卡尔曼滤波模型主要包括两个步骤:预测步骤和更新步骤。 预测步骤中,根据系统的动力学模型和测量模型,利用上一时刻的位置、速度等信息,预测当前时刻位置估计值,并得到位置的协方差矩阵。 更新步骤中,结合当前时刻的GPS测量值,通过计算估计位置与测量位置之间的残差,更新位置估计值和协方差矩阵。同时,考虑到GPS测量值的不确定性,通过权重系数进行加权平均,以提高位置估计的准确性。 卡尔曼滤波模型具有以下特点: 1. 通过动态更新位置估计值,可以减小系统误差和测量误差对定位结果的影响,提高定位精度。 2. 通过考虑测量不确定性,可以有效抑制测量误差对定位的干扰,提高定位的鲁棒性和可靠性。 3. 通过动态调整权重系数,可以灵活地适应不同动态条件下的定位需求,提高位置估计的适应性。 总之,GPS位置卡尔曼滤波模型利用动态更新和加权平均的方法,能够综合考虑历史位置信息和当前GPS测量值,准确估计设备的位置,提高GPS定位的精度和可靠性。 ### 回答3: GPS位置卡尔曼滤波模型是一种用于估计和预测GPS定位的算法。该模型结合了GPS测量和惯性测量的数据,通过对观测数据进行加权平均,提高了GPS定位的准确性和稳定性。 卡尔曼滤波模型通过两个主要步骤来进行位置估计。首先,它使用GPS接收器获得的位置测量值作为观测数据。然后,根据定位误差和运动误差的模型,将上一步的位置估计值与惯性传感器(如加速度计和陀螺仪)提供的速度和方向信息进行融合。 在融合的过程中,卡尔曼滤波模型利用先验估计(由上一步的位置估计值和方差计算得出)和观测矩阵(由测量误差和方差计算得出)来更新和修正当前的位置估计值。通过使用不断更新的观测数据和动态模型,卡尔曼滤波模型能够逐步减小误差,得到更准确的位置估计卡尔曼滤波模型的优点是能够根据时间动态调整估计值的权重,从而适应不同的位置环境和飞行状态。它还能够消除GPS测量的噪声和误差,提供稳定和准确的位置估计。 总的来说,GPS位置卡尔曼滤波模型能够结合GPS测量和惯性测量的数据,提高定位的准确性和稳定性。它是一种常用的定位算法,广泛应用于无人机、汽车导航和移动定位等领域。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

matlab科研助手

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

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

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

打赏作者

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

抵扣说明:

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

余额充值