From 3b09322d239a7ecad4471e13e1281bc48ca922f7 Mon Sep 17 00:00:00 2001 From: "Ciccarelli, Edoardo (PG/R - Comp Sci & Elec Eng)" <e.ciccarelli@surrey.ac.uk> Date: Wed, 31 May 2023 10:35:23 +0100 Subject: [PATCH] Trovato bug nelle features, e aggiunto plot residuals --- .DS_Store | Bin 6148 -> 8196 bytes Analisys_With_Features.m | 5 +- CovarianceAnalysisParameters.m | 7 +- Measurement_read.m | 12 ++- Observables_model_with_Features.m | 10 +-- Observations_Generation.m | 14 +-- Observations_with_features.m | 6 +- Plotfeatures_Pic.m | 92 ++++++++++++++++--- Residuals_withCamera.m | 32 +++++++ Results.m | 145 ++++++++++++------------------ UKF_Tool.m | 30 +++---- YObs.mat | Bin 18124 -> 50489 bytes visible_features.m | 69 ++++++++------ visible_features_model.m | 67 ++++++++------ 14 files changed, 299 insertions(+), 190 deletions(-) create mode 100644 Residuals_withCamera.m diff --git a/.DS_Store b/.DS_Store index c327f86ebf8f4282c4497c2e6083bb740f97d86f..7870c24353ff52011501f690a402807e6feea3a7 100644 GIT binary patch literal 8196 zcmeHMO>Yx15FM9Flm^kN0+dofsf0Lis3;Owl$Jn+_^R3>#A(SFX;9Lwl9Z2I?i}HO z#2?^*#IN9Y@E5ppg7;=k>Rl&kdqJq!((Y_+&ztd^@mNkp#H{YsmPPU+GKGh7Hiy@c z#&JGgo3K5LkOunFYAkP7<MysMGjs$70t118z(8OiFz~N1fHRwIYQ(vpjD~k$ATaP> zGQj#!z(ZNIvY$vT9eC*#0CE!D+VDNg56FU*MJxM>#0Z*6R3Q^pW3Lz{QAdBl&MR8k zPh_Gl#$G;*wQTGS#i(`Q7j(LqVj{ykFc28<8CXQuq%288n$mOc@6#V{b=|RcTq;#s zaRq(cYVS8@zpbRlYh%ZExA%V=nEs@@G%qW%BV}p9c30lwiR3B$kZpY3l{&_HvL_vU zb>U<CUMsFz9|%DEOTV<?OXRZLmRMdvs{@oWu&dDgV}tm#v##T1X=AL1r!y4$YX*Bp zUSO{4Ph|b>`JS0e8SOcFsM=k-8rt50^+?xNmf8@EcNvUDc`Oz9N{_k53ha}Y2rG$! zP{-eqygodC=4Zyje8xf#STX#hjWzX{w#h-#??q&ykwLsT265lhEVCZ2M*52r=^Uci zf^TH-5xlA5+t*?YU9EEiE#^sEb~O{26I|sOB#ozwG&exX`W|6~{&?OP#?!?(KfoZj z^oRM_!9HNd*5m<j8rTWL@{5skvCaaEInRu5>bjT<>(GvoCoxtCe;B#+4&u7ZHHX)Q z192imv;jL!S(fX=Q3brGP%j(-^~P{a%`A7tN5Q-~9Ftj<^7FL%8OuxTR%SUFeM8+0 zYlvh@@1$%XcHG-7XmvBQ5vy^t-I|-rf2<?28N77m?O*wx)5`13a_jG?S#A~1&HsQg zIhFR_UoW{&tzbbm!AwIlY8~0dyu-SYaV2CgD|#D!Rqa{BIIEM#qO$+l$-NobQWm+V z53c>pF<1MHJdyj*i@ZARS=Ov~b*BfqTk37g_m;aiWp55On3bbx>+m7$Dvz$+{DBy5 zZTHu~%yRLj<e9CvnCtI$GCpzDVf+NckKg`tc-<NO`@c>KufRZH;CM1%CQF;8Rjkd7 zSRe1&1w7C3uyI~Lk*b21UdJKzIu1GbhatWTm`a_ZmHkAb2ko!_5Rlwq?EN8iu7&fT Qr?_{{g!3O+dhE{s-$G2ts{jB1 delta 233 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{MGjUE#6q~50$jGrVU^gQp$7CJ>iFnQl(>?>` zSQzve(it)tN^<jET#|C~lOXyU{O)oebwrg<!7E>oVHlj8pIZRb!@xQ1!sJR(N0yfh zLX;-&6IFsS#3ug|72cTofn_l}2ZtatNGZ^T+(5z=<jReS-<c=#%Q%9(!N3S|8xSx- N`~eo*9M3a{8363HF$Dks diff --git a/Analisys_With_Features.m b/Analisys_With_Features.m index 57feef2..8598d64 100644 --- a/Analisys_With_Features.m +++ b/Analisys_With_Features.m @@ -21,7 +21,7 @@ clc MMX_InitializeSPICE cspice_furnsh(which('mar097.bsp')); cspice_furnsh(which('MARPHOFRZ.txt')); - cspice_furnsh(which('MMX_QSO_049_2x2_826891269_828619269.bsp')); + cspice_furnsh(which('MMX_QSO_031_2x2_826891269_828619269.bsp')); % cspice_furnsh(which('MMX_3DQSO_031_009_2x2_826891269_828619269.bsp')); % cspice_furnsh(which('MMX_SwingQSO_031_011_2x2_826891269_828619269.bsp')); cspice_furnsh(which('Phobos_826891269_828619269.bsp')); @@ -68,7 +68,8 @@ clc par.alpha = 1; par.beta = 2; - file_features = 'Principal_Phobos_Ogni10.mat'; + par.Nfeatures = 5; + file_features = 'Principal_Phobos_Ogni5.mat'; % Sembra non osservabile con features e LIDAR only. Come mi aspetterei... % Se prendi solo il lidar, gli envelopes si comportano come mi aspetterei diff --git a/CovarianceAnalysisParameters.m b/CovarianceAnalysisParameters.m index 83ddae6..def5904 100644 --- a/CovarianceAnalysisParameters.m +++ b/CovarianceAnalysisParameters.m @@ -61,7 +61,7 @@ pars.ObsNoise.pixel = .25; % [n. pixel] units.Observations = [units.lsf; units.vsf; units.lsf; units.vsf; units.lsf; units.vsf; units.lsf; 1; 1]; % Matrix of the observation noise -pars.R = zeros(9,9); +pars.R = zeros(8,8); pars.R(1,1) = pars.ObsNoise.range^2; pars.R(2,2) = pars.ObsNoise.range_rate^2; pars.R(3,3) = pars.ObsNoise.range^2; @@ -69,11 +69,10 @@ pars.R(4,4) = pars.ObsNoise.range_rate^2; pars.R(5,5) = pars.ObsNoise.range^2; pars.R(6,6) = pars.ObsNoise.range_rate^2; pars.R(7,7) = pars.ObsNoise.lidar^2; -pars.R(8,8) = pars.ObsNoise.camera^2; -pars.R(9,9) = pars.ObsNoise.camera^2; +pars.R(8,8) = pars.ObsNoise.pixel^2; % Seconds between observation -pars.interval_Range = 3600e10; % s +pars.interval_Range = 3600; % s pars.interval_Range_rate = 600; % s pars.interval_lidar = 600; % s pars.interval_camera = 3600; % s diff --git a/Measurement_read.m b/Measurement_read.m index ce8ff43..3c422c5 100644 --- a/Measurement_read.m +++ b/Measurement_read.m @@ -1,5 +1,6 @@ -function [Yobs, R, Stat_ID_Range, Stat_ID_Rate, check_Lidar, Features_ID] = Measurement_read(Measures,O,units) +function [Yobs, R, Stat_ID_Range, Stat_ID_Rate, check_Lidar, Features_ID, IDX] = Measurement_read(Measures,O,units) + IDX = []; Y_obs = []; R = []; Stat_ID_Range = []; @@ -12,14 +13,17 @@ function [Yobs, R, Stat_ID_Range, Stat_ID_Rate, check_Lidar, Features_ID] = Meas if ~isnan(Measures.Range(1)) Stat_ID_Range = [Stat_ID_Range; 1]; + IDX = [IDX, 1]; end if ~isnan(Measures.Range(2)) Stat_ID_Range = [Stat_ID_Range; 2]; + IDX = [IDX, 3]; end if ~isnan(Measures.Range(3)) Stat_ID_Range = [Stat_ID_Range; 3]; + IDX = [IDX, 5]; end Ranges = Measures.Range(which); @@ -34,19 +38,23 @@ function [Yobs, R, Stat_ID_Range, Stat_ID_Rate, check_Lidar, Features_ID] = Meas if ~isnan(Measures.Rate(1)) Stat_ID_Rate = [Stat_ID_Rate; 1]; + IDX = [IDX, 2]; end if ~isnan(Measures.Rate(2)) Stat_ID_Rate = [Stat_ID_Rate; 2]; + IDX = [IDX, 4]; end if ~isnan(Measures.Rate(3)) Stat_ID_Rate = [Stat_ID_Rate; 3]; + IDX = [IDX, 6]; end Rates = Measures.Rate(which); Y_obs = [Y_obs; Rates./units.vsf]; R = [R; ones(count,1)*O(2,2)]; + end check_Lidar = []; @@ -56,6 +64,7 @@ function [Yobs, R, Stat_ID_Range, Stat_ID_Rate, check_Lidar, Features_ID] = Meas Lidar = Measures.Lidar; Y_obs = [Y_obs; Lidar./units.lsf]; R = [R; O(3,3)]; + IDX = [IDX, 7]; end Yobs.meas = Y_obs; @@ -67,4 +76,5 @@ function [Yobs, R, Stat_ID_Range, Stat_ID_Rate, check_Lidar, Features_ID] = Meas Yobs.cam = []; end + end \ No newline at end of file diff --git a/Observables_model_with_Features.m b/Observables_model_with_Features.m index a413e19..46503fb 100644 --- a/Observables_model_with_Features.m +++ b/Observables_model_with_Features.m @@ -168,11 +168,11 @@ function [G, Rm] = Observables_model_with_Features(et, X, St_ID_Range, St_ID_Rat if ~isempty(Feature_ID) % There should be features - [Sun, ~] = cspice_spkezr('10',et,'MARSIAU','none','499'); + [Sun, ~] = cspice_spkezr('10', et, 'MARSIAU', 'none', '499'); R2Rot = [cos(X(9)), sin(X(9)), 0; -sin(X(9)), cos(X(9)), 0; 0, 0, 1]; - v_Phobos = pars.perifocal2MARSIAU*R2Rot'*([X(8); 0; 0] + ... - cross([0; 0; X(10)],[X(7)*cos(X(9)); X(7)*sin(X(9)); 0])); + v_Phobos = pars.perifocal2MARSIAU*(R2Rot'*([X(8); 0; 0]) + ... + cross([0; 0; X(10)], [X(7)*cos(X(9)); X(7)*sin(X(9)); 0])); Phobos = [r_Phobos.*units.lsf; v_Phobos.*units.vsf]; Xsi = X(13); @@ -195,8 +195,8 @@ function [G, Rm] = Observables_model_with_Features(et, X, St_ID_Range, St_ID_Rat end % Ready to exit - G.meas = [range_Camb; range_rate_Camb; range_Gold; range_rate_Gold; ... - range_Mad; range_rate_Mad; lidar]; + G.meas = [range_Camb; range_Gold; range_Mad; range_rate_Camb; range_rate_Gold; ... + range_rate_Mad; lidar]; G.cam = Y_pix; G.meas(isnan(G.meas)) = []; diff --git a/Observations_Generation.m b/Observations_Generation.m index 4a69054..7194e88 100644 --- a/Observations_Generation.m +++ b/Observations_Generation.m @@ -20,7 +20,7 @@ clc MMX_InitializeSPICE cspice_furnsh(which('mar097.bsp')); cspice_furnsh(which('MARPHOFRZ.txt')); - cspice_furnsh(which('MMX_QSO_049_2x2_826891269_828619269.bsp')); + cspice_furnsh(which('MMX_QSO_031_2x2_826891269_828619269.bsp')); % cspice_furnsh(which('MMX_3DQSO_031_009_2x2_826891269_828619269.bsp')); % cspice_furnsh(which('MMX_SwingQSO_031_011_2x2_826891269_828619269.bsp')); cspice_furnsh(which('Phobos_826891269_828619269.bsp')); @@ -30,7 +30,7 @@ clc % Time of the analysis data = '2026-03-16 00:00:00 (UTC)'; data = cspice_str2et(data); - Ndays = 2; + Ndays = 5; t = Ndays*86400; date_end = data+t; @@ -40,7 +40,7 @@ clc % Covariance analysis parameters pars.et0 = data; [pars, units] = CovarianceAnalysisParameters(pars, units); - file_features = 'Principal_Phobos_Ogni10.mat'; + file_features = 'Principal_Phobos_Ogni5.mat'; % Positin of my target bodies at that date Sun = cspice_spkezr('10', data, 'J2000', 'none', 'MARS'); @@ -51,10 +51,10 @@ clc %% Creazione lista osservabili YObs = Observations_with_features(data, date_end, file_features, pars, units); - YObs(1).Range = []; - YObs(1).Rate = []; - YObs(1).Lidar = []; - YObs(1) = []; +% YObs(1).Range = []; +% YObs(1).Rate = []; +% YObs(1).Lidar = []; +% YObs(1) = []; % YObs(1).features = []; % save('~/tapyr/Edo/YObs'); diff --git a/Observations_with_features.m b/Observations_with_features.m index ec19755..c351e6e 100644 --- a/Observations_with_features.m +++ b/Observations_with_features.m @@ -204,9 +204,9 @@ function YObs = Observations_with_features(date_0, date_end, file_features, pars if (dot(R_MMXP,R_PS)>0)&&(check3>=0)&&(rem(round(i-et0),interval_camera)==0) - Sun = cspice_spkezr('10', i, 'J2000', 'none', 'MARS'); - MMX = cspice_spkezr('-34', i, 'J2000', 'none', 'MARS'); - Phobos = cspice_spkezr('-401', i, 'J2000', 'none', 'MARS'); + Sun = cspice_spkezr('10', i, 'MARSIAU', 'none', 'MARS'); + MMX = cspice_spkezr('-34', i, 'MARSIAU', 'none', 'MARS'); + Phobos = cspice_spkezr('-401', i, 'MARSIAU', 'none', 'MARS'); % What's the Phobos libration angle at that t? Phi = Phi_t(t == (i-et0)); diff --git a/Plotfeatures_Pic.m b/Plotfeatures_Pic.m index 1df6837..6895aa6 100644 --- a/Plotfeatures_Pic.m +++ b/Plotfeatures_Pic.m @@ -1,15 +1,87 @@ -function Plotfeatures_Pic(Y_pix, pars) +function Plotfeatures_Pic(varargin) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Plotfeatures_Pic(Y_pix, Y_pix_light, Y_pix_tot, pars) +% +% Plot the interested features in the image plate +% +% Input: +% +% Y_pix Visible features +% Y_pix_light Features in light but maybe hidden +% Y_pix_tot All the body's features +% pars Structure with problem's parameters +% +% +% +% Author: E.Ciccarelli +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - figure() - grid on - axis equal - hold on - plot(Y_pix(1,:), Y_pix(2,:), 'o', 'Color', 'r'); - xlabel('X','FontSize',16,'Interpreter','latex') - ylabel('Y','FontSize',16,'Interpreter','latex') - xlim([0, 2*pars.camera_intrinsic(3,1)]) - ylim([0, 2*pars.camera_intrinsic(3,2)]) + switch size(varargin,2) + case 2 + Y_pix = varargin{1}; + pars = varargin{2}; + + figure(99) + grid on + axis equal + if ~isempty(Y_pix) + plot(Y_pix(1,:), Y_pix(2,:), 'o', 'Color', 'r'); + end + hold on + xlabel('X','FontSize',16,'Interpreter','latex') + ylabel('Y','FontSize',16,'Interpreter','latex') + xlim([0, 2*pars.camera_intrinsic(3,1)]) + ylim([0, 2*pars.camera_intrinsic(3,2)]) + hold off + pause(.5) + + case 3 + Y_pix = varargin{1}; + Y_pix_light = varargin{2}; + pars = varargin{3}; + + figure(99) + grid on + axis equal + plot(Y_pix_light(1,:), Y_pix_light(2,:), '*', 'Color', 'g'); + hold on + if ~isempty(Y_pix) + plot(Y_pix(1,:), Y_pix(2,:), 'o', 'Color', 'r'); + end + xlabel('X','FontSize',16,'Interpreter','latex') + ylabel('Y','FontSize',16,'Interpreter','latex') + xlim([0, 2*pars.camera_intrinsic(3,1)]) + ylim([0, 2*pars.camera_intrinsic(3,2)]) + hold off + pause(.5) + + case 4 + Y_pix = varargin{1}; + Y_pix_light = varargin{2}; + Y_pix_tot = varargin{3}; + pars = varargin{4}; + + figure(99) + grid on + axis equal + plot(Y_pix_light(1,:), Y_pix_light(2,:), '*', 'Color', 'g'); + hold on + if ~isempty(Y_pix) + plot(Y_pix(1,:), Y_pix(2,:), 'o', 'Color', 'r'); + end + plot(Y_pix_tot(1,:), Y_pix_tot(2,:), '.', 'Color', 'b'); + xlabel('X','FontSize',16,'Interpreter','latex') + ylabel('Y','FontSize',16,'Interpreter','latex') + xlim([0, 2*pars.camera_intrinsic(3,1)]) + ylim([0, 2*pars.camera_intrinsic(3,2)]) + hold off + pause(.5) + + end + end \ No newline at end of file diff --git a/Residuals_withCamera.m b/Residuals_withCamera.m new file mode 100644 index 0000000..0080fc5 --- /dev/null +++ b/Residuals_withCamera.m @@ -0,0 +1,32 @@ +function [err, prefit] = Residuals_withCamera(Y_obs, G, X_bar, X_star, Stat_ID_Range, Stat_ID_Rate, check_Lidar, ... + Features_ID, O, IDX, et, pars, units, file_features) + + +% Preallocation + err = nan(size(O,1),1); + prefit = nan(size(O,1),1); + +% Definition of the residuals + Y_pre = G(et, X_bar, Stat_ID_Range, Stat_ID_Rate, check_Lidar, ... + Features_ID, pars, units, O, file_features)'; + features = features_list(Y_pre.cam, Features_ID); + Y_pre = [Y_pre.meas; features]; + Y_err = G(et, X_star, Stat_ID_Range, Stat_ID_Rate, check_Lidar, ... + Features_ID, pars, units, O, file_features)'; + features = features_list(Y_err.cam, Features_ID); + Y_err = [Y_err.meas; features]; + + if isempty(Features_ID) + err(IDX) = Y_obs - Y_pre; + prefit(IDX) = Y_obs - Y_err; + else + err(IDX) = Y_obs(1:size(IDX,2)) - Y_err(1:size(IDX,2)); + prefit(IDX) = Y_obs(1:size(IDX,2)) - Y_pre(1:size(IDX,2)); + + err(8) = Y_obs(size(IDX,2)+1) - Y_err(size(IDX,2)+1); + prefit(8) = Y_obs(size(IDX,2)+1) - Y_pre(size(IDX,2)+1); + + end + + +end \ No newline at end of file diff --git a/Results.m b/Results.m index 417ed05..08a3097 100644 --- a/Results.m +++ b/Results.m @@ -40,95 +40,66 @@ function Results(Est, YObs_Full, pars, units) % Plot of the post-fit residuals -% figure(1) -% subplot(1,2,1) -% plot(t_obs/3600,Est.pre(1,:),'x','Color','b') -% grid on; -% hold on; -% plot(t_obs/3600,Est.pre(3,:),'x','Color','b') -% plot(t_obs/3600,Est.pre(5,:),'x','Color','b') -% plot(t_obs/3600,3*pars.ObsNoise.range*units.lsf*ones(size(Est.pre(1,:),2)),'.-','Color','b') -% plot(t_obs/3600,-3*pars.ObsNoise.range*units.lsf*ones(size(Est.pre(1,:),2)),'.-','Color','b') -% plot(t_obs/3600,3*pars.ObsNoise.range*units.lsf*ones(size(Est.pre(3,:),2)),'.-','Color','b') -% plot(t_obs/3600,-3*pars.ObsNoise.range*units.lsf*ones(size(Est.pre(3,:),2)),'.-','Color','b') -% plot(t_obs/3600,3*pars.ObsNoise.range*units.lsf*ones(size(Est.pre(5,:),2)),'.-','Color','b') -% plot(t_obs/3600,-3*pars.ObsNoise.range*units.lsf*ones(size(Est.pre(5,:),2)),'.-','Color','b') -% xlabel('$[hour]$') -% ylabel('$[km]$') -% title('Range Pre-fit residual') -% figure(2) -% subplot(1,2,1) -% plot(t_obs/3600,Est.pre(2,:),'x','Color','r') -% grid on; -% hold on; -% plot(t_obs/3600,Est.pre(4,:),'x','Color','r') -% plot(t_obs/3600,Est.pre(6,:),'x','Color','r') -% plot(t_obs/3600,3*pars.ObsNoise.range_rate*units.vsf*ones(size(Est.pre(2,:),2)),'.-','Color','r') -% plot(t_obs/3600,-3*pars.ObsNoise.range_rate*units.vsf*ones(size(Est.pre(2,:),2)),'.-','Color','r') -% plot(t_obs/3600,3*pars.ObsNoise.range_rate*units.vsf*ones(size(Est.pre(4,:),2)),'.-','Color','r') -% plot(t_obs/3600,-3*pars.ObsNoise.range_rate*units.vsf*ones(size(Est.pre(4,:),2)),'.-','Color','r') -% plot(t_obs/3600,3*pars.ObsNoise.range_rate*units.vsf*ones(size(Est.pre(6,:),2)),'.-','Color','r') -% plot(t_obs/3600,-3*pars.ObsNoise.range_rate*units.vsf*ones(size(Est.pre(6,:),2)),'.-','Color','r') -% xlabel('$[hour]$') -% ylabel('$[km/s]$') -% title('RangeRate Pre-fit residual') -% figure(3) -% subplot(1,2,1) -% plot(t_obs/3600,Est.pre(7,:),'x','Color','g') -% grid on; -% hold on; -% plot(t_obs/3600,3*pars.ObsNoise.lidar*units.lsf*ones(size(Est.pre(7,:),2)),'.-','Color','g') -% plot(t_obs/3600,-3*pars.ObsNoise.lidar*units.lsf*ones(size(Est.pre(7,:),2)),'.-','Color','g') -% xlabel('$[hour]$') -% ylabel('$[km]$') -% title('Lidar Pre-fit residual') -% figure(4) -% subplot(1,2,1) -% plot(t_obs/3600,Est.pre(8,:),'x','Color','m') -% grid on; -% hold on; -% plot(t_obs/3600,3*pars.ObsNoise.camera*ones(size(Est.pre(8,:),2)),'.-','Color','m') -% plot(t_obs/3600,-3*pars.ObsNoise.camera*ones(size(Est.pre(8,:),2)),'.-','Color','m') -% xlabel('$[hour]$') -% ylabel('$[rad]$') -% title('Camera Pre-fit residual') -% figure(5) -% subplot(1,2,1) -% plot(t_obs/3600,Est.pre(9,:),'x','Color','k') -% grid on; -% hold on; -% plot(t_obs/3600,3*pars.ObsNoise.camera*ones(size(Est.pre(9,:),2)),'.-','Color','k') -% plot(t_obs/3600,-3*pars.ObsNoise.camera*ones(size(Est.pre(9,:),2)),'.-','Color','k') -% xlabel('$[hour]$') -% ylabel('$[rad]$') -% title('Camera Pre-fit residual') + figure(1) + subplot(2,4,1) + plot(t_obs/3600,Est.pre(1,:)*units.lsf,'x','Color','b') + grid on; + hold on; + plot(t_obs/3600,Est.pre(3,:)*units.lsf,'x','Color','b') + plot(t_obs/3600,Est.pre(5,:)*units.lsf,'x','Color','b') + plot(t_obs/3600,3*pars.ObsNoise.range*units.lsf*ones(size(Est.pre(1,:),2)),'.-','Color','b') + plot(t_obs/3600,-3*pars.ObsNoise.range*units.lsf*ones(size(Est.pre(1,:),2)),'.-','Color','b') + xlabel('$[hour]$') + ylabel('$[km]$') + title('Range Pre-fit residual') + subplot(2,4,2) + plot(t_obs/3600,Est.pre(2,:)*units.vsf,'x','Color','r') + grid on; + hold on; + plot(t_obs/3600,Est.pre(4,:)*units.vsf,'x','Color','r') + plot(t_obs/3600,Est.pre(6,:)*units.vsf,'x','Color','r') + plot(t_obs/3600,3*pars.ObsNoise.range_rate*units.vsf*ones(size(Est.pre(2,:),2)),'.-','Color','r') + plot(t_obs/3600,-3*pars.ObsNoise.range_rate*units.vsf*ones(size(Est.pre(2,:),2)),'.-','Color','r') + xlabel('$[hour]$') + ylabel('$[km/s]$') + title('RangeRate Pre-fit residual') + subplot(2,4,3) + plot(t_obs/3600,Est.pre(7,:)*units.lsf,'x','Color','g') + grid on; + hold on; + plot(t_obs/3600,3*pars.ObsNoise.lidar*units.lsf*ones(size(Est.pre(7,:),2)),'.-','Color','g') + plot(t_obs/3600,-3*pars.ObsNoise.lidar*units.lsf*ones(size(Est.pre(7,:),2)),'.-','Color','g') + xlabel('$[hour]$') + ylabel('$[km]$') + title('Lidar Pre-fit residual') + subplot(2,4,4) + plot(t_obs/3600,Est.pre(8,:),'x','Color','m') + grid on; + hold on; + plot(t_obs/3600,3*pars.ObsNoise.pixel*ones(size(Est.pre(8,:),2)),'.-','Color','m') + plot(t_obs/3600,-3*pars.ObsNoise.pixel*ones(size(Est.pre(8,:),2)),'.-','Color','m') + xlabel('$[hour]$') + ylabel('$[N. pixel]$') + title('Camera Pre-fit residual') -% figure(1) -% subplot(1,2,2) -% histfit([Est.pre(1,:), Est.pre(3,:), Est.pre(5,:)]) -% xlabel('$[km]$') -% title('Range Pre-fit residual') -% figure(2) -% subplot(1,2,2) -% histfit([Est.pre(2,:),Est.pre(4,:), Est.pre(6,:)]) -% xlabel('$[km/s]$') -% title('Range Rate Pre-fit residual') -% figure(3) -% subplot(1,2,2) -% histfit(Est.pre(7,:)) -% xlabel('$[km]$') -% title('Lidar Pre-fit residual') -% figure(4) -% subplot(1,2,2) -% histfit(Est.pre(8,:)) -% xlabel('$[rad]$') -% title('Camera Pre-fit residual') -% figure(5) -% subplot(1,2,2) -% histfit(Est.pre(9,:)) -% xlabel('$[rad]$') -% title('Camera Pre-fit residual') + subplot(2,4,5) + histfit([Est.pre(1,:), Est.pre(3,:), Est.pre(5,:)]) + xlabel('$[km]$') + title('Range Pre-fit residual') + subplot(2,4,6) + histfit([Est.pre(2,:), Est.pre(4,:), Est.pre(6,:)]) + xlabel('$[km/s]$') + title('Range Rate Pre-fit residual') + subplot(2,4,7) + histfit(Est.pre(7,:)) + xlabel('$[km]$') + title('Lidar Pre-fit residual') + subplot(2,4,8) + histfit(Est.pre(8,:)) + xlabel('$[rad]$') + title('Camera Pre-fit residual') + % Square-Root of the MMX covariance error diff --git a/UKF_Tool.m b/UKF_Tool.m index 1f0f79f..ff3cf64 100644 --- a/UKF_Tool.m +++ b/UKF_Tool.m @@ -52,7 +52,7 @@ function [Est] = UKF_Tool(Est0, f, fsigma, G, O, Measures, pars, units, file_fea % The measures must be organized in colums depending on the type of % measure; each row is reffered to a given measure's time. - obs = Measures; + obs = Measures; % n,l and m are respectively the number of states, number of different @@ -155,7 +155,7 @@ function [Est] = UKF_Tool(Est0, f, fsigma, G, O, Measures, pars, units, file_fea (repmat(Xold,1,n)+gamma.*S0)]; % Need to know how many observations are available - [Y_obs, R, Stat_ID_Range, Stat_ID_Rate, check_Lidar, Features_ID] =... + [Y_obs, R, Stat_ID_Range, Stat_ID_Rate, check_Lidar, Features_ID, IDX] =... Measurement_read(Measures(i),O,units); @@ -181,18 +181,6 @@ function [Est] = UKF_Tool(Est0, f, fsigma, G, O, Measures, pars, units, file_fea deltaT = (Measures(i).t-told)*units.tsf; Q = pars.sigma^2*eye(3); switch n - case 14 - Gamma = [eye(q)*deltaT^2/2; eye(q)*deltaT; zeros(n-6,q)]; - Q = Gamma*Q*Gamma' + [zeros(6,n); zeros(n-6,6), pars.sigmaPh^2*... - diag([deltaT^2/2, deltaT, deltaT^2/2, deltaT, deltaT^2/2, deltaT, deltaT^2/2, deltaT])]; - case 17 - Gamma = [eye(q)*deltaT^2/2; eye(q)*deltaT; zeros(n-6,q)]; - Q = Gamma*Q*Gamma' + [zeros(6,n); zeros(n-6,6), pars.sigmaPh^2*... - diag([deltaT^2/2, deltaT, deltaT^2/2, deltaT, deltaT^2/2, deltaT, deltaT^2/2, deltaT, zeros(1,n-14)])]; - case 18 - Gamma = [eye(q)*deltaT^2/2; eye(q)*deltaT; zeros(n-6,q)]; - Q = Gamma*Q*Gamma' + [zeros(6,n); zeros(n-6,6), pars.sigmaPh^2*... - diag([deltaT^2/2, deltaT, deltaT^2/2, deltaT, deltaT^2/2, deltaT, zeros(1,n-12)])]; case 20 Gamma = [eye(q)*deltaT^2/2; eye(q)*deltaT; zeros(n-6,q)]; Q = Gamma*Q*Gamma' + [zeros(6,n); zeros(n-6,6), pars.sigmaPh^2*... @@ -212,8 +200,8 @@ function [Est] = UKF_Tool(Est0, f, fsigma, G, O, Measures, pars, units, file_fea % Sigma point redefinition S_bar = real(sqrtm(P_bar)); - X0 = [(repmat(Xmean_bar,1,n)-gamma.*S_bar),... - (repmat(Xmean_bar,1,n)+gamma.*S_bar)]; + X0 = [(repmat(Xmean_bar,1,n) - gamma.*S_bar),... + (repmat(Xmean_bar,1,n) + gamma.*S_bar)]; Y = zeros(size(Y_obs.meas,1),2*n); Y_feat = cell(2*n); @@ -253,6 +241,7 @@ function [Est] = UKF_Tool(Est0, f, fsigma, G, O, Measures, pars, units, file_fea features= features_list(Y_obs.cam, Features_ID); Y_obs = [Y_obs.meas; features]; + % Innovation covariance and cross covariance R = [R; O(4,4)*ones(size(features,1),1)]; @@ -284,9 +273,12 @@ function [Est] = UKF_Tool(Est0, f, fsigma, G, O, Measures, pars, units, file_fea break end -% err(IDX,i) = (Y_obs - G(et, Xmean_bar, Stat_ID_Range, Stat_ID_Rate, check_Lidar, Features_ID, par,units)'); -% prefit(IDX,i) = (Y_obs - G(et, Xmean_bar, Stat_ID_Range, Stat_ID_Rate, check_Lidar, Features_ID, par,units)'); -% y_t(IDX,i) = y; + + +% Residuals + [err(:,i), prefit(:,i)] = Residuals_withCamera(Y_obs, G, Xmean_bar,... + Xmean_bar, Stat_ID_Range, Stat_ID_Rate, check_Lidar, ... + Features_ID, O, IDX, et, pars, units, file_features); % Storing the results diff --git a/YObs.mat b/YObs.mat index b49c8bc058e06e419c86592fc29341fb688e8d2f..a6fb5c73277e0284d1f3b096dcb6efbd3d06d6a6 100644 GIT binary patch delta 49896 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	R`|}62)L4}3EcI|nHy%TrY}5WOVpam_-%PW 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 IsZ{9y1Au5I(*OVf delta 17276 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 DIT``F diff --git a/visible_features.m b/visible_features.m index 0f584e6..6813aaf 100644 --- a/visible_features.m +++ b/visible_features.m @@ -20,18 +20,7 @@ function [Y_LOS, Y_pix] = visible_features(MMX, Phobos, Sun, Phi, file_features, % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Features defined in the Phobos-fixed reference frame - load(file_features); - R_ini = [0, -1, 0; 1, 0, 0; 0, 0, 1]; - Point_Cloud = R_ini*Point_Cloud'; - points = zeros(4,size(Point_Cloud,2)); - - for n = 1:size(points,2) - points(:,n) = [Point_Cloud(:,n); n]; - end - - -%% Identification of the features that are in light +%% Geometry % Rotation from J200 to Phobos radial reference frame @@ -49,8 +38,39 @@ function [Y_LOS, Y_pix] = visible_features(MMX, Phobos, Sun, Phi, file_features, % Light rays direction in the Phobos-fixed reference frame r_PhSun = RLibration*R2rot*(Sun(1:3) - Phobos(1:3))/norm(Sun(1:3) - Phobos(1:3)); + +% Position of MMX wrt Phobos-fixed frame + + r_sb = MMX(1:3) - Phobos(1:3); + R_sb = norm(r_sb); + r_sb_Ph = RLibration*R2rot*r_sb; + +% MMX-Phobos direction in the Phobos-fixed reference frame + I = r_sb_Ph/R_sb; + + +% Features defined in the Phobos-fixed reference frame + load(file_features); + R_ini = [0, -1, 0; 1, 0, 0; 0, 0, 1]; + Point_Cloud = R_ini*Point_Cloud'; + points = zeros(4,size(Point_Cloud,2)); + Y_pix_tot = zeros(2,size(Point_Cloud,2)); + + for n = 1:size(points,2) + points(:,n) = [Point_Cloud(:,n); n]; + [~, ~, PM] = ProjMatrix(-r_sb_Ph, pars, units); + pix_feat = PM*[-points(1:3,n); 1]; + pix_feat = pix_feat./repmat(pix_feat(3),3,1); + Y_pix_tot = [round(pix_feat(1:2)), Y_pix_tot]; + end + + +%% Identification of the features that are in light + + % Scan on the features to distinguish those in light - point_in_light = []; + point_in_light = []; + Y_pix_light = []; for n = 1:size(points,2) % If the dot product of the incoming light ray and the feature @@ -58,23 +78,16 @@ function [Y_LOS, Y_pix] = visible_features(MMX, Phobos, Sun, Phi, file_features, % then it is in light if dot(r_PhSun, points(1:3,n))<0 point_in_light = [points(:,n), point_in_light]; + [~, ~, PM] = ProjMatrix(-r_sb_Ph, pars, units); + pix_feat = PM*[-points(1:3,n); 1]; + pix_feat = pix_feat./repmat(pix_feat(3),3,1); + Y_pix_light = [round(pix_feat(1:2)), Y_pix_light]; end end - %% Between those features, which ones are inside the FOV? - -% Position of MMX wrt Phobos-fixed frame - - r_sb = MMX(1:3) - Phobos(1:3); - R_sb = norm(r_sb); - r_sb_Ph = RLibration*R2rot*r_sb; - -% MMX-Phobos direction in the Phobos-fixed reference frame - I = r_sb_Ph/R_sb; - visible = []; Y_LOS = []; Y_pix = []; @@ -89,9 +102,11 @@ function [Y_LOS, Y_pix] = visible_features(MMX, Phobos, Sun, Phi, file_features, z_cam = cross(v, I)/norm(cross(v, I)); y_cam = cross(z_cam, I)/norm(cross(z_cam, I)); - angle = acos(dot(I,-i_feat)); + angle_feat = acos(dot(I,-i_feat)); + angle_sun = acos(dot(I,r_PhSun)); + - if (angle<pars.FOV)&&(dot(r_sb_Ph, point_in_light(1:3,n))>0) + if (angle_feat<pars.FOV)&&(angle_sun>pars.FOV)&&(dot(r_sb_Ph, point_in_light(1:3,n))>0) visible = [candidate, visible]; LOS_feat = [y_cam'; z_cam'] * r_sf/norm(r_sf) + [random('Normal',0, pars.ObsNoise.camera);... random('Normal',0, pars.ObsNoise.camera)]; @@ -110,6 +125,6 @@ function [Y_LOS, Y_pix] = visible_features(MMX, Phobos, Sun, Phi, file_features, %% Plot of the Resulting sceene % PlotGeometryAndLight(points, point_in_light, visible, r_sb_Ph, r_PhSun, pars, units); -% Plotfeatures_Pic(Y_pix, pars); +% Plotfeatures_Pic(Y_pix, Y_pix_light, Y_pix_tot, pars); end \ No newline at end of file diff --git a/visible_features_model.m b/visible_features_model.m index 3c744a9..61e0889 100644 --- a/visible_features_model.m +++ b/visible_features_model.m @@ -20,18 +20,7 @@ function [Y_LOS, Y_pix] = visible_features_model(MMX, Phobos, Sun, Phi, file_fea % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Features defined in the Phobos-fixed reference frame - load(file_features); - R_ini = [0, -1, 0; 1, 0, 0; 0, 0, 1]; - Point_Cloud = R_ini*Point_Cloud'; - points = zeros(4,size(Point_Cloud,2)); - - for n = 1:size(points,2) - points(:,n) = [Point_Cloud(:,n); n]; - end - - -%% Identification of the features that are in light +%% Geometry % Rotation from J200 to Phobos radial reference frame @@ -49,8 +38,39 @@ function [Y_LOS, Y_pix] = visible_features_model(MMX, Phobos, Sun, Phi, file_fea % Light rays direction in the Phobos-fixed reference frame r_PhSun = RLibration*R2rot*(Sun(1:3) - Phobos(1:3))/norm(Sun(1:3) - Phobos(1:3)); + +% Position of MMX wrt Phobos-fixed frame + + r_sb = MMX(1:3) - Phobos(1:3); + R_sb = norm(r_sb); + r_sb_Ph = RLibration*R2rot*r_sb; + +% MMX-Phobos direction in the Phobos-fixed reference frame + I = r_sb_Ph/R_sb; + + +% Features defined in the Phobos-fixed reference frame + load(file_features); + R_ini = [0, -1, 0; 1, 0, 0; 0, 0, 1]; + Point_Cloud = R_ini*Point_Cloud'; + points = zeros(4,size(Point_Cloud,2)); + Y_pix_tot = zeros(2,size(Point_Cloud,2)); + + for n = 1:size(points,2) + points(:,n) = [Point_Cloud(:,n); n]; + [~, ~, PM] = ProjMatrix(-r_sb_Ph, pars, units); + pix_feat = PM*[-points(1:3,n); 1]; + pix_feat = pix_feat./repmat(pix_feat(3),3,1); + Y_pix_tot = [round(pix_feat(1:2)), Y_pix_tot]; + end + + +%% Identification of the features that are in light + + % Scan on the features to distinguish those in light - point_in_light = []; + point_in_light = []; + Y_pix_light = []; for n = 1:size(points,2) % If the dot product of the incoming light ray and the feature @@ -58,6 +78,10 @@ function [Y_LOS, Y_pix] = visible_features_model(MMX, Phobos, Sun, Phi, file_fea % then it is in light if dot(r_PhSun, points(1:3,n))<0 point_in_light = [points(:,n), point_in_light]; + [~, ~, PM] = ProjMatrix(-r_sb_Ph, pars, units); + pix_feat = PM*[-points(1:3,n); 1]; + pix_feat = pix_feat./repmat(pix_feat(3),3,1); + Y_pix_light = [round(pix_feat(1:2)), Y_pix_light]; end end @@ -66,15 +90,6 @@ function [Y_LOS, Y_pix] = visible_features_model(MMX, Phobos, Sun, Phi, file_fea %% Between those features, which ones are inside the FOV? -% Position of MMX wrt Phobos-fixed frame - - r_sb = MMX(1:3) - Phobos(1:3); - R_sb = norm(r_sb); - r_sb_Ph = RLibration*R2rot*r_sb; - -% MMX-Phobos direction in the Phobos-fixed reference frame - I = r_sb_Ph/R_sb; - visible = []; Y_LOS = []; Y_pix = []; @@ -90,9 +105,11 @@ function [Y_LOS, Y_pix] = visible_features_model(MMX, Phobos, Sun, Phi, file_fea z_cam = cross(v, I)/norm(cross(v, I)); y_cam = cross(z_cam, I)/norm(cross(z_cam, I)); - angle = acos(dot(I,-i_feat)); + angle_feat = acos(dot(I,-i_feat)); + angle_sun = acos(dot(I,r_PhSun)); + - if (angle<pars.FOV)&&(dot(r_sb_Ph, point_in_light(1:3,n))>0) + if (angle_feat<pars.FOV)&&(angle_sun>pars.FOV)&&(dot(r_sb_Ph, point_in_light(1:3,n))>0) k = 1; visible = [candidate, visible]; LOS_feat = [y_cam'; z_cam'] * r_sf/norm(r_sf) + [random('Normal',0, pars.ObsNoise.camera);... @@ -111,6 +128,6 @@ function [Y_LOS, Y_pix] = visible_features_model(MMX, Phobos, Sun, Phi, file_fea %% Plot of the Resulting sceene % PlotGeometryAndLight(points, point_in_light, visible, r_sb_Ph, r_PhSun, pars, units); -% Plotfeatures_Pic(Y_pix, pars); +% Plotfeatures_Pic(Y_pix, Y_pix_light, Y_pix_tot, pars); end \ No newline at end of file -- GitLab