Sei sulla pagina 1di 5

ESERCITAZIONE 1.

CALCOLO E RAPPRESENTAZIONE DI ORBITE TRIDIMENSIONALI

1. Testo dellesercitazione Utilizzando il linguaggio di programmazione MATLAB, lo studente risolva il seguente problema: Parte 1 Dati posizione e velocit iniziali di un satellite in un riferimento inerziale ed un vettore di epoche, calcolare posizione e velocit del satellite in corrisponenza di ciascuna epoca e rappresentare gracamente la traiettoria del satellite nel riferimento inerziale, salvando una copia su le. Parte 2 Assumendo che la Terra sia sferica e ruoti con velocit angolare costante, calcolare e rappresentare gracamente la traccia a terra di un satellite di cui nota la posizione nel riferimento inerziale in un certo numero di istanti temporali. A titolo di esempio, si consideri un satellite che il 15/01/1995 @ 00:00:00 si trova

 r5455.960044 3150.000000 0.000000s km v0  r2.568070 4.448029 6.573961s km/s


r0

Si applichino i programmi precedentemente sviluppati per calcolare traiettoria orbitale e traccia a terra nelle successive 24 ore. Dati:

 398600.4415 km3/s2 rC  6378.1363 km G0  100 il 1/1/1995 @ 00:00:00 Tsid  86164 s

ESERCITAZIONE 1.

CALCOLO E RAPPRESENTAZIONE DI ORBITE TRIDIMENSIONALI

2. Schema di risoluzione Parte 1. Creare le funzioni base per la soluzione di problemi di meccanica orbitale: rvECI2coe, coe2rvECI, anu2AE, AE2XM, XM2AE, AE2anu. usando le interfacce suggerite.
function function function function function function COE = rvECI2coe ( rVectECI , vVectECI , amu) [ rVectECI , vVectECI ] = coe2rvECI (COE, amu) AE = anu2AE ( ecc , anu ) XM = AE2XM( ec c ,AE) AE = XM2AE( ecc ,XM) anu = AE2anu ( ecc ,AE)

Creare una funzione CorePropagator


f u n c t i o n [ r1 , v1 ] = C o r e P r o p a g a t o r ( r0 , v0 , dt )

che assegnata una coppia qualunque r0 , v0 riferita ad unepoca t0 , calcoli posizione r1 e velocit v1 del satellite dopo un tempo dt. Creare una funzione ShellPropagator
f u n c t i o n [ rMatrixECI , vMatrixECI ] = S h e l l P r o p a g a t o r ( r0 , v0 , t s p a n )

che, assegnato un vettore di epoche tspan = [t0 , t1 , t2 , . . . , tn1 ], valuti la posizione/velocit del satellite agli istanti corrispondenti { (r0 ,v0 ),(r1 ,v1 ), ..., (rn1 ,vn1 ) } usando lalgoritmo sviluppato in precedenza e li salvi nelle matrici rMatrixECI, vMatrixECI di dimensioni 3 n. Creare una funzione DisegnaTraj3D
f u n c t i o n DisegnaTraj3D ( rMatrixECI )

che mostri a schermo una gura con la traiettoria del satellite in un riferimento inerziale e salvarla su le. Di seguito sono raccolti gli pseudocodici delle funzioni pi complesse: Algorithm 1 Pseudocode for CorePropagator function CorePropagator(r0 , v0 , dt) ricavo elementi orbitali classici coe rv2coe pr0 , v0 q AE0 anu2AE pe, anu0 q calcolo anomalia eccentrica al tempo t0 XM0 AE 2XM pe, AE0 q calcolo anomalia media al tempo t0 XM1 t. . .u calcola anomalia media al tempo t1 AE1 XM 2AE pe, XM1 q calcolo anomalia eccentrica al tempo t1 calcolo anomalia vera al tempo t1 anu1 AE 2anu pe, AE1 q coe update coe at t1 aggiorno gli elementi orbitali (solo lanomalia vera!) r, v coe2rvECI pcoeq ricavo pos/vel dagli elementi orbitali aggiornati end function

ESERCITAZIONE 1.

CALCOLO E RAPPRESENTAZIONE DI ORBITE TRIDIMENSIONALI

Algorithm 2 Pseudocode for ShellPropagator function ShellPropagator(r0 , v0 , tspan) for i n do dt tspanpiq tspanp1q r, v CorePropagator pr0 , v0 , dtq rM atrixECI p:, iq r; vM atrixECI p:, iq v ; end for end function Algorithm 3 Pseudocode for DisegnaTraj3D function DisegnaTraj3D(rMatrixECI) gure() denisci il layout X, Y, Z rMatrixECI plot3(X,Y,Z,-b) save pdf end function Parte 2. Creare una funzione ECI2ECEF
f u n c t i o n [ rVectECEF ] = ECI2ECEF(JD , rVectECI )

propago da t0 a tspan(i)

nuova gura (viewpoint, x,y,z-label, title) disegna lorbita

che trasforma un vettore posizione in componenti ECI nelle corrispondenti compomenti valutate in un riferiemento Earth-Centered Earth-Fixed, allepoca JD. Creare una funzione rect2polar
f u n c t i o n [ r , th , f i ] = r e c t 2 p o l a r ( r V e c t )

che trasforma un set di componenti cartesiane in componenti polari (modulo, longitudine, latitudine). Creare una funzione CoreTrace
f u n c t i o n [ Lat , Long ] = CoreTrace (JD , rVectECI )

che, dato un singolo vettore di posizione nel riferimento inerziale rECI riferito allepoca JD, ne calcoli limpronta a Terra. Creare una funzione ShellTrace che, assegnato un vettore 1 n di epoche tspanM JD  rt1 , t2 , . . . , tn1 ], ed una matrice 3n rMatrixECI contenente la posizione del satellite nel riferimento inerziale negli istanti corrispondenti, valuti per ciascuno longitudine e latitudine Lo , La usando lalgoritmo sviluppato in precedenza e li salvi nelle matrici LongVect, LatVect di dimensioni 1 n. Creare una funzione DisegnaTraccia2D
f u n c t i o n D i s e g n a T r a c c i a 2 D ( LatVect , LongVect ) f u n c t i o n [ LatVect , LongVect ] = S h e l l T r a c e ( rMatrixECI , tspan_MJD )

che mostri a schermo (e salvi su le) una gura con la traccia a terra del satellite nel piano Longitudine-Latitudine. Di seguito sono raccolti gli pseudocodici delle funzioni pi complesse:

ESERCITAZIONE 1.

CALCOLO E RAPPRESENTAZIONE DI ORBITE TRIDIMENSIONALI

Algorithm 4 Pseudocode for CoreTrace function CoreTrace(MJD, rVectECI) rVectECEF ECI2ECEF(MJD,rVectECI) Lat,Long rect2polar(rVectECEF) end function Algorithm 5 Pseudocode for ShellTrace function ShellTraccia(rMatrixECI, tspan) for i n do rVectECI rMatrixECI(:,i) Lat,Lon CoreTrace pMJD, rVectECIq LatVect(i) Lat; LongVect(i) Lon; end for end function Algorithm 6 Pseudocode for ECI2ECEF function ECI2ECEF(MJD,rVectECI) Dene problem constant solar day, sidereal day, Earth rotation rate Evaluate grw Right ascension of Greenwich Meridian TECI 2ECEF R3 pgrw q Rotation matrix from ECI to ECEF rVectECEF TECI 2ECEF rVectECI end function Nomi delle variabili usate nel codice: rVectECI: [3x1] S/C position in ECI vVectECI: [3x1] S/C velocity in ECI rVectECI: [3x1] S/C position in ECEF amu: grav. parameter of the primary body COE: classical orbital elements [a; ecc; ainc; gom; pom; anu] a: semi-major axis ainc: inclination gom: right ascension of the ascending node (RAAN) pom: perigee argument anu: true anomaly AE: eccentric anomaly XM: mean anomaly MJD: Modied Julian Date tspan_MJD: [1 n] vector of epochs in seconds tspan: [1 n] vector of epochs in MJD Consigli:

ESERCITAZIONE 1.

CALCOLO E RAPPRESENTAZIONE DI ORBITE TRIDIMENSIONALI

(1) Usare sempre vettori colonna per le variabili posizione e velocit; (2) Salvare su pdf usando il comando:
iResolution = 600; ImgNameStr = p i c 1 ; p r i n t ( dpdf , s p r i n t f ( r%d , i R e s o l u t i o n ) , s t r c a t ( ImgNameStr , . p d f ) ) ;