Układ Słoneczny i pozycjonowanie wokół innych ciał
Dwa rodzaje scenariuszy działają poza układem Ziemia–Księżyc:
solar-systempodaje wszystkie ciała katalogu w jednej epoce: położenie i prędkość, stałe fizyczne, czas światła i odległość od ciała obserwatora oraz tor orbity.body-pntumieszcza użytkownika nawigacji (orbiter lub lądownik) wokół dowolnego ciała katalogu innego niż Słońce i Ziemia, z lokalną konstelacją nawigacyjną i opcjonalną odległością w przestrzeni kosmicznej od Ziemi.
Rodzaj constellation-design używa tego samego katalogu do budowy konstelacji wokół każdego z tych ciał (CONSTELLATION-DESIGN.md).
Kod: src/body.rs (katalog i jego stałe), src/ephem.rs (efemerydy analityczne), src/ephem_provider.rs (AnalyticSolarSystem, dostawca czytany przez oba rodzaje), src/solar_system.rs i src/body_pnt.rs (rodzaje) oraz src/radiometric.rs (czas światła, odległość dwukierunkowa i opóźnienie Shapiro). Testy: tests/solar_system_horizons_reference.rs oraz testy jednostkowe każdego modułu.
Katalog#
Osiemnaście ciał: Słońce, osiem planet, Pluton, Księżyc, Fobos, Deimos, cztery księżyce galileuszowe (Io, Europa, Ganimedes, Kallisto) i Tytan. Nazwy są dopasowywane bez względu na wielkość liter. Dla każdego src/body.rs zawiera parametr grawitacyjny GM, promienie równikowy i objętościowy średni, drugą harmoniczną zonalną J2 wraz z jej promieniem odniesienia, tam gdzie go opublikowano, oraz model bieguna i południka zerowego Międzynarodowej Unii Astronomicznej (IAU) (gwiazdowy okres obrotu, ujemny dla obrotu wstecznego). Każda wartość podaje w kodzie swoje źródło.
Skąd pochodzą położenia#
| Ciała | Model | Etykieta |
|---|---|---|
| Merkury do Saturna oraz Ziemia, z tabeli 1 (od 1800 AD do 2050 AD) | elementy keplerowskie Jet Propulsion Laboratory (JPL) według Standisha i Williamsa, https://ssd.jpl.nasa.gov/planets/approx_pos.html | VALIDATED |
| Wszystkie osiem planet z tabel 2a/2b (od 3000 BC do 3000 AD) | elementy długookresowe z tej samej strony | VALIDATED |
| Uran i Neptun z tabeli 1 | jak wyżej | MODELLED |
| Pluton | wiersz tabeli 1 z 1992 (tylko od 1800 AD do 2050 AD; obecna strona go usunęła i nie podaje błędu) | MODELLED |
| Księżyc | szereg księżycowy Montenbrucka i Gilla, z rozdzieleniem barycentrum Ziemia–Księżyc | MODELLED |
| Fobos, Deimos, księżyce galileuszowe, Tytan | średnie elementy JPL z modelem rotacji IAU | MODELLED |
table = "auto" (domyślnie) bierze tabelę 1 w zakresie od 1800 AD do 2050 AD, a tabele 2a/2b poza nim; table1 i table2 wymuszają jedną z nich. Pluton poza swoją tabelą to błąd, a nie ekstrapolacja. Epoka to data i czas w formacie ISO 8601 w uniwersalnym czasie koordynowanym (UTC), przeliczone przez czas ziemski (TT) z sekundami przestępnymi na barycentryczny czas dynamiczny (TDB), albo juliańska data TDB podana bezpośrednio przez epoch_jd_tdb.
Wyrocznią jest JPL Horizons (https://ssd.jpl.nasa.gov/horizons/, Development Ephemeris DE441), z zapytanymi wektorami zatwierdzonymi w tests/fixtures/solar_system/. Wiersz planety jest VALIDATED tam, gdzie mieści się w dwukrotności nominalnego błędu podanego na stronie Standisha. Zmierzone przez cargo test --test solar_system_horizons_reference -- --nocapture:
- Tabela 1, Merkury do Saturna oraz barycentrum Ziemia–Księżyc, 12 epok od 1800 do 2049: najgorzej 1,87 razy błąd nominalny (odległość Saturna).
- Tabele 2a/2b, wszystkie osiem planet, 15 epok od około 1000 BC do 2500 AD: najgorzej 1,71 razy (odległość Marsa).
- Uran i Neptun z tabeli 1 przekraczają wartości ze strony względem DE441: 2,04 i 5,16 razy nominalny błąd długości. Są przypięte poniżej sześciokrotności i pozostają MODELLED.
- Pluton: w granicach 39,2 sekundy łuku w długości i 1.14e9 m w odległości.
- Księżyce, najgorszy kąt widziany z planety w latach od 2000 do 2040: Fobos 5,65 deg, Deimos 0,38, Io 0,40, Europa 1,63, Ganimedes 0,22, Kallisto 0,27, Tytan 3,31. Księżyc geocentryczny: 0,046 deg.
- Prędkości planet: najgorszy błąd względny 3.72e-3 prędkości (MODELLED).
Księżyc i siedem księżyców zmierzono z przypiętymi progami, ale nie istnieje opublikowana granica, względem której dałoby się je potwierdzić, więc są MODELLED.
Efemerydy analityczne nie potrzebują pliku jądra. Jądro JPL Development Ephemeris (położenia klasy DE) jest czytane wyłącznie przez osobne skrzynki walidacji krzyżowej w xval/, przez ten sam trait EphemerisProvider; główna skrzynka od nich nie zależy.
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
Dane wejściowe: epoch (domyślnie 2026-01-01T00:00:00) lub epoch_jd_tdb; bodies (domyślnie wszystkie osiemnaście); observer (domyślnie Ziemia); track_points na orbitę (od 8 do 2000, domyślnie 120); table; oraz dowolna liczba [[links]], każde odbierane w epoce.
Dla każdego ciała wynik podaje jego klasę i ciało macierzyste, identyfikator NASA Navigation and Ancillary Information Facility (NAIF), heliocentryczne położenie i prędkość w Międzynarodowym Niebieskim Układzie Odniesienia (ICRF, równikowy J2000) w metrach i metrach na sekundę, długość, szerokość i odległość ekliptyczną, położenie względem ciała macierzystego, okres orbitalny, stałe wymienione wyżej, biegun i południk zerowy w epoce, nominalny błąd Standisha tam, gdzie istnieje, jego etykietę i ciąg metody oraz tor orbity w jednym obiegu (heliocentryczny dla planety, wyśrodkowany na ciele macierzystym dla księżyca; pojedynczy punkt dla Słońca). Łącze od obserwatora i każde dodatkowe łącze podaje:
- newtonowski jednokierunkowy czas światła, rozwiązany radiometrycznym solwerem czasu światła z punktem stałym, z nadajnikiem w jego położeniu opóźnionym, oraz odpowiadającą mu odległość jednokierunkową;
- dwukierunkowy czas światła i odległość;
- opóźnienie Shapiro od Słońca, podawane osobno i niedodawane;
- kąt odległości od Słońca.
Czas światła jest VALIDATED względem jednokierunkowego czasu światła podawanego przez Horizons: Mars i Jowisz do środka Ziemi w czterech epokach od 2000 do 2040, najgorszy błąd 0,070 s dla Marsa wobec progu 0,207 s oraz 1,31 s dla Jowisza wobec 4,04 s. Próg to dwukrotność sumy błędów odległości Standisha celu i barycentrum Ziemia–Księżyc, podzielona przez prędkość światła: czas światła nie może być lepszy niż położenia. Jest to newtonowski geometryczny czas światła, a nie obserwabla z poprawkami relatywistycznymi lub plazmowymi.
Dołączony scenarios/solar-system-tour.toml podaje wszystkie osiemnaście ciał w epoce 2026-09-28T00:00:00 z torami o 180 punktach oraz dodaje łącza Mars–Jowisz (jednokierunkowo 2193,539 s), Saturn–Ziemia (4212,176 s) i Europa–Jowisz (2,218 s).
body-pnt#
Użytkownik nawiguje wokół ciała wybranego po nazwie (dowolne ciało katalogu poza Słońcem i Ziemią, których ten rodzaj odmawia) przy dwóch rodzajach pomiarów:
- jednokierunkowe pseudoodległości z konstelacji nawigacyjnej Walker delta wokół ciała (
planesposats_per_plane, przesunięcie fazowe między płaszczyznamiphasing_f), lecące po orbitach dwóch ciał z własnym dryfem wtórnymJ2tego ciała; zegar użytkownika jest nieznany, więc te wiersze zawierają kolumnę błędu zegara; - opcjonalnie dwukierunkowa odległość od środka Ziemi (
[earth_link]), która nie wymaga zegara użytkownika i jest podawana jako odległość jednokierunkowa z własnym szumem. Kierunek i odległość Ziemi pochodzą z efemeryd analitycznych w każdej epoce.
Linia widzenia jest zablokowana, gdy przechodzi wewnątrz średniego promienia ciała (test cięciwy rodzaju mars-pnt), a użytkownik na powierzchni potrzebuje też maski elewacji. W każdej epoce przebieg wyznacza geometryczny i pozycyjny współczynnik rozmycia dokładności (GDOP, PDOP) samej konstelacji, formalną niepewność pozycji o jednym sigma z wierszem Ziemi i bez niego oraz wyznaczenie pozycji metodą najmniejszych kwadratów Gaussa–Newtona z ziarnem w obu wariantach, dzięki czemu raport pokazuje, co dodaje łącze w przestrzeni kosmicznej.
| Tabela | Pole | Wartość domyślna |
|---|---|---|
| najwyższy poziom | body |
Mars |
epoch / epoch_jd_tdb |
2027-02-19T00:00:00, opozycja Marsa | |
duration_s, step_s |
86 400 s, 600 s | |
seed |
1 | |
table |
auto |
|
[user] |
kind |
orbiter (lub surface) |
orbiter: altitude_km, inclination_deg, raan_deg, u0_deg, eccentricity |
400 km, 75 deg, 0, 0, 0 | |
powierzchnia: lat_deg, lon_deg, height_m |
0, 0, 0 | |
[constellation] |
planes, sats_per_plane, phasing_f |
3, 4, 1 |
altitude_km |
trzy średnie promienie | |
inclination_deg |
60 deg | |
sigma_range_m |
1 m | |
mask_deg (użytkownik na powierzchni) |
10 deg | |
[earth_link] |
enabled, sigma_range_m |
true, 1 m |
raan_deg to rektascensja węzła wstępującego w układzie równikowym ciała, a u0_deg to argument szerokości w epoce.
Dwa dołączone scenariusze, tak jak działają w kshana 0,36 (przenośna matematyka, taka sama na każdej platformie):
scenarios/mars-orbit-pnt.toml |
scenarios/europa-surface-pnt.toml |
|
|---|---|---|
| Użytkownik | orbiter, 300 km, 93 deg | powierzchnia, 20 deg N, 60 deg E |
| Przekaźniki | 12 na 10 000 km, 60 deg | 12 na 4500 km, 55 deg, maska 10 deg |
| Zakres | jeden sol, 296 epok | 306 822 s, 171 epok |
| Czas światła do Ziemi, w jedną stronę / tam i z powrotem | 338,3 s / 676,6 s | 2182,9 s / 4365,8 s |
| Ziemia w widoku | 0,811 epok | 0.439 |
| Dostępność, tylko przekaźniki / z odległością od Ziemi | 1.000 / 1.000 | 0.480 / 0.713 |
| Mediana PDOP | 1.375 | 5.360 |
| Błąd średniokwadratowy pozycji, tylko przekaźniki / z odległością od Ziemi | 1,883 m / 1,629 m | 112,742 m / 86,499 m |
| Mediana formalnego sigma, tylko przekaźniki / z odległością od Ziemi | 1,375 m / 1,304 m | 5,360 m / 4,239 m |
(RMS: wartość średniokwadratowa.) Jedna epoka Europy (t = 16 200 s) leży na krawędzi dostępności, gdzie ostatni bit obliczonego promienia rozstrzyga, czy wyznaczenie pozycji z odległością od Ziemi zostanie wykonane. Przed 0,36 rozstrzygała o tym biblioteka matematyczna gospodarza, więc ten sam scenariusz drukował 0,719 i 86,147 m w Linux x86-64 oraz 0,725 i 85,800 m w macOS arm64 dla dwóch wartości „z odległością od Ziemi”. Od 0,36 każda funkcja przestępna jest liczona przenośną biblioteką matematyczną, epoka rozstrzyga się jednakowo na każdej platformie (natywnie i w WebAssembly te same bajty), a wartości wynoszą 0,713 i 86,499 m (docs/revisions/STUDIO15-portable-math-rebaseline.md). Wokół Europy odległość od Ziemi podnosi dostępność z 0,480 do 0,713 epok. Tam, gdzie Ziemia nigdy nie wychodzi zza limbu, łącze niczego nie dodaje: lądownik na 89,5 deg S na Księżycu pod powłoką 12 przekaźników na 5000 km ma Ziemię w widoku w 0 z 145 epok, a jego błędy są takie same z łączem i bez niego.
MODELLED. Orbity przekaźników pomijają ciała trzecie (przyciąganie Jowisza na przekaźniki wokół Europy nie jest modelowane), szum jest gaussowski na podanych poziomach, a model pomiaru jest chwilowy, bez opóźnienia o czas światła. Co jest sprawdzane: okres przekaźnika względem trzeciego prawa Keplera dla ciała, orbiter utrzymujący swój promień i lądownik na powierzchni, odległość od Ziemi nigdy niepogarszająca formalnej niepewności, błędy wyznaczenia pozycji z ziarnem zgodne z formalnym sigma (pierwiastek ze średniej kwadratów błędu przez sigma w [0,6, 1,5]) oraz deterministyczny przebieg. Nic z tego nie jest danymi nawigacyjnymi żadnej misji.
Rodzaj ephemeris#
Mimo nazwy ephemeris jest rodzajem dla satelity okołoziemskiego: jeden satelita, z zestawu elementów dwuwierszowych (TLE) przez propagator Simplified General Perturbations 4 (SGP4) albo z orbity analitycznej, na siatce czasu. W każdym kroku podaje stan inercjalny (położenie i prędkość) w układzie prawdziwego równika i średniego równonocy (TEME) oraz w Geocentrycznym Niebieskim Układzie Odniesienia (GCRS), położenie w układzie związanym z Ziemią, punkt podsatelitarny w World Geodetic System 1984 (WGS 84) oraz, dla opcjonalnej stacji naziemnej, azymut, elewację, odległość i prędkość zmiany odległości. eop_finals2000a przyjmuje tekst pliku finals2000A Międzynarodowej Służby Ruchu Obrotowego Ziemi i Systemów Odniesienia (IERS) z UT1−UTC i ruchem bieguna dla każdej epoki. Kod: 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
Niemodelowane#
- Relatywistyczne człony czasu światła poza osobno podawanym opóźnieniem Shapiro oraz opóźnienie w plazmie słonecznej.
- Położenia lepsze niż dokładność Standisha i elementów średnich podana wyżej; w głównej skrzynce nie ma czytnika jądra.
- Perturbacje od ciał trzecich dla przekaźników
body-pnti dla orbitconstellation-design. - Teren na dowolnym ciele: ciało jest swoją średnią sferą.
- Eksporty interoperacyjności: CZML, KML i GeoJSON opisują położenia względem Ziemi, więc scenariusze
solar-systemibody-pntniczego nie eksportują (INTEROP.md).
Bibliografia#
- E. M. Standish i 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 i E. Gill, Satellite Orbits: Models, Methods and Applications, Springer, 2000, §3.3.2.
- B. A. Archinal i in., „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/.