¿Cuántas horas cada día se puede llegar a Marte por 2 de los 3 complejos DSN?

La NASA se comunica con las naves espaciales más allá de la órbita terrestre utilizando la Red del Espacio Profundo , que tiene tres complejos: Canberra, Australia; Goldstone, California; y Madrid, España.

Hay muchas naves espaciales en o alrededor de Marte y, ocasionalmente, dos de los complejos se utilizan al mismo tiempo para las naves de Marte. En la captura de pantalla a continuación, vemos la siguiente nave espacial de Marte comunicando los complejos de Madrid y Goldstone:

  • M01O = Odisea de Marte
  • MRO = Orbitador de reconocimiento de Marte
  • MVN = MAVEN = Atmósfera de Marte y evolución volátil
  • MCOB = Marte Cubesat Uno B
  • MSL = rover Curiosity del Laboratorio de Ciencias de Marte
  • MOM = Misión Mars Orbiter (India)

MMS, NHPC y STA no son misiones a Marte.

¿Qué tan comunes (en horas por día, fracción o porcentaje) son dos de los complejos DSN en posición de comunicarse con Marte? Si la respuesta varía con las órbitas de los dos planetas, explíquelo.

instantánea de DSN

Relacionado:

Respuestas (1)

Aquí hay una respuesta rápida para hoy . Varía a medida que la Tierra y Marte se mueven en sus órbitas. Este guión se puede ajustar a otras fechas o cuerpos.

He usado el paquete Skyfield de Python , pero puede extraer los mismos ángulos de elevación de Horizons, ambos están usando una de las Efemérides de desarrollo tardías.

Hoy Madrid-Goldstone tienen unas 4 horas de observación con Marte a 10 grados sobre el horizonte, y Goldstone-Canbera tienen algo menos de 2 horas. La próxima semana o el próximo mes será diferente.

10 grados es un límite arbitrario y, por lo general, a uno le gustaría ser más alto que eso. No he comprobado los límites de hardware. Tanto el ruido del cielo aumenta como los lóbulos laterales captarán más ruido del suelo (ambos son ruido térmico) a medida que te acercas al horizonte. Sería peor para una señal muy débil en el espacio muy profundo como las Voyagers o New Horizons.

Para obtener más información sobre el ruido, consulte el documento de la serie DESCANSO Sistemas de bajo ruido en la red del espacio profundo


Desde horizontes

Use este patrón o similar, use ftp o guarde en disco directamente desde la página web:

ingrese la descripción de la imagen aquí


Desde Python/Skyfield

Marte visto desde Deep Space Network

class Site(object):
    def __init__(self, name, latlon):
        self.name   = name
        self.latdeg = latlon[0]
        self.londeg = latlon[1]

info  = (('Goldstone', (35.426667, -116.89)), ('Madrid', (40.429167, -4.249167)),
         ('Canbera', (-35.401389, 148.981667)))

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

halfpi, pi, twopi = [f*np.pi for f in (0.5, 1, 2)]
degs, rads = 180/pi, pi/180

load    = Loader('~/Documents/fishing/SkyData')  # avoids multiple copies of large files

data    = load('de421.bsp')
earth   = data['earth']
mars    = data['mars']
ts      = load.timescale()

print earth.at(ts.now()).position.km   # for no reason at all

hours    = np.linspace(0, 24, 24*12+1)  # 24 hours in 5 minute steps
time     = ts.utc(2018, 12, 6, hours)   # 2018-12-6 

sites = [Site(*thing) for thing in info]
Goldstone, Madrid, Canbera = sites

for site in sites:
    site.topo = earth + Topos(longitude_degrees=site.londeg,
                              latitude_degrees =site.latdeg )
    alt, az, dist  = site.topo.at(time).observe(mars).apparent().altaz()
    site.elevation = alt.radians
    site.azimuth   = az.radians

pairs     = [(sites[i%3], sites[(i+1)%3]) for i in range(3)]
pairnames = [(a.name, b.name) for (a, b) in pairs]

if True:
    plt.figure()
    fs = 16

    plt.subplot(2, 1, 1)

    for site in sites:
        plt.plot(hours, degs*site.elevation)
    plt.plot(hours, np.zeros_like(hours), '-k', linewidth=2)
    plt.plot(hours, 10+np.zeros_like(hours), '-k', linewidth=1)
    plt.text( 0.2, 51, 'Goldstone', fontsize=fs)
    plt.text( 7.0, 65, 'Madrid', fontsize=fs)
    plt.text(16.5, 45, 'Canbera', fontsize=fs)
    plt.xlim(0, 24)
    plt.ylabel('elevation (degs)', fontsize=fs)

    plt.subplot(2, 1, 2)

    for s0, s1 in pairs:
        ok = (degs * s0.elevation > 10) & (degs * s1.elevation > 10)
        plt.plot(hours, ok)
    plt.ylim(-0.1, 1.25)
    plt.xlabel('hours UTC', fontsize=fs)
    plt.ylabel('both evelations > 10 degs', fontsize=fs)
    plt.xlim(0, 24)

    plt.text( 1,   1.05, 'Madrid-Goldstone', fontsize=fs)
    plt.text(16.5, 1.05, 'Goldstone-Canbera', fontsize=fs)

    plt.suptitle('DSN sees Mars 06-Dec-2018', fontsize=fs)
    plt.show()

actualización: aquí está el año calendario 2018. Los diagramas booleanos son los sobres para la elevación de Marte en ambos sitios por encima de los 10 grados. Los gráficos de color son el ángulo de elevación de Marte para cada sitio.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

class Site(object):
    def __init__(self, name, latlon):
        self.name   = name
        self.latdeg = latlon[0]
        self.londeg = latlon[1]

info  = (('Goldstone', (35.426667, -116.89)), ('Madrid', (40.429167, -4.249167)),
         ('Canbera', (-35.401389, 148.981667)))

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

halfpi, pi, twopi = [f*np.pi for f in (0.5, 1, 2)]
degs, rads = 180/pi, pi/180

load    = Loader('~/Documents/fishing/SkyData')  # avoids multiple copies of large files

data    = load('de421.bsp')
earth   = data['earth']
mars    = data['mars']
ts      = load.timescale()

print earth.at(ts.now()).position.km   # for no reason at all

hours    = np.linspace(0, 24, 24*12+1)  # 24 hours in 5 minute steps
days     = np.arange(0, 367, 2)  

sites = [Site(*thing) for thing in info]
Goldstone, Madrid, Canbera = sites
names = [site.name for site in sites]

for site in sites:
    site.topo = earth + Topos(longitude_degrees=site.londeg,
                              latitude_degrees =site.latdeg )

pairs     = [(sites[i%3], sites[(i+1)%3]) for i in range(3)]
pairnames = [(s0.name, s1.name) for (s0, s1) in pairs]


big_okays = []
big_elevs = []
for day in days:
    time     = ts.utc(2018, 1, day, hours)   # 2018-12-6 

    elevs = []
    for site in sites:
        site.topo = earth + Topos(longitude_degrees=site.londeg,
                                  latitude_degrees =site.latdeg )
        alt, az, dist  = site.topo.at(time).observe(mars).apparent().altaz()
        site.elevation = alt.radians
        site.azimuth   = az.radians
        elevs.append(np.maximum(0, site.elevation))
    big_elevs.append(elevs)

    okays = []
    for s0, s1 in pairs:
        ok = (s0.elevation > rads*10) & (s1.elevation > rads*10)
        okays.append(ok)

    big_okays.append(okays)

big_okays = np.array(big_okays)
new_okays = np.moveaxis(big_okays, 1, 0)

big_elevs = np.array(big_elevs)
new_elevs = np.moveaxis(big_elevs, 1, 0)

if True:
    xlims = [hours[0], hours[-1]]
    ylims = [days[0],  days[-1]]
    ylims = [days[-1],  days[0]]
    extent = sum([xlims, ylims], [])
    plt.figure()
    for i, (ok, pnames) in enumerate(zip(new_okays, pairnames)):
        plt.subplot(3, 1, i+1)
        plt.imshow(ok, origin='upper', extent=extent, aspect=1./25)
        title = '{}-{}'.format(*pnames)
        plt.title(title, fontsize=16)
    if i == 2:
        plt.xlabel('hours', fontsize=16)
        plt.ylabel('days', fontsize=16)
    plt.suptitle('DSN two-sites Mars both elevs > 10deg', fontsize=16)
    plt.show()

if True:
    xlims  = [hours[0], hours[-1]]
    ylims  = [days[0],  days[-1]]
    ylims  = [days[-1],  days[0]]
    extent = sum([xlims, ylims], [])
    levels = [20, 40, 60, 80]
    plt.figure()
    for i, (elev, name) in enumerate(zip(new_elevs, names)):
        plt.subplot(3, 1, i+1)
        plt.imshow(degs*elev, origin='upper', extent=extent,
                   vmin=0, vmax=90, aspect=1./25)
        plt.colorbar()
        plt.contour(degs*elev, levels=levels, extent=extent,
                    origin='upper', colors='k', aspect=1./25)
        title = '{}'.format(name)
        plt.title(title, fontsize=16)
    if i == 2:
        plt.xlabel('hours', fontsize=16)
        plt.ylabel('days', fontsize=16)
    plt.suptitle('DSN elevation of Mars (degs), \n levels = 20, 40, 60, 80',
                 fontsize=16)
    plt.show()
Los gráficos se ven mucho mejor ahora con escalas de eje de 24 horas y 365 días. ¡Muchas gracias!
@Uwe gracias! Acabo de descubrir cómo hacerlo stackoverflow.com/q/53647191/3904031
¿Puedo usar y modificar estos scripts para ver cómo se ve durante un año marciano o el intervalo de tiempo completo hasta que Marte y la Tierra regresen a la misma constelación?
@Uwe, sí, por favor, sería muy feliz si alguien usara algo que publiqué ;-) si tiene alguna pregunta, envíeme un ping aquí o en el chat. Es más rápido si no usa tantos pasos en daysy hours. Skyfield es Python puro y cada punto en el tiempo cuesta mucho en este momento. Para desarrollar, use matrices de tiempo más pequeñas, lo hace mucho más rápido.