¿Hay satélites en órbitas geosíncronas pero no geoestacionarias?

Sé que hay muchos satélites geoestacionarios, pero me pregunto: ¿hay algún satélite geosincrónico que no sea geoestacionario (es decir, que tenga una inclinación notable en su órbita)?

Leí en alguna parte que el IRNSS usa tales órbitas.
@ManuH sí, ¡están en mi lista ! Con suerte, alguien preguntará: "¿Por qué algunos satélites usan órbitas geosincrónicas de tan alta inclinación?"
@uhoh creo que este archivo responde a esa pregunta de una manera visual
@ManuH, ese es un caso especial y fácil de explicar. La mayoría de estas órbitas son circulares, por lo que la mitad superior e inferior del patrón son simétricas. QZSS se encuentra en una órbita sustancialmente elíptica similar a la de Molniya, por lo que pasan la mayor parte del tiempo en la mitad superior, sobre Japón. Estoy bastante seguro de que estos tres son QZSS i.stack.imgur.com/XyW0F.png Ninguna de las otras órbitas se ve así, por lo que necesitarán una explicación diferente.

Respuestas (1)

¿Hay satélites en órbitas geosíncronas pero no geoestacionarias?

¡Sí, muchos!

Aparentemente, hay varias ventajas de ser sincrónico, incluso cuando oscila de forma salvaje en una posición por encima o por debajo del ecuador de la Tierra (¡hasta +/- 60 grados!)

Después de ver las cifras a continuación en Una nueva mirada a los regímenes GEO y Near-GEO: Operaciones, Eliminaciones y Escombros (que se encuentran en este comentario ), decidí ir a buscar satélites yo mismo.

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

izquierda: "Fig. 3. El número y la complejidad de las órbitas geosíncronas para las naves espaciales operativas aumentó significativamente de 1999 a 2011. Arriba solo se muestran las naves espaciales cuyos parámetros orbitales están disponibles en www.spacetrack.org ". derecha: "Fig. 7. Los sistemas de navegación y comunicaciones geosincrónicos altamente inclinados (Sirius, Beidou y Michibiki) se han implementado desde 2000"

Fui a los conjuntos de elementos de dos líneas NORAD de Celestrak; Datos actuales y descargué https://celestrak.org/NORAD/elements/geo.txt Luego los propagué todos en Python usando Skyfield (script a continuación) y comencé a trazar.

Hay 513 TLE en la lista. Aquí están sus inclinaciones actuales frente al año de lanzamiento:

Inclinación de satélites geosíncronos versus año de lanzamiento

Hay 18 satélites con una inclinación superior a 19 grados:

AMC-14                 2008     20.4237
SDO                    2010     29.7791
QZS-1 (MICHIBIKI-1)    2010     41.3507
BEIDOU 8               2011     58.8155
BEIDOU 9               2011     54.4339
BEIDOU 10              2011     52.1119
IRNSS-1A               2013     30.184
IRNSS-1B               2014     29.253
IRNSS-1D               2015     29.1615
BEIDOU 17              2015     53.522
BEIDOU 20              2015     53.1176
IRNSS-1E               2016     29.3272
BEIDOU IGSO-6          2016     56.5705
QZS-2  (MICHIBIKI-2)   2017     43.5483
QZS-4 (MICHIBIKI-4)    2017     40.7615
IRNSS-1I               2018     29.3069
BEIDOU IGSO-7          2018     55.0396
BEIDOU-3 IGSO-1        2019     55.0177

Aquí hay algunos gráficos 3D gratuitos del 18 con inclinaciones superiores a los 19 grados:

Vista lateral:

Satélites geosíncronos con inclinación > 19 grados

Vista superior:

Satélites geosíncronos con inclinación > 19 grados

"Retrato familiar"

Satélites geosíncronos

Guión de Python 3:

class Object(object):
    def __init__(self, name, L1, L2):
        self.name = name.strip()
        self.L1 = L1
        self.L2 = L2
        year = int(L1[9:11]) + 1900
        if year < 1957:
            year += 100
        self.year = year
        self.inc  = float(L2[8:16])

import numpy as np
import matplotlib.pyplot as plt
from skyfield.api import Topos, Loader, EarthSatellite
from mpl_toolkits.mplot3d import Axes3D

fname = 'Celestrak satellites in GEO.txt' # https://celestrak.org/NORAD/elements/geo.txt
with open(fname, 'r') as infile:
    lines = infile.readlines()

TLEs = zip(*[[line for line in lines[n::3]] for n in range(3)])

load  = Loader('~/Documents/fishing/SkyData')  # single instance for big files
ts    = load.timescale()
de421 = load('de421.bsp')
earth = de421['earth']

zero  = Topos(0.0, 0.0)

minutes = np.arange(0, 24*60, 4) # last one is 23h 56m
times   = ts.utc(2019, 7, 19, 0, minutes)

# Doing a quick ugly de-rotate to imitate earth-fixed coordinates.
zeropos = zero.at(times).position.km 
theta    = np.arctan2(zeropos[1], zeropos[0])
cth, sth, zth, oth = [f(-theta) for f in (np.cos, np.sin, np.zeros_like, np.ones_like)]

R = np.array([[cth, -sth, zth], [sth, cth, zth], [zth, zth, oth]])

objects = []
for i, (name, L1, L2) in enumerate(TLEs):
    o       = Object(name, L1, L2)
    objects.append(o)
    o.orbit = EarthSatellite(L1, L2).at(times).position.km
    if not i%20:
        print (i,)

data = [(o.year, o.inc) for o in objects]

plt.figure()
year, inc = zip(*data)
plt.plot(year, inc, '.k', markersize=8)
plt.xlabel('launch year', fontsize=16)
plt.ylabel('current inclination (degs)', fontsize=16)
plt.title('Geosynchronous TLEs from Celestrak', fontsize=16)
plt.show()

high_incs = [o for o in objects if o.inc > 19]

fig = plt.figure(figsize=[10, 8])  # [12, 10]
ax  = fig.add_subplot(1, 1, 1, projection='3d')
for o in high_incs:
    orbit = (R * o.orbit).sum(axis=1)
    x, y, z = orbit
    ax.plot(x, y, z)
    ax.plot(x[:1], y[:1], z[:1], 'ok')
ax.set_xlim(-40000, 40000)
ax.set_ylim(-40000, 40000)
ax.set_zlim(-40000, 40000)
plt.show()

fig = plt.figure(figsize=[10, 8])  # [12, 10]
ax  = fig.add_subplot(1, 1, 1, projection='3d')
for o in objects:
    orbit = (R * o.orbit).sum(axis=1)
    x, y, z = orbit
    ax.plot(x, y, z)
    # ax.plot(x[:1], y[:1], z[:1], 'ok')
ax.set_xlim(-40000, 40000)
ax.set_ylim(-40000, 40000)
ax.set_zlim(-40000, 40000)
plt.show()

for o in high_incs:
    print(o.name, o.year, o.inc)
¡Trabajo sobresaliente! :D
@ThePiachu gracias! Como de costumbre, haré todo lo posible para evitar hacer lo que debería haber hecho hoy ;-) bbc.co.uk/programmes/w3csy9k0
¿Son todos satélites de navegación? Puedo ver cómo tiene sentido para la navegación por satélite regional. IRNSS (indio), BEIDOU (chino) y QZS (japonés) lo son, al menos.
@gerrit oye, supongo que tienes razón, excepto por los dos primeros de la lista ( AMC-14 y SDO ) que tienen situaciones interesantes propias
Re Todavía puedes comunicarte con ellos continuamente usando una sola estación terrestre, si está algo cerca del ecuador. Los satélites geosincrónicos altamente inclinados (63,4°) y algo elípticos (0,2 a 0,3) siguen órbitas Tundra. Tales órbitas no son de mucha utilidad en sitios ecuatoriales porque se necesitan antenas de seguimiento para comunicarse con tales satélites y los satélites rara vez se ven en un sitio ecuatorial dado. Donde son útiles son las latitudes extremas, típicamente 60+°N, donde los satélites parecen habitar en el apogeo.
@DavidHammen Saqué esa oración por completo, ¡gracias!
@gerrit, el segundo en esa lista, SDO, es un observatorio solar. Produce imágenes a una cadencia muy alta, por lo que en lugar de usar el DSN donde saturaría el ancho de banda, tiene una estación terrestre dedicada, por lo que es necesario que sea geosincrónico. No puede ser geoestacionario porque eso significaría que la tierra oculta el sol una vez al día, donde la órbita inclinada significa que la tierra solo oculta el sol una vez al día durante una semana cada 6 meses.
Tenga paciencia conmigo, si esta es una pregunta estúpida, ya que reconozco humildemente que no soy programador, pero ¿por qué usó 'if True:' en su código?
@MatthewChristopherBartsh oh, eso no cumple una función específica cuando se ejecuta. Es un sobrante de mi forma de trabajar y no lo limpié. A menudo tengo secuencias de comandos que tardan un poco en ejecutarse, y cuando estoy optimizando el diseño de la trama, no quiero volver a ejecutar todo. Los ejecuto desde una línea de comando usando python -i myscript.pyasí que cuando termine, el espacio de nombres y los resultados se conservan. Si quiero simplemente volver a trazar, solo copio/pego una sección que comienza if True:en el indicador de python en la ventana de comandos para ejecutarlo.
@MatthewChristopherBartsh A veces quiero depurar el cálculo en sí y no quiero generar una docena de gráficos si uno es todo lo que necesito para ver los resultados con fines de depuración, así que los cambio a Falso o los cambio todos (excepto uno) a if verbose:y establecer verbose = False. No creo que sea un flujo de trabajo ideal, pero funciona para mí.
@MatthewChristopherBartsh, siéntase libre de editarlos y eliminarlos aquí, ¡no tienen ningún propósito útil en este contexto en absoluto! Stack Exchange es un esfuerzo de colaboración y, por lo general, se recomiendan ediciones útiles en las publicaciones de otras personas. ¡Gracias!
Se aceptó mi edición de las declaraciones inútiles 'if True:'. ¡Hurra! Es la primera vez que mejoro el código de otra persona. Puedo ver cómo podría ayudar con la depuración. Desafortunadamente, los detalles que proporcionó están muy por encima de mi cabeza, en esta etapa.
@MatthewChristopherBartsh Python es tan amigable y flexible que hace que hacer todo tipo de cosas sea mucho más fácil. Descubrí que aprender Python fue realmente liberador. ¡Divertirse!
Sé que algunas personas fruncen el ceño ante las declaraciones 'si es cierto', pero se me ocurrió preguntar si hay razón para dejarlas, como lo hizo usted, con el argumento de que hacen que el código sea más fácil de modificar y posiblemente más fácil de ¿leer? Quiero decir, si los encontró útiles al probar el código, ¿no lo haría alguien más al modificar el código?
@MatthewChristopherBartsh Python es uno de los lenguajes de programación más utilizados en el mundo para la programación seria; escribiendo paquetes, por ejemplo, que serán ampliamente distribuidos como código abierto y constantemente editados y modificados por muchos otros programadores. Cumplir con ciertos estándares de estilo y mantener la mejor legibilidad es fundamental en esos casos, por lo que cualquier cosa que haga que alguien se detenga y pregunte "¿Por qué es así?" se considera malo. Estoy de acuerdo con todo eso al 110%. Pero solo escribo guiones cortos y desechables para hacer trabajos específicos o comunicar un punto determinado.
@MatthewChristopherBartsh A veces me refiero a mis guiones como "recortados" para que la gente sepa que no están cuidadosamente escritos, bien organizados ni bien comentados. Puede disfrutar revisando los PEP, especialmente PEP8 . También vea las respuestas a algunas de mis preguntas en Code Review SE 1 , 2 , 3 , 4
@MatthewChristopherBartsh Tanto los programadores de Python como los de Python son generalmente muy indulgentes, no es necesario que aprenda nada de esto de inmediato, pero una vez que uno comienza a usarlo regularmente, la sabiduría detrás de las pautas de PEP8 se vuelve más evidente y tiene más y más sentido seguir a ellos. ¡Disfrutar!
De acuerdo, pero ¿es creíble que a veces un codificador que está modificando o reutilizando su código y probando el código en algún momento estaría contento de que haya dejado las declaraciones 'si es cierto' porque hace que probar el código sea más fácil?
@MatthewChristopherBartsh No. Si 1) entendieran para qué era y 2) lo necesitaran, simplemente lo volverían a agregar, lo que tardaría unos 700 milisegundos en escribirse.
1. ¿Usar verbose = False es tu propia idea? Solo pude encontrar cosas sobre el registro de salida cuando lo busqué. 2. ¿Qué quiere decir aquí con 'alternar'? 3. Su último diagrama tiene algunos pequeños defectos y me pregunto qué los causó: a) Algunas brechas apenas perceptibles en las trayectorias de algunos de los satélites. b) Algunos de los caminos están delante de otros caminos que deberían estar detrás c) Todos los caminos tienen el mismo grosor, independientemente de si están en primer plano o en segundo plano, por lo que no siempre queda claro de inmediato si es convexo hacia nosotros o hacia afuera. de nosotros, agravando el problema 'b'.