diff --git a/mr/ub9/loc_framework/ukf_correction.m b/mr/ub9/loc_framework/ukf_correction.m index ea3677f..0c194d2 100644 --- a/mr/ub9/loc_framework/ukf_correction.m +++ b/mr/ub9/loc_framework/ukf_correction.m @@ -2,9 +2,28 @@ %UKF_CORRECTION UKF correction step % YOUR CODE STARTS HERE: +[X,w]=ukf_sigma_points(pred_mean,pred_cov); +%Sm= rowfun(motion,S) % By default, rowfun returns the first output of func +%wie bring ich hier das u unter? +Z=zeros(size(z,1),size(X,2)); +for i =1:size(X,2) + a=measurement(X(:,i)); + Z(:,i)= a(1); +end +[expX,covX]=ukf_estimate_normal( X, w ); +[expZ,CovOfIn]=ukf_estimate_normal( Z, w ); +CovOfIn = CovOfIn+Q; -mean = pred_mean; -cov = pred_cov; +CrossCov = zeros(size(X,1),size(z,1)); +for i =1:size(X,2) + CrossCov = CrossCov+ w(i)*(X(:,i)-expX)*(Z(:,i)-expZ)'; +end + +K= CrossCov*inv(CovOfIn); +mean= expX+K*(z-expZ); +cov= covX * K*CovOfIn*K'; + + % YOUR CODE ENDS HERE: diff --git a/mr/ub9/loc_framework/ukf_estimate_normal.m b/mr/ub9/loc_framework/ukf_estimate_normal.m index 923bce5..e183e93 100644 --- a/mr/ub9/loc_framework/ukf_estimate_normal.m +++ b/mr/ub9/loc_framework/ukf_estimate_normal.m @@ -9,9 +9,18 @@ % YOUR CODE STARTS HERE: -mu = zeros(dim,1); +%mu = zeros(dim,1); + +mu=S*w; + + cov = zeros(dim,dim); +for i =1:n + cov = cov+ w(i)*(S(:,i)-mu)*(S(:,i)-mu)'; +end + + % YOUR CODE END HERE: end diff --git a/mr/ub9/loc_framework/ukf_prediction.m b/mr/ub9/loc_framework/ukf_prediction.m index 54ebfe6..2a25d6a 100644 --- a/mr/ub9/loc_framework/ukf_prediction.m +++ b/mr/ub9/loc_framework/ukf_prediction.m @@ -3,8 +3,16 @@ % YOUR CODE STARTS HERE: -newmean = mean; -newcov = cov; +[S,w]=ukf_sigma_points(mean,cov); +%Sm= rowfun(motion,S) % By default, rowfun returns the first output of func +%wie bring ich hier das u unter? +Sm=zeros(size(S)); +for i =1:size(S,2) + a=motion(S(:,i),u); + Sm(:,i)= a(1); +end +[newmean,newcov]=ukf_estimate_normal( Sm, w ); +newcov = newcov+R; % YOUR CODE ENDS HERE: diff --git a/mr/ub9/loc_framework/ukf_sigma_points.m b/mr/ub9/loc_framework/ukf_sigma_points.m index 20aaadd..9624a93 100644 --- a/mr/ub9/loc_framework/ukf_sigma_points.m +++ b/mr/ub9/loc_framework/ukf_sigma_points.m @@ -20,6 +20,18 @@ % YOUR CODE STARTS HERE +S(:,1)=mu; +w(1)=1/3; +w(2:n)=(1-w0)/(2*n); + +RootN= sqrt(n/(1-w0))*sqrtm(cov); +RootN2= sqrt(n/(1-w0))*sqrtm(cov); +for i =2:nx + S(:,i) = mu+RootN(:,i); + S(:,i+nx) = mu-RootN2(:,i); +end + + % YOR CODE ENDS HERE end