Солнечная система и позиционирование вокруг других тел
Два вида сценариев работают за пределами системы Земля–Луна:
solar-systemсообщает о каждом теле каталога в одну эпоху: положение и скорость, физические постоянные, время распространения света и расстояние от тела-наблюдателя, а также трек орбиты.body-pntпомещает навигационного пользователя (орбитальный аппарат или посадочный модуль на поверхности) возле любого тела каталога, кроме Солнца и Земли, с локальной навигационной группировкой и необязательным дальним космическим измерением расстояния от Земли.
Вид constellation-design использует тот же каталог для построения орбитальных группировок вокруг любого из этих тел (CONSTELLATION-DESIGN.md).
Код: src/body.rs (каталог и его постоянные), src/ephem.rs (аналитические эфемериды), src/ephem_provider.rs (AnalyticSolarSystem, поставщик, который читают оба вида), src/solar_system.rs и src/body_pnt.rs (виды) и src/radiometric.rs (время распространения света, двустороннее расстояние и задержка Шапиро). Тесты: tests/solar_system_horizons_reference.rs и модульные тесты каждого модуля.
Каталог#
Восемнадцать тел: Солнце, восемь планет, Плутон, Луна, Фобос, Деймос, четыре галилеевых спутника (Ио, Европа, Ганимед, Каллисто) и Титан. Названия сопоставляются без учёта регистра. Для каждого src/body.rs содержит гравитационный параметр GM, экваториальный и объёмный средний радиусы, второй зональный гармонический коэффициент J2 и его опорный радиус там, где он опубликован, а также модель полюса и нулевого меридиана Международного астрономического союза (IAU) (период сидерического вращения, отрицательный для тела с обратным вращением). Каждое значение в коде снабжено ссылкой на источник.
Откуда берутся положения#
| Тела | Модель | Метка |
|---|---|---|
| От Меркурия до Сатурна и Земля, по таблице 1 (с 1800 по 2050 н. э.) | Кеплеровы элементы Лаборатории реактивного движения (JPL), Standish и Williams, https://ssd.jpl.nasa.gov/planets/approx_pos.html | VALIDATED |
| Все восемь планет по таблицам 2a/2b (с 3000 до н. э. по 3000 н. э.) | элементы той же страницы для длинного интервала | VALIDATED |
| Уран и Нептун по таблице 1 | как выше | MODELLED |
| Плутон | строка таблицы 1 за 1992 год (только с 1800 по 2050 н. э.; на текущей странице она убрана, и ошибка не указана) | MODELLED |
| Луна | лунный ряд Монтенбрука и Гилла с разделением барицентра Земля–Луна | MODELLED |
| Фобос, Деймос, галилеевы спутники, Титан | средние элементы JPL с моделью вращения IAU | MODELLED |
table = "auto" (по умолчанию) берёт таблицу 1 в интервале с 1800 по 2050 н. э. и таблицы 2a/2b вне него; table1 и table2 принудительно выбирают одну из них. Плутон вне своей таблицы — это ошибка, а не экстраполяция. Эпоха — это дата и время по ISO 8601 в координированном всемирном времени (UTC), переведённые через земное время (TT) с учётом високосных секунд в барицентрическое динамическое время (TDB), либо юлианская дата по TDB, заданная напрямую через epoch_jd_tdb.
Оракул — JPL Horizons (https://ssd.jpl.nasa.gov/horizons/, Development Ephemeris DE441), запрошенные векторы зафиксированы в tests/fixtures/solar_system/. Строка планеты имеет статус VALIDATED, если остаётся в пределах двукратной номинальной ошибки самой страницы Standish. Измерено тестом cargo test --test solar_system_horizons_reference -- --nocapture:
- Таблица 1, от Меркурия до Сатурна и барицентр Земля–Луна, 12 эпох с 1800 по 2049: наихудший результат — 1,87 номинальной ошибки (расстояние до Сатурна).
- Таблицы 2a/2b, все восемь планет, 15 эпох примерно с 1000 до н. э. по 2500 н. э.: наихудший результат — 1,71 (расстояние до Марса).
- Уран и Нептун по таблице 1 превышают значения страницы относительно DE441: 2,04 и 5,16 номинальной ошибки по долготе. Они закреплены ниже шестикратного значения и остаются MODELLED.
- Плутон: в пределах 39,2 угловой секунды по долготе и 1.14e9 м по расстоянию.
- Спутники, наихудший угол при взгляде с планеты за 2000–2040 годы: Фобос 5,65 град, Деймос 0,38, Ио 0,40, Европа 1,63, Ганимед 0,22, Каллисто 0,27, Титан 3,31. Луна относительно центра Земли: 0,046 град.
- Скорости планет: наихудшая относительная ошибка 3.72e-3 скорости (MODELLED).
Луна и семь спутников измерены с закреплёнными порогами, но опубликованной границы, по которой их можно было бы проверить, нет, поэтому они имеют статус MODELLED.
Аналитическим эфемеридам файл ядра не нужен. Ядро JPL Development Ephemeris (положения класса DE) читают только отдельные крейты перекрёстной проверки в xval/ через тот же трейт EphemerisProvider; основной крейт от них не зависит.
solar-system#
kind = "solar-system"
epoch = "2030-01-01T00:00:00"
bodies = ["Earth", "Moon", "Mars", "Jupiter", "Europa"]
observer = "Mars"
[[links]]
from = "Europa"
to = "Earth"
Solar system at 2030-01-01T00:00:00 (JD 2462502.50080 TDB), 5 bodies, observer Mars
Standish Table 1 (1800 AD to 2050 AD)
Earth 0.9833 au lon 100.18 deg light time 1038.1 s [VALIDATED]
Moon 0.9815 au lon 100.28 deg light time 1037.8 s [MODELLED]
Mars 1.3814 au lon 337.83 deg observer [VALIDATED]
Jupiter 5.4235 au lon 222.19 deg light time 3068.4 s [VALIDATED]
Europa 5.4194 au lon 222.17 deg light time 3066.6 s [MODELLED]
link Europa -> Earth: one-way 2993.281 s, two-way 5986.612 s, Shapiro 33.7 us, Sun 50.0 deg
Входные данные: epoch (по умолчанию 2026-01-01T00:00:00) или epoch_jd_tdb; bodies (по умолчанию все восемнадцать); observer (по умолчанию Земля); track_points на орбиту (от 8 до 2000, по умолчанию 120); table; и любое число [[links]], каждая из которых принимается в эту эпоху.
Для каждого тела результат содержит его класс и родителя, идентификатор Службы навигационной и вспомогательной информации NASA (NAIF), гелиоцентрические положение и скорость в Международной небесной системе отсчёта (ICRF, экваториальная J2000) в метрах и метрах в секунду, эклиптические долготу, широту и расстояние, положение относительно родителя, орбитальный период, перечисленные выше постоянные, полюс и нулевой меридиан в эту эпоху, номинальную ошибку Standish, где она есть, его подпись и строку метода, а также трек орбиты за один оборот (гелиоцентрический для планеты, с центром на родителе для спутника; одна точка для Солнца). Линия от наблюдателя и каждая дополнительная линия дают:
- ньютоновское одностороннее время распространения света, найденное радиометрическим решателем времени распространения света методом неподвижной точки с передатчиком в его запаздывающем положении, и соответствующее одностороннее расстояние;
- двустороннее время распространения света и расстояние;
- задержку Шапиро от Солнца, сообщаемую отдельно и не прибавляемую;
- угол отстояния от Солнца.
Время распространения света имеет статус VALIDATED относительно одностороннего времени распространения света, которое сообщает Horizons: от Марса и Юпитера до центра Земли в четыре эпохи с 2000 по 2040, наихудшая ошибка 0,070 с для Марса при пороге 0,207 с и 1,31 с для Юпитера при 4,04 с. Порог — это удвоенная сумма ошибок расстояния Standish для цели и барицентра Земля–Луна, делённая на скорость света: время распространения света не может быть точнее положений. Это ньютоновское геометрическое время распространения света, а не релятивистская или скорректированная на плазму наблюдаемая величина.
Встроенный scenarios/solar-system-tour.toml сообщает обо всех восемнадцати телах на 2026-09-28T00:00:00 с треками из 180 точек и добавляет линии Марс–Юпитер (в одну сторону 2193,539 с), Сатурн–Земля (4212,176 с) и Европа–Юпитер (2,218 с).
body-pnt#
Пользователь ориентируется вокруг тела, выбранного по имени (любое тело каталога, кроме Солнца и Земли, которые вид отклоняет), по измерениям двух видов:
- односторонние псевдодальности от навигационной группировки Уокера (дельта) вокруг тела (
planesпоsats_per_plane, межплоскостной сдвиг фазphasing_f), движущейся по двухтельным орбитам с вековым дрейфом по собственномуJ2тела; часы пользователя неизвестны, поэтому эти строки содержат столбец смещения часов; - при необходимости — двустороннее расстояние от центра Земли (
[earth_link]), для которого часы пользователя не нужны и которое сообщается как одностороннее расстояние со своим шумом. Направление и расстояние до Земли берутся из аналитических эфемерид на каждую эпоху.
Линия визирования блокируется, когда проходит внутри среднего радиуса тела (проверка хорды вида mars-pnt), а пользователю на поверхности нужна ещё и угловая маска. В каждую эпоху прогон формирует геометрический и позиционный факторы ухудшения точности (GDOP, PDOP) одной только группировки, формальную неопределённость положения на один сигма с строкой Земли и без неё, а также решение методом наименьших квадратов Гаусса–Ньютона с начальным значением в каждом из двух вариантов, чтобы отчёт показывал, что добавляет линия дальнего космоса.
| Таблица | Поле | По умолчанию |
|---|---|---|
| верхний уровень | body |
Mars |
epoch / epoch_jd_tdb |
2027-02-19T00:00:00, противостояние Марса | |
duration_s, step_s |
86 400 с, 600 с | |
seed |
1 | |
table |
auto |
|
[user] |
kind |
orbiter (или surface) |
орбитальный аппарат: altitude_km, inclination_deg, raan_deg, u0_deg, eccentricity |
400 км, 75 град, 0, 0, 0 | |
поверхность: lat_deg, lon_deg, height_m |
0, 0, 0 | |
[constellation] |
planes, sats_per_plane, phasing_f |
3, 4, 1 |
altitude_km |
три средних радиуса | |
inclination_deg |
60 град | |
sigma_range_m |
1 м | |
mask_deg (пользователь на поверхности) |
10 град | |
[earth_link] |
enabled, sigma_range_m |
true, 1 м |
raan_deg — прямое восхождение восходящего узла в экваториальной системе тела, а u0_deg — аргумент широты в эту эпоху.
Два встроенных сценария в том виде, как они выполняются в kshana 0,36 (переносимая математика, одинаковая на всех платформах):
scenarios/mars-orbit-pnt.toml |
scenarios/europa-surface-pnt.toml |
|
|---|---|---|
| Пользователь | орбитальный аппарат, 300 км, 93 град | поверхность, 20 град с. ш., 60 град в. д. |
| Ретрансляторы | 12 на 10 000 км, 60 град | 12 на 4500 км, 55 град, маска 10 град |
| Интервал | одни марсианские сутки, 296 эпох | 306 822 с, 171 эпоха |
| Время распространения света до Земли, в одну сторону / туда и обратно | 338,3 с / 676,6 с | 2182,9 с / 4365,8 с |
| Земля в зоне видимости | 0,811 эпох | 0.439 |
| Доступность, только ретрансляторы / с измерением расстояния до Земли | 1.000 / 1.000 | 0.480 / 0.713 |
| Медианный PDOP | 1.375 | 5.360 |
| СКО ошибки решения, только ретрансляторы / с измерением расстояния до Земли | 1,883 м / 1,629 м | 112,742 м / 86,499 м |
| Медианная формальная сигма, только ретрансляторы / с измерением расстояния до Земли | 1,375 м / 1,304 м | 5,360 м / 4,239 м |
(RMS — среднеквадратичное значение, СКО.) Одна эпоха Европы (t = 16 200 с) лежит на границе доступности, где последний бит вычисленного радиуса решает, будет ли получено её решение по расстоянию до Земли. До 0,36 это решала математическая библиотека хоста, поэтому один и тот же сценарий выводил 0,719 и 86,147 м в Linux x86-64 и 0,725 и 85,800 м в macOS arm64 для двух значений «с измерением расстояния до Земли». Начиная с 0,36 каждая трансцендентная функция вычисляется переносимой математической библиотекой, эпоха разрешается одинаково на всех платформах (нативная сборка и WebAssembly дают одни и те же байты), а значения равны 0,713 и 86,499 м (docs/revisions/STUDIO15-portable-math-rebaseline.md). Вокруг Европы измерение расстояния до Земли поднимает доступность с 0,480 до 0,713 эпох. Там, где Земля никогда не выходит из-за лимба, линия ничего не добавляет: посадочный модуль на 89,5 град ю. ш. на Луне под ретрансляционной оболочкой из 12 спутников на высоте 5000 км видит Землю в 0 из 145 эпох, и его ошибки с линией и без неё одинаковы.
MODELLED. Орбиты ретрансляторов не учитывают третьи тела (притяжение Юпитера на ретрансляторы вокруг Европы не моделируется), шум гауссов на указанных уровнях, а модель измерения мгновенная, без учёта запаздывания по времени распространения света. Что проверяется: период ретранслятора по третьему закону Кеплера для данного тела, сохранение радиуса орбитальным аппаратом и нахождение посадочного модуля на поверхности, то, что измерение расстояния до Земли никогда не ухудшает формальную неопределённость, согласие ошибок решения с начальным значением и формальной сигмы (среднеквадратичная ошибка, делённая на сигму, в интервале [0,6, 1,5]) и детерминированность прогона. Ничто из этого не является навигационными данными какой-либо миссии.
Вид ephemeris#
Несмотря на название, ephemeris — это вид для спутника Земли: один спутник, по набору двухстрочных элементов (TLE) через пропагатор Simplified General Perturbations 4 (SGP4) или по аналитической орбите, на сетке времени. На каждом шаге он выдаёт инерциальное состояние (положение и скорость) в системе истинного экватора и среднего равноденствия (TEME) и в Геоцентрической небесной системе отсчёта (GCRS), положение в системе, связанной с Землёй, подспутниковую точку в Мировой геодезической системе 1984 (WGS 84) и, для необязательной наземной станции, азимут, угол места, расстояние и скорость его изменения. eop_finals2000a принимает текст файла finals2000A Международной службы вращения Земли и систем отсчёта (IERS) для поэпоховых UT1−UTC и движения полюса. Код: src/ephemeris.rs.
$ kshana scenarios/ephemeris.toml
scenario 0d4dd01b3160 | sgp4 (TLE) | 559 samples | alt 419–434 km | |lat| ≤ 51.8° | speed 7653–7661 m/s | max el 25.7° peak Doppler 34.3 kHz
Не моделируется#
- Релятивистские члены времени распространения света сверх отдельно сообщаемой задержки Шапиро и задержка в солнечной плазме.
- Положения точнее указанной выше точности Standish и средних элементов; в основном крейте нет читателя ядер.
- Возмущения от третьих тел для ретрансляторов
body-pntи для орбитconstellation-design. - Рельеф на любом теле: тело — это его средняя сфера.
- Экспорт для совместимости: CZML, KML и GeoJSON описывают положения вокруг Земли, поэтому сценарии
solar-systemиbody-pntничего не экспортируют (INTEROP.md).
Литература#
- E. M. Standish and J. G. Williams, "Keplerian Elements for Approximate Positions of the Major Planets," JPL Solar System Dynamics, https://ssd.jpl.nasa.gov/planets/approx_pos.html.
- O. Montenbruck and E. Gill, Satellite Orbits: Models, Methods and Applications, Springer, 2000, §3.3.2.
- B. A. Archinal et al., "Report of the IAU Working Group on Cartographic Coordinates and Rotational Elements: 2015," Celestial Mechanics and Dynamical Astronomy 130, 2018.
- JPL Horizons, https://ssd.jpl.nasa.gov/horizons/.