Wie viele Stunden pro Tag ist der Mars mit 2 der 3 DSN-Komplexe erreichbar?

Die NASA kommuniziert mit Raumfahrzeugen jenseits der Erdumlaufbahn über das Deep Space Network , das aus drei Komplexen besteht: Canberra, Australien; Goldstone, Kalifornien; und Madrid, Spanien.

Es gibt viele Raumfahrzeuge auf oder um den Mars, und gelegentlich werden zwei der Komplexe gleichzeitig für Marsfahrzeuge verwendet. Im Screenshot unten sehen wir das folgende Mars-Raumschiff, das die Madrid- und Goldstone-Komplexe kommuniziert:

  • M01O = Mars-Odyssee
  • MRO = Mars Reconnaissance Orbiter
  • MVN = MAVEN = Marsatmosphäre und flüchtige Evolution
  • MCOB = Mars Cubesat One B
  • MSL = Curiosity Rover des Mars Science Laboratory
  • MOM = Mars Orbiter Mission (Indien)

MMS, NHPC und STA sind keine Marsmissionen.

Wie häufig (in Stunden pro Tag oder einem Bruchteil oder Prozent) sind zwei der DSN-Komplexe in der Lage, mit dem Mars zu kommunizieren? Wenn die Antwort mit den Umlaufbahnen der beiden Planeten variiert, erläutern Sie dies bitte.

DSN-Snapshot

Verwandt:

Antworten (1)

Hier ist eine schnelle Antwort für heute . Es variiert, wenn sich Erde und Mars in ihren Umlaufbahnen bewegen. Dieses Skript kann an andere Daten oder Körper angepasst werden.

Ich habe das Python-Paket Skyfield verwendet , aber Sie können die gleichen Höhenwinkel aus Horizons extrahieren, beide verwenden eine der späten Entwicklungs-Ephemeriden

Heute haben Madrid-Goldstone ungefähr 4 Stunden Beobachtungszeit mit Mars 10 Grad über dem Horizont, und Goldstone-Canbera haben etwas weniger als 2 Stunden. Nächste Woche oder nächsten Monat wird es anders sein.

10 Grad ist eine willkürliche Grenze und normalerweise möchte man höher sein. Hardwarelimits habe ich nicht überprüft. Sowohl das Himmelsrauschen nimmt zu, als auch die Seitenkeulen mehr Bodenrauschen aufnehmen (beides sind thermisches Rauschen), wenn Sie sich dem Horizont nähern. Wäre schlimmer für ein sehr schwaches Signal in sehr tiefen Räumen wie den Voyagers oder New Horizons.

Weitere Informationen zum Rauschen finden Sie in dem Dokument der DESCANSO- Reihe zu Low-Noise-Systemen im Deep Space Network


Von Horizonten

Verwenden Sie dieses oder ein ähnliches Muster, verwenden Sie FTP oder speichern Sie es direkt von der Webseite aus:

Geben Sie hier die Bildbeschreibung ein


Von Python/Skyfield

Mars vom Deep Space Network aus gesehen

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()

Update: Hier ist das Kalenderjahr 2018. Die Booleschen Plots sind die Hüllkurven für die Mars-Elevation an beiden Standorten über 10 Grad. Die Farbdiagramme zeigen den Mars-Elevationswinkel für jeden Standort.

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

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()
Die Diagramme sehen jetzt mit 24-Stunden- und 365-Tage-Achsenskalen viel besser aus. Vielen Dank!
@Uwe Danke! Ich habe gerade herausgefunden, wie es geht stackoverflow.com/q/53647191/3904031
Darf ich diese Skripte verwenden und modifizieren, um zu sehen, wie es über ein Marsjahr oder das gesamte Zeitintervall aussieht, bis Mars und Erde in dieselbe Konstellation zurückkehren?
@Uwe ja bitte, ich würde mich sehr freuen, wenn jemand etwas von mir verwendet ;-) Bei Fragen ping mich hier oder im Chat an. Es ist schneller, wenn Sie nicht so viele Schritte in daysund verwenden hours. Skyfield ist reines Python und jeder Zeitpunkt kostet im Moment viel. Verwenden Sie zum Entwickeln kleinere Zeitarrays, das macht es viel schneller.