Propagación de la órbita del satélite heliosíncrono

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.

¿Puedes agregar la fuente de las imágenes que publicaste?

Respuestas (2)

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 j 2 2 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.

En estos días, el paraguas "SGP4" incluye SDP4 y, por lo tanto, tiene una capacidad limitada para aproximarse a las perturbaciones del Sol y la Luna. Ver correcciones de "Espacio profundo" en SGP4; ¿Cómo explica la gravedad del Sol y la Luna?
Parece que debería considerar solo la Tierra y J2. Entonces, SGP4 no es bueno para esta tarea. ¿Hay alguna manera de propagarse sobre la base de elementos orbitales?
@Mefitico, ¿puede considerar actualizar su respuesta para ajustar su declaración de que SGP4 no considera las perturbaciones del Sol y la Luna? No lo hizo en un momento (SDP4 lo hizo), pero creo que hoy en día cualquier fuente moderna para SGP4 incluye estas perturbaciones al incorporar SDP4.
@uhoh De todos modos, SGP4 no cumple con las condiciones establecidas. Por favor, considere mis ecuaciones.
@TarlanMammadzada: reconozco que las ecuaciones que presentó en (1) para las tasas de los elementos son ecuaciones de Kozai, y deben usarse con elementos medios para actualizar elementos medios, y la salida debe convertirse en elementos osculadores antes de usar el ecuaciones que presentas en (2). Ver como referencia Schaub H. Junkins, J. Analytical Mechanics of Space Systems 2nd edition AIAA Education Series 2009

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]