Tradução automática, não revista por um falante nativo. O inglês é a referência.

Primeiros passosEditar no GitHubFonte: README.md

Kshana: a marca, uma retícula de bússola que marca o instante preciso, ao lado do logotipo kshanaKshana: a marca, uma retícula de bússola que marca o instante preciso, ao lado do logotipo kshana

Kshana · क्षण · o instante preciso
Um simulador de código aberto para a resiliência de PNT (posicionamento, navegação e temporização).

Estado da integração contínua em main Cobertura de linhas próxima de 95 % de src/, medida em docs/COVERAGE.md e exigida em 85 % na integração contínua 176 de 401 capacidades VALIDATED em relação a uma referência independente externa, a partir da matriz de verificação Estado do portão de qualidade do SonarQube Cloud Versão v0.40.0 Licença: AGPL-3.0-only
DOI 10.5281/zenodo.20528627, o registro conceitual do Zenodo de cada release Uma licença comercial está disponível junto à Ashforde® OÜ, veja Edições kshana no crates.io, a versão publicada atual kshana no PyPI, a versão publicada atual kshana no npm, a versão publicada atual

Abrir o Kshana Studio · Instalar · Capacidades · Evidências · Pesquisa · Documentação · Citar

Ensaie o minuto em que o GNSS fica indisponível. O console de missão do Kshana, desenhado a partir de uma execução real do motor v0.40.0: a campanha encadeada campaign-jam-spoof-holdover-integrity (semente 20260928, 6 fases, 18 execuções-membro ao longo de T+01:16:10) e os 102 satélites de GPS, Galileo, BeiDou e GLONASS de constellation-multi-gnss-coverage, cada um desenhado na órbita circular de dois corpos recuperada da trilha no solo do motor, com raios comprimidos para exibição. O erro de tempo do relógio atinge o pico de 62,7 ns contra uma proteção de 50 ns, a densidade portadora-ruído cai a -12.2 dB-Hz contra um piso de 25 dB-Hz, e o nível de proteção vertical chega a 135,4 m contra um limite de alerta de 50 m.Ensaie o minuto em que o GNSS fica indisponível. O console de missão do Kshana, desenhado a partir de uma execução real do motor v0.40.0: a campanha encadeada campaign-jam-spoof-holdover-integrity (semente 20260928, 6 fases, 18 execuções-membro ao longo de T+01:16:10) e os 102 satélites de GPS, Galileo, BeiDou e GLONASS de constellation-multi-gnss-coverage, cada um desenhado na órbita circular de dois corpos recuperada da trilha no solo do motor, com raios comprimidos para exibição. O erro de tempo do relógio atinge o pico de 62,7 ns contra uma proteção de 50 ns, a densidade portadora-ruído cai a -12.2 dB-Hz contra um piso de 25 dB-Hz, e o nível de proteção vertical chega a 135,4 m contra um limite de alerta de 50 m.
Conteúdo

Ensaie o minuto em que o GNSS apaga#

O Kshana reproduz jamming, spoofing e holdover de relógio quando os sinais do GNSS (Global Navigation Satellite System) falham, e diz por quanto tempo um sistema mantém a hora e a posição dentro de seu orçamento, e qual relógio ou sensor rende a maior margem. É um único motor em Rust. Ele roda em um terminal, um notebook, uma IDE (ambiente de desenvolvimento integrado), um assistente de IA (inteligência artificial) ou no seu navegador.

Toda execução é reproduzível bit a bit a partir do cenário, da semente e da versão do motor. Toda capacidade traz um de três rótulos em um registro verificado por máquina: VALIDATED (uma referência independente externa concorda), MODELLED (internamente consistente, e dito em voz alta) ou PARTNER (um parceiro de hardware é o responsável).

Estado: v0.40.0. Um substrato de simulação validado e reproduzível para a resiliência de PNT. Temporização e holdover vêm primeiro, porque esse domínio é o mais bem validado. O Kshana é um instrumento de estudo e de análise de compromissos: não é hardware gerador de sinais de radiofrequência (RF) (não aciona nenhum rádio e não transmite nada; sua saída em nível de sinal são arquivos de amostras IQ em banda base para receptores de software), não é um receptor GNSS de hardware nem certificado (seu receptor de software é uma ferramenta de análise) e não é um produto de voo. Novo na área? Comece pelo guia introdutório em linguagem simples e pelo glossário.

Novidades da 0,40#

A 0,40 acrescenta um orçamento de erro em nível de missão, rotula cada figura e tabela com seu nível de evidência, lê registros de relógio medidos, verifica envios de parceiros de dados, estima onde pode estar um emissor de interferência e fala dezessete idiomas além do inglês. O registro agora tem 401 linhas: 176 VALIDATED, 221 MODELLED, 4 PARTNER. Nenhuma linha foi promovida a VALIDATED, e toda falha abaixo está fixada por um teste.

  • Sequência de missão. O tipo de cenário mission-thread encadeia fases do lançamento à reentrada (launch-ascent, leo-rendezvous, tli-and-cruise, entry e quatro tipos lunares) com regras de transferência declaradas, uma margem em relação aos requisitos declarados e o elo mais fraco; um exemplo de ponta a ponta de classe Artemis em 11 fases (segmentos terrestre e lunar), 92 tipos de cenário no total. Todo número é MODELLED. A propagação cislunar em relação à trajetória pública da Artemis I não atinge o seu limiar fixado antecipadamente (45,3 km e 0,25 m/s contra 5 km e 0,05 m/s; a causa são pequenas manobras que o modelo não inclui), e o propagador lunar em relação à órbita do CAPSTONE não atinge (136,8 km contra 25 km ao fim de uma revolução); a comparação com o LRO é atingida. As linhas permanecem MODELLED (Sequência de missão, segmento lunar). No Studio, a sequência é lida em /studio/mission-thread/.
  • Rótulos de evidência. Cada figura e tabela que uma execução grava traz o nível e os ids das linhas do registro em que se apoia, lidos da matriz.
  • Relógios medidos. Oito formatos de registro de relógio são lidos (docs/CLOCK-LOG-FORMATS.md) e uma série ajustada pode conduzir o holdover. Em relação a limiares fixados antecipadamente, o ajuste não atinge F1(a) em cinco de seis registros e F2 em um; ambos permanecem MODELLED (Registro de alterações).
  • Parceiros de dados. kshana partner check verifica o formato de um envio e não pontua nada (docs/PARTNER-DATA.md).
  • Região do emissor. kshana interference-map locate fornece uma região e uma elipse, nunca um ponto isolado, a partir de relatos ADS-B ou AIS. Comparado uma vez com os locais de transmissores do Jammertest 2025, o resultado é NOT ASSESSABLE para as duas fontes (poucas sessões programadas nos dados abertos), portanto a linha permanece MODELLED (Mapa de interferência).
  • Benchmark. A recampanha da 0,40 atinge A3, D3 (ambos EXPLORATORY), R3 e R4; A2, D1 e R1 permanecem NOT MET (Bench).
  • Idiomas. nl, pl, pt-BR, pt-PT, fi, sv, da, nb, cs, uk, ru, de, fr, es, et, ja e zh-Hans, como traduções automáticas que nenhum falante nativo revisou; o inglês é a referência, e as execuções em outros idiomas levam cerca do dobro do tempo (docs/i18n.md).

Novidades da 0,39#

A 0,39 não acrescenta nenhuma funcionalidade e não altera nenhum resultado; a saída do motor é a saída da 0,38. Ela corrige uma coisa na linha de comando, atualiza dependências das ferramentas de validação cruzada e declara os vereditos do benchmark por completo.

  • Linha de comando. kshana kinds | head (qualquer saída padrão fechada) não entra mais em pânico: o programa termina silenciosamente com status 141, como outras ferramentas fazem para um pipe fechado. Outros erros de escrita continuam se reportando.
  • Dependencies. memmap2 0.9.11 nos dois locks de verificação cruzada do ANISE e pillow 13.0.0 e certifi 2026.10.19 nas fixações do ambiente da referência independente, tudo sob xval/: nada do que é distribuído mudou.
  • kshana-bench, todos os vereditos. Contra os limiares pré-registrados, três são NOT MET, cada um fixado por um teste: A2 (agc_k_sigma AUC 0,766 contra pelo menos 0,80), D1 (maior lacuna 0,0301) e tarefa (b) R1 (herdado, não reexecutado). Nenhum limiar foi afrouxado (Bench).

Novidades da 0,38#

A 0,38 torna mensurável o árbitro neutro: ela pontua registros de receptores contra um cronograma de testes publicado, lê mais receptores e sensores, testa sistemas de temporização e inclui um benchmark e um observatório de interferência. Continua consultiva: nada aqui é certificado, nenhum resultado é uma homologação e nada transmite. Cada linha informa o que o registro mantém para ela (como um rótulo é conquistado); um estado nomeia apenas o que foi verificado, e a linha do registro e a página vinculada dizem o que não foi.

Novo na 0,38 O que faz, e por quê Estado no registro Lido
Pontuação do Jammertest kshana jammertest import lê o catálogo de testes e o plano de transmissão publicados da NPRA como verdade programada; jammertest score pontua o registro de um receptor por teste (latência de detecção, alarmes perdidos, alarmes falsos, tempo de recuperação), como um pacote de evidências assinado se você fornecer uma chave MODELLED: uma linha do registro. Os limiares foram pré-registrados antes de qualquer execução pontuada; nos dados do JammerTest 2024 a regra de dados mínimos falhou nas duas execuções (4 e 7 janelas pontuáveis contra 10 exigidas), de modo que nenhum limiar é avaliável e nada é afirmado Jammertest
Os sinalizadores do próprio receptor UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG e NovAtel RXSTATUS lidos em um self_report por época e comparados com os alarmes do Kshana (ambos, só o receptor, só o Kshana, nenhum); um leitor Septentrio SBF e uma entrada --serial somente de leitura MODELLED; a concordância entre o detector de um receptor e o do Kshana não é validação Confiança do receptor
Mais receptores e sensores RTKLIB .pos, NovAtel OEM7, C/N0 de RTCM 3 MSM4/MSM7 (das tabelas do pyrtcm, com licença BSD, não do texto da RTCM), fluxos de monitor do GNSS-SDR, um registro de IMU como segundo sensor, um pacote ROS 2, uma ponte gnss_lib_py e imu-fit para parâmetros de sensores híbridos MODELLED: seis linhas do registro; apenas fixtures escritas por nós, nenhuma captura de um receptor, IMU, execução do GNSS-SDR ou grafo ROS reais foi lida Entradas de máquina
Testes de temporização e de holdover o tipo de cenário holdover-test pontua um teste de holdover (GNSS removido pelo operador, holdover, recuperação) a partir de um registro medido de erro de tempo contra máscaras da ITU-T, "medido contra a máscara"; leitores de registros do linuxptp e do chrony; os estágios de hardware e o campo lab-attestation MODELLED: duas linhas do registro; os horários são a declaração do operador, não verificados HIL de temporização, Segurança de hardware
Pacotes de normas, LunaNet AFS, ciclo completo de laboratório pacotes pontuados para o DHS RPCF, a IMO MSC.1/Circ.1575 e o Apêndice F do ICAO Doc 9849 contra limiares declarados antes da execução, "fornece evidências em apoio de"; uma correspondência com o NIST IR 8323r1; um gerador e verificador de códigos do LunaNet AFS; um pacote assinado que vincula o cenário de uma execução de laboratório, as condições de teste, o registro do receptor e a pontuação MODELLED para os pacotes e o ciclo completo; a verificação de códigos do AFS é VALIDATED contra suas colunas de verificação impressas (veja as linhas do registro) Normas, LunaNet AFS
kshana-bench e o observatório tarefas, partições e métricas fixas para detecção de interferência, detecção em IQ, previsão de holdover e a lacuna de otimismo, com um conjunto reservado selado e um quadro de classificação estático; um produto diário reproduzível de interferência com atraso de 24 h, células grosseiras e sem atribuição nenhuma linha própria no registro: ele pontua submissões, e suas linhas de base são rotuladas MODELLED nos arquivos de resultados; contra os limiares pré-registrados, o pontuador, C1 a C3 e D2 são atingidos e três limiares são NOT MET (fixados por testes): A2 (agc_k_sigma AUC 0,766 contra pelo menos 0,80 na partição de teste), D1 (maior lacuna 0,0301) e tarefa (b) R1 (herdado, não reexecutado); veja xval/bench/RESULTS-v2.md Bench, Observatório
Exportadores telemetria de confiança como mensagens de descoberta e de estado MQTT do Home Assistant (somente publicação, sem credenciais), ao lado de Prometheus, CEF, LEEF e OTLP MODELLED: uma linha do registro Telemetria de confiança
Margem do enlace óptico ao longo do tempo o tipo de cenário optical-atmosphere pode gravar uma realização com semente do clima de um sítio como uma série de margem do enlace MODELLED: uma linha do registro; um sorteio do modelo, não o clima Atmosfera óptica

Destaques da 0,37: changelog. A lista completa da 0,38 está no changelog.

A 0,38 em detalhe#

Cada capacidade da tabela acima, em poucas linhas: o que faz, um comando para executá-la, uma imagem desenhada a partir de uma execução real do motor e o que o registro mantém para ela. As imagens são escritas por tools/gen_figures_038.py em docs/figures/0.38/ (nunca desenhadas à mão): python3 tools/gen_figures_038.py as reescreve a partir de um motor compilado, e --check falha se uma estiver desatualizada ou se sua legenda aqui for diferente. Onde a entrada é um registro, trata-se de um registro fictício que o script escreve, porque os registros reais de terceiros nunca são incorporados ao repositório, e a legenda diz isso. Tudo abaixo é consultivo: não certificado, não uma homologação, e nada transmite. Um estado nomeia o que foi verificado e nada mais; como um rótulo é conquistado.

Pontuação do Jammertest#

kshana jammertest import transforma o catálogo de testes e o plano de transmissão publicados da NPRA em verdade programada, e kshana jammertest score pontua um registro de receptor contra ela: para cada teste programado, se foi detectado, com que atraso e quanto tempo o receptor levou para se recuperar, além de alarmes falsos fora de todo slot. O catálogo é obtido, nunca incorporado ao repositório.

xval/jammertest-plan/fetch.sh ../jammertest-plan
kshana jammertest score session.toml --catalog ../jammertest-plan/testcatalog2025.json \
    --plan ../jammertest-plan/plan-tuesday-2025-09-16.json --location 1 --json
Pontuação de um log de receptor sintético contra um cronograma de três testes, a partir de uma execução real do motor v0.40.0 (`kshana jammertest score`). O log é inventado: 1800 s de NMEA com uma queda de 20 dB em C/N0 durante dois intervalos. O cronograma lista três slots; o slot do meio não tem jammer no log. A pontuação marca 2 de 3 testes detectados (latência mediana de 0 s) e 1 perdido, com 0 execuções de falso alarme em 0,25 h de tempo limpo. Nada aqui diz coisa alguma sobre um receptor real. Software de caráter consultivo, não um equipamento de navegação homologado (IEC 61108, IEC 61162): o operador continua responsável pela navegação da embarcação.Pontuação de um log de receptor sintético contra um cronograma de três testes, a partir de uma execução real do motor v0.40.0 (`kshana jammertest score`). O log é inventado: 1800 s de NMEA com uma queda de 20 dB em C/N0 durante dois intervalos. O cronograma lista três slots; o slot do meio não tem jammer no log. A pontuação marca 2 de 3 testes detectados (latência mediana de 0 s) e 1 perdido, com 0 execuções de falso alarme em 0,25 h de tempo limpo. Nada aqui diz coisa alguma sobre um receptor real. Software de caráter consultivo, não um equipamento de navegação homologado (IEC 61108, IEC 61162): o operador continua responsável pela navegação da embarcação.

Estado no registro: MODELLED. Os limiares foram fixados antes de qualquer execução pontuada; nos dados do JammerTest 2024 a regra de dados mínimos falhou nas duas execuções, de modo que nenhum limiar é avaliável e nada é afirmado. Jammertest.

Os sinalizadores do próprio receptor#

UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG e NovAtel RXSTATUS são lidos em um self_report por época e postos ao lado dos alarmes do Kshana: ambos, só o receptor, só o Kshana ou nenhum. Um leitor Septentrio SBF e uma entrada --serial somente de leitura alimentam a mesma comparação. Nenhum dos lados é verdade de referência.

kshana receiver-trust session.toml     # [log] format = "ubx", path = "receiver.ubx"
O sinalizador de spoofing do próprio receptor frente aos alarmes do Kshana, a partir de uma execução real do motor v0.40.0 sobre um registro UBX fictício (200 épocas a 1 Hz). O C/N0 cai 20 dB de 80 a 90 s e de 120 a 130 s; o receptor sinaliza de 120 a 130 s e de 160 a 165 s. Das 140 épocas comparadas após a calibração, 11 tiveram ambos sinalizando, 6 só o receptor, 11 só o Kshana e 112 nenhum. Nenhum dos lados é verdade de referência e a concordância não é validação. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.O sinalizador de spoofing do próprio receptor frente aos alarmes do Kshana, a partir de uma execução real do motor v0.40.0 sobre um registro UBX fictício (200 épocas a 1 Hz). O C/N0 cai 20 dB de 80 a 90 s e de 120 a 130 s; o receptor sinaliza de 120 a 130 s e de 160 a 165 s. Das 140 épocas comparadas após a calibração, 11 tiveram ambos sinalizando, 6 só o receptor, 11 só o Kshana e 112 nenhum. Nenhum dos lados é verdade de referência e a concordância não é validação. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.

Estado no registro: MODELLED. A concordância entre o detector de um receptor e o do Kshana não é validação. Confiança do receptor.

Mais receptores e sensores#

RTKLIB .pos, NovAtel OEM7, C/N0 de RTCM 3 MSM4/MSM7, fluxos de monitor do GNSS-SDR, um registro de IMU como segundo sensor, um pacote ROS 2 e uma ponte gnss_lib_py terminam todos na mesma linha do tempo de receiver-trust. imu-fit lê, de um registro de IMU estacionária, os parâmetros de sensor de que os cenários híbridos e de fusão precisam, de modo que um cenário possa ser executado com o sensor que você realmente tem.

kshana imu-fit still.csv --format csv --axis x --expected-mean 0 --id bench-imu
O que `kshana imu-fit` lê de um registro de IMU estacionária, a partir de uma execução real do motor v0.40.0 sobre um registro fictício (20.000 amostras a 100 Hz, 200 s): o passeio aleatório de velocidade do acelerômetro q_va = 4.02e-06, o passeio aleatório de ângulo do giroscópio q_arw = 9e-08, a instabilidade de viés 0,00296 e as inclinações iniciais de Allan (-0.51 e -0.49; cerca de -0.5 onde o ruído branco domina). A tabela ao lado é o TOML que o comando imprime. O estimador é conferido apenas em registros sintéticos. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.O que `kshana imu-fit` lê de um registro de IMU estacionária, a partir de uma execução real do motor v0.40.0 sobre um registro fictício (20.000 amostras a 100 Hz, 200 s): o passeio aleatório de velocidade do acelerômetro q_va = 4.02e-06, o passeio aleatório de ângulo do giroscópio q_arw = 9e-08, a instabilidade de viés 0,00296 e as inclinações iniciais de Allan (-0.51 e -0.49; cerca de -0.5 onde o ruído branco domina). A tabela ao lado é o TOML que o comando imprime. O estimador é conferido apenas em registros sintéticos. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.

Estado no registro: MODELLED. Apenas fixtures escritas por nós; nenhuma captura de um receptor, IMU, execução do GNSS-SDR ou grafo ROS reais foi lida. Entradas de máquina.

Testes de temporização e de holdover#

O tipo de cenário holdover-test pontua um teste de holdover (GNSS removido pelo operador, holdover, recuperação) a partir de um registro medido de erro de tempo contra máscaras da ITU-T, e diz isso com essas palavras: medido contra a máscara. Leitores de registros do linuxptp e do chrony o alimentam; os estágios de hardware e o campo lab-attestation dizem quem declarou o quê.

kshana scenarios/holdover-test-example.toml
Um teste de holdover pontuado a partir de um registro de erro de tempo, a partir de uma execução real do motor v0.40.0 sobre scenarios/holdover-test-example.toml (601 amostras a cada 5 s). O GNSS é removido pelo operador em 600 s e restaurado em 2400 s; o erro de tempo deriva até 299 ns ao fim do holdover, ultrapassando o orçamento de 100 ns após 675 s, e volta para dentro da faixa de 100 ns 70 s após a restauração. Veredictos: máscaras de linha de base PASS, máscaras de holdover FAIL, envelope de holdover FAIL, recuperação RECOVERED. Medido contra a máscara, não uma aprovação. Os horários são a declaração do operador, não verificados pelo Kshana. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.Um teste de holdover pontuado a partir de um registro de erro de tempo, a partir de uma execução real do motor v0.40.0 sobre scenarios/holdover-test-example.toml (601 amostras a cada 5 s). O GNSS é removido pelo operador em 600 s e restaurado em 2400 s; o erro de tempo deriva até 299 ns ao fim do holdover, ultrapassando o orçamento de 100 ns após 675 s, e volta para dentro da faixa de 100 ns 70 s após a restauração. Veredictos: máscaras de linha de base PASS, máscaras de holdover FAIL, envelope de holdover FAIL, recuperação RECOVERED. Medido contra a máscara, não uma aprovação. Os horários são a declaração do operador, não verificados pelo Kshana. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.

Estado no registro: MODELLED. Os horários em que o GNSS foi removido e restaurado são a declaração do operador, não verificados. HIL de temporização, Segurança de hardware.

Pacotes de normas#

Pacotes pontuados para os perfis de teste de PNT resiliente do DHS, a IMO MSC.1/Circ.1575 e o Apêndice F do ICAO Doc 9849, além de uma correspondência com o NIST IR 8323r1 em compliance-report. Cada teste executa um cenário incluído e compara um campo do resultado com um limiar declarado antes da execução; um teste que precisa de um registro de receptor é listado como necessitando de uma entrada, não pontuado. A redação é "fornece evidências em apoio de".

kshana standards-pack list
kshana standards-pack run imo-circ-1575
Todos os testes dos três pacotes de normas pontuados, a partir de execuções reais do motor v0.40.0 (`kshana standards-pack run`): dhs-rpcf: 6 atingidos, 1 não atingido, 2 precisam de uma entrada; imo-circ-1575: 1 atingido, 4 não atingidos, 2 precisam de uma entrada; icao-doc9849-appf: 6 atingidos, 0 não atingidos, 2 precisam de uma entrada. No total, 13 atingidos, 5 não atingidos e 6 precisam de uma entrada que o motor não tem (um registro de receptor ou a documentação do equipamento). Cada limiar foi declarado antes da execução; uma falha é mantida como falha. Um limiar atingido diz que um cenário modelado atingiu um limiar declarado, nada sobre um produto. Os pacotes fornecem evidências em apoio das linhas que citam; não são uma avaliação. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana; não deve ser a única base para qualquer decisão de navegação ou de segurança.Todos os testes dos três pacotes de normas pontuados, a partir de execuções reais do motor v0.40.0 (`kshana standards-pack run`): dhs-rpcf: 6 atingidos, 1 não atingido, 2 precisam de uma entrada; imo-circ-1575: 1 atingido, 4 não atingidos, 2 precisam de uma entrada; icao-doc9849-appf: 6 atingidos, 0 não atingidos, 2 precisam de uma entrada. No total, 13 atingidos, 5 não atingidos e 6 precisam de uma entrada que o motor não tem (um registro de receptor ou a documentação do equipamento). Cada limiar foi declarado antes da execução; uma falha é mantida como falha. Um limiar atingido diz que um cenário modelado atingiu um limiar declarado, nada sobre um produto. Os pacotes fornecem evidências em apoio das linhas que citam; não são uma avaliação. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana; não deve ser a única base para qualquer decisão de navegação ou de segurança.

Estado no registro: MODELLED. Um limiar atingido diz que um cenário modelado atingiu um limiar declarado, nada sobre um produto; todo fracasso é mantido e fixado por um teste. Normas.

LunaNet AFS#

O gerador de códigos do Sinal Direto Aumentado do LunaNet (códigos Gold, Weil e terciários, o quadro de mensagem e sua codificação de erros) e um verificador para um fluxo de símbolos gravado ou gerado, fixado a uma edição da especificação.

kshana lunanet-afs-check spec
kshana lunanet-afs-check generate --frames 2 --out afs.sym
kshana lunanet-afs-check symbols afs.sym
O gerador de códigos AFS do LunaNet conferido com as colunas impressas da especificação, a partir de uma execução real do motor v0.40.0 (`kshana lunanet-afs-check spec`, fixado em LNIS V5, AD1 Volume A (LSIS-AFS) V1.0, 29 de janeiro de 2025; o documento marca suas tabelas de códigos como {LSIS-TBC}). 9 de 10 verificações são satisfeitas; B4 é NOT MET (420 de 421 coincidiram). Ele confere um fluxo de símbolos com uma edição de uma especificação publicada e nada diz sobre qualquer nó ou serviço LunaNet. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana. Ele confere um fluxo de símbolos com uma edição de uma especificação publicada e nada diz sobre qualquer nó ou serviço LunaNet.O gerador de códigos AFS do LunaNet conferido com as colunas impressas da especificação, a partir de uma execução real do motor v0.40.0 (`kshana lunanet-afs-check spec`, fixado em LNIS V5, AD1 Volume A (LSIS-AFS) V1.0, 29 de janeiro de 2025; o documento marca suas tabelas de códigos como {LSIS-TBC}). 9 de 10 verificações são satisfeitas; B4 é NOT MET (420 de 421 coincidiram). Ele confere um fluxo de símbolos com uma edição de uma especificação publicada e nada diz sobre qualquer nó ou serviço LunaNet. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana. Ele confere um fluxo de símbolos com uma edição de uma especificação publicada e nada diz sobre qualquer nó ou serviço LunaNet.

Estado no registro: VALIDATED para as verificações de código e de sincronização, contra os valores que a especificação imprime (que ela marca como TBC); uma verificação é NOT MET, mantida e fixada (uma coluna impressa de código terciário diverge: o documento imprime o mesmo valor para dois PRNs). As palavras LDPC e CRC dos subquadros 2 a 4 não são verificadas. As linhas do registro dizem exatamente quais. LunaNet AFS.

Ciclo completo de laboratório#

kshana.test-conditions/1 é uma descrição publicada do que um laboratório fez (eventos, horários, potências). kshana evidence round-trip vincula o hash do cenário, o hash das condições, o hash do registro do receptor e a pontuação em um único pacote assinado, e recusa um pacote cujas condições e cenário de pontuação discordem sobre os eventos. O Kshana nunca produz nem reproduz um sinal: como um cenário chegou a um receptor é responsabilidade do operador.

kshana evidence --help
A estrutura de um pacote de evidências. Um log de receptor (NMEA, u-blox UBX, RINEX 3 ou um log do Android) e uma janela de tempo entram em kshana receiver-trust evidence, que grava sete arquivos: log-slice.bin, config.json, epochs.json, summary.html, manifest.json, manifest.sig e um timestamp.tsr opcional. O manifesto registra o SHA-256 do log inteiro e de cada arquivo, além de uma cadeia de hashes sobre os arquivos; a assinatura cobre o manifesto. kshana evidence verify verifica a assinatura, o hash de cada arquivo, a cadeia e que nenhum arquivo não listado esteja presente, e termina com 0 quando verificado, 1 quando algo falhou e 3 quando o signatário não estava fixado. Um pacote é um registro técnico, não um parecer jurídico.A estrutura de um pacote de evidências. Um log de receptor (NMEA, u-blox UBX, RINEX 3 ou um log do Android) e uma janela de tempo entram em kshana receiver-trust evidence, que grava sete arquivos: log-slice.bin, config.json, epochs.json, summary.html, manifest.json, manifest.sig e um timestamp.tsr opcional. O manifesto registra o SHA-256 do log inteiro e de cada arquivo, além de uma cadeia de hashes sobre os arquivos; a assinatura cobre o manifesto. kshana evidence verify verifica a assinatura, o hash de cada arquivo, a cadeia e que nenhum arquivo não listado esteja presente, e termina com 0 quando verificado, 1 quando algo falhou e 3 quando o signatário não estava fixado. Um pacote é um registro técnico, não um parecer jurídico.

A imagem é o layout de um pacote. Estado no registro: MODELLED. Condições de teste, Test bench.

kshana-bench#

Tarefas, partições e métricas fixas para detecção de interferência, detecção em IQ, previsão de holdover e a lacuna de otimismo, com um conjunto reservado selado e um quadro de classificação estático. Ele pontua submissões; não é um ranking de receptores.

kshana bench baseline --task d --split test --out results/
As linhas de base embutidas da tarefa D do kshana-bench (a lacuna de otimismo) na partição de teste, a partir de uma execução real do motor v0.40.0 (`kshana bench baseline`). Cada par de barras é a área sob a curva ROC nos casos dentro da distribuição e nos casos deslocados; a diferença entre eles é a lacuna de otimismo, contra uma tolerância de 0,05. fused-max-z: 0,998 e 0,983 (diferença 0,015); sqm-imbalance: 0,882 e 0,882 (diferença 0,001); agc-excess: 0,848 e 0,819 (diferença 0,030); raim-parity: 0,682 e 0,672 (diferença 0,010); energy-cn0-drop: 0,595 e 0,565 (diferença 0,030). Os rótulos são rótulos de modelo generativo de um corpus sintético, nunca dados de campo: MODELLED. Consultivo: modelado ou medido em relação a referências declaradas, não uma aprovação, certificação nem declaração de aderência à norma. Uma pontuação descreve um registro ou corpus, nunca um produto.As linhas de base embutidas da tarefa D do kshana-bench (a lacuna de otimismo) na partição de teste, a partir de uma execução real do motor v0.40.0 (`kshana bench baseline`). Cada par de barras é a área sob a curva ROC nos casos dentro da distribuição e nos casos deslocados; a diferença entre eles é a lacuna de otimismo, contra uma tolerância de 0,05. fused-max-z: 0,998 e 0,983 (diferença 0,015); sqm-imbalance: 0,882 e 0,882 (diferença 0,001); agc-excess: 0,848 e 0,819 (diferença 0,030); raim-parity: 0,682 e 0,672 (diferença 0,010); energy-cn0-drop: 0,595 e 0,565 (diferença 0,030). Os rótulos são rótulos de modelo generativo de um corpus sintético, nunca dados de campo: MODELLED. Consultivo: modelado ou medido em relação a referências declaradas, não uma aprovação, certificação nem declaração de aderência à norma. Uma pontuação descreve um registro ou corpus, nunca um produto.

Estado no registro: nenhuma linha própria no registro; as linhas de base são rotuladas MODELLED nos arquivos de resultados. Contra os limiares pré-registrados, o pontuador, C1 a C3 e D2 são atingidos e três limiares são NOT MET, cada um fixado por um teste: A2 (agc_k_sigma AUC 0,766 contra pelo menos 0,80 na partição de teste), D1 (maior lacuna 0,0301) e tarefa (b) R1 (herdado da campanha anterior, não reexecutado). As cifras estão em xval/bench/RESULTS-v2.md. Bench.

Observatório de interferência#

Um produto por dia UTC e por região a partir de um arquivo aberto de posições de aeronaves, em uma grade grosseira fixa: cada célula é degraded, not degraded ou not observed (o que não é "limpo"). Liberado no mínimo 24 h após o fim do dia, com células pequenas suprimidas e sem atribuição de causa.

kshana interference-map daily /path/to/extracted/2026-09-15 \
    --dataset adsb-lol --day 2026-09-15 --bbox 53.5,9.0,66.0,31.0 --out products/
Dois dias sintéticos de mapa de interferência, desenhados a partir das amostras versionadas em examples/interference-map/output, cada um com a sua própria rota sintética e as parcelas de exposição de rota que o motor informa. À esquerda, um dia de ADS-B: 1 célula degradada, 6 não degradadas, 4 não avaliadas (hachuradas) e células sem entrada, desenhadas vazias, que não foram observadas. A rota tem 525 km: 11,5% do seu comprimento em células degradadas, 38,3% não degradadas, 9,1% não avaliadas e 41,1% não observadas. À direita, um dia de AIS: células sinalizadas pelos detectores de círculo e de terra firme, células não anômalas e células vazias; a rota tem 454 km, com 10,5% em células anômalas, 21,2% não anômalas, 0,0% não avaliadas e 68,3% não observadas. ADS-B e AIS são camadas separadas, nunca combinadas. Uma célula sinalizada não é uma constatação de interferência, e uma célula sem cor não foi observada, o que não é o mesmo que livre. Todos os dados são inventados, no Atlântico central aberto, e não são uma medição.Dois dias sintéticos de mapa de interferência, desenhados a partir das amostras versionadas em examples/interference-map/output, cada um com a sua própria rota sintética e as parcelas de exposição de rota que o motor informa. À esquerda, um dia de ADS-B: 1 célula degradada, 6 não degradadas, 4 não avaliadas (hachuradas) e células sem entrada, desenhadas vazias, que não foram observadas. A rota tem 525 km: 11,5% do seu comprimento em células degradadas, 38,3% não degradadas, 9,1% não avaliadas e 41,1% não observadas. À direita, um dia de AIS: células sinalizadas pelos detectores de círculo e de terra firme, células não anômalas e células vazias; a rota tem 454 km, com 10,5% em células anômalas, 21,2% não anômalas, 0,0% não avaliadas e 68,3% não observadas. ADS-B e AIS são camadas separadas, nunca combinadas. Uma célula sinalizada não é uma constatação de interferência, e uma célula sem cor não foi observada, o que não é o mesmo que livre. Todos os dados são inventados, no Atlântico central aberto, e não são uma medição.

A imagem são os dias de amostra registrados, não um produto do observatório. Estado no registro: MODELLED: sem referência independente externa, sem verdade de referência e sem atribuição de causa; uma célula not observed não foi avaliada, o que não é o mesmo que limpa. Método do observatório.

Exportadores#

Telemetria de confiança como texto Prometheus, CEF, LEEF, OTLP e mensagens de descoberta e de estado MQTT do Home Assistant. O comando publica somente em um destino que você fornece e não guarda credenciais.

kshana trust-telemetry --result session.result.json --print-metrics
kshana trust-telemetry --result session.result.json --print-syslog --format cef
Um resultado de confiança em três formatos de exportação, a partir de execuções reais do motor v0.40.0 (`kshana trust-telemetry`) sobre examples/maritime-trust: exposição em texto Prometheus (a pontuação de confiança mais recente é 5,9 e a faixa não confiável é a que está ativada) e as últimas mensagens CEF e LEEF. O comando não publica nada a menos que receba um destino, não guarda credenciais e não transmite nenhum sinal de rádio. Software de caráter consultivo, não um equipamento de navegação homologado (IEC 61108, IEC 61162): o operador continua responsável pela navegação da embarcação.Um resultado de confiança em três formatos de exportação, a partir de execuções reais do motor v0.40.0 (`kshana trust-telemetry`) sobre examples/maritime-trust: exposição em texto Prometheus (a pontuação de confiança mais recente é 5,9 e a faixa não confiável é a que está ativada) e as últimas mensagens CEF e LEEF. O comando não publica nada a menos que receba um destino, não guarda credenciais e não transmite nenhum sinal de rádio. Software de caráter consultivo, não um equipamento de navegação homologado (IEC 61108, IEC 61162): o operador continua responsável pela navegação da embarcação.

Estado no registro: MODELLED. Telemetria de confiança.

O tipo de cenário optical-atmosphere pode gravar uma realização com semente do clima de um sítio como uma série de margem do enlace: episódios de nuvens, uma coluna de água líquida para cada um, uma amostra de cintilação por passo. A página de PNT óptico do Studio abre os cenários optical-atmosphere.

kshana scenarios/optical-atmosphere-network.toml
Uma realização com semente da margem do enlace do sítio 'northern' ao longo de 336 h, a partir de uma execução real do motor v0.40.0 em scenarios/optical-atmosphere-network.toml (semente 37, passo de 600 s). A margem cai abaixo de zero durante episódios de nuvens; neste sorteio o enlace está ativo em 40,5 % do tempo, com 27 interrupções e uma interrupção mais longa de 30,7 h. As entradas são ilustrativas, a série é um sorteio do modelo e não o clima, e difere da disponibilidade estatística (37,8 %) pelo erro de amostragem do sorteio. Apenas análise consultiva: não é um produto certificado de disponibilidade, integridade ou navegação, e não é uma previsão para nenhum sítio real, a menos que suas entradas de clima venham de um conjunto de dados declarado.Uma realização com semente da margem do enlace do sítio 'northern' ao longo de 336 h, a partir de uma execução real do motor v0.40.0 em scenarios/optical-atmosphere-network.toml (semente 37, passo de 600 s). A margem cai abaixo de zero durante episódios de nuvens; neste sorteio o enlace está ativo em 40,5 % do tempo, com 27 interrupções e uma interrupção mais longa de 30,7 h. As entradas são ilustrativas, a série é um sorteio do modelo e não o clima, e difere da disponibilidade estatística (37,8 %) pelo erro de amostragem do sorteio. Apenas análise consultiva: não é um produto certificado de disponibilidade, integridade ou navegação, e não é uma previsão para nenhum sítio real, a menos que suas entradas de clima venham de um conjunto de dados declarado.

Estado no registro: MODELLED. Um sorteio do modelo, não o clima. Atmosfera óptica.

Novas visões do Studio#

kshana.dev/studio ganha uma Reprodução de ponte (duas execuções lado a lado em um mesmo relógio de missão, em /studio/replay/), uma página de PNT óptico (/studio/optical/), uma página de teste de holdover (/studio/holdover/) e um visualizador do observatório (/studio/observatory/). Elas executam o mesmo motor no navegador, nada é enviado, e trazem a mesma declaração consultiva. As imagens acima são desenhadas por um script a partir da saída do próprio motor; não são capturas de tela dessas páginas.

Navegação de usuários espaciais (gnss-ssv)#

Para uma espaçonave acima, ao redor ou muito além das órbitas GNSS: quantos sinais GNSS ela pode usar, quão fortes são, quão boa é a geometria e o que um filtro de bordo pode fazer com eles. Um tipo de cenário, quatro modos, escolhidos pelas tabelas do cenário: uma casca de usuários (a parcela do tempo com um e com quatro sinais, por constelação), uma trajetória (sinais, C/N0, diluição da precisão e o meio de raio rasante ao longo de uma órbita), uma execução de navegação (um filtro de nove estados sobre pseudodistâncias, até a Lua) e uma formação (navegação relativa de satélites secundários em torno de um principal). A fonte pública para a comparação de disponibilidade é o livreto interoperável do Volume de Serviço Espacial GNSS (UN OOSA ST/SPACE/75, do Comitê Internacional sobre GNSS), que é ele próprio uma simulação; é obtido, nunca incorporado ao repositório. Página completa: docs/SSV.md.

kshana scenarios/gnss-ssv-shell.toml            # shell: the upper space service volume, reduced size
kshana scenarios/gnss-ssv-heo.toml              # trajectory: a high Earth orbit, limb medium
kshana scenarios/gnss-ssv-nav-lunar.toml        # navigation: an onboard filter toward the Moon
kshana scenarios/gnss-ssv-formation-heo.toml    # formation: relative navigation
Disponibilidade de sinal para um usuário em uma esfera a 36000 km de altitude com antena hemisférica, a partir de uma execução real do motor v0.40.0 sobre scenarios/gnss-ssv-shell.toml (uma execução reduzida: 162 usuários, 3 dias, passos de 10 min), com limiar de 20 dB-Hz. Para cada constelação e banda, duas barras: a parcela dos pares (usuário, época) com pelo menos um sinal e com pelo menos quatro. Combinado, L1: 99,4 % com pelo menos um, 73,2 % com pelo menos quatro, interrupção mais longa abaixo de quatro sinais 160 min. Combinado, L5: 100,0 % com pelo menos um, 99,9 % com pelo menos quatro, interrupção mais longa abaixo de quatro sinais 20 min. MODELLED: um estudo modelado a partir de entradas declaradas, não uma medição e não uma afirmação de volume de serviço para nenhum sistema. O tamanho reduzido não é a comparação com o livreto. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.Disponibilidade de sinal para um usuário em uma esfera a 36000 km de altitude com antena hemisférica, a partir de uma execução real do motor v0.40.0 sobre scenarios/gnss-ssv-shell.toml (uma execução reduzida: 162 usuários, 3 dias, passos de 10 min), com limiar de 20 dB-Hz. Para cada constelação e banda, duas barras: a parcela dos pares (usuário, época) com pelo menos um sinal e com pelo menos quatro. Combinado, L1: 99,4 % com pelo menos um, 73,2 % com pelo menos quatro, interrupção mais longa abaixo de quatro sinais 160 min. Combinado, L5: 100,0 % com pelo menos um, 99,9 % com pelo menos quatro, interrupção mais longa abaixo de quatro sinais 20 min. MODELLED: um estudo modelado a partir de entradas declaradas, não uma medição e não uma afirmação de volume de serviço para nenhum sistema. O tamanho reduzido não é a comparação com o livreto. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana. Sinais ao longo de uma órbita terrestre alta (perigeu 497 km, apogeu 58622 km, período 18,8 h), a partir de uma execução real do motor v0.40.0 sobre scenarios/gnss-ssv-heo.toml, banda L1. Em cima: a melhor densidade portadora-ruído entre os sinais à vista, contra o limiar de 20 dB-Hz. No meio: o número de sinais à vista de todas as constelações, de 4 a 55 ao longo dos pontos amostrados. Dos enlaces recebidos, 2252 vieram por um lóbulo principal e 696 por lóbulos laterais, usando um padrão paramétrico substituto rotulado, não o padrão medido de nenhum sistema. PDOP mediano 67, percentil 95 358. MODELLED: um estudo modelado a partir de entradas declaradas, não uma medição e não uma afirmação de volume de serviço para nenhum sistema. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.Sinais ao longo de uma órbita terrestre alta (perigeu 497 km, apogeu 58622 km, período 18,8 h), a partir de uma execução real do motor v0.40.0 sobre scenarios/gnss-ssv-heo.toml, banda L1. Em cima: a melhor densidade portadora-ruído entre os sinais à vista, contra o limiar de 20 dB-Hz. No meio: o número de sinais à vista de todas as constelações, de 4 a 55 ao longo dos pontos amostrados. Dos enlaces recebidos, 2252 vieram por um lóbulo principal e 696 por lóbulos laterais, usando um padrão paramétrico substituto rotulado, não o padrão medido de nenhum sistema. PDOP mediano 67, percentil 95 358. MODELLED: um estudo modelado a partir de entradas declaradas, não uma medição e não uma afirmação de volume de serviço para nenhum sistema. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana. Um filtro de bordo de nove estados em uma transferência de órbita baixa em direção à Lua, a partir de uma execução real do motor v0.40.0 sobre scenarios/gnss-ssv-nav-lunar.toml (289 épocas, 13 pontos desenhados). Em eixo logarítmico, o erro verdadeiro de posição e o limite de um sigma do próprio filtro contra o tempo desde o início. Dentro das órbitas GNSS o RMS de posição é 1,4 m; acima delas é 90 m, com o erro final de 184 m a 193.330 km de altitude com 1 medição. O erro de estimação quadrático normalizado médio ao longo de toda a execução é 4,4 (cerca de 3 para um bloco de posição consistente). A verdade e o filtro compartilham seus substitutos de Sol e Lua. MODELLED: um estudo modelado a partir de entradas declaradas, não uma medição e não uma afirmação de volume de serviço para nenhum sistema. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.Um filtro de bordo de nove estados em uma transferência de órbita baixa em direção à Lua, a partir de uma execução real do motor v0.40.0 sobre scenarios/gnss-ssv-nav-lunar.toml (289 épocas, 13 pontos desenhados). Em eixo logarítmico, o erro verdadeiro de posição e o limite de um sigma do próprio filtro contra o tempo desde o início. Dentro das órbitas GNSS o RMS de posição é 1,4 m; acima delas é 90 m, com o erro final de 184 m a 193.330 km de altitude com 1 medição. O erro de estimação quadrático normalizado médio ao longo de toda a execução é 4,4 (cerca de 3 para um bloco de posição consistente). A verdade e o filtro compartilham seus substitutos de Sol e Lua. MODELLED: um estudo modelado a partir de entradas declaradas, não uma medição e não uma afirmação de volume de serviço para nenhum sistema. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana. Navegação relativa de 2 satélites secundários em torno de um principal em uma órbita alta, a partir de uma execução real do motor v0.40.0 sobre scenarios/gnss-ssv-formation-heo.toml (401 épocas). Para cada satélite secundário, duas barras: o RMS de posição relativa obtido subtraindo as duas estimativas absolutas independentes, e o obtido do filtro relativo sobre pseudodistâncias de diferença simples. Linha de base 0,8 km: 5,1 m e 1,2 m. Linha de base 2,0 km: 4,1 m e 2,1 m. O filtro absoluto não é consistente aqui: erro de estimação quadrático normalizado médio 187 contra cerca de 3 para um filtro consistente, de modo que sua incerteza declarada é pequena demais. MODELLED: um estudo modelado a partir de entradas declaradas, não uma medição e não uma afirmação de volume de serviço para nenhum sistema. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.Navegação relativa de 2 satélites secundários em torno de um principal em uma órbita alta, a partir de uma execução real do motor v0.40.0 sobre scenarios/gnss-ssv-formation-heo.toml (401 épocas). Para cada satélite secundário, duas barras: o RMS de posição relativa obtido subtraindo as duas estimativas absolutas independentes, e o obtido do filtro relativo sobre pseudodistâncias de diferença simples. Linha de base 0,8 km: 5,1 m e 1,2 m. Linha de base 2,0 km: 4,1 m e 2,1 m. O filtro absoluto não é consistente aqui: erro de estimação quadrático normalizado médio 187 contra cerca de 3 para um filtro consistente, de modo que sua incerteza declarada é pequena demais. MODELLED: um estudo modelado a partir de entradas declaradas, não uma medição e não uma afirmação de volume de serviço para nenhum sistema. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.

Estado no registro: MODELLED, e a comparação com o livreto em sua maior parte fracassa. Os limiares foram fixados antes da execução. De oito, apenas S0 (o orçamento de enlace inverso, 13 de 13 valores) e S6 (a missão lunar) são atingidos. S1 a S5 e S7 são NOT MET: a geometria dos volumes de serviço superior e inferior (43 de 52 e 48 de 52 células), o volume de serviço superior de 15/20/25 dB-Hz, as seis missões GEO, a missão HEO e o padrão paramétrico de lóbulos laterais contra padrões medidos de painéis do GPS. Quase todo fracasso em S1 a S5 envolve o GLONASS, e o livreto imprime dois ângulos de referência diferentes para ele; uma variante diagnóstica que usa o outro par leva S1, S2 e S4 a todas as células, mas não substitui a execução de registro e nenhuma linha é VALIDATED. O filtro absoluto da execução de formação também é excessivamente confiante (erro quadrático normalizado médio bem acima do valor de cerca de 3 que um filtro consistente dá).

A comparação registrada do modelo de disponibilidade para usuários espaciais com o livreto público do Volume de Serviço Espacial, a partir dos resultados registrados da execução pré-registrada (xval/gnss-ssv/results-run1.json, escrito pelo exemplo ssv_booklet_check do motor v0.40.0). Limiar a limiar, as células dentro da tolerância: S0 13 de 13 (MET); S1 43 de 52 (NOT MET); S2 48 de 52 (NOT MET); S3 122 de 155 (NOT MET); S4 132 de 156 (NOT MET); S5 18 de 26 (NOT MET); S6 26 de 26 (MET); S7 0 de 20 padrões de painel (NOT MET). Apenas S0 e S6 são atingidos sob a leitura pré-registrada. Uma variante diagnóstica que usa os outros ângulos do GLONASS do livreto leva S1, S2 e S4 a todas as células, mas não substitui a execução de registro. Nenhuma linha do registro é VALIDATED. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.A comparação registrada do modelo de disponibilidade para usuários espaciais com o livreto público do Volume de Serviço Espacial, a partir dos resultados registrados da execução pré-registrada (xval/gnss-ssv/results-run1.json, escrito pelo exemplo ssv_booklet_check do motor v0.40.0). Limiar a limiar, as células dentro da tolerância: S0 13 de 13 (MET); S1 43 de 52 (NOT MET); S2 48 de 52 (NOT MET); S3 122 de 155 (NOT MET); S4 132 de 156 (NOT MET); S5 18 de 26 (NOT MET); S6 26 de 26 (MET); S7 0 de 20 padrões de painel (NOT MET). Apenas S0 e S6 são atingidos sob a leitura pré-registrada. Uma variante diagnóstica que usa os outros ângulos do GLONASS do livreto leva S1, S2 e S4 a todas as células, mas não substitui a execução de registro. Nenhuma linha do registro é VALIDATED. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.

Navegação de usuários espaciais, o que a comparação mostra.

Infraestrutura lunar (lunar-infrastructure)#

A órbita e a superfície da Lua como infraestrutura de navegação e geodésica, em cinco estudos escolhidos por study: od-consistency (uma determinação de órbita GNSS-Terra a bordo em uma órbita de halo contra uma independente em solo), carrier-phase (fixação de ambiguidade inteira entre estações na superfície e um orbitador), frame-coestimation (o datum lunar a partir de medições de distância de estações da Terra com e sem enlaces com o orbitador), space-tie (deslocamentos de laser, VLBI e GNSS em uma mesma espaçonave contra o erro de ligação local) e geodesy-sensitivity (qual família de observáveis enxerga os números de Love h2, k2 e l2). O modelo é de três corpos restrito, com simplificações declaradas e entradas ilustrativas. Página completa: docs/LUNAR-INFRASTRUCTURE.md.

kshana scenarios/lunar-infrastructure-od-consistency.toml
kshana scenarios/lunar-infrastructure-carrier-phase.toml            # quick; the scored run takes about eight minutes
kshana scenarios/lunar-infrastructure-frame-coestimation.toml
kshana scenarios/lunar-infrastructure-space-tie.toml
kshana scenarios/lunar-infrastructure-geodesy-sensitivity.toml
Consistência de uma determinação de órbita a bordo Terra-GNSS em uma órbita de halo quase retilínea com uma determinação de órbita em solo independente, a partir de execuções reais do motor v0.40.0 em scenarios/lunar-infrastructure-od-consistency.toml e na variante com erro de modelo (400 ensaios cada). A diferença média normalizada q é 5,81 sem erro de modelo e 5,95 com um erro de aceleração injetado de 3e-10 m/s2, contra 6 esperado: as duas soluções de órbita são consistentes (limiar C1 MET). A fração de ensaios acima do ponto de 95 % é 0,040 e 0,052; o limiar para detectar o erro injetado era de pelo menos 0,5, portanto é NOT MET (C3): a solução a bordo é conhecida a cerca de 352 m contra 23 m da solução em solo, de modo que um deslocamento de dez metros se esconde dentro de sua covariância. MODELLED: um modelo restrito de três corpos com simplificações declaradas e entradas ilustrativas, não uma medição de qualquer grandeza lunar. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.Consistência de uma determinação de órbita a bordo Terra-GNSS em uma órbita de halo quase retilínea com uma determinação de órbita em solo independente, a partir de execuções reais do motor v0.40.0 em scenarios/lunar-infrastructure-od-consistency.toml e na variante com erro de modelo (400 ensaios cada). A diferença média normalizada q é 5,81 sem erro de modelo e 5,95 com um erro de aceleração injetado de 3e-10 m/s2, contra 6 esperado: as duas soluções de órbita são consistentes (limiar C1 MET). A fração de ensaios acima do ponto de 95 % é 0,040 e 0,052; o limiar para detectar o erro injetado era de pelo menos 0,5, portanto é NOT MET (C3): a solução a bordo é conhecida a cerca de 352 m contra 23 m da solução em solo, de modo que um deslocamento de dez metros se esconde dentro de sua covariância. MODELLED: um modelo restrito de três corpos com simplificações declaradas e entradas ilustrativas, não uma medição de qualquer grandeza lunar. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana. Resolução da ambiguidade inteira da fase da portadora entre estações da superfície lunar e um orbitador, a partir do resultado versionado da execução pontuada do motor v0.40.0 (tests/fixtures/lunar_infra/phase_full_run.json: 3 comprimentos de arco, um Monte Carlo de 401 sorteios cada, gravado por scenarios/carrier-phase-scored.toml). 1 dia: sucesso 1,0 % (erro padrão 0,5 %), 134 ambiguidades, sigma de posição do orbitador 45,6 m flutuante e 18,5 m fixado; 2 dias: sucesso 0,5 % (erro padrão 0,4 %), 259 ambiguidades, sigma de posição do orbitador 21,5 m flutuante e 8,7 m fixado; 3 dias: sucesso 2,8 % (erro padrão 0,8 %), 375 ambiguidades, sigma de posição do orbitador 6,3 m flutuante e 2,1 m fixado. A resolução inteira não é alcançada: o sucesso permanece entre 1 % e 3 % a 25 dBi, e a 12 dBi registrados o problema não pode ser formado. MODELLED: um modelo restrito de três corpos com simplificações declaradas e entradas ilustrativas, não uma medição de qualquer grandeza lunar. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.Resolução da ambiguidade inteira da fase da portadora entre estações da superfície lunar e um orbitador, a partir do resultado versionado da execução pontuada do motor v0.40.0 (tests/fixtures/lunar_infra/phase_full_run.json: 3 comprimentos de arco, um Monte Carlo de 401 sorteios cada, gravado por scenarios/carrier-phase-scored.toml). 1 dia: sucesso 1,0 % (erro padrão 0,5 %), 134 ambiguidades, sigma de posição do orbitador 45,6 m flutuante e 18,5 m fixado; 2 dias: sucesso 0,5 % (erro padrão 0,4 %), 259 ambiguidades, sigma de posição do orbitador 21,5 m flutuante e 8,7 m fixado; 3 dias: sucesso 2,8 % (erro padrão 0,8 %), 375 ambiguidades, sigma de posição do orbitador 6,3 m flutuante e 2,1 m fixado. A resolução inteira não é alcançada: o sucesso permanece entre 1 % e 3 % a 25 dBi, e a 12 dBi registrados o problema não pode ser formado. MODELLED: um modelo restrito de três corpos com simplificações declaradas e entradas ilustrativas, não uma medição de qualquer grandeza lunar. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana. Precisão do datum lunar de sete parâmetros (três translações, uma escala e três rotações) a partir de medições de distância de estações terrestres, com e sem distâncias entre orbitador e estação de superfície, a partir de uma execução real do motor v0.40.0 em scenarios/lunar-infrastructure-frame-coestimation.toml. O sigma de Cramer-Rao das translações e rotações diminui com os enlaces do orbitador (por exemplo t_z de 0,98 m para 0,046 m); o menor autovalor de informação sobe 111 vezes e o traço do CRLB cai para 1,0 % (limiar F3 MET). Isso supõe que a órbita é conhecida nos eixos lunares, com seu erro levado pelo sigma de distância do orbitador de 1 m. MODELLED: um modelo restrito de três corpos com simplificações declaradas e entradas ilustrativas, não uma medição de qualquer grandeza lunar. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.Precisão do datum lunar de sete parâmetros (três translações, uma escala e três rotações) a partir de medições de distância de estações terrestres, com e sem distâncias entre orbitador e estação de superfície, a partir de uma execução real do motor v0.40.0 em scenarios/lunar-infrastructure-frame-coestimation.toml. O sigma de Cramer-Rao das translações e rotações diminui com os enlaces do orbitador (por exemplo t_z de 0,98 m para 0,046 m); o menor autovalor de informação sobe 111 vezes e o traço do CRLB cai para 1,0 % (limiar F3 MET). Isso supõe que a órbita é conhecida nos eixos lunares, com seu erro levado pelo sigma de distância do orbitador de 1 m. MODELLED: um modelo restrito de três corpos com simplificações declaradas e entradas ilustrativas, não uma medição de qualquer grandeza lunar. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana. Precisão dos deslocamentos entre as posições por medição laser de distância, VLBI e GNSS de uma espaçonave, em face do erro da ligação local em solo, a partir de uma execução real do motor v0.40.0 em scenarios/lunar-infrastructure-space-tie.toml (um arco de 6.56 dias, sigmas das técnicas GNSS 10 m, VLBI 1 m, laser 0,1 m). Com uma ligação local de 1 mm a 1 m, o sigma da translação laser menos GNSS permanece perto de 1,04 m até que a ligação chegue a 1 m: ele é limitado pelo ruído de medição das técnicas, não pela ligação local. O piso definido apenas pela ligação é a raiz quadrada de dois vezes o seu sigma. MODELLED: um modelo restrito de três corpos com simplificações declaradas e entradas ilustrativas, não uma medição de qualquer grandeza lunar. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.Precisão dos deslocamentos entre as posições por medição laser de distância, VLBI e GNSS de uma espaçonave, em face do erro da ligação local em solo, a partir de uma execução real do motor v0.40.0 em scenarios/lunar-infrastructure-space-tie.toml (um arco de 6.56 dias, sigmas das técnicas GNSS 10 m, VLBI 1 m, laser 0,1 m). Com uma ligação local de 1 mm a 1 m, o sigma da translação laser menos GNSS permanece perto de 1,04 m até que a ligação chegue a 1 m: ele é limitado pelo ruído de medição das técnicas, não pela ligação local. O piso definido apenas pela ligação é a raiz quadrada de dois vezes o seu sigma. MODELLED: um modelo restrito de três corpos com simplificações declaradas e entradas ilustrativas, não uma medição de qualquer grandeza lunar. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana. Qual família de observáveis é sensível aos números de Love lunares h2, k2 e l2, a partir de uma execução real do motor v0.40.0 em scenarios/lunar-infrastructure-geodesy-sensitivity.toml. Cada célula é a derivada parcial RMS das observações de uma família em relação a um parâmetro, nas unidades próprias dessa família (de modo que as células se comparam ao longo de uma linha, não ao longo de uma coluna); um traço significa que a família não tem sensibilidade. Medição laser de distância: h2 7,6, k2 nenhuma, l2 9,8. Rastreamento de orbitador: h2 nenhuma, k2 0,00086, l2 nenhuma. Gravímetro de superfície: h2 2.9e+03, k2 4.3e+03, l2 nenhuma. Relógio de superfície: h2 2.8e-17, k2 2.8e-17, l2 nenhuma. Com as quatro famílias, o sigma de Cramer-Rao é 0,36 % do h2 nominal, 0,52 % do k2 e 1,16 % do l2. Acrescentar uma família nunca reduziu o menor autovalor (28 de 28 acréscimos), mas o traço da pseudoinversa não foi maior em apenas 16 de 28: essa metade do limiar G3 é NOT MET. A família do orbitador vê a integral de linha de visada da aceleração de k2, um valor de extremo superior. MODELLED: um modelo restrito de três corpos com simplificações declaradas e entradas ilustrativas, não uma medição de qualquer grandeza lunar. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.Qual família de observáveis é sensível aos números de Love lunares h2, k2 e l2, a partir de uma execução real do motor v0.40.0 em scenarios/lunar-infrastructure-geodesy-sensitivity.toml. Cada célula é a derivada parcial RMS das observações de uma família em relação a um parâmetro, nas unidades próprias dessa família (de modo que as células se comparam ao longo de uma linha, não ao longo de uma coluna); um traço significa que a família não tem sensibilidade. Medição laser de distância: h2 7,6, k2 nenhuma, l2 9,8. Rastreamento de orbitador: h2 nenhuma, k2 0,00086, l2 nenhuma. Gravímetro de superfície: h2 2.9e+03, k2 4.3e+03, l2 nenhuma. Relógio de superfície: h2 2.8e-17, k2 2.8e-17, l2 nenhuma. Com as quatro famílias, o sigma de Cramer-Rao é 0,36 % do h2 nominal, 0,52 % do k2 e 1,16 % do l2. Acrescentar uma família nunca reduziu o menor autovalor (28 de 28 acréscimos), mas o traço da pseudoinversa não foi maior em apenas 16 de 28: essa metade do limiar G3 é NOT MET. A família do orbitador vê a integral de linha de visada da aceleração de k2, um valor de extremo superior. MODELLED: um modelo restrito de três corpos com simplificações declaradas e entradas ilustrativas, não uma medição de qualquer grandeza lunar. Consultivo: saída de análise de uma ferramenta de pesquisa e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.

Estado no registro: MODELLED, e três limiares são NOT MET. A numérica é verificada contra programas independentes em numpy e scipy; nada é comparado com uma medição de uma grandeza lunar, e nada é VALIDATED. Atingidos: as duas soluções de órbita são consistentes (q médio 5,81 contra 6 esperado), e os enlaces com o orbitador elevam o menor autovalor do datum cerca de 111 vezes, supondo uma órbita conhecida. Não atingidos: o erro de modelo injetado de 3e-10 m/s2 não é detectado (C3: a solução de bordo é conhecida a cerca de 350 m, de modo que cerca de dez metros se escondem em sua covariância); a fixação de inteiros não é alcançada (1 a 3 % de sucesso a 25 dBi, e a 12 dBi registrados o problema não pode ser formado); e a metade do traço do G3 para acrescentar uma família de observáveis (o traço aumentou em 12 de 28 acréscimos, cada vez porque a família elevou o posto). Cada fracasso é fixado por um teste. Infraestrutura lunar.

Kshana Studio#

Abra kshana.dev/studio e o motor inteiro roda no seu navegador, compilado para WebAssembly. Nada a instalar, e nada é enviado. O Studio tem duas visões do mesmo motor, e uma chave no cabeçalho alterna entre elas, mantendo o cenário, a visão e quaisquer configurações que você alterou.

A visão Simples é onde o Studio abre. Ela parte de perguntas (quantos satélites consigo ver, posso confiar na minha solução de posição, por quanto tempo um relógio mantém a hora, o que um jammer faz com o meu receptor) e de um mapa de tudo o que o motor pode fazer, cada área com sua parcela de métodos validados. Abra um cenário e a resposta vem primeiro: uma frase simples, escrita para o que aquele cenário mede, depois suas cifras principais e um gráfico. No máximo cinco configurações ficam à mostra, as que mais mudam a resposta; as demais esperam em Configurações avançadas. Como isto é calculado explica o método, e Para pesquisadores traz as cifras do próprio motor, o arquivo do cenário, o código para executá-lo a partir do Python e a citação.

Kshana Studio, visão simples, no cenário incluído integrity-raim, motor v0.40.0 em execução local. A pergunta: a geometria atende aos limites de alerta (nível de proteção horizontal e vertical)? A resposta primeiro, marcada como Resultado ao vivo: Sim, na maior parte: em 95,3 % das 12 h. O limite de erro do receptor permaneceu abaixo dos limites de alerta (40 m horizontal e 50 m vertical) em 344 de 361 verificações, e nenhuma solução foi enganosa. Números principais: tempo em que a solução é confiável 95,3 %, maior lacuna 10 min, limite de erro típico 6,5 / 13 m, soluções enganosas 0. Ao lado, Experimente outras configurações com cinco delas (o erro de distância, os dois limites de alerta, a duração e a máscara de elevação) e Executar de novo, depois as seções recolhidas Configurações avançadas (13 a mais), Como isto é calculado (8 validados, 6 modelados) e Para pesquisadores. Abaixo, as visualizações desse resultado e os níveis de proteção traçados em relação ao limite de alerta.Kshana Studio, visão simples, no cenário incluído integrity-raim, motor v0.40.0 em execução local. A pergunta: a geometria atende aos limites de alerta (nível de proteção horizontal e vertical)? A resposta primeiro, marcada como Resultado ao vivo: Sim, na maior parte: em 95,3 % das 12 h. O limite de erro do receptor permaneceu abaixo dos limites de alerta (40 m horizontal e 50 m vertical) em 344 de 361 verificações, e nenhuma solução foi enganosa. Números principais: tempo em que a solução é confiável 95,3 %, maior lacuna 10 min, limite de erro típico 6,5 / 13 m, soluções enganosas 0. Ao lado, Experimente outras configurações com cinco delas (o erro de distância, os dois limites de alerta, a duração e a máscara de elevação) e Executar de novo, depois as seções recolhidas Configurações avançadas (13 a mais), Como isto é calculado (8 validados, 6 modelados) e Para pesquisadores. Abaixo, as visualizações desse resultado e os níveis de proteção traçados em relação ao limite de alerta.

A visão Avançada é o painel completo: a biblioteca de cenários, cinco etapas numeradas (Escolher, Definir, Executar, Ler resultados, Compartilhar ou exportar), as cifras principais com chips PASS e FAIL onde a execução declara um limiar, e todos os painéis: visão geral, gráficos, mapas, reprodução, o relatório do motor e exportações. Uma caixa de busca alcança cenários, domínios e os campos dentro deles, e você pode fixar até quatro execuções e compará-las lado a lado.

A tela inicial da visão Simples, e a visão Avançada após uma execução
Kshana Studio, visão simples, tela inicial, com o título O que você gostaria de descobrir?, com o motor v0.40.0 ativo e, na barra superior, três links: Relatório de treinamento, Mapa de interferência e Confiança no receptor. Quatro perguntas: quantos satélites posso ver em qualquer lugar da Terra, posso confiar na minha solução de posição, por quanto tempo um relógio mantém a hora sem satélites, e o que um jammer faz ao meu receptor. Abaixo da primeira, o seu resultado gravado: pelo menos 22 satélites à vista em todos os lugares e 31 em média com GPS, Galileo, BeiDou e GLONASS juntos, uma solução possível em 100 % dos lugares e momentos, em um mapa-múndi de satélites à vista, com um botão Abrir este resultado. Ao lado, Tudo o que o Kshana pode fazer: 16 áreas e 139 cenários prontos para executar, cada bloco com um pequeno gráfico de uma execução gravada e sua parcela de métodos validados, e as 173 de 350 capacidades do registro validadas.Kshana Studio, visão simples, tela inicial, com o título O que você gostaria de descobrir?, com o motor v0.40.0 ativo e, na barra superior, três links: Relatório de treinamento, Mapa de interferência e Confiança no receptor. Quatro perguntas: quantos satélites posso ver em qualquer lugar da Terra, posso confiar na minha solução de posição, por quanto tempo um relógio mantém a hora sem satélites, e o que um jammer faz ao meu receptor. Abaixo da primeira, o seu resultado gravado: pelo menos 22 satélites à vista em todos os lugares e 31 em média com GPS, Galileo, BeiDou e GLONASS juntos, uma solução possível em 100 % dos lugares e momentos, em um mapa-múndi de satélites à vista, com um botão Abrir este resultado. Ao lado, Tudo o que o Kshana pode fazer: 16 áreas e 139 cenários prontos para executar, cada bloco com um pequeno gráfico de uma execução gravada e sua parcela de métodos validados, e as 173 de 350 capacidades do registro validadas. Kshana Studio, visão avançada, após uma execução do cenário incluído constellation-multi-gnss-coverage (Quatro constelações GNSS, um mapa), motor v0.40.0 em execução local. À esquerda, a biblioteca de cenários, 139 cenários em 16 domínios. Os cinco passos Escolher, Ajustar, Executar, Ler resultados e Compartilhar ou exportar, com o passo 4 atual. Números principais: 102 satélites, disponibilidade 100 % (PASS), diluição de precisão da posição (PDOP) mediana 0,95 (PASS), percentil 95 do PDOP 1,105 (PASS), 31,03 satélites à vista em média e 22 no mínimo. Abaixo, a fileira de painéis com Cobertura selecionada, a barra de reprodução, um mapa-múndi do PDOP médio de 0,831 a 1,0853 com todos os satélites desenhados, e os números da cobertura global.Kshana Studio, visão avançada, após uma execução do cenário incluído constellation-multi-gnss-coverage (Quatro constelações GNSS, um mapa), motor v0.40.0 em execução local. À esquerda, a biblioteca de cenários, 139 cenários em 16 domínios. Os cinco passos Escolher, Ajustar, Executar, Ler resultados e Compartilhar ou exportar, com o passo 4 atual. Números principais: 102 satélites, disponibilidade 100 % (PASS), diluição de precisão da posição (PDOP) mediana 0,95 (PASS), percentil 95 do PDOP 1,105 (PASS), 31,03 satélites à vista em média e 22 no mínimo. Abaixo, a fileira de painéis com Cobertura selecionada, a barra de reprodução, um mapa-múndi do PDOP médio de 0,831 a 1,0853 com todos os satélites desenhados, e os números da cobertura global.

O código-fonte do Studio e suas notas de compilação estão em web/README.md.

O site#

O restante de kshana.dev é construído a partir dos próprios arquivos e execuções do motor deste repositório: missões, capacidades, o registro de evidências, a pesquisa publicada e as edições.

Três páginas do kshana.dev lado a lado. O destaque do Início: a linha do nome Kshana · क्षण · o instante preciso acima do título Ensaie o minuto em que o GNSS se apaga, com o console de missão de uma execução real do motor v0.40.0 (um globo e três gráficos ao vivo: erro de tempo do relógio, densidade de portadora para ruído e nível de proteção). Evidências, Pesquisa publicada: os seis artigos do arXiv construídos sobre o motor aberto, o mais recente com uma figura do motor. Edições, Kshana Pro, o mesmo motor, ampliado: o Free executa um cenário, o Pro responde à pergunta do programa.Três páginas do kshana.dev lado a lado. O destaque do Início: a linha do nome Kshana · क्षण · o instante preciso acima do título Ensaie o minuto em que o GNSS se apaga, com o console de missão de uma execução real do motor v0.40.0 (um globo e três gráficos ao vivo: erro de tempo do relógio, densidade de portadora para ruído e nível de proteção). Evidências, Pesquisa publicada: os seis artigos do arXiv construídos sobre o motor aberto, o mais recente com uma figura do motor. Edições, Kshana Pro, o mesmo motor, ampliado: o Free executa um cenário, o Pro responde à pergunta do programa.

Capacidades#

Um único motor cobre toda a cadeia de falhas, do primeiro satélite sob interferência ao último nanossegundo de holdover do relógio. O motor tem 92 tipos de cenário; kshana kinds os lista e docs/SCENARIOS.md documenta cada campo.

Capacidade O que responde
Espectro como um jammer toma a banda L do GNSS, banda por banda, segundo a segundo
Relógios e temporização por quanto tempo cada relógio mantém a hora após a perda do GNSS
Constelações em torno de qualquer corpo cobertura, diluição da precisão e disponibilidade ao redor da Terra, da Lua ou de Marte
Sistema solar onde está cada planeta, e o tempo de luz de qualquer enlace
Navegação em órbita baixa da Terra uma passagem, um enlace, uma mensagem de navegação e uma solução fundida, etapa por etapa
Campanhas uma missão encadeada, uma varredura ou um conjunto Monte Carlo em um único cenário
Animação a série temporal de uma execução como desenho animado, um reprodutor ou quadros
Relatórios cada figura com sua unidade e seu rótulo, em HTML (HyperText Markup Language) e JSON (JavaScript Object Notation)
Exportações de interoperabilidade órbitas e geometria para outras ferramentas: SP3, CCSDS OMM e OEM, CZML, KML, GeoJSON, STK e SigMF
Confiança marítima a ponte pode confiar nesta solução de posição: uma pontuação de 0-100 e motivos para o NMEA de uma embarcação, ao vivo ou a partir de um registro (consultivo, não um equipamento de navegação homologado)
Fluxos NMEA de treinamento NMEA de ponte sintético com jamming e spoofing roteirizados e um registro do instrutor, para treinamento de tripulações (apenas texto; nunca para os sistemas de navegação reais de uma embarcação; consultivo, não um equipamento de navegação homologado)
Mapa de interferência onde aeronaves e navios relataram dados de navegação degradados, e quanto de uma rota isso atinge
Região do emissor onde, sob hipóteses declaradas, pode estar uma fonte de relatos de posição degradados: regiões com confiança declarada, um centroide com sua elipse, nunca um ponto (MODELLED; kshana interference-map locate)
Pacotes de evidências um registro técnico assinado e verificável offline da janela de registro de uma embarcação e do que o motor calculou a partir dela, para um relatório de incidente (consultivo, não um equipamento de navegação homologado)
Telemetria de confiança o fluxo de confiança como métricas Prometheus, eventos SIEM e OpenTelemetry opcional, com um painel Grafana de exemplo (deploy/grafana/kshana-gnss-trust.json)
Signal K e OpenCPN a pontuação de confiança no servidor Signal K de um barco e no OpenCPN, com uma construção de referência para um computador pequeno ao lado do receptor (consultivo, não um equipamento de navegação homologado)
Exportação para test bench kshana bench-export: o movimento do veículo e os eventos de um cenário para um simulador GNSS de laboratório (nenhum sinal é gravado), e como pontuar depois o registro do receptor
Mapeamento e relatório de compliance kshana compliance-report: para quais linhas de marcos públicos de resiliência um conjunto de execuções fornece evidências em apoio de, e a lacuna que sobra
Notebooks tutoriais executáveis: fluxos de confiança e de treinamento de embarcações, uma exposição de rota ao mapa de interferência, mapeamento de compliance e o test bench, GDOP quântico contra clássico
Verificador Galileo OSNMA os dados de navegação de quais satélites um receptor pode autenticar criptograficamente, e por que uma verificação falha; o Kshana não concede nenhum direito sob os ICD IPRs do OSNMA da UE (veja o AVISO na página)

Os formatos de exportação por extenso: SP3 é Standard Product 3; CCSDS OMM e OEM são as Orbit Mean-elements Messages e Orbit Ephemeris Messages do Consultative Committee for Space Data Systems; CZML e KML são as Cesium e Keyhole Markup Languages; STK é Systems Tool Kit; SigMF é o Signal Metadata Format.

A campanha encadeada campaign-jam-spoof-holdover-integrity, uma execução real do motor (semente 20260928): 6 fases (Nominal → Jamming → Spoofing → Holdover → Alarme de integridade → Recuperação) e 18 execuções-membro em uma grade de 10 s ao longo de T+01:16:10. Três faixas: erro de tempo do relógio contra uma proteção de 50 ns (pico 62,7 ns), densidade portadora-ruído efetiva contra um piso de 25 dB-Hz (mínimo -12.2 dB-Hz) e nível de proteção vertical contra um limite de alerta de 50 m (pico 135,4 m), com os eventos de alarme da execução: T+00:20:00 alarmes do detector de spoofing de RF (monitores fundidos de consistência, potência e qualidade de sinal); T+00:26:10 alarmes do monitor de spoofing assistido por relógio.A campanha encadeada campaign-jam-spoof-holdover-integrity, uma execução real do motor (semente 20260928): 6 fases (Nominal → Jamming → Spoofing → Holdover → Alarme de integridade → Recuperação) e 18 execuções-membro em uma grade de 10 s ao longo de T+01:16:10. Três faixas: erro de tempo do relógio contra uma proteção de 50 ns (pico 62,7 ns), densidade portadora-ruído efetiva contra um piso de 25 dB-Hz (mínimo -12.2 dB-Hz) e nível de proteção vertical contra um limite de alerta de 50 m (pico 135,4 m), com os eventos de alarme da execução: T+00:20:00 alarmes do detector de spoofing de RF (monitores fundidos de consistência, potência e qualidade de sinal); T+00:26:10 alarmes do monitor de spoofing assistido por relógio.
Cada capacidade, desenhada a partir de uma execução real: a cascata da banda L, o mapa de cobertura, o sistema solar e uma passagem em órbita baixa da Terra
A banda L do GNSS como uma única densidade espectral de potência ao longo de 60 s, a partir de uma execução real do tipo de cenário spectrum (l-band-waterfall-jamming.toml, semente 7, motor v0.40.0): frequência na horizontal, tempo para baixo, cor para a potência acima do piso de ruído de -202.0 dBW/Hz. Jammers: dispositivo de privacidade chirp (chirp, ligado em 10 s, desligado em 40 s); tom CW na L1 (cw, ligado em 30 s); ruído de banda estreita na L2 (narrowband, ligado em 45 s). Pior banda GPS L1 C/A: C/N0 efetivo mínimo 3,2 dB-Hz em 31 s contra um piso de rastreamento de 25 dB-Hz. GPS L1 C/A mínimo 3,2 dB-Hz; Galileo E1 mínimo 4,7 dB-Hz; GPS L2C mínimo 36,9 dB-Hz; GPS L5 mínimo 44,1 dB-Hz; Galileo E5a mínimo 47,0 dB-Hz.A banda L do GNSS como uma única densidade espectral de potência ao longo de 60 s, a partir de uma execução real do tipo de cenário spectrum (l-band-waterfall-jamming.toml, semente 7, motor v0.40.0): frequência na horizontal, tempo para baixo, cor para a potência acima do piso de ruído de -202.0 dBW/Hz. Jammers: dispositivo de privacidade chirp (chirp, ligado em 10 s, desligado em 40 s); tom CW na L1 (cw, ligado em 30 s); ruído de banda estreita na L2 (narrowband, ligado em 45 s). Pior banda GPS L1 C/A: C/N0 efetivo mínimo 3,2 dB-Hz em 31 s contra um piso de rastreamento de 25 dB-Hz. GPS L1 C/A mínimo 3,2 dB-Hz; Galileo E1 mínimo 4,7 dB-Hz; GPS L2C mínimo 36,9 dB-Hz; GPS L5 mínimo 44,1 dB-Hz; Galileo E5a mínimo 47,0 dB-Hz. Satélites à vista sobre toda a Terra durante um dia, a partir de uma execução real de constellation-design (constellation-multi-gnss-coverage.toml, motor executado por este gerador): 102 satélites (GPS 24, Galileo 24, BeiDou 30, GLONASS 24). Cada célula de 10 graus é sombreada pelo número médio de satélites acima da máscara de 10 graus (27,2 a 36,5); os pontos são as amostras de trilha no solo do motor, uma por hora por satélite. Disponibilidade global 100,00 % com PDOP igual ou inferior a 6, PDOP mediano 0,95, média de 31,0 e mínimo de 22 satélites à vista.Satélites à vista sobre toda a Terra durante um dia, a partir de uma execução real de constellation-design (constellation-multi-gnss-coverage.toml, motor executado por este gerador): 102 satélites (GPS 24, Galileo 24, BeiDou 30, GLONASS 24). Cada célula de 10 graus é sombreada pelo número médio de satélites acima da máscara de 10 graus (27,2 a 36,5); os pontos são as amostras de trilha no solo do motor, uma por hora por satélite. Disponibilidade global 100,00 % com PDOP igual ou inferior a 6, PDOP mediano 0,95, média de 31,0 e mínimo de 22 satélites à vista. O sistema solar na época do cenário 2026-09-28T00:00:00, a partir de uma execução real do tipo de cenário solar-system (solar-system-tour.toml): o Sol, 9 planetas e o planeta anão Plutão vistos de cima da eclíptica, distâncias comprimidas logaritmicamente para exibição, com o tempo de luz de ida de cada corpo a partir da Terra. Mercúrio 0,47 ua, 10,1 minutos-luz, VALIDATED; Vênus 0,73 ua, 3,0 minutos-luz, VALIDATED; Marte 1,55 ua, 14,0 minutos-luz, VALIDATED; Júpiter 5,30 ua, 49,5 minutos-luz, VALIDATED; Saturno 9,44 ua, 70,2 minutos-luz, VALIDATED; Urano 19,44 ua, 157,4 minutos-luz, MODELLED; Netuno 29,88 ua, 240,2 minutos-luz, MODELLED; Plutão 35,61 ua, 292,2 minutos-luz, MODELLED. Enlaces: de Marte a Júpiter, ida 2193,5 s; de Saturno à Terra, ida 4212,2 s; de Europa a Júpiter, ida 2,2 s.O sistema solar na época do cenário 2026-09-28T00:00:00, a partir de uma execução real do tipo de cenário solar-system (solar-system-tour.toml): o Sol, 9 planetas e o planeta anão Plutão vistos de cima da eclíptica, distâncias comprimidas logaritmicamente para exibição, com o tempo de luz de ida de cada corpo a partir da Terra. Mercúrio 0,47 ua, 10,1 minutos-luz, VALIDATED; Vênus 0,73 ua, 3,0 minutos-luz, VALIDATED; Marte 1,55 ua, 14,0 minutos-luz, VALIDATED; Júpiter 5,30 ua, 49,5 minutos-luz, VALIDATED; Saturno 9,44 ua, 70,2 minutos-luz, VALIDATED; Urano 19,44 ua, 157,4 minutos-luz, MODELLED; Netuno 29,88 ua, 240,2 minutos-luz, MODELLED; Plutão 35,61 ua, 292,2 minutos-luz, MODELLED. Enlaces: de Marte a Júpiter, ida 2193,5 s; de Saturno à Terra, ida 4212,2 s; de Europa a Júpiter, ida 2,2 s. Uma passagem em órbita baixa da Terra (LEO) a partir de uma execução real do tipo de cenário leo-pass (leo-pass-iridium.toml, motor executado por este gerador): Iridium-pass a 781 km, banda STL a 1621 MHz, vista por um usuário aéreo a 50° N 30° O. Acima da máscara de 5° por 750 s, elevação máxima 65,0° em 444 s. A densidade portadora-ruído atinge o pico de 80,5 dB-Hz (mediana 71,3), 34,3 dB acima da mediana do GNSS de 46,2 dB-Hz com 8 satélites GPS à vista (38,2 a 51,1 dB-Hz); o Doppler chega a 35,4 kHz.Uma passagem em órbita baixa da Terra (LEO) a partir de uma execução real do tipo de cenário leo-pass (leo-pass-iridium.toml, motor executado por este gerador): Iridium-pass a 781 km, banda STL a 1621 MHz, vista por um usuário aéreo a 50° N 30° O. Acima da máscara de 5° por 750 s, elevação máxima 65,0° em 444 s. A densidade portadora-ruído atinge o pico de 80,5 dB-Hz (mediana 71,3), 34,3 dB acima da mediana do GNSS de 46,2 dB-Hz com 8 satélites GPS à vista (38,2 a 51,1 dB-Hz); o Doppler chega a 35,4 kHz.

Execute qualquer um deles com kshana example <scenario> > s.toml && kshana s.toml: os cenários são l-band-waterfall-jamming, constellation-multi-gnss-coverage, solar-system-tour e leo-pass-iridium.

As capacidades marítimas e de interferência, desenhadas a partir de entradas sintéticas registradas: uma pontuação de confiança, um mapa de interferência com exposição de rota, um fluxo de treinamento e um pacote de evidências
Pontuação de confiança ao longo de uma travessia sintética, a partir de uma execução real do motor v0.40.0 sobre examples/maritime-trust (um registro NMEA fictício de uma balsa em uma rota de Tallinn a Helsinque, 3001 épocas a 1 Hz). Três faixas compartilham um eixo de tempo. Em cima: a distância entre a posição que o receptor informa e a posição real da embarcação, que permanece dentro de poucos metros até cerca de 1576 s, quando o arrasto de posição roteirizado do registro a afasta, enquanto o receptor continua informando uma posição válida. No meio: a pontuação de confiança de 0 a 100, não calculada durante os primeiros 300 s de calibração, na faixa nominal (pelo menos 90) até o arrasto, depois caindo pela faixa degradada (pelo menos 55) até a faixa não confiável. Embaixo: a faixa de cada época como uma fita colorida com seu nome. A pontuação é consultiva. Software de caráter consultivo, não um equipamento de navegação homologado (IEC 61108, IEC 61162): o operador continua responsável pela navegação da embarcação. O registro é fictício para mostrar o formato e os monitores; não é uma medição e nada diz sobre o desempenho de qualquer receptor.Pontuação de confiança ao longo de uma travessia sintética, a partir de uma execução real do motor v0.40.0 sobre examples/maritime-trust (um registro NMEA fictício de uma balsa em uma rota de Tallinn a Helsinque, 3001 épocas a 1 Hz). Três faixas compartilham um eixo de tempo. Em cima: a distância entre a posição que o receptor informa e a posição real da embarcação, que permanece dentro de poucos metros até cerca de 1576 s, quando o arrasto de posição roteirizado do registro a afasta, enquanto o receptor continua informando uma posição válida. No meio: a pontuação de confiança de 0 a 100, não calculada durante os primeiros 300 s de calibração, na faixa nominal (pelo menos 90) até o arrasto, depois caindo pela faixa degradada (pelo menos 55) até a faixa não confiável. Embaixo: a faixa de cada época como uma fita colorida com seu nome. A pontuação é consultiva. Software de caráter consultivo, não um equipamento de navegação homologado (IEC 61108, IEC 61162): o operador continua responsável pela navegação da embarcação. O registro é fictício para mostrar o formato e os monitores; não é uma medição e nada diz sobre o desempenho de qualquer receptor. Dois dias sintéticos de mapa de interferência, desenhados a partir das amostras versionadas em examples/interference-map/output, cada um com a sua própria rota sintética e as parcelas de exposição de rota que o motor informa. À esquerda, um dia de ADS-B: 1 célula degradada, 6 não degradadas, 4 não avaliadas (hachuradas) e células sem entrada, desenhadas vazias, que não foram observadas. A rota tem 525 km: 11,5% do seu comprimento em células degradadas, 38,3% não degradadas, 9,1% não avaliadas e 41,1% não observadas. À direita, um dia de AIS: células sinalizadas pelos detectores de círculo e de terra firme, células não anômalas e células vazias; a rota tem 454 km, com 10,5% em células anômalas, 21,2% não anômalas, 0,0% não avaliadas e 68,3% não observadas. ADS-B e AIS são camadas separadas, nunca combinadas. Uma célula sinalizada não é uma constatação de interferência, e uma célula sem cor não foi observada, o que não é o mesmo que livre. Todos os dados são inventados, no Atlântico central aberto, e não são uma medição.Dois dias sintéticos de mapa de interferência, desenhados a partir das amostras versionadas em examples/interference-map/output, cada um com a sua própria rota sintética e as parcelas de exposição de rota que o motor informa. À esquerda, um dia de ADS-B: 1 célula degradada, 6 não degradadas, 4 não avaliadas (hachuradas) e células sem entrada, desenhadas vazias, que não foram observadas. A rota tem 525 km: 11,5% do seu comprimento em células degradadas, 38,3% não degradadas, 9,1% não avaliadas e 41,1% não observadas. À direita, um dia de AIS: células sinalizadas pelos detectores de círculo e de terra firme, células não anômalas e células vazias; a rota tem 454 km, com 10,5% em células anômalas, 21,2% não anômalas, 0,0% não avaliadas e 68,3% não observadas. ADS-B e AIS são camadas separadas, nunca combinadas. Uma célula sinalizada não é uma constatação de interferência, e uma célula sem cor não foi observada, o que não é o mesmo que livre. Todos os dados são inventados, no Atlântico central aberto, e não são uma medição. Fluxo de treinamento do cenário coastal-drag-off (motor v0.40.0, semente 22, 25 minutos com uma solução a cada 10 s do log do instrutor). Um mapa mostra a trajetória verdadeira da embarcação e a trajetória que o receptor relata: elas concordam até que um arrasto de posição roteirizado começa em 421 s, a trajetória relatada então se afasta da verdadeira enquanto o receptor mantém uma solução válida, e volta de um salto quando o evento termina em 1140 s. Ao lado, a distância entre as duas trajetórias ao longo do tempo e a densidade média de portadora sobre ruído que o receptor relata, que sobe para um único nível elevado enquanto o evento dura. Dados sintéticos de treinamento gerados pelo Kshana. Somente para treinamento e teste: nunca alimente este fluxo aos sistemas de navegação em operação de uma embarcação. De caráter consultivo, não um equipamento de navegação homologado. Software de caráter consultivo, não um equipamento de navegação homologado (IEC 61108, IEC 61162): o operador continua responsável pela navegação da embarcação. Posições, datas e trajetórias são inventadas.Fluxo de treinamento do cenário coastal-drag-off (motor v0.40.0, semente 22, 25 minutos com uma solução a cada 10 s do log do instrutor). Um mapa mostra a trajetória verdadeira da embarcação e a trajetória que o receptor relata: elas concordam até que um arrasto de posição roteirizado começa em 421 s, a trajetória relatada então se afasta da verdadeira enquanto o receptor mantém uma solução válida, e volta de um salto quando o evento termina em 1140 s. Ao lado, a distância entre as duas trajetórias ao longo do tempo e a densidade média de portadora sobre ruído que o receptor relata, que sobe para um único nível elevado enquanto o evento dura. Dados sintéticos de treinamento gerados pelo Kshana. Somente para treinamento e teste: nunca alimente este fluxo aos sistemas de navegação em operação de uma embarcação. De caráter consultivo, não um equipamento de navegação homologado. Software de caráter consultivo, não um equipamento de navegação homologado (IEC 61108, IEC 61162): o operador continua responsável pela navegação da embarcação. Posições, datas e trajetórias são inventadas. A estrutura de um pacote de evidências. Um log de receptor (NMEA, u-blox UBX, RINEX 3 ou um log do Android) e uma janela de tempo entram em kshana receiver-trust evidence, que grava sete arquivos: log-slice.bin, config.json, epochs.json, summary.html, manifest.json, manifest.sig e um timestamp.tsr opcional. O manifesto registra o SHA-256 do log inteiro e de cada arquivo, além de uma cadeia de hashes sobre os arquivos; a assinatura cobre o manifesto. kshana evidence verify verifica a assinatura, o hash de cada arquivo, a cadeia e que nenhum arquivo não listado esteja presente, e termina com 0 quando verificado, 1 quando algo falhou e 3 quando o signatário não estava fixado. Um pacote é um registro técnico, não um parecer jurídico.A estrutura de um pacote de evidências. Um log de receptor (NMEA, u-blox UBX, RINEX 3 ou um log do Android) e uma janela de tempo entram em kshana receiver-trust evidence, que grava sete arquivos: log-slice.bin, config.json, epochs.json, summary.html, manifest.json, manifest.sig e um timestamp.tsr opcional. O manifesto registra o SHA-256 do log inteiro e de cada arquivo, além de uma cadeia de hashes sobre os arquivos; a assinatura cobre o manifesto. kshana evidence verify verifica a assinatura, o hash de cada arquivo, a cadeia e que nenhum arquivo não listado esteja presente, e termina com 0 quando verificado, 1 quando algo falhou e 3 quando o signatário não estava fixado. Um pacote é um registro técnico, não um parecer jurídico.

Todos os quatro são dados fictícios e consultivos: mostram o formato e o comportamento do software, não o desempenho de qualquer receptor ou sistema frente à interferência. Execute o primeiro com kshana receiver-trust examples/maritime-trust/session.toml, o segundo com kshana route-exposure sobre as amostras em examples/interference-map/, o terceiro com kshana nmea-scenario scenarios/training/coastal-drag-off.toml --out drag.nmea (somente para treinamento: nunca o alimente em equipamento de navegação real) e o quarto como em docs/EVIDENCE-PACKS.md.

A tabela completa de capacidades, domínio por domínio

O detalhe completo, domínio por domínio, segue; para um registro de maturidade por capacidade, veja docs/CAPABILITY.md e docs/VALIDATION.md.

Domínio Capacidade
Órbita e geometria Propagação SGP4/SDP4 (validada a 4,12 mm contra todos os 666 vetores AIAA 2006-6753); elementos de duas linhas reais (um instantâneo do Celestrak gps-ops registrado e datado) ou constelações Walker-delta sintéticas cujos elementos médios realizam a fórmula i:T/P/F a menos de 1 km ao longo de uma propagação de 24 h; visibilidade multiconstelação, diluição da precisão — geométrica, de posição, horizontal, vertical e de tempo (GDOP/PDOP/HDOP/VDOP/TDOP), validada a 1e-6 contra o gnss_lib_py 1.0.4, Stanford NAV Lab (Navigation and Autonomous Vehicles Laboratory), e disponibilidade GNSS; um otimizador de projeto de constelação sem gradiente, dimensionamento do número mínimo de satélites por ruas de cobertura, uma ferramenta de comparação multiconstelação e uma varredura de projeto Walker que tabula cobertura / PDOP / tempo de revisita sobre uma grade de planos × satélites e informa os projetos ótimos de Pareto.
Propagador numérico Um propagador numérico Cowell (src/propagator.rs) que complementa o caminho analítico SGP4/SDP4, com um modelo de forças hierárquico de sete perturbações (src/forces.rs): dois corpos + o campo zonal completo J2–J6 (os coeficientes harmônicos zonais de achatamento da Terra J2 a J6; o gradiente analítico exato de seu potencial perturbador), um geopotencial harmônico esférico tesseral EGM2008 opcional até grau/ordem 70 (Earth Gravitational Model 2008; src/gravity_sh.rs; coeficientes reais da NGA — National Geospatial-Intelligence Agency dos EUA —, recorrência de Legendre normalizada de Holmes–Featherstone, verificada de forma cruzada contra as funções de Legendre em forma fechada e a identidade analítica de ∇V), gravidade de terceiro corpo do Sol e da Lua dirigida pela época (uma efeméride embutida de baixa precisão, sem kernel DE/SPK — Development Ephemeris / SPICE Spacecraft and Planet Kernel), pressão de radiação solar (modelo de bala de canhão com sombra cônica de umbra+penumbra), arrasto atmosférico (densidade exponencial por partes de Vallado, atmosfera co-rotante), a correção relativística pós-newtoniana de Schwarzschild e o termo de arrasto de referencial de Lense–Thirring (IERS — International Earth Rotation and Reference Systems Service — Conventions 2010 §10, linear no momento angular da Terra, ~1–2 ordens abaixo de Schwarzschild) — conduzido por uma escolha de dois integradores adaptativos (RK4 — Runge–Kutta de quarta ordem — com duplicação de passo ou o par embutido Dormand–Prince RK5(4)). Validado contra o Orekit 12,2 (CS GROUP, Apache-2.0) NumericalPropagator/DormandPrince853 — 278 épocas em LEO (órbita baixa da Terra) + GTO (órbita de transferência geoestacionária), com os níveis de forças conservativas concordando a um pior caso de |Δr| 0,08 m em 24 h (tests/numerical_cowell_propagator_reference.rs); o nível de arrasto atmosférico é caracterizado separadamente (≈ 333 m / 24 h) e as entradas absolutas de efeméride do Sol/Lua e de densidade permanecem honestamente modeladas. Evidência interna adicional (não validação externa): a órbita não perturbada é verificada contra a solução exata de Kepler em variáveis universais a menos de um metro em 24 h, energia/momento angular se conservam a ~1e-9, e cada perturbação coincide com uma assinatura em forma fechada derivada à mão.
Manobras e projeto de trajetória Nós de ΔV impulsivos com propagação de covariância 6×6 (referenciais de erro de execução ECI — inercial centrado na Terra — / LVLH — vertical local, horizontal local), integração de queima finita verificada contra a equação de foguete de Tsiolkovsky em forma fechada a < 0,01 %, um solucionador de Lambert de revolução única de Izzo-2015, um propagador de Kepler exato em variáveis universais e uma varredura porkchop (lançamento × chegada) de C3 (energia de lançamento) / V∞ de chegada emitida como uma grade de contornos JSON — a camada de simulação de desempenho acima do GMAT/Orekit, com cada saída de Lambert verificada de ida e volta contra a verdade de dois corpos e o mínimo do porkchop verificado contra o piso analítico de Hohmann.
Sistemas de tempo e referenciais Escalas UTC / TAI / TT / UT1 com segundos intercalares do IERS (Tempo Universal Coordenado, Tempo Atômico Internacional, Tempo Terrestre e o tempo de rotação da Terra Universal Time 1), uma API (interface de programação de aplicações) de data juliana, o Ângulo de Rotação da Terra (ERA) IAU-2000 (União Astronômica Internacional), TEME ↔ ECEF baseado em GMST (Greenwich Mean Sidereal Time) (equador verdadeiro, equinócio médio ↔ centrado na Terra e fixo na Terra) com referenciais geodésicos WGS-84 (World Geodetic System 1984), precessão IAU 2006 (Fukushima–Williams), nutação IAU 2000A/2000B completa, movimento polar do IERS e a redução GCRS↔ITRS IAU 2006/2000A baseada em CIO sem equinócio (CIO = Celestial Intermediate Origin) — tudo validado bit a bit contra os vetores SOFA/ERFA, e verificado de forma cruzada e independente contra o ANISE (a reimplementação NAIF/SPICE em Rust puro; NAIF = Navigation and Ancillary Information Facility da NASA, a National Aeronautics and Space Administration dos EUA): o GCRS→ITRS do Kshana contra o ITRF93 do ANISE (International Terrestrial Reference Frame 1993) a partir do earth_latest_high_prec.bpc do JPL, com os mesmos parâmetros de orientação da Terra do IERS alimentados em ambos, concordam a ≤ 0,86 m no solo / ≤ 3,6 m em órbita GNSS (máx. 0,028″) em oito épocas de 2020–2023.
Inercial INS strapdown de três eixos — atitude por quatérnio, mecanização NED (norte-leste-baixo) WGS-84, compensação de coning/sculling e um modelo determinístico de erros da IMU (fator de escala, desalinhamento, sensibilidade a g, quantização, deriva); um acelerômetro de interferômetro de átomos frios a partir de primeiros princípios (fase de Mach–Zehnder, ruído de projeção quântica, decaimento de contraste, acoplamento de vibração) que deriva o coeficiente de passeio aleatório de velocidade; e um filtro de partículas de reamostragem por importância sequencial para navegação assistida por mapa (referenciada em terreno/gravidade) sem GPS.
PNT alternativo (sem GPS) Um modelo de medição de gravímetro de átomos frios cujo piso de ruído branco (σ = ASD/√τ, ASD = densidade espectral de amplitude) é derivado da física do acelerômetro CAI; um campo de anomalia de gravidade em harmônicos esféricos de baixo grau e totalmente normalizado (verificado contra as funções de Legendre em forma fechada e uma anomalia de termo único derivada à mão) mais mascons sintéticos; o núcleo de síntese de funcionais de gravidade (gravity_sh::gravity_magnitude / gravity_disturbance_mgal) — o "leitor de mapa" contra o qual um navegador assistido por gravidade faz a correspondência — é validado contra o padrão de gravidade normal GRS80 (Geodetic Reference System 1980), reproduzindo a gravidade normal de Somigliana em forma fechada e os γ_e / γ_p publicados a 3.5e-12 e produzindo um mapa de perturbação fisicamente limitado a partir do campo EGM2008 real do ICGEM (International Centre for Global Earth Models) (RMS — raiz do valor quadrático médio — ≈ 26 mGal, máx. ≈ 89 mGal em d/o 70; tests/icgem_gravity_reference.rs); e um filtro de partículas de correspondência de mapa de gravidade que recupera uma trajetória sem GPS a partir da sequência de anomalias que atravessa. Estende-se à navegação referenciada ao terreno (TERCOM/SITAN — terrain contour matching / Sandia Inertial Terrain-Aided Navigation — contra um DEM (modelo digital de elevação) SRTM (Shuttle Radar Topography Mission) .hgt, src/altpnt/terrain.rs), um campo geomagnético principal IGRF-14 (International Geomagnetic Reference Field, 14ª geração) até grau/ordem 13 (src/igrf.rs, verificado contra a forma fechada do dipolo inclinado e diferenças finitas de ∇V), e um navegador combinado de gravidade + magnético + terreno que funde os três canais escalares por um único filtro de partículas (a informação é aditiva — nenhum canal piora a solução). Um benchmark de 60 minutos sem GPS (uma interrupção de ~700 km / uma hora em que a solução inercial deriva até ~70 km) é recuperado a ~145 m (< 500 m) por um correspondente hierárquico do grosseiro ao fino — o alvo Quantum Wayfarer do NAVISP da ESA (Navigation Innovation and Support Programme).
Fusão EKF (filtro de Kalman estendido) de estado de erro GNSS/INS fracamente acoplado de 15 estados com realimentação em malha fechada (o pacote gnss-ins); uma atualização de pseudodistância fortemente acoplada que continua corrigindo com menos de quatro satélites; um filtro acoplado de relógio + posição; um estimador geral de Kalman unscented (de pontos sigma) para medições fortemente não lineares; um navegador UKF GNSS/INS fortemente acoplado (pseudodistância + Doppler) cuja deriva orbital por modelo de forças é verificada quanto à autoconsistência a 0,77 m RMS ao longo de uma passagem LEO curva de 30 minutos que inclui uma interrupção de GNSS de 120 segundos (uma cifra de consistência do filtro, não uma validação por referência independente externa — este navegador permanece MODELLED); e um UKF GNSS/INS fortemente acoplado completo de 17 estados (posição, velocidade, erro de atitude, vieses do acelerômetro e do giroscópio, viés e deriva do relógio) cuja navegação por estima quântica CAI atravessa uma interrupção de 120 segundos com o passeio aleatório de velocidade derivado do acelerômetro de átomos frios.
Determinação de órbita Recuperação de um estado orbital [r, v] a partir do rastreamento de distância por estação em solo, compondo o modelo de forças de dois corpos + J2 e o integrador RK4 com um corretor em lote de Gauss–Newton (determine_orbit_batch, submétrico / mm·s⁻¹ a partir de distâncias sem ruído, ~2 m com um piso de ruído de 5 m) e uma variante sequencial com filtro unscented (determine_orbit_sequential).
Observabilidade e teoria da estimação Uma camada geral e reutilizável de informação de Fisher / Cramér–Rao (src/fim.rs): a matriz de informação M = HᵀWH, o limite inferior de Cramér–Rao, o posto de observabilidade e o espaço nulo do defeito de datum (pseudoinversa de Moore–Penrose) e escalares de projeto de experimento ótimos D/A/E/T a partir de um autosolucionador simétrico de Jacobi. Validado — autovalores contra numpy.linalg.eigh, a covariância do CRLB contra σ²(XᵀX)⁻¹ via numpy.linalg.inv e o DOP GNSS a partir da matriz de informação, todos coincidindo a 1e-9 (tests/fim_observability_reference.rs), e verificado adicionalmente de forma cruzada contra os limites em forma fechada de Kay (1993) com atingimento do CRLB por Monte Carlo. Sustenta o motor de DOP, o CRLB de geolocalização passiva e o teorema de observabilidade de estações absolutas lunares (abaixo).
Lunar e cislunar Um propagador Terra–Lua circular restrito de três corpos (CR3BP) no referencial rotativo — constante de Jacobi conservada e todos os cinco pontos de Lagrange (src/cr3bp.rs) — agora com uma matriz de transição de estado 6×6 (STM) e um corretor diferencial de tiro único (cr3bp_jacobian, propagate_state_stm, differential_correct_halo) que produz órbitas halo / NRHO (órbita halo quase retilínea) genuinamente periódicas: a STM é validada contra diferenças finitas, as órbitas corrigidas fecham até a precisão de máquina, e semear o estado de apolúnio publicado reproduz a NRHO 9:2 sul de L2 (L2 = o segundo ponto de Lagrange Terra–Lua; a órbita do Gateway) com período ≈ 6,57 d / perilúnio ≈ 3.250 km, consistente com os publicados ≈ 6,56 d / ≈ 3.370 km (uma solução CR3BP — circular, sem Sol —, não validada contra uma efeméride real do LANS (Lunar Augmented Navigation Service)/Gateway; a transformação selenocêntrica MCI/MCMF (inercial centrado na Lua / centrado na Lua e fixo na Lua) da órbita corrigida é um passo seguinte); mais a geometria de PNT cislunar LunaNet / LNIS (LunaNet Interoperability Specification) (redução MCI↔MCMF, coordenadas selenográficas) com uma passagem ARAIM no polo sul lunar que expõe honestamente a lacuna de integridade: um σ_URE (erro de distância do usuário) de ~30 m leva o nível de proteção bem acima de um limite de alerta de 50 m (src/lunar.rs, scenarios/lunanet-araim.toml); e uma ampliação de DOP por radiobalizas de superfície (src/lunar_beacon.rs) mostrando como algumas radiobalizas de medição de distância levantadas na superfície fornecem as linhas de visada de baixa elevação e amplo azimute que um conjunto só de órbita, todo acima da cabeça, não tem — colapsando o GDOP mal condicionado do polo sul e, por meio de um orçamento de erros em raiz da soma dos quadrados, a precisão de posição realizada em metros (reutilizando o núcleo de DOP validado contra o gnss_lib_py e a forma fechada de visibilidade de horizonte sem atmosfera; a análise da diluição da precisão está descrita em arXiv:2607,06212).
Conjunto de PNT lunar Um conjunto de navegação lunar/cislunar em camadas sobre o núcleo CR3BP, cada parte um kind executável: Tempo Coordenado Lunar (lunar-time-offset, src/lunar_time.rs — a taxa secular LTC/TCL − TT (LTC = Lunar Coordinate Time; TCL = sua forma em francês, Temps-Coordonnée Lunaire) a partir da diferença de autopotencial + termo cinético, informada com a faixa publicada de 56–59 µs/dia); um observável geodésico de atraso de VLBI lunar (interferometria de linha de base muito longa) (lunar-vlbi, src/lunar_vlbi.rs — um atraso + taxa de diferença de duas distâncias em campo próximo com linha de base Terra, verificado de forma cruzada contra o Δ-DOR (delta differential one-way ranging) de onda plana da mesma base de código no limite de campo distante, com derivadas parciais verificadas por diferenças finitas); um estimador em lote conjunto de OD multitécnica + relógio (lunar-joint-od-clock, src/lunar_combination.rs — um ajuste de Gauss–Newton que funde VLBI + distâncias locais lunares + distâncias entre satélites) que traz um resultado de observabilidade por informação de Fisher: a medição de distância interna sozinha deixa um defeito de datum de corpo rígido com seis graus de liberdade, de modo que a posição absoluta de uma estação de superfície é inobservável até que se acrescente uma ligação ao referencial da Terra — um atraso de VLBI com linha de base Terra restaura a observabilidade para uma constelação esparsa e afia o limite de Cramér–Rao para uma rica, com o datum absoluto se fechando em três estações da Terra não colineares (o resultado de observabilidade está descrito em arXiv:2607,02566); realização de referencial (lunar-frame-realisation, src/lunar_frame_realise.rs — um ajuste de datum de Helmert de 7 parâmetros + ligação de orientação IAU 2015 WGCCRE — WGCCRE = o Grupo de Trabalho da IAU sobre Coordenadas Cartográficas e Elementos Rotacionais); uma análise de volume de serviço classe Moonlight/LCNS (LCNS = Lunar Communications and Navigation Services; moonlight-service-volume, src/lunar_service.rs — DOP / cobertura / disponibilidade + um envelope generalizado de HPL/VPL (nível de proteção horizontal/vertical) do ARAIM lunar, reutilizando o núcleo de DOP validado contra o gnss_lib_py e a maquinaria σ_URE≈30 m da LunaNet); PNT diferencial lunar (lunar-differential-pnt, src/lunar_dpnt.rs — um análogo lunar de GNSS diferencial / sistema de aumentação baseado em satélites (SBAS): cancelamento exato de relógio de modo comum + decorrelação espacial de primeira ordem versus linha de base, reutilizando o nível de proteção SBAS do DO-229E — o DO-229E sendo o padrão de desempenho operacional mínimo da RTCA (anteriormente Radio Technical Commission for Aeronautics) para receptores SBAS); e uma exportação de interoperabilidade alinhada à LunaNet/IOAG (IOAG = Interagency Operations Advisory Group; lunar-interop-export, src/lunar_interop.rs — CCSDS-OEM (Orbit Ephemeris Message) + ida e volta de escala de tempo lunar no referencial de corpo lunar IAU 2015, envolvida no envelope KIF). Os níveis de evidência por parte estão na matriz de verificação: o Tempo Coordenado Lunar, o estimador conjunto de OD + relógio, a realização de referencial e a geometria do volume de serviço são VALIDATED (cada um contra a referência independente que sua linha nomeia, assim como o caminho do núcleo do atraso de VLBI); o observável de VLBI, o resultado de observabilidade do defeito de datum, o PNT diferencial e a exportação de interoperabilidade são MODELLED. Os parâmetros são valores ilustrativos de fontes públicas — não validados contra rastreamento real de VLBI/Gateway, não afiliados a nenhuma agência nem endossados por ela, sem nenhuma afirmação de TRL (nível de maturidade tecnológica) / herança.
PNT de espaço profundo e Marte Um motor aberto de navegação radiométrica: tempo de luz iterativo + atraso relativístico de Shapiro, Doppler e distância de duas, uma e três vias (duas pernas de Moyer), razões coerentes de inversão do transponder, medição de distância regenerativa/PN (pseudo-ruído) (CCSDS 414, o padrão de medição de distância por pseudo-ruído) e Δ-DOR no plano do céu (CCSDS 506, o padrão Delta-DOR), com meios de plasma solar/tropo/iono; análise e emissão de mensagens de dados de rastreamento CCSDS-TDM (503); um Filtro de Informação de Raiz Quadrada de dinâmica reduzida (RTN — radial, transversal, normal — acelerações empíricas + um relógio de bordo de 3 estados + arrasto atmosférico de Marte) que faz a determinação de órbita em LMO de Marte a ≈ 0,2 m em um laço fechado sintético; um estimador conjunto de fusão de uma via + duas vias; um núcleo de dinâmica de múltiplos corpos (Body{μ, re, zonals, gravity, IAU-pole}, gravidade GMM-3 de Marte (Goddard Mars Model 3), um referencial de Marte fixo ao corpo da IAU, uma interface EphemerisProvider plugável, datas julianas de duas partes + TT↔TDB (Barycentric Dynamical Time)); e o cenário de PNT com retransmissão mars-pnt (uma constelação de retransmissão areoestacionária MARCONI) com um simulador de desempenho GSE de ponta a ponta (GSE = equipamento de apoio em solo) (geometria → orçamento de enlace → observáveis → SRIF → covariância). Validado por simulação (cifras de mérito de covariância / laço fechado); a dinâmica de Marte centrada no Sol é verificada de forma cruzada contra o DE440 do JPL (137 m @ arco de 1 dia, xval/anise-mars-od). A validação com dados reais de rastreamento da DSN/ESTRACK está no roteiro.
Sistema solar e PNT em qualquer corpo Uma efeméride de todo o sistema solar sem kernel (src/ephem.rs, src/ephem_provider.rs): cada planeta a partir dos elementos keplerianos de Standish do JPL (Tabela 1, 1800–2050 d.C.; Tabelas 2a/2b, 3000 a.C.–3000 d.C.) com o erro nominal publicado de cada planeta, a Terra e a Lua separadas pela série lunar, e Fobos, Deimos, Io, Europa, Ganimedes, Calisto e Titã a partir de elementos médios do JPL e do modelo de rotação da IAU (União Astronômica Internacional); qualquer corpo relativo a qualquer outro no ICRF (International Celestial Reference Frame). Body agora traz GM (parâmetro gravitacional), raios, J2 (o segundo harmônico zonal) onde publicado e o polo e o meridiano de origem da IAU para dezoito corpos. O tipo de cenário solar-system informa posições, velocidades, constantes, tempo de luz e distância de uma e de duas vias entre quaisquer dois corpos (o solucionador existente de tempo de luz radiométrico, com o atraso de Shapiro solar) e uma trilha orbital por corpo — o bastante para desenhar um sistema solar interativo; o tipo de cenário body-pnt posiciona um orbitador ou um módulo de pouso ao redor de qualquer corpo (scenarios/mars-orbit-pnt.toml, scenarios/europa-surface-pnt.toml) com uma constelação Walker local, a maquinaria de diluição da precisão e de Gauss–Newton e uma distância em espaço profundo a partir da Terra. Validado contra o JPL Horizons (DE441, JPL Development Ephemeris 441): Mercúrio–Saturno e a Terra a partir da Tabela 1 dentro de duas vezes o erro nominal (pior 1,87×), todos os oito planetas a partir das Tabelas 2a/2b (pior 1,71×), e o tempo de luz Terra–Marte/Júpiter. Modelado: Urano e Netuno a partir da Tabela 1 (2,0× e 5,2× o erro declarado contra o DE441), Plutão, as luas e os resultados de navegação de body-pnt.
PNT fundido MEO + LEO src/leo_fusion/: posicionamento, navegação e temporização LEO agnósticos de sistema sobre qualquer constelação (cascas Walker, conjuntos de elementos, predefinições GNSS) e qualquer sinal (portadora, taxa de chips, envelope de C/N0, erro de distância do sinal no espaço), com predefinições opcionais de um arquivo que trazem suas fontes (Xona Pulsar X1/X5, Iridium STL, sinais de oportunidade da Starlink, CentiSpace, um sistema representativo em banda C, o modelo de efeméride de relógio zero ATOMIC). leo-pvt: posicionamento Doppler em lote a partir da taxa de distância (um e vários satélites, estados de deriva de relógio e velocidade, geometria de passagem única ao longo/através da trilha e a solução espelho), mínimos quadrados ponderados conjuntos GNSS + LEO com vieses intersistemas por sistema e sigmas por sinal fornecidos pelo chamador, o DOP em função do número de satélites LEO, cobertura polar e ártica e transferência de tempo LEO para UTC em função do C/N0 e do oscilador. leo-ppp: um EKF (filtro de Kalman estendido) de PPP (posicionamento preciso de ponto) em ponto flutuante apenas com GNSS e com LEO, seu tempo de convergência e um teste de consistência NEES por qui-quadrado. ntn-positioning: posicionamento 5G de rede não terrestre a partir do limite de Cramér-Rao da largura de banda. Validado: o envelope Doppler LEO contra as cifras publicadas da Iridium e da Xona. Modelado: o restante, com a tendência do PPP comparada com Li et al. (2019) — veja docs/LEO-PNT-FUSION.md.
Integridade RAIM — monitoramento autônomo de integridade pelo receptor — de snapshot e de separação de soluções (estilo ARAIM), com níveis de proteção horizontal/vertical (HPL/VPL), detecção e exclusão de falhas e diagramas de integridade de Stanford; um nível de proteção de separação de soluções de múltiplas hipóteses (MHSS) com orçamento explícito de risco de integridade, incluindo o modo de falha de toda a constelação em dupla/múltipla constelação (ARAIM da UE (União Europeia) / DO-316, o padrão de desempenho da RTCA para equipamento aerotransportado GPS com aumentação baseada na aeronave), exercitado sobre um snapshot real de GPS + Galileo (scenarios/araim-gps-galileo.toml). O nível de proteção aplica a projeção unilateral de viés nominal b_k = Σ_i|s_i|·b_nom por modo de falha e o sigma de integridade σ_URA (precisão de distância do usuário; distinto do sigma de precisão σ_URE, erro de distância do usuário) da Integrity Support Message — veja docs/ARAIM_REFERENCE.md. O núcleo de detecção (os limiares χ²/χ² não central/normal e os multiplicadores K) é validado externamente contra o SciPy em 171 casos (tests/raim_reference.rs); a geometria reutiliza o núcleo de DOP validado contra o gnss_lib_py. A alocação do orçamento de risco de integridade do MHSS do ARAIM em si não tem nenhuma referência independente numérica publicada e permanece honestamente modelada.
Aumentação (SBAS) Níveis de proteção SBAS / WAAS (WAAS = o Wide Area Augmentation System) na forma de mínimos quadrados ponderados do DO-229E (fatores K de aproximação de precisão e em rota) e a combinação L1/L5 de dupla frequência livre de ionosfera (L1 e L5 sendo duas bandas de sinais civis do GPS; IS-GPS-705, a especificação de interface do GPS para o sinal L5, γ₁₅ ≈ 1,793) que sustenta o DO-316 — src/sbas.rs. O algoritmo de nível de proteção é validado externamente contra o fork SBAS-PL do RTKLIB (RTKLIB = a biblioteca aberta de posicionamento cinemático em tempo real; PL = nível de proteção) (zsiki/rtklib_ws waasprotlevels(), Siki & Takács 2017, DO-229D — a revisão anterior do DO-229 — Apêndice J) executado sobre dados reais do EGNOS (European Geostationary Navigation Overlay Service), reproduzindo seu HPL a < 2e-3 m (tests/sbas_reference.rs); o gLAB (o conjunto de ferramentas GNSS Laboratory) v6.0.0 confirmou a mesma convenção.
Relógio e temporização Holdover com filtro de Kalman de dois estados (covariância na forma de Joseph, saúde de consistência NIS/NEES — inovação quadrática normalizada / erro de estimação quadrático normalizado); estabilidade da família Allan (ADEV / MDEV / TDEV / HDEV / MTIE — desvios de Allan, de Allan modificado, de tempo e de Hadamard, e erro máximo de intervalo de tempo) com intervalos de confiança específicos por tipo de ruído e um ajuste completo de lei de potência de cinco coeficientes IEEE-1139 (IEEE Std 1139, as definições de metrologia de frequência e tempo do Institute of Electrical and Electronics Engineers) — os estimadores são validados em hardware real contra o Stable32: um padrão primário real de césio 5071A contra um maser de hidrogênio (556.990 amostras de fase, 16 fatores de média, OADEV/OHDEV — desvios de Allan/Hadamard sobrepostos — a 1e-3; tests/cs5071a_reference.rs) e a série de regressão canônica PHASE.DAT do Stable32 (139 fatores de média, OADEV/MDEV/TDEV a 1e-3; tests/phasedat_reference.rs); os estimadores ADEV/MDEV/TDEV e a métrica de wander de telecom MTIE são ainda verificados de forma cruzada contra a biblioteca independente allantools 2024,06 a < 1e-9 na série NIST SP 1065 (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs); correções geométricas (Sagnac, visada comum de GNSS); e os métodos operacionais de transferência — TWSTFT (transferência bidirecional de tempo e frequência por satélite) com a forma fechada de Sagnac do BIPM (Bureau International des Poids et Mesures), visada comum de GNSS, transferência de tempo PPP (posicionamento preciso de ponto) livre de ionosfera, um enlace óptico em espaço livre com cintilação por turbulência e uma escala de tempo de conjunto de relógios (de papel) por inverso da variância abaixo do melhor relógio contribuinte. Uma calculadora de holdover de relógio sem GNSS (src/holdover.rs) expõe o crescimento do erro de deriva de van Loan em forma fechada como uma inversão de holdover até o limiar — por quanto tempo um relógio funciona livre antes que seu erro de tempo exceda o orçamento — em classes representativas de relógios clássicos e quânticos; modelado (verificado de forma cruzada contra a recursão de covariância de múltiplos passos de clock_state), e honesto quanto a que, para um relógio muito estável, o holdover até um limiar estreito é determinado pelo piso de ruído de τ longo presumido, não pelo ADEV citado. Um Nível de Proteção de Temporização condicional (src/tpl.rs) estende o holdover ao spoofing: um limite para o erro de tempo não detectado, dada uma verificação cruzada independente, que compõe um piso de monitor de k sigmas, a variância de deriva de van Loan sobre a latência de detecção e um tempo até o alarme por CUSUM (soma cumulativa). Calibrado sobre um spoof real gravado (JammerTest 2024) e reproduzível via cargo run --example tpl_jammertest; composição MODELLED (sem orçamento de risco de integridade por hora), condicional à detecção — não existe um limite incondicional finito.
Domínio de medição do GNSS Síntese direta de pseudodistância / Doppler com ionosfera Klobuchar (difundida) e IONEX / grade de TEC (formato de intercâmbio de mapas da IONosfera / conteúdo total de elétrons; medida) — incluindo um analisador de arquivos IONEX, interpolação temporal entre mapas e o mapeamento de obliquidade oblíqua de casca fina —, troposfera de Saastamoinen + Niell e RAIM de snapshot (HPL/VPL).
Resiliência Jamming por orçamento de enlace (J/S → C/N₀ efetivo → perda de sincronismo — razão jammer-sinal, razão portadora-densidade de ruído — com o fator de separação espectral antijamming Q agora derivado dos espectros de potência reais do sinal e do jammer via src/navsignal.rs — Q = 1/(R_c·κ), verificado de forma cruzada na CI contra a constante representativa anterior); um detector estocástico de spoofing de tempo (teste de energia de Neyman–Pearson / χ²₁ com P_fa/P_md em forma fechada e por Monte Carlo e uma figura de mérito (FoM) de Segurança de 1 − P_md); e um detector de spoofing em múltiplas camadas que funde um teste de paridade de consistência RAIM (com o ponto cego de modo comum modelado honestamente), um monitor de potência de AGC (controle automático de ganho) de RF e um monitor de qualidade de sinal (SQM — monitoramento da qualidade do sinal, adiantado menos atrasado); e um orçamento de erro de navegação por estima quântico-inercial (QuantumNavBudget, src/inertial/quantum_imu.rs) que compõe o passeio aleatório de velocidade de ruído branco do interferômetro de átomos frios com o viés residual (verificado de forma cruzada contra o integrador independente AccelModel) e o erro de fator de escala em uma cifra de deriva de posição durante o holdover — o gêmeo inercial do holdover do relógio. Um motor de pontuação de resiliência alinhado a um marco (src/resilience/) mapeia o comportamento simulado de uma arquitetura em subpontuações por dimensão nas sete categorias de resiliência do próprio Kshana (não termos do DHS), alinhadas ao Resilient PNT Conformance Framework do Departamento de Segurança Interna dos EUA, e depois estuda a estabilidade de decisão de qualquer pontuação composta única ou Nível de maturidade sob um simplex de ponderação de Dirichlet e um conjunto de cinco ameaças — instabilidade de ranking por Kendall-τ, taxa de inversão do vencedor top-1 e colapso de diversidade de modo comum (Hill-N2), com um relatório de garantia com hash de integridade (35 testes de referência independente derivados à mão). Reproduzível via cargo run --example resilience_report; arquiteturas sintéticas MODELLED, uma autoavaliação alinhada ao RPCF v2.0, não uma certificação. Veja docs/RESILIENCE-CROSSWALK.md.
Geolocalização passiva por RF Geolocalização de emissores por TDOA/FDOA (diferença de tempo/frequência de chegada; src/geolocation.rs) — localizar um jammer ou spoofer (ou uma fonte oportunista para PNT reverso) a partir de hiperboloides de diferença de tempo de chegada em uma rede de receptores, resolvidos por mínimos quadrados de Gauss–Newton; acrescentar diferença de frequência de chegada com receptores em movimento recupera conjuntamente a posição e a velocidade do emissor, com o limite de Cramér–Rao sobre a covariância de posição derivado da geometria da rede. MODELLED (referências de consistência interna: ida e volta direta→inversa, a identidade J·CRLB = I, monotonicidade do GDOP e o estimador atingindo seu próprio CRLB sob Monte Carlo) — um modelo de linha de visada de fonte pontual, sem termos de multicaminho / NLOS (sem linha de visada), de viés de relógio do receptor ou de refração.
Sinal de navegação e rastreamento de código O nível de sinal entre o orçamento de enlace e o domínio de medição (src/navsignal.rs): densidades espectrais de potência (PSDs) de área unitária para BPSK-R(n) (modulação por deslocamento de fase binária com chips retangulares) e sine-BOC(m,n) (portadora com deslocamento binário); o coeficiente de separação espectral (SSC) κ = ∫ G_s·G_i df, que deriva o Q antijamming que o modelo de jamming usa (Q = 1/(R_c·κ)) a partir dos espectros reais de sinal/jammer em vez de uma constante representativa; a largura de banda RMS (de Gabor) (BOC > BPSK — a medida de informação de distância / Cramér–Rao); o jitter de ruído térmico do rastreamento de código DLL adiantado–atrasado coerente (DLL = malha de sincronismo de atraso; Kaplan & Hegarty; ~submétrico para o C/A — o código de aquisição grosseira do GPS — a 45 dB-Hz); e o envelope de erro de multicaminho (EML coerente, adiantado menos atrasado — supressão por correlador estreito). Validado contra âncoras em forma fechada (auto-SSC do BPSK = 2/(3·R_c), PSDs de área unitária, jitter submétrico do C/A). Isto é análise de desempenho de sinal, não projeto de hardware de antena / carga útil de RF (o papel de um parceiro de carga útil).
Interoperabilidade Ingestão de efemérides difundidas multi-GNSS em RINEX-3 (GPS, Galileo, QZSS — o Quasi-Zenith Satellite System do Japão —, BeiDou MEO/IGSO — órbita terrestre média / órbita geossíncrona inclinada — via IS-GPS-200, a especificação de interface do GPS; GLONASS, o Sistema Global de Navegação por Satélite da Rússia, via vetor de estado RK4 em PZ-90 — o datum russo Parametry Zemli 1990) utilizável como fonte de constelação (RINEX entra, geometria de PNT sai); um analisador de observações RINEX-3 (pseudodistância, fase da portadora, Doppler, intensidade de sinal; espera-se que o layout de observação 4,00 seja analisado, mas isso não foi testado, e os arquivos de navegação RINEX 4 são recusados pelo nome em vez de decodificados erroneamente) que agora alimenta um solucionador de posicionamento de ponto único (SPP) (pvt) — observações reais de código entram, uma posição de receptor real sai, validada com dados do IGS; um leitor/gravador de efemérides precisas SP3-c/d com interpolação de Lagrange de 9ª ordem; e exportação CCSDS OEM 2,0 + OMM (Orbit Mean-elements Message) para ferramentas de dinâmica de voo (GMAT, Orekit, STK — Systems Tool Kit); e análise e emissão de mensagens de dados de rastreamento CCSDS-TDM (503) para rastreamento radiométrico de espaço profundo.
Análise de missão (engenharia de sistemas) Orçamentos de projeto de missão de primeira ordem, cada um um tipo de cenário executável: geometria de lançamento e ascensão de dois corpos (launch-window — azimute de lançamento sin Az = cos i/cos lat, inclinação mínima, bônus de rotação da Terra, Δv de mudança de plano em dogleg, oportunidades diárias; src/launch.rs); um corredor balístico de reentrada de Allen–Eggers (reentry — desaceleração máxima, velocidade/altitude do pico de g, velocidade do pico de aquecimento; src/reentry.rs); geometria de cobertura de observação da Terra (eo-coverage — faixa de imageamento / GSD (distância de amostragem no solo) no nadir / acesso fora do nadir / revisita pelo triângulo espacial do SMAD (Space Mission Analysis and Design); src/eo_payload.rs); um orçamento de atitude e erro de apontamento de 3-DOF (três graus de liberdade; attitude-budget — torque de gradiente de gravidade no pior caso + orçamento de apontamento RSS (raiz da soma dos quadrados); src/attitude_budget.rs); previsão de passagens de estação em solo (passes — AOS/TCA/LOS, aquisição de sinal / instante de maior aproximação / perda de sinal, elevação máxima, tempo de acesso; src/passes.rs); e um orçamento de enlace de uma via sobre a equação de enlace CCSDS 401 / DSN 810-005 (o padrão de radiofrequência e modulação do CCSDS / o manual de projeto de enlaces da Deep Space Network; link-budget — FSPL (perda de percurso em espaço livre), C/N₀, Eb/N₀ (razão energia por bit sobre densidade de ruído), margem, fechamento; src/linkbudget.rs). Orçamentos analíticos de primeira ordem MODELLED — a camada pré-hardware abaixo do STK/GMAT/Basilisk, não uma substituição de 6-DoF nem radiométrica.
Análise de decisão e análise de compromissos (MCDA) Um conjunto completo de análise de decisão multicritério (MCDA) (src/mcda/) abrangendo as quatro famílias de métodos — agregação de valor (WSM, WPM, WASPAS — modelo de soma ponderada, modelo de produto ponderado, avaliação ponderada agregada de soma e produto), distância ao ideal (TOPSIS, Technique for Order of Preference by Similarity to Ideal Solution), programação de compromisso (VIKOR, do sérvio para otimização multicritério e solução de compromisso) e superação (PROMETHEE II, Preference Ranking Organization Method for Enrichment of Evaluations; ELECTRE I, do francês para eliminação e escolha expressando a realidade), além de MOORA por sistema de razões (Multi-Objective Optimization on the basis of Ratio Analysis) e COPRAS proporcional (Complex Proportional Assessment) — com ponderação de prioridades por comparação par a par AHP (Analytic Hierarchy Process) (Razão de Consistência), uma frente não dominada de Pareto, análise de sensibilidade de pesos e pontuação por utilidade multiatributo. Os nove agregadores reproduzem as bibliotecas independentes de terceiros pymcdm (WSM / WPM / WASPAS / MOORA / TOPSIS / VIKOR / PROMETHEE II) e pyDecision (ELECTRE I, COPRAS) a < 1e-9, e o vetor de prioridades do AHP + Razão de Consistência coincidem com a tabela de Índice Aleatório de Saaty e o autosolucionador principal do SciPy/LAPACK a < 1e-9 (tests/mcda_*_reference.rs). VALIDATED — a camada de decisão sob o motor de estudos de compromisso.
Ambiente espacial Um modelo de ambiente de clima espacial (space-weather, src/space_weather.rs): índices de atividade solar (F10.7 / F10.7a centrado em 81 dias — o fluxo de rádio solar de 10,7 cm) e geomagnética (Kp, o índice K planetário, com a tabela definicional Kp↔ap — sendo ap sua amplitude planetária linear), a temperatura exosférica de Jacchia-1971 que eles conduzem (validada contra o mínimo/média/máximo solar publicados) e a densidade neutra termosférica corrigida pela atividade versus estática em altitude — a dependência da densidade em relação ao ciclo solar que a atmosfera estática USSA76 (US Standard Atmosphere 1976) omite. MODELLED: um acoplamento de altura de escala de primeira ordem calibrado, não uma atmosfera (NRLMSISE — o modelo Mass Spectrometer and Incoherent Scatter Radar Exosphere do US Naval Research Laboratory) validada por dados.
Avaliação por aprendizado de máquina e compromisso Uma bancada de avaliação de detecção de degradações de RF (impairment-eval, src/impairment_eval.rs): um corpus sintético rotulado e fundamentado em parâmetros (nominal / jamming / spoof de tempo / spoof de posição / multicaminho), um arcabouço de ROC/AUC (característica de operação do receptor / área sob a curva) agnóstico quanto ao detector que pontua qualquer detector (energy | agc | sqm | parity | fused) com Pd (probabilidade de detecção) por classe a uma Pfa (probabilidade de alarme falso) alvo, e a lacuna de otimismo dentro versus fora da distribuição (modo de mudança de distribuição). Além disso, uma análise de compromisso PNT quântico versus clássico (quantum-trade, src/quantum_trade.rs) que quantifica o benefício de holdover de temporização/inercial de um relógio candidato a partir de uma curva de ADEV medido contra uma linha de base clássica, com a ressalva do piso de τ longo levada no artefato e um envelope de resiliência versus tempo sem GNSS. As métricas de avaliação (AUC / confusão / Pd-Pmd, sendo Pmd a probabilidade de detecção perdida) são validadas com correspondência exata contra o scikit-learn 1.9.0 — inclusive sobre telemetria real do ESA OPS-SAT (o conjunto de dados de detecção de anomalias OPSSAT-AD, Ruszczak et al. 2025, CC BY 4,0 — Creative Commons Attribution 4,0), onde a AUC ROC de Mann–Whitney do Kshana reproduz a roc_auc_score do scikit-learn a < 1e-9 na partição de teste reservada e um detector transparente de contagem de picos separa as anomalias rotuladas a AUC ≈ 0,85 (tests/opssat_ad_reference.rs) — e os núcleos numéricos do motor de compromissos (ajuste NNLS — mínimos quadrados não negativos — de ADEV, bandas de consistência χ², Q de relógio de van Loan) contra o scipy 1.17.1; os números de benefício de dispositivo construídos sobre isso permanecem características operacionais MODELLED — nunca dados de campo/IQ (amostras em fase/quadratura), sem veredito bom/ruim. Sobre a bancada, um estudo de lacuna de otimismo mais profundo (src/impairment_study.rs, impairment_ml.rs, eval_stats.rs) pontua um painel de 13 detectores (energy/AGC/SQM/parity mais detectores de regressão logística com semente e de MLP — perceptron multicamadas — de uma camada oculta), ajusta leis de escala dentro versus fora da distribuição com um nulo por permutação e aprende um preditor leave-one-out da degradação fora da distribuição a partir de estatísticas dentro da distribuição (cargo run --example optimism_study). Um front end de receptor definido por software (src/sdr.rs — IQ/IF bruto (frequência intermediária) → derivações do correlador adiantado/pontual/atrasado → SQM) e adaptadores de ingestão de dados reais (src/realdata/ — RINEX, UBX da u-blox (o protocolo binário da u-blox), GnssLogger, JammerTest, Yunnan, SatGrid) permitem que os mesmos detectores rodem sobre gravações fornecidas localmente (nenhum conjunto de dados é registrado no repositório). O mapa de cruzamento de resiliência quântico versus clássico sob incerteza de parâmetros (src/crossover.rs; cargo run --bin crossover_study) regenera os estudos de cruzamento inercial e de relógio por trás das figuras de Resultados.
Demonstrador de PNT habilitado por tecnologia quântica Três áreas de aplicação executáveis e MODELLED por trás do motor aberto, cada uma emitindo um TradeEvidence honesto + um registro de representatividade / lacunas até o voo (src/representativeness.rs): transferência quântica confiável de tempo (quantum-time-transfer, src/timetransfer_chain.rs — um orçamento de ponta a ponta de relógio de rede óptica + enlace fotônico contra CSAC (relógio atômico em escala de chip) + bidirecional por RF, com um nível de proteção de temporização reutilizado, uma FoM de segurança contra ataques de atraso/repetição (1 − P_md) e detecção de anomalias de relógio + latência de CUSUM); navegação quântica sem GNSS (quantum-gnss-free-nav, src/quantum_nav_od.rs — uma deriva inercial por interferômetro de átomos frios contra um INS de grau de navegação durante uma interrupção de GNSS, honesta quanto a que, sem correção externa, o viés do acelerômetro é inobservável e, portanto, o erro ainda cresce); e detecção de falhas/anomalias de sistemas quânticos (quantum-anomaly-detect, src/quantum_faults.rs — um catálogo rotulado de falhas com uma AUC ROC de IC (intervalo de confiança) por bootstrap a partir do eval_stats validado externamente e uma falha mínima detectável a uma taxa fixa de alarmes falsos). Uma biblioteca compartilhada de modelos de erro de dispositivos quânticos (src/quantum_devices.rs) e um arcabouço unificado de compromisso quântico versus clássico (src/qtrade.rs) sustentam essas áreas. Os núcleos validados em que elas se apoiam (métricas de avaliação contra o scikit-learn, núcleos de compromisso contra o scipy) são reutilizados; os números de benefício de dispositivo construídos sobre eles permanecem MODELLED — parâmetros de dispositivo/enlace ilustrativos de fontes públicas, modelam a classe, sem TRL / herança de voo / certificação, sem endosso de agência.
Engenharia frugal e impacto na integridade Uma lente de ROI (retorno sobre o investimento) de custo por cobertura (src/frugal.rs) — custo por unidade de cobertura entregue em uma análise de compromisso de arquitetura — e um mapeamento de detecção perdida → impacto na integridade (src/integrity_impact.rs) que transforma a taxa de detecção perdida de um monitor em sua contribuição ao risco de integridade. Orçamentos de apoio à decisão MODELLED, aditivos.
Intercâmbio de artefatos O Kshana Interchange Format (KIF) (src/interchange.rs) — um envelope versionado e autodescritivo que envolve o resultado de um cenário com seu tipo de cenário, a versão do esquema e os rótulos MODELLED/VALIDATED, de modo que um artefato armazenado continue se autodocumentando e envelopes mais antigos permaneçam legíveis com compatibilidade futura.

Cada capacidade é acessível como uma API Rust, um cenário executável kind, ou ambos. A maturidade por capacidade — validada, executável ou biblioteca — é acompanhada em docs/CAPABILITY.md. Uma matriz de verificação verificada por máquina (src/verification.rs) apresenta a referência cruzada requisito → módulo → teste → referência independente → estado, com invariantes de honestidade testadas por unidade que permitem um rótulo validada somente onde uma referência independente externa a respalda — e que registram as capacidades de hardware/PA (garantia do produto) que o Kshana deliberadamente não oferece.

Os quatro pacotes de sensores, como publicados originalmente (resultados)

Resultados#

Cada cenário compara um sensor quântico com seu equivalente clássico ao longo de uma interrupção de GNSS de ~1,8 h. Os números são reproduzíveis (scenario + seed + version).

O que os sensores quânticos oferecem quando o GNSS desaparece, cenário de holdover de relógio: o quântico mantém 6600 s de autonomia contra 2610 s do clássico, erro de temporização muito menor e disponibilidade de 100% contra 95,6%
O que os sensores quânticos oferecem quando o GNSS desaparece — clock-holdover · semente 42 · desenhado no motor 0.40.0, e cada figura acima reverificada contra o motor atual a cada compilação por tests/published_figures_still_reproduce.rs · SVG

A vantagem depende da interrupção e da vibração, com um ponto de equilíbrio explícito onde o clássico vence — mostrada honestamente ao longo da escada de maturidade tecnológica (as cifras de relógio óptico são alvos de demonstradores em solo; nenhum relógio óptico de estrôncio voou):

Cruzamento quântico versus clássico de holdover de relógio ao longo da escada de maturidade tecnológica, com bandas de confiança
Mapa de calor da vantagem inercial quântico versus clássico sobre a duração da interrupção e a vibração, com um contorno de ponto de equilíbrio onde o clássico vence
Cruzamento de resiliência quântico versus clássico — escada TRL de holdover de relógio (em cima) · mapa de vantagem inercial com contorno de ponto de equilíbrio (embaixo). Regenerável via cargo run --release --bin crossover_study.

Navegação por estima inercial: erro de posição durante uma interrupção de GNSS — o sensor quântico (de átomos frios) permanece perto da linha de especificação enquanto o sensor de grau de navegação diverge para dezenas de quilômetros
Erro de posição da navegação por estima durante uma interrupção de GNSS: o sensor quântico (azul) permanece plano perto da especificação; o sensor clássico (vermelho) diverge para dezenas de quilômetros. Gerado pelo Kshana a partir de scenarios/imu-deadreckoning.toml.

Pacote Cenário Quântico Clássico
1 — Holdover de relógio clock-holdover.toml (especificação de 20 ns) o relógio óptico mantém toda a interrupção o CSAC viola a especificação no meio da interrupção
2 — Navegação por estima inercial imu-deadreckoning.toml (especificação de 100 m) átomos frios: ~41 m, mantém toda a interrupção grau de navegação: viola em ~350 s → dezenas de km
3 — Transferência de tempo (enlace óptico entre satélites) timetransfer.toml óptico: medição de distância de ~0,3 mm RF (TWSTFT): medição de distância de ~150 mm
4 — Fusão híbrida (síntese final) hybrid-pnt.toml posição+tempo completos durante toda a interrupção limitado em posição a ~350 s

A síntese final mostra a tese da fusão: a transferência óptica de tempo entre satélites mantém travado até um relógio clássico, isolando o sensor inercial como o elo fraco do conjunto clássico — ou seja, inercial quântico + temporização óptica juntos.

Holdover de relógio: erro de fase durante uma interrupção de GNSS — o relógio óptico permanece dentro da especificação de 20 ns durante toda a interrupção, enquanto o relógio em escala de chip a viola no meio dela
Holdover de relógio durante uma interrupção de GNSS: o relógio óptico (azul) permanece dentro da especificação de 20 ns durante toda a deriva; o relógio em escala de chip (vermelho) a viola no meio do caminho. Gerado pelo Kshana a partir de scenarios/clock-holdover.toml.

Um cenário adicional, orbit-gnss-challenged.toml, deriva a disponibilidade de GNSS da geometria orbital em vez de janelas escritas à mão: uma espaçonave dentro da casca GNSS é propagada contra uma constelação Walker semelhante ao GPS, e a contagem de satélites visíveis (linha de visada, ocultação pela Terra, máscara de elevação) define o estado da solução em cada passo. Ao longo de um dia o usuário tem solução apenas ~59% do tempo; o relógio quântico mantém uma solução de temporização de 5 ns em todas as lacunas (disponibilidade 1.0), o relógio em escala de chip apenas ~0.83.

Órbita com GNSS desafiado: erro de temporização do relógio ao longo de um dia para uma espaçonave dentro da casca GNSS, onde as lacunas de cobertura são derivadas da geometria orbital — o relógio óptico permanece dentro da especificação de 5 ns ao longo das lacunas, enquanto o relógio em escala de chip a viola
Erro de temporização ao longo de um dia com a disponibilidade de GNSS derivada da geometria orbital: a contagem de satélites visíveis (linha de visada, ocultação pela Terra, máscara de elevação) define o estado da solução em cada passo, de modo que o relógio precisa atravessar toda lacuna em deriva — o relógio óptico mantém a especificação de 5 ns enquanto o relógio em escala de chip a viola. Gerado pelo Kshana a partir de scenarios/orbit-gnss-challenged.toml.

A constelação também pode ser dada como conjuntos reais de elementos de duas linhas (TLEs). Um TLE completo (linha 1 + linha 2) é propagado com o modelo SGP4/SDP4 completo — incluindo arrasto atmosférico e os termos de espaço profundo lunar-solares e de ressonância de 12 h / 24 h que importam para órbitas GNSS de ~12 h — validado contra os vetores oficiais AIAA 2006-6753 a um pior caso de ≈ 4 mm. scenarios/orbit-sgp4-gps.toml inclui um instantâneo real do Celestrak gps-ops da constelação GPS operacional (2021-07-28, 30 satélites) e exige checksums de TLE válidos — os conjuntos de elementos de duas linhas são dados abertos do catálogo da Força Espacial dos EUA / 18th Space Defense Squadron, redistribuídos pelo Celestrak (Dr. T. S. Kelso, celestrak.org); atualize com scripts/fetch_tles.sh. Um bloco só da linha 2 mantém a propagação analítica de dois corpos (scenarios/orbit-real-tle.toml); as duas formas podem ser misturadas em uma única constelação. Uma constelação também pode ser construída a partir de um bloco de registros de efemérides difundidas do GPS em RINEX-3 — o formato que um receptor decodifica — propagados pelo algoritmo de usuário do IS-GPS-200 e alimentados pela mesma geometria (scenarios/orbit-rinex.toml).

O que é / não é, por extenso

O que é / não é#

É: um motor determinístico e de poucas dependências que abrange a pilha de PNT — geometria orbital, navegação inercial, fusão GNSS/INS, integridade, relógios e temporização. Ele executa um cenário (muitas vezes uma interrupção de GNSS), evolui modelos calibrados de erro de sensores por meio do estimador apropriado e pontua o resultado contra as figuras de mérito operacionais — emitindo um resultado JSON (JavaScript Object Notation) reproduzível e um gráfico SVG, a partir de uma biblioteca Rust, uma interface de linha de comando (CLI), uma extensão Python, um módulo WebAssembly no navegador, um servidor Model Context Protocol (MCP) para agentes de IA ou um plugin para IDE (ambiente de desenvolvimento integrado) JetBrains.

Não é: hardware de voo, um projeto de carga útil quântica, um receptor completo de sinais GNSS, um simulador de sinais de radiofrequência (RF) ou bancada de hardware-in-the-loop, nem um produto de aviônica certificado — e não substitui o MATLAB/Simulink, o STK (Systems Tool Kit) nem o Orekit; ele fica ao lado deles e troca arquivos com eles. A fidelidade do hardware quântico vem de modelos de erro publicados, não desta ferramenta. A maturidade granular de cada capacidade está documentada em docs/CAPABILITY.md.

Não é (ainda): um motor completo de física de interferometria atômica (a maioria dos sensores quânticos consome coeficientes publicados de Allan/orçamento de ruído; o acelerômetro CAI (interferômetro de átomos frios) tem uma camada de primeiros princípios — fase de Mach–Zehnder, ruído de projeção, decaimento de contraste e acoplamento de vibração, além de sistemáticos de Coriolis e de deslocamento de luz — mas os sistemáticos de frente de onda e a resolução de ambiguidade de franjas continuam sendo uma camada P2 (fase 2 do roteiro, a camada de física quântica) do roteiro, veja ROADMAP.md e docs/QUANTUM-MODELS.md); um receptor GNSS certificado ou de hardware (ele resolve uma solução de posição PVT (posição, velocidade e tempo) de ponto único a partir de observações reais de código RINEX (Receiver Independent Exchange Format) — validada com dados reais do IGS (International GNSS Service) — e sua camada IQ (kshana iq, desde a 0.31.0) adquire e rastreia amostras de banda base gravadas ou geradas em software, como um receptor de análise: ela não aciona hardware de rádio nem transmite, não é um receptor certificado e não faz posicionamento por fase da portadora (RTK ou PPP)); nem um conjunto completo de projeto de missão (tem blocos de construção de Lambert / porkchop / manobra / determinação de órbita, mas é a camada de simulação de desempenho acima do GMAT (General Mission Analysis Tool)/Orekit, não uma substituição). Assumir este escopo é deliberado. Se você precisa de orçamentos de erro de interferômetro de átomos frios a partir de primeiros princípios (por exemplo, de nível CARIOQA-PMP — Cold Atom Rubidium Interferometry in Orbit for Quantum Accelerometry, Pathfinder Mission Preparation — ou validação no estilo X-37B), veja o roteiro P2 e entre em contato para colaborar.

Navegação em órbita baixa da Terra#

Os satélites em órbita baixa da Terra (LEO) passam rápido e fortes. O tipo de cenário leo-pnt-chain acompanha um sistema por todas as etapas: o sinal, a passagem e seu enlace, a mensagem de navegação e a solução fundida de posição, velocidade e tempo (PVT) e o posicionamento preciso de ponto (PPP). Cada etapa entrega seus números à seguinte. Veja docs/LEO-PNT.md.

A cadeia de PNT LEO a partir de uma execução real de leo-pnt-chain (leo-pnt-end-to-end.toml): a etapa de sinal (generic-l a 1191,795 MHz, piloto rastreado a 10,23 Mchip/s) entrega à etapa de passagem (1080 km, pico de C/N0 rastreado 58,2 dB-Hz), que entrega à mensagem de navegação (kepler-rac, ajuste de 300 s, SISRE de representação 0,91 mm RMS, 0,250 m com determinação de órbita), que alimenta a solução fundida (apenas GNSS 1,60 m RMS 3D, GNSS mais LEO 0,43 m) e o posicionamento preciso de ponto (convergência 11,5 min apenas com GNSS, 7,5 min com 240 satélites LEO). 11 valores são passados entre as etapas.A cadeia de PNT LEO a partir de uma execução real de leo-pnt-chain (leo-pnt-end-to-end.toml): a etapa de sinal (generic-l a 1191,795 MHz, piloto rastreado a 10,23 Mchip/s) entrega à etapa de passagem (1080 km, pico de C/N0 rastreado 58,2 dB-Hz), que entrega à mensagem de navegação (kepler-rac, ajuste de 300 s, SISRE de representação 0,91 mm RMS, 0,250 m com determinação de órbita), que alimenta a solução fundida (apenas GNSS 1,60 m RMS 3D, GNSS mais LEO 0,43 m) e o posicionamento preciso de ponto (convergência 11,5 min apenas com GNSS, 7,5 min com 240 satélites LEO). 11 valores são passados entre as etapas.

Todo tipo de cenário por família#

Os tipos de cenário do motor, organizados em famílias. Cada família tem uma página com uma entrada por tipo de cenário (a descrição e os campos do motor, um comando de exemplo, cifras principais de uma execução, as linhas da matriz de verificação que o nomeiam e o gráfico que o próprio motor escreve) e uma folha de contatos desses gráficos; docs/KINDS.md indexa todos eles. A tabela é escrita por tools/gen_readme_blocks.py e as páginas por tools/gen_kinds_index.py, e ambos falham se o motor ganhar um tipo de cenário que nenhuma família nomeia.

Família O que responde Tipos de cenário Execute um
Relógios, temporização e holdover por quanto tempo um relógio mantém a hora sem GNSS, e como um sistema de temporização se sustenta contra suas máscaras clock, sweep, sweep-nd, telecom-timing, slot-timing, timetransfer, time-transfer-budget, holdover-test, quantum-time-transfer kshana scenarios/clock-holdover.toml
Sensores inerciais, de fusão e quânticos navegação por estima e fusão de sensores durante uma interrupção de GNSS, com sensores clássicos e quânticos inertial, hybrid, fusion, hybrid-ukf, gnss-ins, ins-trn-coast, quantum-gnss-free-nav, quantum-anomaly-detect, quantum-trade kshana scenarios/gnss-ins.toml
PNT alternativo sem GPS navegar a partir de gravidade, terreno e outros campos quando o GNSS desaparece gravity-map, terrain-nav, terrain-slam, combined-altpnt, conflict-resilience kshana scenarios/combined-altpnt.toml
Constelações, cobertura e geometria onde estão os satélites, quem os vê e quão boa é a geometria, ao redor da Terra, da Lua ou de Marte orbit, ephemeris, constellation-design, solar-system, body-pnt, mars-pnt, passes kshana scenarios/orbit-gnss-challenged.toml
Medições de GNSS, posicionamento e integridade pseudodistâncias, soluções de posição, níveis de proteção e o ambiente espacial integrity, gnss-sim, pvt, araim-reference-check, space-weather, realtime-frame-eop kshana scenarios/integrity-raim.toml
Jamming, spoofing e o espectro como a interferência chega a um receptor e se é detectada jamming, spoof, spoof-detect, tracking-loop, spectrum, impairment-eval kshana scenarios/jamming-demo.toml
Navegação em órbita baixa da Terra uma passagem, um enlace, uma mensagem de navegação e uma solução fundida, etapa por etapa leo-signal, leo-pass, leo-navmsg, leo-pvt, leo-ppp, ntn-positioning, leo-pnt-chain kshana scenarios/leo-pnt-end-to-end.toml
Lunar e cislunar navegação, tempo, referenciais e geodésia na Lua lunar-integrity, lunar-time-offset, lunar-time-budget, lunar-ascent, lunar-surface, lunar-descent, lunar-orbit-rendezvous, lunar-vlbi, lunar-vlbi-fim, lunar-joint-od-clock, lunar-frame-realisation, lunar-frame-campaign, lunar-llr-datum, moonlight-service-volume, lunar-differential-pnt, lunar-station-coverage, lunar-beacon, lunar-interop-export, cislunar-observability, cislunar-arc-recovery, lunar-attack-surface, lunar-jamming, earth-gnss-lunar, lunar-infrastructure kshana scenarios/lunar-infrastructure-od-consistency.toml
Navegação de usuários espaciais sinais GNSS para espaçonaves acima, ao redor e além das órbitas GNSS gnss-ssv kshana scenarios/gnss-ssv-shell.toml
PNT óptico enlaces ópticos através da atmosfera e figuras de mérito ópticas mais RF optical-atmosphere, hybrid-optical-rf kshana scenarios/optical-atmosphere-network.toml
Análise de missão, enlaces e operações espaciais lançamento, ascensão, reentrada, atitude, enlaces, planejamento de contatos e formatos de arquivo launch-window, ascent-losses, reentry, entry-heating, eo-coverage, eo-radiometry, attitude-budget, aocs, link-budget, acm-link, contact-schedule, aperture-duty-cycle, space-packet, oem-interop kshana scenarios/launch-window.toml
Sequências de missão o orçamento de erro de navegação e temporização de uma cadeia de fases do lançamento à reentrada mission-thread kshana scenarios/mission-thread-artemis-class.toml
Campanhas missões encadeadas, varreduras e conjuntos construídos a partir dos outros tipos de cenário campaign kshana scenarios/campaign-jam-spoof-holdover-integrity.toml

Todos os comandos#

kshana <scenario.toml> executa um cenário; todo outro comando é um subcomando, e kshana --help imprime o uso de todos eles. Os comandos são --study, --validate, kinds, example, receiver-trust (com live e evidence), evidence (keygen, verify, attach-timestamp, round-trip), jammertest (import, score), trust-telemetry, imu-fit, nmea-scenario, interference-map (adsb, ais, daily, sensitivity, fetch-land), route-exposure, bench (spec, truth, cases, score, baseline, seal, reveal-check, manifest, verify-manifest, validate, leaderboard), bench-export, compliance-report, lunanet-afs-check, standards-pack, partner (check), osnma, iq (scene, acquire, track, sweep, labfit, campaign, conditions, frontend, monitor, inventory, info, extract, convert, decimate), sky e skyline. docs/COMMANDS.md dá a finalidade de cada um, um exemplo verificado e sua página de documentação.

Todas as superfícies#

Um motor, os mesmos resultados em todo lugar: a linha de comando, a biblioteca Rust, Python, JavaScript e WebAssembly, o servidor MCP com seus comandos de plugin e skills, o Kshana Studio (todas as páginas rodam no navegador, sem instalação, nada é enviado), as integrações com ROS 2, Signal K, OpenCPN, GNSS-SDR e gnss_lib_py, os kits de implantação systemd, Docker e Grafana, e o plugin JetBrains. docs/ALL-SURFACES.md os lista com como obter cada um e os nomes de todos os comandos de plugin, skills e páginas do Studio; docs/SURFACES.md diz, para cada comando e tipo de cenário, qual superfície o oferece e quais não, com o motivo.

Como uma execução funciona#

Um cenário é um arquivo TOML (Tom's Obvious, Minimal Language): um tipo de cenário, uma semente e os parâmetros. O motor o executa e escreve o resultado, um gráfico e um relatório ao lado dele, e as exportações que você pedir.

Como uma execução flui. Um arquivo TOML de cenário (um tipo, uma semente e seus parâmetros) entra no motor, kshana 0.40.0, pelo despacho api::run_toml sobre 92 tipos de cenário, determinístico a partir do cenário, da semente e da versão do motor. O motor grava result.json, chart.svg, report.html e report.json, uma table.csv para os tipos de cenário que definem uma, e, sob demanda, exportações SP3, CCSDS OMM e OEM, CZML, KML, GeoJSON, STK e SigMF; uma suíte grava study.json e study.html. Esses arquivos alimentam o Kshana Studio no navegador, um assistente de IA por meio do servidor kshana-mcp e a integração contínua.Como uma execução flui. Um arquivo TOML de cenário (um tipo, uma semente e seus parâmetros) entra no motor, kshana 0.40.0, pelo despacho api::run_toml sobre 92 tipos de cenário, determinístico a partir do cenário, da semente e da versão do motor. O motor grava result.json, chart.svg, report.html e report.json, uma table.csv para os tipos de cenário que definem uma, e, sob demanda, exportações SP3, CCSDS OMM e OEM, CZML, KML, GeoJSON, STK e SigMF; uma suíte grava study.json e study.html. Esses arquivos alimentam o Kshana Studio no navegador, um assistente de IA por meio do servidor kshana-mcp e a integração contínua.

Este cenário incluído dura 2 h: 10 min de GNSS, depois cerca de 1,8 h com GNSS negado. Ele pergunta por quanto tempo um relógio óptico de rede de estrôncio e um relógio atômico em escala de chip (CSAC) mantêm, cada um, a hora dentro de 20 ns.

kshana example clock-holdover > clock-holdover.toml
kshana clock-holdover.toml
scenario 5ba83a232b94 | quantum holdover 6600s p95 1.20e-4ns integrity 1.000 security n/a (no attack) | classical holdover 2610s p95 19.7ns integrity 1.000 security n/a (no attack)
wrote clock-holdover.result.json, clock-holdover.chart.svg, clock-holdover.report.html, and clock-holdover.report.json

O relógio óptico mantém o orçamento de 20 ns durante toda a interrupção de 6600 s; o CSAC o mantém por 2610 s, e fica dentro do orçamento durante 95,6% da execução contra 100% do relógio óptico. kshana example lista todos os cenários incluídos.

Missões#

Dez setores fazem dez perguntas diferentes ao mesmo motor. Cada um tem cenários incluídos para começar.

Setor Comece com
Defesa e segurança campaign-jam-spoof-holdover-integrity, spoof-meaconing
Espaço, órbita terrestre orbit-gnss-challenged, leo-pnt-end-to-end
Lua, Marte e espaço profundo lunar-relay-constellation, mars-orbit-pnt
Aviação e drones small-uas-jammed-nav, araim-gps-galileo
Marítimo maritime-strait-jamming, maritime-port-approach-coast
Rodovias automotive-urban-canyon
Ferrovias rail-tunnel-coast
Infraestrutura crítica e temporização clock-holdover, clock-ensemble
Telecom e 5G (a quinta geração de redes móveis) telecom-prtc-holdover-24h, leo-vertical-5g-network-timing
Ciência e pesquisa sweep-clock-stability, quantum-pnt-demonstrator.suite
A pergunta que cada setor faz
Setor A pergunta que ele faz Comece com
Defesa e segurança Por quanto tempo nossa navegação e nossa temporização permanecem confiáveis sob jamming e spoofing, e quais camadas nos mantêm dentro da especificação? campaign-jam-spoof-holdover-integrity, spoof-meaconing
Espaço: órbita terrestre Minha espaçonave vê satélites de navegação suficientes, por quanto tempo seu relógio mantém a hora entre soluções e o que acrescentaria uma camada de navegação em órbita baixa? orbit-gnss-challenged, leo-pnt-end-to-end
Lunar e espaço profundo Um módulo de pouso, um rover ou um orbitador na Lua, em Marte ou mais longe obterá uma posição e um tempo confiáveis? lunar-relay-constellation, mars-orbit-pnt
Aviação e drones Depois que um jammer tira o GNSS, por quanto tempo meu sistema de aeronave não tripulada (UAS) permanece dentro de seu orçamento de posição, e há integridade disponível na minha rota? small-uas-jammed-nav, araim-gps-galileo
Marítimo Até onde, sobre a água, um jammer alcança, um deslocamento de posição seria detectado e por quanto tempo um navio pode seguir à deriva até o porto? maritime-strait-jamming, maritime-spoof-position-push, maritime-port-approach-coast
Rodovias e automotivo Quanto um carro deriva sob um viaduto ou ao passar por um jammer à beira da estrada? automotive-urban-canyon
Ferrovias Quantos segundos dentro de um túnel um trem ainda consegue dizer em que via está? rail-tunnel-coast
Infraestrutura crítica e temporização Se o tempo GNSS for perdido ou falsificado, por quanto tempo uma rede elétrica, uma bolsa de negociação ou um data center mantêm um tempo rastreável? clock-holdover, clock-ensemble
Telecom e 5G Se a referência de tempo GNSS for perdida, o relógio da minha rede permanece dentro das máscaras da ITU-T, e por quanto tempo? telecom-prtc-holdover-24h, leo-vertical-5g-network-timing
Ciência e pesquisa Consigo reproduzir, estender e citar um resultado de PNT, até a semente? sweep-clock-stability, quantum-pnt-demonstrator.suite

Evidências#

SGP4 verificado contra todos os 666 vetores de referência AIAA 2006-6753, pior erro de posição 4,12 mm

176 de 401 capacidades validadas em relação a referências independentes externas; 221 rotuladas com honestidade como modeladas. Cada linha da matriz de verificação nomeia uma capacidade, a referência independente com a qual ela é verificada, o teste que executa a verificação e o rótulo que resulta. A integração contínua (CI) torna impossível chamar uma capacidade de VALIDATED sem uma referência independente externa.

Como uma capacidade obtém seu rótulo. Cada linha da matriz de verificação nomeia uma capacidade, a referência independente com a qual ela é verificada, o teste que executa a verificação na integração contínua e o rótulo que resulta. Uma linha só pode ser VALIDATED com uma referência independente externa; caso contrário é MODELLED, ou PARTNER quando um parceiro de hardware é o responsável. Exemplo: SGP4/SDP4, Cowell 6-DOF + perturbações, DO em lote/sequencial, referência independente vetores de verificação SGP4 do AIAA 2006-6753, teste tests/sgp4_verification.rs, rótulo VALIDATED. Contagens ao vivo: 176 VALIDATED, 221 MODELLED, 4 PARTNER de 401 linhas. No total, 176 capacidades validadas em relação a referências independentes externas; outras 221 são rotuladas com honestidade como MODELLED e 4 pertencem a PARTNER.Como uma capacidade obtém seu rótulo. Cada linha da matriz de verificação nomeia uma capacidade, a referência independente com a qual ela é verificada, o teste que executa a verificação na integração contínua e o rótulo que resulta. Uma linha só pode ser VALIDATED com uma referência independente externa; caso contrário é MODELLED, ou PARTNER quando um parceiro de hardware é o responsável. Exemplo: SGP4/SDP4, Cowell 6-DOF + perturbações, DO em lote/sequencial, referência independente vetores de verificação SGP4 do AIAA 2006-6753, teste tests/sgp4_verification.rs, rótulo VALIDATED. Contagens ao vivo: 176 VALIDATED, 221 MODELLED, 4 PARTNER de 401 linhas. No total, 176 capacidades validadas em relação a referências independentes externas; outras 221 são rotuladas com honestidade como MODELLED e 4 pertencem a PARTNER.
Rótulo Linhas Significado
VALIDATED 176 uma referência independente externa concorda: dados reais, uma implementação independente ou vetores de referência publicados
MODELLED 221 verificado contra a verdade analítica ou a autoconsistência da simulação, e dito em voz alta
PARTNER 4 de responsabilidade de um parceiro de hardware; o Kshana não tem referência independente para ela

Algumas das verificações: todos os 666 vetores SGP4 (Simplified General Perturbations 4) do AIAA (American Institute of Aeronautics and Astronautics) 2006-6753 até 4,12 mm; o modelo de forças de Cowell até 0,08 m em relação ao Orekit 12,2; o Galileo até 0,61 m e o Swarm-A até 0,10 m em relação a efemérides precisas reais da Agência Espacial Europeia (ESA). Os testes mantêm cerca de 95 % de cobertura de linhas de src/, com um mínimo de 85 % exigido na CI. O registro é docs/VERIFICATION-MATRIX.md, gerado a partir de src/verification.rs: a matriz completa de 401 linhas, e por que cada linha modelada não tem referência independente externa em docs/MODELLED-RATIONALE.md.

Como a validação funciona, a tabela curada de destaques e as figuras de evidência

Validação, reprodutibilidade e honestidade#

  • Todo termo de ruído é calibrado a uma cifra publicada e citada e validado contra a relação padrão (desvio de Allan para relógios; crescimento de erro de navegação por estima de Groves para inercial; a conversão temporização→medição de distância para transferência de tempo). O estado por termo é acompanhado em docs/VALIDATION.md como validated ou not modeled — nada é apresentado como validado sem sê-lo.
  • Reproduzível por construção: scenario + seed + engine version → identical bits. scripts/check-reproducible.sh o impõe; as execuções quânticas e clássicas usam sementes independentes, de modo que seu ruído não é correlacionado.
  • A maturidade é declarada honestamente: as cifras de relógio óptico e de enlace óptico são resultados de alvos / demonstradores em solo, não de voo.

O rótulo de evidência em cada figura#

Cada figura e tabela que uma execução grava diz até que ponto confiar nela e em quais linhas do registro ela se apoia. O JSON de resultado tem uma chave evidence, o SVG do gráfico tem uma linha sob o gráfico (e um elemento <metadata id="kshana-evidence">), e a tabela CSV tem linhas de comentário # evidence: na frente (lidas com comment='#'). Ele nomeia um nível, VALIDATED, MODELLED ou PARTNER, e os ids (VM- e oito dígitos hexadecimais) das linhas da matriz de verificação que a execução exercitou. O nível é o mais fraco dessas linhas, de modo que uma execução que se apoia em uma linha modelada é rotulada MODELLED por mais linhas validadas que haja ao lado; o rótulo nunca pode afirmar mais do que o registro. Linhas, estados e ids são lidos da matriz, não digitados (docs/VERIFICATION-MATRIX.md, docs/SCHEMA.md), e tests/evidence_labels_doc_sync.rs falha se uma figura não tem rótulo ou se um rótulo discorda da matriz.

A validação num relance#

Cada linha é imposta por um teste nomeado na CI. Esta tabela é um destaque selecionado; a matriz completa, verificada por máquina, tem 401 linhas — 176 VALIDATED, 221 MODELLED, 4 PARTNER (src/verification.rs), com as evidências completas (e o que honestamente ainda não é validado) em docs/VALIDATION.md e o artefato kshana-validation-summary.html de cada versão (gerado por cargo run --bin validation_report, atestado pelo SLSA — Supply-chain Levels for Software Artifacts).

A coluna Estado declara o tipo de evidência, de acordo com a escada de validação acima: VALIDATED = verificado contra uma referência independente externa (dados reais, uma biblioteca independente ou vetores de referência publicados); MODELLED = verificado contra a verdade analítica ou a autoconsistência da simulação (sem conjunto de dados externo independente). VALIDATED descreve o método de verificação, não um passa/falha — uma falha honesta contra uma referência independente externa real continua VALIDATED, enquanto uma comparação que nenhuma linha da matriz nomeia como referência independente (o ajuste do LRO — Lunar Reconnaissance Orbiter — acima) é mostrada como MODELLED. As linhas de CI são salvaguardas de processo, não figuras de mérito. Algumas ilhas de dados reais (o relógio de césio medido, o PHASE.DAT do Stable32 e as verificações OPS-SAT/ICGEM em que as entradas brutas não trazem licença de redistribuição) são condicionadas a dados: o teste imprime um aviso de omissão e permanece verde quando a entrada está ausente, e os números públicos de referência são registrados em tests/fixtures/. Reproduza as entradas brutas com o scripts/fetch_*.sh correspondente.

Status Capacidade Concordância Referência / referência independente
VALIDATED Propagação SGP4/SDP4 666/666 vetores, pior 4,12 mm AIAA 2006-6753 (Vallado tcppver.out) + comparação direta com o crate independente sgp4
VALIDATED Referenciais — nutação IAU 2000A/B, cadeia CIO IAU 2006/2000A, ERA bit a bit (X,Y a 1e-14, s a 1e-18, ERA a 1e-12) ERFA/SOFA eraXys06a · eraC2ixys · eraEra00 · eraNut00a/b
MODELLED GCRS→ITRS contra um motor SPICE independente máx. 0.028″ → ≤ 0,86 m no solo, ≤ 3,6 m em órbita GNSS ANISE (NAIF/SPICE em Rust puro), mesmo EOP finals2000A do IERS, 8 épocas 2020–2023 (comparado com esta referência; nenhuma linha da matriz de verificação a nomeia como referência independente externa, de modo que não é rotulado VALIDATED)
MODELLED Geopotencial EGM2008 (grau/ordem 70) aceleração = ∇V a < 1e-6; colapso zonal para o J2 validado Coeficientes EGM2008 da NGA + identidade analítica de ∇V
VALIDATED Síntese de funcionais de gravidade (mapa de navegação assistida por gravidade / sem GNSS) Somigliana GRS80 + γ_e/γ_p a 3.5e-12; mapa de perturbação real do EGM2008 fisicamente plausível (RMS ≈ 26 mGal, d/o 70) Gravidade normal de Somigliana do GRS80 (Moritz 1980, IAG — International Association of Geodesy) + EGM2008 real do ICGEM (tests/icgem_gravity_reference.rs)
VALIDATED Estimadores de Allan (ADEV/MDEV/TDEV/HDEV) + bandas de confiança reproduzem os desvios de referência; as bandas χ² coincidem NIST SP 1065 (Riley), Tabela 31/32 de 1000 pontos
VALIDATED Estimadores de Allan sobre um relógio de césio real medido OADEV/OHDEV a 1e-3 (observado ≤ 3e-5), 16 fatores de média Stable32 sobre um Cs 5071A real contra maser de H, 556.990 pontos (tests/cs5071a_reference.rs, condicionado a dados)
VALIDATED Estimadores de Allan sobre o PHASE.DAT canônico do Stable32 OADEV/MDEV/TDEV a 1e-3 (observado ≤ 5e-5), 139 fatores de média Desvios de referência do Stable32 para o PHASE.DAT (tests/phasedat_reference.rs, condicionado a dados)
MODELLED Modelo de erro de IMU — ARW / VRW / instabilidade de viés recuperado a < 5 % (instabilidade de viés < 15 %) Folha de dados do Analog Devices ADIS16465; perfil de referência do NaveGo
VALIDATED Propagador numérico de Cowell + modelo de forças (níveis conservativos) pior erro de posição 0,08 m ao longo de 24 h, 278 épocas (LEO + GTO) Orekit 12,2 NumericalPropagator/DormandPrince853 (CS GROUP), tests/numerical_cowell_propagator_reference.rs
MODELLED Nível de arrasto de Cowell + entradas absolutas de efemérides do Sol/Lua e de densidade nível de arrasto caracterizado em ≈ 333 m / 24 h; o caso não perturbado coincide com o Kepler de variável universal em nível submétrico, energia/momento ~1e-9 efemérides integradas de baixa precisão + Kepler analítico
MODELLED Lambert · Tsiolkovsky · porkchop ida e volta até a verdade de dois corpos; ΔV < 0.01 % Izzo 2015 · equação do foguete · piso analítico de Hohmann
MODELLED Determinação de órbita (lote de Gauss–Newton) submétrico / mm·s⁻¹ sem ruído; ~2 m com um piso de ruído de 5 m dois corpos + J2 sobre um arco RK4
MODELLED Ajuste do modelo de forças em relação às efemérides precisas do Galileo (arco completo) 0,61 m RMS 3-D, 24 h, d/o-70, apenas forças órbita final ESA0MGNFIN da ESA/ESOC (E11), EOP real finals2000A (comparado com esta referência; nenhuma linha da matriz de verificação a nomeia como referência independente externa, portanto não é rotulado VALIDATED)
MODELLED Ajuste do modelo de forças em relação às efemérides precisas do Swarm-A (dinâmica reduzida) 0,10 m RMS 3-D (limite de nível empírico, não uma medida) órbita precisa SW_OPER_SP3ACOM_2_ da ESA (comparada com esta referência; nenhuma linha da matriz de verificação a nomeia como referência independente externa, portanto não é rotulada VALIDATED)
MODELLED Ajuste do modelo de forças em relação ao LRO lunar (falha assumida) 6,67 m de dinâmica reduzida, acima da meta de 5 m JPL Horizons LRO (NAIF −85) + GRAIL (Gravity Recovery and Interior Laboratory) GRGM660PRIM (comparado com esta referência; nenhuma linha da matriz de verificação a nomeia como referência independente externa, portanto não é rotulado VALIDATED)
MODELLED OD em espaço profundo para Marte (SRIF de dinâmica reduzida) ≈ 0,2 m Mars-LMO (FoM de simulação, não de missão real) OD sintética em malha fechada — validação da maquinaria do estimador
MODELLED Dinâmica de Marte com o Sol como centro em relação ao JPL DE440 137 m em arco de 1 dia (cresce com o arco = n corpos não modelados) JPL DE440 via ANISE (xval/anise-mars-od, condicionado ao kernel) (comparado com esta referência; nenhuma linha da matriz de verificação a nomeia como referência independente externa, portanto não é rotulado VALIDATED)
VALIDATED Posicionamento de ponto único em relação a uma coordenada IGS levantada (observações reais) 5,7 m RMS 3-D / 1,1 m horizontal, SPP de código de dupla frequência livre de ionosfera levantamento da estação IGS ABMF + efemérides de transmissão do GPS, 2018-05-13 (tests/pvt_abmf.rs)
MODELLED Filtro de Kalman unscented (UKF) GNSS/INS fortemente acoplado 0,77 m RMS ao longo de uma passagem LEO de 30 min, incluindo uma interrupção de 120 s deriva por modelo de forças, derivada à mão
MODELLED Navegação por mapa gravitacional sem GPS ~70 km de deriva do INS → ~145 m recuperados meta do Quantum Wayfarer da ESA NAVISP
MODELLED Navegação referenciada ao terreno (TERCOM/SITAN) 70 km de deriva → < 500 m (piso de resolução da grade ~140 m) DEM SRTM .hgt; deriva injetada à mão (verificação não circular)
MODELLED Campo principal IGRF-14 (grau/ordem 13) polo ~80,7°N, dipolo ~29,7 µT, faixa física de 22–67 µT IAGA (International Association of Geomagnetism and Aeronomy) igrf14coeffs.txt (semi-normalização de Schmidt)
MODELLED Modulação do sinal de navegação e rastreamento de código SSC próprio de BPSK = 2/(3·R_c); PSDs de área unitária; jitter de DLL do C/A submétrico a 45 dB-Hz Âncoras de SSC/PSD em forma fechada + fórmula de ruído térmico do DLL de Kaplan e Hegarty
MODELLED Corretor diferencial de halo/NRHO no CR3BP STM = diferenças finitas; a órbita fecha com precisão de máquina; NRHO L2 de 9:2 ≈ 6,57 d / perilúnio ≈ 3.250 km verificação da STM por diferenças finitas + NRHO publicada do L2 meridional de 9:2 (≈ 6,56 d / ≈ 3.370 km) — CR3BP, não uma efeméride real do Gateway
MODELLED Integridade ARAIM de dupla constelação modo de falha em toda a constelação com GPS + Galileo reais EU ARAIM TR (relatório técnico) / DO-316; Celestrak gps-ops 2021-07-28 (comparado com esta referência; nenhuma linha da matriz de verificação a nomeia como referência independente externa, portanto não é rotulado VALIDATED)
VALIDATED Geometria GNSS / DOP (GDOP/PDOP/HDOP/VDOP/TDOP) coincidência em 1e-6 relativo em 8 geometrias (bem condicionada → quase singular) gnss_lib_py 1.0.4 (Stanford NAV Lab) — biblioteca independente (tests/dop_reference.rs)
VALIDATED Métricas de avaliação de detectores de ML (AUC/ROC/confusão/Pd-Pmd/precisão/F1) contagens exatas + < 1e-9 em 5 conjuntos de dados × 24 limiares scikit-learn 1.9.0 (Pedregosa et al., JMLR — Journal of Machine Learning Research — 2011) — biblioteca independente (tests/eval_metrics_reference.rs)
VALIDATED AUC ROC de detecção de anomalias em telemetria real do OPS-SAT da ESA a AUC reproduz o scikit-learn com < 1e-9; AUC do detector de contagem de picos ≈ 0.85 na divisão de teste rotulada scikit-learn roc_auc_score na divisão de teste do OPSSAT-AD (Ruszczak et al. 2025, CC BY 4,0) — telemetria real do OPS-SAT (tests/opssat_ad_reference.rs)
VALIDATED Kernels numéricos de estudo de trade quântico (ajuste NNLS de ADEV · faixas de consistência χ² · Q de relógio de van Loan) NNLS + Q exatos; χ² < 5e-4 com gl operacionais ≥ 48 scipy 1.17.1 — optimize.nnls / stats.chi2.ppf / linalg.expm (tests/scipy_reference.rs)
VALIDATED Métricas de wander de telecomunicações MTIE / MDEV / TDEV (ITU-T G.810/G.823/G.8261/G.811 — recomendações do Setor de Normalização das Telecomunicações da União Internacional de Telecomunicações) MTIE (9 fatores de média, idêntica bit a bit) e MDEV + TDEV (8 fatores, < 1e-9 relativo) na série LCG (gerador congruencial linear) do NIST SP 1065 allantools 2024,06 mtie / mdev / tdev — biblioteca independente (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs)
VALIDATED Métodos de estudo de trade MCDA — as quatro famílias de decisão, nove agregadores validados externamente (WSM · WPM · WASPAS · MOORA · COPRAS · TOPSIS · VIKOR · PROMETHEE II · ELECTRE I) mais a ponderação de prioridades por comparação par a par AHP pontuações / classificações / matrizes de concordância reproduzidas com < 1e-9 pymcdm + pyDecision (bibliotecas MCDA independentes de terceiros) + RI de Saaty (Random Index) / autovalores SciPy-LAPACK (tests/mcda_*_reference.rs)
VALIDATED Envelope Doppler LEO a partir da órbita e da portadora máximo do Iridium dentro de 5 % do valor publicado de ±36 kHz; Xona Pulsar X1 dentro da faixa publicada de 32–34 kHz resultados de teste de PNT LEO da RNTF; Leclère, Marathe & Reid, arXiv:2509,19551 (tests/leo_doppler_reference.rs)
MODELLED Convergência do PPP com aumento por LEO 7,4 → 4,8 / 3,2 / 2,7 / 2,3 min com 60 / 96 / 192 / 288 satélites LEO, monótona; NEES do filtro dentro da faixa χ² tendência comparada com Li et al., J. Geod. 93:749 (2019) (9,6 → 7,0 / 3,2 / 2,1 / 1,3 min); constelações e ruído não reproduzidos
MODELLED Nível de Proteção de Temporização Condicional (erro de tempo não detectado, limitado pelo holdover, sob spoofing) a composição reproduz a recursão de covariância de vários passos de clock_state; calibrada com um spoof real gravado escalares do JammerTest 2024 (Zenodo 15911589) + formas fechadas de van Loan / CUSUM (examples/tpl_jammertest)
MODELLED Pontuação de resiliência de PNT + instabilidade de decisão 35 testes de referência independente derivados à mão; artefato de estudo determinístico byte a byte (semente fixa) Mapeamento DHS RPCF v2.0 + formas fechadas de Dirichlet / Kendall-τ / Hill-N2 — arquiteturas sintéticas, não uma certificação
MODELLED Estudo da lacuna de otimismo por degradação de RF (leis de escala + preditor leave-one-out) significância por nulo de permutação; artefato determinístico byte a byte (5 sementes) corpus sintético baseado em parâmetros — as métricas de avaliação são VALIDATED em relação ao scikit-learn (acima); o estudo é MODELLED
CI Reprodutibilidade entre plataformas entrada idêntica bit a bit + referências golden de forma em 3 SOs (sistemas operacionais) Matriz de CI Linux / macOS / Windows, referências golden SHA-256
CI Cobertura de testes ~95 % de linhas em src/, excluindo src/*_data.rs e src/main.rs, com limite mínimo ≥ 85 % cargo-tarpaulin (motor LLVM)

Como uma capacidade obtém seu rótulo: um requisito corresponde a um módulo em src, a um teste em tests, a uma referência independente externa (conjunto de dados real, implementação de referência independente ou vetores publicados), a um estado — com uma proteção imposta pela CI de que nenhuma capacidade pode ser validada sem uma referência independente externa. Contagens ao vivo: 176 validadas, 221 modeladas, 4 de parceiros, 401 no total
Como uma capacidade conquista seu rótulo — o invariante aplicado pela CI: sem referência independente externa ⇒ não pode ser validada · SVG

Como cada afirmação é sustentada: a coluna de validadas é 176 de 176 ExternalDataset por construção (aplicado pela CI); as linhas modeladas são marcadas com honestidade como InternalConsistency, ReferenceImpl ou ExternalDataset; as linhas de parceiro não têm referência independente do Kshana
Erro de posição do SGP4/SDP4 no pior caso em relação à referência AIAA 2006-6753 por regime, em escala logarítmica: todos os regimes ficam muito abaixo da tolerância da AIAA, com pior caso de 4,12 mm no regime de espaço profundo não ressonante
Acima: toda linha validada é sustentada por um conjunto de dados externo, por construção. Abaixo: o SGP4 coincide com a referência oficial em todos os regimes (pior caso 4,12 mm). SVG · SVG

Estado de verificação das 401 capacidades: 176 validadas (verificadas em relação a uma referência independente externa), 221 modeladas, 4 pertencentes a parceiros
176 validadas · 221 modeladas · 4 de parceiros — SVG

Domínios de capacidade#

Todas as capacidades do mapa público, por domínio, com seu rótulo no registro. A tabela de domínios é escrita por tools/gen_readme_blocks.py a partir de web/capabilities.json, o mesmo arquivo que o mapa de tudo do Studio lê.

Capacidades do Kshana por domínio e maturidade: capacidades públicas validadas e modeladas por domínio, desenhadas a partir de web/capabilities.json por tools/gen_validation_figures.pyCapacidades do Kshana por domínio e maturidade: capacidades públicas validadas e modeladas por domínio, desenhadas a partir de web/capabilities.json por tools/gen_validation_figures.py

A tabela completa, domínio por domínio, com cada capacidade e seu rótulo, está em docs/CAPABILITY-DOMAINS.md.

Instalar#

Uma linha instala a ferramenta de linha de comando: cargo install kshana. Todos os canais distribuem a v0.40.0 a partir do mesmo commit com tag.

Um trecho que cita clientes de IA de terceiros foi omitido aqui; ele está no README.md no GitHub.

Um trecho que cita clientes de IA de terceiros foi omitido aqui; ele está no README.md no GitHub.

Um trecho que cita clientes de IA de terceiros foi omitido aqui; ele está no README.md no GitHub.

Canal Instalar Guia
Experimentar no navegador abra https://kshana.dev Guia do Studio
Linha de comando (Rust) cargo install kshana Uso da linha de comando
Biblioteca Rust cargo add kshana Referência da API em docs.rs
Python pip install kshana Guia da API Python
JavaScript e WebAssembly npm install kshana Guia de npm e WebAssembly
Assistente de IA (servidor MCP, cargo) cargo install kshana-mcp Guia do servidor MCP
Imagem Docker docker run --rm -i ghcr.io/ashfordeou/kshana-mcp Guia do servidor MCP: Docker
Cursor (um clique) Adicionar ao Cursor (npx) · Adicionar ao Cursor (Docker) · npx -y kshana-mcp@0.40.0 Todos os trechos de instalação do MCP
VS Code (um clique) Instalar no VS Code (npx) · Instalar no VS Code (Docker) · npx -y kshana-mcp@0.40.0 Todos os trechos de instalação do MCP
npx npx -y kshana-mcp@0.40.0 Todos os trechos de instalação do MCP
uvx / pipx uvx kshana-mcp==0.40.0 Todos os trechos de instalação do MCP
Homebrew brew install ashfordeOU/tap/kshana-mcp Todos os trechos de instalação do MCP
Scoop scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket && scoop install kshana-mcp Todos os trechos de instalação do MCP
winget winget install AshfordeOU.KshanaMcp Todos os trechos de instalação do MCP
Binário pré-compilado baixe kshana-mcp-<target> da versão publicada e confira-o com SHA256SUMS Todos os trechos de instalação do MCP
Registro oficial de MCP pesquise io.github.ashfordeOU/kshana-mcp Todos os trechos de instalação do MCP
Remoto (HTTP em fluxo), auto-hospedado kshana-mcp --http 127.0.0.1:8080 Guia de auto-hospedagem
Plugin para IDE JetBrains Configurações → Plugins → Marketplace → pesquise "Kshana" (ID do plugin dev.kshana.ide) Guia do plugin
Plugin do Signal K npm install signalk-kshana-trust Guia do plugin do Signal K
Plugin do OpenCPN baixe o tarball do plugin da versão publicada Submissão ao catálogo do OpenCPN
Painel do Grafana importe kshana-grafana-*.json da versão publicada Código-fonte do painel
Imagem de build de referência docker pull ghcr.io/ashfordeou/kshana-reference-build Integrações marítimas

Kshana no JetBrains Marketplace Compila com Rust 1,88 ou mais recente, a rust-version em Cargo.toml

MCP é o Model Context Protocol. Fixe uma versão com cargo install kshana --version 0.40.0, pip install kshana==0.40.0 ou npm install kshana@0.40.0. Para compilar a partir do código-fonte, consulte Instalar e compilar em Referência.

Execute um cenário a partir de Python e de WebAssembly
import json, kshana

toml = open("clock-holdover.toml").read()
result = json.loads(kshana.run(toml))
print(kshana.version(), result["quantum"]["fom"]["holdover_s"], result["classical"]["fom"]["holdover_s"])
# 0.40.0 6600.0 2610.0

Além de run, o módulo expõe run_full (JSON, SVG e o resumo de uma linha de uma só vez), run_typed, validate_toml, list_kinds / scenario_kinds e error_kind; consulte docs/PYTHON_API.md.

O pacote npm é o motor inteiro compilado para WebAssembly. No Node.js, entregue o binário a initSync; em um navegador, await init() o busca (consulte README.npm.md).

import { readFileSync } from "node:fs";
import { createRequire } from "node:module";
import { initSync, run, summary, version } from "kshana";

const wasm = createRequire(import.meta.url).resolve("kshana/kshana_bg.wasm");
initSync({ module: readFileSync(wasm) });

const toml = readFileSync("clock-holdover.toml", "utf8");
const result = JSON.parse(run(toml));
console.log(version(), result.quantum.fom.holdover_s, result.classical.fom.holdover_s);
// 0.40.0 6600 2610
console.log(summary(toml));

Arquitetura#

Um único motor aberto fica no centro, e todas as superfícies o executam: a linha de comando, a biblioteca Rust, Python, WebAssembly e o Kshana Studio, o servidor MCP, a imagem Docker e o plugin do JetBrains. O mesmo arquivo de cenário produz os mesmos bytes em cada uma. O Kshana Pro fica por cima como uma camada separada que depende do motor e nunca o bifurca.

A arquitetura do Kshana: um motor aberto no centro, kshana 0.40.0 sob a AGPL-3.0, com api::run_toml, um despacho tipado sobre todos os tipos de cenário, e o registro de verificação de 401 capacidades (176 VALIDATED, 221 MODELLED, 4 PARTNER). Ao redor, cada superfície executa o mesmo motor: linha de comando (cargo install kshana); biblioteca Rust (cargo add kshana); Python (pip install kshana); WebAssembly + Kshana Studio (npm install kshana); servidor MCP (cargo install kshana-mcp); imagem Docker (ghcr.io/ashfordeou/kshana-mcp); plugin JetBrains (Marketplace: "Kshana"). Abaixo, o Kshana Pro, uma camada proprietária que depende do motor aberto como biblioteca, nunca o bifurca e não acrescenta nenhum modelo físico.A arquitetura do Kshana: um motor aberto no centro, kshana 0.40.0 sob a AGPL-3.0, com api::run_toml, um despacho tipado sobre todos os tipos de cenário, e o registro de verificação de 401 capacidades (176 VALIDATED, 221 MODELLED, 4 PARTNER). Ao redor, cada superfície executa o mesmo motor: linha de comando (cargo install kshana); biblioteca Rust (cargo add kshana); Python (pip install kshana); WebAssembly + Kshana Studio (npm install kshana); servidor MCP (cargo install kshana-mcp); imagem Docker (ghcr.io/ashfordeou/kshana-mcp); plugin JetBrains (Marketplace: "Kshana"). Abaixo, o Kshana Pro, uma camada proprietária que depende do motor aberto como biblioteca, nunca o bifurca e não acrescenta nenhum modelo físico.
Por dentro do motor: as camadas de domínio e o registro de verificação A arquitetura do Kshana em camadas. Cinco portas de entrada (linha de comando, Python, JavaScript e WebAssembly, o servidor MCP e o plugin JetBrains) chegam a um único api::run_toml, um despacho tipado sobre 92 tipos de cenário. Abaixo dele ficam oito camadas de domínio: tempo e referenciais, relógios e temporização, inercial e fusão, GNSS e integridade, astrodinâmica, PNT em LEO, Lua, Marte e espaço profundo, e missões e estudos, sobre um núcleo compartilhado, todas referenciadas cruzadamente pelo módulo de verificação, a matriz de 401 capacidades verificada por máquina, que é a única fonte de verdade de cada rótulo.A arquitetura do Kshana em camadas. Cinco portas de entrada (linha de comando, Python, JavaScript e WebAssembly, o servidor MCP e o plugin JetBrains) chegam a um único api::run_toml, um despacho tipado sobre 92 tipos de cenário. Abaixo dele ficam oito camadas de domínio: tempo e referenciais, relógios e temporização, inercial e fusão, GNSS e integridade, astrodinâmica, PNT em LEO, Lua, Marte e espaço profundo, e missões e estudos, sobre um núcleo compartilhado, todas referenciadas cruzadamente pelo módulo de verificação, a matriz de 401 capacidades verificada por máquina, que é a única fonte de verdade de cada rótulo.

Um motor, muitas portas de entrada. Um único núcleo em Rust (kshana) executa todos os cenários, acessado por uma CLI, uma extensão Python, um módulo WebAssembly no navegador, um servidor MCP para agentes de IA e um plugin de IDE do JetBrains — todos convergindo para um único despacho api::run_toml. Por dentro, os pacotes de sensores se conectam a uma interface comum de modelo de erro; ao lado deles ficam uma camada de referenciais (precessão–nutação IAU 2006/2000A e a redução GCRS↔ITRS baseada no CIO), uma camada numérica/de astrodinâmica (SGP4/SDP4 analítico e um propagador numérico de Cowell com seu modelo de forças EGM2008/perturbações, projeto de manobras e determinação de órbita), uma camada de integridade/GNSS (RAIM/ARAIM, SBAS, o domínio de medição, jamming, cislunar), uma camada de fusão / PNT alternativo (os estimadores GNSS/INS e os correlacionadores de mapas gravitacionais/de terreno/magnéticos), uma camada de espaço profundo e lunar (PNT radiométrico de Marte e o conjunto de PNT lunar, com seu nível de evidência por peça na matriz — tempo LTC, VLBI, OD+relógio conjunta, realização de referencial, volume de serviço, PNT diferencial, interoperabilidade), uma camada de análise de missão (orçamentos de lançamento / reentrada / cobertura / apontamento / passagem / enlace e o ambiente de clima espacial) e a camada aberta de estudos de resiliência e aprendizado de máquina (pontuação de resiliência RPCF, a lacuna de otimismo por degradação de RF e o demonstrador de PNT quântico), cujos artefatos reproduzíveis se apoiam nos kernels validados.

Dois crates independentes, excluídos do workspace, ficam ao lado do núcleo — mcp/kshana-mcp (o servidor MCP, construído sobre o SDK rmcp da edição 2024) e xval/anise-frames (a verificação cruzada de referenciais ANISE/SPICE, que traz dependências MPL-2.0 (Mozilla Public License 2,0)) — mantidos fora do grafo de dependências do crate publicado, de Cargo.lock, do bloqueio de licenças e da compilação MSRV (versão mínima suportada do Rust) pela lista exclude do Cargo.toml raiz. O plugin do JetBrains (ide/jetbrains) é um projeto Kotlin separado. Consulte docs/ARCHITECTURE.md para o conjunto completo de diagramas.

Os diagramas renderizados (fluxo do motor, mapa de módulos, distribuição) estão em docs/ARCHITECTURE.md.

Diagramas#

Os diagramas são fontes Mermaid em docs/diagrams/, renderizadas em SVG e PNG em docs/assets/diagrams/ (tools/render-diagram-chromium.sh <name> no Linux, os outros dois scripts render-diagram nos demais sistemas), e um registro associa cada PNG ao SVG exato de que veio. Testes fixam as contagens que eles declaram. Os gráficos das seções acima são desenhados por ferramentas a partir de execuções do motor; estes mostram como as partes se encaixam.

O sistema: seis portas de entrada (linha de comando, Python, WebAssembly e npm com o Kshana Studio, servidor MCP com plugins e skills, plugin do JetBrains, integrações) chamam um único despacho sobre todos os tipos de cenário, que executa um motor composto de núcleo compartilhado, pacotes de sensores e referenciais, e modelos de domínio, e grava um resultado e um gráfico reproduzíveis
Um despacho, um motor, saída reproduzível · SVG · fonte system-overview.mmd

As superfícies: um motor determinístico offline alimenta a linha de comando, a biblioteca Rust, Python, WebAssembly e npm, e o servidor MCP; o Studio roda na compilação WebAssembly, os comandos de plugin e as skills no servidor MCP, as integrações e os kits de implantação na linha de comando, e o plugin do JetBrains na biblioteca
Todas as superfícies, a partir do mesmo motor · SVG · fonte surfaces.mmd

Dentro de uma execução: um arquivo de cenário com sua semente e sua linha do tempo GNSS alimenta o motor, que a cada passo de tempo evolui o modelo de erro, executa o estimador e pontua as figuras de mérito, e grava um resultado e um gráfico reproduzíveis
O laço interno de uma execução · SVG · fonte engine-flow.mmd

Confiança do receptor: um registro ou fluxo do receptor é ingerido em observáveis por época e nos próprios indicadores do receptor, passa pelos monitores e se torna uma pontuação de confiança consultiva com uma faixa e motivos, que alimenta o Studio, a telemetria, um pacote de evidências assinado, a pontuação do Jammertest e de bench, e o relatório de compliance
De um registro do receptor a uma pontuação de confiança e ao que a usa · SVG · fonte trust-flow.mmd

O ciclo de ida e volta de laboratório: um cenário é exportado com seus eventos e condições de teste, um operador externo ao Kshana reproduz um arquivo em um simulador de laboratório, o registro do receptor é pontuado em relação aos eventos declarados, e o ciclo de ida e volta de evidências vincula o cenário, as condições, os hashes do registro e a pontuação em um pacote assinado
Do cenário ao pacote assinado; o Kshana nunca produz nem reproduz um sinal · SVG · fonte lab-round-trip.mmd

Kshana Studio: o navegador executa localmente o motor compilado para WebAssembly, sem enviar nada, usa cenários incluídos ou um cenário ou registro que você abre, e mostra o resultado na visão Simples, na visão Avançada e nas páginas de tarefas, com exportações salvas pelo usuário
Como o Studio roda, localmente · SVG · fonte studio-flow.mmd

O fluxo de teste e lançamento: verificações locais (formatação, clippy, a verificação de ausência de atribuição, o ratchet de cobertura de documentação e scripts/gate.sh, que executa a suíte completa e execuções repetidas e grava o recibo que o hook de pre-push confere) levam a um pull request apenas de CI e a uma CI completa verde; o proprietário avança main por fast-forward até o commit verde e uma tag anotada é colocada nele depois da verificação de sincronia de versão; o fluxo de lançamento verifica a suíte completa no commit com tag antes de publicar qualquer coisa, compila os binários com um SBOM, somas de verificação e proveniência de compilação, publica no crates.io, PyPI, npm, no registro de contêineres, no registro MCP e no JetBrains Marketplace, consulta cada registro até que sirva a nova versão e dispara a compilação do site a partir da tag; um caminho separado apenas do site dispara o fluxo de páginas com a tag main e é recusado a menos que nada fora de web/ e .github/ tenha mudado desde o último lançamento
Fluxo de teste e lançamento, das verificações locais a um lançamento verificado e ao caminho apenas do site · SVG · fonte release-flow.mmd · docs/RELEASING.md

O mapa de módulos: a linha de comando, Python, WebAssembly, o servidor MCP e o plugin do JetBrains chamam o despacho tipado sobre todos os tipos de cenário, que alcança o núcleo compartilhado, tempo e referenciais, pacotes de sensores, astrodinâmica, integridade, detecção de spoofing, fusão, espaço profundo e lunar, resiliência, e os módulos de árbitro e de benchmark, todos sustentados pela matriz de verificação
Onde o código está · SVG · fonte module-map.mmd

Distribuição: um repositório distribui o crate do núcleo, o servidor MCP, o plugin de IDE e os crates de verificação cruzada para crates.io, PyPI, npm, GitHub Releases, o playground do Pages, o registro de contêineres, o registro MCP e o JetBrains Marketplace, com um arquivo no Zenodo
O que é distribuído onde, e o que o verifica · SVG · fonte distribution.mmd

Assistente de IA#

kshana-mcp é um servidor MCP: seu assistente executa o motor de verdade e lê de volta o seu JSON, em vez de adivinhar a matemática. Cada uma de suas 49 ferramentas é um invólucro fino sobre uma função pública da biblioteca kshana, de modo que nenhuma lógica de simulação fica no servidor.

Instalar o servidor MCP#

Consultivo, não é um equipamento de navegação homologado: o operador continua responsável pela navegação. O servidor roda no seu computador; nada é enviado à Ashforde OÜ.

Um trecho que cita clientes de IA de terceiros foi omitido aqui; ele está no README.md no GitHub.

Um trecho que cita clientes de IA de terceiros foi omitido aqui; ele está no README.md no GitHub.

Um trecho que cita clientes de IA de terceiros foi omitido aqui; ele está no README.md no GitHub.

Canal Comando ou botão Requer Forma fixada
Cursor (um clique) npx (Node) · Docker Node ou Docker kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0
VS Code (um clique) npx (Node) · Docker · Insiders (npx) Node ou Docker kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0
npx npx -y kshana-mcp@0.40.0 Node 18+ kshana-mcp@0.40.0
uvx / pipx uvx kshana-mcp==0.40.0 · pipx run kshana-mcp==0.40.0 Python 3,9+ com uv ou pipx kshana-mcp==0.40.0
Docker docker run -i --rm ghcr.io/ashfordeou/kshana-mcp:0.40.0 Docker ghcr.io/ashfordeou/kshana-mcp:0.40.0
Homebrew brew install ashfordeOU/tap/kshana-mcp brew fórmula para v0.40.0
Scoop scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket e depois scoop install kshana-mcp Scoop (Windows) manifesto para v0.40.0
winget winget install AshfordeOU.KshanaMcp winget (Windows) --version 0.40.0
cargo cargo install kshana-mcp --version 0.40.0 Rust 1,88+ kshana-mcp 0.40.0
Binário pré-compilado a página da versão: kshana-mcp (Linux x86-64), kshana-mcp-<target>[.exe], conferido por SHA256SUMS e gh attestation verify nenhuma v0.40.0
Registro de MCP io.github.ashfordeOU/kshana-mcp (encontrado por clientes que consultam o registro) um cliente que consulta o registro 0.40.0
Remoto (HTTP em fluxo contínuo) kshana-mcp --http 127.0.0.1:8080, hospedado por conta própria: consulte docs/deploy/mcp-http.md seu próprio host v0.40.0

kshana-mcp no Glama, sua pontuação de qualidade de servidor MCP

Um trecho que cita clientes de IA de terceiros foi omitido aqui; ele está no README.md no GitHub.

A configuração por cliente está em docs/integrations.md. O servidor está listado no registro MCP oficial como io.github.ashfordeOU/kshana-mcp.

As 49 ferramentas

Cenários e relatórios

Ferramenta O que faz
run_scenario Executar um cenário a partir de uma definição TOML (Tom's Obvious, Minimal Language)
list_scenario_kinds Os 92 tipos de cenário incorporados com descrições + campos obrigatórios/opcionais — para que o agente possa montar um cenário válido
validate_scenario Verificação prévia: analisa o TOML e detecta seu tipo de cenário, sem executar
list_example_scenarios Os cenários de referência incluídos, como JSON
get_example_scenario O texto TOML de um cenário de referência incluído, byte a byte o arquivo em scenarios/
report_scenario Executar um cenário e devolver seu relatório
animate_scenario Executar um cenário e devolver sua série temporal como uma animação
sky_geometry Geometria do céu sob um horizonte dependente do azimute: os satélites visíveis e ocultos, o DOP, a covariância leste-norte-cima e a elipse de erro horizontal; ou uma predefinição de horizonte com sua procedência

Exportação e interoperabilidade

Ferramenta O que faz
list_export_formats Quais formatos de interoperabilidade se aplicam a um cenário (czml, kml, geojson, stk, sigmf), o motivo quando um não se aplica e a especificação que cada gravador segue
export_interop Exportar um cenário como CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON, efemérides STK (Systems Tool Kit) .e ou SigMF (Signal Metadata
import_route Gravar uma rota GeoJSON LineString em um cenário que percorre uma trilha de pontos de passagem (terrain-nav, terrain-slam, gravity-map, combined-altpnt) e devolver o novo TOML
export_sp3 Exportar a constelação de um cenário orbit como efemérides precisas SP3-c (Standard Product 3, revisão c)
export_omm Exportar os elementos de um cenário orbit como um catálogo OMM (Orbit Mean-elements Message) CCSDS (Consultative Committee for Space Data Systems) 502.0-B-2
export_oem Exportar a série de estados de um cenário orbit como efemérides OEM (Orbit Ephemeris Message) CCSDS 2,0 — a posição TEME (true equator, mean equinox) e
export_table_csv Executar um cenário e devolver sua tabela de reprodutibilidade como CSV (valores separados por vírgula) — a tabela estável byte a byte que a CLI (interface de linha de comando) grava como <scenario>.table.csv
export_test_bench O movimento do veículo e os eventos de um cenário para um simulador GNSS de laboratório (kshana bench-export)

Confiança do receptor e da embarcação

Ferramenta O que faz
assess_receiver_log Avaliar a confiança em um registro de receptor GNSS (sistema global de navegação por satélite) real
assess_vessel_stream Pontuar um trecho limitado de NMEA 0183 (no máximo 2 MiB e 20.000 épocas
assess_vessel_log O registro NMEA 0183 de uma embarcação (no máximo 4 MiB) como execução em lote, com o TOML de sessão declarando os limites da embarcação
create_evidence_pack Um pacote de evidências assinado para uma janela do registro de uma embarcação (kshana receiver-trust evidence)
attach_evidence_timestamp Vincular um token de carimbo de tempo RFC 3161 (base64 dos bytes de .tsr) a um pacote, em memória (kshana evidence attach-timestamp)
verify_evidence_pack Verificar um pacote (kshana evidence verify)
generate_training_nmea NMEA 0183 sintético de ponte para treinamento de tripulação a partir de um TOML nmea-scenario (jamming, arrasto de posição, spoofing de tempo, atraso de replay) com o registro do instrutor (kshana-nmea-training/1)
build_interference_map Um mapa de interferência GNSS a partir de relatórios de posição ADS-B ou AIS em texto CSV (no máximo 4 MiB)
route_exposure A parcela do comprimento de uma rota em células degradadas, não degradadas, não avaliadas e não observadas de um ou mais mapas de interferência, opcionalmente dentro de um intervalo de datas
trust_telemetry Um fluxo de confiança (linhas JSON) ou um resultado de receiver-trust renderizado como texto Prometheus, linhas de syslog CEF ou LEEF, ou uma carga JSON OTLP, com os codificadores de kshana trust-telemetry
jammertest_import Lê o catálogo de testes e o plano de transmissão do Jammertest publicados (NPRA/jammertest-plan, MIT) como verdade programada (kshana jammertest import): os intervalos de uma área de teste tornam-se eventos de confiança do receptor, com o id do catálogo e o ano em cada rótulo. Intervalos planejados, não horários de transmissão registrados; nenhum campo de contato do plano é lido. MODELLED. Veja docs/JAMMERTEST.md.
jammertest_score Pontua um registro de receptor contra esse cronograma (kshana jammertest score): por teste, a latência de detecção, os alarmes perdidos e o tempo de recuperação, e os alarmes falsos fora de todo intervalo. Registros de texto como log, binários (ubx, sbf) como log_base64. Um pacote assinado precisa de uma chave: linha de comando. Somente consultivo; MODELLED.
fit_imu_log Parâmetros de acelerômetro e de giroscópio dos cenários hybrid e fusion ajustados a partir de um registro de IMU estacionária (CSV ou EuRoC) por desvio de Allan, com uma tabela [accel_classical] pronta para colar e o SHA-256 do registro (kshana imu-fit). Texto na entrada, JSON na saída; MODELLED.

IQ GNSS (arquivos do diretório de trabalho; desligado no modo HTTP)

Ferramenta O que faz
iq_signals A configuração da camada de IQ GNSS
iq_info Descrever uma gravação IQ (em fase e em quadratura) no diretório de trabalho sem processá-la
iq_scene Gerar uma cena IQ GNSS com vários satélites no diretório de trabalho (kshana iq scene)
iq_acquire Aquisição por FFT (transformada rápida de Fourier) de um ou mais PRNs (códigos de ruído pseudoaleatório) em uma gravação (kshana iq acquire), opcionalmente após estágios de front-end
iq_track Adquirir e depois rastrear com o banco de DLL/PLL/FLL (malha travada em atraso, fase e frequência) (kshana iq track), com as malhas de um `kshana.loop-desig
iq_frontend Aplicar DSP (processamento digital de sinais) de front-end de receptor e de mitigação de interferência
iq_sweep Reproduzir uma gravação IQ do diretório de trabalho em vários projetos de malha de rastreamento (kshana iq sweep)
iq_monitor Executar os monitores de detecção de interferência e de spoofing sobre uma gravação IQ do diretório de trabalho (kshana iq monitor)
iq_labfit Ajustar o modelo de perda de travamento da malha de rastreamento a execuções de laboratório (kshana iq labfit) a partir de um cenário iq-labfit cujos registros estão em linha (text ou base64
iq_test_conditions Validar um arquivo kshana.test-conditions/1 dado como texto e devolver as condições resolvidas com seu hash
iq_campaign Executar uma campanha de replay em laboratório (kshana iq campaign)
iq_campaign_status O progresso da pasta de saída de uma campanha

Mapeamento de compliance

Ferramenta O que faz
compliance_report O mapeamento do referencial público preenchido a partir de documentos de resultado dados como texto (kshana compliance-report)
compliance_mapping As tabelas estáticas de mapeamento (ou, com sources, os documentos de origem que elas citam, com versões e URLs) em Markdown, iniciadas pela mesma declaração
list_standards_packs Os pacotes de normas (kshana standards-pack list): conjuntos de cenários pontuados para os perfis de teste do referencial DHS Resilient PNT, o IMO MSC.1/Circ.1575 e o ICAO Doc 9849 Apêndice F
run_standards_pack Um pacote executado contra limiares declarados antes da execução: cada teste MET, NOT MET ou NEEDS INPUT; MODELLED, não classifica nenhum produto
lunanet_afs_check O LunaNet Augmented Forward Signal verificado em relação ao LNIS V5 AD1 Volume A (LSIS-AFS V1.0): os códigos em relação às tabelas impressas, ou um fluxo de símbolos em relação ao formato de quadro; o LDPC e o CRC-24Q dos subquadros 2 a 4 não são verificados
create_round_trip_pack O pacote assinado de ida e volta em laboratório: cenário, documento kshana.test-conditions/1, registro do receptor e pontuação, vinculados por hash

Benchmark

Ferramenta O que faz
score_benchmark Uma submissão kshana-bench pontuada contra um arquivo de verdade, ambos em texto JSON (kshana bench score, bench/SPEC.md): o arquivo de resultado com a versão da especificação, a divisão, os hashes de entrada e as métricas da tarefa. MODELLED; descreve um registro ou corpus, nunca um produto.
render_leaderboard Arquivos de resultado do kshana-bench renderizados como a página estática de classificação (texto HTML), cada um validado antes.

Edições#

O motor inteiro é gratuito. O Kshana Pro e os estudos sob medida são para programas que precisam de mais, e todo caminho pago começa com uma mensagem: não há preços aqui.

Gratuito Kshana Pro Estudo sob medida
O que é todo o motor aberto, todos os 92 tipos de cenário, sem restrição de recursos uma camada proprietária sobre o mesmo motor, sob contrato um estudo de resiliência de PNT MODELLED do seu sistema, feito para você
Licença AGPL-3.0 (GNU Affero General Public License, versão 3), ou uma licença comercial proprietário contrato
Como começar instale ou abra kshana.dev solicite uma avaliação do Pro solicite um estudo

O que é o Pro, nas palavras de docs/PRO.md:

Um superconjunto estrito do Kshana aberto. O Pro depende do motor aberto como biblioteca e nunca o bifurca. Todo tipo de cenário aberto roda no Pro sem alterações, e um cenário aberto roda no Pro sem nenhuma licença.

Nenhuma física nova. O Pro não acrescenta nenhum modelo físico e não altera nenhum. Todo número do Pro vem de execuções do motor aberto, de modo que uma figura do Pro é tão confiável quanto o tipo de cenário aberto de que veio, e nunca mais.

O Pro responde às próximas perguntas de um programa: qual projeto levar ao voo (um otimizador de projeto e sua fronteira de Pareto), quão segura é a resposta (incerteza e sensibilidade) e se a missão atende aos seus requisitos (um dossiê de missão, rastreabilidade de requisitos, estudos de trade, uma verificação de regressão de cenários, gêmeos digitais de relógio, um dossiê de estudo e um serviço local). Ele também acompanha uma campanha de figuras e faz um pipeline falhar quando uma delas piora, testa planos de sinal candidatos em relação aos sinais abertos de navegação por satélite nos dois sentidos (coexistência espectral) e enfileira estudos em um serviço local de tarefas com um registro de entregas encadeado por hash. Cada um está descrito, com o que produz e o que não faz, em docs/PRO.md. Nada que o Pro produz é uma certificação, e um estudo sob medida também não é uma certificação.

O que o Kshana Pro lê do motor aberto, e o suporte da Ashforde® OÜ

Sobre o que o Kshana Pro se apoia. Cada parte do Pro trabalha a partir do motor aberto e o deixa inalterado:

  • O otimizador de projeto, o estudo de incerteza e o dossiê de missão executam cenários do motor aberto pela interface pública do motor e calculam cada número a partir dos resultados das execuções. Cada saída mantém o nível VALIDATED, MODELLED ou PARTNER que o motor aberto deu a cada figura, nunca um superior.
  • Gêmeos digitais de relógio usam o modelo de relógio do motor aberto e seu estimador de desvio de Allan: um gêmeo é calibrado ao orçamento de Allan publicado do dispositivo e depois verificado estimando o desvio de Allan do gêmeo com o estimador aberto.
  • Estudos de trade executam cada opção de arquitetura como um cenário do motor aberto, sem alterações, e classificam as opções por uma figura de mérito lida do resultado de cada execução.
  • O acompanhamento de campanha lê suas figuras dos resultados de execuções do motor aberto dos cenários de um pacote e as compara com a execução anterior que passou.
  • A coexistência espectral lê cada número físico de execuções do motor aberto dos tipos leo-signal e constellation-design, e acrescenta apenas a soma sobre os satélites à vista e a classificação dos planos.
  • O serviço local de tarefas executa cenários abertos e do Pro pelo mesmo motor e armazena cada resultado como a execução o devolveu.
  • Pacotes de evidências registram, para cada execução, o hash do cenário que o motor aberto carimba em seu resultado, de modo que uma figura em um pacote possa ser reproduzida executando-se novamente o seu cenário.
  • Ferramentas de engenharia de sistemas e de programa. As ferramentas de engenharia de sistemas baseada em modelos (MBSE) e de programa do Kshana Pro conferem os requisitos de um programa com execuções do motor aberto: importam requisitos como valores separados por vírgula (CSV), ou como um subconjunto documentado do Requirements Interchange Format (ReqIF) ou do texto da Systems Modeling Language versão 2 (SysML v2), avaliam cada critério de aceitação, com sua unidade, em relação aos valores que uma execução gravou, e produzem uma matriz de referência cruzada de verificação (VCRM), um modelo SysML v2, um relatório de impacto de mudanças e um pacote de evidências offline. Elas não reexecutam nem recalculam nada, e leem apenas o que o motor aberto publica: o result.json de cada execução (os campos que um critério nomeia, suas unidades, o carimbo de reprodutibilidade com hash do cenário, semente, versão do motor e versão do esquema, e o rótulo e os níveis das figuras da execução), seu report.json (tipo de cenário, registro de reprodutibilidade e rótulos de capacidade), o arquivo de cenário (seu hash, tipo de cenário, semente e parâmetros), o esquema de unidades de campo (a unidade, a procedência e o nível de evidência de cada campo) e a matriz de verificação (o rótulo VALIDATED, MODELLED ou PARTNER de cada capacidade).

Suporte e serviços profissionais#

O Kshana é gratuito e de código aberto sob a AGPL-3.0 e desenvolvido e mantido profissionalmente pela Ashforde® OÜ (Estônia). O motor aberto é completo e utilizável por si só. Para organizações que precisam de mais, a Ashforde® OÜ oferece:

  • Suporte comercial e integração — incorporação do Kshana à sua cadeia de ferramentas, cenários personalizados e correções prioritárias.
  • Modelos de sensor sob medida — calibrados ao seu hardware, incluindo modelos de resiliência sujeitos a controle de exportação mantidos em uma camada privada.
  • Kshana Pro — ferramentas proprietárias de engenharia de sistemas baseada em modelos (MBSE) e de programa que conferem os requisitos de um programa com execuções do motor aberto e produzem uma matriz de referência cruzada de verificação (VCRM), um modelo Systems Modeling Language versão 2 (SysML v2), um relatório de impacto de mudanças e um pacote de evidências offline. Elas não reexecutam nada e leem apenas as saídas publicadas do motor: o result.json e o report.json de cada execução, o arquivo de cenário, o esquema de unidades de campo e os rótulos da matriz de verificação (a lista completa está em Edições).
  • Ferramentas do Kshana Pro para projeto, incerteza e missão — a fronteira de Pareto de um espaço de projeto, incerteza e sensibilidade ao longo de milhares de execuções, e um dossiê de missão com um único comando, com matriz de verificação e um PDF; consulte docs/PRO.md.
  • Acompanhamento de campanha, coexistência espectral e serviço de tarefas do Kshana Pro — um pipeline que falha quando uma figura monitorada piora, planos de sinal testados em relação aos sinais abertos de navegação por satélite nos dois sentidos e uma fila local de tarefas com um registro de entregas encadeado por hash; consulte docs/PRO.md.
  • Treinamento e consultoria em análise de desempenho de PNT quântico/clássico.

Este é o modelo de núcleo aberto: o motor é, e continua sendo, licenciado de forma aberta; o negócio que o sustenta é conhecimento especializado, suporte e as extensões proprietárias — não taxas de licença. Contato: contact@ashforde.org · ashforde.org.

Pesquisa#

Os estudos construídos sobre o motor aberto são publicados no arXiv. Cada um nomeia o comando do motor por trás dele, de modo que seus números possam ser regenerados a partir de um cenário ou exemplo de estudo versionado.

Pesquisa construída sobre o motor aberto: seis artigos no arXiv, cada cartão nomeando o artigo, sua data e categoria, e o comando do motor que regenera seus números. Os mesmos seis artigos, com links e comandos, estão na tabela abaixo.Pesquisa construída sobre o motor aberto: seis artigos no arXiv, cada cartão nomeando o artigo, sua data e categoria, e o comando do motor que regenera seus números. Os mesmos seis artigos, com links e comandos, estão na tabela abaixo.
Artigo O que ele mostra Comando do motor
Anticipating the Optimism Gap: Predicting Distribution-Shift Degradation of RF-Impairment Detectors from In-Distribution Statistics
arXiv:2606,22054 · doi:10.48550/arXiv.2606.22054
A queda na pontuação de um detector de interferência GNSS quando as condições mudam pode ser prevista apenas a partir de estatísticas dentro da distribuição, em uma bancada sintética aberta e depois em gravações de campo abertas. cargo run --release --example optimism_study -- paper-artifacts/optimism-study.json
A Conditional Timing Protection Level: Holdover-Limited Undetected Time Error Under GNSS Spoofing
arXiv:2606,24210 · doi:10.48550/arXiv.2606.24210
Um receptor de temporização GNSS sob spoofing não tem um limite incondicional finito para o erro de tempo não detectado, de modo que o artigo apresenta um limite condicional, calibrado em um spoof gravado pelo ar da campanha pública JammerTest 2024. cargo run --release --example tpl_jammertest
How Stable Is a PNT Resilience Score? Decision-Instability of Single-Number Resilience Ratings under Framework-Aligned Weighting
arXiv:2607,05415 · doi:10.48550/arXiv.2607.05415
Uma única pontuação composta de resiliência é uma base estável para uma decisão apenas quando um projeto domina; quando os projetos disputam, só a reponderação já pode mudar o vencedor. cargo run --release --example resilience_report -- paper-artifacts/resilience-study.json
Earth-baseline VLBI restores the observability of a lunar surface station in joint orbit-and-clock determination
arXiv:2607,02566 · doi:10.48550/arXiv.2607.02566
A medição de distância dentro de uma constelação lunar deixa a posição absoluta de uma estação de superfície inobservável; um atraso de interferometria de linha de base muito longa (VLBI) vindo da Terra a restaura quando a constelação é esparsa e a refina quando é rica. o tipo de cenário lunar-joint-od-clock: kshana example lunar-joint-od-clock > s.toml && kshana s.toml
The Cost of Lunar South-Polar Geometry, and Surface Beacons as the Efficient Fix: A Dilution-of-Precision Analysis
arXiv:2607,06212 · doi:10.48550/arXiv.2607.06212
Constelações planejadas de quatro a seis satélites dão uma geometria ruim no polo sul lunar, e alguns faróis de medição de distância na superfície a corrigem a um custo muito menor do que mais satélites. o tipo de cenário lunar-beacon: kshana example lunar-beacon > s.toml && kshana s.toml
Cislunar navigation is an observability problem: arc-length thresholds, Gramian conditioning, and the Doppler lever
arXiv:2610,23871 · doi:10.48550/arXiv.2610.23871
A diluição de precisão é indefinida para o rastreamento cislunar apenas por distância, porque a velocidade é inobservável em um instante, de modo que o artigo usa o Gramiano de observabilidade em quatro órbitas retrógradas distantes planares: apenas distância tem posto 2 de 4 em um instante e precisa de um arco de cerca de 2,09 h para se tornar totalmente observável, com o condicionamento melhorando à medida que o arco se alonga; a taxa de variação da distância (Doppler) dá posto 4 instantaneamente; e coestimar uma estação com os estados e relógios dos satélites continua com deficiência de posto de um, a menos que se acrescente um observável interferométrico externo. Os requisitos pertencem a orçamentos de comprimento de arco, de condicionamento e de tipo de medição, não ao DOP. o tipo de cenário cislunar-observability: kshana scenarios/cislunar-observability.toml (seu irmão cislunar-arc-recovery testa o limiar com um estimador independente por diferenças finitas)

Os três exemplos de estudo gravam artefatos determinísticos byte a byte (sementes fixas) que registram a versão do motor, as sementes e um hash de configuração. Os três artigos lunares e cislunares são construídos sobre o conjunto lunar (o nível de evidência de cada parte está na matriz de verificação); suas afirmações de geometria e de diluição de precisão também são conferidas de forma cruzada com referências independentes separadas em tests/validate_p*.rs. Mais em Artefatos de estudo reproduzíveis em Referência.

Citar#

Se você usar o Kshana em trabalho acadêmico ou técnico, cite a versão que usou, com o cenário e a semente. CITATION.cff contém os metadados legíveis por máquina, e o GitHub exibe a partir dele um botão "Cite this repository". Cada versão é arquivada no Zenodo; o DOI (Digital Object Identifier) de conceito 10.5281/zenodo.20528627 sempre aponta para a versão mais recente.

Baweja, C. (2026). Kshana — a PNT-resilience simulator with quantum-sensor performance models. Ashforde OÜ. https://doi.org/10.5281/zenodo.20528627

Os artigos acima:

Baweja, C. (2026). Anticipating the Optimism Gap: Predicting Distribution-Shift Degradation of RF-Impairment Detectors from In-Distribution Statistics. arXiv:2606,22054. https://doi.org/10.48550/arXiv.2606.22054

Baweja, C. (2026). A Conditional Timing Protection Level: Holdover-Limited Undetected Time Error Under GNSS Spoofing. arXiv:2606,24210. https://doi.org/10.48550/arXiv.2606.24210

Baweja, C. (2026). How Stable Is a PNT Resilience Score? Decision-Instability of Single-Number Resilience Ratings under Framework-Aligned Weighting. arXiv:2607,05415. https://doi.org/10.48550/arXiv.2607.05415

Baweja, C. (2026). Earth-baseline VLBI restores the observability of a lunar surface station in joint orbit-and-clock determination. arXiv:2607,02566. https://doi.org/10.48550/arXiv.2607.02566

Baweja, C. (2026). The Cost of Lunar South-Polar Geometry, and Surface Beacons as the Efficient Fix: A Dilution-of-Precision Analysis. arXiv:2607,06212. https://doi.org/10.48550/arXiv.2607.06212

Baweja, C. (2026). Cislunar navigation is an observability problem: arc-length thresholds, Gramian conditioning, and the Doppler lever. arXiv:2610,23871. https://doi.org/10.48550/arXiv.2610.23871

Licença#

O Kshana tem licença dupla: a GNU AGPL-3.0-only (LICENSE), ou uma licença comercial da Ashforde® OÜ para integração fechada à qual a AGPL não se adapta. LICENSING.md explica qual se aplica. As contribuições são licenciadas na entrada sob a AGPL e também concedem à Ashforde® OÜ o direito de incluí-las na edição comercial; assine cada commit com git commit -s (consulte CONTRIBUTING.md). "Kshana" e suas marcas são marcas registradas da Ashforde® OÜ: a licença cobre o código, não o nome, portanto renomeie os forks.

Referência#

O material longo, recolhido. Todos os documentos estão listados em Documentação.

Instalar e compilar a partir do código-fonte

Instalar e compilar#

Requer uma cadeia de ferramentas Rust (≥ 1,88, o rust-version em Cargo.toml; desenvolvido em 1,93).

git clone https://github.com/ashfordeOU/kshana
cd kshana
cargo build --release
cargo test          # all tests pass
Uso: a linha de comando por completo

Uso#

Execute qualquer cenário; a CLI despacha pelo campo kind do cenário e grava <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html e <scenario>.report.json ao lado dele — além de <scenario>.table.csv para os tipos de cenário que publicam uma tabela. O relatório (uma página HTML (HyperText Markup Language) e um documento JSON com o mesmo conteúdo) traz um resumo executivo, cada entrada com sua unidade, os resultados e gráficos, as tabelas de varredura, Monte Carlo ou cadeia de uma campanha, uma linha do tempo de eventos, o rótulo VALIDATED / MODELLED / PARTNER e a origem de cada capacidade usada pela execução, o que não é modelado e um registro de reprodutibilidade (versão do motor, resumos Secure Hash Algorithm 256-bit (SHA-256), semente, plataforma e o comando exato). Ele é impresso como um arquivo PDF (Portable Document Format) limpo a partir do navegador em papel A4 ou Carta; o motor não grava nenhum PDF por conta própria. Consulte docs/REPORTS.md.

cargo run -- scenarios/clock-holdover.toml
cargo run -- scenarios/imu-deadreckoning.toml
cargo run -- scenarios/timetransfer.toml
cargo run -- scenarios/hybrid-pnt.toml
cargo run -- scenarios/orbit-gnss-challenged.toml
cargo run -- scenarios/orbit-sgp4-gps.toml
cargo run -- scenarios/orbit-rinex.toml
cargo run -- scenarios/integrity-raim.toml

# Export a propagated constellation to an SP3-c precise-ephemeris file:
cargo run -- scenarios/orbit-sgp4-gps.toml --export-sp3 gps.sp3

# Export the constellation's mean elements to a CCSDS OMM catalogue (one OMM
# message per TLE-defined satellite, with its real NORAD id / COSPAR designator):
cargo run -- scenarios/orbit-sgp4-gps.toml --export-omm gps.omm

# Export the velocity-carrying state to a CCSDS OEM 2.0 ephemeris (GMAT/Orekit/STK):
cargo run -- scenarios/orbit-sgp4-gps.toml --export-oem gps.oem

# Export the geometry for a globe, a map or a mission-analysis tool: CZML, KML,
# GeoJSON, STK .e, or SigMF for the spectrum kind (every format that applies):
cargo run -- scenarios/jamming-demo.toml --export all

--export <czml|kml|geojson|stk|sigmf|all|list> grava ao lado do cenário CZML (a Cesium Language), KML (Keyhole Markup Language), GeoJSON (Request for Comments 7946), efemérides .e do Ansys STK (Systems Tool Kit) e gravações SigMF (Signal Metadata Format), e --import-route <route.geojson> injeta uma linha GeoJSON nos tipos de cenário que percorrem uma trilha. Cada formato é validado em relação à sua especificação publicada, e um cenário ao qual um formato não se aplica diz por quê: consulte docs/INTEROP.md.

Outros modos da CLI — verificar um cenário com lint, fornecer dados reais de orientação da Terra ou executar uma suíte inteira:

# Lint a scenario without running it (checks the kind + required fields):
cargo run -- --validate scenarios/integrity-raim.toml

# Feed a real IERS Earth-orientation file (finals2000A) for frame precision:
cargo run -- scenarios/orbit-sgp4-gps.toml --eop tests/fixtures/agency/eop/finals2000A_2022001.txt

# Run a SUITE of scenarios into one aggregated, stamped study artifact
# (writes <suite>.study.json + <suite>.study.html next to the manifest):
cargo run -- --study scenarios/quantum-pnt-demonstrator.suite.toml

# Animate a run's time series: an animated SVG, a self-contained HTML player, and a
# numbered SVG frame sequence with manifest.json (see docs/ANIMATION.md):
cargo run -- scenarios/campaign-jam-spoof-holdover-integrity.toml --animate all

Exportação de animação. --animate svg|html|frames|all grava <scenario>.animation.svg (keyframes de Cascading Style Sheets (CSS), sem script), <scenario>.animation.html (reproduzir, pausar, arrastar, velocidade e painéis sincronizados, sem nenhum recurso externo) e <scenario>.frames/ (frame_0000.svg, … mais manifest.json com os quadros por segundo e a duração). Uma campanha reproduz suas fases e alarmes, uma execução de espectro sua cascata; o tema segue prefers-color-scheme e prefers-reduced-motion mostra a imagem final. Ele renderiza as amostras da própria execução, idênticas byte a byte em uma nova execução, e não acrescenta nenhuma evidência. Consulte docs/ANIMATION.md.

Um manifesto de suíte é um pequeno arquivo TOML (Tom's Obvious, Minimal Language) — um title e uma matriz scenarios = [ … ] de caminhos de cenário — que o motor executa em sequência, reunindo cada resultado (com seus rótulos MODELLED / VALIDATED) em um único artefato de estudo autodescritivo. Consulte scenarios/quantum-pnt-demonstrator.suite.toml.

Papel de interoperabilidade. O Kshana é a camada de simulação de desempenho que fica ao lado da cadeia de ferramentas de pós-processamento, e não uma substituta dela: alimente sua saída RINEX no RTKLIB ou no gLAB para obter uma solução de posição e use sua saída SP3 como produto de órbita precisa para ferramentas como o Ginan — o Kshana responde que resiliência uma dada arquitetura de PNT proporciona antes de você ter sinais reais, em formatos que essas ferramentas já ingerem (--export-sp3, ou export_sp3 = true em um cenário orbit, grava <scenario>.sp3). A mesma órbita pode ser publicada como elementos médios CCSDS OMM da trilha de normas (--export-omm, ou export_omm = true, grava <scenario>.omm) — uma mensagem OMM 502,0 KVN (notação palavra-chave = valor) por satélite definido por TLE, trazendo o número de catálogo NORAD (North American Aerospace Defense Command) real de cada objeto, o designador internacional COSPAR (Committee on Space Research) e a época, para qualquer consumidor que entenda OMM, em vez de um conjunto de elementos de duas linhas sob medida.

Exemplo de saída (holdover de relógio — observe como as figuras de mérito de Integridade e Segurança são relatadas):

scenario 5ba83a232b94 | quantum holdover 6600s p95 1.20e-4ns integrity 1.000 security n/a (no attack) | classical holdover 2610s p95 19.7ns integrity 1.000 security n/a (no attack)
wrote scenarios/clock-holdover.result.json, scenarios/clock-holdover.chart.svg, scenarios/clock-holdover.report.html, and scenarios/clock-holdover.report.json

O erro de temporização do percentil 95 (p95) do relógio óptico é 1.20e-4 ns: o resumo imprime valores pequenos com algarismos significativos em vez de arredondá-los para 0.0. security lê n/a (no attack) porque este cenário não configura nenhum ataque, portanto não há nada a detectar. O resultado JSON ainda traz o limite analítico de detectabilidade de spoofing de cada relógio em fom.security (0,997 para o relógio óptico, 0,000 para o relógio atômico em escala de chip, cujo próprio ruído na janela de monitoramento excede a especificação de 20 ns), e seu bloco figure_tiers marca essa figura como applicable: false. O tipo de cenário spoof pontua a detecção contra um ataque injetado. figure_tiers também dá a cada figura relatada o seu nível de verificação — VALIDATED (verificado em relação a uma referência independente externa) ou MODELLED — e a linha da matriz de verificação de onde o nível é lido. O cenário de órbita relata adicionalmente um bloco de geometria — fração de amostras com solução e melhor/mediana diluição de precisão de posição (PDOP) e exatidão de posição — ao lado do resultado do relógio.

Leia estes dois números com atenção. security é um limite analítico de detectabilidade de spoofing derivado da estabilidade de cada relógio — só tem significado diante de um cenário de spoofing configurado e não é um detector RAIM com vários satélites. integrity aqui é a autoconsistência do filtro (fração das amostras de interrupção dentro do seu próprio limite k-sigma), não uma figura de integridade HPL/VPL de aviação. Consulte docs/INTEGRITY.md.

Para integridade autônoma genuína do receptor, o tipo de cenário integrity (scenarios/integrity-raim.toml) executa RAIM real de snapshot e de separação de soluções (estilo ARAIM) sobre a geometria propagada da constelação: ele calcula níveis de proteção horizontal/vertical (HPL/VPL) por época e relata a fração de épocas que atendem aos limites de alerta configurados, com um diagrama de integridade de Stanford para classificação de erro versus PL (nível de proteção).

Artefatos de estudo reproduzíveis

Quatro estudos abertos regeneram, cada um, um artefato determinístico byte a byte (semente fixa) com um único comando — os números por trás dos estudos de cruzamento quântico versus clássico, de lacuna de otimismo por degradação de RF, de pontuação de resiliência de PNT e de nível de proteção de temporização:

# Quantum-vs-classical resilience crossover map (writes paper/crossover/*.json):
cargo run --release --bin crossover_study -- paper/crossover

# RF-impairment optimism-gap study (13-detector panel, scaling laws, LOO predictor):
cargo run --release --example optimism_study -- paper-artifacts/optimism-study.json

# Framework-aligned PNT-resilience scoring + decision-instability study:
cargo run --release --example resilience_report -- paper-artifacts/resilience-study.json

# Conditional Timing Protection Level, calibrated on a real recorded spoof:
cargo run --release --example tpl_jammertest

Cada artefato registra a versão do motor, as sementes e um hash de configuração, e traz um rótulo honesto MODELLED/VALIDATED. As sondas com dados reais (*_probe) executam o mesmo pipeline sobre gravações que você fornece localmente; nenhum conjunto de dados é distribuído no repositório. O estudo da lacuna de otimismo por degradação de RF está descrito no preprint arXiv:2606,22054, e o nível de proteção de temporização condicional (tpl_jammertest acima) no preprint arXiv:2606,24210 (consulte Citar).

Os estudos publicados de PNT lunar (arXiv:2607,06212 DOP com faróis de superfície, arXiv:2607,02566 observabilidade por VLBI e arXiv:2610,23871 observabilidade cislunar por comprimento de arco) têm suas afirmações de geometria, de diluição de precisão, de predição em tempo real de referencial / parâmetros de orientação da Terra (EOP), de órbitas retrógradas distantes e de medição de distância por RF conferidas de forma cruzada e independente em tests/validate_p*.rs com referências independentes separadas (scipy.special.j1, uma solução de DOP independente em NumPy (HᵀH)⁻¹, uma nova leitura em NumPy das mesmas linhas finals2000A do IERS e o NASA/JPL Three-Body Periodic Orbit Database). Estas são verificações de regressão adicionais sobre o conjunto lunar modelado; elas não alteram a contagem da matriz verificada por máquina.

Formato de cenário

Formato de cenário#

Os cenários são TOML declarativo. Um kind de nível superior seleciona o pacote — cinquenta ao todo (clock é o padrão se omitido): inertial, timetransfer, hybrid, hybrid-ukf, fusion, gnss-ins, orbit, ephemeris, gnss-sim, integrity, lunar-integrity, lunar-time-offset, spoof, spoof-detect, jamming, sweep, sweep-nd, gravity-map, terrain-nav, terrain-slam, combined-altpnt, pvt, mars-pnt, impairment-eval (bancada de avaliação de detecção de degradação de RF por aprendizado de máquina — corpus sintético rotulado + arcabouço de ROC/AUC independente do detector + lacuna de otimismo dentro/fora da distribuição), quantum-trade (trade quântico versus clássico de PNT com ingestão de ADEV medido + envelope de resiliência sem GNSS; MODELLED), space-weather (índices solares/geomagnéticos + temperatura exosférica de Jacchia-71 + densidade termosférica dirigida pela atividade sobre a atmosfera estática; MODELLED), oem-interop (ponte de importação/ida e volta de OEM CCSDS para efemérides do GMAT/Orekit/STK; MODELLED), o trio de análise de missão launch-window (azimute de lançamento de dois corpos / mudança de plano / oportunidades), reentry (corredor de reentrada balística de Allen-Eggers), eo-coverage (geometria de faixa / GSD / acesso / revisita de observação da Terra), space-packet (enquadramento de Space Packet TM/TC — telemetria/telecomando — CCSDS 133,0 — leiaute exato de bits, ida e volta verificada) e attitude-budget (torque de gradiente gravitacional em 3 graus de liberdade + orçamento de erro de apontamento RSS), passes (predição de passagens de nascer/pôr em estação terrestre — AOS/TCA/LOS, elevação máxima, acesso) e link-budget (equação de enlace CCSDS/DSN de sentido único — FSPL / Eb·N₀ / margem / fechamento); telecom-timing (erro de tempo em holdover, MTIE e TDEV verificados em relação a máscaras ITU-T); spectrum (toda a banda L do GNSS como uma única densidade espectral de potência: uma cascata de frequência por tempo sob uma linha do tempo roteirizada de jammer de onda contínua, banda estreita, chirp ou ruído casado, razão jammer-sinal por banda e densidade efetiva de portadora para ruído a partir do coeficiente de separação espectral, e entrada e saída de gravações Signal Metadata Format (SigMF) com estimativas espectrais de Welch; os espectros de sinal VALIDATED em relação a valores de manual, o cenário de jammer MODELLED; consulte docs/SPECTRUM.md; o mesmo tipo de cenário desenha painéis das bandas UHF, S e C com sinais projetados de órbita baixa da Terra); leo-signal (projetos de sinais de posicionamento, navegação e temporização em órbita baixa da Terra para qualquer sistema: espectros limitados em banda, jitter de rastreamento de código e exatidão de medição de distância, busca e tempo de aquisição, separação espectral em relação a GPS e Galileo, tolerância a jammer e um trade de banda UHF a C, a partir de predefinições públicas como Xona Pulsar, Iridium, Starlink e CentiSpace ou de projetos em linha; as formas fechadas e o Doppler LEO VALIDATED, os projetos MODELLED; consulte docs/LEO-SIGNAL.md); solar-system (o Sol, os planetas, Plutão, a Lua e sete luas principais em uma época — posições, constantes, tempos de luz e trajetórias orbitais; posições dos planetas VALIDATED em relação ao JPL Horizons) e body-pnt (posicionamento em torno de qualquer um desses corpos com uma constelação de navegação local e um enlace de espaço profundo a partir da Terra; MODELLED); campaign (tipos de cenário existentes compostos em uma linha do tempo de missão encadeada com o estado passado entre as fases, uma varredura de parâmetros, um conjunto Monte Carlo com semente, ou vários cenários sob uma condição compartilhada; MODELLED, consulte docs/CAMPAIGNS.md); constellation-design (padrões Walker delta e estrela, listas de elementos e projetos de várias camadas com predefinições de GPS, Galileo, BeiDou e GLONASS, e cobertura e diluição de precisão sobre uma grade de latitude/longitude; o gerador e o DOP global do GPS VALIDATED em relação aos documentos de serviço publicados, consulte docs/CONSTELLATION-DESIGN.md); leo-pass (uma passagem de satélite de posicionamento, navegação e temporização (PNT) em órbita baixa da Terra (LEO) e seu orçamento de enlace banda a banda, a partir de qualquer constelação e de qualquer projeto de sinal: ângulos de visada, Doppler e taxa de Doppler, perdas ITU-R por chuva, gases, cintilação e penetração em edifícios, densidade de portadora para ruído em relação aos satélites GNSS MEO à vista, a ionosfera de primeira ordem e os pares livres de ionosfera, e um orçamento de solução de baixa energia, sondagem da ionosfera a partir de cada par de bandas, e monitores de spoofing por consistência de Doppler e da geometria da passagem e por consistência entre bandas; os termos ITU-R e o envelope Doppler de usuário estático VALIDATED, a passagem MODELLED, consulte docs/LEO-PASS.md); leo-navmsg (a mensagem de efemérides e de relógio transmitida por um satélite de PNT em órbita baixa da Terra (LEO), para qualquer órbita e portadora: um ajustador de uma órbita verdadeira integrada para o conjunto kepleriano do Galileo, esse conjunto com polinômios de correção ao longo da trajetória, transversais e radiais, o modelo de 22 parâmetros de Liu et al. 2025 ou o polinômio ECEF de relógio zero ATOMIC; erro de distância do sinal no espaço (SISRE) em função do intervalo de ajuste e do período de atualização, uma verificação de continuidade de atualização no meio da passagem, o formato binário próprio e documentado do Kshana com uma verificação de redundância cíclica CRC-24Q e um orçamento de quantização, e um bloco no estilo RINEX-4 rotulado como extensão do Kshana; os pesos do SISRE, o algoritmo de usuário do Galileo e o CRC-24Q VALIDATED, os ajustes MODELLED; predefinições opcionais para Xona Pulsar, Iridium, Starlink, CentiSpace, um sistema representativo em banda C, ATOMIC e Celeste IOD; consulte docs/LEO-NAVMSG.md); o trio de PNT fundido MEO + LEO leo-pvt (posicionamento Doppler a partir da taxa de variação da distância em órbita baixa da Terra (LEO), soluções conjuntas de pseudodistância GNSS + LEO com vieses entre sistemas e o DOP em função do número de satélites LEO, cobertura polar e ártica, e transferência de tempo LEO para UTC — sobre qualquer constelação, com predefinições opcionais como sinais de oportunidade Xona Pulsar, Iridium e Starlink; o envelope Doppler LEO VALIDATED em relação a valores publicados do Iridium e da Xona), leo-ppp (convergência do posicionamento por ponto preciso apenas com GNSS e com aumento por LEO, comparada com Li et al. 2019) e ntn-positioning (posicionamento de rede não terrestre 5G a partir do limite de Cramér-Rao da largura de banda do sinal), MODELLED à parte esse envelope, consulte docs/LEO-PNT-FUSION.md; leo-pnt-chain (um sistema de PNT LEO de ponta a ponta: um projeto leo-signal transportado por uma banda leo-pass, o C/N0 da passagem e o erro de distância do sinal no espaço da mensagem de navegação entregues a uma solução leo-pvt fundida e à convergência leo-ppp, com cada transferência listada; MODELLED, consulte docs/LEO-PNT.md, que também é a visão geral de todos os tipos de cenário e cenários de PNT LEO, incluindo as campanhas de resiliência, um cenário por área de foco de experimento e um por vertical de usuário final); o conjunto de PNT lunar lunar-vlbi, lunar-joint-od-clock, lunar-frame-realisation, moonlight-service-volume, lunar-differential-pnt, lunar-interop-export; o demonstrador de PNT habilitado por tecnologia quântica quantum-time-transfer, quantum-gnss-free-nav, quantum-anomaly-detect; e os tipos de cenário de pesquisa de segurança de sinal, cislunar e resiliência em camadas lunar-attack-surface, realtime-frame-eop, lunar-time-budget, hybrid-optical-rf, cislunar-observability, conflict-resilience — o trio de análise de missão e estes tipos posteriores são todos MODELLED (cada um com um núcleo de forma fechada validado; consulte a matriz). Campos comuns: seed, uma grade [time], uma linha do tempo de disponibilidade [gnss] (o que dirige a interrupção) e blocos por sensor com strings provenance que citam a fonte de cada figura. Exemplo (relógio):

seed = 42
threshold_ns = 20.0
[time]
step_s = 10.0
duration_s = 7200.0
[gnss]
windows = [
  { t0 = 0.0,   t1 = 600.0,  state = "nominal" },  # 10 min GNSS sync
  { t0 = 600.0, t1 = 7200.0, state = "denied"  },  # ~1.8 h outage
]
[clock_quantum]
id = "optical-sr-lattice"
provenance = "Strontium optical lattice clock, space-oriented goal sigma_y(1s)=1e-15 (arXiv:1503.08457)"
y0 = 5.0e-17
q_wf = 1.0e-30   # white FM:  q_wf = sigma_y(1s)^2
q_rw = 0.0       # random-walk FM
drift = 0.0      # linear aging (per second)
[clock_classical]
id = "csac-sa45s"
provenance = "Microchip SA65 / SA.45s CSAC datasheet sigma_y(1s)=3e-10"
y0 = 5.0e-10
q_wf = 9.0e-20
q_rw = 0.0
drift = 0.0

Campos opcionais (desligados quando ausentes): um relógio pode acrescentar flicker_floor (piso de Allan de 1/f FM — modulação em frequência); um sensor inercial pode acrescentar gyro_bias e q_arw (viés do giroscópio e passeio aleatório angular), e bias_instability e q_aa (o piso de Allan de instabilidade de viés e o passeio aleatório de aceleração) — juntos formam um orçamento de erro de acelerômetro de eixo único (1 grau de liberdade) (VRW/ARW — passeio aleatório de velocidade/angular — e instabilidade de viés). Este é o orçamento de erro que o pacote de cenários inertial distribuído executa. Separadamente, a biblioteca agora traz um navegador strapdown de 3 eixos verificado (src/inertial/{attitude,mechanization,imu_errors}.rs): atitude por quatérnions com compensação de coning/sculling, uma mecanização NED completa (termos de taxa da Terra e de taxa de transporte, gravidade de Somigliana do WGS-84) e um modelo determinístico de erros de IMU em que fator de escala, desalinhamento, sensibilidade à gravidade, quantização e rampa de taxa são modelados (IEEE Std 952-1997, o padrão IEEE de especificação e procedimento de teste de giroscópios, §A.2; Groves 2013 §4,3). Esse caminho de 3 eixos agora está ligado a um pacote GNSS/INS fracamente acoplado executável (kind = "gnss-ins"): um EKF de estado de erro de 15 estados disciplina a solução strapdown em relação a posições ruidosas enquanto o GNSS está ativo e depois segue em deriva durante a interrupção, relatando o erro horizontal fundido em relação à deriva do INS livre em malha aberta. Uma atualização de pseudodistância fortemente acoplada também está disponível (ela forma a inovação no domínio da distância, de modo que continua corrigindo com menos de quatro satélites). Um cenário de holdover de relógio pode acrescentar runs (> 1) para executar um conjunto Monte Carlo — cada figura de mérito é então relatada como média com uma dispersão entre os percentis 5 e 95, e o gráfico sombreia a faixa de confiança do erro (consulte scenarios/clock-ensemble.toml).

Um cenário fusion (mesmos blocos de hybrid) executa dois estimadores de Kalman independentes — um para o estado do relógio, outro para o estado de posição — disciplinados pelo GNSS e auxiliados por transferência óptica de tempo, e relata uma FoM combinada de holdover. Os dois blocos não compartilham covariância cruzada: é um par empilhado de orçamentos de erro, não um verdadeiro filtro conjunto acoplado de relógio + posição (a covariância entre blocos é um item do roteiro). Consulte scenarios/fusion-pnt.toml.

Um cenário spoof injeta um spoofing de tempo — um dos quatro tipos de [attack.shape] (linear_ramp, step_jump, meaconing, replay; um simples rate_ns_per_s ainda é aceito como rampa linear) — e executa o detector de spoofing de cada relógio. O detector é um teste de energia χ²₁ / Neyman–Pearson bilateral sobre a estatística de monitoramento auxiliada pelo relógio: o limiar é definido a partir de um orçamento alvo de falsos alarmes target_pfa, e a probabilidade de detecção perdida P_md é relatada tanto em forma fechada quanto por Monte Carlo (mc_runs tentativas por hipótese — as duas concordam até alguns ×1/√N). A figura de mérito de Segurança é 1 − P_md na magnitude operacionalmente danosa (da especificação), de modo que um relógio silencioso que detecta um spoof do tamanho da especificação pontua ≈ 1 e um ruidoso que frequentemente o perde pontua menos (consulte scenarios/spoof-attack.toml, scenarios/spoof-meaconing.toml).

Um cenário gnss-sim é uma simulação no domínio da medição: para cada satélite visível ele sintetiza a pseudodistância ρ = geometric range + c·δt_rx − c·δt_sv + I + T + noise + multipath e o Doppler em L1, com a ionosfera monofrequência de Klobuchar ([iono], IS-GPS-200 §20.3.3.5.2.5) e a troposfera zenital de Saastamoinen projetada pela função de mapeamento de Niell (1996) ([tropo]). Os resíduos alimentam o RAIM de snapshot para HPL/VPL por época, e a pseudodistância, o Doppler, o C/N₀ e as correções ionosféricas/troposféricas de cada satélite são emitidos na matriz JSON gnss_measurements. É um simulador direto (gera medições a partir de uma verdade conhecida), não um receptor/solucionador — uma execução sem ruído reproduz a geometria mais as correções em nível submilimétrico (consulte scenarios/gnss-sim-raim.toml).

Um cenário jamming modela a interferência de RF como um orçamento de enlace: um [jammer] (posição ECEF, power_dbw de transmissão, tipo) eleva a razão jammer-sinal em um [receiver] que observa uma [constellation] Walker. A partir da geometria (perda de percurso em espaço livre e o ganho da antena receptora por direção) ele calcula o J/S de cada satélite, o C/N₀ efetivo pela equação padrão antijamming (ganho de processamento de despreading × o fator de separação espectral Q; Kaplan & Hegarty §9,4), e sinaliza a perda de travamento abaixo de um limiar de rastreamento configurável — relatando uma figura de mérito availability_under_jamming. Um jammer de banda larga de 10 W a 1 km nega totalmente o receptor (J/S ≈ 72 dB); o mesmo jammer a 100 km apenas degrada os enlaces (consulte scenarios/jamming-demo.toml).

Um cenário sweep executa um estudo de trade: ele varia um parameter (threshold_ns, duration_s, quantum_q_wf ou classical_q_wf) de start a stop em steps pontos em uma scale lin ou log, registra uma metric (por exemplo holdover_s) para os dois relógios e traça as duas curvas. O cenário base fica sob [base] (consulte scenarios/sweep-clock-stability.toml).

Um cenário sweep-nd generaliza isso para qualquer pacote e qualquer número de eixos: ele varia chaves TOML pontilhadas de um cenário [base] (de qualquer kind) sobre o produto cartesiano de [[axes]], reexecuta cada nó da grade e registra metrics dadas como caminhos JSON pontilhados no resultado (por exemplo classical.fom.holdover_s). Funciona com todos os pacotes porque opera na fronteira entre TOML e resultado; as execuções nativas avaliam a grade em paralelo (sem dependência extra; o wasm recorre ao modo sequencial) e a saída é determinística e em ordem de linhas (consulte scenarios/sweep-nd-inertial.toml).

Um cenário orbit deriva a linha do tempo [gnss] da geometria em vez de ela ser escrita à mão — forneça uma órbita [user], uma [constellation], uma mask_deg de elevação e os dois blocos de relógio. Ele também relata a exatidão de posição a partir da geometria dos satélites; o sigma_uere_m opcional (erro de distância equivalente do usuário de 1 sigma, padrão 1 m) converte a diluição de precisão de posição em um sigma de posição. A órbita do usuário pode ser tornada excêntrica com eccentricity e argp_deg, e j2 = true acrescenta a deriva secular por achatamento da Terra (consulte scenarios/orbit-molniya.toml). A constelação pode, em vez disso, ser uma real: dê a [constellation] um bloco tle de conjuntos de elementos de duas linhas e os satélites são lidos dele (consulte scenarios/orbit-real-tle.toml). Acrescente um ou mais blocos [[constellations]] para multi-GNSS (por exemplo GPS + Galileo; consulte scenarios/orbit-multignss.toml):

kind = "orbit"
seed = 7
threshold_ns = 5.0
mask_deg = 10.0
sigma_uere_m = 1.0           # optional; position sigma = position-DOP * this
[time]
step_s = 60.0
duration_s = 86400.0
[user]                       # spacecraft (altitude in km, angles in deg)
altitude_km = 8000.0
inclination_deg = 0.0
[constellation]              # Walker-delta GNSS (GPS-like)
altitude_km = 20180.0
inclination_deg = 55.0
planes = 6
sats_per_plane = 4
phasing_f = 1.0
[clock_quantum]  # ... as above
[clock_classical]  # ... as above

Os tipos de cenário de PNT alternativo sem GPS navegam sem nenhum GNSS, correlacionando uma sequência de campo medida com um mapa por meio de um filtro de partículas. Um cenário gravity-map percorre uma trajetória por um campo de anomalia gravitacional de harmônicos esféricos e a recupera a partir da leitura de um gravímetro de átomos frios (scenarios/gps-denied-gravity-nav.toml); um cenário terrain-nav faz o mesmo em relação a um DEM de elevação SRTM (TERCOM/SITAN, scenarios/terrain-nav.toml); e um cenário combined-altpnt funde gravidade + magnético IGRF + terreno em um único filtro (scenarios/combined-altpnt.toml).

Um cenário lunar-integrity avalia PNT cislunar: ele executa uma passagem de nível de proteção ARAIM no polo sul lunar contra um conjunto de retransmissores LunaNet/LNIS e relata com honestidade a lacuna de integridade — um σ_URE lunar de ~30 m leva o nível de proteção muito acima de um limite de alerta de 50 m, de modo que o serviço fica indisponível sob regras de integridade no estilo da aviação (scenarios/lunanet-araim.toml).

Um cenário lunar-time-offset relata a taxa relativística do relógio Terra–Lua — a base de uma escala de Tempo Coordenado Lunar (LTC/TCL). Uma identidade pós-newtoniana de primeiros princípios soma a diferença de potencial próprio (potencial do geoide L_G da IAU menos o potencial próprio da superfície da Lua) e o termo cinético da Lua (Doppler de segunda ordem) em uma taxa secular de ≈ 57 µs/dia, relatada com a faixa publicada de 56–59 µs/dia; ele também dá o deslocamento LTC−TT acumulado ao longo de um horizonte e um conjunto de variância inversa (um relógio de papel lunar). MODELLED — a figura principal é dependente da referência (geoide terrestre versus selenoide lunar, janela de média), razão pela qual se relata uma faixa, e não um único número certificado (scenarios/lunar-time-offset.toml).

Veja scenarios/ para pelo menos um exemplo prático de cada tipo de cenário (92 tipos, 193 arquivos .toml de cenário + 1 manifesto de suíte — vários tipos de cenário trazem mais de um exemplo). Nem todo tipo de cenário tem um arquivo com o seu nome: lunar-integrity → scenarios/lunanet-araim.toml e gravity-map → scenarios/gps-denied-gravity-nav.toml são dois de vários casos assim. Liste os tipos de cenário despacháveis a qualquer momento com os erros de cargo run -- --validate <file>, o list_kinds() do Python ou a ferramenta list_scenario_kinds do MCP.

Saída

Saída#

O artefato de resultado é um JSON versionado e autodescritivo: séries temporais por passo, as figuras de mérito pontuadas, as especificações de modelo ativas (com procedência), a semente, um hash do cenário — de modo que qualquer gráfico possa ser reproduzido a partir do arquivo — e, para cada relógio, uma adev_curve ([{tau_s, adev, n_samples, noise, edf, ci_lo, ci_hi}]): o desvio de Allan sobreposto em tempos de média espaçados em oitavas — a forma padrão de ler a estabilidade de um relógio — agora com uma faixa de confiança de 95% específica do tipo de ruído por ponto (o tipo de lei de potência do registro é identificado a partir de sua inclinação de Allan modificada, e o intervalo χ² usa os graus de liberdade efetivos correspondentes do NIST SP 1065). O playground do navegador o renderiza como um gráfico log-log "Clock stability (ADEV)". (MDEV, TDEV e HDEV estão disponíveis como estimadores da biblioteca; a curva exportada do resultado é o ADEV sobreposto.) Cada campo, com unidades e uma indicação da fonte, está documentado em docs/SCHEMA.md.

Todo gráfico é autodescritivo. O playground do navegador, a exportação *.chart.svg da CLI e o painel de resultados em HTML (HyperText Markup Language) carimbam cada imagem de gráfico com um rodapé que diz Kshana v<version> · scenario <hash> · kshana.dev. O scenario <hash> são os primeiros 12 caracteres hexadecimais do hash do cenário da execução — um resumo SHA-256 (o Secure Hash Algorithm de 256 bits) da definição canônica do cenário (semente, limiares, parâmetros de modelo, janelas GNSS, …); os relatórios de integridade e lunares, que não trazem hash próprio, recorrem a um SHA-256 do código-fonte do cenário. É a mesma impressão digital mostrada no resumo de uma linha e no JSON do resultado, de modo que um gráfico salvo ou colado sempre traz sua versão, o cenário exato que o produziu (para reprodução bit a bit) e a fonte — mude qualquer entrada e o hash muda.

As figuras de mérito seguem as figuras de mérito operacionais padrão de PNT:

Figura de mérito Como o Kshana a calcula
Desempenho de temporização (pacotes de relógio/órbita) RMS do erro de fase do relógio + percentil 95 durante a interrupção, em nanossegundos (timing_rms_ns) — uma métrica de temporização, não de posição
Desempenho de posicionamento (pacotes inerciais/híbridos) RMS do erro de posição de 1 grau de liberdade + percentil 95 durante a interrupção, em metros (pos_rms_m); eixo único. Uma execução única é sinalizada como monte_carlo: false; defina runs = N para um conjunto Monte Carlo que relata, para cada métrica, a média, a dispersão e o IC (intervalo de confiança) de 95% por bootstrap. Ainda não é um CEP/2DRMS 2-D (erro circular provável / duas vezes a raiz da distância quadrática média) nem uma exatidão ponderada por DOP (isso exige o modelo de 3 eixos — roteiro)
Autonomia duração do holdover — tempo dentro da especificação após a perda do GNSS (quantizado pela grade: um limite inferior)
Resiliência inclinação do crescimento do erro durante a interrupção
Disponibilidade fração da execução com uma solução dentro da especificação
Integridade autoconsistência do filtro — fração das amostras da interrupção cujo erro permanece dentro do próprio limite k-sigma do filtro de Kalman. Não é uma figura de integridade HPL/VPL/RAIM de aviação (consulte docs/INTEGRITY.md)
Segurança limite analítico de detectabilidade de spoofing a partir da estabilidade do relógio — quão pequeno/lento um spoofing de tempo um monitor de consistência de relógio único conseguiria sinalizar. Significativo apenas com um ataque configurado; não é um detector RAIM com vários satélites

Novo nesses termos? Cada um está definido em linguagem simples no glossário.

Estrutura do repositório

Estrutura do repositório#

kshana/
├── src/                                       # the kshana core crate (library + CLI)
│   ├── api.rs · main.rs · lib.rs              # typed dispatch (92 kinds) + CLI + crate root
│   ├── python.rs · wasm.rs                    # optional PyO3 / wasm-bindgen bindings
│   ├── types.rs · scenario.rs · allan.rs      # shared core (time grid, GNSS timeline, Allan)
│   │
│   ├── models.rs · estimator.rs · kalman.rs   # Pack 1 — clock holdover + integrity
│   ├── security.rs · detection.rs · spoof.rs · spoof_monitors.rs  # spoof detection
│   ├── filter_health.rs · fom.rs · fom_label.rs · report.rs · chart.rs · run.rs  # health · FoM scoring + labelling · output
│   ├── suite.rs · study.rs                     # scenario suites + aggregated multi-scenario study artifacts (`--study`)
│   ├── inertial/                              # Pack 2 — strapdown INS (attitude · mechanization · imu_errors · quantum_imu)
│   ├── timetransfer.rs · timetransfer_adv.rs · timegeo.rs  # Pack 3 — TWSTFT/CV/PPP/optical, Sagnac
│   ├── hybrid.rs · ensemble.rs · sweep.rs     # Pack 4 — fused PNT, Monte-Carlo, trade sweeps
│   │
│   ├── timescales.rs · jd2.rs · ephem.rs      # time systems, two-part JD, Sun/Moon ephemeris
│   ├── precession.rs · nutation.rs · cio.rs   # IAU 2006/2000A precession-nutation + CIO GCRS↔ITRS
│   ├── frames.rs · *_data.rs                  # TEME↔ECEF + generated nutation/CIO/EGM2008/IGRF tables
│   │
│   ├── orbit.rs · sgp4.rs · tle.rs · walker.rs   # geometry, SGP4/SDP4, TLE, Walker design
│   ├── propagator.rs · forces.rs · gravity_sh.rs · integrator.rs  # Cowell + perturbations (EGM2008 d/o70, GR) + RK4/DOPRI
│   ├── maneuver.rs · batch_ls.rs · orbit_determination.rs  # burns/Lambert/porkchop, Gauss-Newton, OD
│   ├── cr3bp.rs · lunar.rs · lunar_frame.rs · lunar_od.rs  # Earth–Moon CR3BP + halo/NRHO STM corrector, cislunar/LunaNet ARAIM, MCI↔MCMF, lunar OD
│   ├── lunar_time.rs · lunar_vlbi.rs · lunar_combination.rs · lunar_frame_realise.rs · lunar_service.rs · lunar_dpnt.rs · lunar_interop.rs  # tiers per piece in the matrix lunar PNT suite — LTC time · geodetic VLBI · joint OD+clock · frame realisation · Moonlight service-volume · differential PNT · LunaNet/IOAG interop export
│   ├── body.rs · mars_frame.rs · ephem_provider.rs · radiometric.rs · ccsds_tdm.rs  # deep-space: multi-body · Mars frame · ephemeris seam · radiometric obs + CCSDS-TDM
│   ├── deepspace_od.rs · clock_state.rs · mars_atmos.rs · mars_pnt.rs · linkbudget.rs · gse_sim.rs  # SRIF OD · onboard clock · Mars drag · relay-PNT · link budget · GSE sim
│   │
│   ├── fusion/                                # GNSS/INS — EKF · UKF · tightly_coupled(17) · coupled · closed_loop
│   ├── raim.rs · sbas.rs                      # RAIM/ARAIM HPL/VPL, SBAS DO-229E PLs + L1/L5 iono-free
│   ├── gnss_sim.rs · ionex.rs · pvt.rs · jamming.rs  # measurement domain · ionosphere maps · single-point positioning · jamming
│   ├── navsignal.rs                            # nav-signal PSD (BPSK-R/BOC) · spectral-separation → anti-jam Q · DLL code-tracking jitter · multipath envelope
│   ├── gravimeter.rs · igrf.rs · mapmatch.rs · particle_filter.rs · altpnt/  # gravity/magnetic/terrain alt-PNT
│   ├── rinex.rs · rinex_obs.rs · glonass.rs · sp3.rs · oem.rs · omm.rs · permalink.rs  # interop formats
│   ├── launch.rs · reentry.rs · eo_payload.rs · attitude_budget.rs · passes.rs · space_packet.rs  # mission-analysis budgets + CCSDS Space Packet
│   ├── space_weather.rs · holdover.rs · tpl.rs   # space-weather environment · GNSS-denied clock-holdover calculator · conditional Timing Protection Level (under spoofing)
│   ├── resilience/                              # framework-aligned PNT-resilience scoring + decision-instability study (RPCF · Dirichlet · Kendall-τ · diversity collapse · assurance report)
│   ├── impairment_eval.rs · impairment_study.rs · impairment_ml.rs · eval_stats.rs  # Machine-learning RF-impairment eval testbed · optimism-gap study · LR/MLP detectors · bootstrap/DeLong/Spearman stats
│   ├── sdr.rs · realdata/                       # software-defined-receiver front end (IQ/IF → E/P/L taps → SQM) + real-data ingest adapters (RINEX · UBX · GnssLogger · JammerTest · Yunnan · SatGrid)
│   ├── crossover.rs · quantum_trade.rs · frugal.rs · integrity_impact.rs  # quantum-vs-classical crossover map · PNT trade · cost-per-coverage ROI · integrity impact
│   ├── quantum_devices.rs · quantum_faults.rs · quantum_nav_od.rs · qtrade.rs · timetransfer_chain.rs · representativeness.rs  # Quantum-Enabled PNT demonstrator — device error models · fault catalogue · GNSS-free quantum OD · unified trade harness · quantum time-transfer chain · representativeness / gaps-to-flight ledger
│   ├── interchange.rs · verification.rs          # KIF artifact envelope · machine-checked verification matrix
│   └── bin/crossover_study.rs · bin/validation_report.rs  # crossover-study artifact generator · release validation-summary HTML
│
├── mcp/kshana-mcp/        # standalone, workspace-EXCLUDED crate — the MCP server (+ Dockerfile, server.json)
├── ide/jetbrains/         # standalone Kotlin/Gradle IntelliJ-Platform plugin
├── xval/                  # standalone, workspace-EXCLUDED external cross-checks: anise-{frames,lunar-od,mars-od,service-geometry} (Rust ANISE/SPICE DE440) + orekit-passes (Java Orekit)
│
├── examples/            # reproducible study generators: tpl_jammertest · resilience_report · optimism_study + real-data probes (jammertest_probe · yunnan_probe · satgrid_probe · texbat_probe · ingest_realdata)
├── paper-artifacts/     # byte-deterministic study artifacts, regenerable from examples/ (optimism-study.json · resilience-study.json); raw datasets stay out
├── scenarios/            # one cited .toml per kind + geometry-driven + GPS-denied
├── scripts/              # reproducibility + repo-hygiene + SBOM guards
├── docs/                 # CONCEPTS, ARCHITECTURE, CAPABILITY, VALIDATION, PROVENANCE, GLOSSARY, …
├── web/                  # the WebAssembly playground + kshana.dev site
├── tools/                # table generators (EGM2008 · IGRF · nutation · CIO) + fetch_tles.sh
├── .github/workflows/    # ci · release · publish · wheels · pages · mcp-publish · jetbrains-plugin · frame-xval
├── pyproject.toml        # Python packaging (maturin)
├── CHANGELOG.md          # Keep a Changelog + SemVer
└── CITATION.cff · ROADMAP.md · CONTRIBUTING.md · SECURITY.md
FAQ (perguntas frequentes)

FAQ#

Preciso entender física quântica para usar isto? Não. Se você sabe executar uma linha de comando, sabe executar o Kshana. Comece pela introdução em linguagem simples; consulte os termos no glossário.

Isto é um projeto de hardware quântico ou um software de voo? Não. É um simulador de desempenho. A fidelidade do hardware quântico vem de modelos de erro publicados, não desta ferramenta. Consulte O que é / não é.

Os resultados quânticos são realistas, ou marketing? Cada parâmetro é citado a partir de uma folha de dados ou de um artigo, cada modelo é validado em relação a uma relação de manual, e a maturidade é rotulada com honestidade em VALIDATION.md — inclusive o fato de que nenhum relógio óptico de estrôncio já voou. O motor é neutro: quântico e clássico são o mesmo código com números publicados diferentes.

Posso confiar que duas execuções concordam? Sim — as execuções são determinísticas: scenario + seed + engine version → bit-identical output, garantido por scripts/check-reproducible.sh.

Posso usá-lo a partir de Python ou em um navegador? Sim — consulte Instalar: os exemplos de Python e WebAssembly estão logo abaixo. Ambos chamam o mesmo motor.

Como modelo meu próprio sensor? Escreva um .toml de cenário com as figuras publicadas do seu sensor nos campos provenance. Consulte Formato de cenário e os exemplos em scenarios/.

É gratuito para uso comercial? Sim — sob a AGPL-3.0, inclusive em contextos comerciais, desde que você respeite o copyleft da AGPL (em especial: se você modificar o Kshana e oferecê-lo por uma rede, deverá oferecer a esses usuários o seu código-fonte modificado). Se isso não lhe serve — por exemplo, se você precisa incorporar o Kshana a um produto proprietário ou executar um serviço de rede fechado — uma licença comercial está disponível na Ashforde® OÜ; consulte LICENSING.md e Suporte.

Solução de problemas

Solução de problemas#

cargo build falha em uma cadeia de ferramentas antiga. O Kshana precisa de Rust ≥ 1,88. Atualize com rustup update.

A compilação da extensão Python falha na ligação no macOS (Undefined symbols … _Py…). Uma extensão Python resolve seus símbolos em tempo de carga. maturin define automaticamente o sinalizador correto do linker — use maturin develop --features python em vez de um simples cargo build.

A compilação do Python reclama que o interpretador é mais novo do que o PyO3 conhece. Defina PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 (as wheels abi3 têm compatibilidade futura entre versões do CPython).

A compilação do WebAssembly não encontra o alvo. Instale-o uma vez com rustup target add wasm32-unknown-unknown e depois execute wasm-pack build --target web -- --features wasm.

Para onde foi minha saída? Cada execução grava <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html e <scenario>.report.json ao lado do .toml de entrada, e também <scenario>.table.csv para os tipos de cenário que publicam uma tabela. Todos eles são ignorados pelo git por projeto.

Versionamento e lançamentos

Versionamento e lançamentos#

O Kshana segue o Versionamento Semântico. Enquanto estiver antes da 1.0, o esquema público de cenário/resultado ainda pode mudar; as mudanças incompatíveis são destacadas explicitamente em CHANGELOG.md. Todo resultado é reproduzível a partir de scenario + seed + engine version.

Toda tag vX.Y.Z publica todos os canais automaticamente, em uma única ordem — a suíte de testes completa é executada primeiro no commit com tag, nada é publicado até que ela passe, e depois o pipeline confere se cada registro realmente serve a nova versão (docs/RELEASING.md). Os canais:

Um trecho que cita clientes de IA de terceiros foi omitido aqui; ele está no README.md no GitHub.

Um trecho que cita clientes de IA de terceiros foi omitido aqui; ele está no README.md no GitHub.

Canal Instalar / obter Conteúdo
crates.io cargo install kshana · kshana = "0.35" Biblioteca Rust + CLI
crates.io cargo install kshana-mcp o servidor MCP
PyPI (Python Package Index) pip install kshana wheels abi3 (Linux/macOS/Windows) + sdist (distribuição de código-fonte)
npm npm install kshana módulo WebAssembly + wrapper JS
ghcr.io docker run -i ghcr.io/ashfordeou/kshana-mcp imagem OCI (Open Container Initiative) multiarquitetura — não precisa de cadeia de ferramentas
npm npx -y kshana-mcp@0.40.0 launcher: baixa o binário da versão, verifica SHA256SUMS e o executa
PyPI uvx kshana-mcp==0.40.0 · pipx run kshana-mcp==0.40.0 o mesmo launcher para Python
Homebrew · Scoop · winget brew install ashfordeOU/tap/kshana-mcp · scoop install kshana-mcp · winget install AshfordeOU.KshanaMcp o binário kshana-mcp, gerado a partir do SHA256SUMS de cada versão
registro MCP oficial descoberto automaticamente por clientes MCP io.github.ashfordeOU/kshana-mcp (imagem OCI, pacotes npm e PyPI)
JetBrains Marketplace IDE → Plugins → pesquise "Kshana" o plugin de IDE Kshana — PNT simulator
Zenodo DOI um arquivo citável de cada versão
kshana.dev abrir em um navegador Kshana Studio, o aplicativo WebAssembly no navegador, recompilado a partir de cada tag de versão (de modo que a versão que ele mostra é a versão que ele executa)

A versão do crate / imagem / registro do servidor MCP acompanha o motor (ele inclui a biblioteca); o plugin do JetBrains tem versionamento independente (ele chama o binário kshana que você instalou).

Roteiro

Roteiro#

Consulte ROADMAP.md para o roteiro em fases, CHANGELOG.md para o histórico de versões publicadas e docs/CAPABILITY.md para o roteiro por capacidade. A ordem de prioridade é: primeiro, evidências de temporização e holdover para infraestrutura crítica (máscaras de telecomunicações, holdover mais longo com envelhecimento e ruído flicker, ingestão de dados de relógio medidos); em segundo, o método neutro de trade quântico versus clássico (resultados rotulados MODELLED até que os dados medidos de um parceiro os promovam); e a navegação lunar / cislunar e de espaço profundo mantida, não ampliada como prioridade principal. A redução de referencial precisa para o ITRF agora está entregue — a cadeia completa GCRS↔ITRS da IAU 2006/2000A baseada no CIO (movimento polar + nutação abaixo de um segundo de arco), validada bit a bit em relação ao SOFA/ERFA e conferida de forma cruzada e independente com o ANISE (SPICE em Rust puro) em ≤ 3,6 m na órbita GNSS. Os itens de curto prazo incluem a fusão de fase da portadora fortemente acoplada e a exposição do navegador GNSS/INS fracamente/fortemente acoplado em mais pacotes; o motor de navegação radiométrica de espaço profundo / Marte chegou na v0.17.0 (validado por simulação). A camada de física quântica é um item P2: o acelerômetro CAI agora é simulado a partir de primeiros princípios (fase de Mach–Zehnder, ruído de projeção, decaimento de contraste, acoplamento de vibração), enquanto os sensores de relógio/transferência de tempo ainda são dirigidos por coeficientes publicados de Allan/orçamento de ruído. TEME&harr;ECEF baseado em GMST, os sistemas de tempo IERS com segundos intercalares (UTC/TAI/TT/UT1), a propagação de órbita SGP4/SDP4 (v0.7.0, validada em relação aos vetores AIAA 2006-6753) e o pacote de fusão gnss-ins executável foram todos entregues, e a velocidade inercial é exposta a jusante. Um detector estocástico ativo de spoofing de tempo (teste de energia Neyman–Pearson / χ²₁ com P_fa/P_md por Monte Carlo e uma FoM de Segurança de 1−P_md), um modelo de jamming por orçamento de enlace (J/S → C/N₀ efetivo → perda de travamento), disponibilidade multiconstelação, um orçamento de erro de IMU de eixo único (1 grau de liberdade), dois estimadores de Kalman independentes (relógio + posição) relatados como uma FoM combinada, geometria real de constelação a partir de TLEs, um relatório de painel de resultados em HTML, disponibilidade GNSS derivada da geometria e diluição de precisão a partir de órbitas keplerianas com excentricidade e deriva de J2, faixas de confiança Monte Carlo, varreduras de parâmetros de estudos de trade, um playground WebAssembly no navegador e ligações opcionais para Python (PyO3) e WebAssembly (wasm-bindgen) chegaram ao main.

Como contribuir

Como contribuir#

Consulte CONTRIBUTING.md. Em resumo: os testes passam (cargo test), os dois scripts de salvaguarda passam, Conventional Commits, e uma entrada [Unreleased] em CHANGELOG.md para cada mudança visível ao usuário. A participação é regida pelo nosso Código de Conduta. Para relatar um problema de segurança, consulte a Política de segurança — não abra uma issue pública para vulnerabilidades.

Documentação: cada documento e para quem ele é

Documentação#

Documento Para quem O que há nele
Introdução aos conceitos todos, comecem aqui o que o Kshana faz e por quê, do zero até a física
Kshana Studio todos execute o motor no seu navegador (WebAssembly); notas de compilação e implantação
Glossário todos definições em linguagem simples de cada termo
Tipos de cenário todos cada tipo de cenário que o motor despacha: o que faz, seus campos, um comando de exemplo, suas linhas do registro e o gráfico que o motor grava para ele
Dados de parceiros laboratórios e fabricantes com dados medidos quais linhas MODELLED um registro medido de relógio ou de IMU poderia promover, os formatos, como um envio é verificado (kshana partner check), pontuado e creditado
Arquitetura desenvolvedores / revisores mapa de módulos, pipeline do motor, despacho e diagramas
Estado da validação revisores / quem cita o que é validated e o que é not modeled, com evidências
Matriz de verificação revisores / quem cita o registro de evidências verificado por máquina — cada linha de capacidade com seu status, módulo, teste e referência independente externa, gerado a partir de src/verification.rs
Justificativa dos itens modelados revisores por que cada linha modelada não tem referência independente externa, declarado linha por linha
Proveniência revisores / quem cita cada parâmetro de sensor, modelo e conjunto de dados rastreado até sua fonte publicada, em uma única tabela citável
Reprodutibilidade e procedência revisores / empacotadores garantias de determinismo, fixação por golden, SBOM (lista de materiais de software), procedência de compilação
Tags de plataforma das wheels empacotadores a matriz de wheels Python abi3 — qual tag de plataforma pip install kshana resolve
Posicionamento avaliadores onde o Kshana fica em relação ao RTKLIB/gLAB (complementar), e a camada de navegador sem instalação
Kshana Pro avaliadores / gerentes de programa o que a camada proprietária Pro acrescenta sobre o mesmo motor: otimizador de projeto, incerteza e sensibilidade, dossiê de missão, acompanhamento de campanha, coexistência espectral, serviço local de tarefas, rastreabilidade de requisitos; o que cada um produz e o que não faz
Relatório técnico · Artigo JOSS revisores / quem cita / avaliadores o artigo de pesquisa estendido completo — arquitetura, modelos por domínio, validação, estudos de caso e limitações — mais a submissão concisa ao JOSS (Journal of Open Source Software)
Validação do SGP4 revisores / quem cita concordância com a referência AIAA 2006-6753 (666 estados, ~4 mm) e uma comparação direta com o crate independente sgp4 (concordam em nível submicrométrico / 4,12 mm)
Validação do modelo de forças revisores / quem cita o motor de forças completas (src/precise_od.rs) ajustado a efemérides de agências — metodologia e resíduos validados
Guia de TLE reais usuários conduzir cenários com TLEs reais de constelações do Celestrak / Space-Track (em vez do conjunto Walker sintético incluído)
FoM de integridade avaliadores o que as figuras integrity / security significam — e o que elas não são em relação ao HPL/VPL de aviação
Referência do ARAIM revisores / integradores a implementação aberta do nível de proteção ARAIM MHSS — a projeção de viés nominal b_k, σ_URA versus σ_URE e as probabilidades a priori dos modos de falha
Modelos quânticos · detalhes revisores a camada de física de interferômetros de átomos frios, e onde os coeficientes ainda são consultados
Compliance avaliadores escopo dos algoritmos DO-229E / DO-316, e o que não é uma alegação de aderência à norma
Confiança marítima marinheiros / integradores a pontuação de confiança GNSS de 0 a 100 para o NMEA de uma embarcação, seus monitores e seus limites (consultivo, não um equipamento de navegação homologado)
Fluxos NMEA de treinamento instrutores marítimos NMEA sintético de ponte com jamming e spoofing roteirizados e um registro do instrutor; somente texto, nunca para navegação ao vivo
Mapa de interferência analistas / marinheiros onde aeronaves e navios relataram dados de navegação degradados, e quanto de uma rota isso atinge
Pacotes de evidências operadores / seguradoras registros técnicos assinados de um evento de confiança e como verificar um
Telemetria de confiança equipes de operações / segurança o fluxo de confiança como métricas Prometheus, eventos SIEM e OpenTelemetry, com um painel Grafana
Integrações marítimas proprietários de embarcações / integradores o plugin Signal K, o modo de bloqueio do OpenCPN e a compilação de referência
Test bench fabricantes de receptores reproduzir um cenário exportado em um simulador de laboratório e pontuar o registro do receptor
Mapeamento de compliance avaliadores referenciais públicos de resiliência mapeados para as saídas do Kshana, com fontes e lacunas; kshana compliance-report
Notebooks usuários tutoriais executáveis com seu texto renderizado
Normas e interoperabilidade integradores os formatos de intercâmbio de GNSS / dinâmica de voo / agências que o Kshana lê e grava (RINEX, SP3, CCSDS OEM/OMM/TDM/Space-Packet, …)
Fusão de PNT LEO usuários / avaliadores posicionamento, navegação e temporização fundidos MEO + LEO: Doppler, pseudodistância conjunta, convergência do PPP, 5G NTN, cobertura polar e transferência de tempo LEO sobre qualquer constelação; as predefinições opcionais e suas fontes públicas
Campanhas usuários / avaliadores composição de cenários: linhas do tempo de missão encadeadas, varreduras de parâmetros, conjuntos Monte Carlo e execuções de condição compartilhada, com as identidades de composição que os testes fixam
Catálogo de cenários usuários / integradores cada tipo de cenário despachável com seus campos TOML obrigatórios e opcionais — gerado a partir de api::list_scenario_kinds()
Esquema de resultado integradores cada campo do JSON de resultado, com unidades e uma indicação da fonte
API Python usuários de Python a superfície de ligação PyO3 — chamar o motor, os tipos de cenário/resultado e exemplos
Afirmações versus realidade revisores o registro de resolução de afirmações exageradas + a salvaguarda de CI (tests/no_overclaims.rs) que a mantém resolvida
Roteiro todos o roteiro em fases — o que foi entregue e o que vem a seguir
Servidor MCP · Plugin do JetBrains agentes / usuários de IDE execute o Kshana a partir de um assistente de IA ou de uma IDE JetBrains
Guia do agente · Superfícies agentes / integradores qual ferramenta responde a qual pergunta, o que guardar com cada resposta; onde cada capacidade é acessível (CLI, Rust, Python, WASM, MCP, plugin, JetBrains, notebooks) e por que uma célula é N/A
Histórico de alterações todos histórico de versões publicadas (Keep a Changelog + SemVer, Versionamento Semântico)
Como contribuir colaboradores compilação, salvaguardas, disciplina de testes/citações, DCO (Developer Certificate of Origin)
Governança colaboradores / comunidade como o Kshana é governado — quem decide, como, e a fronteira entre aberto e fechado
Código de Conduta comunidade conduta esperada (Contributor Covenant)
Política de segurança quem relata como relatar uma vulnerabilidade; nota sobre duplo uso
Referências principais

Referências principais#

Referências independentes de validação e normas — as autoridades externas às quais as verificações do Kshana estão ancoradas:

  • Vallado, Crawford, Hujsak & Kelso — Revisiting Spacetrack Report #3 (AIAA 2006-6753; dados de teste): o conjunto de verificação do SGP4/SDP4 com o qual o Kshana coincide em 4,12 mm, e os exemplos práticos de referenciais com os quais a cadeia TEME→ITRF é conferida.
  • IAU SOFA / ERFA — as rotinas de referência de tempo e referenciais com as quais a nutação IAU 2000A e a redução GCRS↔ITRS baseada no CIO são validadas bit a bit.
  • Petit & Luzum (orgs.) — IERS Conventions (2010), IERS TN (Technical Note) 36 (orientação da Terra, movimento polar e padrões de referenciais).
  • Riley — Handbook of Frequency Stability Analysis, NIST SP 1065 (relações do desvio de Allan e a série de referência NBS14; NBS = o antigo National Bureau of Standards dos EUA).
  • Pedregosa et al. — scikit-learn: Machine Learning in Python, JMLR 12 (2011): as implementações de referência de ROC/AUC, matriz de confusão e precisão/recall/F1 com as quais a bancada de avaliação de degradação de RF coincide exatamente (tests/eval_metrics_reference.rs).
  • Virtanen et al. — SciPy 1,0, Nature Methods 17 (2020): optimize.nnls, stats.chi2 e linalg.expm — as rotinas de referência com as quais o ajuste NNLS de ADEV medido do trade quântico, as faixas de consistência χ² e a covariância de ruído de processo do relógio de van Loan são validados (tests/scipy_reference.rs).
  • Knowles, Kanhere, Neamati & Gao — gnss_lib_py, SoftwareX 27 (2024): usado tanto como estado da arte aberto (veja Comparação e estado da arte aberto abaixo) quanto como a referência independente de DOP com a qual o cálculo de GDOP/PDOP/HDOP/VDOP/TDOP coincide em 1e-6 (tests/dop_reference.rs).
  • Montenbruck & Gill — Satellite Orbits: Models, Methods and Applications (Springer): os modelos de forças por trás do ajuste do modelo de forças a efemérides precisas de agências.
  • Howell — Three-dimensional, periodic, halo orbits, Celestial Mechanics 32(1) (1984), doi:10.1007/BF01358403; Zimovan-Spreen, Howell & Davis — Near rectilinear halo orbits and nearby higher-period dynamical structures, Astrodynamics 6 (2022), doi:10.1007/s42064-021-0125-x (as famílias de halo/NRHO que o corretor diferencial do CR3BP reproduz).

Física de dispositivos e métodos — as fontes citadas por trás dos modelos de sensor:

  • Origlia, Schiller, Bongs et al. — arXiv:1503,08457 (relógio óptico de rede de estrôncio, meta voltada ao espaço).
  • Oelker et al., Nature Photonics (2019) — doi:10.1038/s41566-019-0493-4 (relógio de Sr de laboratório, 4,8×10⁻¹⁷).
  • Templier et al., Science Advances (2022) — arXiv:2209,13209 (tríade de acelerômetros quânticos híbridos).
  • Groves, Principles of GNSS, Inertial, and Multisensor Integrated Navigation — tutorial da IEEE AESS (Aerospace and Electronic Systems Society) (repositório Discovery da University College London) (crescimento do erro na navegação por estima (dead reckoning)).
  • Giorgetta et al., Nature Photonics 7, 434 (2013) — arXiv:1211,4902; Deschênes et al., Phys. Rev. X 6, 021016 (2016) — APS (American Physical Society) (transferência óptica bidirecional de tempo e frequência; o enlace óptico entre satélites modela seu orçamento de não reciprocidade a partir destes).
  • Betz — Binary Offset Carrier Modulations for Radionavigation, NAVIGATION 48(4) (2001), doi:10.1002/j.2161-4296.2001.tb00247.x (a modulação BOC e a teoria de separação espectral por trás de src/navsignal.rs).
  • Kaplan & Hegarty (orgs.) — Understanding GPS/GNSS: Principles and Applications (3ª ed., Artech House, 2017): a equação de C/N₀ efetivo antijamming e o jitter de ruído térmico do rastreamento de código por DLL early–late que os modelos de sinal de navegação e de jamming usam.

Comparação e estado da arte aberto — as ferramentas e levantamentos em relação aos quais o Kshana se posiciona:

  • Humphreys et al. — TEXBAT (o Texas Spoofing Test Battery; ION — Institute of Navigation — GNSS 2012): os parâmetros da bateria de testes de spoofing com os quais o detector multicamadas é caracterizado.
  • González et al. — NaveGo (2017): os perfis abertos e validados de erro de navegação inercial usados como linha de base clássica.
  • Iiyama, Casadesús Vila & Gao — LuPNT (ION GNSS+ 2023, Stanford NavLab): simulador aberto de PNT lunar.
  • Knowles, Kanhere, Neamati & Gao — gnss_lib_py, SoftwareX 27 (2024), doi:10.1016/j.softx.2024.101811: análise aberta de dados GNSS.
  • Li, Zaminpardaz, Kealy & Greentree — Quantum sensors for enhanced positioning and navigation: a comprehensive review, GPS Solutions 30(1):62 (2026), doi:10.1007/s10291-026-02030-y.
  • Bertone et al. — Earth and Space Science 8(6) (2021), doi:10.1029/2020EA001454: OD de dinâmica reduzida do GRAIL, o piso de aceleração empírica que o ajuste do LRO reproduz.