diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f9f4fed87a611331bed99dcf016a61ae889c7c07 Binary files /dev/null and b/.DS_Store differ diff --git a/MMX_Fcn_CovarianceAnalyses/Cov_Dynamics_Good.m b/MMX_Fcn_CovarianceAnalyses/Cov_Dynamics_Good.m index c85e66e358ca03eb73e021aeda18e314efbfdca4..8397310095a54ee298e06b55ded41de4561eeb3d 100644 --- a/MMX_Fcn_CovarianceAnalyses/Cov_Dynamics_Good.m +++ b/MMX_Fcn_CovarianceAnalyses/Cov_Dynamics_Good.m @@ -69,7 +69,7 @@ function dx = Cov_Dynamics_Good(~,x,par,~) IPhz_bar = x(17+i*size_St); % Position of MMX wrt Phobos - rPh = par.perifocal2MARSIAU*[RPh*cos(theta); RPh*sin(theta); 0]; + rPh = par.perifocal2MARSIAU*RPh*[cos(theta); sin(theta); 0]; rsb = r - rPh; % Rotation matrix from orbit's to Phobos fixed coordinates frame diff --git a/MMX_Fcn_CovarianceAnalyses/Dynamics_MPHandMMX_Inertia.m b/MMX_Fcn_CovarianceAnalyses/Dynamics_MPHandMMX_Inertia.m index f7ea0e9ffca908473b01d6dcbcf653430e0b9482..3b14c94daa63aea4af137d99e8b200694d160aa2 100644 --- a/MMX_Fcn_CovarianceAnalyses/Dynamics_MPHandMMX_Inertia.m +++ b/MMX_Fcn_CovarianceAnalyses/Dynamics_MPHandMMX_Inertia.m @@ -105,9 +105,10 @@ function dx = Dynamics_MPHandMMX_Inertia(~,x,par,~) C_20_Ph = -.5*(2*IPhz_bar - IPhx_bar - IPhy_bar); par.SH.Clm = [1, 0, 0; 0, 0, 0; C_20_Ph, 0, C_22_Ph]./par.SH.Norm(1:3,1:3); - [gb,~,~,~] = SHGM_Full(BO*ON*rsb, par.SH); +% [gb,~,~,~] = SHGM_Full(BO*ON*rsb, par.SH); + [gb,~,G,~] = CGM(BO*ON*rsb, par.SH); gPh = NO*OB*gb; - + % Trascinamento G = par.G; @@ -143,7 +144,7 @@ function dx = Dynamics_MPHandMMX_Inertia(~,x,par,~) dbetady = -rPh(3)*rPh(2)/((1 - rPh(3)^2/RPh^2)^(1/2)*RPh^3); dbetadz = (1/RPh - rPh(3)^2/RPh^3)/(1 - rPh(3)^2/RPh^2)^(1/2); - dVdtheta = 3*G/(2*norm(rPh(1:3))^5)*rPh(1:3)'*(M2*(dA1dtheta'*I1*A1 + A1'*I1*dA1dtheta) + M1*(dA2dtheta'*I2*A2 + A2'*I2*dA2dtheta))*rPh(1:3); + dVdtheta = 3*G/(2*norm(rPh(1:3))^5)*rPh'*(M2*(dA1dtheta'*I1*A1 + A1'*I1*dA1dtheta) + M1*(dA2dtheta'*I2*A2 + A2'*I2*dA2dtheta))*rPh; % Gravitational acceleration in x,y,z g_M_on_PH = -[dRPhdx, dthetadx, dbetadx; dRPhdy, dthetady, dbetady; dRPhdz, dthetadz, dbetadz]*[dVdRPh; dVdtheta; 0]; diff --git a/MMX_Fcn_CovarianceAnalyses/NewCov_ResultsPlot.m b/MMX_Fcn_CovarianceAnalyses/NewCov_ResultsPlot.m index 7ccaa4050b8b0993192fd7604a02bb3f6edff680..1efbc7a75d8368a2704f833239f3c8710cb41670 100644 --- a/MMX_Fcn_CovarianceAnalyses/NewCov_ResultsPlot.m +++ b/MMX_Fcn_CovarianceAnalyses/NewCov_ResultsPlot.m @@ -255,28 +255,41 @@ function NewCov_ResultsPlot(Est, YObs_Full, pars, units) % corr_label(end+1) = {'$\dot{\rho}$'}; % corr_label(end+1) = {'$LIDAR_b$'}; -% figure() -% subplot(1,pars.nBias,1) -% semilogy(t_obs(1:end-1)/3600,3.*squeeze(real(sqrt(Est.P_t(place0+1,place0+1,1:end-1)))),'LineWidth',1,... -% 'DisplayName',('$\rho$'),'Color','b'); -% grid on; -% hold on; -% xlabel('time $[hour]$') -% ylabel('$[km]$') -% subplot(1,pars.nBias,2) -% semilogy(t_obs(1:end-1)/3600,3.*squeeze(real(sqrt(Est.P_t(place0+2,place0+2,1:end-1)))),'LineWidth',1,... -% 'DisplayName',('$\dot{\rho}$'),'Color','r'); -% grid on; -% hold on; -% xlabel('time $[hour]$') -% ylabel('$[km/s]$') -% subplot(1,pars.nBias,3) -% semilogy(t_obs(1:end-1)/3600,3.*squeeze(real(sqrt(Est.P_t(place0+3,place0+3,1:end-1)))),'LineWidth',1,... -% 'DisplayName',('$LIDAR_b$'),'Color','g'); -% grid on; -% hold on; -% xlabel('time $[hour]$') -% ylabel('$[km]$') + figure() + subplot(1,pars.nBias,1) + semilogy(t_obs(1:end-1)/3600,3.*squeeze(real(sqrt(Est.P_t(place0+1,place0+1,1:end-1)))),'LineWidth',1,... + 'DisplayName',('$\rho$'),'Color','b'); + grid on; + hold on; + xlabel('time $[hour]$') + ylabel('$[km]$') + subplot(1,pars.nBias,2) + semilogy(t_obs(1:end-1)/3600,3.*squeeze(real(sqrt(Est.P_t(place0+2,place0+2,1:end-1)))),'LineWidth',1,... + 'DisplayName',('$\dot{\rho}$'),'Color','r'); + grid on; + hold on; + xlabel('time $[hour]$') + ylabel('$[km/s]$') + subplot(1,pars.nBias,3) + semilogy(t_obs(1:end-1)/3600,3.*squeeze(real(sqrt(Est.P_t(place0+3,place0+3,1:end-1)))),'LineWidth',1,... + 'DisplayName',('$LIDAR_b$'),'Color','g'); + grid on; + hold on; + xlabel('time $[hour]$') + ylabel('$[km]$') + + subplot(1,pars.nBias,4) + semilogy(t_obs(1:end-1)/3600,3.*squeeze(real(sqrt(Est.P_t(place0+4,place0+4,1:end-1)))),'LineWidth',1,... + 'DisplayName',('$cam_x$'),'Color','m'); + grid on; + hold on; + xlabel('time $[hour]$') + subplot(1,pars.nBias,5) + semilogy(t_obs(1:end-1)/3600,3.*squeeze(real(sqrt(Est.P_t(place0+5,place0+5,1:end-1)))),'LineWidth',1,... + 'DisplayName',('$cam_y$'),'Color','b'); + grid on; + hold on; + xlabel('time $[hour]$') % diff --git a/MMX_Fcn_CovarianceAnalyses/New_MMX_CovarianceAnalysisParameters.m b/MMX_Fcn_CovarianceAnalyses/New_MMX_CovarianceAnalysisParameters.m index 711573167df0486fe8f2e481d69454d1fb05b7ec..f28b1a462131f8856b35ea31ba34e041c77587a6 100644 --- a/MMX_Fcn_CovarianceAnalyses/New_MMX_CovarianceAnalysisParameters.m +++ b/MMX_Fcn_CovarianceAnalyses/New_MMX_CovarianceAnalysisParameters.m @@ -60,12 +60,8 @@ pars.R(9,9) = pars.ObsNoise.camera^2; % Seconds between observation pars.interval_Range = 3600; % s pars.interval_Range_rate = 600; % s -pars.interval_lidar = 100; % s +pars.interval_lidar = 600; % s pars.interval_camera = 3600; % s -% pars.interval_Range = 100e100; % s -% pars.interval_Range_rate = 100e100; % s -% pars.interval_lidar = 100e100; % s -% pars.interval_camera = 100e100; % s pars.cutoffLIDAR = 200; % km @@ -75,28 +71,36 @@ pars.elevation = 80; % deg pars.I2 = [pars.IPhx_bar; pars.IPhy_bar; pars.IPhz_bar]; % Measurements biases -bias = [0; 0; 0]... - ./[units.lsf; units.vsf; units.lsf]; +% bias = [0; 0; 0]... +% ./[units.lsf; units.vsf; units.lsf]; +% pars.bias = bias; + +bias = [0; 0; 0; 0; 0]... + ./[units.lsf; units.vsf; units.lsf; 1; 1]; pars.bias = bias; % Unit vector and parameters number useful for later use pars.nCoeff = size(pars.I2,1); pars.nBias = size(bias,1); % pars.nBias = 0; +% units.Dim = [units.sfVec; units.lsf; units.vsf; 1; units.tsf;... +% 1; units.tsf; 1; units.tsf; ones(pars.nCoeff,1); units.lsf; units.vsf;... +% units.lsf]; units.Dim = [units.sfVec; units.lsf; units.vsf; 1; units.tsf;... 1; units.tsf; 1; units.tsf; ones(pars.nCoeff,1); units.lsf; units.vsf;... - units.lsf]; -% units.Dim = [units.sfVec; units.lsf; units.vsf; 1; units.tsf;... -% 1; units.tsf; 1; units.tsf; ones(pars.nCoeff,1)]; + units.lsf; 1; 1]; units.CovDim = (repmat(units.Dim, 1, length(units.Dim)).*... repmat(units.Dim', length(units.Dim), 1)); % A-priori covariance k = 1e-1; +% pars.P0 = diag(([.3*ones(3,1); .3e-3*ones(3,1);... +% 1e-1; 1e-4; 1e-5; 1e-7; 3e-1; 1e-3; 3e-1; 1e-3; 1e-2*ones(pars.nCoeff,1);... +% 1; 1e-3; 1]./units.Dim).^2); pars.P0 = diag(([.3*ones(3,1); .3e-3*ones(3,1);... 1e-1; 1e-4; 1e-5; 1e-7; 3e-1; 1e-3; 3e-1; 1e-3; 1e-2*ones(pars.nCoeff,1);... - 1; 1e-3; 1]./units.Dim).^2); + 1; 1e-3; 1; 1e-1; 1e-1]./units.Dim).^2); % pars.P0 = diag(([.3*ones(3,1); .3e-3*ones(3,1);... % 1e-1; 1e-4; 1e-6; 1e-8; 3e-1; 1e-3; 3e-1; 1e-3; 1e-2*ones(pars.nCoeff,1)]./units.Dim).^2); diff --git a/MMX_Fcn_CovarianceAnalyses/New_Observables_model.m b/MMX_Fcn_CovarianceAnalyses/New_Observables_model.m index 8b35543c7a900c901f727edc542fabb986f70262..3f3ced3acd81acc33071ad9064ca478099c1df04 100644 --- a/MMX_Fcn_CovarianceAnalyses/New_Observables_model.m +++ b/MMX_Fcn_CovarianceAnalyses/New_Observables_model.m @@ -64,6 +64,8 @@ function G = New_Observables_model(et,Obs,X,par,units) bias = X(16:end); case 20 bias = X(18:end); + case 22 + bias = X(18:end); end % Definition of Mars position WRT Earth J2000 @@ -176,7 +178,13 @@ function G = New_Observables_model(et,Obs,X,par,units) k = cross(I, j)/norm(cross(I, j)); T = [I, j, k]'; - camera = ([0 1 0; 0 0 1]*T*I)'; + + switch size(X,1) + case 20 + camera = ([0 1 0; 0 0 1]*T*I)'; + case 22 + camera = ([0 1 0; 0 0 1]*T*I)' + [bias(4), bias(5)]; + end end diff --git a/MMX_Fcn_CovarianceAnalyses/Phobos_States_NewModel.m b/MMX_Fcn_CovarianceAnalyses/Phobos_States_NewModel.m index 4769fc3cfa8efdbdcc7640b03abda09f1a7785f1..dc21e010bcee4f66d49219986d2e3461224ddd0f 100644 --- a/MMX_Fcn_CovarianceAnalyses/Phobos_States_NewModel.m +++ b/MMX_Fcn_CovarianceAnalyses/Phobos_States_NewModel.m @@ -13,8 +13,8 @@ function [Ph, par] = Phobos_States_NewModel(data,par) ey = cross(v,h)/par.mu - r/norm(r); ey = ey/norm(ey); Y = cross(eh,ey)/norm(cross(eh,ey)); - par.MARSIAU2perifocal = [ey,Y,eh]'; - par.perifocal2MARSIAU = par.MARSIAU2perifocal'; + par.perifocal2MARSIAU = [ey,Y,eh]; + par.MARSIAU2perifocal = par.perifocal2MARSIAU'; Ph_0 = par.MARSIAU2perifocal*Phobos_0(1:3); theta = atan2(Ph_0(2),Ph_0(1)); diff --git a/MMX_Fcn_CovarianceAnalyses/UKF_CovarianceAnalysis.m b/MMX_Fcn_CovarianceAnalyses/UKF_CovarianceAnalysis.m index 5865ebb38ef7d2b7da86e5292e1b4fbe6cbd528a..4683531b2f64b8e392c66d36ddefb79744fc146b 100644 --- a/MMX_Fcn_CovarianceAnalyses/UKF_CovarianceAnalysis.m +++ b/MMX_Fcn_CovarianceAnalyses/UKF_CovarianceAnalysis.m @@ -97,6 +97,8 @@ function [Est] = UKF_CovarianceAnalysis(Est0,f,fsigma,G,O,Measures,par,units) St0 = par.X0_reference; case 20 St0 = Xold(1:17); + case 22 + St0 = Xold(1:17); end tspan = (0:min_interval:tobs(end))*units.tsf; @@ -133,6 +135,8 @@ function [Est] = UKF_CovarianceAnalysis(Est0,f,fsigma,G,O,Measures,par,units) % For-loop on the observations for i = 1:m + fprintf('\nProcesso osservazione n.: %d', i) + % Look for the observation to process if tobs(i) == told idx = 1; @@ -146,6 +150,8 @@ function [Est] = UKF_CovarianceAnalysis(Est0,f,fsigma,G,O,Measures,par,units) par.PhiM = X(idx,11); case 20 Xmean_bar = [X(idx,:)'; 0; 0; 0]; + case 22 + Xmean_bar = [X(idx,:)'; 0; 0; 0; 0; 0]; end elseif tobs(i) > told idx = find(round(t/units.tsf)==tobs(i)); @@ -158,6 +164,8 @@ function [Est] = UKF_CovarianceAnalysis(Est0,f,fsigma,G,O,Measures,par,units) Xmean_bar = [X(idx,1:10)'; X(idx,13:end)'; 0; 0; 0]; case 20 Xmean_bar = [X(idx,:)'; 0; 0; 0]; + case 22 + Xmean_bar = [X(idx,:)'; 0; 0; 0; 0; 0]; end end @@ -208,7 +216,6 @@ function [Est] = UKF_CovarianceAnalysis(Est0,f,fsigma,G,O,Measures,par,units) Xbar = reshape(X_sigma(end,1:n*(2*n))',[n,(2*n)]); end - i % Process noise if needed @@ -231,6 +238,10 @@ function [Est] = UKF_CovarianceAnalysis(Est0,f,fsigma,G,O,Measures,par,units) Gamma = [eye(q)*deltaT^2/2; eye(q)*deltaT; zeros(n-6,q)]; Q = Gamma*Q*Gamma' + [zeros(6,n); zeros(n-6,6), par.sigmaPh^2*... diag([deltaT^2/2, deltaT, deltaT^2/2, deltaT, deltaT^2/2, deltaT, deltaT^2/2, deltaT, zeros(1,n-14)])]; + case 22 + Gamma = [eye(q)*deltaT^2/2; eye(q)*deltaT; zeros(n-6,q)]; + Q = Gamma*Q*Gamma' + [zeros(6,n); zeros(n-6,6), par.sigmaPh^2*... + diag([deltaT^2/2, deltaT, deltaT^2/2, deltaT, deltaT^2/2, deltaT, deltaT^2/2, deltaT, zeros(1,n-14)])]; end % Covariance matrix's time update diff --git a/MMX_Product/.DS_Store b/MMX_Product/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..889ff5794b329496a4322246213cc9c1ae3258b0 Binary files /dev/null and b/MMX_Product/.DS_Store differ diff --git a/MMX_Product/MMX_BSP_Files_GravLib/.DS_Store b/MMX_Product/MMX_BSP_Files_GravLib/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..418b13c2cf4e440f631bf902850e834fef6f6693 Binary files /dev/null and b/MMX_Product/MMX_BSP_Files_GravLib/.DS_Store differ diff --git a/MMX_Product/MMX_BSP_Files_GravLib/MARPHOFRZ.txt b/MMX_Product/MMX_BSP_Files_GravLib/MARPHOFRZ.txt new file mode 100644 index 0000000000000000000000000000000000000000..db722d0e2c3839c223ddb77c50f2c9a0a51feef1 --- /dev/null +++ b/MMX_Product/MMX_BSP_Files_GravLib/MARPHOFRZ.txt @@ -0,0 +1,22 @@ +\begindata + FRAME_MARPHOFRZ = 14499401 + FRAME_14499401_NAME = 'MARPHOFROZEN' + FRAME_14499401_CLASS = 5 + FRAME_14499401_CLASS_ID = 14499401 + FRAME_14499401_CENTER = 499 + FRAME_14499401_RELATIVE = 'J2000' + FRAME_14499401_DEF_STYLE = 'PARAMETERIZED' + FRAME_14499401_FAMILY = 'TWO-VECTOR' + FRAME_14499401_PRI_AXIS = 'X' + FRAME_14499401_PRI_VECTOR_DEF = 'OBSERVER_TARGET_POSITION' + FRAME_14499401_PRI_OBSERVER = 499 + FRAME_14499401_PRI_TARGET = 401 + FRAME_14499401_PRI_ABCORR = 'NONE' + FRAME_14499401_SEC_AXIS = 'Y' + FRAME_14499401_SEC_VECTOR_DEF = 'OBSERVER_TARGET_VELOCITY' + FRAME_14499401_SEC_OBSERVER = 499 + FRAME_14499401_SEC_TARGET = 401 + FRAME_14499401_SEC_ABCORR = 'NONE' + FRAME_14499401_SEC_FRAME = 'J2000' + FRAME_14499401_FREEZE_EPOCH = @2026-MAR-16/00:00:00.00 +\begintext diff --git a/Model_Check/TestIntegrCovAnalMMXPhonly.m b/Model_Check/TestIntegrCovAnalMMXPhonly.m index b5bd9c98ee0050dfa66e52341cfa0177df845083..b47f34f3b3c48c52591b85de5c4c31e9c6ed3ec8 100644 --- a/Model_Check/TestIntegrCovAnalMMXPhonly.m +++ b/Model_Check/TestIntegrCovAnalMMXPhonly.m @@ -42,7 +42,7 @@ clc Ph0 = Ph./units.sfVec2; % Initial MMX's State vector - MMX0 = cspice_spkezr('-33', data, 'MARSIAU', 'none', '499')./units.sfVec; + MMX0 = cspice_spkezr('-34', data, 'MARSIAU', 'none', '499')./units.sfVec; % Initial state vector St0 = [MMX0; Ph0]; diff --git a/Model_Check/TestIntegrWithMMX.m b/Model_Check/TestIntegrWithMMX.m index 38ed5ac8f67ebbd2dcd8cf762344102a830e2d8d..5e212d0177f4b480940a2a869dd4978d498d980a 100644 --- a/Model_Check/TestIntegrWithMMX.m +++ b/Model_Check/TestIntegrWithMMX.m @@ -18,6 +18,7 @@ clc addpath(genpath('../MMX_Product/MMX_BSP_Files_GravLib/')); MMX_InitializeSPICE cspice_furnsh(which('mar097.bsp')); + cspice_furnsh(which('MARPHOFRZ.txt')); cspice_furnsh(which('MMX_QSO_031_2x2_826891269_828619269.bsp')); cspice_furnsh(which('Phobos_826891269_828619269.bsp')); @@ -46,10 +47,10 @@ clc % Initial state vector St0 = [MMX0; Ph0]; - + % Integration day = 24*3600; - tspan = (0:150:10*day)*units.tsf; + tspan = (0:150:day)*units.tsf; RelTol = 1e-13; AbsTol = 1e-16; opt = odeset('RelTol',RelTol,'AbsTol',AbsTol); diff --git a/Model_Check/TestIntegrWithMMXInertia.m b/Model_Check/TestIntegrWithMMXInertia.m index 999834fccbd629b1f281310a30f991abbee9b66a..d9e69855ad1951d783b435506a3e51ccfa621a1e 100644 --- a/Model_Check/TestIntegrWithMMXInertia.m +++ b/Model_Check/TestIntegrWithMMXInertia.m @@ -19,7 +19,7 @@ clc MMX_InitializeSPICE cspice_furnsh('MARPHOFRZ.txt'); cspice_furnsh(which('mar097.bsp')); - cspice_furnsh(which('MMX_QSO_049_2x2_826891269_831211269.bsp')); + cspice_furnsh(which('MMX_QSO_031_2x2_826891269_828619269.bsp')); % cspice_furnsh(which('MMX_3DQSO_027_009_2x2_826891269_828619269.bsp')); % cspice_furnsh(which('MMX_SwingQSO_027_007_2x2_826891269_831211269.bsp')); cspice_furnsh(which('Phobos_826891269_828619269.bsp')); @@ -52,10 +52,11 @@ clc % Initial state vector St0 = [MMX0; Ph0]; St02 = [MMX0; Ph0; par.IPhx_bar; par.IPhy_bar; par.IPhz_bar]; + dx = Dynamics_MPHandMMX_Inertia(0,St02,par,units); % Integration day = 24*3600; - tspan = (0:100:5*day)*units.tsf; + tspan = (0:100:2*day)*units.tsf; RelTol = 1e-13; AbsTol = 1e-16; opt = odeset('RelTol',RelTol,'AbsTol',AbsTol,'event', @(t,X) landing_Phobos(t,X,par,units)); @@ -212,4 +213,27 @@ clc end fclose(file); - movefile('MMX_QSOLa_Blender.txt','../../computer-vision/MMX/'); \ No newline at end of file + movefile('MMX_QSOLa_Blender.txt','../../computer-vision/MMX/'); + + +%% Difference wrt SPICE + + + MMX_t = cspice_spkezr('-34', data+t', 'MARSIAU', 'none', '499')./units.sfVec; + + + + figure() + plot(t/3600, X1(:,1) - MMX_t(1,:)') + grid on + hold on + plot(t/3600, X1(:,2) - MMX_t(2,:)') + plot(t/3600, X1(:,3) - MMX_t(3,:)') + + figure() + plot(t/3600, X1(:,4) - MMX_t(4,:)') + grid on + hold on + plot(t/3600, X1(:,5) - MMX_t(5,:)') + plot(t/3600, X1(:,6) - MMX_t(6,:)') + \ No newline at end of file diff --git a/Model_Check/TestIntegratorNew.m b/Model_Check/TestIntegratorNew.m index 87d4736aae2cd01cbd0925991e85d2fdbc3e69e2..43416f0f79336f0fe101e665a1006a2c5a3043f5 100644 --- a/Model_Check/TestIntegratorNew.m +++ b/Model_Check/TestIntegratorNew.m @@ -35,7 +35,7 @@ clc startdate = '2026-03-16 00:00:00 (UTC)'; data = cspice_str2et(startdate); - [Ph, par] = Phobos_States_NewModel(data,par); + [Ph, par] = Phobos_States_NewModelPiu(data,par); Ph = Ph./units.sfVec2; day = 24*3600; @@ -43,7 +43,7 @@ clc St0 = [Ph; reshape(eye(par.d2),[par.d2^2,1])]; % Integration - tspan = [0, 10*day]*units.tsf; + tspan = [0, 2*day]*units.tsf; RelTol = 1e-13; AbsTol = 1e-16; opt = odeset('RelTol',RelTol,'AbsTol',AbsTol); @@ -283,13 +283,13 @@ clc grid on; hold on; plot(t/3600,mod(Phi2_t,2*pi)); - ylabel('$\dot{\Phi}_{Ph}$ [rad]','Fontsize',26) + ylabel('$\Phi_{Ph}$ [rad]','Fontsize',26) xlabel('[hours]','Fontsize',26) legend('Integrated','Spice','Fontsize',22) subplot(2,4,7) plot(t/3600,angdiff(X(:,7)',Phi2_t)); grid on; - ylabel('$\Delta \dot{\Phi}_{Ph}$ [rad]','Fontsize',26) + ylabel('$\Delta \Phi_{Ph}$ [rad]','Fontsize',26) xlabel('[hours]','Fontsize',26) % Phi2_dot Spice and integration diff --git a/New_MMXCov_Analysis.m b/New_MMXCov_Analysis.m index fdb21e6655192656fba72da5a3d38f4591e7f04f..45f4e21c2de48ea6ec4e6374bbf7e13d4157d969 100644 --- a/New_MMXCov_Analysis.m +++ b/New_MMXCov_Analysis.m @@ -20,17 +20,17 @@ clc MMX_InitializeSPICE cspice_furnsh(which('mar097.bsp')); cspice_furnsh(which('MARPHOFRZ.txt')); -% cspice_furnsh(which('MMX_QSO_027_2x2_826891269_828619269.bsp')); - cspice_furnsh(which('MMX_3DQSO_031_009_2x2_826891269_828619269.bsp')); -% cspice_furnsh(which('MMX_SwingQSO_031_011_2x2_826891269_831211269.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_831211269.bsp')); cspice_furnsh(which('Phobos_826891269_828619269.bsp')); %% Load observations and path for syntethic pictures - load("./ObservationsHPC/Observations-3DQSOLb_16.mat"); -% load("./Observations.mat"); +% load("./ObservationsHPC/Observations-3DQSOLb_16.mat"); + load("./Observations.mat"); %% Initial conditions for the analysis @@ -67,15 +67,13 @@ clc %% Analysis -% YObs_Full(2,:) = NaN; -% YObs_Full(4,:) = NaN; -% YObs_Full(6,:) = NaN; +% YObs_Full(8,1) = NaN; par.alpha = 1; par.beta = 2; - [Est] = UKF_CovarianceAnalysis(Est0,@Dynamics_MPHandMMX_Inertia,... + [Est] = UKF_CovarianceAnalysis(Est0, @Dynamics_MPHandMMX_Inertia,... @Cov_Dynamics_Good, @New_Observables_model,... - par.R,YObs_Full,par,units); + par.R, YObs_Full, par,units); % save('SwingQSOLb_PN10_alpha51_16.mat','Est'); % movefile('SwingQSOLb_PN10_alpha51_16.mat','./ResultsHPC/') diff --git a/New_MMXCov_ObsGen.m b/New_MMXCov_ObsGen.m index 04f78970fc6f5f71985b3782e313c3a28c99c195..18d9f7d2a9250c669bde324930eed6c6b1065f9b 100644 --- a/New_MMXCov_ObsGen.m +++ b/New_MMXCov_ObsGen.m @@ -18,16 +18,16 @@ clc MMX_InitializeSPICE cspice_furnsh(which('mar097.bsp')); cspice_furnsh(which('MARPHOFRZ.txt')); - cspice_furnsh(which('MMX_QSO_094_2x2_826891269_828619269.bsp')); -% cspice_furnsh(which('MMX_3DQSO_094_009_2x2_826891269_828619269.bsp')); -% cspice_furnsh(which('MMX_SwingQSO_031_011_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')); % Time of the analysis data = '2026-03-16 00:00:00 (UTC)'; data = cspice_str2et(data); day = 86400; - PropTime = 7*day; + PropTime = 10*day; date_end = data+PropTime; % Model parameters @@ -47,5 +47,5 @@ clc % YObs_Full(7,:) = NaN; % YObs_Full(end-2:end,:) = NaN; - save('./ObservationsHPC/Observations-QSOM_16_Lidar5Min.mat','YObs_Full'); -% save('Observations.mat','YObs_Full'); +% save('./ObservationsHPC/Observations-QSOM_16_Lidar5Min.mat','YObs_Full'); + save('Observations.mat','YObs_Full'); diff --git a/Observations.mat b/Observations.mat index c7e8cef8a60edcb382b07c9351f2571d04f615eb..937e61d65b1f4cef677935340708541fcc579288 100644 Binary files a/Observations.mat and b/Observations.mat differ diff --git a/PlotFinali.m b/PlotFinali.m index 28595be058f9e4157fbae3e3d68a9551313f7352..0be4b29333b0ac98dab2a381243f9f42afac63d8 100644 --- a/PlotFinali.m +++ b/PlotFinali.m @@ -549,8 +549,8 @@ fineCss = round(coeff*size(t_obs,2)); [par,~] = MMX_DefineNewModelParametersAndUnits; -C_20 = par.SH.Clm(3,1); -C_22 = par.SH.Clm(3,3); +C_22 = .25*(par.IPhy_bar - par.IPhx_bar); +C_20 = -.5*(2*par.IPhz_bar - par.IPhx_bar - par.IPhy_bar); t_obs = EstQSO.t(1,:); @@ -590,25 +590,25 @@ xlabel('Time $[hour]$','Fontsize',26) ylabel('$3\sigma_{C_{22}}$','Fontsize',30) legend('QSO','3D-QSO','Swing-QSO','Interpreter','latex','Fontsize',26) -% figure() -% subplot(1,2,1) -% semilogy(t_obs(1:end-1)/3600,C_20_QSO_perc,'LineWidth',1.2); -% grid on; -% hold on; -% semilogy(t_obs(1:end-1)/3600,C_20_3D_perc,'LineWidth',1.2); -% semilogy(t_obs(1:end-1)/3600,C_20_Swing_perc,'LineWidth',1.2); -% xlabel('Time $[hour]$','Fontsize',26) -% ylabel('%','Fontsize',26) -% legend('QSO','3D-QSO','Swing-QSO','Interpreter','latex','Fontsize',26) -% subplot(1,2,2) -% semilogy(t_obs(1:end-1)/3600,C_22_QSO_perc,'LineWidth',1.2); -% grid on; -% hold on; -% semilogy(t_obs(1:end-1)/3600,C_22_3D_perc,'LineWidth',1.2); -% semilogy(t_obs(1:end-1)/3600,C_22_Swing_perc,'LineWidth',1.2); -% xlabel('Time $[hour]$','Fontsize',26) -% ylabel('%','Fontsize',26) -% legend('QSO','3D-QSO','Swing-QSO','Interpreter','latex','Fontsize',26) +figure() +subplot(1,2,1) +semilogy(t_obs(1:end-1)/3600,C_20_QSO_perc,'LineWidth',1.2); +grid on; +hold on; +semilogy(t_obs(1:end-1)/3600,C_20_3D_perc,'LineWidth',1.2); +semilogy(t_obs(1:end-1)/3600,C_20_Swing_perc,'LineWidth',1.2); +xlabel('Time $[hour]$','Fontsize',26) +ylabel('\% $|C_{20}|$','Fontsize',26,'Interpreter','latex') +legend('QSO','3D-QSO','Swing-QSO','Interpreter','latex','Fontsize',26) +subplot(1,2,2) +semilogy(t_obs(1:end-1)/3600,C_22_QSO_perc,'LineWidth',1.2); +grid on; +hold on; +semilogy(t_obs(1:end-1)/3600,C_22_3D_perc,'LineWidth',1.2); +semilogy(t_obs(1:end-1)/3600,C_22_Swing_perc,'LineWidth',1.2); +xlabel('Time $[hour]$','Fontsize',26) +ylabel('\% $|C_{22}|$','Fontsize',26,'Interpreter','latex') +legend('QSO','3D-QSO','Swing-QSO','Interpreter','latex','Fontsize',26) diff --git a/Reference_Definition/BSP_generator.m b/Reference_Definition/BSP_generator.m index ce74f4a86794d501481872ac1efcad26fe9b7f2d..5ee32809506ed32332331a943620beb4508d6b67 100644 --- a/Reference_Definition/BSP_generator.m +++ b/Reference_Definition/BSP_generator.m @@ -51,7 +51,7 @@ clc % X_MMX = X_good(1:6,1); % If MMX comes from a .bsp file - cspice_furnsh(which('MMX_QSO_198_2x2_826891269_828619269.bsp')); + cspice_furnsh(which('MMX_QSO_031_2x2_826891269_828619269.bsp')); X_MMX = cspice_spkezr('-34', data, 'MARSIAU', 'none', '499')./units.sfVec;