Сколько часов каждый день Марс доступен для 2 из 3 комплексов DSN?

Связь НАСА с космическими аппаратами за пределами околоземной орбиты осуществляется с помощью Deep Space Network , имеющей три комплекса: Канберра, Австралия; Голдстоун, Калифорния; и Мадрид, Испания.

На Марсе или вокруг него находится много космических кораблей, и иногда два комплекса одновременно используются для марсианских кораблей. На скриншоте ниже мы видим следующие марсианские космические аппараты, связывающиеся с комплексами Мадрид и Голдстоун:

  • M01O = Марсианская Одиссея
  • MRO = Марсианский орбитальный разведывательный аппарат
  • MVN = MAVEN = Марсианская атмосфера и летучая эволюция
  • MCOB = Mars Cubesat One B
  • MSL = марсоход Curiosity из Марсианской научной лаборатории.
  • MOM = марсианская орбитальная миссия (Индия)

MMS, NHPC и STA не являются марсианскими миссиями.

Насколько часто (в часах в день, долях или процентах) два комплекса DSN находятся в состоянии связи с Марсом? Если ответ зависит от орбит двух планет, пожалуйста, уточните.

Снимок DSN

Связанный:

Ответы (1)

Вот краткий ответ на сегодня . Она меняется по мере того, как Земля и Марс движутся по своим орбитам. Этот скрипт можно настроить на другие даты или тела.

Я использовал пакет Python Skyfield , но вы можете извлечь те же углы возвышения из Horizons, они оба используют одну из последних эфемерид разработки .

Сегодня Мадрид-Голдстоун имеет около 4 часов наблюдений с Марсом в 10 градусах над горизонтом, а Голдстоун-Канбера чуть меньше 2 часов. На следующей неделе или в следующем месяце все будет иначе.

10 градусов — произвольный предел, и обычно хочется быть выше этого. Я не проверял аппаратные ограничения. И шум неба увеличивается, и боковые лепестки будут улавливать больше шума земли (оба являются тепловыми шумами) по мере приближения к горизонту. Было бы хуже для очень слабого сигнала в очень глубоком космосе, таком как Вояджеры или Новые Горизонты.

Для получения дополнительной информации о шуме см. документ серии DESCANSO « Системы с низким уровнем шума в сети дальнего космоса».


Из горизонтов

Используйте этот шаблон или аналогичный, используйте ftp или сохраните на диск прямо с веб-страницы:

введите описание изображения здесь


Из Python/Скайфилд

Вид на Марс из 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()

обновление: вот 2018 календарный год. Логические графики представляют собой конверты для высоты Марса на обоих участках выше 10 градусов. Цветные графики представляют угол возвышения Марса для каждого места.

введите описание изображения здесь

введите описание изображения здесь

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()
Графики теперь выглядят намного лучше с 24-часовым и 365-дневным масштабом осей. Большое спасибо!
@Уве спасибо! Я только что узнал, как это сделать stackoverflow.com/q/53647191/3904031
Могу ли я использовать и изменить эти сценарии, чтобы увидеть, как это выглядит в течение марсианского года или полного временного интервала, пока Марс и Земля не вернутся в одно и то же созвездие?
@Uwe да, пожалуйста, я был бы очень рад, если бы кто-то использовал то, что я опубликовал ;-) пингуйте меня здесь или в чате, если есть вопросы. Это быстрее, если вы не используете столько шагов в daysи hours. Skyfield — это чистый питон, и каждый момент времени сейчас дорого стоит. Для разработки используйте меньшие массивы времени, это делает ее намного быстрее.