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

ComeçarEditar no GitHubFonte: README.md

Kshana: a marca, uma retícula de bússola que assinala o instante preciso, ao lado do logótipo kshanaKshana: a marca, uma retícula de bússola que assinala o instante preciso, ao lado do logótipo 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 com limiar mínimo de 85 % na integração contínua 176 de 401 capacidades VALIDATED face 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 registo conceptual do Zenodo de cada versão Está disponível uma licença comercial da Ashforde® OÜ, ver Edições kshana em crates.io, a versão publicada atual kshana em PyPI, a versão publicada atual kshana em npm, a versão publicada atual

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

Ensaie o minuto em que o GNSS fica às escuras. A consola de missão do Kshana, desenhada 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 de membros 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 a partir da projeção no solo do motor, com raios comprimidos para apresentação. O erro de tempo do relógio atinge um máximo de 62,7 ns face a uma salvaguarda de 50 ns, a densidade de potência portadora-ruído desce para -12.2 dB-Hz face a um piso de 25 dB-Hz, e o nível de proteção vertical chega a 135,4 m face a um limite de alerta de 50 m.Ensaie o minuto em que o GNSS fica às escuras. A consola de missão do Kshana, desenhada 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 de membros 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 a partir da projeção no solo do motor, com raios comprimidos para apresentação. O erro de tempo do relógio atinge um máximo de 62,7 ns face a uma salvaguarda de 50 ns, a densidade de potência portadora-ruído desce para -12.2 dB-Hz face a um piso de 25 dB-Hz, e o nível de proteção vertical chega a 135,4 m face a um limite de alerta de 50 m.
Conteúdo

Ensaiar o minuto em que o GNSS fica às escuras#

O Kshana reproduz jamming, spoofing e holdover do relógio quando os sinais GNSS (Global Navigation Satellite System) falham, e diz quanto tempo um sistema mantém a hora e a posição dentro do seu orçamento, e que relógio ou sensor dá mais margem. É um só motor em Rust. Funciona num terminal, num bloco de notas interativo, num IDE (ambiente de desenvolvimento integrado), num assistente de IA (inteligência artificial) ou no seu navegador.

Cada execução é reprodutível bit a bit a partir do cenário, da semente e da versão do motor. Cada capacidade tem uma de três etiquetas num registo 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 reprodutível para a resiliência PNT. A temporização e o holdover vêm primeiro, porque esse domínio é o mais bem validado. O Kshana é um instrumento de estudo e de compromissos: não é hardware gerador de sinais de radiofrequência (RF) (não aciona nenhum rádio e não transmite nada; a sua saída ao nível do sinal são ficheiros de amostras IQ em banda base para recetores de software), não é um recetor GNSS de hardware nem certificado (o seu recetor de software é uma ferramenta de análise) e não é um produto de voo. É novo na área? Comece pelo manual 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, etiqueta cada figura e tabela com o seu nível de evidência, lê registos de relógio medidos, verifica envios de parceiros de dados, estima onde pode estar um emissor de interferência e está disponível em dezassete idiomas além do inglês. O registo 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.

  • Cadeia da 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 face 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 face à 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 face à ó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 (Cadeia da missão, segmento lunar). No Studio, a cadeia lê-se em /studio/mission-thread/.
  • Etiquetas de evidência. Cada figura e tabela que uma execução escreve traz o nível e os ids das linhas do registo em que assenta, lidos da matriz.
  • Relógios medidos. Oito formatos de registo de relógio são lidos (docs/CLOCK-LOG-FORMATS.md) e uma série ajustada pode conduzir o holdover. Face a limiares fixados antecipadamente, o ajuste não atinge F1(a) em cinco de seis registos e F2 num; ambos permanecem MODELLED (Registo 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 emissores 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 nova campanha 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 noutros idiomas levam cerca do dobro do tempo (docs/i18n.md).

Novidades na 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. Corrige uma coisa na linha de comandos, atualiza dependências das ferramentas de validação cruzada e enuncia por inteiro os veredictos do benchmark.

  • Linha de comandos. kshana kinds | head (qualquer saída padrão fechada) já não entra em pânico: o programa termina em silêncio com o estado 141, como fazem outras ferramentas perante um pipe fechado. Os outros erros de escrita continuam a comunicar-se.
  • Dependencies. memmap2 0.9.11 nos dois ficheiros de bloqueio de verificação cruzada ANISE e pillow 13.0.0 e certifi 2026.10.19 nas fixações do ambiente de referência independente, tudo em xval/: nada do que é distribuído foi alterado.
  • kshana-bench, todos os veredictos. Face aos limiares pré-registados, três são NOT MET, cada um fixado por um teste: A2 (agc_k_sigma AUC 0,766 face a pelo menos 0,80), D1 (maior diferença 0,0301) e a tarefa (b) R1 (transportado, não reexecutado). Nenhum limiar foi relaxado (Bench).

Novidades na 0,38#

A 0,38 torna mensurável o árbitro neutro: avalia registos de recetores face a um calendário de testes publicado, lê mais recetores e sensores, testa sistemas de temporização e inclui um benchmark e um observatório de interferência. Continua a ser de caráter consultivo: nada aqui é certificado, nenhum resultado é uma homologação e nada transmite. Cada linha indica o que o registo contém para ela (como se obtém uma etiqueta); um estado nomeia apenas o que foi verificado, e a linha do registo e a página ligada dizem o que não foi.

Novo na 0,38 O que faz, e porquê Estado no registo Lido
Avaliação do jammertest kshana jammertest import lê o catálogo de testes e o plano de transmissão publicados da NPRA como verdade de referência agendada; jammertest score avalia um registo de recetor por teste (latência de deteção, alarmes em falta, falsos alarmes, tempo de recuperação), como um pacote de evidências assinado se for dada uma chave MODELLED: uma linha do registo. Os limiares foram pré-registados antes de qualquer execução avaliada; nos dados do JammerTest 2024 a regra de dados mínimos falhou nas duas execuções (4 e 7 janelas avaliáveis face a 10 exigidas), pelo que nenhum limiar é avaliável e nada é afirmado Jammertest
Os indicadores do próprio recetor UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG e NovAtel RXSTATUS lidos para um self_report por época e comparados com os alarmes do Kshana (ambos, só o recetor, só o Kshana, nenhum); um leitor Septentrio SBF e uma entrada --serial só de leitura MODELLED; a concordância entre o detetor de um recetor e o do Kshana não é validação Confiança do recetor
Mais recetores e sensores RTKLIB .pos, NovAtel OEM7, C/N0 de RTCM 3 MSM4/MSM7 (a partir das tabelas pyrtcm com licença BSD, não do texto RTCM), fluxos de monitorização do GNSS-SDR, um registo 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 registo; apenas ensaios escritos por nós, não foi lida nenhuma captura de um recetor real, de uma IMU, de uma execução do GNSS-SDR ou de um grafo ROS Entradas de máquina
Testes de temporização e de holdover o tipo holdover-test avalia um teste de holdover (GNSS removido pelo operador, holdover, recuperação) a partir de um registo de erro de tempo medido face a máscaras da ITU-T, "medido face à máscara"; leitores de registos do linuxptp e do chrony; as fases de hardware e o campo lab-attestation MODELLED: duas linhas do registo; os tempos são a declaração do operador, não verificados HIL de temporização, Segurança do hardware
Pacotes de normas, LunaNet AFS, ciclo completo de laboratório pacotes avaliados para DHS RPCF, IMO MSC.1/Circ.1575 e ICAO Doc 9849 Apêndice F face a limiares enunciados antes da execução, "fornece elementos de prova em apoio de"; uma tabela de correspondência NIST IR 8323r1; um gerador e verificador de códigos LunaNet AFS; um pacote assinado que liga o cenário, as condições de teste, o registo do recetor e a pontuação de uma execução de laboratório MODELLED para os pacotes e o ciclo completo; a verificação do código AFS é VALIDATED face às suas colunas de verificação impressas (ver as linhas do registo) Normas, LunaNet AFS
kshana-bench e o observatório tarefas, partições e métricas fixas para deteção de interferência, deteção por IQ, previsão de holdover e a diferença de otimismo, com um conjunto reservado selado e uma tabela de classificação estática; um produto diário reprodutível de interferência com um atraso de 24 h, células grosseiras e sem atribuição de causa sem linha própria no registo: avalia submissões, e as suas linhas de base são etiquetadas MODELLED nos ficheiros de resultados; face aos limiares pré-registados, o avaliador, 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 face a pelo menos 0,80 na partição de teste), D1 (maior diferença 0,0301) e a tarefa (b) R1 (transportado, não reexecutado); ver xval/bench/RESULTS-v2.md Bench, Observatório
Exportadores telemetria de confiança como mensagens de descoberta e de estado MQTT do Home Assistant (apenas publicação, sem credenciais), a par de Prometheus, CEF, LEEF e OTLP MODELLED: uma linha do registo Telemetria de confiança
Margem da ligação ótica ao longo do tempo o tipo optical-atmosphere pode escrever uma realização com semente da meteorologia de um local como uma série de margem de ligação MODELLED: uma linha do registo; uma amostra do modelo, não o clima Atmosfera ótica

Destaques da 0,37: registo de alterações. A lista completa da 0,38 está no registo de alterações.

A 0,38 em profundidade#

Cada capacidade da tabela acima, em poucas linhas: o que faz, um comando para a executar, uma imagem desenhada a partir de uma execução real do motor, e o que o registo contém para ela. As imagens são escritas por tools/gen_figures_038.py para docs/figures/0.38/ (nunca desenhadas à mão): python3 tools/gen_figures_038.py reescreve-as a partir de um motor compilado, e --check falha se alguma estiver desatualizada ou se a sua legenda aqui diferir. Quando uma entrada é um registo, é um registo fictício que o script escreve, porque os registos reais de terceiros nunca são incorporados, e a legenda di-lo. Tudo o que se segue é de caráter consultivo: não certificado, não uma homologação, e nada transmite. Um estado nomeia o que foi verificado e nada mais; como se obtém uma etiqueta.

Avaliação do jammertest#

kshana jammertest import transforma o catálogo de testes e o plano de transmissão publicados da NPRA em verdade de referência agendada, e kshana jammertest score avalia um registo de recetor face a ela: para cada teste agendado, se foi detetado, com que atraso, e quanto tempo o recetor demorou a recuperar, além dos falsos alarmes fora de todos os intervalos. O catálogo é obtido, nunca incorporado.

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 registo sintético de recetor face a um calendário de três testes, a partir de uma execução real do motor v0.40.0 (`kshana jammertest score`). O registo é inventado: 1800 s de NMEA com uma queda de C/N0 de 20 dB em dois intervalos. O calendário enumera três slots; o slot do meio não tem jammer no registo. A pontuação marca 2 de 3 testes detetados (latência mediana de 0 s) e 1 falhado, com 0 execuções de falso alarme ao longo de 0,25 h de tempo limpo. Nada aqui diz seja o que for sobre um recetor real. Software de caráter consultivo, não um equipamento de navegação homologado (IEC 61108, IEC 61162): o operador continua a ser responsável pela navegação da embarcação.Pontuação de um registo sintético de recetor face a um calendário de três testes, a partir de uma execução real do motor v0.40.0 (`kshana jammertest score`). O registo é inventado: 1800 s de NMEA com uma queda de C/N0 de 20 dB em dois intervalos. O calendário enumera três slots; o slot do meio não tem jammer no registo. A pontuação marca 2 de 3 testes detetados (latência mediana de 0 s) e 1 falhado, com 0 execuções de falso alarme ao longo de 0,25 h de tempo limpo. Nada aqui diz seja o que for sobre um recetor real. Software de caráter consultivo, não um equipamento de navegação homologado (IEC 61108, IEC 61162): o operador continua a ser responsável pela navegação da embarcação.

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

Os indicadores do próprio recetor#

UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG e NovAtel RXSTATUS são lidos para um self_report por época e postos ao lado dos alarmes do Kshana: ambos, só o recetor, só o Kshana, ou nenhum. Um leitor Septentrio SBF e uma entrada --serial só 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 indicador de spoofing do próprio recetor posto ao lado dos alarmes do Kshana, a partir de uma execução real do motor v0.40.0 sobre um registo UBX fictício (200 épocas a 1 Hz). O C/N0 desce 20 dB entre 80 e 90 s e entre 120 e 130 s; o recetor assinala 120 a 130 s e 160 a 165 s. Das 140 épocas comparadas após a calibração, 11 tiveram ambos a assinalar, 6 só o recetor, 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 investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana.O indicador de spoofing do próprio recetor posto ao lado dos alarmes do Kshana, a partir de uma execução real do motor v0.40.0 sobre um registo UBX fictício (200 épocas a 1 Hz). O C/N0 desce 20 dB entre 80 e 90 s e entre 120 e 130 s; o recetor assinala 120 a 130 s e 160 a 165 s. Das 140 épocas comparadas após a calibração, 11 tiveram ambos a assinalar, 6 só o recetor, 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 investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana.

Estado no registo: MODELLED. A concordância entre o detetor de um recetor e o do Kshana não é validação. Confiança do recetor.

Mais recetores e sensores#

RTKLIB .pos, NovAtel OEM7, C/N0 de RTCM 3 MSM4/MSM7, fluxos de monitorização do GNSS-SDR, um registo de IMU como segundo sensor, um pacote ROS 2 e uma ponte gnss_lib_py terminam todos na mesma cronologia de receiver-trust. imu-fit lê, a partir de um registo 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 realmente se tem.

kshana imu-fit still.csv --format csv --axis x --expected-mean 0 --id bench-imu
O que `kshana imu-fit` lê de um registo de IMU estacionária, numa execução real do motor v0.40.0 sobre um registo 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 desvio 0,00296 e as primeiras inclinações de Allan (-0.51 e -0.49; cerca de -0.5 onde domina o ruído branco). A tabela ao lado é o TOML que o comando imprime. O estimador é verificado apenas em registos sintéticos. Consultivo: saída de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.O que `kshana imu-fit` lê de um registo de IMU estacionária, numa execução real do motor v0.40.0 sobre um registo 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 desvio 0,00296 e as primeiras inclinações de Allan (-0.51 e -0.49; cerca de -0.5 onde domina o ruído branco). A tabela ao lado é o TOML que o comando imprime. O estimador é verificado apenas em registos sintéticos. Consultivo: saída de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de segurança da vida humana.

Estado no registo: MODELLED. Apenas ensaios escritos por nós; não foi lida nenhuma captura de um recetor real, de uma IMU, de uma execução do GNSS-SDR ou de um grafo ROS. Entradas de máquina.

Testes de temporização e de holdover#

O tipo holdover-test avalia um teste de holdover (GNSS removido pelo operador, holdover, recuperação) a partir de um registo de erro de tempo medido face a máscaras da ITU-T, e di-lo com essas palavras: medido face à máscara. Leitores de registos do linuxptp e do chrony alimentam-no; as fases de hardware e o campo lab-attestation dizem quem declarou o quê.

kshana scenarios/holdover-test-example.toml
Um teste de holdover avaliado a partir de um registo 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 aos 600 s e restaurado aos 2400 s; o erro de tempo deriva até 299 ns no fim do holdover, ultrapassando o orçamento de 100 ns após 675 s, e regressa para dentro da banda de 100 ns 70 s após o restauro. Veredictos: máscaras de linha de base PASS, máscaras de holdover FAIL, envolvente de holdover FAIL, recuperação RECOVERED. Medido face à máscara, não uma aprovação. Os tempos são a declaração do operador, não verificados pelo Kshana. Consultivo: saída de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana.Um teste de holdover avaliado a partir de um registo 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 aos 600 s e restaurado aos 2400 s; o erro de tempo deriva até 299 ns no fim do holdover, ultrapassando o orçamento de 100 ns após 675 s, e regressa para dentro da banda de 100 ns 70 s após o restauro. Veredictos: máscaras de linha de base PASS, máscaras de holdover FAIL, envolvente de holdover FAIL, recuperação RECOVERED. Medido face à máscara, não uma aprovação. Os tempos são a declaração do operador, não verificados pelo Kshana. Consultivo: saída de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana.

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

Pacotes de normas#

Pacotes avaliados para os perfis de teste DHS Resilient PNT, IMO MSC.1/Circ.1575 e ICAO Doc 9849 Apêndice F, mais uma tabela de correspondência NIST IR 8323r1 em compliance-report. Cada teste executa um cenário incluído e compara um campo de resultado com um limiar enunciado antes da execução; um teste que precisa de um registo de recetor é listado como precisando de uma entrada, não avaliado. A formulação é "fornece elementos de prova 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 registo de recetor ou documentação do equipamento). Cada limiar foi fixado antes da execução; uma falha é mantida como falha. Um limiar atingido indica que um cenário modelado atingiu um limiar fixado, nada sobre um produto. Os pacotes fornecem elementos de prova em apoio das linhas que citam; não são uma avaliação. Consultivo: resultado de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado nem um serviço de salvaguarda da vida humana; não deve ser a única base de nenhuma 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 registo de recetor ou documentação do equipamento). Cada limiar foi fixado antes da execução; uma falha é mantida como falha. Um limiar atingido indica que um cenário modelado atingiu um limiar fixado, nada sobre um produto. Os pacotes fornecem elementos de prova em apoio das linhas que citam; não são uma avaliação. Consultivo: resultado de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado nem um serviço de salvaguarda da vida humana; não deve ser a única base de nenhuma decisão de navegação ou de segurança.

Estado no registo: MODELLED. Um limiar atingido diz que um cenário modelado atingiu um limiar indicado, nada sobre um produto; cada falha é mantida e fixada por um teste. Normas.

LunaNet AFS#

O gerador de códigos do Sinal Direto Aumentado LunaNet (códigos Gold, Weil e terciários, a trama da mensagem e a 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 verificado face às colunas impressas da especificação, a partir de uma execução real do motor v0.40.0 (`kshana lunanet-afs-check spec`, fixado a LNIS V5, AD1 Volume A (LSIS-AFS) V1.0, 29 de janeiro de 2025; o documento marca as suas tabelas de códigos {LSIS-TBC}). 9 de 10 verificações são satisfeitas; B4 é NOT MET (420 de 421 coincidiram). Verifica um fluxo de símbolos face a uma edição de uma especificação publicada e nada diz sobre qualquer nó ou serviço LunaNet. Consultivo: resultado de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana. Verifica um fluxo de símbolos face a 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 verificado face às colunas impressas da especificação, a partir de uma execução real do motor v0.40.0 (`kshana lunanet-afs-check spec`, fixado a LNIS V5, AD1 Volume A (LSIS-AFS) V1.0, 29 de janeiro de 2025; o documento marca as suas tabelas de códigos {LSIS-TBC}). 9 de 10 verificações são satisfeitas; B4 é NOT MET (420 de 421 coincidiram). Verifica um fluxo de símbolos face a uma edição de uma especificação publicada e nada diz sobre qualquer nó ou serviço LunaNet. Consultivo: resultado de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana. Verifica um fluxo de símbolos face a uma edição de uma especificação publicada e nada diz sobre qualquer nó ou serviço LunaNet.

Estado no registo: VALIDATED para as verificações de códigos e de sincronização, face aos valores que a especificação imprime (e que marca como TBC); uma verificação é NOT MET, mantida e fixada (uma coluna impressa de código terciário difere: o documento imprime o mesmo valor para dois PRN). As palavras LDPC e CRC das subtramas 2 a 4 não são verificadas. As linhas do registo 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, momentos, potências). kshana evidence round-trip liga o hash do cenário, o hash das condições, o hash do registo do recetor e a pontuação num único pacote assinado, e recusa um pacote cujas condições e cenário de avaliação discordem quanto aos eventos. O Kshana nunca produz nem reproduz um sinal: a forma como um cenário chegou a um recetor é da responsabilidade do operador.

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

A imagem é a estrutura de um pacote. Estado no registo: MODELLED. Condições de teste, Test bench.

kshana-bench#

Tarefas, partições e métricas fixas para deteção de interferência, deteção por IQ, previsão de holdover e a diferença de otimismo, com um conjunto reservado selado e uma tabela de classificação estática. Avalia submissões; não é uma classificação de recetores.

kshana bench baseline --task d --split test --out results/
As linhas de base incorporadas da tarefa D do kshana-bench (a diferença de otimismo) na divisã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 elas é a diferença de otimismo, face a 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). As etiquetas são etiquetas de modelo generativo de um corpus sintético, nunca dados de terreno: MODELLED. Consultivo: modelado ou medido face a referências indicadas, não é uma aprovação, uma certificação nem uma declaração de aderência à norma. Uma pontuação descreve um registo ou corpus, nunca um produto.As linhas de base incorporadas da tarefa D do kshana-bench (a diferença de otimismo) na divisã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 elas é a diferença de otimismo, face a 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). As etiquetas são etiquetas de modelo generativo de um corpus sintético, nunca dados de terreno: MODELLED. Consultivo: modelado ou medido face a referências indicadas, não é uma aprovação, uma certificação nem uma declaração de aderência à norma. Uma pontuação descreve um registo ou corpus, nunca um produto.

Estado no registo: sem linha própria no registo; as linhas de base são etiquetadas MODELLED nos ficheiros de resultados. Face aos limiares pré-registados, o avaliador, 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 face a pelo menos 0,80 na partição de teste), D1 (maior diferença 0,0301) e a tarefa (b) R1 (transportado da campanha anterior, não reexecutado). Os valores estão em xval/bench/RESULTS-v2.md. Bench.

Observatório de interferência#

Um produto por dia UTC e região, a partir de um arquivo aberto de posições de aeronaves, numa grelha grosseira fixa: cada célula é degradada, não degradada ou não observada (o que não é "livre"). Publicado não antes de 24 h após o fim do dia, com as 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 do mapa de interferência, desenhados a partir das amostras submetidas em examples/interference-map/output, cada um com a sua própria rota sintética e as parcelas de exposição da rota que o motor comunica. À esquerda, um dia ADS-B: 1 célula degradada, 6 não degradadas, 4 não avaliadas (a tracejado) 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 AIS: células assinaladas pelos detetores 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 assinalada 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, em pleno meio do Atlântico, e não constituem uma medição.Dois dias sintéticos do mapa de interferência, desenhados a partir das amostras submetidas em examples/interference-map/output, cada um com a sua própria rota sintética e as parcelas de exposição da rota que o motor comunica. À esquerda, um dia ADS-B: 1 célula degradada, 6 não degradadas, 4 não avaliadas (a tracejado) 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 AIS: células assinaladas pelos detetores 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 assinalada 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, em pleno meio do Atlântico, e não constituem uma medição.

A imagem são os dias de amostra registados no repositório, não um produto do observatório. Estado no registo: MODELLED: sem referência independente externa, sem verdade de referência e sem atribuição de causa; uma célula que não é observada não foi avaliada, o que não é o mesmo que estar livre. 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 apenas para um destino que lhe seja dado 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 banda não fiável é a que está ativa), e as últimas mensagens CEF e LEEF. O comando não publica nada a menos que lhe seja dado 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 a ser 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 banda não fiável é a que está ativa), e as últimas mensagens CEF e LEEF. O comando não publica nada a menos que lhe seja dado 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 a ser responsável pela navegação da embarcação.

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

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

kshana scenarios/optical-atmosphere-network.toml
Uma realização com semente da margem da ligação do local '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, um passo de 600 s). A margem desce abaixo de zero durante os episódios de nuvens; nesta amostra a ligação está ativa 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 é uma amostra do modelo e não o clima, e difere da disponibilidade estatística (37,8 %) pelo erro de amostragem da amostra. Apenas análise de caráter consultivo: não é um produto certificado de disponibilidade, de integridade ou de navegação, nem uma previsão para qualquer local real, a menos que as suas entradas de clima provenham de um conjunto de dados indicado.Uma realização com semente da margem da ligação do local '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, um passo de 600 s). A margem desce abaixo de zero durante os episódios de nuvens; nesta amostra a ligação está ativa 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 é uma amostra do modelo e não o clima, e difere da disponibilidade estatística (37,8 %) pelo erro de amostragem da amostra. Apenas análise de caráter consultivo: não é um produto certificado de disponibilidade, de integridade ou de navegação, nem uma previsão para qualquer local real, a menos que as suas entradas de clima provenham de um conjunto de dados indicado.

Estado no registo: MODELLED. Uma amostra do modelo, não o clima. Atmosfera ótica.

Novas vistas do Studio#

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

Navegação de utilizadores espaciais (gnss-ssv)#

Para uma nave espacial acima, em torno ou muito para além das órbitas GNSS: quantos sinais GNSS pode utilizar, com que intensidade, que qualidade tem a geometria e o que um filtro de bordo pode fazer com eles. Um tipo, quatro modos, escolhidos pelas tabelas do cenário: uma casca de utilizadores (a proporção 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 do raio rasante ao longo de uma órbita), uma execução de navegação (um filtro de nove estados sobre pseudodistâncias, até à Lua) e uma formação (navegação relativa de adjuntos em torno de um principal). A fonte pública para a comparação de disponibilidade é o livrete 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. 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 utilizador numa esfera a 36000 km de altitude com uma 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 utilizadores, 3 dias, passos de 10 min), com um limiar de 20 dB-Hz. Para cada constelação e banda, duas barras: a proporção de pares (utilizador, é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 indicadas, não uma medição e não uma afirmação de volume de serviço para nenhum sistema. A dimensão reduzida não é a comparação com o livrete. Consultivo: saída de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana.Disponibilidade de sinal para um utilizador numa esfera a 36000 km de altitude com uma 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 utilizadores, 3 dias, passos de 10 min), com um limiar de 20 dB-Hz. Para cada constelação e banda, duas barras: a proporção de pares (utilizador, é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 indicadas, não uma medição e não uma afirmação de volume de serviço para nenhum sistema. A dimensão reduzida não é a comparação com o livrete. Consultivo: saída de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda 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 de potência portadora-ruído entre os sinais à vista, face ao 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. Das ligações recebidas, 2252 chegaram por um lóbulo principal e 696 por lóbulos laterais, usando um diagrama paramétrico de substituição, identificado como tal, e não o diagrama medido de qualquer sistema. PDOP mediano 67, percentil 95 358. MODELLED: um estudo modelado a partir de entradas indicadas, 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 investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda 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 de potência portadora-ruído entre os sinais à vista, face ao 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. Das ligações recebidas, 2252 chegaram por um lóbulo principal e 696 por lóbulos laterais, usando um diagrama paramétrico de substituição, identificado como tal, e não o diagrama medido de qualquer sistema. PDOP mediano 67, percentil 95 358. MODELLED: um estudo modelado a partir de entradas indicadas, 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 investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana. Um filtro de bordo de nove estados numa transferência da órbita baixa para a 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). Num eixo logarítmico, o erro de posição verdadeiro e o limite de um sigma do próprio filtro face ao tempo desde o início. Dentro das órbitas GNSS o RMS da posição é 1,4 m; acima delas é 90 m, com o erro final 184 m a 193 330 km de altitude com 1 medição. O erro de estimação normalizado ao quadrado médio ao longo de toda a execução é 4,4 (cerca de 3 para um bloco de posição consistente). A verdade de referência e o filtro partilham as suas aproximações do Sol e da Lua. MODELLED: um estudo modelado a partir de entradas indicadas, 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 investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana.Um filtro de bordo de nove estados numa transferência da órbita baixa para a 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). Num eixo logarítmico, o erro de posição verdadeiro e o limite de um sigma do próprio filtro face ao tempo desde o início. Dentro das órbitas GNSS o RMS da posição é 1,4 m; acima delas é 90 m, com o erro final 184 m a 193 330 km de altitude com 1 medição. O erro de estimação normalizado ao quadrado médio ao longo de toda a execução é 4,4 (cerca de 3 para um bloco de posição consistente). A verdade de referência e o filtro partilham as suas aproximações do Sol e da Lua. MODELLED: um estudo modelado a partir de entradas indicadas, 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 investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana. Navegação relativa de 2 adjuntos em torno de um principal numa ó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 adjunto, duas barras: o RMS da posição relativa obtido por subtração das duas estimativas absolutas independentes, e o 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 normalizado ao quadrado médio 187 face a cerca de 3 para um filtro consistente, pelo que a sua incerteza indicada é muito pequena. MODELLED: um estudo modelado a partir de entradas indicadas, 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 investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana.Navegação relativa de 2 adjuntos em torno de um principal numa ó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 adjunto, duas barras: o RMS da posição relativa obtido por subtração das duas estimativas absolutas independentes, e o 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 normalizado ao quadrado médio 187 face a cerca de 3 para um filtro consistente, pelo que a sua incerteza indicada é muito pequena. MODELLED: um estudo modelado a partir de entradas indicadas, 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 investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana.

Estado no registo: MODELLED, e a comparação com o livrete falha na sua maior parte. Os limiares foram fixados antes da execução. De oito, apenas S0 (o balanço de ligação 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 do volume de serviço superior e inferior (43 de 52 e 48 de 52 células), o volume de serviço superior a 15/20/25 dB-Hz, as seis missões GEO, a missão HEO e o diagrama paramétrico de lóbulos laterais face a diagramas medidos de painéis GPS. Quase todas as falhas em S1 a S5 envolvem o GLONASS, e o livrete imprime dois ângulos de referência diferentes para ele; uma variante de diagnóstico que usa o outro par leva S1, S2 e S4 a todas as células, mas não substitui a execução de referência e nenhuma linha é VALIDATED. O filtro absoluto da execução de formação também é demasiado confiante (erro normalizado ao quadrado médio muito acima do valor de cerca de 3 que um filtro consistente dá).

A comparação registada do modelo de disponibilidade de utilizadores espaciais com o livrete público do Volume de Serviço Espacial, a partir dos resultados registados no repositório da execução pré-registada (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 diagramas de painel (NOT MET). Apenas S0 e S6 são atingidos na leitura pré-registada. Uma variante de diagnóstico que usa os outros ângulos GLONASS do livrete leva S1, S2 e S4 a todas as células, mas não substitui a execução de referência. Nenhuma linha do registo é VALIDATED. Consultivo: saída de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana.A comparação registada do modelo de disponibilidade de utilizadores espaciais com o livrete público do Volume de Serviço Espacial, a partir dos resultados registados no repositório da execução pré-registada (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 diagramas de painel (NOT MET). Apenas S0 e S6 são atingidos na leitura pré-registada. Uma variante de diagnóstico que usa os outros ângulos GLONASS do livrete leva S1, S2 e S4 a todas as células, mas não substitui a execução de referência. Nenhuma linha do registo é VALIDATED. Consultivo: saída de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana.

Navegação de utilizadores 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 a bordo com GNSS terrestre numa órbita em halo face a uma independente em terra), carrier-phase (fixação da ambiguidade inteira entre estações de superfície e um orbitador), frame-coestimation (o datum lunar a partir de medições de distância de estações terrestres com e sem ligações de orbitador), space-tie (desvios de laser, VLBI e GNSS numa só nave espacial face ao erro de ligação local) e geodesy-sensitivity (que família de observáveis vê os números de Love h2, k2 e l2). O modelo é um modelo restrito de três corpos com simplificações indicadas 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
Coerência de uma determinação de órbita GNSS da Terra a bordo numa órbita de halo quase retilínea com uma determinação de órbita independente a partir de terra, 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 normalizada média q é 5,81 sem erro de modelo e 5,95 com um erro de aceleração injetado de 3e-10 m/s2, face a 6 esperado: as duas soluções de órbita são coerentes (limiar C1 MET). A parte dos ensaios acima do ponto dos 95 % é 0,040 e 0,052; o limiar para detetar o erro injetado era de pelo menos 0,5, pelo que é NOT MET (C3): a solução a bordo é conhecida a cerca de 352 m face a 23 m para a de terra, pelo que um deslocamento de dez metros se esconde dentro da sua covariância. MODELLED: um modelo restrito de três corpos com simplificações indicadas e dados de entrada ilustrativos, não uma medição de qualquer grandeza lunar. Consultivo: resultado de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana.Coerência de uma determinação de órbita GNSS da Terra a bordo numa órbita de halo quase retilínea com uma determinação de órbita independente a partir de terra, 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 normalizada média q é 5,81 sem erro de modelo e 5,95 com um erro de aceleração injetado de 3e-10 m/s2, face a 6 esperado: as duas soluções de órbita são coerentes (limiar C1 MET). A parte dos ensaios acima do ponto dos 95 % é 0,040 e 0,052; o limiar para detetar o erro injetado era de pelo menos 0,5, pelo que é NOT MET (C3): a solução a bordo é conhecida a cerca de 352 m face a 23 m para a de terra, pelo que um deslocamento de dez metros se esconde dentro da sua covariância. MODELLED: um modelo restrito de três corpos com simplificações indicadas e dados de entrada ilustrativos, não uma medição de qualquer grandeza lunar. Consultivo: resultado de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda 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, escrito 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 registados 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 investigação 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, escrito 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 registados 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 investigação 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 referencial lunar de sete parâmetros (três translações, uma escala e três rotações) a partir da medição de distância a estações da Terra, com e sem distâncias orbitador-estação à 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 das rotações diminui com as ligações do orbitador (por exemplo, t_z de 0,98 m para 0,046 m); o menor valor próprio da informação sobe 111 vezes e o traço do CRLB desce para 1,0 % (limiar F3 MET). Isto pressupõe que a órbita é conhecida nos eixos lunares, com o seu erro transportado pelo sigma de distância do orbitador de 1 m. MODELLED: um modelo restrito de três corpos com simplificações indicadas e dados de entrada ilustrativos, não uma medição de qualquer grandeza lunar. Consultivo: resultado de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana.Precisão do referencial lunar de sete parâmetros (três translações, uma escala e três rotações) a partir da medição de distância a estações da Terra, com e sem distâncias orbitador-estação à 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 das rotações diminui com as ligações do orbitador (por exemplo, t_z de 0,98 m para 0,046 m); o menor valor próprio da informação sobe 111 vezes e o traço do CRLB desce para 1,0 % (limiar F3 MET). Isto pressupõe que a órbita é conhecida nos eixos lunares, com o seu erro transportado pelo sigma de distância do orbitador de 1 m. MODELLED: um modelo restrito de três corpos com simplificações indicadas e dados de entrada ilustrativos, não uma medição de qualquer grandeza lunar. Consultivo: resultado de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana. Precisão dos desvios entre as posições por medição de distância a laser, VLBI e GNSS de uma nave, face ao erro da ligação local em terra, 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 de translação laser menos GNSS mantém-se perto de 1,04 m até a ligação atingir 1 m: é 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 multiplicada pelo seu sigma. MODELLED: um modelo restrito de três corpos com simplificações indicadas e dados de entrada ilustrativos, não uma medição de qualquer grandeza lunar. Consultivo: resultado de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana.Precisão dos desvios entre as posições por medição de distância a laser, VLBI e GNSS de uma nave, face ao erro da ligação local em terra, 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 de translação laser menos GNSS mantém-se perto de 1,04 m até a ligação atingir 1 m: é 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 multiplicada pelo seu sigma. MODELLED: um modelo restrito de três corpos com simplificações indicadas e dados de entrada ilustrativos, não uma medição de qualquer grandeza lunar. Consultivo: resultado de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana. Que 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 relativamente a um parâmetro, nas unidades próprias dessa família (pelo que as células se comparam ao longo de uma linha, não ao longo de uma coluna); um travessão significa que a família não tem sensibilidade. medição de distância por laser: h2 7,6, k2 nenhuma, l2 9,8. seguimento do orbitador: h2 nenhuma, k2 0,00086, l2 nenhuma. gravímetro à superfície: h2 2.9e+03, k2 4.3e+03, l2 nenhuma. relógio à 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 baixou o menor valor próprio (28 de 28 acréscimos), mas o traço da pseudo-inversa não foi maior em apenas 16 de 28: essa metade do limiar G3 é NOT MET. A família do orbitador vê o integral ao longo da linha de visada da aceleração de k2, um valor do extremo superior. MODELLED: um modelo restrito de três corpos com simplificações indicadas e dados de entrada ilustrativos, não uma medição de qualquer grandeza lunar. Consultivo: resultado de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana.Que 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 relativamente a um parâmetro, nas unidades próprias dessa família (pelo que as células se comparam ao longo de uma linha, não ao longo de uma coluna); um travessão significa que a família não tem sensibilidade. medição de distância por laser: h2 7,6, k2 nenhuma, l2 9,8. seguimento do orbitador: h2 nenhuma, k2 0,00086, l2 nenhuma. gravímetro à superfície: h2 2.9e+03, k2 4.3e+03, l2 nenhuma. relógio à 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 baixou o menor valor próprio (28 de 28 acréscimos), mas o traço da pseudo-inversa não foi maior em apenas 16 de 28: essa metade do limiar G3 é NOT MET. A família do orbitador vê o integral ao longo da linha de visada da aceleração de k2, um valor do extremo superior. MODELLED: um modelo restrito de três corpos com simplificações indicadas e dados de entrada ilustrativos, não uma medição de qualquer grandeza lunar. Consultivo: resultado de análise de uma ferramenta de investigação e engenharia, não um equipamento de navegação homologado e não um serviço de salvaguarda da vida humana.

Estado no registo: MODELLED, e três limiares são NOT MET. A numérica é verificada face a programas independentes em numpy e scipy; nada é comparado com uma medição de uma grandeza lunar, e nada é VALIDATED. Atingido: as duas soluções de órbita são consistentes (q médio 5,81 face a 6 esperado), e as ligações de orbitador elevam cerca de 111 vezes o menor valor próprio do datum, assumindo uma órbita conhecida. Não atingido: o erro de modelo injetado de 3e-10 m/s2 não é detetado (C3: a solução a bordo é conhecida com cerca de 350 m, pelo que cerca de dez metros se escondem na sua covariância); a fixação inteira não é conseguida (1 a 3 % de sucesso a 25 dBi, e a 12 dBi registados o problema não pode ser formulado); e a metade do traço de G3 para a adição de uma família de observáveis (o traço subiu em 12 de 28 adições, de cada vez porque a família elevou a característica). Cada falha é fixada por um teste. Infraestrutura lunar.

Kshana Studio#

Abra kshana.dev/studio e todo o motor corre no seu navegador, compilado para WebAssembly. Nada a instalar, e nada é carregado. O Studio tem duas vistas do mesmo motor, e um comutador no cabeçalho alterna entre elas, mantendo o cenário, a vista e as definições que tenha alterado.

A vista Simples é aquela em que o Studio abre. Parte de perguntas (quantos satélites consigo ver, posso confiar na minha solução de posição, quanto tempo pode um relógio manter a hora, o que faz um jammer ao meu recetor) e de um mapa de tudo o que o motor pode fazer, com cada área acompanhada da sua proporção de métodos validados. Abra um cenário e a resposta vem primeiro: uma frase simples, escrita para o que esse cenário mede, depois os seus valores principais e um gráfico. No máximo cinco definições ficam à vista, as que mais alteram a resposta; as restantes aguardam em Definições avançadas. Como isto é calculado explica o método, e Para investigadores dá os valores do próprio motor, o ficheiro do cenário, o código para o executar a partir de 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 respeita os 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 recetor 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 é fiá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 secções recolhidas Configurações avançadas (13 a mais), Como isto é calculado (8 validados, 6 modelados) e Para investigadores. Abaixo, as visualizações desse resultado e os níveis de proteção traçados face 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 respeita os 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 recetor 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 é fiá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 secções recolhidas Configurações avançadas (13 a mais), Como isto é calculado (8 validados, 6 modelados) e Para investigadores. Abaixo, as visualizações desse resultado e os níveis de proteção traçados face ao limite de alerta.

A vista Avançada é o painel completo: a biblioteca de cenários, cinco passos numerados (Escolher, Definir, Executar, Ler resultados, Partilhar ou exportar), os valores principais com selos PASS e FAIL onde a execução indica um limiar, e todos os painéis: resumo, gráficos, mapas, repetição, o relatório do motor e exportações. Uma caixa de pesquisa chega a cenários, domínios e aos campos que contêm, e é possível fixar até quatro execuções e compará-las lado a lado.

O ecrã inicial da vista Simples, e a vista Avançada após uma execução
Kshana Studio, visão simples, ecrã inicial, com o título O que gostaria de descobrir?, com o motor v0.40.0 ativo e, na barra superior, três ligações: Relatório de treino, Mapa de interferência e Confiança no recetor. 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 recetor. Abaixo da primeira, o seu resultado escrito: 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, num 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 escrita e a sua parcela de métodos validados, e as 173 de 350 capacidades do registo validadas.Kshana Studio, visão simples, ecrã inicial, com o título O que gostaria de descobrir?, com o motor v0.40.0 ativo e, na barra superior, três ligações: Relatório de treino, Mapa de interferência e Confiança no recetor. 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 recetor. Abaixo da primeira, o seu resultado escrito: 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, num 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 escrita e a sua parcela de métodos validados, e as 173 de 350 capacidades do registo 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 Partilhar 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 fila 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 Partilhar 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 fila 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 as suas notas de compilação estão em web/README.md.

O sítio#

O resto de kshana.dev é construído a partir dos ficheiros próprios deste repositório e de execuções do motor: missões, capacidades, o registo de evidências, a investigação 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 consola 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, Investigação 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 consola 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, Investigação 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 A que responde
Espetro como um jammer toma a banda L do GNSS, banda a banda, segundo a segundo
Relógios e temporização quanto tempo cada relógio mantém a hora depois de o GNSS se perder
Constelações em torno de qualquer corpo cobertura, diluição da precisão e disponibilidade em torno da Terra, da Lua ou de Marte
Sistema solar onde está cada planeta, e o tempo de luz de qualquer ligação
Navegação em órbita terrestre baixa uma passagem, uma ligação, uma mensagem de navegação e uma solução de posição fundida, fase a fase
Campanhas uma missão encadeada, uma varredura ou um conjunto de Monte Carlo num só cenário
Animação a série temporal de uma execução como desenho animado, um leitor ou fotogramas
Relatórios cada valor com a sua unidade e a sua etiqueta, 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 pode a ponte confiar nesta solução de posição: uma pontuação de 0-100 e motivos para o NMEA de uma embarcação, em direto ou a partir de um registo (consultivo, não um equipamento de navegação homologado)
Fluxos NMEA de formação NMEA de ponte sintético com jamming e spoofing encenados e um registo de instrutor, para formação de tripulações (apenas texto; nunca para os sistemas de navegação em direto de uma embarcação; consultivo, não um equipamento de navegação homologado)
Mapa de interferência onde aeronaves e navios comunicaram dados de navegação degradados, e quanto de um percurso isso afeta
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 a respetiva elipse, nunca um ponto (MODELLED; kshana interference-map locate)
Pacotes de evidências um registo técnico assinado e verificável offline da janela de registo 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 compilação de referência para um pequeno computador junto ao recetor (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 é escrito), e como avaliar depois o registo do recetor
Mapeamento de compliance e relatório kshana compliance-report: para que linhas de referenciais públicos de resiliência um conjunto de execuções fornece elementos de prova em apoio de, e a lacuna que fica
Cadernos interativos tutoriais executáveis: fluxos de confiança e de formação de embarcações, uma exposição de percurso no mapa de interferência, mapeamento de compliance e o test bench, quântico contra GDOP clássico
Verificador de Galileo OSNMA de que satélites um recetor pode autenticar criptograficamente os dados de navegação, e porque falha uma verificação; o Kshana não concede quaisquer direitos ao abrigo dos ICD IPRs da OSNMA da UE (ver 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 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 de membros numa grelha de 10 s ao longo de T+01:16:10. Três faixas: erro de tempo do relógio face a uma salvaguarda de 50 ns (máximo 62,7 ns), densidade de potência portadora-ruído efetiva face a um piso de 25 dB-Hz (mínimo -12.2 dB-Hz), e nível de proteção vertical face a um limite de alerta de 50 m (máximo 135,4 m), com os eventos de alarme da execução: T+00:20:00 alarmes do detetor de spoofing de RF (monitores fundidos de consistência, potência e qualidade do sinal); T+00:26:10 alarmes do monitor de spoofing assistido pelo 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 de membros numa grelha de 10 s ao longo de T+01:16:10. Três faixas: erro de tempo do relógio face a uma salvaguarda de 50 ns (máximo 62,7 ns), densidade de potência portadora-ruído efetiva face a um piso de 25 dB-Hz (mínimo -12.2 dB-Hz), e nível de proteção vertical face a um limite de alerta de 50 m (máximo 135,4 m), com os eventos de alarme da execução: T+00:20:00 alarmes do detetor de spoofing de RF (monitores fundidos de consistência, potência e qualidade do sinal); T+00:26:10 alarmes do monitor de spoofing assistido pelo 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 terrestre baixa
A banda L do GNSS como uma única densidade espetral de potência ao longo de 60 s, a partir de uma execução real do tipo spectrum (l-band-waterfall-jamming.toml, semente 7, motor v0.40.0): frequência na horizontal, tempo na vertical, cor para a potência acima do piso de ruído de -202.0 dBW/Hz. Jammers: dispositivo de privacidade com chirp (chirp, ligado aos 10 s, desligado aos 40 s); tom CW em L1 (cw, ligado aos 30 s); ruído de banda estreita em L2 (narrowband, ligado aos 45 s). Pior banda GPS L1 C/A: C/N0 efetivo mínimo 3,2 dB-Hz aos 31 s face a um piso de seguimento 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 espetral de potência ao longo de 60 s, a partir de uma execução real do tipo spectrum (l-band-waterfall-jamming.toml, semente 7, motor v0.40.0): frequência na horizontal, tempo na vertical, cor para a potência acima do piso de ruído de -202.0 dBW/Hz. Jammers: dispositivo de privacidade com chirp (chirp, ligado aos 10 s, desligado aos 40 s); tom CW em L1 (cw, ligado aos 30 s); ruído de banda estreita em L2 (narrowband, ligado aos 45 s). Pior banda GPS L1 C/A: C/N0 efetivo mínimo 3,2 dB-Hz aos 31 s face a um piso de seguimento 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 em 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 da projeção 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 em 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 da projeção 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 solar-system (solar-system-tour.toml): o Sol, 9 planetas e o planeta anão Plutão vistos de cima da eclítica, com as distâncias comprimidas logaritmicamente para apresentação, com o tempo de luz de sentido único de cada corpo desde a Terra. Mercúrio 0,47 au, 10,1 minutos-luz, VALIDATED; Vénus 0,73 au, 3,0 minutos-luz, VALIDATED; Marte 1,55 au, 14,0 minutos-luz, VALIDATED; Júpiter 5,30 au, 49,5 minutos-luz, VALIDATED; Saturno 9,44 au, 70,2 minutos-luz, VALIDATED; Úrano 19,44 au, 157,4 minutos-luz, MODELLED; Neptuno 29,88 au, 240,2 minutos-luz, MODELLED; Plutão 35,61 au, 292,2 minutos-luz, MODELLED. Ligações: Marte a Júpiter em sentido único 2193,5 s; Saturno à Terra em sentido único 4212,2 s; Europa a Júpiter em sentido único 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 solar-system (solar-system-tour.toml): o Sol, 9 planetas e o planeta anão Plutão vistos de cima da eclítica, com as distâncias comprimidas logaritmicamente para apresentação, com o tempo de luz de sentido único de cada corpo desde a Terra. Mercúrio 0,47 au, 10,1 minutos-luz, VALIDATED; Vénus 0,73 au, 3,0 minutos-luz, VALIDATED; Marte 1,55 au, 14,0 minutos-luz, VALIDATED; Júpiter 5,30 au, 49,5 minutos-luz, VALIDATED; Saturno 9,44 au, 70,2 minutos-luz, VALIDATED; Úrano 19,44 au, 157,4 minutos-luz, MODELLED; Neptuno 29,88 au, 240,2 minutos-luz, MODELLED; Plutão 35,61 au, 292,2 minutos-luz, MODELLED. Ligações: Marte a Júpiter em sentido único 2193,5 s; Saturno à Terra em sentido único 4212,2 s; Europa a Júpiter em sentido único 2,2 s. Uma passagem em órbita terrestre baixa (LEO) a partir de uma execução real do tipo leo-pass (leo-pass-iridium.toml, motor executado por este gerador): Iridium-pass a 781 km, banda STL a 1621 MHz, vista por um utilizador aéreo a 50° N 30° O. Acima da máscara de 5° durante 750 s, elevação máxima 65,0° aos 444 s. A densidade de potência portadora-ruído atinge um máximo de 80,5 dB-Hz (mediana 71,3), 34,3 dB acima da mediana GNSS de 46,2 dB-Hz de 8 satélites GPS à vista (38,2 a 51,1 dB-Hz); o Doppler chega a 35,4 kHz.Uma passagem em órbita terrestre baixa (LEO) a partir de uma execução real do tipo leo-pass (leo-pass-iridium.toml, motor executado por este gerador): Iridium-pass a 781 km, banda STL a 1621 MHz, vista por um utilizador aéreo a 50° N 30° O. Acima da máscara de 5° durante 750 s, elevação máxima 65,0° aos 444 s. A densidade de potência portadora-ruído atinge um máximo de 80,5 dB-Hz (mediana 71,3), 34,3 dB acima da mediana GNSS de 46,2 dB-Hz de 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 registadas no repositório: uma pontuação de confiança, um mapa de interferência com exposição de percurso, um fluxo de formação 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 registo NMEA fictício de um ferry numa rota de Tallinn a Helsínquia, 3001 épocas a 1 Hz). Três faixas partilham um eixo de tempo. Em cima: a distância entre a posição que o recetor indica e a posição real da embarcação, que se mantém dentro de alguns metros até cerca de 1576 s, quando o arrastamento de posição programado no registo a afasta, enquanto o recetor continua a indicar uma solução de posição válida. Ao 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é ao arrastamento, descendo depois pela faixa degraded (pelo menos 55) até à faixa untrusted. Em baixo: a faixa de cada época como uma fita colorida com o 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 a ser responsável pela navegação da embarcação. O registo é fictício para mostrar o formato e os monitores; não é uma medição e nada diz sobre o desempenho de qualquer recetor.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 registo NMEA fictício de um ferry numa rota de Tallinn a Helsínquia, 3001 épocas a 1 Hz). Três faixas partilham um eixo de tempo. Em cima: a distância entre a posição que o recetor indica e a posição real da embarcação, que se mantém dentro de alguns metros até cerca de 1576 s, quando o arrastamento de posição programado no registo a afasta, enquanto o recetor continua a indicar uma solução de posição válida. Ao 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é ao arrastamento, descendo depois pela faixa degraded (pelo menos 55) até à faixa untrusted. Em baixo: a faixa de cada época como uma fita colorida com o 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 a ser responsável pela navegação da embarcação. O registo é fictício para mostrar o formato e os monitores; não é uma medição e nada diz sobre o desempenho de qualquer recetor. Dois dias sintéticos do mapa de interferência, desenhados a partir das amostras submetidas em examples/interference-map/output, cada um com a sua própria rota sintética e as parcelas de exposição da rota que o motor comunica. À esquerda, um dia ADS-B: 1 célula degradada, 6 não degradadas, 4 não avaliadas (a tracejado) 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 AIS: células assinaladas pelos detetores 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 assinalada 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, em pleno meio do Atlântico, e não constituem uma medição.Dois dias sintéticos do mapa de interferência, desenhados a partir das amostras submetidas em examples/interference-map/output, cada um com a sua própria rota sintética e as parcelas de exposição da rota que o motor comunica. À esquerda, um dia ADS-B: 1 célula degradada, 6 não degradadas, 4 não avaliadas (a tracejado) 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 AIS: células assinaladas pelos detetores 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 assinalada 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, em pleno meio do Atlântico, e não constituem uma medição. Fluxo de formação do cenário coastal-drag-off (motor v0.40.0, semente 22, 25 minutos a uma posição por cada 10 s do registo do instrutor). Um mapa mostra a trajetória verdadeira da embarcação e a trajetória que o recetor comunica: concordam até começar um arrastamento de posição programado aos 421 s, a trajetória comunicada afasta-se então da verdadeira enquanto o recetor mantém uma posição válida, e volta a aproximar-se quando o evento termina aos 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 recetor comunica, que sobe para um nível elevado enquanto o evento dura. Dados sintéticos de formação gerados pelo Kshana. Apenas para formação e ensaio: nunca fornecer este fluxo aos sistemas de navegação em funcionamento de uma embarcação. Apenas 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 a ser responsável pela navegação da embarcação. As posições, as datas e as trajetórias são inventadas.Fluxo de formação do cenário coastal-drag-off (motor v0.40.0, semente 22, 25 minutos a uma posição por cada 10 s do registo do instrutor). Um mapa mostra a trajetória verdadeira da embarcação e a trajetória que o recetor comunica: concordam até começar um arrastamento de posição programado aos 421 s, a trajetória comunicada afasta-se então da verdadeira enquanto o recetor mantém uma posição válida, e volta a aproximar-se quando o evento termina aos 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 recetor comunica, que sobe para um nível elevado enquanto o evento dura. Dados sintéticos de formação gerados pelo Kshana. Apenas para formação e ensaio: nunca fornecer este fluxo aos sistemas de navegação em funcionamento de uma embarcação. Apenas 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 a ser responsável pela navegação da embarcação. As posições, as datas e as trajetórias são inventadas. A estrutura de um pacote de evidências. Um registo de recetor (NMEA, u-blox UBX, RINEX 3 ou um registo Android) e uma janela temporal entram em kshana receiver-trust evidence, que escreve sete ficheiros: log-slice.bin, config.json, epochs.json, summary.html, manifest.json, manifest.sig e um timestamp.tsr opcional. O manifesto regista o SHA-256 do registo completo e de cada ficheiro e uma cadeia de hashes sobre os ficheiros; a assinatura cobre o manifesto. kshana evidence verify verifica a assinatura, o hash de cada ficheiro, a cadeia e que não está presente nenhum ficheiro não listado, e termina com 0 quando verificado, 1 quando algo falhou e 3 quando o signatário não estava fixado. Um pacote é um registo técnico, não um parecer jurídico.A estrutura de um pacote de evidências. Um registo de recetor (NMEA, u-blox UBX, RINEX 3 ou um registo Android) e uma janela temporal entram em kshana receiver-trust evidence, que escreve sete ficheiros: log-slice.bin, config.json, epochs.json, summary.html, manifest.json, manifest.sig e um timestamp.tsr opcional. O manifesto regista o SHA-256 do registo completo e de cada ficheiro e uma cadeia de hashes sobre os ficheiros; a assinatura cobre o manifesto. kshana evidence verify verifica a assinatura, o hash de cada ficheiro, a cadeia e que não está presente nenhum ficheiro não listado, e termina com 0 quando verificado, 1 quando algo falhou e 3 quando o signatário não estava fixado. Um pacote é um registo técnico, não um parecer jurídico.

Os quatro são dados fictícios e de caráter consultivo: mostram o formato e o comportamento do software, não o desempenho de qualquer recetor ou sistema face a 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 (apenas para formação: nunca o alimentar a equipamento de navegação em direto) e o quarto como em docs/EVIDENCE-PACKS.md.

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

Segue-se o pormenor completo domínio a domínio; para um registo de maturidade por capacidade, ver docs/CAPABILITY.md e docs/VALIDATION.md.

Domínio Capacidade
Órbita e geometria Propagação SGP4/SDP4 (validada até 4,12 mm face a todos os 666 vetores AIAA 2006-6753); elementos de duas linhas reais (um instantâneo gps-ops do Celestrak, registado no repositório 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 até 1e-6 face ao gnss_lib_py 1.0.4, Stanford NAV Lab (Navigation and Autonomous Vehicles Laboratory), e disponibilidade GNSS; um otimizador de projeto de constelações sem gradiente, o dimensionamento de número mínimo de satélites por ruas de cobertura, uma ferramenta de comparação multiconstelação e uma varredura de projetos Walker que tabula cobertura / PDOP / tempo de revisita sobre uma grelha de planos × satélites e indica os projetos ótimos de Pareto.
Propagador numérico Um propagador numérico de 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 J2–J6 completo (os coeficientes harmónicos zonais de achatamento da Terra J2 a J6; o gradiente analítico exato do seu potencial perturbador), um geopotencial harmónico esférico tesseral EGM2008 até grau/ordem 70 opcional (Earth Gravitational Model 2008; src/gravity_sh.rs; coeficientes reais da NGA — US (United States) National Geospatial-Intelligence Agency —, recorrência de Legendre normalizada de Holmes–Featherstone, verificada face às funções de Legendre em forma fechada e à identidade analítica de ∇V), gravidade de terceiro corpo do Sol e da Lua conduzida pela época (uma efeméride integrada 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), resistência atmosférica (densidade exponencial por troços de Vallado, atmosfera em co-rotação), a correção relativista pós-newtoniana de Schwarzschild e o termo de arrastamento 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) — acionado 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 face ao Orekit 12,2 (CS GROUP, Apache-2.0) NumericalPropagator/DormandPrince853 — 278 épocas em LEO (órbita terrestre baixa) + GTO (órbita de transferência geoestacionária), com os níveis de forças conservativas a concordar até um pior caso de |Δr| 0,08 m ao longo de 24 h (tests/numerical_cowell_propagator_reference.rs); o nível de resistência atmosférica é caracterizado em separado (≈ 333 m / 24 h) e as entradas absolutas de efemérides do Sol/Lua e de densidade continuam, com honestidade, modeladas. Evidência interna adicional (não validação externa): a órbita não perturbada é verificada face à solução de Kepler exata em variáveis universais até abaixo do metro ao longo de 24 h, a energia e o momento angular conservam-se até ~1e-9, e cada perturbação corresponde a uma assinatura em forma fechada deduzida à mão.
Manobras e projeto de trajetórias Nós de ΔV impulsivo 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 face à equação do foguetão de Tsiolkovsky em forma fechada até < 0,01 %, um solucionador de Lambert de uma só revolução 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 grelha de contornos JSON — a camada de simulação de desempenho acima do GMAT/Orekit, com cada saída de Lambert verificada em ida e volta face à verdade de referência de dois corpos e o mínimo do porkchop verificado face ao 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 Tempo Universal 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 à 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 no CIO sem equinócio (CIO = Celestial Intermediate Origin) — tudo validado bit a bit face aos vetores SOFA/ERFA, e verificado de forma independente face ao ANISE (a reimplementação NAIF/SPICE em Rust puro; NAIF = a Navigation and Ancillary Information Facility da NASA, a Administração Nacional da Aeronáutica e do Espaço dos EUA): o GCRS→ITRS do kshana face ao ITRF93 do ANISE (International Terrestrial Reference Frame 1993) a partir de earth_latest_high_prec.bpc do JPL, com os mesmos parâmetros de orientação da Terra do IERS fornecidos a ambos, concordam até ≤ 0,86 m no solo / ≤ 3,6 m na órbita GNSS (máx. 0,028″) em oito épocas 2020–2023.
Inercial INS strapdown de três eixos — atitude por quaterniões, mecanização WGS-84 NED (norte-este-baixo), compensação de coning/sculling, e um modelo determinista de erros de IMU (fator de escala, desalinhamento, sensibilidade à gravidade, 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 da velocidade; e um filtro de partículas de reamostragem por importância sequencial para navegação auxiliada por mapas (referenciada a 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 espetral de amplitude) é derivado da física do acelerómetro CAI; um campo de anomalia gravítica em harmónicos esféricos de grau baixo e totalmente normalizado (verificado face às funções de Legendre em forma fechada e a uma anomalia de um só termo deduzida à mão) mais mascons sintéticos; o núcleo de síntese do funcional gravítico (gravity_sh::gravity_magnitude / gravity_disturbance_mgal) — o "leitor de mapas" com que um navegador auxiliado pela gravidade faz a correspondência — é validado face ao padrão de gravidade normal GRS80 (Geodetic Reference System 1980), reproduzindo a gravidade normal de Somigliana em forma fechada e os γ_e / γ_p publicados até 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 a g/o 70; tests/icgem_gravity_reference.rs); e um filtro de partículas de correspondência de mapas gravíticos que recupera uma trajetória sem GPS a partir da sequência de anomalias que sobrevoa. Estende-se à navegação referenciada ao terreno (TERCOM/SITAN — terrain contour matching / Sandia Inertial Terrain-Aided Navigation — face a um DEM (modelo digital de elevação) SRTM (Shuttle Radar Topography Mission) .hgt, src/altpnt/terrain.rs), a um campo magnético principal geomagnético IGRF-14 (14.ª geração do International Geomagnetic Reference Field) até grau/ordem 13 (src/igrf.rs, verificado face à forma fechada do dipolo inclinado e a diferenças finitas de ∇V), e a um navegador combinado de gravidade + magnetismo + terreno que funde os três canais escalares num único filtro de partículas (a informação é aditiva — nenhum canal piora a solução de posição). Um teste de referência de 60 minutos sem GPS (uma interrupção de ~700 km / uma hora em que a solução inercial deriva até ~70 km) é recuperado até ~145 m (< 500 m) por um correlacionador hierárquico de grosseiro a fino — o alvo Quantum Wayfarer do NAVISP (Navigation Innovation and Support Programme) da ESA.
Fusão EKF (filtro de Kalman estendido) de estados de erro GNSS/INS de acoplamento fraco com 15 estados e realimentação em malha fechada (o pacote gnss-ins); uma atualização de pseudodistância de acoplamento forte que continua a corrigir 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 de acoplamento forte (pseudodistância + Doppler) cuja deriva orbital com modelo de forças é verificada quanto à autoconsistência até 0,77 m RMS numa passagem LEO curva de 30 minutos que inclui uma interrupção GNSS de 120 segundos (um valor de consistência do filtro, não uma validação por referência independente externa — este navegador continua MODELLED); e um UKF GNSS/INS de acoplamento forte com 17 estados completo (posição, velocidade, erro de atitude, enviesamentos do acelerómetro e do giroscópio, enviesamento e deriva do relógio) cujo cálculo por estima quântico-CAI percorre 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 seguimento de distância de estações terrestres, compondo o modelo de forças de dois corpos + J2 e o integrador RK4 com um corretor de lote de Gauss–Newton (determine_orbit_batch, abaixo do metro / mm·s⁻¹ a partir de distâncias sem ruído, ~2 m com um piso de ruído de 5 m) e uma variante de filtro unscented sequencial (determine_orbit_sequential).
Teoria da observabilidade e 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, a característica de observabilidade e o espaço nulo do defeito de datum (pseudoinversa de Moore–Penrose), e escalares de projeto de experiências ótimos D/A/E/T a partir de um solucionador próprio de Jacobi simétrico. Validado — valores próprios face a numpy.linalg.eigh, a covariância do CRLB face a σ²(XᵀX)⁻¹ através de numpy.linalg.inv, e o DOP GNSS a partir da matriz de informação, todos coincidentes até 1e-9 (tests/fim_observability_reference.rs), e adicionalmente verificado face aos 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 do problema restrito circular de três corpos (CR3BP) Terra–Lua no referencial rotativo — constante de Jacobi conservada e os cinco pontos de Lagrange (src/cr3bp.rs) — agora com uma matriz de transição de estado (STM) 6×6 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 face a diferenças finitas, as órbitas corrigidas fecham-se até à precisão da máquina, e semear o estado de apolune publicado reproduz a NRHO L2 sul 9:2 (L2 = o segundo ponto de Lagrange Terra–Lua; a órbita do Gateway) com período ≈ 6,57 d / perilune ≈ 3 250 km, consistente com os ≈ 6,56 d / ≈ 3 370 km publicados (uma solução CR3BP — circular, sem Sol —, não validada face a uma efeméride real de LANS (Lunar Augmented Navigation Service)/Gateway; a transformação selenocêntrica MCI/MCMF (inercial centrado na Lua / centrado na Lua e fixo à Lua) da órbita corrigida é um passo seguinte); mais a geometria PNT cislunar LunaNet / LNIS (LunaNet Interoperability Specification) (redução MCI↔MCMF, coordenadas selenográficas) com uma passagem ARAIM do polo sul lunar que expõe com honestidade a lacuna de integridade: um σ_URE (erro de distância do utilizador) de ~30 m leva o nível de proteção muito acima de um limite de alerta de 50 m (src/lunar.rs, scenarios/lunanet-araim.toml); e uma aumentação de DOP por balizas de superfície (src/lunar_beacon.rs) que mostra como algumas balizas de medição de distância de superfície, com posição levantada, fornecem as linhas de visada de baixa elevação e grande azimute que um conjunto só em órbita, todo na vertical, não tem — colapsando o GDOP polar sul mal condicionado e, através de um orçamento de erro pela raiz da soma dos quadrados, a exatidão de posição obtida em metros (reutilizando o núcleo de DOP validado com o gnss_lib_py e a forma fechada de visibilidade com horizonte sem atmosfera; a análise da diluição da precisão está descrita em arXiv:2607,06212).
Conjunto PNT lunar Um conjunto de navegação lunar/cislunar construído sobre o núcleo CR3BP, cada elemento 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 = a sua forma francesa, Temps-Coordonnée Lunaire) a partir da diferença de autopotencial + termo cinético, indicada com a banda publicada de 56–59 µs/dia); um observável de atraso de VLBI lunar (interferometria de linha de base muito longa) geodésico (lunar-vlbi, src/lunar_vlbi.rs — um atraso + taxa de diferença de duas distâncias em campo próximo com linha de base na Terra, verificado face ao Δ-DOR (delta differential one-way ranging) de onda plana do mesmo código no limite de campo distante, com derivadas parciais verificadas por diferenças finitas); um estimador em lote de OD + relógio multitécnica conjunto (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âncias interna, por si só, deixa um defeito de datum de corpo rígido com seis graus de liberdade, pelo que a posição absoluta de uma estação de superfície é inobservável até ser acrescentada uma ligação ao referencial da Terra — um atraso de VLBI com linha de base na Terra restaura a observabilidade para uma constelação esparsa e afina o limite de Cramér–Rao para uma rica, fechando-se o datum absoluto com três estações terrestres 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 WGCCRE IAU 2015 — WGCCRE = o Grupo de Trabalho da IAU sobre Coordenadas Cartográficas e Elementos de Rotação); uma análise de volume de serviço de classe Moonlight/LCNS (LCNS = Lunar Communications and Navigation Services; moonlight-service-volume, src/lunar_service.rs — DOP / cobertura / disponibilidade + uma envolvente HPL/VPL (nível de proteção horizontal/vertical) de ARAIM lunar generalizado, reutilizando o núcleo de DOP validado com o gnss_lib_py e a maquinaria de σ_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 do relógio em modo comum + descorrelação espacial de primeira ordem face à linha de base, reutilizando o nível de proteção SBAS da DO-229E — sendo a DO-229E a norma de desempenho operacional mínimo da RTCA (antes Radio Technical Commission for Aeronautics) para recetores SBAS); e uma exportação de interoperabilidade alinhada com 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 de cada peça estão na matriz de verificação: o Tempo Coordenado Lunar, o estimador de OD + relógio conjunto, a realização de referencial e a geometria do volume de serviço são VALIDATED (cada um face à referência independente que a sua linha nomeia, tal 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 face a seguimento real de VLBI/Gateway, não afiliados nem apoiados por nenhuma agência, sem qualquer afirmação de TRL (nível de maturidade tecnológica) / herança.
PNT do espaço profundo e de Marte Um motor de navegação radiométrica aberto: tempo de luz iterativo + atraso relativista de Shapiro, Doppler e distância de duas/uma/três vias (dois troços de Moyer), razões de retorno coerentes de transponder, medição de distância regenerativa/PN (ruído pseudoaleatório) (CCSDS 414, a norma de medição de distância por ruído pseudoaleatório), e Δ-DOR no plano do céu (CCSDS 506, a norma Delta-DOR), com meios de plasma solar/tropo/iono; análise e emissão de mensagens de dados de seguimento CCSDS-TDM (503); um Filtro de Informação de Raiz Quadrada de dinâmica reduzida (acelerações empíricas RTN — radial, transversal, normal — + um relógio de bordo de 3 estados + resistência atmosférica de Marte) que faz determinação de órbita em LMO de Marte até ≈ 0,2 m num ciclo fechado sintético; um estimador de fusão de uma via + duas vias conjunto; um núcleo de dinâmica multicorpo (Body{μ, re, zonals, gravity, IAU-pole}, gravidade GMM-3 de Marte (Goddard Mars Model 3), um referencial fixo ao corpo IAU de Marte, uma interface EphemerisProvider substituível, datas julianas em duas partes + TT↔TDB (Barycentric Dynamical Time)); e o cenário de PNT por 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 terra) (geometria → balanço de ligação → observáveis → SRIF → covariância). Validado por simulação (valores de mérito de covariância / ciclo fechado); a dinâmica de Marte com o Sol como centro é verificada face ao DE440 do JPL (137 m @ arco de 1 dia, xval/anise-mars-od). A validação com dados reais de seguimento DSN/ESTRACK consta do 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): todos os planetas a partir dos elementos keplerianos de Standish do JPL (Tabela 1, 1800–2050 AD; Tabelas 2a/2b, 3000 BC–3000 AD) 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 relativamente a qualquer outro no ICRF (International Celestial Reference Frame). Body passa a incluir 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 solar-system indica posições, velocidades, constantes, tempo de luz e distância de uma/duas vias entre quaisquer dois corpos (o solucionador radiométrico de tempo de luz existente, com o atraso de Shapiro solar) e uma trajetória orbital por corpo — o suficiente para desenhar um sistema solar interativo; o tipo body-pnt posiciona um orbitador ou um módulo de aterragem em torno 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 no espaço profundo desde a Terra. Validado face ao 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: Úrano e Neptuno a partir da Tabela 1 (2,0× e 5,2× o erro indicado face ao 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 quanto ao sistema, sobre qualquer constelação (cascas Walker, conjuntos de elementos, predefinições GNSS) e qualquer sinal (portadora, taxa de chips, envolvente de C/N0, erro de distância do sinal no espaço), com predefinições opcionais de um só ficheiro que trazem as suas fontes (Xona Pulsar X1/X5, Iridium STL, sinais de oportunidade da Starlink, CentiSpace, um sistema representativo em banda C, o modelo de efemérides de relógio zero ATOMIC). leo-pvt: posicionamento por Doppler em lote a partir da taxa de variação da distância (um e vários satélites, estados de deriva do relógio e de velocidade, geometria de passagem única ao longo/através da trajetória e a solução espelhada), mínimos quadrados ponderados conjuntos GNSS + LEO com enviesamentos entre sistemas por sistema e sigmas por sinal fornecidos pelo chamador, o DOP face ao número de satélites LEO, cobertura polar e do Ártico, e transferência de tempo LEO para UTC face ao C/N0 e ao oscilador. leo-ppp: um EKF (filtro de Kalman estendido) de PPP (posicionamento preciso de pontos) com ambiguidades reais apenas com GNSS e com LEO, o seu tempo de convergência e um teste de consistência NEES de qui-quadrado. ntn-positioning: posicionamento 5G em redes não terrestres a partir do limite de Cramér-Rao da largura de banda. Validado: a envolvente de Doppler LEO face aos valores publicados da Iridium e da Xona. Modelado: o restante, com a tendência do PPP comparada com Li et al. (2019) — ver docs/LEO-PNT-FUSION.md.
Integridade RAIM (monitorização autónoma da integridade do recetor) de instantâneo e de separação de soluções (ao estilo ARAIM), com níveis de proteção horizontal/vertical (HPL/VPL), deteçã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/multiconstelação (ARAIM da UE (União Europeia) / DO-316, a norma de desempenho da RTCA para equipamento GPS de bordo com aumentação baseada na aeronave), exercitado sobre um instantâneo real de GPS + Galileo (scenarios/araim-gps-galileo.toml). O nível de proteção aplica a projeção unilateral de enviesamento nominal b_k = Σ_i|s_i|·b_nom por modo de falha e o sigma de integridade σ_URA (exatidão de distância do utilizador; distinto do sigma de exatidão σ_URE, erro de distância do utilizador) da Integrity Support Message — ver docs/ARAIM_REFERENCE.md. O núcleo de deteção (os limiares de χ²/χ² não central/normal e os multiplicadores K) é validado externamente face ao SciPy em 171 casos (tests/raim_reference.rs); a geometria reutiliza o núcleo de DOP validado com o gnss_lib_py. A própria atribuição do orçamento de risco de integridade do ARAIM MHSS não tem nenhuma referência numérica independente publicada e continua, com honestidade, modelada.
Aumento (SBAS) Níveis de proteção SBAS / WAAS (WAAS = o Wide Area Augmentation System) na forma de mínimos quadrados ponderados da DO-229E (fatores K de aproximação de precisão e em rota) e a combinação L1/L5 de dupla frequência sem ionosfera (L1 e L5 sendo duas bandas de sinal civil do GPS; IS-GPS-705, a especificação de interface do GPS para o sinal L5, γ₁₅ ≈ 1,793) que sustenta a DO-316 — src/sbas.rs. O algoritmo do nível de proteção é validado externamente face ao 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 da DO-229 — App. J) executado sobre dados EGNOS reais (European Geostationary Navigation Overlay Service), reproduzindo o seu HPL a < 2e-3 m (tests/sbas_reference.rs); o gLAB (o conjunto de ferramentas GNSS Laboratory) v6.0.0 confirmou a convenção idêntica.
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 normalizada ao quadrado / erro de estimação normalizado ao quadrado); estabilidade da família Allan (ADEV / MDEV / TDEV / HDEV / MTIE — desvio 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 de cada tipo de ruído e um ajuste completo de lei de potência de cinco coeficientes da 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 face ao Stable32: um padrão primário real de césio 5071A face a um maser de hidrogénio (556 990 amostras de fase, 16 fatores de média, OADEV/OHDEV — desvio de Allan/Hadamard sobreposto — até 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 até 1e-3; tests/phasedat_reference.rs); os estimadores ADEV/MDEV/TDEV e a métrica de wander de telecomunicações MTIE são ainda verificados face à biblioteca independente allantools 2024,06 até < 1e-9 na série NIST SP 1065 (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs); correções geométricas (Sagnac, vista comum GNSS); e os métodos operacionais de transferência — TWSTFT (transferência de tempo e frequência por satélite em duas vias) com a forma fechada de Sagnac do BIPM (Bureau Internacional de Pesos e Medidas), vista comum GNSS, transferência de tempo PPP (posicionamento preciso de pontos) sem ionosfera, uma ligação ótica em espaço livre com cintilação por turbulência, e uma escala de tempo de conjunto de relógios (de papel) por variância inversa abaixo do melhor relógio contribuinte. Uma calculadora de holdover de relógio sem GNSS (src/holdover.rs) expõe o crescimento em forma fechada do erro de deriva de van Loan como uma inversão de holdover até ao limiar — quanto tempo um relógio funciona livremente antes de o seu erro de temporização exceder o orçamento — em classes representativas de relógios clássicos e quânticos; modelado (verificado face à recursão de covariância de vários passos de clock_state), e honesto quanto ao facto de, para um relógio muito estável, o holdover até um limiar apertado ser determinado pelo piso de ruído de tau longo assumido, e 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 do erro de tempo não detetado, dada uma verificação cruzada independente, que compõe um piso de monitor de k sigmas, a variância de deriva de van Loan ao longo da latência de deteção e um tempo até ao alarme de CUSUM (soma cumulativa). Calibrado com um spoof real gravado (JammerTest 2024) e reproduzível através de cargo run --example tpl_jammertest; composição MODELLED (sem orçamento de risco de integridade por hora), condicional à deteção — não existe nenhum limite incondicional finito.
Domínio de medições GNSS Síntese direta de pseudodistância / Doppler com ionosfera Klobuchar (difundida) e IONEX / grelha de TEC (IONosphere map EXchange format / conteúdo eletrónico total; medida) — incluindo um analisador de ficheiros IONEX, interpolação temporal entre mapas e o mapeamento de obliquidade oblíqua em casca fina —, troposfera Saastamoinen + Niell, e RAIM de instantâneo (HPL/VPL).
Resiliência Jamming por balanço de ligação (J/S → C/N₀ efetivo → perda de bloqueio — razão jammer-sinal, razão portadora-densidade de ruído — com o fator de separação espetral anti-jam Q agora derivado dos espetros de potência reais do sinal e do jammer através de src/navsignal.rs — Q = 1/(R_c·κ), verificado em CI face à anterior constante representativa); um detetor 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 um valor de mérito (FoM) de segurança de 1 − P_md); e um detetor de spoofing de várias camadas que funde um teste de paridade de consistência RAIM (com o ponto cego de modo comum modelado com honestidade), um monitor de potência de AGC de RF (controlo automático de ganho) e um monitor de qualidade do sinal (SQM — monitorização 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 enviesamento residual (verificado face ao integrador independente AccelModel) e o erro de fator de escala num valor 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 com um referencial (src/resilience/) mapeia o comportamento simulado de uma arquitetura em sub-pontuações por dimensão ao longo das sete categorias de resiliência próprias do Kshana (não os termos do DHS), alinhadas com o Resilient PNT Conformance Framework do Departamento de Segurança Interna dos EUA, e estuda depois 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 ordenação por τ de Kendall, taxa de troca 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 deduzidos à mão). Reproduzível através de cargo run --example resilience_report; arquiteturas sintéticas MODELLED, uma autoavaliação alinhada com o RPCF v2.0, não uma certificação. Ver 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 um spoofer (ou uma fonte oportunista para PNT inverso) a partir de hiperboloides de diferença de tempo de chegada numa rede de recetores, resolvidos por mínimos quadrados de Gauss–Newton; acrescentar a diferença de frequência de chegada com recetores em movimento recupera conjuntamente a posição e a velocidade do emissor, com o limite de Cramér–Rao sobre a covariância da posição derivado da geometria da rede. MODELLED (referências independentes de consistência interna: ida e volta direta→inversa, a identidade J·CRLB = I, monotonia do GDOP, e o estimador a atingir o seu próprio CRLB por Monte Carlo) — um modelo de linha de visada de fonte pontual, sem termos de multipercurso / NLOS (sem linha de visada), de enviesamento do relógio do recetor ou de refração.
Sinal de navegação e seguimento de código O nível do sinal entre o balanço de ligação e o domínio da medição (src/navsignal.rs): densidades espetrais de potência (PSD) de área unitária para BPSK-R(n) (modulação por desvio de fase binária com chips retangulares) e sine-BOC(m,n) (portadora com desvio binário); o coeficiente de separação espetral (SSC) κ = ∫ G_s·G_i df, que deriva o Q anti-jam que o modelo de jamming usa (Q = 1/(R_c·κ)) a partir dos espetros reais do 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 seguimento de código DLL adiantado–atrasado coerente (DLL = malha de bloqueio de atraso; Kaplan & Hegarty; ~abaixo do metro para o C/A — o código de aquisição grosseira do GPS — a 45 dB-Hz); e a envolvente do erro de multipercurso (EML coerente, adiantado-menos-atrasado — supressão por correlacionador estreito). Validado face a âncoras em forma fechada (SSC próprio de BPSK = 2/(3·R_c), PSD de área unitária, jitter do C/A abaixo do metro). Isto é análise de desempenho do sinal, não projeto de hardware de antena / carga útil de RF (o papel de um parceiro da carga útil).
Interoperabilidade Ingestão de efemérides difundidas RINEX-3 multi-GNSS (GPS, Galileo, QZSS — o Quasi-Zenith Satellite System do Japão —, BeiDou MEO/IGSO — órbita terrestre média / órbita geossíncrona inclinada — através da IS-GPS-200, a especificação de interface do GPS; GLONASS, o Global Navigation Satellite System da Rússia, através de RK4 do vetor de estado em PZ-90 — o datum russo Parametry Zemli 1990) utilizável como fonte de constelação (RINEX à entrada, geometria PNT à saída); um analisador de observações RINEX-3 (pseudodistância, fase da portadora, Doppler, intensidade do sinal; espera-se que a disposição de observação 4,00 seja analisada mas não está testada, e os ficheiros de navegação RINEX 4 são recusados por nome em vez de descodificados incorretamente) que agora alimenta um solucionador de posicionamento de ponto único (SPP) (pvt) — observações de código reais à entrada, uma posição de recetor real à saída, validado com dados do IGS; um leitor/escritor 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 seguimento CCSDS-TDM (503) para seguimento radiométrico do 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 executável: geometria de lançamento e subida de dois corpos (launch-window — azimute de lançamento sin Az = cos i/cos lat, inclinação mínima, bónus da 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 máximo de g, velocidade do máximo de aquecimento; src/reentry.rs); geometria de cobertura de observação da Terra (eo-coverage — faixa / GSD (distância de amostragem no solo) no nadir / acesso fora do nadir / revisita através do triângulo espacial do SMAD (Space Mission Analysis and Design); src/eo_payload.rs); um orçamento de erro de atitude e de apontamento de 3 DOF (três graus de liberdade; attitude-budget — binário de gradiente gravítico no pior caso + orçamento de apontamento RSS (raiz da soma dos quadrados); src/attitude_budget.rs); previsão de passagens em estações terrestres (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 balanço de ligação de sentido único sobre a equação de ligação CCSDS 401 / DSN 810-005 (a norma de radiofrequência e modulação do CCSDS / o manual de projeto de ligações da Deep Space Network; link-budget — FSPL (perda de percurso em espaço livre), C/N₀, Eb/N₀ (razão energia por bit / densidade de ruído), margem, fecho; 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 compromissos (MCDA) Um conjunto completo de análise de decisão multicritério (MCDA) (src/mcda/) que abrange as quatro famílias de métodos — agregação de valor (WSM, WPM, WASPAS — modelo de soma ponderada, modelo de produto ponderado, avaliação agregada ponderada 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 sobreclassificação (PROMETHEE II, Preference Ranking Organization Method for Enrichment of Evaluations; ELECTRE I, do francês para eliminação e escolha que exprime a realidade), mais o MOORA de sistema de razões (Multi-Objective Optimization on the basis of Ratio Analysis) e o COPRAS proporcional (Complex Proportional Assessment) — com ponderação de prioridades por comparação par a par do AHP (Analytic Hierarchy Process) (Razão de Consistência), uma frente não dominada de Pareto, análise de sensibilidade aos pesos e pontuação de 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) até < 1e-9, e o vetor de prioridades do AHP + a Razão de Consistência coincidem com a tabela de Índice Aleatório de Saaty e o solucionador próprio principal SciPy/LAPACK até < 1e-9 (tests/mcda_*_reference.rs). VALIDATED — a camada de decisão sob o motor de estudos de compromissos.
Ambiente espacial Um modelo de ambiente de meteorologia 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 a sua amplitude planetária linear), a temperatura exosférica de Jacchia-1971 que estes determinam (validada face aos mínimos/médias/máximos solares publicados), e a densidade neutra termosférica corrigida pela atividade face à estática em altitude — a dependência da densidade face ao ciclo solar que a atmosfera estática USSA76 (US Standard Atmosphere 1976) omite. MODELLED: um acoplamento de primeira ordem calibrado da altura de escala, não uma atmosfera validada com dados (NRLMSISE — o modelo de exosfera de espetrómetro de massa e radar de dispersão incoerente do Laboratório de Investigação Naval dos EUA).
Avaliação por aprendizagem automática e compromisso Uma bancada de avaliação de deteção de degradações de RF (impairment-eval, src/impairment_eval.rs): um corpus sintético etiquetado e fundamentado em parâmetros (nominal / jamming / spoofing de tempo / spoofing de posição / multipercurso), uma estrutura de ROC/AUC (característica de operação do recetor / área sob a curva) agnóstica quanto ao detetor que avalia qualquer detetor (energy | agc | sqm | parity | fused) com Pd por classe (probabilidade de deteção) a uma Pfa alvo (probabilidade de falso alarme), e a diferença de otimismo dentro e fora da distribuição (modo de mudança de distribuição). Mais um 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 face a uma linha de base clássica, com a ressalva do piso de τ longo transportada no artefacto e uma envolvente de resiliência sem GNSS em função do tempo. As métricas de avaliação (AUC / confusão / Pd-Pmd, sendo Pmd a probabilidade de deteção falhada) são validadas com correspondência exata face ao scikit-learn 1.9.0 — incluindo em telemetria real da ESA OPS-SAT (o conjunto de dados de deteçã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 até < 1e-9 na partição de teste reservada e um detetor transparente de contagem de picos separa as anomalias etiquetadas com 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 — do ADEV, bandas de consistência de χ², Q de relógio de van Loan) face ao scipy 1.17.1; os valores do benefício dos dispositivos construídos por cima continuam a ser características operacionais MODELLED — nunca dados de campo/IQ (amostras em fase/quadratura), sem veredicto bom/mau. Com base na bancada, um estudo da diferença de otimismo mais profundo (src/impairment_study.rs, impairment_ml.rs, eval_stats.rs) avalia um painel de 13 detetores (energy/AGC/SQM/parity mais detetores de regressão logística com semente e de MLP — perceptrão multicamada — de uma camada oculta), ajusta leis de escala dentro e fora da distribuição com uma hipótese nula 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 recetor definido por software (src/sdr.rs — IQ/IF em bruto (frequência intermédia) → derivações adiantada/pontual/atrasada do correlacionador → SQM) e adaptadores de ingestão de dados reais (src/realdata/ — RINEX, u-blox UBX (o protocolo binário da u-blox), GnssLogger, JammerTest, Yunnan, SatGrid) permitem que os mesmos detetores corram sobre gravações fornecidas localmente (não é registado nenhum conjunto de dados). 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 dos valores dos Resultados.
Demonstrador de PNT com tecnologias quânticas Três áreas de aplicação executáveis e MODELLED por trás do motor aberto, cada uma a emitir um TradeEvidence honesto + um registo de representatividade / lacunas até ao voo (src/representativeness.rs): transferência de tempo quântica de confiança (quantum-time-transfer, src/timetransfer_chain.rs — um orçamento de ponta a ponta de relógio de rede ótica + ligação fotónica face a CSAC (relógio atómico à escala de chip) + duas vias de RF, com um nível de proteção de temporização reutilizado, um FoM de segurança contra ataques de atraso/repetição (1 − P_md), e deteçã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 de interferómetro de átomos frios face a um INS de qualidade de navegação durante uma interrupção GNSS, sendo honesto quanto ao facto de, sem solução de posição externa, o enviesamento do acelerómetro ser inobservável, pelo que o erro continua a crescer); e deteção de falhas/anomalias em sistemas quânticos (quantum-anomaly-detect, src/quantum_faults.rs — um catálogo de falhas etiquetado com uma AUC ROC com IC (intervalo de confiança) por bootstrap a partir de eval_stats, validado externamente, e uma falha mínima detetável a uma taxa de falso alarme fixa). Uma biblioteca partilhada de modelos de erro de dispositivos quânticos (src/quantum_devices.rs) e uma estrutura unificada de compromissos quântico-versus-clássico (src/qtrade.rs) sustentam-nas. Os núcleos validados em que assentam (métricas de avaliação face ao scikit-learn, núcleos de compromissos face ao scipy) são reutilizados; os valores do benefício dos dispositivos construídos por cima continuam MODELLED — parâmetros de dispositivos/ligações ilustrativos de fontes públicas, modelam a classe, sem TRL / herança de voo / certificação, sem apoio de nenhuma agência.
Engenharia frugal e impacto na integridade Uma lente de ROI (retorno do investimento) por cobertura (src/frugal.rs) — custo por unidade de cobertura entregue para um compromisso de arquitetura — e um mapeamento de deteção falhada → impacto na integridade (src/integrity_impact.rs) que transforma a taxa de deteção falhada de um monitor na sua contribuição para o risco de integridade. Orçamentos de apoio à decisão MODELLED, aditivos.
Intercâmbio de artefactos O Kshana Interchange Format (KIF) (src/interchange.rs) — um envelope versionado e autodescritivo que envolve o resultado de um cenário com o seu tipo, a versão do esquema e etiquetas MODELLED/VALIDATED, de modo que um artefacto guardado se mantenha autodocumentado e os envelopes mais antigos continuem legíveis com compatibilidade futura.

Cada capacidade é acessível como uma API Rust, como um kind de cenário executável, 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 testados por unidade que só permitem uma etiqueta validada quando uma referência independente externa a sustenta — e que registam as capacidades de hardware/PA (garantia do produto) que o Kshana deliberadamente não fornece.

Os quatro pacotes de sensores, tal como publicados inicialmente (resultados)

Resultados#

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

O que os sensores quânticos trazem quando o GNSS desaparece, cenário de holdover do relógio: o quântico mantém 6600 s de autonomia face a 2610 s do clássico, um erro de temporização muito inferior, e 100% face a 95,6% de disponibilidade
O que os sensores quânticos trazem quando o GNSS desaparece — clock-holdover · semente 42 · desenhado no motor 0.40.0, e todos os valores acima são reverificados face ao motor atual em 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 ganha — mostrado com honestidade ao longo da escada de maturidade tecnológica (os valores de relógios óticos são alvos de demonstradores em terra; nenhum relógio ótico de estrôncio voou):

Cruzamento de holdover de relógio quântico-versus-clássico 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 ganha
Cruzamento de resiliência quântico-versus-clássico — escada TRL do holdover do relógio (em cima) · mapa de vantagem inercial com contorno de ponto de equilíbrio (em baixo). Regenerável através de cargo run --release --bin crossover_study.

Navegação por estima inercial: erro de posição durante uma interrupção GNSS — o sensor quântico (de átomos frios) mantém-se junto à linha da especificação enquanto o sensor de qualidade de navegação diverge para dezenas de quilómetros
Erro de posição da navegação por estima durante uma interrupção GNSS: o sensor quântico (azul) mantém-se plano junto à 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 do relógio clock-holdover.toml (especificação de 20 ns) o relógio ótico mantém-se durante toda a interrupção o CSAC ultrapassa a especificação a meio da interrupção
2 — Navegação por estima inercial imu-deadreckoning.toml (especificação de 100 m) átomos frios: ~41 m, mantém-se durante toda a interrupção qualidade de navegação: ultrapassa aos ~350 s → dezenas de km
3 — Transferência de tempo (ligação ótica entre satélites) timetransfer.toml ótica: 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 + temporização completas 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 de tempo ótica entre satélites mantém bloqueado 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 ótica em conjunto.

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

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

Órbita com GNSS difícil: erro de temporização do relógio ao longo de um dia para uma nave espacial dentro da casca GNSS, em que as lacunas de cobertura são derivadas da geometria orbital — o relógio ótico permanece dentro da especificação de 5 ns durante as lacunas enquanto o relógio à escala de chip a ultrapassa
Erro de temporização ao longo de um dia com a disponibilidade GNSS derivada da geometria orbital: o número de satélites visíveis (linha de visada, ocultação pela Terra, máscara de elevação) define o estado da solução de posição em cada passo, pelo que o relógio tem de percorrer sozinho cada lacuna — o relógio ótico mantém a especificação de 5 ns enquanto o relógio à escala de chip a ultrapassa. 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 (TLE). Um TLE completo (linha 1 + linha 2) é propagado com o modelo SGP4/SDP4 completo — incluindo a resistência atmosférica e os termos lunissolares de espaço profundo e de ressonância de 12 h / 24 h que importam para órbitas GNSS de ~12 h — validado face aos vetores oficiais AIAA 2006-6753 até 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 somas de verificação TLE válidas — os conjuntos de elementos de duas linhas são dados abertos do catálogo da Força Espacial dos EUA / 18.º Esquadrão de Defesa Espacial, redistribuídos pelo Celestrak (Dr T. S. Kelso, celestrak.org); atualize com scripts/fetch_tles.sh. Um bloco só com a linha 2 mantém a propagação analítica de dois corpos (scenarios/orbit-real-tle.toml); as duas formas podem ser misturadas numa só constelação. Uma constelação pode igualmente ser construída a partir de um bloco de registos de efemérides difundidas GPS RINEX-3 — o formato que um recetor descodifica — propagados pelo algoritmo de utilizador da IS-GPS-200 e passados pela mesma geometria (scenarios/orbit-rinex.toml).

O que é / não é, por extenso

O que é / não é#

É: um motor determinista, com poucas dependências, que abrange toda a pilha PNT — geometria orbital, navegação inercial, fusão GNSS/INS, integridade, relógios e temporização. Executa um cenário (muitas vezes uma interrupção GNSS), faz evoluir modelos calibrados de erro de sensores através do estimador adequado e avalia o resultado face aos valores de mérito operacionais — emitindo um resultado JSON (JavaScript Object Notation) reprodutível e um gráfico SVG, a partir de uma biblioteca Rust, de uma interface de linha de comandos (CLI), de uma extensão Python, de um módulo WebAssembly no navegador, de um servidor Model Context Protocol (MCP) para agentes de IA ou de um plugin para IDE (ambiente de desenvolvimento integrado) JetBrains.

Não é: hardware de voo, um projeto de carga útil quântica, um recetor completo de sinais GNSS, um simulador de sinais de radiofrequência (RF) ou uma bancada 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; fica ao lado deles e troca ficheiros 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, mais sistemáticos de Coriolis e de desvio de luz — mas os sistemáticos de frente de onda e a resolução da ambiguidade de franjas continuam a ser uma camada do roteiro P2 (fase 2 do roteiro, a camada de física quântica), ver ROADMAP.md e docs/QUANTUM-MODELS.md); um recetor GNSS certificado ou de hardware (resolve uma solução de posição PVT (posição, velocidade e tempo) de ponto único a partir de observações de código RINEX (Receiver Independent Exchange Format) reais — validado com dados reais do IGS (International GNSS Service) — e a sua camada IQ (kshana iq, desde 0.31.0) adquire e segue amostras em banda base gravadas ou geradas, em software, como recetor de análise: não aciona hardware de rádio nem transmite, não é um recetor certificado e não faz posicionamento por fase da portadora (RTK ou PPP)); nem um conjunto completo de projeto de missões (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 âmbito é deliberado. Se precisar de orçamentos de erro de interferómetro de átomos frios 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 ao estilo do X-37B), consulte o roteiro P2 e entre em contacto para colaborar.

Navegação em órbita terrestre baixa#

Os satélites em órbita terrestre baixa (LEO) passam depressa e com sinal intenso. O tipo leo-pnt-chain acompanha um sistema por todas as fases: o sinal, a passagem e a sua ligação, a mensagem de navegação, e a solução fundida de posição, velocidade e tempo (PVT) e o posicionamento preciso de pontos (PPP). Cada fase passa os seus números à seguinte. Ver docs/LEO-PNT.md.

A cadeia PNT LEO a partir de uma execução real de leo-pnt-chain (leo-pnt-end-to-end.toml): a fase do sinal (generic-l a 1191,795 MHz, piloto seguido a 10,23 Mchip/s) passa à fase da passagem (1080 km, máximo de C/N0 seguido 58,2 dB-Hz), que passa à 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 (só GNSS 1,60 m RMS 3D, GNSS mais LEO 0,43 m) e o posicionamento preciso de pontos (convergência 11,5 min só com GNSS, 7,5 min com 240 satélites LEO). São passados 11 valores entre fases.A cadeia PNT LEO a partir de uma execução real de leo-pnt-chain (leo-pnt-end-to-end.toml): a fase do sinal (generic-l a 1191,795 MHz, piloto seguido a 10,23 Mchip/s) passa à fase da passagem (1080 km, máximo de C/N0 seguido 58,2 dB-Hz), que passa à 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 (só GNSS 1,60 m RMS 3D, GNSS mais LEO 0,43 m) e o posicionamento preciso de pontos (convergência 11,5 min só com GNSS, 7,5 min com 240 satélites LEO). São passados 11 valores entre fases.

Todos os tipos de cenário por família#

Os tipos de cenário do motor, arquivados por famílias. Cada família tem uma página com uma entrada por tipo (a descrição e os campos do motor, um comando de exemplo, números de destaque 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 contactos desses gráficos; docs/KINDS.md indexa-os todos. 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 que nenhuma família nomeie.

Família A que responde Tipos de cenário Executar um
Relógios, temporização e holdover quanto tempo um relógio mantém a hora sem GNSS, e como um sistema de temporização se comporta face às 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 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 da gravidade, do terreno e de 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 que qualidade tem a geometria, em torno 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 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 espetro como a interferência chega a um recetor e se é detetada jamming, spoof, spoof-detect, tracking-loop, spectrum, impairment-eval kshana scenarios/jamming-demo.toml
Navegação em órbita terrestre baixa uma passagem, uma ligação, uma mensagem de navegação e uma solução de posição fundida, fase a fase 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 geodesia 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 utilizadores espaciais sinais GNSS para naves espaciais acima, em torno e para além das órbitas GNSS gnss-ssv kshana scenarios/gnss-ssv-shell.toml
PNT ótica ligações óticas através da atmosfera e valores de mérito de ótica mais RF optical-atmosphere, hybrid-optical-rf kshana scenarios/optical-atmosphere-network.toml
Análise de missão, ligações e operações espaciais lançamento, subida, entrada, atitude, ligações, planeamento de contactos e formatos de ficheiro 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
Cadeias da 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 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 a sua página de documentação.

Todas as superfícies#

Um só motor, os mesmos resultados em todo o lado: a linha de comandos, a biblioteca Rust, Python, JavaScript e WebAssembly, o servidor MCP com os seus comandos de plugin e competências, o Kshana Studio (todas as páginas correm no navegador, sem instalação, nada é carregado), as integrações com ROS 2, Signal K, OpenCPN, GNSS-SDR e gnss_lib_py, os kits de implementação systemd, Docker e Grafana, e o plugin JetBrains. docs/ALL-SURFACES.md lista-os com a forma de obter cada um e os nomes de todos os comandos de plugin, competências e páginas do Studio; docs/SURFACES.md diz, para cada comando e tipo, que superfície o inclui e quais não, com o motivo.

Como funciona uma execução#

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

Como uma execução flui. Um ficheiro TOML de cenário (um tipo, uma semente e os 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 escreve result.json, chart.svg, report.html e report.json, uma table.csv para os tipos de cenário que definem uma, e, a pedido, exportações SP3, CCSDS OMM e OEM, CZML, KML, GeoJSON, STK e SigMF; uma suíte escreve study.json e study.html. Esses ficheiros 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 ficheiro TOML de cenário (um tipo, uma semente e os 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 escreve result.json, chart.svg, report.html e report.json, uma table.csv para os tipos de cenário que definem uma, e, a pedido, exportações SP3, CCSDS OMM e OEM, CZML, KML, GeoJSON, STK e SigMF; uma suíte escreve study.json e study.html. Esses ficheiros 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 o GNSS negado. Pergunta quanto tempo um relógio ótico de rede de estrôncio e um relógio atómico à 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 ótico mantém o orçamento de 20 ns durante toda a interrupção de 6600 s; o CSAC mantém-no durante 2610 s, e está dentro do orçamento durante 95,6% da execução, face a 100% para o relógio ótico. 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 como ponto de partida.

Setor Comece por
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
Estrada automotive-urban-canyon
Ferrovia rail-tunnel-coast
Infraestruturas críticas e temporização clock-holdover, clock-ensemble
Telecomunicações e 5G (a quinta geração de redes móveis) telecom-prtc-holdover-24h, leo-vertical-5g-network-timing
Ciência e investigação sweep-clock-stability, quantum-pnt-demonstrator.suite
A pergunta que cada setor faz
Setor A pergunta que faz Comece por
Defesa e segurança Durante quanto tempo a nossa navegação e temporização se mantêm fiáveis sob jamming e spoofing, e que camadas nos mantêm dentro da especificação? campaign-jam-spoof-holdover-integrity, spoof-meaconing
Espaço: órbita terrestre A minha nave espacial vê satélites de navegação suficientes, durante quanto tempo o seu relógio mantém a hora entre soluções de posição, 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 aterragem, um rover ou um orbitador na Lua, em Marte ou mais longe terá uma posição e uma hora de confiança? lunar-relay-constellation, mars-orbit-pnt
Aviação e drones Depois de um jammer retirar o GNSS, durante quanto tempo o meu sistema de aeronave não tripulada (UAS) se mantém dentro do orçamento de posição, e há integridade disponível no meu percurso? small-uas-jammed-nav, araim-gps-galileo
Marítimo Até onde, sobre a água, chega um jammer, seria detetado um desvio de posição, e durante quanto tempo pode um navio avançar por estima até ao porto? maritime-strait-jamming, maritime-spoof-position-push, maritime-port-approach-coast
Estrada e automóvel Quanto se desvia um automóvel debaixo de um viaduto ou ao passar por um jammer à beira da estrada? automotive-urban-canyon
Ferrovia Quantos segundos dentro de um túnel consegue ainda um comboio dizer em que via está? rail-tunnel-coast
Infraestruturas críticas e temporização Se a hora GNSS for perdida ou falsificada, durante quanto tempo mantêm uma rede elétrica, uma plataforma de negociação ou um centro de dados uma hora rastreável? clock-holdover, clock-ensemble
Telecomunicações e 5G Se a referência de tempo GNSS se perder, o relógio da minha rede mantém-se dentro das máscaras da ITU-T, e durante quanto tempo? telecom-prtc-holdover-24h, leo-vertical-5g-network-timing
Ciência e investigação Posso reproduzir, estender e citar um resultado PNT, até à semente? sweep-clock-stability, quantum-pnt-demonstrator.suite

Evidências#

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

176 de 401 capacidades validadas face a referências independentes externas; 221 etiquetadas 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 a etiqueta 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 a sua etiqueta. 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 a etiqueta 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, etiqueta VALIDATED. Contagens ao vivo: 176 VALIDATED, 221 MODELLED, 4 PARTNER de 401 linhas. No total, 176 capacidades validadas face a referências independentes externas; outras 221 são etiquetadas com honestidade como MODELLED e 4 pertencem a PARTNER.Como uma capacidade obtém a sua etiqueta. 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 a etiqueta 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, etiqueta VALIDATED. Contagens ao vivo: 176 VALIDATED, 221 MODELLED, 4 PARTNER de 401 linhas. No total, 176 capacidades validadas face a referências independentes externas; outras 221 são etiquetadas com honestidade como MODELLED e 4 pertencem a PARTNER.
Etiqueta 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 face a verdade analítica ou autoconsistência da simulação, e dito em voz alta
PARTNER 4 propriedade de um parceiro de hardware; o Kshana não tem nenhuma 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 face ao Orekit 12,2; o Galileo até 0,61 m e o Swarm-A até 0,10 m face 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 registo é 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 funciona a validação, a tabela curada de destaques e os valores de evidência

Validação, reprodutibilidade e honestidade#

  • Cada termo de ruído é calibrado para um valor publicado e citado e validado face à relação padrão (desvio de Allan para relógios; crescimento do erro de navegação por estima de Groves para inercial; a conversão temporização→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 o ser.
  • Reprodutível por construção: scenario + seed + engine version → identical bits. scripts/check-reproducible.sh impõe-o; as execuções quânticas e clássicas usam sementes independentes, pelo que o seu ruído não é correlacionado.
  • A maturidade é indicada com honestidade: os valores de relógios óticos e de ligações óticas são resultados de alvos / demonstradores em terra, não de voo.

A etiqueta de evidência em cada figura#

Cada figura e tabela que uma execução escreve diz até que ponto confiar nela e em quais linhas do registo ela assenta. 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: no início (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 assenta numa linha modelada é etiquetada MODELLED por mais linhas validadas que haja ao lado; a etiqueta nunca pode afirmar mais do que o registo. Linhas, estados e ids são lidos da matriz, não escritos à mão (docs/VERIFICATION-MATRIX.md, docs/SCHEMA.md), e tests/evidence_labels_doc_sync.rs falha se uma figura não tem etiqueta ou se uma etiqueta 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 artefacto 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 indica o tipo de evidência, em linha com a escada de validação acima: VALIDATED = verificado face a uma referência independente externa (dados reais, uma biblioteca independente ou vetores de referência publicados); MODELLED = verificado face a verdade analítica ou autoconsistência da simulação (sem conjunto de dados externo independente). VALIDATED descreve o método de verificação, não um resultado de passa/falha — uma falha honesta face a 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) é apresentada como MODELLED. As linhas CI são salvaguardas de processo, não valores 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 em bruto não têm licença de redistribuição) são condicionadas por dados: o teste imprime um aviso de salto e permanece verde quando a entrada está ausente, e os números de referência públicos estão registados em tests/fixtures/. Reproduza as entradas em bruto com o scripts/fetch_*.sh correspondente.

Estado 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 a crate independente sgp4
VALIDATED Referenciais — nutação IAU 2000A/B, cadeia CIO IAU 2006/2000A, ERA bit a bit (X,Y até 1e-14, s até 1e-18, ERA até 1e-12) ERFA/SOFA eraXys06a · eraC2ixys · eraEra00 · eraNut00a/b
MODELLED GCRS→ITRS face a 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), mesmos 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, pelo que não é etiquetado VALIDATED)
MODELLED Geopotencial EGM2008 (grau/ordem 70) aceleração = ∇V até < 1e-6; colapso zonal para o J2 validado Coeficientes EGM2008 da NGA + identidade analítica de ∇V
VALIDATED Síntese do funcional gravítico (mapa de navegação auxiliada pela gravidade / sem GNSS) Somigliana do GRS80 + γ_e/γ_p até 3.5e-12; mapa de perturbação real do EGM2008 fisicamente plausível (RMS ≈ 26 mGal, g/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 de χ² coincidem NIST SP 1065 (Riley), Tabela 31/32 de 1000 pontos
VALIDATED Estimadores de Allan num relógio de césio real medido OADEV/OHDEV até 1e-3 (observado ≤ 3e-5), 16 fatores de média Stable32 num 5071A Cs real face a maser de H, 556 990 pts (tests/cs5071a_reference.rs, condicionado por dados)
VALIDATED Estimadores de Allan no PHASE.DAT canónico do Stable32 OADEV/MDEV/TDEV até 1e-3 (observado ≤ 5e-5), 139 fatores de média Desvios de referência do Stable32 para PHASE.DAT (tests/phasedat_reference.rs, condicionado por dados)
MODELLED Modelo de erro de IMU — ARW / VRW / instabilidade de enviesamento recuperado até < 5 % (instabilidade de enviesamento < 15 %) Folha de dados da Analog Devices ADIS16465; perfil de referência 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 resistência de Cowell + entradas absolutas de efemérides do Sol/Lua e de densidade nível de resistência caracterizado ≈ 333 m / 24 h; o não perturbado coincide com o Kepler em variáveis universais abaixo do metro, energia/momento ~1e-9 efeméride integrada de baixa precisão + Kepler analítico
MODELLED Lambert · Tsiolkovsky · porkchop ida e volta face à verdade de referência de dois corpos; ΔV < 0.01 % Izzo 2015 · equação do foguetão · piso analítico de Hohmann
MODELLED Determinação de órbita (lote de Gauss–Newton) abaixo do m / 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 face às efemérides precisas do Galileo (arco completo) 0,61 m RMS 3-D, 24 h, g/o-70, apenas forças Órbita final ESA0MGNFIN da ESA/ESOC (E11), EOP finals2000A reais (comparado com esta referência; nenhuma linha da matriz de verificação a nomeia como referência independente externa, pelo que não é etiquetado VALIDATED)
MODELLED Ajuste do modelo de forças face às efemérides precisas do Swarm-A (dinâmica reduzida) 0,10 m RMS 3-D (limite do 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, pelo que não é etiquetada VALIDATED)
MODELLED Ajuste do modelo de forças face ao LRO lunar (falha honesta) 6,67 m de dinâmica reduzida, acima do alvo 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, pelo que não é etiquetado VALIDATED)
MODELLED OD de Marte no espaço profundo (SRIF de dinâmica reduzida) ≈ 0,2 m LMO de Marte (FoM de simulação, não de missão real) OD sintética em ciclo fechado — validação da maquinaria do estimador
MODELLED Dinâmica de Marte com o Sol como centro face ao DE440 do JPL 137 m @ arco de 1 dia (cresce com o arco = n-corpos não modelado) DE440 do JPL através do ANISE (xval/anise-mars-od, condicionado por kernel) (comparado com esta referência; nenhuma linha da matriz de verificação a nomeia como referência independente externa, pelo que não é etiquetado VALIDATED)
VALIDATED Posicionamento de ponto único face a uma coordenada IGS levantada (observações reais) 5,7 m RMS 3-D / 1,1 m horizontal, SPP por código de dupla frequência sem ionosfera Levantamento da estação IGS ABMF + efemérides difundidas GPS, 2018-05-13 (tests/pvt_abmf.rs)
MODELLED UKF GNSS/INS de acoplamento forte 0,77 m RMS numa passagem LEO de 30 min incl. uma interrupção de 120 s deriva com modelo de forças, deduzida à mão
MODELLED Navegação por mapa gravítico sem GPS deriva INS de ~70 km → ~145 m recuperados Objetivo Quantum Wayfarer do ESA NAVISP
MODELLED Navegação referenciada ao terreno (TERCOM/SITAN) Deriva de 70 km → < 500 m (limite inferior da resolução da grelha ~140 m) DEM SRTM .hgt; deriva injetada manualmente (verificação não circular)
MODELLED Campo principal IGRF-14 (grau/ordem 13) polo ~80,7°N, dipolo ~29,7 µT, banda física de 22–67 µT IAGA (International Association of Geomagnetism and Aeronomy) igrf14coeffs.txt (semi-normalizado de Schmidt)
MODELLED Modulação do sinal de navegação e seguimento do código SSC próprio de BPSK = 2/(3·R_c); PSDs de área unitária; jitter do DLL C/A submétrico @ 45 dB-Hz Âncoras SSC/PSD em forma fechada + fórmula do ruído térmico do DLL de Kaplan & Hegarty
MODELLED Corretor diferencial de halo/NRHO no CR3BP STM = diferenças finitas; a órbita fecha-se com precisão de máquina; NRHO L2 9:2 ≈ 6,57 d / perilúnio ≈ 3 250 km verificação da STM por diferenças finitas + NRHO L2 meridional 9:2 publicada (≈ 6,56 d / ≈ 3 370 km) — CR3BP, não são efemérides reais do Gateway
MODELLED Integridade ARAIM de dupla constelação modo de falha de toda a constelação em 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, pelo que não é rotulada VALIDATED)
VALIDATED Geometria GNSS / DOP (GDOP/PDOP/HDOP/VDOP/TDOP) coincidência a 1e-6 relativo em 8 geometrias (bem condicionadas → quase singulares) gnss_lib_py 1.0.4 (Stanford NAV Lab) — biblioteca independente (tests/dop_reference.rs)
VALIDATED Métricas de avaliação de detetores 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 da ROC de deteção de anomalias em telemetria real do ESA OPS-SAT A AUC reproduz o scikit-learn a < 1e-9; AUC do detetor de contagem de picos ≈ 0.85 na partição de teste rotulada scikit-learn roc_auc_score na partiçã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 Núcleos numéricos do quantum-trade (ajuste NNLS da ADEV · bandas de consistência χ² · Q do relógio de van Loan) NNLS + Q exatos; χ² < 5e-4 com graus de liberdade 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 das Telecomunicações) MTIE (9 fatores de média, coincidência 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 compromissos 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 a < 1e-9 pymcdm + pyDecision (bibliotecas MCDA independentes de terceiros) + RI de Saaty (Random Index) / eig do SciPy-LAPACK (tests/mcda_*_reference.rs)
VALIDATED Envolvente de Doppler em LEO a partir da órbita e da portadora Máximo do Iridium a menos de 5 % do valor publicado de ±36 kHz; Xona Pulsar X1 dentro dos 32–34 kHz publicados Resultados de teste de PNT em LEO do RNTF; Leclère, Marathe & Reid, arXiv:2509,19551 (tests/leo_doppler_reference.rs)
MODELLED Convergência do PPP com aumentação por LEO 7,4 → 4,8 / 3,2 / 2,7 / 2,3 min com 60 / 96 / 192 / 288 satélites LEO, monótono; NEES do filtro dentro da banda χ² 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 detetado, limitado pelo holdover, sob spoofing) a composição reproduz a recursão de covariância de vários passos de clock_state; calibrada num 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 da decisão 35 testes com referência independente derivada à mão; artefacto de estudo determinista ao 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ções de RF (leis de escala + preditor leave-one-out) significância por hipótese nula de permutação; artefacto determinista ao byte (5 sementes) corpus sintético fundamentado em parâmetros — as métricas de avaliação são VALIDATED face ao scikit-learn (acima); o estudo é MODELLED
CI Reprodutibilidade entre plataformas entrada idêntica bit a bit + valores de referência de forma em 3 SO (sistemas operativos) Matriz de CI Linux / macOS / Windows, valores de referência SHA-256
CI Cobertura de testes ~95 % das linhas em src/ excluindo src/*_data.rs e src/main.rs, com limiar de bloqueio ≥ 85 % cargo-tarpaulin (motor LLVM)

Como uma capacidade obtém a sua etiqueta: 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 obtém o seu rótulo — o invariante imposto pela CI: sem referência independente externa ⇒ não pode ser Validada · SVG

Como cada afirmação é suportada: a coluna Validada é, por construção, 176 de 176 ExternalDataset (imposto pela CI); as linhas Modeladas são rotuladas com honestidade como InternalConsistency, ReferenceImpl ou ExternalDataset; as linhas do parceiro não têm referência independente do Kshana
Erro de posição do SGP4/SDP4 no pior caso face à referência AIAA 2006-6753 por regime, escala logarítmica: todos os regimes ficam muito abaixo da tolerância AIAA, com o pior caso de 4,12 mm no regime de espaço profundo não ressonante
Em cima: cada linha Validada é suportada por um conjunto de dados externo, por construção. Em baixo: 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 face 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 o respetivo rótulo no registo. A tabela de domínios é escrita por tools/gen_readme_blocks.py a partir de web/capabilities.json, o mesmo ficheiro 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 a domínio, com todas as capacidades e o respetivo rótulo, está em docs/CAPABILITY-DOMAINS.md.

Instalar#

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

Uma passagem que nomeia clientes de IA de terceiros foi omitida aqui; encontra-se no README.md no GitHub.

Uma passagem que nomeia clientes de IA de terceiros foi omitida aqui; encontra-se no README.md no GitHub.

Uma passagem que nomeia clientes de IA de terceiros foi omitida aqui; encontra-se no README.md no GitHub.

Canal Instalar Guia
Experimentar no navegador abrir https://kshana.dev Guia do Studio
Linha de comandos (Rust) cargo install kshana Utilização da linha de comandos
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 do npm e do 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 excertos 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 excertos de instalação do MCP
npx npx -y kshana-mcp@0.40.0 Todos os excertos de instalação do MCP
uvx / pipx uvx kshana-mcp==0.40.0 Todos os excertos de instalação do MCP
Homebrew brew install ashfordeOU/tap/kshana-mcp Todos os excertos de instalação do MCP
Scoop scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket && scoop install kshana-mcp Todos os excertos de instalação do MCP
winget winget install AshfordeOU.KshanaMcp Todos os excertos de instalação do MCP
Binário pré-compilado descarregar kshana-mcp-<target> da versão publicada e verificá-lo com o SHA256SUMS Todos os excertos de instalação do MCP
Registo oficial do MCP pesquisar io.github.ashfordeOU/kshana-mcp Todos os excertos de instalação do MCP
Remoto (HTTP em fluxo contínuo), alojado pelo próprio utilizador kshana-mcp --http 127.0.0.1:8080 Guia de alojamento próprio
Plugin para IDE JetBrains Definições → Plugins → Marketplace → pesquisar "Kshana" (ID do plugin dev.kshana.ide) Guia do plugin
Extensão para o Signal K npm install signalk-kshana-trust Guia da extensão para o Signal K
Extensão para o OpenCPN descarregar o tarball do plugin da versão publicada Submissão ao catálogo do OpenCPN
Painel do Grafana importar kshana-grafana-*.json da versão publicada Código-fonte do painel
Imagem de compilação 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 posterior, 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.

Executar 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

Para além de run, o módulo expõe run_full (JSON, SVG e o resumo de uma linha em simultâneo), run_typed, validate_toml, list_kinds / scenario_kinds e error_kind; consulte docs/PYTHON_API.md.

O pacote npm é o motor completo compilado para WebAssembly. No Node.js, entregue o binário a initSync; num navegador, await init() obtém-no (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 motor aberto está no centro e todas as superfícies o executam: a linha de comandos, a biblioteca Rust, o Python, o WebAssembly e o Kshana Studio, o servidor MCP, a imagem Docker e o plugin JetBrains. O mesmo ficheiro de cenário produz os mesmos bytes em cada uma. O Kshana Pro assenta por cima como uma sobreposição 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 registo de verificação de 401 capacidades (176 VALIDATED, 221 MODELLED, 4 PARTNER). Em torno, cada superfície executa o mesmo motor: linha de comandos (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 registo de verificação de 401 capacidades (176 VALIDATED, 221 MODELLED, 4 PARTNER). Em torno, cada superfície executa o mesmo motor: linha de comandos (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.
No interior do motor: as camadas de domínio e o registo de verificação A arquitetura do Kshana em camadas. Cinco portas de entrada (linha de comandos, 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 partilhado, 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 etiqueta.A arquitetura do Kshana em camadas. Cinco portas de entrada (linha de comandos, 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 partilhado, 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 etiqueta.

Um motor, muitos pontos de entrada. Um único núcleo em Rust (kshana) executa cada cenário, acessível através de uma CLI, de uma extensão Python, de um módulo WebAssembly no navegador, de um servidor MCP para agentes de IA e de um plugin para IDE JetBrains — todos convergindo num único despacho api::run_toml. No interior, os pacotes de sensores ligam-se a uma interface comum de modelos de erro; a par deles encontram-se uma camada de referenciais (precessão–nutação IAU 2006/2000A e a redução GCRS↔ITRS baseada no CIO), uma camada de astrodinâmica/numérica (SGP4/SDP4 analítico e um propagador numérico de Cowell com o respetivo modelo de forças EGM2008/perturbações, conceção de manobras e determinação de órbita), uma camada de integridade/GNSS (RAIM/ARAIM, SBAS, o domínio das medições, jamming, cislunar), uma camada de fusão / PNT alternativo (os estimadores GNSS/INS e os correlacionadores de mapas de gravidade/terreno/magnéticos), uma camada de espaço profundo e lunar (PNT radiométrico em Marte e o conjunto de PNT lunar, com o nível de evidência de cada parte na matriz — tempo LTC, VLBI, OD+relógio conjuntos, realização de referencial, volume de serviço, PNT diferencial, interoperabilidade), uma camada de análise de missão (balanços de ligação de lançamento / reentrada / cobertura / apontamento / passagem e o ambiente de meteorologia espacial) e a camada aberta de estudos de resiliência e aprendizagem automática (pontuação de resiliência RPCF, a lacuna de otimismo por degradações de RF e o demonstrador de PNT quântico) cujos artefactos reprodutíveis assentam em núcleos validados.

Dois crates autónomos, excluídos do workspace, situam-se junto ao 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, da barreira de licenças e da compilação MSRV (versão mínima suportada do Rust) pela lista exclude do Cargo.toml da raiz. O plugin 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) encontram-se em docs/ARCHITECTURE.md.

Diagramas#

Os diagramas são fontes Mermaid em docs/diagrams/, renderizados em SVG e PNG para docs/assets/diagrams/ (tools/render-diagram-chromium.sh <name> em Linux, os outros dois scripts render-diagram nos restantes sistemas), e um registo associa cada PNG ao SVG exato de que veio. Os testes fixam as contagens que indicam. Os gráficos das secções anteriores são desenhados por ferramentas a partir de execuções do motor; estes mostram como as peças se encaixam.

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

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

No interior de uma execução: um ficheiro de cenário com a sua semente e a sua cronologia GNSS alimenta o motor que, a cada passo de tempo, faz evoluir o modelo de erro, executa o estimador e pontua as figuras de mérito, e escreve um resultado e um gráfico reprodutíveis
O ciclo interno de uma execução · SVG · fonte engine-flow.mmd

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

O circuito de laboratório: um cenário é exportado com os seus eventos e condições de ensaio, um operador exterior ao Kshana reproduz um ficheiro num simulador de laboratório, o registo do recetor é pontuado face aos eventos indicados, e o circuito de evidências liga o cenário, as condições, os hashes dos registos e a pontuação num 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, aceita cenários incluídos ou um cenário ou registo que o utilizador abra, e mostra o resultado na vista Simples, na vista Avançada e nas páginas de tarefas, com as exportações guardadas pelo utilizador
Como o Studio é executado, localmente · SVG · fonte studio-flow.mmd

O fluxo de teste e de publicação: as barreiras locais (formatação, clippy, a verificação de ausência de atribuição, o mecanismo de cobertura da documentação e scripts/gate.sh, que executa a bateria completa e as execuções repetidas e escreve o recibo que o hook de pre-push verifica) conduzem a um pull request apenas em CI e a uma CI completa em verde; o proprietário avança main por fast-forward até ao commit verde e uma tag anotada fica nele depois da verificação de sincronização de versões; o fluxo de publicação verifica a bateria completa no commit etiquetado antes de publicar o que quer que seja, compila os binários com um SBOM, somas de verificação e proveniência de compilação, publica no crates.io, no PyPI, no npm, no registo de contentores, no registo MCP e no JetBrains Marketplace, consulta cada registo até este servir 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 pages com a tag main e é recusado, a menos que nada fora de web/ e .github/ tenha mudado desde a última versão publicada
Fluxo de teste e de publicação, das barreiras locais a uma publicação verificada e ao caminho apenas do site · SVG · fonte release-flow.mmd · docs/RELEASING.md

O mapa de módulos: a linha de comandos, o Python, o WebAssembly, o servidor MCP e o plugin JetBrains chamam o despacho tipado sobre todos os tipos de cenário, que chega ao núcleo partilhado, ao tempo e referenciais, aos pacotes de sensores, à astrodinâmica, à integridade, à deteção de spoofing, à fusão, ao espaço profundo e lunar, à resiliência, e aos módulos de árbitro e de benchmark, todos sustentados pela matriz de verificação
Onde vive o código · 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 o crates.io, o PyPI, o npm, as GitHub Releases, o playground das Pages, o registo de contentores, o registo MCP e o JetBrains Marketplace, com um arquivo no Zenodo
O que é distribuído e onde, e o que o verifica · SVG · fonte distribution.mmd

Assistente de IA#

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

Instalar o servidor MCP#

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

Uma passagem que nomeia clientes de IA de terceiros foi omitida aqui; encontra-se no README.md no GitHub.

Uma passagem que nomeia clientes de IA de terceiros foi omitida aqui; encontra-se no README.md no GitHub.

Uma passagem que nomeia clientes de IA de terceiros foi omitida aqui; encontra-se 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], verificado por SHA256SUMS e gh attestation verify none v0.40.0
Registo do MCP io.github.ashfordeOU/kshana-mcp (encontrado por clientes que reconhecem o registo) um cliente que reconhece o registo 0.40.0
Remoto (HTTP em fluxo contínuo) kshana-mcp --http 127.0.0.1:8080, alojado pelo próprio utilizador: consulte docs/deploy/mcp-http.md o seu próprio anfitrião v0.40.0

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

Uma passagem que nomeia clientes de IA de terceiros foi omitida aqui; encontra-se no README.md no GitHub.

A configuração por cliente está em docs/integrations.md. O servidor está listado no registo 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: analisar o TOML e detetar o seu tipo, sem executar
list_example_scenarios Os cenários de referência incluídos, em JSON
get_example_scenario O texto TOML de um cenário de referência incluído, byte a byte o ficheiro em scenarios/
report_scenario Executar um cenário e devolver o respetivo relatório
animate_scenario Executar um cenário e devolver a sua série temporal como 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 este-norte-cima e a elipse de erro horizontal; ou uma predefinição de horizonte com a sua proveniência

Exportação e interoperabilidade

Ferramenta O que faz
list_export_formats Que 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 escritor 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 Escrever uma rota GeoJSON LineString num cenário que percorre um trajeto 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 catálogo CCSDS (Consultative Committee for Space Data Systems) 502.0-B-2 OMM (Orbit Mean-elements Message)
export_oem Exportar a série de estados de um cenário orbit como efemérides CCSDS OEM (Orbit Ephemeris Message) 2,0 — a posição TEME (true equator, mean equinox) e
export_table_csv Executar um cenário e devolver a sua tabela de reprodutibilidade como CSV (comma-separated values) — a tabela estável ao byte que a CLI (command-line interface) escreve 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 recetor e da embarcação

Ferramenta O que faz
assess_receiver_log Avaliar a confiança num registo real de um recetor GNSS (global navigation satellite system)
assess_vessel_stream Pontuar um excerto NMEA 0183 limitado (no máximo 2 MiB e 20 000 épocas
assess_vessel_log Um registo NMEA 0183 de uma embarcação (no máximo 4 MiB) como execução em lote, com o TOML de sessão a indicar os limites da embarcação
create_evidence_pack Um pacote de evidências assinado para uma janela do registo de uma embarcação (kshana receiver-trust evidence)
attach_evidence_timestamp Associar um token de marca temporal 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 formação de tripulações a partir de um TOML nmea-scenario (jamming, arrastamento da posição, spoofing de tempo, atraso de repetição) com o registo 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 como texto CSV (no máximo 4 MiB)
route_exposure A proporção 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 referência programada (kshana jammertest import): os intervalos de uma área de teste tornam-se eventos de confiança do recetor, com o id do catálogo e o ano em cada etiqueta. Intervalos planeados, não horas de emissão registadas; nenhum campo de contacto do plano é lido. MODELLED. Ver docs/JAMMERTEST.md.
jammertest_score Pontua um registo de recetor face a esse calendário (kshana jammertest score): por teste, a latência de deteção, os alarmes perdidos e o tempo de recuperação, e os falsos alarmes fora de todos os intervalos. Registos de texto como log, binários (ubx, sbf) como log_base64. Um pacote assinado precisa de uma chave: linha de comandos. Apenas consultivo; MODELLED.
fit_imu_log Parâmetros do acelerómetro e do giroscópio dos cenários hybrid e fusion ajustados a partir de um registo de IMU parada (CSV ou EuRoC) por desvio de Allan, com uma tabela [accel_classical] pronta a colar e o SHA-256 do registo (kshana imu-fit). Texto à entrada, JSON à saída; MODELLED.

IQ GNSS (ficheiros do diretório de trabalho; desativado no modo HTTP)

Ferramenta O que faz
iq_signals A configuração da camada IQ GNSS
iq_info Descrever uma gravação IQ (em fase e em quadratura) no diretório de trabalho sem a processar
iq_scene Gerar uma cena IQ GNSS multissatélite no diretório de trabalho (kshana iq scene)
iq_acquire Aquisição por FFT (fast Fourier transform) de um ou mais PRN (códigos pseudoaleatórios) numa gravação (kshana iq acquire), opcionalmente atrás de andares de front-end
iq_track Adquirir e depois seguir com o banco de DLL/PLL/FLL (malha de bloqueio de atraso, de fase e de frequência) (kshana iq track), com as malhas a partir de um `kshana.loop-desig
iq_frontend Aplicar DSP (digital signal processing) de front-end do recetor e de mitigação de interferência
iq_sweep Reproduzir uma gravação IQ do diretório de trabalho com vários projetos de malhas de seguimento (kshana iq sweep)
iq_monitor Executar os monitores de deteçã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 bloqueio das malhas de seguimento a execuções de laboratório (kshana iq labfit) a partir de um cenário iq-labfit cujos registos estão em linha (text ou base64
iq_test_conditions Validar um ficheiro kshana.test-conditions/1 dado como texto e devolver as condições resolvidas com o respetivo hash
iq_campaign Executar uma campanha de reprodução 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 quadro público preenchido a partir de documentos de resultados dados como texto (kshana compliance-report)
compliance_mapping As tabelas de mapeamento estáticas (ou, com sources, os documentos de origem que citam, com versões e URL) em Markdown, encabeçadas 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 quadro DHS Resilient PNT, a IMO MSC.1/Circ.1575 e o Apêndice F do ICAO Doc 9849
run_standards_pack Um pacote executado face a limiares indicados 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 face ao LNIS V5 AD1 Volume A (LSIS-AFS V1.0): os códigos face às tabelas impressas, ou um fluxo de símbolos face ao formato de trama; o LDPC e o CRC-24Q das subtramas 2 a 4 não são verificados
create_round_trip_pack O pacote assinado do circuito de laboratório: cenário, documento kshana.test-conditions/1, registo do recetor e pontuação ligados por hash

Benchmark

Ferramenta O que faz
score_benchmark Uma submissão kshana-bench pontuada face a um ficheiro de referência, ambos como texto JSON (kshana bench score, bench/SPEC.md): o ficheiro de resultados com a versão da especificação, a divisão, os hashes de entrada e as métricas da tarefa. MODELLED; descreve um registo ou um corpus, nunca um produto.
render_leaderboard Ficheiros de resultados do kshana-bench apresentados como a página estática de classificação (texto HTML), cada um validado primeiro.

Edições#

O motor completo é gratuito. O Kshana Pro e os estudos à medida destinam-se a programas que precisam de mais, e todo o percurso pago começa com uma mensagem: aqui não há preços.

Gratuito Kshana Pro Estudo à medida
O que é todo o motor aberto, todos os 92 tipos de cenário, sem restrição de recursos uma sobreposição proprietária sobre o mesmo motor, sob contrato um estudo MODELLED de resiliência de PNT do seu sistema, feito por nós
Licença AGPL-3.0 (GNU Affero General Public License, versão 3), ou uma licença comercial proprietário contrato
Como começar instalar ou abrir kshana.dev pedir uma avaliação do Pro pedir 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. Todos os tipos de cenário abertos são executados no Pro sem alterações, e um cenário aberto é executado no Pro sem qualquer licença.

Sem física nova. O Pro não acrescenta nenhum modelo físico e não altera nenhum. Todos os números do Pro provêm de execuções do motor aberto, pelo que um valor do Pro é tão fiável como o tipo de cenário aberto de onde veio, e nunca mais.

O Pro responde às perguntas seguintes de um programa: que projeto voar (um otimizador de projeto e a sua frente de Pareto), com que segurança se responde (incerteza e sensibilidade) e se a missão satisfaz os seus requisitos (um dossiê de missão, rastreabilidade de requisitos, estudos de compromissos, uma verificação de regressão de cenários, gémeos digitais de relógios, um dossiê de estudo e um serviço nas instalações do cliente). Também vigia uma campanha de valores e faz falhar um pipeline quando um deles piora, testa planos de sinal candidatos face aos sinais abertos de navegação por satélite nos dois sentidos (coexistência espetral) e coloca estudos em fila num serviço de tarefas nas instalações do cliente, com um registo de entregas encadeado por hash. Cada um está descrito, com o que produz e o que não faz, em docs/PRO.md. Nada do que o Pro produz é uma certificação, e um estudo à medida também não é uma certificação.

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

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

  • O otimizador de projeto, o estudo de incerteza e o dossiê de missão executam cenários do motor aberto através da 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 atribuiu a cada valor, nunca um superior.
  • Os gémeos digitais de relógios usam o modelo de relógio do motor aberto e o seu estimador do desvio de Allan: um gémeo é calibrado com o orçamento de Allan publicado do dispositivo e depois verificado estimando o desvio de Allan do gémeo com o estimador aberto.
  • Os estudos de compromissos executam cada opção de arquitetura como um cenário do motor aberto, sem alterações, e ordenam as opções segundo uma figura de mérito lida do resultado de cada execução.
  • A vigilância de campanhas lê os seus valores dos resultados de execuções do motor aberto dos cenários de um pacote e compara-os com a execução anterior bem-sucedida.
  • A coexistência espetral 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 ordenação dos planos.
  • O serviço de tarefas nas instalações do cliente executa cenários abertos e do Pro através do mesmo motor e guarda cada resultado tal como a execução o devolveu.
  • Os pacotes de evidências registam, para cada execução, o hash do cenário que o motor aberto grava no seu resultado, para que um valor de um pacote possa ser reproduzido voltando a executar o seu cenário.
  • Ferramentas de engenharia de sistemas e de programas. As ferramentas de engenharia de sistemas baseada em modelos (MBSE) e de programas do Kshana Pro verificam os requisitos de um programa face a execuções do motor aberto: importam requisitos como valores separados por vírgulas (CSV), ou como um subconjunto documentado do Requirements Interchange Format (ReqIF) ou de texto Systems Modeling Language versão 2 (SysML v2), avaliam cada critério de aceitação, com a respetiva unidade, face aos valores que uma execução escreveu, e produzem uma matriz de referência cruzada de verificação (VCRM), um modelo SysML v2, um relatório de impacto de alterações e um pacote de evidências offline. Não voltam a executar nem a recalcular nada, e leem apenas o que o motor aberto publica: o result.json de cada execução (os campos que um critério nomeia, as respetivas unidades, o carimbo de reprodutibilidade com hash do cenário, semente, versão do motor e versão do esquema, e o rótulo da execução e os níveis dos valores), o seu report.json (tipo, registo de reprodutibilidade e rótulos de capacidades), o ficheiro de cenário (o seu hash, tipo, semente e parâmetros), o esquema de campos e unidades (a unidade, a proveniê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).

Apoio 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:

  • Apoio comercial e integração — incorporação do Kshana na sua cadeia de ferramentas, cenários à medida e correções prioritárias.
  • Modelos de sensores à medida — calibrados para o seu equipamento, incluindo modelos de resiliência sujeitos a controlo de exportação mantidos numa sobreposição privada.
  • Kshana Pro — ferramentas proprietárias de engenharia de sistemas baseada em modelos (MBSE) e de programas que verificam os requisitos de um programa face a 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 alterações e um pacote de evidências offline. Não voltam a executar nada e leem apenas as saídas publicadas do motor: o result.json e o report.json de cada execução, o ficheiro de cenário, o esquema de campos e unidades e os rótulos da matriz de verificação (a lista completa está em Edições).
  • Ferramentas do Kshana Pro de projeto, incerteza e missão — a frente 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 só comando, com uma matriz de verificação e um PDF; consulte docs/PRO.md.
  • Vigilância de campanhas, coexistência espetral e serviço de tarefas do Kshana Pro — um pipeline que falha quando um valor vigiado piora, planos de sinal testados face aos sinais abertos de navegação por satélite nos dois sentidos, e uma fila de tarefas nas instalações do cliente com um registo de entregas encadeado por hash; consulte docs/PRO.md.
  • Formação e consultoria sobre análise de desempenho de PNT quântico/clássico.

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

Investigação#

Os estudos construídos sobre o motor aberto são publicados no arXiv. Cada um nomeia o comando do motor que lhe está associado, para que os seus números possam ser regenerados a partir de um cenário ou de um exemplo de estudo registado no repositório.

Investigação construída sobre o motor aberto: seis artigos no arXiv, cada cartão a nomear o artigo, a sua data e categoria, e o comando do motor que regenera os seus números. Os mesmos seis artigos, com ligações e comandos, estão na tabela abaixo.Investigação construída sobre o motor aberto: seis artigos no arXiv, cada cartão a nomear o artigo, a sua data e categoria, e o comando do motor que regenera os seus números. Os mesmos seis artigos, com ligações e comandos, estão na tabela abaixo.
Artigo O que 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 detetor de interferência GNSS quando as condições mudam pode ser prevista apenas a partir de estatísticas da distribuição de origem, num banco de ensaio sintético aberto 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 recetor de temporização GNSS sob spoofing não tem um limite incondicional finito para o erro de tempo não detetado, pelo que o artigo apresenta um limite condicional, calibrado num 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 só é uma base estável para uma decisão onde um projeto domina; onde os projetos disputam, a simples reponderação 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âncias dentro de uma constelação lunar deixa a posição absoluta de uma estação à superfície inobservável; um atraso de interferometria de linha de base muito longa (VLBI) a partir da Terra restitui-a quando a constelação é esparsa e aperfeiçoa-a quando é rica. o tipo 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
As constelações planeadas de quatro a seis satélites dão uma geometria deficiente no polo sul lunar, e alguns faróis de medição de distância à superfície corrigem-na de forma muito mais económica do que mais satélites. o tipo 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 seguimento cislunar apenas por distância, porque a velocidade é inobservável num instante, pelo que o artigo usa o Gramiano de observabilidade em quatro órbitas retrógradas distantes planares: apenas por distância, o posto é 2 de 4 num instante e é preciso um arco de cerca de 2,09 h para se tornar totalmente observável, com o condicionamento a melhorar à medida que o arco se alonga; a taxa de variação da distância (Doppler) dá posto 4 de imediato; e a co-estimação de uma estação com estados de satélites e relógios continua deficiente de posto em 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 cislunar-observability: kshana scenarios/cislunar-observability.toml (o seu irmão cislunar-arc-recovery testa o limiar com um estimador independente por diferenças finitas)

Os três exemplos de estudo escrevem artefactos deterministas ao byte (sementes fixas) que registam a versão do motor, as sementes e um hash da configuração. Os três artigos lunares e cislunares assentam no conjunto lunar (o nível de evidência de cada parte consta da matriz de verificação); as suas afirmações de geometria e de diluição de precisão são também verificadas de forma cruzada face a referências independentes separadas em tests/validate_p*.rs. Mais em Artefactos de estudo reprodutíveis em Referência.

Citar#

Se 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 mostra a partir dele um botão "Cite this repository". Cada versão publicada é arquivada no Zenodo; o DOI (Digital Object Identifier) de conceito 10.5281/zenodo.20528627 resolve sempre 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 licenciamento duplo: a GNU AGPL-3.0-only (LICENSE), ou uma licença comercial da Ashforde® OÜ para integração fechada a que a AGPL não se adapta. LICENSING.md explica qual se aplica. As contribuições são licenciadas à entrada sob a AGPL e concedem também à Ashforde® OÜ o direito de as incluir na edição comercial; assine cada commit com git commit -s (consulte CONTRIBUTING.md). "Kshana" e as suas marcas são marcas registadas da Ashforde® OÜ: a licença abrange o código, não o nome, pelo que deve mudar o nome dos 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, a 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
Utilização: a linha de comandos por inteiro

Utilização#

Execute qualquer cenário; a CLI despacha segundo o campo kind do cenário e escreve <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html e <scenario>.report.json junto dele — mais <scenario>.table.csv para os tipos que publicam uma tabela. O relatório (uma página HyperText Markup Language (HTML) e um documento JSON com o mesmo conteúdo) traz um resumo executivo, cada entrada com a sua unidade, os resultados e os gráficos, as tabelas de varrimento, Monte Carlo ou cadeia de uma campanha, uma cronologia de eventos, o rótulo VALIDATED / MODELLED / PARTNER e a origem de cada capacidade que a execução usou, o que não está modelado e um registo de reprodutibilidade (versão do motor, resumos Secure Hash Algorithm 256-bit (SHA-256), semente, plataforma e o comando exato). Imprime-se para um ficheiro PDF (Portable Document Format) limpo a partir do navegador em papel A4 ou Letter; o motor não escreve nenhum PDF. 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> escreve junto do cenário gravações CZML (a Cesium Language), KML (Keyhole Markup Language), GeoJSON (Request for Comments 7946), efemérides Ansys STK (Systems Tool Kit) .e e SigMF (Signal Metadata Format), e --import-route <route.geojson> alimenta uma linha GeoJSON nos tipos que percorrem um trajeto. Cada formato é validado face à sua especificação publicada, e um cenário a que um formato não se aplica diz porquê: consulte docs/INTEROP.md.

Outros modos da CLI — analisar um cenário com lint, fornecer dados reais de orientação da Terra ou executar uma bateria completa:

# 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ções. --animate svg|html|frames|all escreve <scenario>.animation.svg (keyframes de Cascading Style Sheets (CSS), sem script), <scenario>.animation.html (reproduzir, pausar, deslocar, velocidade e painéis sincronizados, sem recursos externos) e <scenario>.frames/ (frame_0000.svg, … mais manifest.json com as imagens por segundo e a duração). Uma campanha reproduz as suas fases e alarmes, uma execução de espetro a sua cascata; o tema segue prefers-color-scheme e prefers-reduced-motion mostra a imagem final. Renderiza as amostras da própria execução, idênticas ao byte numa nova execução, e não acrescenta evidências. Consulte docs/ANIMATION.md.

Um manifesto de bateria é um pequeno ficheiro TOML (Tom's Obvious, Minimal Language) — um title e uma lista scenarios = [ … ] de caminhos de cenários — que o motor executa por sua vez, reunindo cada resultado (com os respetivos rótulos MODELLED / VALIDATED) num único artefacto de estudo autodescritivo. Consulte scenarios/quantum-pnt-demonstrator.suite.toml.

Papel de interoperabilidade. O Kshana é a camada de simulação de desempenho que se situa a par da cadeia de ferramentas de pós-processamento, não uma substituição dela: alimente a sua saída RINEX ao RTKLIB ou ao gLAB para obter uma solução de posição, e use a sua saída SP3 como produto de órbita precisa para ferramentas como o Ginan — o Kshana responde a que resiliência uma dada arquitetura PNT proporciona antes de existirem sinais reais, em formatos que essas ferramentas já ingerem (--export-sp3, ou export_sp3 = true num cenário orbit, escreve <scenario>.sp3). A mesma órbita pode ser publicada como elementos médios CCSDS OMM de uma norma em curso (--export-omm, ou export_omm = true, escreve <scenario>.omm) — uma mensagem OMM 502,0 KVN (keyword = value notation) por satélite definido por TLE, com o número de catálogo NORAD (North American Aerospace Defense Command), o designador internacional COSPAR (Committee on Space Research) e a época reais de cada objeto, para qualquer consumidor que compreenda OMM, em vez de um conjunto de elementos de duas linhas feito à medida.

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

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 ótico é de 1.20e-4 ns: o resumo imprime valores pequenos com algarismos significativos em vez de os arredondar para 0.0. security indica n/a (no attack) porque este cenário não configura nenhum ataque, pelo que não há nada a detetar. O resultado JSON continua a conter o limite analítico de detetabilidade de spoofing de cada relógio em fom.security (0,997 para o relógio ótico, 0,000 para o relógio atómico à escala de chip, cujo ruído próprio na janela de monitorização excede a especificação de 20 ns), e o seu bloco figure_tiers marca esse valor como applicable: false. O tipo de cenário spoof pontua a deteção face a um ataque injetado. figure_tiers atribui também a cada valor comunicado o seu nível de verificação — VALIDATED (verificado face 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 comunica adicionalmente um bloco de geometria — fração de amostras com solução de posição e melhor/mediana diluição de precisão de posição (PDOP) e exatidão de posição — a par do resultado do relógio.

Leia estes dois números com cuidado. security é um limite analítico de detetabilidade de spoofing derivado da estabilidade de cada relógio — só tem significado face a um cenário de spoofing configurado e não é um detetor RAIM multissatélite. integrity é aqui a autoconsistência do filtro (fração das amostras de falha dentro do seu próprio limite de k sigma), não um valor de integridade HPL/VPL de aviação. Consulte docs/INTEGRITY.md.

Para integridade autónoma genuína do recetor, o tipo de cenário integrity (scenarios/integrity-raim.toml) executa RAIM real de instantâneo e de separação de soluções (ao estilo ARAIM) sobre a geometria da constelação propagada: calcula os níveis de proteção horizontal/vertical (HPL/VPL) por época e comunica a fração de épocas que satisfazem os limites de alerta configurados, com um diagrama de integridade de Stanford para a classificação de erro face ao PL (nível de proteção).

Artefactos de estudo reprodutíveis

Quatro estudos abertos regeneram cada um um artefacto determinista ao byte (semente fixa) com um só comando — os números por trás dos estudos do cruzamento quântico-versus-clássico, da lacuna de otimismo por degradações de RF, da pontuação de resiliência de PNT e do 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 artefacto regista a versão do motor, as sementes e um hash de configuração e traz um rótulo MODELLED/VALIDATED honesto. As sondas com dados reais (*_probe) executam o mesmo pipeline sobre gravações que fornece localmente; nenhum conjunto de dados é distribuído no repositório. O estudo da lacuna de otimismo por degradações 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 à superfície, arXiv:2607,02566 observabilidade por VLBI e arXiv:2610,23871 observabilidade do comprimento de arco cislunar) têm as suas afirmações de geometria, diluição de precisão, previsão em tempo real de referencial / parâmetros de orientação da Terra (EOP), órbitas retrógradas distantes e medição de distância por RF verificadas de forma cruzada e independente em tests/validate_p*.rs face a referências independentes separadas (scipy.special.j1, uma resolução DOP (HᵀH)⁻¹ independente em NumPy, uma nova análise em NumPy das mesmas linhas finals2000A do IERS, e a NASA/JPL Three-Body Periodic Orbit Database). São verificações de regressão adicionais sobre o conjunto lunar modelado; 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 no total (clock é o predefinido se for 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 (banco de ensaio de avaliação da deteção de degradações de RF por aprendizagem automática — corpus sintético rotulado + estrutura de ROC/AUC independente do detetor + lacuna de otimismo dentro/fora da distribuição), quantum-trade (compromisso PNT quântico versus clássico com ingestão de ADEV medida + envolvente de resiliência sem GNSS; MODELLED), space-weather (índices solares/geomagnéticos + temperatura exosférica de Jacchia-71 + densidade termosférica condicionada pela atividade sobre a atmosfera estática; MODELLED), oem-interop (ponte de importação/ida-e-volta CCSDS OEM 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 pacotes espaciais CCSDS 133,0 TM/TC — telemetria/telecomando — disposição exata de bits, ida-e-volta verificada) e attitude-budget (binário de gradiente de gravidade em 3 graus de liberdade + orçamento de erro de apontamento RSS), passes (previsão de passagens de nascer/pôr de estações terrenas — AOS/TCA/LOS, elevação máxima, acesso) e link-budget (equação de ligação CCSDS/DSN unidirecional — FSPL / Eb·N₀ / margem / fecho); telecom-timing (erro de tempo em holdover, MTIE e TDEV verificados face a máscaras ITU-T); spectrum (toda a banda L do GNSS como uma única densidade espetral de potência: uma cascata frequência-tempo sob uma cronologia de jammer programada de onda contínua, banda estreita, chirp ou ruído adaptado, relação jammer-sinal por banda e densidade efetiva de portadora-ruído a partir do coeficiente de separação espetral, e entrada e saída de gravações Signal Metadata Format (SigMF) com estimativas espetrais de Welch; os espetros de sinal VALIDATED face a valores de manuais, o cenário de jammer MODELLED; consulte docs/SPECTRUM.md; o mesmo tipo desenha painéis de banda UHF, S e C com sinais de órbita terrestre baixa concebidos); leo-signal (projetos de sinais de posicionamento, navegação e temporização em órbita terrestre baixa para qualquer sistema: espetros de banda limitada, jitter de seguimento de código e exatidão de medição de distância, pesquisa e tempo de aquisição, separação espetral face ao GPS e ao Galileo, tolerância a jammers e um compromisso entre bandas UHF e C, a partir de predefinições públicas como Xona Pulsar, Iridium, Starlink e CentiSpace ou projetos em linha; as formas fechadas e o Doppler em LEO VALIDATED, os projetos MODELLED; consulte docs/LEO-SIGNAL.md); solar-system (o Sol, os planetas, Plutão, a Lua e sete grandes luas numa só época — posições, constantes, tempos de luz e trajetórias orbitais; posições dos planetas VALIDATED face ao JPL Horizons) e body-pnt (posicionamento em torno de qualquer desses corpos com uma constelação de navegação local e uma ligação de espaço profundo desde a Terra; MODELLED); campaign (tipos existentes compostos numa cronologia de missão encadeada com o estado passado entre fases, um varrimento de parâmetros, um conjunto Monte Carlo com semente, ou vários cenários sob uma condição partilhada; 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 GPS, Galileo, BeiDou e GLONASS, e cobertura e diluição de precisão numa grelha de latitude/longitude; o gerador e o DOP global do GPS VALIDATED face 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 terrestre baixa (LEO) e o seu balanço de ligação banda a banda, a partir de qualquer constelação e de qualquer projeto de sinal: ângulos de visada, Doppler e taxa de Doppler, perda ITU-R por chuva, gases, cintilação e penetração em edifícios, densidade de portadora-ruído face 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 posição de baixa energia, sondagem da ionosfera a partir de cada par de bandas, e monitores de spoofing por consistência de Doppler e de geometria da passagem e por consistência entre bandas; os termos ITU-R e a envolvente de Doppler de utilizador estático VALIDATED, a passagem MODELLED, consulte docs/LEO-PASS.md); leo-navmsg (a mensagem de efemérides e de relógio difundida por um satélite PNT em órbita terrestre baixa (LEO), para qualquer órbita e portadora: um ajustador desde uma órbita de referência integrada até ao conjunto kepleriano do Galileo, esse conjunto com polinómios de correção ao longo da trajetória, transversal e radial, 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 da atualização a meio da passagem, a própria trama binária documentada 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 utilizador 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 por Doppler a partir da taxa de variação da distância em órbita terrestre baixa (LEO), soluções de posição conjuntas de pseudodistâncias GNSS + LEO com enviesamentos entre sistemas e o DOP em função do número de satélites LEO, cobertura polar e do Ártico, 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; a envolvente de Doppler em LEO VALIDATED face a valores publicados do Iridium e da Xona), leo-ppp (convergência de posicionamento preciso de ponto apenas com GNSS e com aumentação 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 essa envolvente, consulte docs/LEO-PNT-FUSION.md; leo-pnt-chain (um sistema LEO-PNT 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 passados a uma solução de posição fundida leo-pvt e a uma convergência leo-ppp, com cada passagem de testemunho listada; MODELLED, consulte docs/LEO-PNT.md, que é também a visão geral de todos os tipos e cenários LEO-PNT, incluindo as campanhas de resiliência, um cenário por área de foco de experiência e um por vertical de utilizador 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 com tecnologias quânticas quantum-time-transfer, quantum-gnss-free-nav, quantum-anomaly-detect; e os tipos de investigação 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 mais recentes, todos MODELLED (cada um com um núcleo de forma fechada validado; consulte a matriz). Campos comuns: seed, uma grelha [time], uma cronologia de disponibilidade [gnss] (o motor das falhas), e blocos por sensor com cadeias provenance que citam a origem de cada valor. 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 (patamar de Allan de 1/f FM — modulação de frequência); um sensor inercial pode acrescentar gyro_bias e q_arw (enviesamento do giroscópio e passeio aleatório angular), e bias_instability e q_aa (o patamar de Allan da instabilidade do enviesamento e o passeio aleatório da aceleração) — em conjunto, um orçamento de erro de acelerómetro de eixo único (1-DOF) (VRW/ARW — passeio aleatório de velocidade/angular — e instabilidade do enviesamento). Este é o orçamento de erro que o pacote de cenários inertial distribuído executa. Em separado, a biblioteca inclui agora um navegador strapdown de 3 eixos verificado (src/inertial/{attitude,mechanization,imu_errors}.rs): atitude por quaterniões com compensação de coning/sculling, uma mecanização NED completa (termos da velocidade de rotação da Terra e da velocidade de transporte, gravidade de Somigliana WGS-84) e um modelo determinista de erros da IMU em que o fator de escala, o desalinhamento, a sensibilidade a g, a quantização e a rampa de taxa são modelados (IEEE Std 952-1997, a norma da IEEE para especificação e procedimento de ensaio de giroscópios, §A.2; Groves 2013 §4,3). Esse percurso de 3 eixos está agora 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 face a soluções de posição ruidosas enquanto o GNSS está disponível e depois segue em inércia durante a falha, comunicando o erro horizontal fundido face ao seguimento em inércia pura em malha aberta. Está também disponível uma atualização de pseudodistância fortemente acoplada (forma a inovação no domínio da distância, pelo que continua a corrigir 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 comunicada como uma média com uma dispersão entre o percentil 5 e o percentil 95 e o gráfico sombreia a banda de confiança do erro (consulte scenarios/clock-ensemble.toml).

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

Um cenário spoof injeta um spoof de tempo — um de quatro tipos de [attack.shape] (linear_ramp, step_jump, meaconing, replay; um simples rate_ns_per_s continua a ser aceite como rampa linear) — e executa o detetor de spoofing de cada relógio. O detetor é um teste de energia χ²₁ / de Neyman–Pearson bilateral sobre a estatística do monitor auxiliado pelo relógio: o limiar é definido a partir de um orçamento de falsos alarmes target_pfa, e a probabilidade de falha de deteção P_md é comunicada em forma fechada e por Monte Carlo (mc_runs ensaios por hipótese — os dois concordam até alguns ×1/√N). A figura de mérito de Segurança é 1 − P_md na magnitude operacionalmente prejudicial (da especificação), pelo que um relógio silencioso que apanha um spoof com a dimensão da especificação pontua ≈ 1 e um ruidoso que o falha muitas vezes pontua menos (consulte scenarios/spoof-attack.toml, scenarios/spoof-meaconing.toml).

Um cenário gnss-sim é uma simulação no domínio das medições: para cada satélite visível 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 instantâneo para HPL/VPL por época, e a pseudodistância, o Doppler, o C/N₀ e as correções iono/tropo de cada satélite são emitidos na lista gnss_measurements do JSON. É um simulador direto (gera medições a partir de uma referência conhecida), não um recetor/resolvedor — uma execução sem ruído reproduz a geometria mais as correções a nível submilimétrico (consulte scenarios/gnss-sim-raim.toml).

Um cenário jamming modela a interferência de RF como um balanço de ligação: um [jammer] (posição ECEF, power_dbw de emissão, tipo) eleva a relação jammer-sinal num [receiver] que observa um [constellation] Walker. A partir da geometria (perda de percurso em espaço livre e ganho da antena de receção por direção) calcula o J/S de cada satélite, o C/N₀ efetivo através da equação anti-jam padrão (ganho de processamento de desespalhamento × o fator de separação espetral Q; Kaplan & Hegarty §9,4), e sinaliza a perda de bloqueio abaixo de um limiar de seguimento configurável — comunicando uma figura de mérito availability_under_jamming. Um jammer de banda larga de 10 W a 1 km nega totalmente o recetor (J/S ≈ 72 dB); o mesmo jammer a 100 km apenas degrada as ligações (consulte scenarios/jamming-demo.toml).

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

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

Um cenário orbit deriva a cronologia [gnss] a partir da geometria em vez de a redigir — indique uma órbita [user], uma [constellation], uma mask_deg de elevação e os dois blocos de relógio. Comunica também a exatidão de posição a partir da geometria dos satélites; o sigma_uere_m opcional (erro de distância equivalente do utilizador a 1 sigma, predefinição 1 m) converte a diluição de precisão de posição num sigma de posição. A órbita do utilizador pode ser tornada excêntrica com eccentricity e argp_deg, e j2 = true acrescenta a deriva secular do achatamento da Terra (consulte scenarios/orbit-molniya.toml). A constelação pode, em alternativa, ser real: dê a [constellation] um bloco tle de conjuntos de elementos de duas linhas e os satélites são lidos a partir 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 PNT alternativo sem GPS navegam sem qualquer GNSS, fazendo corresponder uma sequência de campo medida a um mapa através de um filtro de partículas. Um cenário gravity-map percorre um trajeto num campo de anomalias gravíticas em harmónicos esféricos e recupera-o 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 face 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 num único filtro (scenarios/combined-altpnt.toml).

Um cenário lunar-integrity avalia PNT cislunar: executa uma passagem de nível de proteção ARAIM no polo sul lunar face a um conjunto de retransmissores LunaNet/LNIS e comunica 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, pelo que o serviço fica indisponível sob regras de integridade ao estilo da aviação (scenarios/lunanet-araim.toml).

Um cenário lunar-time-offset comunica a taxa relativista do relógio Terra–Lua — a base de uma escala de Tempo Coordenado Lunar (LTC/TCL). Uma identidade pós-newtoniana a partir de princípios fundamentais soma a diferença de potencial próprio (o potencial do geoide L_G da IAU menos o potencial próprio à superfície da Lua) e o termo cinético da Lua (Doppler de segunda ordem) numa taxa secular de ≈ 57 µs/dia, comunicada com a banda publicada de 56–59 µs/dia; dá também o desvio LTC−TT acumulado ao longo de um horizonte e um conjunto de variância inversa (um relógio de papel lunar). MODELLED — o valor principal é dependente da referência (geoide terrestre versus selenoide lunar, janela de média), razão pela qual se comunica uma banda 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 ficheiros .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 ficheiro 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 artefacto de resultado é JSON versionado e autodescritivo: séries temporais por passo, as figuras de mérito pontuadas, as especificações dos modelos ativos (com proveniência), a semente, um hash do cenário — para que qualquer gráfico possa ser reproduzido a partir do ficheiro — 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 por oitavas — a forma habitual de ler a estabilidade de um relógio — agora com uma banda de confiança de 95% específica do tipo de ruído por ponto (o tipo de lei de potência do registo é identificado a partir do seu declive de Allan modificado, e o intervalo χ² usa os graus de liberdade efetivos correspondentes do NIST SP 1065). O playground no navegador renderiza-o como um gráfico log-log "Clock stability (ADEV)". (MDEV, TDEV e HDEV estão disponíveis como estimadores da biblioteca; a curva de resultado exportada é o ADEV sobreposto.) Cada campo, com unidades e uma indicação da origem, está documentado em docs/SCHEMA.md.

Cada gráfico é autodescritivo. O playground no navegador, a exportação *.chart.svg da CLI e o painel de resultados HTML (HyperText Markup Language) carimbam todos 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 carateres hexadecimais do hash do cenário da execução — um resumo SHA-256 (o Secure Hash Algorithm de 256 bits) sobre a definição canónica do cenário (semente, limiares, parâmetros dos modelos, 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, pelo que um gráfico guardado ou colado traz sempre a sua versão, o cenário exato que o produziu (para reprodução bit a bit) e a origem — altere qualquer entrada e o hash muda.

As figuras de mérito seguem as figuras de mérito operacionais habituais 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 falha, em nanossegundos (timing_rms_ns) — uma métrica de temporização, não de posição
Desempenho de posicionamento (pacotes inercial/híbrido) RMS do erro de posição 1-DOF + percentil 95 durante a falha, em metros (pos_rms_m); eixo único. Uma execução única é sinalizada com monte_carlo: false; defina runs = N para um conjunto Monte Carlo que comunica, para cada métrica, a média, a dispersão e o IC (intervalo de confiança) de bootstrap a 95%. Continua a não ser uma exatidão 2-D CEP/2DRMS (erro circular provável / duas vezes a raiz quadrada média da distância) nem ponderada por DOP (estas exigem o modelo de 3 eixos — plano de desenvolvimento)
Autonomia duração do holdover — tempo dentro da especificação após a perda de GNSS (quantizado pela grelha: um limite inferior)
Resiliência declive de crescimento do erro durante a falha
Disponibilidade fração da execução com uma solução de posição dentro da especificação
Integridade autoconsistência do filtro — fração das amostras de falha cujo erro se mantém dentro do próprio limite de k sigma do filtro de Kalman. Não é um valor de integridade HPL/VPL/RAIM de aviação (consulte docs/INTEGRITY.md)
Segurança limite analítico de detetabilidade de spoofing a partir da estabilidade do relógio — quão pequeno/lento um spoof de tempo poderia ser sinalizado por um monitor de consistência de um único relógio. Só tem significado com um ataque configurado; não é um detetor RAIM multissatélite

Não conhece estes 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 de compreender física quântica para usar isto? Não. Se sabe executar uma linha de comandos, sabe executar o Kshana. Comece pelo guia introdutório em linguagem simples; consulte os termos no glossário.

É um projeto de hardware quântico ou 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 está citado a uma folha de especificações ou a um artigo, cada modelo é validado face a uma relação de manual, e a maturidade está rotulada com honestidade em VALIDATION.md — incluindo que nenhum relógio ótico de estrôncio 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 deterministas: scenario + seed + engine version → bit-identical output, garantido por scripts/check-reproducible.sh.

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

Como modelo o meu próprio sensor? Escreva um cenário .toml com os valores publicados 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, incluindo em contextos comerciais, desde que respeite o copyleft da AGPL (em especial: se modificar o Kshana e o oferecer através de uma rede, tem de oferecer a esses utilizadores o seu código-fonte modificado). Se isso não lhe convier — por exemplo, se precisar de incorporar o Kshana num produto proprietário ou de executar um serviço de rede fechado — está disponível uma licença comercial da Ashforde® OÜ; consulte LICENSING.md e Apoio.

Resolução de problemas

Resolução de problemas#

cargo build falha numa 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 os seus símbolos no momento do carregamento. O maturin define automaticamente a opção de ligação correta — use maturin develop --features python em vez de um simples cargo build.

A compilação do Python queixa-se de que o interpretador é mais recente do que o PyO3 conhece. Defina PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 (as wheels abi3 são compatíveis para a frente entre versões do CPython).

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

Onde foi parar a minha saída? Cada execução escreve <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html e <scenario>.report.json junto do .toml de entrada, e também <scenario>.table.csv para os tipos que publicam uma tabela. Todos eles são ignorados pelo git por conceção.

Versionamento e publicações

Versionamento e publicações#

O Kshana segue o Versionamento Semântico. Enquanto for anterior à 1.0, o esquema público de cenário/resultado ainda pode mudar; as alterações incompatíveis são assinaladas explicitamente no CHANGELOG.md. Cada resultado é reproduzível a partir de scenario + seed + engine version.

Cada tag vX.Y.Z publica automaticamente todos os canais, por uma única ordem — a bateria de testes completa executa-se primeiro no commit etiquetado, nada é publicado até ela passar, e depois o pipeline verifica que cada registo serve realmente a nova versão (docs/RELEASING.md). Os canais:

Uma passagem que nomeia clientes de IA de terceiros foi omitida aqui; encontra-se no README.md no GitHub.

Uma passagem que nomeia clientes de IA de terceiros foi omitida aqui; encontra-se 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 + invólucro JS
ghcr.io docker run -i ghcr.io/ashfordeou/kshana-mcp imagem OCI (Open Container Initiative) multiarquitetura — sem necessidade de cadeia de ferramentas
npm npx -y kshana-mcp@0.40.0 lançador: descarrega o binário da versão publicada, verifica SHA256SUMS, executa-o
PyPI uvx kshana-mcp==0.40.0 · pipx run kshana-mcp==0.40.0 o mesmo lançador 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 publicada
registo MCP oficial descoberto automaticamente pelos clientes MCP io.github.ashfordeOU/kshana-mcp (imagem OCI, pacotes npm e PyPI)
JetBrains Marketplace IDE → Plugins → pesquisar "Kshana" o plugin de IDE Kshana — PNT simulator
Zenodo DOI um arquivo citável de cada versão publicada
kshana.dev abrir num navegador Kshana Studio, a aplicação WebAssembly no navegador, reconstruída a partir de cada tag de versão (pelo que a versão que mostra é a versão que executa)

A versão do crate / imagem / registo do servidor MCP acompanha o motor (inclui a biblioteca); o plugin JetBrains tem versões independentes (invoca o binário kshana que tem instalado).

Roteiro

Roteiro#

Consulte ROADMAP.md para o plano de desenvolvimento por fases, CHANGELOG.md para o histórico de versões publicadas e docs/CAPABILITY.md para o plano por capacidade. A ordem de prioridade é: primeiro, evidências de temporização e holdover para infraestruturas críticas (máscaras de telecomunicações, holdover mais longo com envelhecimento e ruído flicker, ingestão de dados de relógio medidos); em segundo lugar, o método neutro de compromisso quântico versus clássico (resultados rotulados MODELLED até que os dados medidos de um parceiro os promovam); e navegação lunar / cislunar e de espaço profundo mantida, não ampliada como prioridade. A redução de referencial de precisão ITRF está agora concluída — a cadeia GCRS↔ITRS completa IAU 2006/2000A baseada no CIO (movimento polar + nutação sub-arcsegundo), validada bit a bit face ao SOFA/ERFA e verificada de forma cruzada e independente face ao ANISE (SPICE em Rust puro) a ≤ 3,6 m em órbita GNSS. Os itens a curto prazo incluem a fusão de fase da portadora fortemente acoplada e a disponibilização do navegador GNSS/INS fraca e 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 princípios fundamentais (fase de Mach–Zehnder, ruído de projeção, decaimento do contraste, acoplamento de vibração), enquanto os sensores de relógio/transferência de tempo continuam a ser orientados por coeficientes publicados de Allan/orçamento de ruído. A conversão TEME&harr;ECEF baseada em GMST, os sistemas de tempo com segundos intercalares do IERS (UTC/TAI/TT/UT1), a propagação de órbitas SGP4/SDP4 (v0.7.0, validada face 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. Chegaram a main: um detetor estocástico ativo de spoof de tempo (teste de energia de 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 balanço de ligação (J/S → C/N₀ efetivo → perda de bloqueio), disponibilidade multiconstelação, um orçamento de erro de IMU de eixo único (1-DOF), dois estimadores de Kalman independentes (relógio + posição) comunicados como uma FoM combinada, geometria real de constelações a partir de TLE, um relatório HTML de resultados, disponibilidade GNSS derivada da geometria e diluição de precisão a partir de órbitas keplerianas com excentricidade e deriva J2, bandas de confiança Monte Carlo, varrimentos de parâmetros de estudos de compromissos, um playground WebAssembly no navegador e ligações opcionais para Python (PyO3) e WebAssembly (wasm-bindgen).

Contribuir

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 alteração visível ao utilizador. A participação rege-se pelo nosso Código de Conduta. Para comunicar um problema de segurança, consulte a Política de segurança — não abra um problema público para vulnerabilidades.

Documentação: todos os documentos e a quem se destinam

Documentação#

Documento Para quem O que contém
Introdução aos conceitos todos, comece aqui o que o Kshana faz e porquê, do zero até à física
Kshana Studio todos execute o motor no seu navegador (WebAssembly); notas de compilação e implementação
Glossário todos definições em linguagem simples de cada termo
Tipos de cenário todos cada tipo que o motor despacha: o que faz, os seus campos, um comando de exemplo, as suas linhas do registo e o gráfico que o motor escreve para ele
Dados de parceiros laboratórios e fabricantes com dados medidos que linhas MODELLED poderia promover um registo medido de relógio ou de IMU, os formatos, como um envio é verificado (kshana partner check), pontuado e creditado
Arquitetura programadores / revisores mapa de módulos, pipeline do motor, despacho e diagramas
Estado da validação revisores / quem cita o que está validated versus not modeled, com evidências
Matriz de verificação revisores / quem cita o registo de evidências verificado por máquina — cada linha de capacidade com o seu estado, módulo, teste e referência independente externa, gerado a partir de src/verification.rs
Justificação das capacidades modeladas revisores porque é que cada linha Modelada não tem referência independente externa, indicado linha a linha
Proveniência revisores / quem cita cada parâmetro de sensor, modelo e conjunto de dados rastreado até à sua origem publicada, numa única tabela citável
Reprodutibilidade e proveniência revisores / empacotadores garantias de determinismo, fixação de valores de referência, SBOM (software bill of materials), proveniência de compilação
Etiquetas de plataforma das wheels empacotadores a matriz de wheels abi3 de Python — que etiqueta de plataforma pip install kshana resolve
Posicionamento avaliadores onde o Kshana se situa face ao RTKLIB/gLAB (complementar), e o nível de instalação zero no navegador
Kshana Pro avaliadores / gestores de programas o que a sobreposição proprietária Pro acrescenta sobre o mesmo motor: otimizador de projeto, incerteza e sensibilidade, dossiê de missão, vigilância de campanhas, coexistência espetral, serviço de tarefas nas instalações do cliente, 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 investigação alargado completo — arquitetura, modelos por domínio, validação, casos de estudo 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 a 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 utilizadores conduzir cenários com TLE reais de constelações do Celestrak / Space-Track (em vez do conjunto Walker sintético incluído)
FoM de integridade avaliadores o que significam as figuras integrity / security — e o que não são face ao HPL/VPL de aviação
Referência ARAIM revisores / integradores a implementação aberta de nível de proteção ARAIM MHSS — a projeção do enviesamento 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 em tabelas
Compliance avaliadores Âmbito dos algoritmos DO-229E / DO-316, e o que não é uma afirmação de aderência à norma
Confiança marítima marinheiros / integradores a pontuação de confiança GNSS de 0-100 para o NMEA de uma embarcação, os seus monitores e os seus limites (consultivo, não é um equipamento de navegação homologado)
Fluxos NMEA de formação formadores marítimos NMEA sintético de ponte com jamming e spoofing programados e um registo do instrutor; apenas texto, nunca para navegação em tempo real
Mapa de interferência analistas / marinheiros onde aeronaves e navios comunicaram dados de navegação degradados, e quanto de um percurso isso afeta
Pacotes de evidências operadores / seguradoras registos técnicos assinados de um evento de confiança e como verificar um
Telemetria de confiança equipas 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 barreira do OpenCPN e a compilação de referência
Test bench fabricantes de recetores reproduzir um cenário exportado através de um simulador de laboratório e pontuar o registo do recetor
Mapeamento de compliance avaliadores quadros públicos de resiliência mapeados para as saídas do Kshana, com fontes e lacunas; kshana compliance-report
Cadernos interativos utilizadores tutoriais executáveis com o respetivo texto renderizado
Normas e interoperabilidade integradores os formatos de intercâmbio GNSS / dinâmica de voo / agências que o Kshana lê e escreve (RINEX, SP3, CCSDS OEM/OMM/TDM/Space-Packet, …)
Fusão de PNT em LEO utilizadores / avaliadores posicionamento, navegação e temporização fundidos MEO + LEO: Doppler, pseudodistância conjunta, convergência de PPP, 5G NTN, cobertura polar e transferência de tempo em LEO sobre qualquer constelação; as predefinições opcionais e as suas fontes públicas
Campanhas utilizadores / avaliadores composição de cenários: cronologias de missão encadeadas, varrimentos de parâmetros, conjuntos Monte Carlo e execuções de condição partilhada, com as identidades de composição que os testes fixam
Catálogo de cenários utilizadores / integradores cada tipo despachável com os seus campos TOML obrigatórios e opcionais — gerado a partir de api::list_scenario_kinds()
Esquema de resultados integradores cada campo do JSON de resultado, com unidades e uma indicação da origem
API Python utilizadores 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 registo de resolução de afirmações exageradas + a salvaguarda da CI (tests/no_overclaims.rs) que o mantém resolvido
Roteiro todos o plano de desenvolvimento por fases — o que foi entregue e o que se segue
Servidor MCP · Plugin JetBrains agentes / utilizadores de IDE executar o Kshana a partir de um assistente de IA ou de um IDE JetBrains
Guia para agentes · Superfícies agentes / integradores que ferramenta responde a que pergunta, o que guardar com cada resposta; onde cada capacidade é acessível (CLI, Rust, Python, WASM, MCP, plugin, JetBrains, notebooks) e porque é que uma célula é N/A
Registo de alterações todos histórico de versões publicadas (Keep a Changelog + SemVer, Versionamento Semântico)
Contribuir contribuidores compilação, salvaguardas, disciplina de testes/citações, DCO (Developer Certificate of Origin)
Governação contribuidores / 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 comunica como comunicar uma vulnerabilidade; nota de dupla utilização
Referências principais

Referências principais#

Referências independentes de validação e normas — as autoridades externas a que 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 SGP4/SDP4 com o qual o Kshana coincide a 4,12 mm, e os exemplos resolvidos de referenciais face aos quais a cadeia TEME→ITRF é verificada.
  • IAU SOFA / ERFA — as rotinas de referência de tempo e de referenciais face às quais a nutação IAU 2000A e a redução CIO GCRS↔ITRS são validadas bit a bit.
  • Petit & Luzum (eds.) — IERS Conventions (2010), IERS TN (Technical Note) 36 (orientação da Terra, movimento polar e normas 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 o banco de ensaio de avaliação de degradações 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 face às quais o ajuste NNLS da ADEV medida do quantum-trade, as bandas de consistência χ² e a covariância do 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 técnica aberto (consulte Comparação e estado da técnica aberto abaixo) como referência independente de DOP com a qual o cálculo de GDOP/PDOP/HDOP/VDOP/TDOP coincide a 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 às 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 de métodos — as fontes citadas por trás dos modelos de sensores:

  • Origlia, Schiller, Bongs et al. — arXiv:1503,08457 (relógio ótico de rede de estrôncio, objetivo orientado para o 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 University College London Discovery) (crescimento do erro da navegação por estima).
  • 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 ótica bidirecional de tempo-frequência; a ligação ótica entre satélites modela o 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 da separação espetral por trás de src/navsignal.rs).
  • Kaplan & Hegarty (eds.) — Understanding GPS/GNSS: Principles and Applications (3.ª ed., Artech House, 2017): a equação anti-jam do C/N₀ efetivo e o jitter térmico do seguimento de código do DLL early–late que os modelos de sinal de navegação e de jamming usam.

Comparação e estado da técnica aberto — as ferramentas e levantamentos face aos quais o Kshana se posiciona:

  • Humphreys et al. — TEXBAT (a Texas Spoofing Test Battery; ION — Institute of Navigation — GNSS 2012): os parâmetros da bateria de testes de spoofing face aos quais o detetor multicamada é 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: DO reduzida-dinâmica do GRAIL, o patamar de aceleração empírica que o ajuste do LRO reproduz.