CL_dsp_kepCovPropa — Covariance propagation (Keplerian)
[datejj_propa,kep_propa,cov_propa]=CL_dsp_kepCovPropa(datejj,kep,cov,deltaT,t2,[mu])
NOTE1: cov_propa(:,:,i) corresponds to kep_propa(:,i).
NOTE2: function not validated for hyperbolic or parabolic trajectories.
date (date in CNES julian day+ut/24)
keplerian parameters of orbit [m,rad] (6x1)
covariance matrix in keplerian parameters of date tkep(1) (6x6)
time step of propagation [s]
date of end of propagation (CNES julian day+ut/24)
(optionnal) geocentric gravitational constant [m^3/s^2] (default value is %CL_mu)
dates of the ephemeris (1xN)
propagated keplerian ephemeris [m,rad] (6xN)
propagated covariance hypermatrix. (6x6xN with N=steps of propagation)
// EXAMPLE 1 : COVARIANCE PROPAGATION // Initial covariance (keplerian form) : cov_kep_J2000= [ 8254129.00000097, 0.904710673346743, -0.25296140930233, -153.814722529838, -0.0873405978887673, 142.551972603212;... 0.904710673346564, 1.27878889885153e-07, -2.57511240150026e-08, -9.92427397787178e-06, -1.46892590042168e-08, 8.69395433014883e-06;... -0.252961409302354, -2.57511240150028e-08, 2.74656273758585e-07, 7.27805501834616e-06, 2.57619354111221e-08, -6.9123719344411e-06;... -153.814722529867, -9.92427397787742e-06, 7.27805501834523e-06, 0.0051941640873301, 1.14878381803251e-07, -0.00498269946598852;... -0.0873405978887394, -1.46892590042193e-08, 2.57619354111215e-08, 1.14878381801988e-07, 7.37366867731479e-09, 5.2986680551894e-09;... 142.551972603246, 8.69395433015388e-06, -6.91237193443998e-06, -0.00498269946598882, 5.29866805381922e-09, 0.0047866028517896 ]; datejj=21892.7549949074091 // Initial state vector (keplerian form) : kep_J2000=[7029796.35291896;0.00365823931321733;CL_deg2rad(97.9835550359718);CL_deg2rad(47.1878643798241);CL_deg2rad(277.889146255689);CL_deg2rad(-59.0678455373899)]; // Data for propagation deltaT = 10; t2 =datejj+10/1440; // Keplerian propagation of the covariance matrix [datejj_propa,kep_propa,cov_kep]=CL_dsp_kepCovPropa(datejj,kep_J2000,cov_kep_J2000,deltaT,t2); // EXAMPLE2 - PROPAGATION AND COMPUTATION OF POINTING ERRORS SEEN FROM A GROUND STATION // THIS INVOLVES SEVERAL CHANGES OF REFERENCE FRAME // THE JACOBIAN NEEDED FOR COVARIANCE TRANSFORMATION IS COMPUTED // NOTE: COVARIANCES AND JACOBIAN ARE MODELED AS HYPERMATRIX (6,6,N) // Initial Covariance : cov_kep_J2000= [ 8254129.00000097, 0.904710673346743, -0.25296140930233, -153.814722529838, -0.0873405978887673, 142.551972603212;... 0.904710673346564, 1.27878889885153e-07, -2.57511240150026e-08, -9.92427397787178e-06, -1.46892590042168e-08, 8.69395433014883e-06;... -0.252961409302354, -2.57511240150028e-08, 2.74656273758585e-07, 7.27805501834616e-06, 2.57619354111221e-08, -6.9123719344411e-06;... -153.814722529867, -9.92427397787742e-06, 7.27805501834523e-06, 0.0051941640873301, 1.14878381803251e-07, -0.00498269946598852;... -0.0873405978887394, -1.46892590042193e-08, 2.57619354111215e-08, 1.14878381801988e-07, 7.37366867731479e-09, 5.2986680551894e-09;... 142.551972603246, 8.69395433015388e-06, -6.91237193443998e-06, -0.00498269946598882, 5.29866805381922e-09, 0.0047866028517896 ]; datejj=21892.7549949074091 // Initial state vector : kep_J2000=[7029796.35291896;0.00365823931321733;CL_deg2rad(97.9835550359718);CL_deg2rad(47.1878643798241);CL_deg2rad(277.889146255689);CL_deg2rad(-59.0678455373899)]; // Data for propagation deltaT = 10; t2 =datejj+10/1440; // Keplerian Propagation of the covariance matrix [datejj_propa,kep_propa,cov_kep]=CL_dsp_kepCovPropa(datejj,kep_J2000,cov_kep_J2000,deltaT,t2); // Transformation kep ==> car (in J2000) [pos_car,vel_car,jacobkp2car] = CL_oe_kep2car(kep_propa); cov_car=jacobkp2car*cov_kep*jacobkp2car'; //Position J2000 ==> terresetrial reference frame [pos_ter,vel_ter,jacobJ20002ter] = CL_fr_J20002ter(datejj_propa,pos_car,vel_car); // Ground station definition KRU = [CL_deg2rad(-52.64);CL_deg2rad(5.1);200]; // high latitude // Change of reference frame: Terrestrial to topo [pos_car,vel_car,jacobter2topo] = CL_fr_ter2topoN(KRU,pos_ter,vel_ter); jacobter2topo_t=hypermat([6 6 size(kep_propa,2)]); for j=1:size(kep_propa,2) jacobter2topo_t(:,:,j)=jacobter2topo(1:6,1:6); end // Change of coordinate(cartesian to spherical) (azimuth, elevation, distance) [pos_sph,vel_sph,jacobcar2sph] = CL_co_car2sph(pos_car,vel_car); // Global Jacobienne computation and covariance transformation jacobiennetot=jacobcar2sph*jacobter2topo_t*jacobJ20002ter*jacobkp2car; covariancetopoNsph=jacobiennetot*cov_kep*jacobiennetot'; // Conversions for plot erreur_azimut=matrix(covariancetopoNsph(1,1,:),1,size(covariancetopoNsph(6,6,:),3)); erreur_elev=matrix(covariancetopoNsph(2,2,:),1,size(covariancetopoNsph(6,6,:),3)); clear jacobter2topo jacobter2topo_t jacobter2topo covariancetopoNcar //-----------PLOTS------------------------- xset("window",0); plot((datejj_propa(:)-datejj_propa(1))*24,CL_rad2deg(sqrt(erreur_azimut)),'r',... (datejj_propa(:)-datejj_propa(1))*24,CL_rad2deg(sqrt(erreur_elev)),'b') ax=gca(); ax.title.text= "POINTING ERROR"; ax.x_label.text= "Time (h)"; ax.y_label.text= "Pointing error (deg)"; ax.font_size=2; ax.title.font_size=2; ax.x_label.font_size=2; ax.y_label.font_size=2; ax.y_label.auto_rotation="off"; legend("azimuth","elevation"); xgrid()