Из-за медленных откликов гелиевых клапанов Juno не было поручено выполнить большой маневр дельта-v, чтобы спуститься с орбиты ~ 53 дня на орбиту ~ 14 дней, первоначально запланированную на 19 октября 2016 года.
Первоначально я извлек запланированную орбиту из JPL Horizons , упомянутой здесь несколько месяцев назад. Теперь его нет — по крайней мере, я не могу его найти. Я хотел бы получить его снова в качестве упражнения, чтобы понять его.
Только для одного примера, для этого вопроса я хотел бы использовать Горизонты, чтобы быстро дать мне приблизительные орбитальные элементы (а и по крайней мере) за 14-дневный оборот вокруг Юпитера. Я могу понять, как извлечь их из векторов состояния, но было бы здорово использовать эту удобную систему.
Trajectory name Start (TDB) Stop (TDB)
------------------------------ ----------------- -----------------
rec_110805_111026_120302 2011-Aug-05 17:19 2011 OCT 26 00:00
rec_111026_120308_120726 2011 OCT 26 00:00 2012 MAR 08 12:00
rec_120308_120825_121109 2012 MAR 08 12:00 2012 AUG 25 00:00
rec_120825_130515_130708 2012 AUG 25 00:00 2013 MAY 15 00:00
rec_130515_131005_131031 2013 MAY 15 00:00 2013 OCT 05 12:00
rec_131005_131014_131101_reco 2013 OCT 05 12:00 2013 OCT 14 00:01
rec_131014_131114_140222 2013 OCT 14 00:01 2013 NOV 14 06:00
ref_131114_171017_140311_V0.2 2013 NOV 14 06:00 2015 MAR 26 00:00
ref_150326_180221_150326_V0.1 2015 MAR 26 00:00 2016 FEB 26 00:01
ref_160226_180221_160226_V0.1 2016 FEB 26 00:00 2016 APR 13 18:00
pre_160413_161016_160818_pj01_V0.1 2016 APR 13 18:00 2016 OCT 16 23:00
ref_160226_180221_160226_V0.5 2016 OCT 16 23:00 2018 FEB 21 11:40
Теперь последние две строки:
pre_160413_161016_160818_pj01_V0.1 2016 APR 13 18:00 2016 JUL 29 21:00
nob_160729_170201_161019.V0.1 2016 JUN 29 21:00 2017 FEB 01 00:00
Основной вопрос: я хотел бы получить доступ к исходной эталонной орбите до обновления. Могу ли я как-нибудь получить его снова, используя Horizions? Я хотел бы получить векторы состояния с высокой степенью детализации, используя оригинал ref_160226_180221_160226_V0.5
, по крайней мере, на протяжении всего 2017 года. Есть ли способ сделать это через Интернет, telnet или по электронной почте?
Второстепенный вопрос: если вы посмотрите на таблицы, траектории исправлены - дата/время окончания одного совпадает с датой/временем начала следующего, за исключением иногда перекрытия 00:01 (минута), которое может быть округлено в таблице. отображать.
Однако в последних двух строках обновленной таблицы предпоследняя строка заканчивается на 2016 JUL 29 21:00
, а последняя строка начинается на месяц раньше на 2016 JUN 29 21:00
. Это опечатка, или они как-то усредняются за этот месяц?
вверху: Расчетное расстояние между космическим кораблем Юнона и барицентром Юпитера от JPL Horizons. Тонкая (синяя) линия: исходная эталонная орбита, Толстая (зеленая) линия: обновленная орбита показана до 10 декабря 2016 г. - примерно, когда должно быть принято окончательное обязательство по «понижению» орбиты. Примечание. Данные были загружены с интервалом в 2 часа, поэтому неравномерность минимальных расстояний связана с грубой выборкой невероятно быстрого пролета.
Это данные тонкой (синей) линии, к которым я хотел бы снова получить доступ.
Комментарии от @oefe указали мне на решение! Я опубликую это здесь. Поскольку я не эксперт, я буду давать минимум объяснений, чтобы не вводить в заблуждение.
Хорошей ссылкой является обязательное чтение SPK:
http://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/req/spk.html
Мне указали на следующую папку, в которой есть решения в форме ядра в виде .bsp
файлов:
http://naif.jpl.nasa.gov/pub/naif/JUNO/kernels/spk/
Я ищу опорную орбиту spk_ref_160226_180221_160226.bps
, которая была рассчитана в феврале 2016 года до того, как Юнона достигла Юпитера.
Дополнительные полезные «подсказки» находятся в том же имени файла с расширением .bsp.lbl
с такой информацией, как даты, центр и коды bodyID, которые я использовал в сценарии Python ниже.
Мне также указали на это обсуждение в python-jplephem Github, в котором указано, что ядра «типа данных 1 (модифицированные массивы разностей)» имеют другую структуру и не могут быть прочитаны jplephem:
https://github.com/brandon-rhodes/python-jplephem/issues/14
и это обсуждение указало на решение - скрипт Python, spktype01
который был написан Shushi Uetsuki (whiskie14142). Кажется, это точная транскрипция/преобразование в Python из оригинального FORTRAN, и он хорошо и откровенно прокомментирован.
https://github.com/whiskie14142/spktype01
Поскольку я запускаю Python в среде, где Skyfield уже установлен, кажется, что модули jplephem уже доступны. Поэтому я просто запускаю это в папке, содержащей только скрипт ниже и spktype01.py
файл с github. Оно работает! Спасибо всем причастным!
Ниже я показываю, что грубая выборка отображает различные минимальные расстояния между Юноной и барицентром системы Юпитера. Находя каждый из этих минимумов и производя повторную выборку с субминутными интервалами, можно увидеть, что все периджовы, по существу, находятся на одном и том же расстоянии.
from spktype01 import SPKType01
import numpy as np
import matplotlib.pyplot as plt
Juno_kernel = SPKType01.open('spk_ref_160226_180221_160226.bsp')
JD_coarse = np.arange(2457558.5, 2457754.5+1, 0.2)
# print(Juno_kernel)
center, bodyID = 5, -61 # Jupiter barycenter, Juno Spacecraft
coarse_data = []
for JD in JD_coarse:
spkpos, spkvel = Juno_kernel.compute_type01(center, bodyID, JD)
coarse_data.append(spkpos)
coarse_data = np.array(coarse_data)
rc = np.sqrt((coarse_data**2).sum(axis=1))
inflections = (rc[2:] - rc[1:-1]) * (rc[1:-1] - rc[:-2]) <= 0.0
i_inflects = np.where(inflections)[0] + 1
i_peris = [i for i in i_inflects if rc[i] < 1E+06] # I am lazy
JD_peris = JD_coarse[i_peris]
dminutes = np.linspace(-180, 180, 1001)
ddays = dminutes / (24. * 60.)
periJoves = []
for JD_peri in JD_peris:
JD_fine = JD_peri + ddays
fine_data = []
for JD in JD_fine:
spkpos, spkvel = Juno_kernel.compute_type01(center, bodyID, JD)
fine_data.append(spkpos)
fine_data = np.array(fine_data)
r_fine = np.sqrt((fine_data**2).sum(axis=1))
periJoves.append(r_fine)
if 1 == 1:
plt.figure()
plt.subplot(1,2,1)
plt.plot(JD_coarse - JD_coarse[0], rc)
plt.yscale('log')
plt.ylim(1E+04, 1E+07)
plt.xlabel('days (arb)', fontsize=14)
plt.subplot(1,2,2)
for periJove in periJoves:
plt.plot(dminutes, periJove)
plt.yscale('log')
plt.ylim(1E+04, 1E+07)
plt.xlabel('minutes (arb)', fontsize=14)
plt.show()
Офе
пользователь7073
ооо
ооо
.bsp
,.bsp.lbl
,.orb
) с именами ,spk_ref_160226_180221_160226
но без_V0.5
, но я не знаю, как их использовать в Horizons. Является ли это возможным? Мой единственный текущий компьютерный язык — это python. Skyfield использует.bsp
данные для основных тел Солнечной системы, но я не думаю, что они предназначены для всех.ооо
.bsp
файл расширения содержит SPK, который представляет собой таблицу коэффициентов Чебышева, и, возможно, я смогу найти что-нибудь, чтобы ее прочитать, или я могу научиться читать ее с помощью Python самостоятельно, если у меня будет достаточно времени, и если бы у меня было хорошее четкое объяснение / Документация по формату. Я ищу это сейчас, поскольку оно было связано с какой-то страницы Horizons: github.com/SETI/pds-toolsОфе
sk = SpiceKernel('spk_ref_160226_180221_160226.bsp')
сбой с «ValueError: тип данных SPK 1 еще не поддерживается сегментом»ооо
Офе
ооо
ооо