leo-navmsg (tipo de cenário)
Tipo de cenário do motor v0.40.0, família Navegação em órbita terrestre baixa. Consultivo: resultado de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana. Cada etiqueta aqui é do motor ou da matriz de verificação; um tipo de cenário é MODELLED salvo indicação em contrário da matriz (como se obtém um rótulo: a secção Evidence do README).
O que faz#
Mensagem de navegação LEO: as efemérides e o relógio transmitidos de um satélite de posicionamento, navegação e temporização em órbita terrestre baixa (LEO), para qualquer órbita, portadora e modelo, com predefinições nomeadas opcionais (Xona Pulsar, Iridium, Starlink, CentiSpace, um sistema representativo em banda C, o modelo ATOMIC de relógio zero, Celeste IOD). CONTEÚDO: dados auxiliares (SVID, número de emissão dos dados, banda, saúde do sinal), sincronização (semana, tempo da semana, um polinómio de relógio de segunda ordem af0-af2 em torno de toc), efemérides num de quatro modelos -- o conjunto kepleriano de 16 parâmetros do Galileo OS SIS ICD; esse conjunto mais polinómios de correção ao longo da trajetória, transversais e radiais; o modelo de 22 parâmetros de Liu et al. 2025; um polinómio ECEF sem termos de relógio (ATOMIC de relógio zero) -- e outros serviços (um conjunto de transmissão de Klobuchar, ai0-ai2 do NeQuick-G com o nível efetivo de ionização, e parâmetros de tempo do sistema para UTC com a lógica de segundos intercalares do ICD). AJUSTADOR: uma órbita-verdade integrada com gravidade zonal J2-J6 ou EGM2008 até ao grau escolhido e arrasto, e um relógio livre ou conduzido com semente; ajuste de Levenberg-Marquardt do conjunto kepleriano em elementos não singulares, depois polinómios de correção por mínimos quadrados lineares; relógio ajustado líquido do termo relativístico que o utilizador acrescenta. ANÁLISES: fit-interval-trade (erro de distância do sinal no espaço, SISRE, com pesos médios globais para a altitude da órbita, em função do intervalo de ajuste e do período de atualização, apenas órbita e com relógio), model-comparison (quatro modelos, número de parâmetros, bits codificados e o ajuste do Kshana nas altitudes de Liu et al. ao lado dos valores publicados), midpass-update (a passagem mais alta sobre um utilizador, o salto de posição, de relógio e de distância do utilizador a cada troca de mensagem, o salto na pior geometria, PASS/FAIL contra um limiar de continuidade), encode-decode (o quadro binário documentado do próprio Kshana com CRC-24Q, um orçamento de quantização de meio passo por campo, uma verificação de quadro corrompido, uma exportação e importação de registo no estilo RINEX 4 rotulada como extensão do Kshana, e uma tabela CSV). VALIDATED: os pesos do SISRE contra a tabela MEO/GEO publicada (Montenbruck et al. 2018); o algoritmo de utilizador do Galileo contra o RTKLIB em efemérides de transmissão reais do Galileo; o CRC-24Q contra o seu valor de verificação de catálogo e o quadro de exemplo RTCM 1005. MODELLED: cada valor de ajuste e de SISRE é erro de representação contra uma verdade integrada pelo Kshana (sem erro de determinação ou predição de órbita); a comparação com Liu et al. usa órbitas diferentes; os formatos de codificação e de texto são do próprio Kshana.
Uma execução de scenarios/leo-navmsg-celeste-iod.toml resume-se assim: mensagem de navegação LEO — 510 km, 97,4 graus, grau de gravidade 20, modelo kepler-rac pesos do SISRE: w_R 0,459, w_AC^2 1/2.53 (máscara 0 graus) encode-decode: modelo kepler-rac, quadro 152 bytes (1156 bits de carga útil, 891 bits de efemérides+relógio), CRC-24Q 0x58ADF2 quantização: maior mudança de posição 0,52 mm, relógio 0,09 mm; SISRE exato 0,0013 m, quantizado 0,0013 m quadro corrompido rejeitado: true; ida e volta RINEX 4.43e-6 m; ida e volta CSV 0.00e0 m compromisso de intervalo de ajuste em 1800 s (período de uso = intervalo de ajuste): kepler16 60 s SISRE órbita RMS 0,0003 m máx. 0,0015 m com relógio RMS 0,0006 m kepler16 120 s SISRE órbita RMS 0,0003 m máx. 0,0015 m com relógio RMS 0,0007 m kepler16 300 s SISRE órbita RMS 0,0036 m máx. 0,0141 m com relógio RMS 0,0037 m kepler16 600 s SISRE órbita RMS 0,0293 m máx. 0,1023 m com relógio RMS 0,0293 m kepler16 900 s SISRE órbita RMS 0,1073 m máx. 0,3812 m com relógio RMS 0,1075 m kepler-rac 60 s SISRE órbita RMS 0,0000 m máx. 0,0000 m com relógio RMS 0,0005 m kepler-rac 120 s SISRE órbita RMS 0,0001 m máx. 0,0002 m com relógio RMS 0,0007 m kepler-rac 300 s SISRE órbita RMS 0,0005 m máx. 0,0021 m com relógio RMS 0,0012 m kepler-rac 600 s SISRE órbita RMS 0,0097 m máx. 0,0395 m com relógio RMS 0,0096 m kepler-rac 900 s SISRE órbita RMS 0,0388 m máx. 0,1143 m com relógio RMS 0,0390 m O conjunto kepleriano de 16 parâmetros degrada-se de 0,0003 m em 60 s para 0,1073 m em 900 s: um único conjunto kepleriano com harmónicos de duas vezes por revolução não consegue acompanhar os termos de gravidade de frequência mais alta nem o arrasto de um arco LEO por mais do que alguns minutos, e o seu resíduo de mínimos quadrados oscila ao longo da janela. Os polinómios ao longo da trajetória/transversais/radiais, de grau mais alto do que o conjunto kepleriano abrange, absorvem o que resta, o que dá 0,0388 m em 900 s.
Entradas#
A partir do esquema (kshana kinds --json):
- Campos obrigatórios: nenhum
- Campos opcionais:
name,description,seed,analysis,preset,orbit,clock,message,trade,comparison,midpass
O exemplo scenarios/leo-navmsg-celeste-iod.toml define, entre outros:
| Campo | Valor | Unidade |
|---|---|---|
analysis |
[encode-decode, fit-interval-trade] | não indicado |
kind |
leo-navmsg | texto |
message.csv_schema |
celeste-iod | texto |
name |
Mensagem Celeste IOD (predefinição de workshop) | texto |
preset |
celeste-iod | texto |
seed |
15 | não indicado |
trade.fit_intervals_s |
[60, 120, 300, 600, 900] | s |
trade.models |
[kepler16, kepler-rac] | não indicado |
trade.span_s |
1800 | s |
trade.update_fit_interval_s |
300 | s |
trade.update_periods_s |
[60, 150, 300] | s |
Execute-o#
kshana scenarios/leo-navmsg-celeste-iod.toml
5 cenários incluídos usam este tipo de cenário; os demais estão em scenarios/.
O que dá#
Os resultados escalares dessa execução, com as unidades que o motor indica:
| Resultado | Valor | Unidade |
|---|---|---|
encode_decode.corrupted_frame_rejected |
true | sinalizador |
encode_decode.crc24q |
0x58ADF2 | texto |
encode_decode.crc24q_check_value_123456789 |
0xCDE703 | texto |
encode_decode.csv_round_trip_max_pos_m |
0 | m |
encode_decode.csv_schema |
celeste-iod | texto |
encode_decode.ephemeris_clock_bits |
891 | bit |
encode_decode.frame_bytes |
152 | byte |
encode_decode.model |
kepler-rac | texto |
encode_decode.payload_bits |
1156 | bit |
encode_decode.quantised_max_clock_m |
9.4929e-5 | m |
Rótulo do resultado (o do motor): MIXED — blocos de construção VALIDATED, resultados MODELLED. Os pesos do SISRE reproduzem a tabela MEO/GEO publicada (Montenbruck et al. 2018), o algoritmo de utilizador do ICD do Galileo reproduz o RTKLIB em efemérides de transmissão reais do Galileo, e o CRC-24Q reproduz o seu valor de verificação de catálogo e o quadro de exemplo RTCM 1005
Evidências#
MODELLED 5 · VALIDATED 6: as linhas da matriz de verificação que nomeiam este tipo de cenário.
- VALIDATED leo_navmsg::sisre::sisre_weights: o peso radial w_R e o peso transversal ao quadrado w_AC^2 como médias de cos^2 e metade de sin^2 do ângulo de nadir da linha de visada sobre utilizadores distribuídos uniformemente sobre a calota visível da Terra acima de uma elevação
- VALIDATED leo_navmsg::elements::kepler_point: a avaliação kepleriana do Galileo OS SIS ICD (equação de Kepler, correções de segundo harmónico, nó fixo à Terra) escrita separadamente do avaliador RINEX do motor, devolvendo a posição com o argumento Testes: leo_navmsg_reference.rs.
- VALIDATED leo_navmsg::codec::crc24q: polinómio gerador 0x1864CFB, valor inicial 0, sem reflexão, sem XOR final, a verificação que o quadro LEO do Kshana carrega sobre cada byte precedente
- VALIDATED O ajustador e o compromisso do tipo de cenário
leo-navmsg: uma órbita-verdade integrada com gravidade zonal J2-J6 ou EGM2008 até ao grau escolhido e arrasto, e um relógio livre ou conduzido com semente; um ajuste de Levenberg-Marquardt do conjunto kepleriano do Galileo em não singulares - e mais 7 na matriz.
As linhas que a própria execução exercitou, com a referência independente que a matriz dá a cada uma (as fontes públicas estão aí nomeadas):
- MODELLED Determinista, com hash do cenário, SBOM + portões de referência multiplataforma. Referência independente (ExternalDataset): aderência à norma do SBOM ao esquema JSON oficial CycloneDX 1,5 (+ identificadores SPDX válidos) — uma norma externa publicada, zero erros de validação em todo o grafo de dependências; a parte de determinismo das FoM / reprodutibilidade byte a byte permanece uma verificação de autoconsistência fixada, pelo que a linha permanece MODELLED
- VALIDATED leo_navmsg::sisre::sisre_weights: o peso radial w_R e o peso transversal ao quadrado w_AC^2 como médias de cos^2 e metade de sin^2 do ângulo de nadir da linha de visada. Referência independente (ExternalDataset): A tabela publicada de fatores de ponderação do SISRE de Montenbruck, Steigenberger e Hauschild (2018), Multi-GNSS signal-in-space range error assessment - Methodology and results, Advances in Space Research 61(12):3020-3038, doi 10.1016/j.asr.2018.03.041: GPS 0,98 e 1/49, GLONASS 0,98 e 1/45, Galileo 0,98 e 1/61, BeiDou MEO 0,98 e 1/54, BeiDou IGSO/GEO 0,99 e 1/126. A mesma média avaliada em raios LEO dá o
- VALIDATED leo_navmsg::elements::kepler_point: a avaliação kepleriana do Galileo OS SIS ICD (equação de Kepler, correções de segundo harmónico, nó fixo à Terra) escrita separ. Referência independente (ExternalDataset): Posições ECEF eph2pos do RTKLIB 2.4.2-p13 (uma implementação independente do mesmo algoritmo do ICD) para registos de transmissão reais BKG/IGS de 2024-09-10, ambos fixados com proveniência em tests/fixtures/rinex_sp3_interop (NOTICE, rinex_ecef_reference.txt, brdc_multignss_slice.rnx). Isto valida o algoritmo de utilizador kepleriano; as correções ao longo da trajetória/transversais/radiais acrescentadas por cima são cobertas pelas suas próprias linhas, e os termos de Liu b
- VALIDATED leo_navmsg::codec::crc24q: polinómio gerador 0x1864CFB, valor inicial 0, sem reflexão, sem XOR final, a verificação que o quadro LEO do Kshana carrega sobre todo prece. Referência independente (ExternalDataset): O valor de verificação do catálogo de CRC para esses parâmetros (catálogo de CRC reveng.sourceforge.io, CRC-24/LTE-A: largura 24, poly 0x864CFB, init 0, verificação 0xCDE703), que são os parâmetros do CRC-24Q do RTCM 10403 e do Galileo OS SIS ICD, e o quadro de exemplo do tipo de mensagem 1005 impresso no RTCM 10403
- VALIDATED O ajustador e o compromisso do tipo de cenário
leo-navmsg: uma órbita-verdade integrada com gravidade zonal J2-J6 ou EGM2008 até ao grau escolhido e arrasto, e um relógio livre ou conduzido com. Referência independente (ExternalDataset): Órbitas científicas precisas reais como verdade (órbitas operacionais de dinâmica reduzida do TU Graz IfG/ITSG, de uso livre com reconhecimento; valores SHA-256 no NOTICE do fixture) ajustadas pelo conjunto de 16 parâmetros em arcos de 20 e 30 min, contra as estatísticas que Liu et al. 2025 (Remote Sensing 17(16):2894, CC BY 4,0) publicam para os mesmos satélites e dias: RMS ao longo da trajetória, transversal e radial, cada um dentro de 1.5x (medido de 0,804 a 1,087), SISR
Limitações#
O que o próprio relatório da execução diz que não está modelado ou não está validado:
- O SISRE é o erro de representação da mensagem contra a verdade à qual foi ajustada; os erros de determinação e de predição de órbita não são modelados. (resultado
limitations[0]) - A órbita-verdade é uma integração numérica do Kshana (gravidade zonal ou EGM2008, arrasto exponencial estático), não a órbita precisa de um satélite real; sem terceiro corpo, pressão de radiação solar ou marés. (resultado
limitations[1]) - O formato binário é uma codificação documentada própria do Kshana, modelada sobre os componentes de mensagem publicados; não é o layout de bits do Celeste nem de nenhum outro sistema (nenhum é público). (resultado
limitations[2]) - O bloco no estilo RINEX é uma extensão documentada do Kshana; o RINEX 4,02 não define registos de navegação LEO. (resultado
limitations[3]) - Os coeficientes do NeQuick-G são transportados e o nível efetivo de ionização é calculado, mas a integração de densidade eletrónica do NeQuick que o converte em atraso não está implementada; o atraso de Klobuchar está, escalado para a portadora por 1/f^2 sem correção para um satélite que voa dentro da ionosfera. (resultado
limitations[4]) - Os termos de 22 parâmetros de Liu et al. 2025 seguem o algoritmo de utilizador do artigo (Eq. 1-7) e a estratégia de ajuste (Secção 2,3); os seus valores de SISRE em função da altitude usaram órbitas precisas reais, de modo que esta comparação numa órbita integrada pelo Kshana é MODELLED, não VALIDATED (a comparação com órbita real é tests/leo_navmsg_fit_real_orbit_oracle.rs). (resultado
limitations[5]) - MIXED — blocos de construção VALIDATED, resultados MODELLED. Os pesos do SISRE reproduzem a tabela MEO/GEO publicada (Montenbruck et al. 2018), o algoritmo de utilizador do ICD do Galileo reproduz o RTKLIB em efemérides de transmissão reais do Galileo, e o CRC-24Q reproduz o seu valor de verificação de catálogo e o quadro de exemplo RTCM 1005. Cada valor de ajuste, de SISRE, de continuidade e de quantização é MODELLED: o erro de representação de uma mensagem contra uma (resultado
label) - MODELLED: cada valor de ajuste e de SISRE é erro de representação contra uma verdade integrada pelo Kshana (sem erro de determinação ou predição de órbita); a comparação com Liu et al. (catálogo de tipos de cenário (
kshana kinds --json))
Ver também#
- Página da família: Navegação em órbita terrestre baixa
- Todos os tipos: KINDS.md
- Página do tópico: LEO-PNT.md
- Página do tópico: LEO-NAVMSG.md