Sistema solar e posicionamento em torno de outros corpos
Dois tipos de cenário funcionam além do sistema Terra-Lua:
solar-systemrelata todos os corpos do catálogo em uma época: posição e velocidade, constantes físicas, tempo de luz e distância a partir de um corpo observador, e uma trilha de órbita.body-pntcoloca um usuário de navegação (um orbitador ou uma sonda pousada na superfície) em torno de qualquer corpo do catálogo que não seja o Sol e a Terra, com uma constelação de navegação local e uma distância opcional de espaço profundo a partir da Terra.
O tipo constellation-design usa o mesmo catálogo para construir constelações em torno de qualquer um desses corpos (CONSTELLATION-DESIGN.md).
Código: src/body.rs (o catálogo e suas constantes), src/ephem.rs (as efemérides analíticas), src/ephem_provider.rs (AnalyticSolarSystem, o provedor que ambos os tipos leem), src/solar_system.rs e src/body_pnt.rs (os tipos) e src/radiometric.rs (tempo de luz, distância de ida e volta e o atraso de Shapiro). Testes: tests/solar_system_horizons_reference.rs e os testes unitários de cada módulo.
O catálogo#
Dezoito corpos: o Sol, os oito planetas, Plutão, a Lua, Fobos, Deimos, as quatro luas galileanas (Io, Europa, Ganimedes, Calisto) e Titã. Os nomes são comparados sem distinção entre maiúsculas e minúsculas. Para cada um, src/body.rs traz o parâmetro gravitacional GM, os raios médios equatorial e volumétrico, o segundo harmônico zonal J2 e seu raio de referência, quando um é publicado, e o modelo de polo e meridiano primário da União Astronômica Internacional (IAU) (período de rotação sideral, negativo para um rotador retrógrado). Cada valor cita sua fonte no código.
De onde vêm as posições#
| Corpos | Modelo | Rótulo |
|---|---|---|
| De Mercúrio a Saturno e a Terra, a partir da Tabela 1 (1800 d.C. a 2050 d.C.) | Elementos keplerianos do Jet Propulsion Laboratory (JPL) de Standish e Williams, https://ssd.jpl.nasa.gov/planets/approx_pos.html | VALIDATED |
| Todos os oito planetas a partir das Tabelas 2a/2b (3000 a.C. a 3000 d.C.) | os elementos de longo intervalo da mesma página | VALIDATED |
| Urano e Netuno a partir da Tabela 1 | como acima | MODELLED |
| Plutão | a linha da Tabela 1 de 1992 (1800 d.C. a 2050 d.C. apenas; a página atual a removeu e não declara erro) | MODELLED |
| A Lua | as séries lunares de Montenbruck e Gill, separando o baricentro Terra-Lua | MODELLED |
| Fobos, Deimos, as luas galileanas, Titã | elementos médios do JPL com o modelo de rotação da IAU | MODELLED |
table = "auto" (o padrão) usa a Tabela 1 entre 1800 d.C. e 2050 d.C. e as Tabelas 2a/2b fora desse intervalo; table1 e table2 forçam uma delas. Plutão fora da sua tabela é um erro, não uma extrapolação. A época é uma data e hora ISO 8601 em Tempo Universal Coordenado (UTC), convertida por meio do Tempo Terrestre (TT) com os segundos intercalares para o Tempo Dinâmico Baricêntrico (TDB), ou uma data juliana TDB dada diretamente com epoch_jd_tdb.
A referência independente é o JPL Horizons (https://ssd.jpl.nasa.gov/horizons/, Development Ephemeris DE441), com os vetores consultados versionados em tests/fixtures/solar_system/. Uma linha de planeta é VALIDATED quando permanece dentro de duas vezes o erro nominal da própria página de Standish. Medido por cargo test --test solar_system_horizons_reference -- --nocapture:
- Tabela 1, de Mercúrio a Saturno e o baricentro Terra-Lua, 12 épocas de 1800 a 2049: pior caso de 1,87 vez o erro nominal (a distância de Saturno).
- Tabelas 2a/2b, todos os oito planetas, 15 épocas de cerca de 1000 a.C. a 2500 d.C.: pior caso de 1,71 vez (a distância de Marte).
- Urano e Netuno da Tabela 1 excedem os valores da página contra o DE441: 2,04 e 5,16 vezes o erro nominal de longitude. Eles são fixados abaixo de seis vezes e permanecem MODELLED.
- Plutão: dentro de 39,2 segundos de arco em longitude e 1.14e9 m em distância.
- Luas, pior ângulo visto do planeta entre 2000 e 2040: Fobos 5,65 graus, Deimos 0,38, Io 0,40, Europa 1,63, Ganimedes 0,22, Calisto 0,27, Titã 3,31. A Lua geocêntrica: 0,046 graus.
- Velocidades dos planetas: pior erro relativo de 3.72e-3 da velocidade (MODELLED).
A Lua e as sete luas são medidas com limiares fixados, mas não existe limite publicado em relação ao qual validá-las; por isso, são MODELLED.
As efemérides analíticas não precisam de arquivo de kernel. Um kernel de Development Ephemeris do JPL (posições de classe DE) é lido apenas pelos crates separados de validação cruzada em xval/, por meio do mesmo trait EphemerisProvider; o crate principal não depende deles.
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
Entradas: epoch (padrão 2026-01-01T00:00:00) ou epoch_jd_tdb; bodies (padrão todos os dezoito); observer (padrão a Terra); track_points por órbita (8 a 2000, padrão 120); table; e qualquer número de [[links]], cada um recebido na época.
Para cada corpo, o resultado traz sua classe e seu corpo pai, o identificador do NASA Navigation and Ancillary Information Facility (NAIF), a posição e a velocidade heliocêntricas no International Celestial Reference Frame (ICRF, equatorial J2000) em metros e metros por segundo, a longitude, a latitude e a distância eclípticas, a posição relativa ao seu corpo pai, o período orbital, as constantes acima, o polo e o meridiano primário na época, o erro nominal de Standish quando existe, seu rótulo e sua cadeia de método, e uma trilha de órbita ao longo de uma revolução (heliocêntrica para um planeta, centrada no corpo pai para uma lua; um único ponto para o Sol). O enlace a partir do observador, e cada enlace extra, fornece:
- o tempo de luz newtoniano de ida, resolvido pelo solucionador de ponto fixo de tempo de luz radiométrico, com o transmissor em sua posição retardada, e a distância de ida correspondente;
- o tempo de luz e a distância de ida e volta;
- o atraso de Shapiro do Sol, informado separadamente e não somado;
- o ângulo de separação do Sol.
O tempo de luz é VALIDATED em relação ao tempo de luz de ida que o Horizons informa: Marte e Júpiter até o centro da Terra em quatro épocas de 2000 a 2040, com pior erro de 0,070 s para Marte contra um limiar de 0,207 s e 1,31 s para Júpiter contra 4,04 s. O limiar é o dobro da soma dos erros de distância de Standish do alvo e do baricentro Terra-Lua, dividido pela velocidade da luz: o tempo de luz não pode ser melhor que as posições. É o tempo de luz geométrico newtoniano, não uma observável relativística ou corrigida por plasma.
O scenarios/solar-system-tour.toml incluído relata todos os dezoito corpos em 2026-09-28T00:00:00 com trilhas de 180 pontos e acrescenta os enlaces de Marte a Júpiter (ida 2193,539 s), de Saturno à Terra (4212,176 s) e de Europa a Júpiter (2,218 s).
body-pnt#
Um usuário navega em torno de um corpo escolhido pelo nome (qualquer corpo do catálogo exceto o Sol e a Terra, que o tipo de cenário recusa) com dois tipos de medição:
- pseudodistâncias de ida de uma constelação de navegação Walker delta em torno do corpo (
planesporsats_per_plane, defasagem entre planosphasing_f), em órbitas de dois corpos com a deriva secular deJ2do próprio corpo; o relógio do usuário é desconhecido, de modo que essas linhas trazem uma coluna de viés de relógio; - opcionalmente, uma distância de ida e volta a partir do centro da Terra (
[earth_link]), que não precisa de relógio do usuário e é informada como uma distância de ida com ruído próprio. A direção e a distância da Terra vêm da efeméride analítica em cada época.
Uma linha de visada é bloqueada quando passa por dentro do raio médio do corpo (o teste de corda do tipo mars-pnt), e um usuário em superfície também precisa da máscara de elevação. Em cada época, a execução forma a diluição da precisão geométrica e de posição (GDOP, PDOP) da constelação sozinha, a incerteza formal de posição de um sigma com e sem a linha da Terra, e uma solução de mínimos quadrados de Gauss-Newton com semente fixa para cada caso, de modo que o relatório mostra o que o enlace de espaço profundo acrescenta.
| Tabela | Campo | Padrão |
|---|---|---|
| nível superior | body |
Mars |
epoch / epoch_jd_tdb |
2027-02-19T00:00:00, uma oposição de Marte | |
duration_s, step_s |
86.400 s, 600 s | |
seed |
1 | |
table |
auto |
|
[user] |
kind |
orbiter (ou surface) |
orbitador: altitude_km, inclination_deg, raan_deg, u0_deg, eccentricity |
400 km, 75 graus, 0, 0, 0 | |
superfície: lat_deg, lon_deg, height_m |
0, 0, 0 | |
[constellation] |
planes, sats_per_plane, phasing_f |
3, 4, 1 |
altitude_km |
três raios médios | |
inclination_deg |
60 graus | |
sigma_range_m |
1 m | |
mask_deg (usuário em superfície) |
10 graus | |
[earth_link] |
enabled, sigma_range_m |
verdadeiro, 1 m |
raan_deg é a ascensão reta do nó ascendente no referencial equatorial do corpo e u0_deg é o argumento de latitude na época.
Os dois cenários incluídos, como são executados com o kshana 0,36 (matemática portátil, a mesma em todas as plataformas):
scenarios/mars-orbit-pnt.toml |
scenarios/europa-surface-pnt.toml |
|
|---|---|---|
| Usuário | orbitador, 300 km, 93 graus | superfície, 20 graus N, 60 graus E |
| Relés | 12 a 10.000 km, 60 graus | 12 a 4500 km, 55 graus, máscara de 10 graus |
| Duração | um sol, 296 épocas | 306.822 s, 171 épocas |
| Tempo de luz até a Terra, ida / ida e volta | 338,3 s / 676,6 s | 2182,9 s / 4365,8 s |
| Terra em visada | 0,811 das épocas | 0.439 |
| Disponibilidade, somente relés / com a distância da Terra | 1.000 / 1.000 | 0.480 / 0.713 |
| PDOP mediano | 1.375 | 5.360 |
| Erro RMS da solução, somente relés / com a distância da Terra | 1,883 m / 1,629 m | 112,742 m / 86,499 m |
| Sigma formal mediano, somente relés / com a distância da Terra | 1,375 m / 1,304 m | 5,360 m / 4,239 m |
(RMS: raiz do valor quadrático médio.) Uma época de Europa (t = 16.200 s) fica no limite da disponibilidade, onde o último bit de um raio calculado decide se a sua solução com a distância da Terra é obtida. Antes da 0,36, a biblioteca matemática do hospedeiro decidia isso; assim, o mesmo cenário imprimia 0,719 e 86,147 m no Linux x86-64 e 0,725 e 85,800 m no macOS arm64 para os dois valores "com a distância da Terra". Desde a 0,36, toda função transcendente é calculada pela biblioteca matemática portátil, a época se resolve de uma única maneira em todas as plataformas (nativa e WebAssembly dão os mesmos bytes), e os valores são 0,713 e 86,499 m (docs/revisions/STUDIO15-portable-math-rebaseline.md). Em torno de Europa, a distância da Terra eleva a disponibilidade de 0,480 para 0,713 das épocas. Onde a Terra nunca se afasta do limbo, o enlace não acrescenta nada: um módulo de pouso a 89,5 graus S na Lua, sob uma casca de relés de 12 satélites a 5000 km, tem a Terra em visada em 0 de 145 épocas, e seus erros são os mesmos com e sem o enlace.
MODELLED. As órbitas dos relés ignoram terceiros corpos (a atração de Júpiter sobre relés em torno de Europa não é modelada), o ruído é gaussiano nos níveis declarados e o modelo de medição é instantâneo, não retardado pelo tempo de luz. O que é verificado: o período do relé em relação à terceira lei de Kepler para o corpo, um orbitador que mantém o seu raio e um módulo de pouso na superfície, a distância da Terra nunca piorando a incerteza formal, os erros da solução com semente fixa concordando com o sigma formal (raiz do valor quadrático médio do erro sobre o sigma em [0,6, 1,5]) e uma execução determinística. Nada disso são dados de navegação de uma missão.
O tipo ephemeris#
Apesar do nome, ephemeris é um tipo de satélite da Terra: um satélite, a partir de um conjunto de elementos de duas linhas (TLE) pelo propagador Simplified General Perturbations 4 (SGP4) ou a partir de uma órbita analítica, sobre uma grade de tempo. A cada passo, ele emite o estado inercial (posição e velocidade) no referencial true equator, mean equinox (TEME) e no Geocentric Celestial Reference System (GCRS), a posição fixa à Terra, o ponto subsatélite do World Geodetic System 1984 (WGS 84) e, para uma estação em solo opcional, azimute, elevação, distância e taxa de variação da distância. eop_finals2000a recebe o texto de um arquivo finals2000A do International Earth Rotation and Reference Systems Service (IERS) para UT1−UTC e movimento polar por época. Código: 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
Não modelado#
- Termos relativísticos de tempo de luz além do atraso de Shapiro informado separadamente, e o atraso por plasma solar.
- Posições melhores que a exatidão de Standish e de elementos médios declarada acima; não há leitor de kernel no crate principal.
- Perturbações de terceiros corpos nos relés de
body-pnte nas órbitas deconstellation-design. - Terreno em qualquer corpo: um corpo é a sua esfera média.
- Exportações de interoperabilidade: CZML, KML e GeoJSON descrevem posições em torno da Terra; portanto, os cenários
solar-systemebody-pntnão exportam nenhum (INTEROP.md).
Referências#
- E. M. Standish e 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 e 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/.