Name

CL_dsp_kepCovPropa — Covariance propagation (Keplerian)

Calling Sequence

   [datejj_propa,kep_propa,cov_propa]=CL_dsp_kepCovPropa(datejj,kep,cov,deltaT,t2,[mu])
   
   

Description

  • Given a covariance matrix in keplerian parameters (cov) and an ephemeris tkep, this function performs keplerian propagation for the matrix and the ephemeris until date t2 with time step deltaT.

    NOTE1: cov_propa(:,:,i) corresponds to kep_propa(:,i).

    NOTE2: function not validated for hyperbolic or parabolic trajectories.

  • Last update : 05/10/2009

Parameters

datejj:

date (date in CNES julian day+ut/24)

kep:

keplerian parameters of orbit [m,rad] (6x1)

cov:

covariance matrix in keplerian parameters of date tkep(1) (6x6)

deltaT:

time step of propagation [s]

t2:

date of end of propagation (CNES julian day+ut/24)

mu :

(optionnal) geocentric gravitational constant [m^3/s^2] (default value is %CL_mu)

datejj_propa :

dates of the ephemeris (1xN)

kep_propa:

propagated keplerian ephemeris [m,rad] (6xN)

cov_propa:

propagated covariance hypermatrix. (6x6xN with N=steps of propagation)

Authors

CNES - DCT/SB

See also

CL_cor2cov, CL_stat

Examples

// 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()