Estoy tratando de propagar la órbita de un sun-synchronous satellite
. Los datos iniciales están definidos por el TLE.
La órbita del satélite es controlada por el operador mediante maniobras. Es decir, los efectos de las perturbaciones se compensan, la órbita del satélite siempre permanece sincronizada con el sol .
¿Hay alguna forma de propagar la órbita, considerando las condiciones anteriores, haciendo los cálculos sobre los elementos kepletianos ?
Probé el modelo SGP4, pero no es apropiado en este caso.
El TLE ya considera arrastrar hasta algún punto (verifique si BSTAR es negativo, si lo es, entonces el TLE está considerando que se han realizado maniobras). Un BSTAR positivo reduce el semieje mayor (promedio) con el tiempo, un efecto de arrastre. J2, J3 y J4 se consideran parcialmente (piense en la aproximación de la serie de Taylor con puesto a cero).
Si tiene una órbita sincrónica con el sol, entonces se debe considerar al menos J2, de lo contrario, podría no haber tal órbita. Todas las demás perturbaciones son necesarias solo en función de la duración de la propagación y la fidelidad de la simulación: cuánto tiempo se ejecuta la simulación y qué tan precisa debe ser. 2 semanas y baja precisión significa que la salida SGP4 está bien.
Creo que SGP8 considerará las perturbaciones del sol y la luna, pero no SGP4.
Con respecto a qué propagador de órbita debe usar, depende. Si está diseñando una misión espacial que operará en una órbita heliosincrónica, entonces, por lo general, un J2 es mejor. En esos casos, la misión suele tener formas de mantenerse en la órbita diseñada, evitando todas las perturbaciones excepto J2. Por lo tanto, un propagador J2 es mejor. Por otro lado, si está propagando un satélite real utilizando un TLE real, SGP4 es mucho más preciso.
Si usa Julia y SatelliteToolbox.jl , puede seleccionar fácilmente el propagador. Por ejemplo, para un propagador J2 puro:
julia> orbp = init_orbit_propagator(Val{:J2}, Orbit(0.0,7130982.0,0.001111,98.405*pi/180,pi/2,0.0,0.0))
julia> (o,r,v) = propagate!(orbp, collect(0:3:24)*60*60)
julia> r
9-element Array{Array{T,1} where T,1}:
[5.30372e-7, 7.12306e6, 3.58655e-6]
[-9.98335e5, 2.14179e6, -6.72549e6]
[-5.75909e5, -5.83674e6, -4.06734e6]
[6.65317e5, -5.69201e6, 4.2545e6]
[9.62557e5, 2.37418e6, 6.65228e6]
[-1.10605e5, 7.11845e6, -231186.0]
[-1.02813e6, 1.90664e6, -6.79145e6]
[-4.82921e5, -5.97389e6, -3.87579e6]
[750898.0, -5.53993e6, 4.43709e6]
Este propagó la órbita durante 24h y almacenó la información cada 3 horas. Para SGP4, puede hacer lo siguiente:
julia> orbp = init_orbit_propagator(Val{:sgp4}, Orbit(0.0,7130982.0,0.001111,98.405*pi/180,pi/2,0.0,0.0))
julia> (o,r,v) = propagate!(orbp, collect(0:3:24)*60*60)
julia> r
9-element Array{Array{T,1} where T,1}:
[-2159.7, 7.13166e6, -14607.2]
[-1.00096e6, 2.1411e6, -6.73899e6]
[-5.78906e5, -5.83897e6, -4.08451e6]
[6.64614e5, -5.70129e6, 4.24735e6]
[9.6287e5, 2.37768e6, 6.64987e6]
[-1.12629e5, 7.12679e6, -2.45705e5]
[-1.03066e6, 1.90639e6, -6.80469e6]
[-4.86132e5, -5.97626e6, -3.89338e6]
[7.5014e5, -5.54932e6, 4.42998e6]
Si su órbita está definida en el archivo sat.tle
, entonces puede propagar la órbita usando:
julia> tle = read_tle("sat.tle")
1-element Array{SatelliteToolbox.TLE,1}:
TLE
==========================================================
Name: Test
Satellite number: 6251
International designator: 62025E
Epoch (Year): 6
Epoch (Day): 176.82412014
Element set number: 398
Inclination: 58.05790000 deg
RAAN: 54.04250000 deg
Argument of perigee: 139.15680000 deg
Mean anomaly: 221.18540000 deg
Mean motion (n): 15.56387291 revs/day
Revolution number: 677
B*: 0.000000 1/[er]
1 d
---.--- n: 0.000000 rev/day²
2 dt
1 d²
---.--- n: 0.000000 rev/day³
6 dt²
==========================================================
julia> orbp = init_orbit_propagator(Val{:sgp4}, tle[1])
julia> (o,r,v) = propagate!(orbp, collect(0:3:24)*60*60)
julia> r
9-element Array{Array{T,1} where T,1}:
[3.98829e6, 5.49898e6, 928.983]
[4.77232e6, 4.45027e6, -1.90764e6]
[4.99362e6, 2.89039e6, -3.60054e6]
[4.62067e6, 1.00698e6, -4.88731e6]
[3.69211e6, -9.77058e5, -5.62356e6]
[2.31243e6, -2.82934e6, -5.72624e6]
[6.40617e5, -4.33414e6, -5.18251e6]
[-1.1272e6, -5.31664e6, -4.05161e6]
[-2.77972e6, -5.66325e6, -2.45952e6]
cris