⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 update_iekf.m

📁 利用MATLAB建立扩展卡尔曼滤波器进行扫描滤波
💻 M
字号:
function update_iekf(z,R,idf,N)
% function update_iekf(z,R,idf,N)
%
% Inputs:
%   z, R - range-bearing measurements and covariances
%   idf - feature index for each z
%   N - number of iterations of the IEKF
%
% Outputs:
%   XX, PX - updated state and covariance (globals)

global XX PX IDF
IDF= idf;

if isempty(idf), return, end

lenz= size(z,2);
RR= zeros(2*lenz);
zz= zeros(2*lenz,1);
for i=1:lenz
    ii= 2*i + (-1:0);    
    zz(ii)= z(:,i);
    RR(ii,ii)= R;
end
        
[XX,PX] = KF_IEKF_update(XX,PX, zz,RR, @hmodel, @hjacobian, N);

%
%

function v= hmodel(x,z)
global IDF
lenz= length(IDF);
v= zeros(2*lenz, 1);

for i=1:lenz
    ii= 2*i + (-1:0);    
    [zp,dmy]= observe_model(x, IDF(i));
    v(ii)= z(ii)-zp;
    v(ii(2))= pi_to_pi(v(ii(2)));
end

%
%

function H= hjacobian(x)
global IDF

lenz= length(IDF);
lenx= length(x);
H= zeros(2*lenz, lenx);

for i=1:lenz
    ii= 2*i + (-1:0);
    [dmy,H(ii,:)]= observe_model(x, IDF(i));
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -