Kshana · क्षण · точный миг
Симулятор устойчивости PNT (позиционирование, навигация и время) с открытым исходным кодом.
Состояние непрерывной интеграции на main
Покрытие строк около 95 % в src/, измерено в docs/COVERAGE.md, с порогом 85 % в непрерывной интеграции
176 из 401 возможностей VALIDATED по независимому внешнему оракулу, по матрице верификации
Состояние шлюза качества SonarQube Cloud
Выпуск v0.40.0
Лицензия: только AGPL-3.0
DOI 10.5281/zenodo.20528627, концептуальная запись Zenodo для каждого выпуска
Коммерческая лицензия предоставляется Ashforde® OÜ, см. «Редакции»
kshana на crates.io, текущая опубликованная версия
kshana на PyPI, текущая опубликованная версия
kshana на npm, текущая опубликованная версия
Открыть Kshana Studio · Установка · Возможности · Доказательства · Исследования · Документация · Цитирование
Содержание
- Отрепетируйте минуту, когда ГНСС пропадает
- Что нового в 0,40, Что нового в 0,39, Что нового в 0,38 и 0,38 подробно: оценка Jammertest, собственные флаги приёмника, машинные входные данные, синхронизация времени и holdover, пакеты стандартов, LunaNet AFS, круговой цикл с лабораторией, kshana-bench, обсерватория, экспортёры, оптика, навигация пользователей в космосе и лунная инфраструктура
- Kshana Studio и каждая страница Studio
- Возможности: таблица областей, каждый вид сценария по семействам, каждая команда, каждая поверхность
- Как работает прогон, Миссии
- Доказательства: реестр (ledger), области возможностей
- Установка, Архитектура (и схемы), ИИ-помощник
- Редакции, Исследования, Цитирование, Лицензия
- Справочник: использование, формат сценария, вывод, структура репозитория, ЧаВо, устранение неполадок, версионирование, дорожная карта, участие в разработке, документация
Отрепетируйте минуту, когда ГНСС пропадает#
Kshana воспроизводит подавление, спуфинг и holdover часов при отказе сигналов ГНСС (глобальной навигационной спутниковой системы) и показывает, как долго система сохраняет время и положение в пределах бюджета и какие часы или датчик дают наибольший запас. Это один движок на Rust. Он работает в терминале, блокноте, IDE (интегрированной среде разработки), ИИ-помощнике (искусственном интеллекте) или в вашем браузере.
Каждый прогон побитно воспроизводим по сценарию, начальному значению (seed) и версии движка. Каждая возможность несёт одну из трёх меток в машинно проверяемом реестре (ledger): VALIDATED (независимый внешний оракул согласуется), MODELLED (внутренне согласовано, и об этом сказано прямо) или PARTNER (отвечает аппаратный партнёр).
Статус: v0.40.0. Проверенная, воспроизводимая симуляционная основа для устойчивости PNT. Синхронизация времени и holdover идут первыми, потому что эта область проверена лучше всего. Kshana — инструмент исследования и сопоставления компромиссов: не аппаратный генератор радиочастотных (РЧ) сигналов (он не управляет никаким радиооборудованием и ничего не передаёт; его выходные данные на уровне сигнала — это файлы отсчётов IQ в основной полосе для программных приёмников), не аппаратный и не сертифицированный приёмник ГНСС (его программный приёмник является инструментом анализа) и не лётное изделие. Впервые в этой области? Начните с введения простым языком и глоссария.
Что нового в 0,40#
В 0,40 добавлен бюджет ошибок на уровне миссии, каждая цифра и таблица помечаются уровнем доказательств, читаются измеренные журналы часов, проверяются материалы партнёров по данным, оценивается, где может находиться источник помех, а также добавлена поддержка семнадцати языков помимо английского. Реестр теперь содержит 401 строку: 176 VALIDATED, 221 MODELLED, 4 PARTNER. Ни одна строка не была повышена до VALIDATED, и каждый приведённый ниже промах закреплён тестом.
- Цепочка миссии. Вид
mission-threadсвязывает в цепочку фазы от запуска до входа в атмосферу (launch-ascent,leo-rendezvous,tli-and-cruise,entryи четыре лунных вида) с заданными правилами передачи, запасом относительно заданных требований и самым слабым звеном; сквозной пример класса Artemis на 11 фазах (земной и лунный сегменты), всего 92 видов сценариев. Каждое число — MODELLED. Цислунное распространение относительно общедоступной траектории Artemis I не достигает заранее зарегистрированного порога (45,3 km и 0,25 m/s против 5 km и 0,05 m/s; причина — небольшие манёвры, которые модель не включает), и лунный пропагатор относительно орбиты CAPSTONE не достигает его (136,8 km против 25 km в конце одного оборота); сравнение с LRO выполнено. Строки остаются MODELLED (Цепочка миссии, лунный сегмент). В Studio цепочка читается по адресу/studio/mission-thread/. - Метки доказательств. Каждая цифра и таблица, которые записывает прогон, несут уровень и идентификаторы строк реестра, на которых они основаны, считанные из матрицы.
- Измеренные часы. Читаются восемь форматов журналов часов (
docs/CLOCK-LOG-FORMATS.md), и подогнанный ряд может управлять holdover. Относительно заранее зарегистрированных порогов подгонка не достигает F1(a) на пяти записях из шести и F2 на одной; обе остаются MODELLED (Журнал изменений). - Партнёры по данным.
kshana partner checkпроверяет формат материалов и ничего не оценивает (docs/PARTNER-DATA.md). - Область излучателя.
kshana interference-map locateдаёт область и эллипс, но никогда не отдельную точку, по сообщениям ADS-B или AIS. По однократному сравнению с площадками передатчиков Jammertest 2025 результат — NOT ASSESSABLE для обоих источников (слишком мало запланированных сеансов в открытых данных), поэтому строка остаётся MODELLED (Карта помех). - Бенчмарк. Повторная кампания 0,40 выполняет A3, D3 (оба EXPLORATORY), R3 и R4; A2, D1 и R1 остаются NOT MET (Bench).
- Языки. nl, pl, pt-BR, pt-PT, fi, sv, da, nb, cs, uk, ru, de, fr, es, et, ja и zh-Hans, как машинные переводы, не проверенные носителями языка; эталоном служит английская версия, а прогоны не на английском занимают примерно вдвое больше времени (
docs/i18n.md).
Что нового в 0,39#
0,39 не добавляет возможностей и не меняет ни одного результата; выходные данные движка — это выходные данные 0,38. Он исправляет одно в командной строке, обновляет зависимости инструментария перекрёстной проверки и приводит вердикты бенчмарка полностью.
- Командная строка.
kshana kinds | head(при любом закрытом стандартном выводе) больше не вызывает аварийное завершение: программа тихо выходит с кодом 141, как делают другие инструменты при закрытом канале. Остальные ошибки записи по-прежнему сообщают о себе. - Dependencies.
memmap20.9.11 в двух блокировках перекрёстной проверки ANISE иpillow13.0.0 иcertifi2026.10.19 в закреплениях окружения оракула, всё вxval/: ничего из поставляемого не изменилось. - kshana-bench, все вердикты. По предварительно зарегистрированным порогам три NOT MET, каждый закреплён тестом: A2 (
agc_k_sigmaAUC 0,766 при требуемом не менее 0,80), D1 (наибольший разрыв 0,0301) и задача (b) R1 (перенесено, не перезапускалось). Ни один порог не ослаблялся (Bench).
Что нового в 0,38#
0,38 делает нейтрального арбитра измеримым: он оценивает журналы приёмников по опубликованному графику испытаний, читает больше приёмников и датчиков, испытывает системы синхронизации времени и поставляет бенчмарк и обсерваторию помех. Он остаётся консультативным: ничто здесь не сертифицировано, ни один результат не является утверждением типа и ничего не передаётся. Каждая строка говорит, что содержит для неё реестр (как заслуживается метка); статус называет только то, что было проверено, а строка реестра и страница по ссылке говорят, что не было.
| Новое в 0,38 | Что это делает и зачем | Статус в реестре | Читается |
|---|---|---|---|
| Оценка Jammertest | kshana jammertest import читает опубликованный каталог испытаний NPRA и план передач как заданную истину; jammertest score оценивает журнал приёмника по каждому испытанию (задержка обнаружения, пропущенные тревоги, ложные тревоги, время восстановления), в виде подписанного пакета доказательств, если вы дадите ключ |
MODELLED: одна строка реестра. Пороги были предварительно зарегистрированы до любого прогона с оценкой; на данных JammerTest 2024 правило минимума данных не выполнилось в обоих прогонах (4 и 7 пригодных для оценки окон при требуемых 10), поэтому ни один порог нельзя оценить и ничего не заявляется | Jammertest |
| Собственные флаги приёмника | UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG и NovAtel RXSTATUS читаются в self_report для каждой эпохи и сравниваются с тревогами Kshana (обе, только приёмник, только Kshana, ни одной); модуль чтения Septentrio SBF и вход --serial только для чтения |
MODELLED; согласие детектора приёмника с детектором Kshana не является проверкой | Доверие к приёмнику |
| Больше приёмников и датчиков | RTKLIB .pos, NovAtel OEM7, RTCM 3 MSM4/MSM7 C/N0 (из таблиц pyrtcm под лицензией BSD, а не из текста RTCM), потоки монитора GNSS-SDR, журнал IMU как второй датчик, пакет ROS 2, мост gnss_lib_py и imu-fit для параметров гибридного датчика |
MODELLED: шесть строк реестра; только самостоятельно написанные образцы, ни одна запись реального приёмника, IMU, запуска GNSS-SDR или графа ROS не читалась | Машинные входные данные |
| Испытания синхронизации времени и holdover | вид holdover-test оценивает испытание holdover (ГНСС отключена оператором, holdover, восстановление) по измеренной записи ошибки времени относительно масок ITU-T, «измерено относительно маски»; модули чтения журналов linuxptp и chrony; аппаратные этапы и поле lab-attestation |
MODELLED: две строки реестра; времена — заявление оператора, не проверенное | Аппаратное моделирование в контуре для синхронизации времени, Безопасность оборудования |
| Пакеты стандартов, LunaNet AFS, круговой цикл с лабораторией | оцениваемые пакеты для DHS RPCF, IMO MSC.1/Circ.1575 и ICAO Doc 9849, приложение F, по порогам, заданным до прогона, «подкрепляет доказательствами»; соответствие NIST IR 8323r1 (crosswalk); генератор и проверка кодов LunaNet AFS; подписанный пакет, связывающий сценарий лабораторного прогона, условия испытания, журнал приёмника и оценку | MODELLED для пакетов и кругового цикла; проверка кодов AFS — VALIDATED по напечатанным в спецификации проверочным столбцам (см. строки реестра) | Стандарты, LunaNet AFS |
| kshana-bench и обсерватория | фиксированные задачи, разбиения и метрики для обнаружения помех, обнаружения по IQ, прогнозирования holdover и разрыва в оптимизме, с запечатанной отложенной выборкой (holdout) и статической таблицей лидеров; воспроизводимый ежедневный продукт по помехам с задержкой 24 ч, крупными ячейками и без указания причины | собственной строки в реестре нет: он оценивает присланные работы, а его базовые уровни помечены MODELLED в файлах результатов; по предварительно зарегистрированным порогам оценщик, C1–C3 и D2 выполнены, а три порога NOT MET (закреплены тестами): A2 (agc_k_sigma AUC 0,766 при требуемом не менее 0,80 на тестовой выборке), D1 (наибольший разрыв 0,0301) и задача (b) R1 (перенесено, не перезапускалось); см. xval/bench/RESULTS-v2.md |
Bench, Обсерватория |
| Экспортёры | телеметрия доверия в виде сообщений обнаружения и состояния Home Assistant MQTT (только публикация, без учётных данных) наряду с Prometheus, CEF, LEEF и OTLP | MODELLED: одна строка реестра | Телеметрия доверия |
| Запас оптической линии связи во времени | вид optical-atmosphere может записать одну реализацию погоды площадки с начальным значением в виде ряда запаса линии связи |
MODELLED: одна строка реестра; одна выборка из модели, а не климат | Оптическая атмосфера |
Основное в 0,37: журнал изменений. Полный список 0,38 — в журнале изменений.
0,38 подробно#
Каждая возможность из таблицы выше в нескольких строках: что она делает, одна команда для запуска, одна картинка по реальному прогону движка и что содержит для неё реестр. Картинки пишет tools/gen_figures_038.py в docs/figures/0.38/ (вручную они никогда не рисуются): python3 tools/gen_figures_038.py перезаписывает их из собранного движка, а --check завершается с ошибкой, если одна из них устарела или её подпись здесь отличается. Если вход — журнал, то это вымышленный журнал, который пишет сценарий, потому что настоящие журналы сторонних производителей никогда не включаются в поставку, и подпись об этом сообщает. Всё ниже носит консультативный характер: не сертифицировано, не является утверждением типа и ничего не передаётся. Статус называет то, что было проверено, и ничего больше; как заслуживается метка.
Оценка Jammertest#
kshana jammertest import превращает опубликованный каталог испытаний NPRA и план передач в заданную истину, а kshana jammertest score оценивает по нему журнал приёмника: для каждого заданного испытания — было ли оно обнаружено, с каким опозданием и сколько времени приёмник восстанавливался, плюс ложные тревоги вне каждого слота. Каталог загружается, но никогда не включается в поставку.
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
Статус в реестре: MODELLED. Пороги были зафиксированы до любого прогона с оценкой; на данных JammerTest 2024 правило минимума данных не выполнилось в обоих прогонах, поэтому ни один порог нельзя оценить и ничего не заявляется. Jammertest.
Собственные флаги приёмника#
UBX-NAV-STATUS spoofDetState, UBX-SEC-SIG и NovAtel RXSTATUS читаются в self_report для каждой эпохи и ставятся рядом с тревогами Kshana: обе, только приёмник, только Kshana или ни одной. Модуль чтения Septentrio SBF и вход --serial только для чтения питают то же сравнение. Ни одна из сторон не является эталоном истины.
kshana receiver-trust session.toml # [log] format = "ubx", path = "receiver.ubx"
Статус в реестре: MODELLED. Согласие детектора приёмника с детектором Kshana не является проверкой. Доверие к приёмнику.
Больше приёмников и датчиков#
RTKLIB .pos, NovAtel OEM7, RTCM 3 MSM4/MSM7 C/N0, потоки монитора GNSS-SDR, журнал IMU как второй датчик, пакет ROS 2 и мост gnss_lib_py — всё это заканчивается на одной и той же временной шкале receiver-trust. imu-fit читает параметры датчика, нужные гибридным сценариям и сценариям объединения, по журналу неподвижного IMU, так что сценарий можно запустить с тем датчиком, который у вас действительно есть.
kshana imu-fit still.csv --format csv --axis x --expected-mean 0 --id bench-imu
Статус в реестре: MODELLED. Только самостоятельно написанные образцы; ни одна запись реального приёмника, IMU, запуска GNSS-SDR или графа ROS не читалась. Машинные входные данные.
Испытания синхронизации времени и holdover#
Вид holdover-test оценивает испытание holdover (ГНСС отключена оператором, holdover, восстановление) по измеренной записи ошибки времени относительно масок ITU-T и говорит об этом этими словами: измерено относительно маски. Его питают модули чтения журналов linuxptp и chrony; аппаратные этапы и поле lab-attestation говорят, кто что заявил.
kshana scenarios/holdover-test-example.toml
Статус в реестре: MODELLED. Времена отключения и восстановления ГНСС — заявление оператора, не проверенное. Аппаратное моделирование в контуре для синхронизации времени, Безопасность оборудования.
Пакеты стандартов#
Оцениваемые пакеты для профилей испытаний DHS Resilient PNT, IMO MSC.1/Circ.1575 и ICAO Doc 9849, приложение F, плюс соответствие NIST IR 8323r1 (crosswalk) в compliance-report. Каждое испытание запускает встроенный сценарий и сравнивает поле результата с порогом, заданным до прогона; испытание, которому нужен журнал приёмника, указывается как требующее входных данных и не оценивается. Формулировка — «подкрепляет доказательствами».
kshana standards-pack list
kshana standards-pack run imo-circ-1575
Статус в реестре: MODELLED. Достигнутый порог говорит лишь о том, что моделируемый сценарий достиг заданного порога, и ничего не говорит об изделии; каждый промах сохраняется и закрепляется тестом. Стандарты.
LunaNet AFS#
Генератор кодов расширенного прямого сигнала LunaNet (коды Голда, Вейля и третичные коды, кадр сообщения и его помехоустойчивое кодирование) и проверка записанного или сформированного потока символов, привязанные к одной редакции спецификации.
kshana lunanet-afs-check spec
kshana lunanet-afs-check generate --frames 2 --out afs.sym
kshana lunanet-afs-check symbols afs.sym
Статус в реестре: VALIDATED для проверок кодов и синхронизации, по значениям, которые печатает спецификация (она помечает их TBC); одна проверка NOT MET, сохранена и закреплена (один напечатанный столбец третичного кода отличается: документ печатает одно и то же значение для двух PRN). Слова LDPC и CRC подкадров 2–4 не проверяются. Строки реестра говорят точно, какие. LunaNet AFS.
Круговой цикл с лабораторией#
kshana.test-conditions/1 — это опубликованное описание того, что делала лаборатория (события, времена, мощности). kshana evidence round-trip связывает хеш сценария, хеш условий, хеш журнала приёмника и оценку в один подписанный пакет и отклоняет пакет, у которого условия и сценарий оценки расходятся в событиях. Kshana никогда не создаёт и не воспроизводит сигнал: как сценарий попал на приёмник — ответственность оператора.
kshana evidence --help
На рисунке показана структура пакета. Статус в реестре: MODELLED. Условия испытаний, Испытательный стенд.
kshana-bench#
Фиксированные задачи, разбиения и метрики для обнаружения помех, обнаружения по IQ, прогнозирования holdover и разрыва оптимизма, с запечатанной отложенной выборкой (holdout) и статической таблицей лидеров. Он оценивает присланные результаты; это не рейтинг приёмников.
kshana bench baseline --task d --split test --out results/
Статус в реестре: собственной строки в реестре нет; базовые уровни в файлах результатов помечены как MODELLED. Относительно заранее зарегистрированных порогов выполнены оценщик, C1–C3 и D2, а три порога NOT MET, и каждый закреплён тестом: A2 (agc_k_sigma, AUC 0,766 при требуемом не менее 0,80 на тестовой выборке), D1 (наибольший разрыв 0,0301) и задача (b) R1 (перенесена из предыдущей кампании, повторно не запускалась). Значения приведены в xval/bench/RESULTS-v2.md. Bench.
Обсерватория помех#
Один продукт на каждые сутки UTC и регион по открытому архиву положений воздушных судов, на фиксированной грубой сетке: каждая ячейка либо с ухудшением, либо без ухудшения, либо не наблюдалась (это не означает «чисто»). Публикуется не раньше чем через 24 ч после окончания суток; малые ячейки подавляются, причина не указывается.
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/
На рисунке показаны закоммиченные образцы суток, а не продукт обсерватории. Статус в реестре: MODELLED: внешнего оракула, эталонных данных и указания причины нет; ненаблюдавшаяся ячейка не оценивалась, и это не то же самое, что «чисто». Метод обсерватории.
Экспортёры#
Телеметрия доверия в виде текста Prometheus, CEF, LEEF, OTLP, а также сообщений обнаружения и состояния Home Assistant MQTT. Команда публикует данные только по заданному вами адресу назначения и не хранит учётных данных.
kshana trust-telemetry --result session.result.json --print-metrics
kshana trust-telemetry --result session.result.json --print-syslog --format cef
Статус в реестре: MODELLED. Телеметрия доверия.
Запас оптической линии связи во времени#
Вид optical-atmosphere может записать одну реализацию погоды в точке с заданным начальным значением (seed) в виде ряда запаса по линии связи: эпизоды облачности, столб жидкой воды для каждого из них, по одному отсчёту сцинтилляции на шаг. Страница Studio «Оптический PNT» открывает сценарии optical-atmosphere.
kshana scenarios/optical-atmosphere-network.toml
Статус в реестре: MODELLED. Одна выборка из модели, а не климат. Оптическая атмосфера.
Новые представления Studio#
kshana.dev/studio получает воспроизведение на мостике (два прогона рядом на одних часах миссии, по адресу /studio/replay/), страницу «Оптический PNT» (/studio/optical/), страницу испытания holdover (/studio/holdover/) и просмотрщик обсерватории (/studio/observatory/). Они запускают тот же движок в браузере, ничего не загружается, и на них приведено то же консультативное заявление. Рисунки выше построены скриптом по собственным выходным данным движка; это не снимки экрана этих страниц.
Навигация пользователей в космосе (gnss-ssv)#
Для космического аппарата над орбитами ГНСС, вокруг них или далеко за ними: сколько сигналов ГНСС он может использовать, насколько они сильны, какова геометрия и что с ними может сделать бортовой фильтр. Один вид, четыре режима, выбираемые таблицами сценария: оболочка пользователей (доля времени с одним и четырьмя сигналами по орбитальным группировкам), траектория (сигналы, C/N0, геометрический фактор DOP и среда лимбового луча вдоль орбиты), прогон навигации (девятисостоятельный фильтр по псевдодальностям, до Луны) и формация (относительная навигация подчинённых аппаратов вокруг главного). Публичный источник для сравнения доступности — буклет по космической зоне обслуживания интероперабельных ГНСС (UN OOSA ST/SPACE/75, Международный комитет по ГНСС), который сам является симуляцией; он загружается, но не включается в репозиторий. Полная страница: 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
Статус в реестре: MODELLED, и сравнение с буклетом в основном не сходится. Пороги были зафиксированы до прогона. Из восьми выполнены только S0 (обратный бюджет линии, 13 из 13 значений) и S6 (лунная миссия). S1–S5 и S7 NOT MET: геометрия верхнего и нижнего объёма обслуживания (43 из 52 и 48 из 52 ячеек), верхний объём обслуживания 15/20/25 дБ-Гц, шесть миссий GEO, миссия HEO и параметрическая диаграмма боковых лепестков в сравнении с измеренными диаграммами панелей GPS. Почти каждое расхождение в S1–S5 связано с ГЛОНАСС, а буклет приводит для него два разных опорных угла; диагностический вариант с другой парой доводит S1, S2 и S4 до всех ячеек, но он не заменяет зафиксированный прогон, и ни одна строка не VALIDATED. Абсолютный фильтр прогона формации также излишне самоуверен (среднее значение нормированного квадрата ошибки значительно выше значения около 3, которое даёт согласованный фильтр).
Навигация пользователей в космосе, что показывает сравнение.
Лунная инфраструктура (lunar-infrastructure)#
Орбита и поверхность Луны как навигационная и геодезическая инфраструктура, в пяти исследованиях, выбираемых через study: od-consistency (бортовое определение орбиты по ГНСС Земли на гало-орбите в сравнении с независимым наземным), carrier-phase (фиксация целочисленной неоднозначности между наземными станциями и орбитальным аппаратом), frame-coestimation (лунная система координат по дальнометрии со станций Земли с линиями связи с орбитальным аппаратом и без них), space-tie (смещения лазерных, РСДБ- и ГНСС-измерений на одном космическом аппарате относительно ошибки локальной привязки) и geodesy-sensitivity (какое семейство наблюдаемых чувствительно к числам Лява h2, k2 и l2). Модель — ограниченная задача трёх тел с заявленными упрощениями и иллюстративными исходными данными. Полная страница: 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
Статус в реестре: MODELLED, и три порога NOT MET. Численные методы проверены по независимым программам на numpy и scipy; ничто не сравнивается с измерением лунной величины, и ничто не VALIDATED. Выполнено: два решения орбиты согласованы (среднее q 5,81 при ожидаемом 6), а связи с орбитальным аппаратом повышают наименьшее собственное значение системы координат примерно в 111 раз при известной орбите. Не выполнено: внесённая ошибка модели 3e-10 м/с2 не обнаруживается (C3: бортовое решение известно примерно до 350 м, так что около десяти метров скрывается в его ковариации); фиксация целых неоднозначностей не достигается (успех от 1 до 3 % при 25 дБи, а при зарегистрированных 12 дБи задачу сформировать нельзя); и половина G3 по следу при добавлении семейства наблюдаемых (след вырос в 12 из 28 добавлений, каждый раз потому, что семейство повышало ранг). Каждое расхождение закреплено тестом. Лунная инфраструктура.
Kshana Studio#
Откройте kshana.dev/studio, и весь движок работает в вашем браузере, скомпилированный в WebAssembly. Ничего устанавливать не нужно, и ничего не загружается. В Studio два представления одного движка, и переключатель в заголовке переносит между ними, сохраняя сценарий, представление и все изменённые вами параметры.
Простое представление — то, с чего Studio открывается. Оно начинается с вопросов (сколько спутников я вижу, можно ли доверять моему определению положения, как долго часы могут держать время, что делает с моим приёмником глушитель) и с карты всего, что умеет движок, где у каждой области указана доля проверенных методов. Откройте сценарий, и сначала идёт ответ: одно простое предложение, написанное применительно к тому, что измеряет этот сценарий, затем его ключевые показатели и график. Показано не более пяти параметров, тех, что сильнее всего меняют ответ; остальные ждут в разделе Расширенные настройки. Как это вычисляется объясняет метод, а Для исследователей даёт собственные показатели движка, файл сценария, код для запуска из Python и ссылку для цитирования.

Расширенное представление — это полная панель: библиотека сценариев, пять пронумерованных шагов (Выбрать, Задать, Запустить, Прочитать результаты, Поделиться или экспортировать), ключевые показатели с метками PASS и FAIL там, где прогон задаёт порог, и все панели: обзор, графики, карты, воспроизведение, отчёт движка и экспорт. Одно поле поиска находит сценарии, области и поля внутри них, а до четырёх прогонов можно закрепить и сравнивать рядом.
Начальный экран простого представления и расширенное представление после прогона


Исходный код Studio и заметки по сборке находятся в web/README.md.
Сайт#
Остальная часть kshana.dev собирается из собственных файлов этого репозитория и прогонов движка: миссии, возможности, реестр доказательств, опубликованные исследования и редакции.

Возможности#
Один движок охватывает всю цепочку отказов, от первого подавленного спутника до последней наносекунды holdover часов. В движке 92 видов сценариев; kshana kinds перечисляет их, а docs/SCENARIOS.md описывает каждое поле.
| Возможность | На какой вопрос отвечает |
|---|---|
| Спектр | как глушитель захватывает L-диапазон ГНСС, полоса за полосой, секунда за секундой |
| Часы и синхронизация времени | как долго каждые часы держат время после потери ГНСС |
| Орбитальные группировки вокруг любого тела | покрытие, геометрический фактор DOP и доступность вокруг Земли, Луны или Марса |
| Солнечная система | где находится каждая планета и время распространения света по любой линии связи |
| Навигация на низкой околоземной орбите | пролёт, линия связи, навигационное сообщение и объединённое определение положения, этап за этапом |
| Кампании | связанная миссия, перебор или ансамбль Монте-Карло в одном сценарии |
| Анимация | временной ряд прогона как анимированный рисунок, проигрыватель или кадры |
| Отчёты | каждый показатель с единицей и подписью, в HTML (HyperText Markup Language) и JSON (JavaScript Object Notation) |
| Экспорт для совместимости | орбиты и геометрия для других инструментов: SP3, CCSDS OMM и OEM, CZML, KML, GeoJSON, STK и SigMF |
| Доверие на море | можно ли доверять этому определению положения на мостике: оценка от 0 до 100 и причины по NMEA судна, в реальном времени или по журналу (консультативного характера, не навигационное оборудование с утверждённым типом) |
| Потоки NMEA для обучения | синтетический NMEA мостика со сценарным глушением и спуфингом и журналом инструктора, для обучения экипажа (только текст; никогда не для действующих навигационных систем судна; консультативного характера, не навигационное оборудование с утверждённым типом) |
| Карта помех | где воздушные и морские суда сообщали об ухудшении навигационных данных и какую часть маршрута это затрагивает |
| Область излучателя | где при заданных допущениях может находиться источник искажённых сообщений о положении: области с заданной достоверностью, центроид с его эллипсом, но никогда не точка (MODELLED; kshana interference-map locate) |
| Пакеты доказательств | подписанная, проверяемая офлайн техническая запись окна журнала судна и того, что движок вычислил по нему, для отчёта об инциденте (консультативного характера, не навигационное оборудование с утверждённым типом) |
| Телеметрия доверия | поток доверия в виде метрик Prometheus, событий SIEM и необязательного OpenTelemetry, с образцом панели Grafana (deploy/grafana/kshana-gnss-trust.json) |
| Signal K и OpenCPN | оценка доверия на сервере Signal K лодки и в OpenCPN, с эталонной сборкой для небольшого компьютера рядом с приёмником (консультативного характера, не навигационное оборудование с утверждённым типом) |
| Экспорт для испытательного стенда (test-bench) | kshana bench-export: движение транспортного средства и события сценария для лабораторного имитатора ГНСС (сигнал не записывается) и то, как затем оценить журнал приёмника |
| Сопоставление и отчёт compliance | kshana compliance-report: какие строки публичных рамок устойчивости набор прогонов подкрепляет доказательствами и какой пробел остаётся |
| Блокноты | исполняемые руководства: потоки доверия и обучения для судна, экспозиция маршрута по карте помех, сопоставление compliance и испытательный стенд, квантовый и классический GDOP |
| Верификатор Galileo OSNMA | навигационные данные каких спутников приёмник может криптографически аутентифицировать и почему проверка не проходит; Kshana не предоставляет прав по ICD IPR OSNMA ЕС (см. NOTICE на странице) |
Форматы экспорта полностью: SP3 — Standard Product 3; CCSDS OMM и OEM — Orbit Mean-elements и Orbit Ephemeris Messages Консультативного комитета по космическим системам передачи данных; CZML и KML — языки разметки Cesium и Keyhole; STK — Systems Tool Kit; SigMF — Signal Metadata Format.
Каждая возможность, нарисованная по реальному прогону: водопад L-диапазона, карта покрытия, Солнечная система и пролёт на низкой околоземной орбите
Запустите любой из них с помощью kshana example <scenario> > s.toml && kshana s.toml: сценарии — l-band-waterfall-jamming, constellation-multi-gnss-coverage, solar-system-tour и leo-pass-iridium.
Морские возможности и возможности по помехам, нарисованные по закоммиченным синтетическим входным данным: оценка доверия, карта помех с экспозицией маршрута, поток обучения и пакет доказательств
Все четыре — выдуманные данные консультативного характера: они показывают формат и поведение программного обеспечения, а не то, как какой-либо приёмник или система ведёт себя при помехах. Первое запустите с помощью kshana receiver-trust examples/maritime-trust/session.toml, второе — с помощью kshana route-exposure на образцах в examples/interference-map/, третье — с помощью kshana nmea-scenario scenarios/training/coastal-drag-off.toml --out drag.nmea (только для обучения: никогда не подавайте его на действующее навигационное оборудование), а четвёртое — как описано в docs/EVIDENCE-PACKS.md.
Полная таблица возможностей, область за областью
Далее следует полное описание по областям; реестр зрелости по каждой возможности см. в docs/CAPABILITY.md и docs/VALIDATION.md.
| Область | Возможность |
|---|---|
| Орбиты и геометрия | Распространение SGP4/SDP4 (проверено до 4,12 мм по всем 666 векторам AIAA 2006-6753); реальные двухстрочные элементы (закоммиченный датированный снимок Celestrak gps-ops) или синтетические орбитальные группировки Уокера-дельта, средние элементы которых реализуют формулу i:T/P/F с отклонением менее 1 км на 24-часовом распространении; видимость по нескольким орбитальным группировкам, геометрический фактор — геометрический, позиционный, горизонтальный, вертикальный и временной (GDOP/PDOP/HDOP/VDOP/TDOP), проверенный до 1e-6 по gnss_lib_py 1.0.4, Stanford NAV Lab (Лаборатория навигации и автономных транспортных средств), и доступность ГНСС; безградиентный оптимизатор проектирования орбитальной группировки, оценка минимального числа спутников по полосам покрытия, инструмент сравнения нескольких орбитальных группировок и перебор проектов Уокера, который сводит в таблицу покрытие / PDOP / время повторного посещения по сетке плоскостей × спутников и указывает Парето-оптимальные проекты. |
| Численный распространитель | Численный распространитель орбиты по методу Коуэлла (src/propagator.rs), дополняющий аналитический путь SGP4/SDP4, с иерархической моделью сил из семи возмущений (src/forces.rs): две точки + полное зональное поле J2–J6 (коэффициенты зональных гармоник сжатия Земли от J2 до J6; точный аналитический градиент его возмущающего потенциала), необязательный тессеральный сферически-гармонический геопотенциал EGM2008 до степени/порядка 70 (Earth Gravitational Model 2008; src/gravity_sh.rs; реальные коэффициенты NGA — Национального геопространственного агентства США, рекуррентное вычисление нормированных функций Лежандра по Холмсу — Фезерстоуну, перекрёстно проверено по замкнутым формам функций Лежандра и тождеству для аналитического ∇V), гравитация Солнца и Луны как третьих тел, определяемая эпохой (встроенные эфемериды низкой точности, без ядра DE/SPK — Development Ephemeris / SPICE Spacecraft and Planet Kernel), давление солнечного излучения (модель пушечного ядра с коническим затенением: тень + полутень), атмосферное торможение (кусочно-экспоненциальная плотность по Валладо, вращающаяся вместе с Землёй атмосфера), постньютоновскую релятивистскую поправку Шварцшильда и член увлечения инерциальных систем Лензе — Тирринга (IERS — Международная служба вращения Земли и систем отсчёта — Conventions 2010 §10, линейный по угловому моменту Земли, на ~1–2 порядка меньше Шварцшильда), — с выбором из двух адаптивных интеграторов (RK4 — Рунге — Кутта четвёртого порядка — с удвоением шага или вложенная пара Дорманда — Принса RK5(4)). Validated по Orekit 12,2 (CS GROUP, Apache-2.0) NumericalPropagator/DormandPrince853 — 278 эпох по LEO (низкая околоземная орбита) + GTO (геопереходная орбита), причём уровни консервативных сил согласуются с наихудшим расхождением |Δr| 0,08 м за 24 ч (tests/numerical_cowell_propagator_reference.rs); уровень атмосферного торможения охарактеризован отдельно (≈ 333 м / 24 ч), а абсолютные исходные данные по эфемеридам Солнца и Луны и плотности остаются, как и должно быть, Modelled. Дополнительные внутренние свидетельства (не внешняя валидация): невозмущённая орбита проверена по точному решению Кеплера в универсальных переменных с точностью до долей метра за 24 ч, энергия и момент импульса сохраняются до ~1e-9, а каждое возмущение совпадает с выведенной вручную сигнатурой в замкнутой форме. |
| Манёвры и проектирование траекторий | Импульсные узлы ΔV с распространением ковариации 6×6 (системы координат ошибок исполнения ECI — земная инерциальная — / LVLH — местная вертикаль, местный горизонт), интегрирование конечного импульса, проверенное по замкнутому уравнению Циолковского с точностью до < 0,01 %, решатель однооборотной задачи Ламберта по Иззо-2015, точный распространитель Кеплера в универсальных переменных и сетка porkchop (старт × прибытие) по C3 (энергия старта) / V∞ прибытия, выдаваемая как JSON-сетка контуров — слой моделирования характеристик над GMAT/Orekit, причём каждый выход Ламберта проверен круговым обходом по двухтельной истине, а минимум porkchop проверен по аналитическому нижнему пределу Гомана. |
| Системы времени и системы отсчёта | Шкалы UTC / TAI / TT / UT1 с високосными секундами IERS (всемирное координированное время, международное атомное время, земное время и связанное с вращением Земли всемирное время Universal Time 1), API юлианских дат (интерфейс программирования приложений), угол вращения Земли (ERA) IAU-2000 (Международный астрономический союз), TEME ↔ ECEF на основе GMST (среднее звёздное время по Гринвичу; истинный экватор, средний равноденствие ↔ земная система координат, жёстко связанная с Землёй) с геодезическими системами WGS-84 (World Geodetic System 1984), прецессия IAU 2006 (Фукусима — Уильямс), полная нутация IAU 2000A/2000B, движение полюса IERS и не использующее равноденствие приведение GCRS↔ITRS на основе CIO по IAU 2006/2000A (CIO — Celestial Intermediate Origin, небесный промежуточный полюс отсчёта) — всё проверено с точностью до бита по векторам SOFA/ERFA и независимо перекрёстно проверено по ANISE (чистая реализация NAIF/SPICE на Rust; NAIF — Navigation and Ancillary Information Facility NASA, Национального управления по аэронавтике и исследованию космического пространства США): GCRS→ITRS kshana и ITRF93 ANISE (International Terrestrial Reference Frame 1993) из earth_latest_high_prec.bpc JPL при одних и тех же параметрах ориентации Земли IERS, поданных в обе, согласуются в пределах ≤ 0,86 м на земле / ≤ 3,6 м на орбите ГНСС (максимум 0,028″) на восьми эпохах 2020–2023. |
| Инерциальные | Трёхосная бесплатформенная ИНС — кватернионная ориентация, механизация WGS-84 NED (север-восток-вниз), компенсация конического движения и скалывания, детерминированная модель ошибок ИДС (масштабный коэффициент, неортогональность, чувствительность к g, квантование, дрейф); акселерометр на основе холодно-атомного интерферометра из первых принципов (фаза Маха — Цендера, квантовый проекционный шум, спад контраста, связь с вибрацией), который выводит коэффициент случайного блуждания скорости; и корпускулярный фильтр с последовательной выборкой по значимости для навигации с картой (по рельефу или гравитации) в условиях отказа GPS. |
| Альтернативные PNT (без GPS) | Модель измерения холодно-атомного гравиметра, белошумовой порог которой (σ = ASD/√τ, ASD — амплитудная спектральная плотность) выведен из физики акселерометра CAI; сферически-гармоническое поле аномалий силы тяжести низкой степени с полной нормировкой (проверено по замкнутым функциям Лежандра и выведенной вручную одночленной аномалии) плюс синтетические масконы; ядро синтеза гравитационных функционалов (gravity_sh::gravity_magnitude / gravity_disturbance_mgal) — «считыватель карты», с которым сопоставляется навигатор с гравитационной коррекцией, — проверено по стандарту нормальной силы тяжести GRS80 (Geodetic Reference System 1980), воспроизводит замкнутую нормальную силу тяжести Сомильяны и опубликованные γ_e / γ_p с точностью 3.5e-12 и строит физически ограниченную карту возмущений по реальному полю EGM2008 ICGEM (Международный центр глобальных моделей Земли) (СКО ≈ 26 мГал, максимум ≈ 89 мГал при d/o 70; tests/icgem_gravity_reference.rs); и корпускулярный фильтр сопоставления с гравитационной картой, восстанавливающий трек в условиях отказа GPS по последовательности аномалий, через которые он проходит. Он распространяется на навигацию по рельефу (TERCOM/SITAN — сопоставление контуров рельефа / Sandia Inertial Terrain-Aided Navigation — по .hgt DEM (цифровая модель рельефа) SRTM (Shuttle Radar Topography Mission), src/altpnt/terrain.rs), главное геомагнитное поле IGRF-14 (Международное геомагнитное эталонное поле 14-го поколения) до степени/порядка 13 (src/igrf.rs, проверено по замкнутой форме наклонного диполя и конечным разностям ∇V) и комбинированный навигатор по гравитации, магнитному полю и рельефу, объединяющий все три скалярных канала в одном корпускулярном фильтре (информация аддитивна — ни один канал не ухудшает определение положения). 60-минутный тест в условиях отказа GPS (простой ~700 км / один час, при котором инерциальное решение уходит примерно на ~70 км) восстанавливается до ~145 м (< 500 м) иерархическим сопоставителем от грубого к точному — целевой показатель ESA NAVISP (Navigation Innovation and Support Programme) Quantum Wayfarer. |
| Объединение | Слабосвязанный 15-состоятельный EKF (расширенный фильтр Калмана) ошибок GNSS/INS с замкнутой обратной связью (пакет gnss-ins); тесносвязанное обновление по псевдодальности, продолжающее коррекцию при менее чем четырёх спутниках; связанный фильтр часов и положения; общий унцентированный (сигма-точечный) калмановский оценщик для сильно нелинейных измерений; тесносвязанный навигатор GNSS/INS на UKF (псевдодальность + Доплер), чей орбитальный выбег по модели сил проверен на самосогласованность с точностью 0,77 м СКО на 30-минутном криволинейном пролёте на LEO с 120-секундным отказом GNSS (показатель согласованности фильтра, а не валидация по внешнему оракулу — этот навигатор остаётся MODELLED); и полный 17-состоятельный тесносвязанный UKF GNSS/INS (положение, скорость, ошибка ориентации, смещения акселерометров и гироскопов, смещение и дрейф часов), квантовое счисление пути CAI которого проходит 120-секундный отказ на выведенном случайном блуждании скорости холодно-атомного акселерометра. |
| Определение орбиты | Восстановление орбитального состояния [r, v] по дальномерному слежению с наземных станций, сочетающее двухтельную модель сил с J2 и интегратор RK4 с корректором Гаусса — Ньютона по пакету (determine_orbit_batch, до долей метра / мм·с⁻¹ по бесшумным дальностям, ~2 м при шумовом пороге 5 м) и последовательным вариантом с унцентированным фильтром (determine_orbit_sequential). |
| Наблюдаемость и теория оценивания | Общий повторно используемый слой информации Фишера / Рао — Крамера (src/fim.rs): информационная матрица M = HᵀWH, нижняя граница Рао — Крамера, ранг наблюдаемости и нуль-пространство дефекта системы отсчёта (псевдообратная Мура — Пенроуза) и скаляры планирования эксперимента D/A/E/T-оптимальности из симметричного собственного решателя Якоби. Validated — собственные значения относительно numpy.linalg.eigh, ковариация CRLB относительно σ²(XᵀX)⁻¹ через numpy.linalg.inv и DOP ГНСС по информационной матрице, всё совпадает до 1e-9 (tests/fim_observability_reference.rs), а также перекрёстно проверено по замкнутым границам Кея (1993) с достижением CRLB по методу Монте-Карло. Лежит в основе движка DOP, CRLB пассивной геолокации и теоремы наблюдаемости лунной абсолютной станции (ниже). |
| Лунное и цислунное пространство | Распространитель круговой ограниченной задачи трёх тел (CR3BP) Земля — Луна во вращающейся системе — сохраняющаяся постоянная Якоби и все пять точек Лагранжа (src/cr3bp.rs) — теперь с матрицей перехода состояния (STM) 6×6 и дифференциальным корректором однократной стрельбы (cr3bp_jacobian, propagate_state_stm, differential_correct_halo), который строит по-настоящему периодические гало-орбиты / NRHO (почти прямолинейные гало-орбиты): STM проверена по конечным разностям, скорректированные орбиты замыкаются до машинной точности, а подстановка опубликованного состояния в апоселении воспроизводит южную NRHO L2 9:2 (L2 — вторая точка Лагранжа Земля — Луна; орбита Gateway) с периодом ≈ 6,57 сут / периселением ≈ 3 250 км, что согласуется с опубликованными ≈ 6,56 сут / ≈ 3 370 км (решение CR3BP — круговой, без Солнца, — которое не проверено по реальным эфемеридам LANS (Lunar Augmented Navigation Service)/Gateway; селеноцентрическое преобразование MCI/MCMF (лунная инерциальная / лунная, жёстко связанная с Луной) скорректированной орбиты — последующая работа); плюс геометрия цислунного PNT LunaNet / LNIS (LunaNet Interoperability Specification) (приведение MCI↔MCMF, селенографические координаты) с пролётом ARAIM у южного полюса Луны, который честно выявляет разрыв целостности: σ_URE (ошибка дальности пользователя) ~30 м выводит уровень защиты значительно выше предела тревоги 50 м (src/lunar.rs, scenarios/lunanet-araim.toml); и дополнение DOP поверхностными маяками (src/lunar_beacon.rs), показывающее, как несколько привязанных по съёмке поверхностных дальномерных маяков дают строки линии визирования с малым углом места и широким азимутом, которых не хватает набору только орбитальных спутников, находящихся целиком над головой, — уменьшая плохо обусловленный южно-полярный GDOP и, через бюджет ошибок в виде корня из суммы квадратов, достигнутую точность положения в метрах (с повторным использованием ядра DOP, проверенного по gnss_lib_py, и замкнутой формы видимости над безатмосферным горизонтом; анализ геометрического фактора изложен в arXiv:2607,06212). |
| Набор лунного PNT | Набор лунной/цислунной навигации поверх ядра CR3BP, каждый из них запускаемый kind: Лунное координатное время (lunar-time-offset, src/lunar_time.rs — вековая скорость LTC/TCL − TT (LTC — Lunar Coordinate Time; TCL — его французская форма, Temps-Coordonnée Lunaire) из разности собственных потенциалов + кинетического члена, приводится с опубликованным диапазоном 56–59 мкс/сут); геодезическая наблюдаемая лунной РСДБ (радиоинтерферометрия со сверхдлинной базой) — задержка (lunar-vlbi, src/lunar_vlbi.rs — ближнепольная задержка + скорость по разности двух дальностей на земной базе, перекрёстно проверена по плосковолновому Δ-DOR (разностная односторонняя дальнометрия) той же кодовой базы в пределе дальнего поля, частные производные проверены конечными разностями); совместный многотехнологический оценщик ОД + часов по пакету (lunar-joint-od-clock, src/lunar_combination.rs — подгонка по Гауссу — Ньютону, объединяющая РСДБ + лунные локальные дальности + межспутниковые дальности), несущий результат наблюдаемости по информации Фишера: одни внутренние измерения дальности оставляют шестистепенной дефект системы отсчёта жёсткого тела, поэтому абсолютное положение поверхностной станции ненаблюдаемо, пока не добавлена привязка к земной системе, — РСДБ-задержка на земной базе восстанавливает наблюдаемость для разреженной орбитальной группировки и уточняет границу Рао — Крамера для насыщенной, а абсолютная система отсчёта замыкается при трёх неколлинеарных земных станциях (результат наблюдаемости изложен в arXiv:2607,02566); реализация системы отсчёта (lunar-frame-realisation, src/lunar_frame_realise.rs — подгонка 7-параметрической системы отсчёта Гельмерта + привязка ориентации WGCCRE IAU 2015 — WGCCRE — рабочая группа IAU по картографическим координатам и элементам вращения); анализ объёма обслуживания класса Moonlight/LCNS (LCNS — Lunar Communications and Navigation Services; moonlight-service-volume, src/lunar_service.rs — DOP / покрытие / доступность + обобщённая огибающая HPL/VPL (горизонтальный/вертикальный уровень защиты) лунного ARAIM, с повторным использованием ядра DOP, проверенного по gnss_lib_py, и механизма LunaNet σ_URE≈30 м); лунный дифференциальный PNT (lunar-differential-pnt, src/lunar_dpnt.rs — лунный аналог дифференциальной ГНСС / функциональной дополнительной системы (SBAS): точное сокращение общего режима часов + пространственная декорреляция первого порядка в зависимости от базы, с повторным использованием уровня защиты SBAS по DO-229E — DO-229E является минимальным эксплуатационным стандартом характеристик RTCA (ранее Radio Technical Commission for Aeronautics) для приёмников SBAS); и экспорт для взаимодействия, согласованный с LunaNet/IOAG (IOAG — Interagency Operations Advisory Group; lunar-interop-export, src/lunar_interop.rs — CCSDS-OEM (Orbit Ephemeris Message) + круговой обход по лунной шкале времени в лунной системе тела IAU 2015, в оболочке KIF). Уровни доказательств по каждой части приведены в матрице верификации: Лунное координатное время, совместный оценщик ОД + часов, реализация системы отсчёта и геометрия объёма обслуживания VALIDATED (каждое по независимому оракулу, названному в его строке, как и путь ядра для РСДБ-задержки); наблюдаемая РСДБ, результат наблюдаемости по дефекту системы отсчёта, дифференциальный PNT и экспорт для взаимодействия MODELLED. Параметры — иллюстративные значения из открытых источников, не проверенные по реальному слежению РСДБ/Gateway, не связанные с каким-либо агентством и не одобренные им, без заявлений об уровне технологической готовности (TRL) или лётной истории. |
| PNT для дальнего космоса и Марса | Открытый радиометрический навигационный движок: итеративная задержка по времени распространения света + релятивистская задержка Шапиро, двух-/одно-/трёхсторонние Доплер и дальность (двухплечевая по Мойеру), коэффициенты когерентного поворота ответчика, регенеративная/PN (псевдошумовая) дальнометрия (CCSDS 414, стандарт псевдошумовой дальнометрии) и Δ-DOR в плоскости неба (CCSDS 506, стандарт Delta-DOR) с солнечной плазмой/тропосферой/ионосферой; разбор + выдача сообщений данных слежения CCSDS-TDM (503); редуцированно-динамический корневой информационный фильтр (эмпирические ускорения RTN — радиальное, трансверсальное, нормальное — + 3-состоятельные бортовые часы + атмосферное торможение Марса), выполняющий определение орбиты Mars-LMO до ≈ 0,2 м в синтетическом замкнутом контуре; совместный оценщик односторонних + двусторонних измерений; многотельное динамическое ядро (Body{μ, re, zonals, gravity, IAU-pole}, гравитация Mars GMM-3 (Goddard Mars Model 3), связанная с телом система Марса IAU, подключаемый стык EphemerisProvider, двухчастные юлианские даты + TT↔TDB (барицентрическое динамическое время)); и сценарий ретрансляторного PNT mars-pnt (ареостационарная ретрансляторная группировка MARCONI) со сквозным имитатором характеристик GSE (GSE — наземное вспомогательное оборудование) (геометрия → бюджет линии → наблюдаемые → SRIF → ковариация). Simulation-validated (показатели качества по ковариации / замкнутому контуру); центральная относительно Солнца динамика Марса перекрёстно проверена по JPL DE440 (137 м на дуге в 1 сутки, xval/anise-mars-od). Валидация по реальным данным слежения DSN/ESTRACK значится в дорожной карте. |
| Солнечная система и PNT для любого тела | Безъядерные эфемериды всей Солнечной системы (src/ephem.rs, src/ephem_provider.rs): каждая планета по кеплеровым элементам Стэндиша JPL (таблица 1, 1800–2050 гг. н. э.; таблицы 2a/2b, 3000 г. до н. э. — 3000 г. н. э.) с опубликованной номинальной ошибкой каждой планеты, Земля и Луна разделены лунной серией, а Фобос, Деймос, Ио, Европа, Ганимед, Каллисто и Титан заданы средними элементами JPL и моделью вращения IAU (Международный астрономический союз); любое тело относительно любого другого в ICRF (Международная небесная система отсчёта). Body теперь несёт GM (гравитационный параметр), радиусы, J2 (вторая зональная гармоника), где опубликована, а также полюс IAU и нулевой меридиан для восемнадцати тел. Вид solar-system выдаёт положения, скорости, константы, время распространения света и одно-/двустороннюю дальность между любыми двумя телами (существующий радиометрический решатель времени распространения света с солнечной задержкой Шапиро) и орбитальный трек для каждого тела — достаточно, чтобы нарисовать интерактивную Солнечную систему; вид body-pnt размещает орбитальный аппарат или посадочный модуль вокруг любого тела (scenarios/mars-orbit-pnt.toml, scenarios/europa-surface-pnt.toml) с локальной орбитальной группировкой Уокера, механизмом геометрического фактора и Гаусса — Ньютона и дальностью до дальнего космоса от Земли. Validated по JPL Horizons (DE441, JPL Development Ephemeris 441): Меркурий — Сатурн и Земля по таблице 1 в пределах удвоенной номинальной ошибки (наихудшее 1,87×), все восемь планет по таблицам 2a/2b (наихудшее 1,71×) и время распространения света Земля — Марс/Юпитер. Modelled: Уран и Нептун по таблице 1 (2,0× и 5,2× заявленной ошибки относительно DE441), Плутон, спутники и навигационные результаты body-pnt. |
| Объединённый PNT на MEO + LEO | src/leo_fusion/: не зависящие от системы позиционирование, навигация и время на LEO для любой орбитальной группировки (оболочки Уокера, наборы элементов, предустановки ГНСС) и любого сигнала (несущая, скорость чипов, огибающая C/N0, ошибка дальности сигнала в пространстве), с необязательными однофайловыми предустановками, несущими свои источники (Xona Pulsar X1/X5, Iridium STL, сигналы оказии Starlink, CentiSpace, репрезентативная система C-диапазона, модель эфемерид ATOMIC с нулевыми часами). leo-pvt: пакетное позиционирование по Доплеру по скорости изменения дальности (одно- и многоспутниковое, состояния дрейфа часов и скорости, геометрия однократного пролёта вдоль/поперёк трека и зеркальное решение), совместный взвешенный метод наименьших квадратов GNSS + LEO с межсистемными смещениями по системам и заданными вызывающей стороной сигмами по сигналам, DOP в зависимости от числа спутников LEO, покрытие полярных и арктических районов и передача времени с LEO к UTC в зависимости от C/N0 и генератора. leo-ppp: плавающий PPP (точное позиционирование по одиночной точке) на EKF (расширенный фильтр Калмана) только с GNSS и с LEO, время сходимости и проверка согласованности по NEES хи-квадрат. ntn-positioning: позиционирование 5G в нетерристриальных сетях по границе Рао — Крамера от ширины полосы. Validated: огибающая доплеровского сдвига LEO относительно опубликованных значений Iridium и Xona. Modelled: остальное, с тенденцией PPP, сопоставленной с Li et al. (2019) — см. docs/LEO-PNT-FUSION.md. |
| Целостность | Мгновенный и основанный на разделении решений (в стиле ARAIM) RAIM — автономный контроль целостности приёмником — с горизонтальным/вертикальным уровнями защиты (HPL/VPL), обнаружением и исключением отказов и диаграммами целостности Стэнфорда; явный уровень защиты разделения решений по множественным гипотезам (MHSS) с бюджетом риска целостности, включая режим отказа всей орбитальной группировки при двух/нескольких группировках (ARAIM ЕС (Европейского союза) / DO-316, стандарт характеристик RTCA для бортового оборудования GPS с авиационным дополнением), проверенный на реальном срезе GPS + Galileo (scenarios/araim-gps-galileo.toml). Уровень защиты применяет одностороннюю проекцию номинального смещения b_k = Σ_i|s_i|·b_nom на каждый режим отказа и сигму целостности σ_URA (точность дальности пользователя; отличается от сигмы точности σ_URE, ошибки дальности пользователя) из Integrity Support Message — см. docs/ARAIM_REFERENCE.md. Ядро обнаружения (пороги χ²/нецентрального χ²/нормального распределения и K-множители) внешне проверено по SciPy на 171 случаях (tests/raim_reference.rs); геометрия повторно использует ядро DOP, проверенное по gnss_lib_py. Сам расчёт распределения бюджета риска целостности ARAIM MHSS не имеет опубликованного числового оракула и честно остаётся Modelled. |
| Дополнение (SBAS) | Уровни защиты SBAS / WAAS (WAAS — Wide Area Augmentation System) в форме взвешенного метода наименьших квадратов DO-229E (K-коэффициенты точного захода и полёта по маршруту) и двухчастотная безионосферная комбинация L1/L5 (L1 и L5 — два диапазона гражданских сигналов GPS; IS-GPS-705, интерфейсная спецификация GPS для сигнала L5, γ₁₅ ≈ 1,793), лежащая в основе DO-316 — src/sbas.rs. Алгоритм уровня защиты внешне проверен по ответвлению RTKLIB SBAS-PL (RTKLIB — открытая библиотека кинематического позиционирования в реальном времени; PL — уровень защиты) (zsiki/rtklib_ws waasprotlevels(), Siki & Takács 2017, DO-229D — предыдущая редакция DO-229 — прил. J) на реальных данных EGNOS (European Geostationary Navigation Overlay Service), воспроизводя его HPL с точностью до < 2e-3 м (tests/sbas_reference.rs); gLAB (набор инструментов GNSS Laboratory) v6.0.0 подтвердил идентичное соглашение. |
| Часы и синхронизация времени | Двухсостоятельный калмановский holdover (ковариация в форме Джозефа, согласованность NIS/NEES — нормированный квадрат инновации / нормированный квадрат ошибки оценивания); стабильность семейства Аллана (ADEV / MDEV / TDEV / HDEV / MTIE — девиация Аллана, модифицированная девиация Аллана, временная девиация и девиация Адамара, максимальная ошибка временного интервала) с доверительными интервалами, зависящими от типа шума, и полной подгонкой степенного закона с пятью коэффициентами по IEEE-1139 (IEEE Std 1139, определения метрологии частоты и времени Института инженеров по электротехнике и электронике) — оценщики проверены на реальном оборудовании по Stable32: реальный цезиевый первичный эталон 5071A против водородного мазера (556 990 фазовых отсчётов, 16 коэффициентов усреднения, OADEV/OHDEV — перекрывающаяся девиация Аллана/Адамара — до 1e-3; tests/cs5071a_reference.rs) и канонический регрессионный ряд Stable32 PHASE.DAT (139 коэффициентов усреднения, OADEV/MDEV/TDEV до 1e-3; tests/phasedat_reference.rs); оценщики ADEV/MDEV/TDEV и телекоммуникационная метрика блуждания MTIE дополнительно перекрёстно проверены по независимой библиотеке allantools 2024,06 до < 1e-9 на ряду NIST SP 1065 (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs); геометрические поправки (Саньяка, общий вид GNSS); и операционные методы передачи — TWSTFT (двусторонняя спутниковая передача времени и частоты) с замкнутой формой Саньяка по BIPM (Международное бюро мер и весов), общий вид GNSS, безионосферная передача времени по PPP (точное позиционирование по одиночной точке), оптическая линия в свободном пространстве со сцинтилляцией от турбулентности и ансамблевая шкала времени (бумажная) по часам с обратнодисперсионным взвешиванием, лучше наилучших вносящих вклад часов. Калькулятор holdover часов в условиях отказа GNSS (src/holdover.rs) выдаёт замкнутый рост ошибки выбега по ван Лоану как инверсию holdover до порога — как долго часы свободно идут, прежде чем ошибка времени превысит бюджет, — для представительных классов классических и квантовых часов; modelled (перекрёстно проверено по многошаговой ковариационной рекурсии clock_state), и честно указано, что для очень стабильных часов holdover до жёсткого порога определяется предполагаемым шумовым порогом при больших τ, а не указанным ADEV. Условный уровень защиты времени (src/tpl.rs) распространяет holdover на спуфинг: граница необнаруженной ошибки времени при независимой перекрёстной проверке, которая складывает k-сигма порога монитора, дисперсию выбега по ван Лоану за время задержки обнаружения и время до тревоги по CUSUM (кумулятивной сумме). Откалиброван по реальному записанному спуфингу (JammerTest 2024) и воспроизводим через cargo run --example tpl_jammertest; MODELLED композиция (без бюджета риска целостности в час), условная относительно обнаружения — конечной безусловной границы нет. |
| Область измерений GNSS | Прямой синтез псевдодальности / Доплера с ионосферой Клобучара (вещательной) и IONEX / сетки TEC (формат обмена картами ионосферы IONosphere map EXchange / полное электронное содержание; измеренной) — включая разборщик файлов IONEX, интерполяцию по времени между картами и отображение наклонного фактора тонкой оболочки, — тропосферой Саастамойнена + Ниелла и мгновенный RAIM (HPL/VPL). |
| Устойчивость | Подавление по бюджету линии (J/S → эффективное C/N₀ → потеря захвата — отношение мощности помехи к сигналу, отношение несущей к плотности шума — с коэффициентом спектрального разделения защиты от помех Q, теперь выведенным из фактических спектров мощности сигнала и помехи через src/navsignal.rs — Q = 1/(R_c·κ), перекрёстно проверенным в CI по прежней репрезентативной константе); стохастический детектор спуфинга времени (энергетический тест Неймана — Пирсона / χ²₁ с замкнутыми формами и методом Монте-Карло для P_fa/P_md и показателем качества безопасности (FoM) 1 − P_md); и многоуровневый детектор спуфинга, объединяющий тест чётности согласованности RAIM (со смоделированным честно слепым пятном общего режима), монитор мощности AGC (автоматическая регулировка усиления) по РЧ и монитор качества сигнала (SQM — контроль качества сигнала, ранний минус поздний); и бюджет ошибок квантового инерциального счисления пути (QuantumNavBudget, src/inertial/quantum_imu.rs), объединяющий белошумовое случайное блуждание скорости холодно-атомного интерферометра с остаточным смещением (перекрёстно проверено по независимому интегратору AccelModel) и ошибкой масштабного коэффициента в показатель дрейфа положения за время holdover — инерциальный двойник holdover часов. Движок оценки устойчивости, согласованный с рамками (src/resilience/), сопоставляет моделируемое поведение архитектуры с подоценками по измерениям в семи собственных категориях устойчивости Kshana (не терминах DHS), согласованных с Resilient PNT Conformance Framework Министерства внутренней безопасности США, затем изучает стабильность решения любой одиночной составной оценки или уровня зрелости при симплексе весов Дирихле и ансамбле из пяти угроз — ранговую нестабильность по τ Кендалла, частоту смены победителя top-1 и коллапс разнообразия общего режима (Hill-N2), с отчётом об уверенности с хешем целостности (35 тестов по выведенным вручную оракулам). Воспроизводимо через cargo run --example resilience_report; MODELLED синтетические архитектуры, самооценка, согласованная с RPCF v2.0, не сертификация. См. docs/RESILIENCE-CROSSWALK.md. |
| Пассивная РЧ-геолокация | Геолокация излучателя по TDOA/FDOA (разность времён/частот прихода; src/geolocation.rs) — определение положения глушителя или спуфера (или оказии источника для обратного PNT) по гиперболоидам разности времён прихода по сети приёмников, решаемое методом наименьших квадратов по Гауссу — Ньютону; добавление разности частот прихода при движущихся приёмниках совместно восстанавливает положение и скорость излучателя, а граница Рао — Крамера для ковариации положения выводится из геометрии сети. MODELLED (оракулы внутренней согласованности: круговые обходы прямая→обратная задача, тождество J·CRLB = I, монотонность GDOP и достижение оценщиком собственной CRLB методом Монте-Карло) — модель точечного источника по линии визирования, без членов многолучевости / NLOS (отсутствия прямой видимости), смещения часов приёмника и рефракции. |
| Навигационный сигнал и слежение за кодом | Уровень сигнала между бюджетом линии и областью измерений (src/navsignal.rs): спектральные плотности мощности (PSD) единичной площади для BPSK-R(n) (двоичная фазовая манипуляция с прямоугольными чипами) и sine-BOC(m,n) (двоичная несущая со смещением); коэффициент спектрального разделения (SSC) κ = ∫ G_s·G_i df, который выводит коэффициент защиты от помех Q, используемый моделью подавления (Q = 1/(R_c·κ)), из фактических спектров сигнала/помехи вместо репрезентативной константы; СКО (по Габору) ширины полосы (BOC > BPSK — мера информации о дальности / Рао — Крамера); тепловой шум дрожания при когерентном слежении за кодом по раннему–позднему DLL (DLL — петля слежения за задержкой; Каплан и Хегарти; ~доли метра для C/A — грубого/захватного кода GPS — при 45 дБ-Гц); и огибающая ошибки многолучёвости (когерентный EML, ранний минус поздний — подавление узким коррелятором). Validated по замкнутым опорным значениям (собственный SSC BPSK = 2/(3·R_c), PSD единичной площади, доли метра для дрожания C/A). Это анализ характеристик сигнала, а не проектирование аппаратуры антенны / РЧ-полезной нагрузки (роль партнёра по полезной нагрузке). |
| Совместимость | Приём RINEX-3 вещательных эфемерид нескольких ГНСС (GPS, Galileo, QZSS — японская Quasi-Zenith Satellite System —, BeiDou MEO/IGSO — средняя околоземная орбита / наклонная геосинхронная орбита — по IS-GPS-200, интерфейсной спецификации GPS; ГЛОНАСС, российская Глобальная навигационная спутниковая система, через RK4 по вектору состояния в PZ-90 — российской системе Параметры Земли 1990), применимый как источник орбитальной группировки (на входе RINEX, на выходе геометрия PNT); разборщик наблюдений RINEX-3 (псевдодальность, фаза несущей, Доплер, уровень сигнала; ожидается, что компоновка наблюдений 4,00 разбирается, но это не проверено, а навигационные файлы RINEX 4 отклоняются по имени, а не декодируются с ошибкой), который теперь питает решатель одноточечного позиционирования (SPP) (pvt) — на входе реальные кодовые наблюдения, на выходе реальное положение приёмника, проверенное по данным IGS; читатель/писатель точных эфемерид SP3-c/d с интерполяцией Лагранжа 9-го порядка; и экспорт CCSDS OEM 2,0 + OMM (Orbit Mean-elements Message) для инструментов динамики полёта (GMAT, Orekit, STK — Systems Tool Kit); и разбор + выдача сообщений данных слежения CCSDS-TDM (503) для радиометрического слежения в дальнем космосе. |
| Анализ миссии (системная инженерия) | Бюджеты проектирования миссии первого порядка, каждый — запускаемый вид: двухтельная геометрия запуска и выведения (launch-window — азимут запуска sin Az = cos i/cos lat, минимальное наклонение, выигрыш от вращения Земли, Δv смены плоскости «с коленом», суточные возможности; src/launch.rs); коридор баллистического входа в атмосферу по Аллену — Эггерсу (reentry — пиковое торможение, скорость/высота пика перегрузки, скорость пика нагрева; src/reentry.rs); геометрия покрытия для наблюдения Земли (eo-coverage — полоса обзора / GSD в надире (расстояние между отсчётами на земле) / доступ вне надира / повторное посещение через космический треугольник SMAD (Space Mission Analysis and Design); src/eo_payload.rs); бюджет ошибок ориентации и наведения 3-DOF (три степени свободы; attitude-budget — наихудший гравитационно-градиентный момент + бюджет наведения в виде корня из суммы квадратов (RSS); src/attitude_budget.rs); прогноз пролётов над наземной станцией (passes — AOS/TCA/LOS, захват сигнала / время наибольшего сближения / потеря сигнала, максимальное возвышение, время доступа; src/passes.rs); и бюджет односторонней линии по уравнению линии CCSDS 401 / DSN 810-005 (радиочастотный и модуляционный стандарт CCSDS / справочник по проектированию линий Сети дальней космической связи; link-budget — FSPL (потери при распространении в свободном пространстве), C/N₀, Eb/N₀ (отношение энергии на бит к плотности шума), запас, замыкание; src/linkbudget.rs). MODELLED аналитические бюджеты первого порядка — слой до появления аппаратуры, расположенный ниже STK/GMAT/Basilisk, а не замена 6-DoF или радиометрическим расчётам. |
| Анализ решений и компромиссов (MCDA) | Полный набор многокритериального анализа решений (MCDA) (src/mcda/), охватывающий все четыре семейства методов — агрегирование оценок (WSM, WPM, WASPAS — модель взвешенной суммы, модель взвешенного произведения, взвешенная агрегированная оценка суммы и произведения), расстояние до идеала (TOPSIS, Technique for Order of Preference by Similarity to Ideal Solution), компромиссное программирование (VIKOR — от сербского «многокритериальная оптимизация и компромиссное решение») и ранжирование по превосходству (PROMETHEE II, Preference Ranking Organization Method for Enrichment of Evaluations; ELECTRE I — от французского «исключение и выбор, выражающие реальность»), а также системно-отношенческий MOORA (Multi-Objective Optimization on the basis of Ratio Analysis) и пропорциональный COPRAS (Complex Proportional Assessment) — с AHP (метод анализа иерархий) приоритетным взвешиванием по парным сравнениям (коэффициент согласованности), недоминируемым фронтом Парето, анализом чувствительности к весам и оценкой многоатрибутной полезности. Девять агрегаторов воспроизводят независимые сторонние библиотеки pymcdm (WSM / WPM / WASPAS / MOORA / TOPSIS / VIKOR / PROMETHEE II) и pyDecision (ELECTRE I, COPRAS) с точностью до < 1e-9, а вектор приоритетов AHP + коэффициент согласованности совпадают с таблицей случайного индекса Саати и главным собственным решателем SciPy/LAPACK до < 1e-9 (tests/mcda_*_reference.rs). VALIDATED — слой решений под движком исследований компромиссов. |
| Космическая среда | Модель среды космической погоды (space-weather, src/space_weather.rs): индексы солнечной (F10.7 / центрированный по 81 суткам F10.7a — радиоизлучение Солнца на 10,7 см) и геомагнитной (Kp, планетарный K-индекс, с определяющей таблицей Kp↔ap — ap является его линейной планетарной амплитудой) активности, экзосферная температура по Жаккья-1971, которую они задают (проверена по опубликованным минимуму/среднему/максимуму солнечной активности), и скорректированная по активности и статическая термосферная нейтральная плотность на высоте — зависимость плотности от солнечного цикла, которую статическая атмосфера USSA76 (Стандартная атмосфера США 1976) не учитывает. MODELLED: откалиброванная связь первого порядка по высоте однородной атмосферы, не атмосфера (NRLMSISE — модель экзосферы Лаборатории военно-морских исследований США по масс-спектрометру и некогерентному рассеянию), проверенная по данным. |
| Оценка и сравнение методов машинного обучения | Испытательный стенд оценки обнаружения РЧ-нарушений (impairment-eval, src/impairment_eval.rs): размеченный, основанный на параметрах синтетический корпус (номинал / подавление / спуфинг времени / спуфинг положения / многолучевость), не зависящая от детектора система ROC/AUC (рабочая характеристика приёмника / площадь под кривой), оценивающая любой детектор (energy | agc | sqm | parity | fused) по Pd по классам (вероятность обнаружения) при целевой Pfa (вероятность ложной тревоги), и разрыв оптимизма между распределением обучения и вне его (режим сдвига распределения). Плюс компромисс квантового и классического PNT (quantum-trade, src/quantum_trade.rs), количественно оценивающий выигрыш в holdover по времени/инерции для часов-кандидата по кривой измеренного ADEV относительно классического базового уровня, с оговоркой о пороге при больших τ, вынесенной в артефакт, и огибающей устойчивости в условиях отказа GNSS от времени. Метрики оценки (AUC / матрица ошибок / Pd-Pmd, Pmd — вероятность пропуска обнаружения) проверены на точное совпадение с scikit-learn 1.9.0 — в том числе на реальной телеметрии ESA OPS-SAT (набор данных для обнаружения аномалий OPSSAT-AD, Ruszczak et al. 2025, CC BY 4,0 — Creative Commons Attribution 4,0), где ROC AUC Манна — Уитни в Kshana воспроизводит roc_auc_score из scikit-learn с точностью до < 1e-9 на отложенной тестовой выборке, а прозрачный детектор по числу пиков отделяет размеченные аномалии при AUC ≈ 0,85 (tests/opssat_ad_reference.rs), — и численные ядра движка компромиссов (подгонка ADEV по NNLS — неотрицательным наименьшим квадратам, полосы согласованности χ², Q часов по ван Лоану) по scipy 1.17.1; построенные на этом числа выигрыша устройства остаются MODELLED рабочими характеристиками — никогда не данные из поля/IQ (синфазных/квадратурных отсчётов), без вердикта «хорошо/плохо». На основе стенда более глубокое исследование разрыва оптимизма (src/impairment_study.rs, impairment_ml.rs, eval_stats.rs) оценивает панель из 13 детекторов (energy/AGC/SQM/parity плюс детекторы с логистической регрессией и однослойным MLP — многослойным перцептроном — с заданным начальным значением), подгоняет законы масштабирования для распределения обучения и вне его с перестановочным нулём и обучает предиктор по схеме «один отложен» деградации вне распределения по статистикам внутри распределения (cargo run --example optimism_study). Входной каскад программно-определяемого приёмника (src/sdr.rs — необработанные IQ/IF (промежуточная частота) → ранний/центральный/поздний отводы коррелятора → SQM) и адаптеры приёма реальных данных (src/realdata/ — RINEX, u-blox UBX (двоичный протокол u-blox), GnssLogger, JammerTest, Yunnan, SatGrid) позволяют запускать те же детекторы на записях, предоставленных локально (наборы данных не коммитятся). Карта точки пересечения устойчивости квантовых и классических решений при неопределённости параметров (src/crossover.rs; cargo run --bin crossover_study) заново строит исследования пересечения инерциальных и часовых решений, лежащие в основе рисунков результатов. |
| Демонстратор квантового PNT | Три запускаемые области применения за открытым движком, каждая MODELLED, и каждая выдаёт честные TradeEvidence + запись о репрезентативности / пробелах до полёта (src/representativeness.rs): доверенная квантовая передача времени (quantum-time-transfer, src/timetransfer_chain.rs — сквозной бюджет оптических часов на решётке + фотонной линии против CSAC (атомные часы чипового масштаба) + РЧ двусторонней линии, с повторно используемым уровнем защиты времени, показателем безопасности при атаке задержкой/повтором (1 − P_md) и обнаружением аномалий часов + задержкой CUSUM); квантовая навигация без GNSS (quantum-gnss-free-nav, src/quantum_nav_od.rs — инерциальный выбег на холодно-атомном интерферометре против ИНС навигационного класса при отказе GNSS, с честным указанием, что без внешнего определения положения смещение акселерометра ненаблюдаемо, так что ошибка всё равно растёт); и обнаружение отказов/аномалий квантовых систем (quantum-anomaly-detect, src/quantum_faults.rs — размеченный каталог отказов с ROC AUC с доверительными интервалами по бутстрэпу (CI) из внешне проверенного eval_stats и минимальным обнаруживаемым отказом при фиксированной частоте ложных тревог). В их основе лежат общая библиотека моделей ошибок квантовых устройств (src/quantum_devices.rs) и единый стенд сравнения квантовых и классических решений (src/qtrade.rs). Проверенные ядра, на которых они основаны (метрики оценки относительно scikit-learn, ядра компромиссов относительно scipy), используются повторно; построенные на них числа выигрыша устройства остаются MODELLED — иллюстративные параметры устройств/линий из открытых источников, моделируется класс, без TRL / лётной истории / сертификации, без одобрения агентств. |
| Экономная инженерия и влияние на целостность | Взгляд на рентабельность на единицу покрытия (ROI — возврат инвестиций) (src/frugal.rs) — стоимость на единицу обеспеченного покрытия при сравнении архитектур — и сопоставление пропуск обнаружения → влияние на целостность (src/integrity_impact.rs), которое превращает частоту пропусков обнаружения монитора в его вклад в риск целостности. MODELLED бюджеты поддержки решений, аддитивные. |
| Обмен артефактами | Формат обмена Kshana (KIF) (src/interchange.rs) — версионируемая самоописывающая оболочка, в которую заключён результат сценария с его видом, версией схемы и метками MODELLED/VALIDATED, так что сохранённый артефакт остаётся самодокументированным, а более старые оболочки остаются читаемыми с прямой совместимостью. |
Каждая возможность доступна как API Rust, как запускаемый kind сценария или обоими способами. Зрелость каждой возможности — validated, runnable или library — отслеживается в docs/CAPABILITY.md. Машинно проверяемая матрица верификации (src/verification.rs) выводит перекрёстную ссылку требование → модуль → тест → оракул → статус с протестированными на уровне модулей инвариантами честности, которые допускают метку validated только там, где её подкрепляет независимый внешний оракул, — и которые фиксируют аппаратные возможности и возможности обеспечения качества продукции (PA), которые Kshana намеренно не предоставляет.
Четыре пакета датчиков в первоначально опубликованном виде (результаты)
Результаты#
Каждый сценарий сравнивает квантовый датчик с его классическим аналогом при отказе GNSS примерно на ~1,8 ч. Числа воспроизводимы (scenario + seed + version).
Что дают квантовые датчики, когда GNSS недоступна — clock-holdover · seed 42 · нарисовано на движке 0.40.0, и каждый рисунок выше при каждой сборке заново проверяется по текущему движку с помощью tests/published_figures_still_reproduce.rs · SVG
Преимущество зависит от длительности отказа и вибрации, с явной точкой безубыточности, где выигрывают классические решения, — показано честно по шкале технологической готовности (показатели оптических часов — целевые для наземных демонстраторов; ни одни стронциевые оптические часы не летали):
Точка пересечения устойчивости квантовых и классических решений — шкала TRL для holdover часов (сверху) · карта инерциального преимущества с контуром безубыточности (снизу). Воспроизводится через cargo run --release --bin crossover_study.
Ошибка положения при счислении пути во время отказа GNSS: квантовый датчик (синий) остаётся ровно вблизи допуска; классический датчик (красный) расходится до десятков километров. Построено Kshana из scenarios/imu-deadreckoning.toml.
| Пакет | Сценарий | Квантовый | Классический |
|---|---|---|---|
| 1 — Holdover часов | clock-holdover.toml (допуск 20 нс) |
оптические часы выдерживают весь отказ | CSAC нарушает допуск в середине отказа |
| 2 — Инерциальное счисление пути | imu-deadreckoning.toml (допуск 100 м) |
холодно-атомный: ~41 м, выдерживает весь отказ | навигационного класса: нарушает за ~350 с → десятки км |
| 3 — Передача времени (оптическая межспутниковая линия) | timetransfer.toml |
оптическая: дальнометрия ~0,3 мм | РЧ (TWSTFT): дальнометрия ~150 мм |
| 4 — Гибридное объединение (завершающее) | hybrid-pnt.toml |
полное положение + время на весь отказ | по положению ограничено ~350 с |
Завершающий сценарий показывает тезис об объединении: оптическая межспутниковая передача времени удерживает в синхронизме даже классические часы, оставляя инерциальный датчик слабым звеном классического комплекта — то есть квантовая инерциальная система и оптический хронометраж вместе.
Holdover часов при отказе GNSS: оптические часы (синий) остаются в пределах допуска 20 нс на всём выбеге; часы чипового масштаба (красный) нарушают его на полпути. Построено Kshana из scenarios/clock-holdover.toml.
Ещё один сценарий, orbit-gnss-challenged.toml, выводит доступность GNSS из орбитальной геометрии, а не из задаваемых вручную окон: космический аппарат внутри оболочки GNSS распространяется относительно GPS-подобной орбитальной группировки Уокера, а число видимых спутников (линия визирования, затмение Землёй, маска возвышения) задаёт состояние определения положения на каждом шаге. За сутки пользователь находится в режиме определения положения лишь ~59 % времени; квантовые часы удерживают решение по времени 5 нс через каждый перерыв (доступность 1.0), часы чипового масштаба — только ~0.83.
Ошибка времени за сутки при доступности GNSS, выведенной из орбитальной геометрии: число видимых спутников (линия визирования, затмение Землёй, маска возвышения) задаёт состояние определения положения на каждом шаге, поэтому часы должны выдержать каждый перерыв — оптические часы удерживают допуск 5 нс, тогда как часы чипового масштаба нарушают его. Построено Kshana из scenarios/orbit-gnss-challenged.toml.
Орбитальную группировку можно также задать реальными двухстрочными наборами элементов (TLE). Полный TLE (строка 1 + строка 2) распространяется по полной модели SGP4/SDP4 — включая атмосферное торможение, лунно-солнечные члены дальнего космоса и резонансные члены 12 ч / 24 ч, существенные для орбит ГНСС ~12 ч, — проверенной по официальным векторам AIAA 2006-6753 с наихудшим расхождением ≈ 4 мм. scenarios/orbit-sgp4-gps.toml содержит реальный снимок Celestrak gps-ops действующей орбитальной группировки GPS (2021-07-28, 30 спутников) и требует корректных контрольных сумм TLE — двухстрочные наборы элементов являются открытыми данными из каталога Космических сил США / 18-й эскадрильи космической обороны, перераспространяемыми Celestrak (д-р Т. С. Келсо, celestrak.org); обновление — через scripts/fetch_tles.sh. Блок только со строкой 2 сохраняет аналитическое двухтельное распространение (scenarios/orbit-real-tle.toml); обе формы можно смешивать в одной орбитальной группировке. Орбитальную группировку можно столь же успешно построить из блока записей вещательных эфемерид GPS RINEX-3 — формата, который декодирует приёмник, — распространяемых по пользовательскому алгоритму IS-GPS-200 и пропускаемых через ту же геометрию (scenarios/orbit-rinex.toml).
Что это и чем не является, полностью
Что это и чем не является#
Это: детерминированный движок с малым числом зависимостей, охватывающий весь стек PNT — орбитальную геометрию, инерциальную навигацию, объединение GNSS/INS, целостность, часы и синхронизацию времени. Он запускает сценарий (часто отказ GNSS), прогоняет калиброванные модели ошибок датчиков через подходящий оценщик и оценивает результат по эксплуатационным показателям качества, выдавая воспроизводимый результат JSON (JavaScript Object Notation) и диаграмму SVG из библиотеки Rust, интерфейса командной строки (CLI), расширения Python, браузерного модуля WebAssembly, сервера Model Context Protocol (MCP) для ИИ-агентов или плагина для IDE JetBrains (интегрированная среда разработки).
Это не: лётная аппаратура, проект квантовой полезной нагрузки, полноценный приёмник сигналов GNSS, имитатор радиочастотного (РЧ) сигнала или стенд hardware-in-the-loop, а также не авионический продукт с сертификацией — и он не заменяет MATLAB/Simulink, STK (Systems Tool Kit) или Orekit; он работает рядом с ними и обменивается с ними файлами. Точность квантовой аппаратуры берётся из опубликованных моделей ошибок, а не из этого инструмента. Детальная зрелость каждой возможности описана в docs/CAPABILITY.md.
Это пока не: полноценный физический движок атомной интерферометрии (большинство квантовых датчиков используют опубликованные коэффициенты Аллана/шумового бюджета; у акселерометра CAI (холодно-атомный интерферометр) есть слой из первых принципов — фаза Маха — Цендера, проекционный шум, спад контраста и связь с вибрацией, плюс систематики Кориолиса и светового сдвига, — но систематики волнового фронта и разрешение неоднозначности полос остаются слоем дорожной карты P2 (фаза 2 дорожной карты, слой квантовой физики), см. ROADMAP.md и docs/QUANTUM-MODELS.md); приёмник GNSS с сертификацией или аппаратный (он решает одноточечное определение положения PVT (положение, скорость и время) по реальным кодовым наблюдениям RINEX (Receiver Independent Exchange Format) — проверено на реальных данных IGS (Международная служба GNSS) — а его слой IQ (kshana iq, с 0.31.0) захватывает и сопровождает записанные или сгенерированные отсчёты основной полосы программно, как анализирующий приёмник: он не управляет радиооборудованием и ничего не передаёт, не является приёмником с сертификацией и не выполняет позиционирование по фазе несущей (RTK или PPP)); или полноценный набор для проектирования миссии (в нём есть строительные блоки Ламберта / porkchop / манёвров / определения орбиты, но это слой моделирования характеристик над GMAT (General Mission Analysis Tool)/Orekit, а не замена). Этот объём сознательно ограничен. Если вам нужны бюджеты ошибок холодно-атомного интерферометра из первых принципов (например, класса CARIOQA-PMP — Cold Atom Rubidium Interferometry in Orbit for Quantum Accelerometry, Pathfinder Mission Preparation — или валидация в стиле X-37B), см. дорожную карту P2 и свяжитесь с нами для сотрудничества.
Навигация на низкой околоземной орбите#
Спутники на низкой околоземной орбите (LEO) пролетают быстро и громко. Вид leo-pnt-chain прослеживает одну систему на каждом этапе: сигнал, пролёт и его линию связи, навигационное сообщение и объединённое определение положения, скорости и времени (PVT) и точное позиционирование по одиночной точке (PPP). Каждый этап передаёт свои числа следующему. См. docs/LEO-PNT.md.
Все виды сценариев по семействам#
Виды сценариев движка, разложенные по семействам. У каждого семейства есть страница с одной записью на каждый вид (описание и поля движка, пример команды, основные числа из прогона, строки матрицы верификации, которые его называют, и диаграмма, которую пишет сам движок) и контактный лист этих диаграмм; docs/KINDS.md индексирует их все. Таблица пишется с помощью tools/gen_readme_blocks.py, а страницы — с помощью tools/gen_kinds_index.py, и оба завершаются ошибкой, если в движке появляется вид, который не назван ни одним семейством.
| Семейство | На какой вопрос отвечает | Виды | Запустить один |
|---|---|---|---|
| Часы, синхронизация времени и holdover | как долго часы держат время без GNSS и как система синхронизации времени держится относительно своих масок | clock, sweep, sweep-nd, telecom-timing, slot-timing, timetransfer, time-transfer-budget, holdover-test, quantum-time-transfer |
kshana scenarios/clock-holdover.toml |
| Инерциальные, комплексные и квантовые датчики | счисление пути и объединение датчиков при отказе GNSS, с классическими и квантовыми датчиками | 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 при недоступности GPS | навигация по гравитации, рельефу и другим полям, когда GNSS недоступна | gravity-map, terrain-nav, terrain-slam, combined-altpnt, conflict-resilience |
kshana scenarios/combined-altpnt.toml |
| Орбитальные группировки, покрытие и геометрия | где находятся спутники, кто их видит и какова геометрия, вокруг Земли, Луны или Марса | orbit, ephemeris, constellation-design, solar-system, body-pnt, mars-pnt, passes |
kshana scenarios/orbit-gnss-challenged.toml |
| Измерения GNSS, позиционирование и целостность | псевдодальности, определения положения, уровни защиты и космическая среда | integrity, gnss-sim, pvt, araim-reference-check, space-weather, realtime-frame-eop |
kshana scenarios/integrity-raim.toml |
| Подавление, спуфинг и спектр | как помеха доходит до приёмника и обнаруживается ли она | jamming, spoof, spoof-detect, tracking-loop, spectrum, impairment-eval |
kshana scenarios/jamming-demo.toml |
| Навигация на низкой околоземной орбите | пролёт, линия связи, навигационное сообщение и объединённое определение положения, этап за этапом | leo-signal, leo-pass, leo-navmsg, leo-pvt, leo-ppp, ntn-positioning, leo-pnt-chain |
kshana scenarios/leo-pnt-end-to-end.toml |
| Лунное пространство и цислунное пространство | навигация, время, системы отсчёта и геодезия на Луне | 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 |
| Навигация космических пользователей | сигналы GNSS для космических аппаратов над орбитами GNSS, вокруг них и за ними | gnss-ssv |
kshana scenarios/gnss-ssv-shell.toml |
| Оптический PNT | оптические линии через атмосферу и показатели качества для оптики плюс РЧ | optical-atmosphere, hybrid-optical-rf |
kshana scenarios/optical-atmosphere-network.toml |
| Анализ миссий, линии связи и космические операции | запуск, выведение, вход в атмосферу, ориентация, линии связи, планирование сеансов связи и форматы файлов | 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 |
| Нити миссии | бюджет ошибок навигации и времени цепочки фаз от запуска до входа в атмосферу | mission-thread |
kshana scenarios/mission-thread-artemis-class.toml |
| Кампании | связанные миссии, перебор и ансамбли, построенные из других видов | campaign |
kshana scenarios/campaign-jam-spoof-holdover-integrity.toml |
Все команды#
kshana <scenario.toml> запускает сценарий; любая другая команда является подкомандой, а kshana --help выводит справку по использованию всех их. Команды: --study, --validate, kinds, example, receiver-trust (с live и 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 и skyline. docs/COMMANDS.md описывает назначение каждой, проверенный пример и её страницу документации.
Все поверхности#
Один движок, одни и те же результаты везде: командная строка, библиотека Rust, Python, JavaScript и WebAssembly, сервер MCP с его командами плагина и навыками, Kshana Studio (каждая страница работает в браузере, без установки, ничего не загружается), интеграции ROS 2, Signal K, OpenCPN, GNSS-SDR и gnss_lib_py, наборы развёртывания systemd, Docker и Grafana, а также плагин JetBrains. docs/ALL-SURFACES.md перечисляет их с указанием, как получить каждый, и названиями всех команд плагина, навыков и страниц Studio; docs/SURFACES.md указывает для каждой команды и вида, какая поверхность его поддерживает и какие нет, с причиной.
Как работает прогон#
Сценарий — это файл TOML (Tom's Obvious, Minimal Language): вид, начальное значение (seed) и параметры. Движок запускает его и записывает рядом результат, диаграмму и отчёт, а также запрошенные вами экспорты.
Этот встроенный сценарий длится 2 ч: 10 мин с GNSS, затем около 1,8 ч при недоступном GNSS. Он спрашивает, как долго стронциевые оптические часы на решётке и атомные часы чипового масштаба (CSAC) удерживают время с точностью до 20 нс.
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
Оптические часы удерживают бюджет 20 нс весь отказ длительностью 6600 с; CSAC удерживает его 2610 с и находится в пределах бюджета 95,6 % прогона против 100 % у оптических часов. kshana example перечисляет все встроенные сценарии.
Миссии#
Десять отраслей задают десять разных вопросов одному и тому же движку. Для каждой есть встроенные сценарии, с которых можно начать.
| Отрасль | С чего начать |
|---|---|
| Оборона и безопасность | campaign-jam-spoof-holdover-integrity, spoof-meaconing |
| Космос, околоземная орбита | orbit-gnss-challenged, leo-pnt-end-to-end |
| Луна, Марс и дальний космос | lunar-relay-constellation, mars-orbit-pnt |
| Авиация и беспилотники | small-uas-jammed-nav, araim-gps-galileo |
| Морские | maritime-strait-jamming, maritime-port-approach-coast |
| Дороги | automotive-urban-canyon |
| Железные дороги | rail-tunnel-coast |
| Критическая инфраструктура и синхронизация времени | clock-holdover, clock-ensemble |
| Телеком и 5G (пятое поколение мобильных сетей) | telecom-prtc-holdover-24h, leo-vertical-5g-network-timing |
| Наука и исследования | sweep-clock-stability, quantum-pnt-demonstrator.suite |
Вопрос, который задаёт каждая отрасль
| Отрасль | Вопрос, который она задаёт | С чего начать |
|---|---|---|
| Оборона и безопасность | Как долго наши навигация и синхронизация времени остаются надёжными при подавлении и спуфинге и какие уровни удерживают нас в допуске? | campaign-jam-spoof-holdover-integrity, spoof-meaconing |
| Космос: околоземная орбита | Видит ли мой космический аппарат достаточно навигационных спутников, как долго его часы держат время между определениями положения и что добавил бы навигационный слой на низкой орбите? | orbit-gnss-challenged, leo-pnt-end-to-end |
| Луна и дальний космос | Получит ли посадочный модуль, ровер или орбитальный аппарат на Луне, на Марсе или дальше надёжное положение и время? | lunar-relay-constellation, mars-orbit-pnt |
| Авиация и беспилотники | После того как глушитель отнимает GNSS, как долго мой беспилотный авиационный комплекс (БАК) остаётся в бюджете положения и доступна ли целостность на моём маршруте? | small-uas-jammed-nav, araim-gps-galileo |
| Морские | Как далеко над водой достаёт глушитель, будет ли пойман принудительный сдвиг положения и как долго судно может идти по счислению в порт? | maritime-strait-jamming, maritime-spoof-position-push, maritime-port-approach-coast |
| Дороги и автомобильный транспорт | Насколько уходит автомобиль под путепроводом или мимо придорожного глушителя? | automotive-urban-canyon |
| Железные дороги | Через сколько секунд после въезда в тоннель поезд всё ещё может определить, на каком он пути? | rail-tunnel-coast |
| Критическая инфраструктура и синхронизация времени | Если время GNSS потеряно или подменено, как долго энергосеть, торговая площадка или центр обработки данных сохраняют прослеживаемое время? | clock-holdover, clock-ensemble |
| Телеком и 5G | Если опорное время GNSS потеряно, остаются ли часы моей сети в пределах масок ITU-T и как долго? | telecom-prtc-holdover-24h, leo-vertical-5g-network-timing |
| Наука и исследования | Могу ли я воспроизвести, расширить и процитировать результат PNT с точностью до начального значения (seed)? | sweep-clock-stability, quantum-pnt-demonstrator.suite |
Доказательства#
SGP4 проверен по всем 666 эталонным векторам AIAA 2006-6753, наихудшая ошибка положения 4,12 мм
176 из 401 возможностей проверены по независимым внешним оракулам; 221 честно помечены как смоделированные. Каждая строка матрицы верификации называет возможность, оракул, по которому она проверяется, тест, выполняющий проверку, и следующую из этого метку. Непрерывная интеграция (CI) не позволяет назвать возможность VALIDATED без независимого внешнего оракула.
| Метка | Строки | Значение |
|---|---|---|
| VALIDATED | 176 | независимый внешний оракул согласуется: реальные данные, независимая реализация или опубликованные эталонные векторы |
| MODELLED | 221 | проверено по аналитической истине или самосогласованности моделирования, и об этом сказано прямо |
| PARTNER | 4 | принадлежит аппаратному партнёру; у Kshana нет оракула для этого |
Несколько проверок: все 666 векторов AIAA (American Institute of Aeronautics and Astronautics, Американский институт аэронавтики и астронавтики) 2006-6753 для SGP4 (Simplified General Perturbations 4) с точностью до 4,12 мм; силовая модель Cowell с точностью до 0,08 м относительно Orekit 12,2; Galileo с точностью до 0,61 м и Swarm-A с точностью до 0,10 м относительно реальных точных эфемерид Европейского космического агентства (ESA). Тесты поддерживают около 95 % покрытия строк в src/ с порогом 85 % в CI. Реестр — это docs/VERIFICATION-MATRIX.md, он генерируется из src/verification.rs; там же полная матрица из 401 строки, а в docs/MODELLED-RATIONALE.md объяснено, почему у каждой смоделированной строки нет внешнего оракула.
Как работает валидация, подобранная таблица основных результатов и рисунки доказательств
Валидация, воспроизводимость и честность#
- Каждый шумовой член откалиброван по опубликованному, процитированному значению и проверен по стандартному соотношению (девиация Аллана для часов; рост ошибки счисления пути по Гроувсу для инерциальных систем; пересчёт времени в дальность для передачи времени). Статус каждого члена отслеживается в
docs/VALIDATION.mdкакvalidatedилиnot modeled— ничто не выдаётся за проверенное, если это не так. - Воспроизводимо по построению:
scenario + seed + engine version → identical bits.scripts/check-reproducible.shобеспечивает это; квантовые и классические прогоны используют независимые начальные значения (seed), поэтому их шум не коррелирован. - Зрелость указана честно: показатели оптических часов и оптических линий — это результаты целевых значений / наземных демонстраторов, а не лётные.
Метка доказательств на каждом значении#
Каждое значение и каждая таблица, которые записывает прогон, сообщают, насколько им можно доверять и на какие строки реестра они опираются. В результирующем JSON есть ключ evidence, в SVG-диаграмме — строка под графиком (и элемент <metadata id="kshana-evidence">), а в CSV-таблице — строки комментариев # evidence: в начале (читаются с comment='#'). В ней указан уровень — VALIDATED, MODELLED или PARTNER — и идентификаторы (VM- и восемь шестнадцатеричных цифр) строк матрицы верификации, задействованных прогоном. Уровень определяется самой слабой из этих строк, поэтому прогон, опирающийся на одну смоделированную строку, получает метку MODELLED, сколько бы проверенных строк ни находилось рядом; метка никогда не заявляет больше, чем реестр. Строки, статусы и идентификаторы считываются из матрицы, а не вводятся вручную (docs/VERIFICATION-MATRIX.md, docs/SCHEMA.md), и tests/evidence_labels_doc_sync.rs завершается ошибкой, если у значения нет метки или метка расходится с матрицей.
Валидация вкратце#
Каждая строка обеспечивается именованным тестом в CI. Эта таблица — подборка избранного; полная машинно проверяемая матрица содержит 401 строк — 176 VALIDATED, 221 MODELLED, 4 PARTNER (src/verification.rs), а полные доказательства (и то, что честно ещё не проверено) приведены в docs/VALIDATION.md и в артефакте kshana-validation-summary.html каждого выпуска (создаётся командой cargo run --bin validation_report, с аттестацией SLSA — Supply-chain Levels for Software Artifacts, уровни защиты цепочки поставок программного обеспечения).
Столбец Статус указывает вид доказательства в соответствии с лестницей валидации выше: VALIDATED = проверено по независимому внешнему оракулу (реальные данные, независимая библиотека или опубликованные эталонные векторы); MODELLED = проверено по аналитической истине или самосогласованности моделирования (без независимого внешнего набора данных). VALIDATED описывает способ проверки, а не прохождение/непрохождение — честное расхождение с реальным внешним оракулом остаётся VALIDATED, тогда как сравнение, которое ни одна строка матрицы не называет оракулом (подгонка LRO — Lunar Reconnaissance Orbiter — выше), показано как MODELLED. Строки CI — это процессные ограждения, а не показатели качества. Несколько островков реальных данных (измеренные цезиевые часы, Stable32 PHASE.DAT и проверки OPS-SAT/ICGEM, где исходные данные не имеют лицензии на распространение) завязаны на данные: тест выводит уведомление о пропуске и остаётся зелёным, когда входных данных нет, а публичные эталонные числа закоммичены в tests/fixtures/. Воспроизведите исходные данные соответствующим scripts/fetch_*.sh.
| Статус | Возможность | Согласие | Эталон / оракул |
|---|---|---|---|
| VALIDATED | Распространение SGP4/SDP4 | 666/666 векторов, наихудшее 4,12 мм | AIAA 2006-6753 (Vallado tcppver.out) + прямое сравнение с независимым крейтом sgp4 |
| VALIDATED | Системы отсчёта — нутация IAU 2000A/B, цепочка CIO IAU 2006/2000A, ERA | с точностью до бита (X,Y до 1e-14, s до 1e-18, ERA до 1e-12) | ERFA/SOFA eraXys06a · eraC2ixys · eraEra00 · eraNut00a/b |
| MODELLED | GCRS→ITRS относительно независимого движка SPICE | максимум 0.028″ → ≤ 0,86 м на земле, ≤ 3,6 м на орбите GNSS | ANISE (чистая реализация NAIF/SPICE на Rust), те же параметры ориентации Земли IERS finals2000A, 8 эпох 2020–2023 (сравнение с этим эталоном; ни одна строка матрицы верификации не называет его внешним оракулом, поэтому он не помечен как VALIDATED) |
| MODELLED | Геопотенциал EGM2008 (степень/порядок 70) | ускорение = ∇V с точностью до < 1e-6; зональное схлопывание до проверенного J2 | Коэффициенты NGA EGM2008 + тождество для аналитического ∇V |
| VALIDATED | Синтез гравитационных функционалов (карта для навигации по гравитации / без GNSS) | GRS80 Сомильяна + γ_e/γ_p до 3.5e-12; карта возмущений по реальному EGM2008 физически правдоподобна (СКО ≈ 26 мГал, d/o 70) | GRS80 (Мориц 1980, IAG — Международная ассоциация геодезии) нормальная сила тяжести Сомильяны + реальный ICGEM EGM2008 (tests/icgem_gravity_reference.rs) |
| VALIDATED | Оценщики Аллана (ADEV/MDEV/TDEV/HDEV) + доверительные полосы | воспроизводят эталонные девиации; полосы χ² совпадают | NIST SP 1065 (Райли), таблица 31/32 на 1000 точек |
| VALIDATED | Оценщики Аллана на реальных измеренных цезиевых часах | OADEV/OHDEV до 1e-3 (наблюдаемо ≤ 3e-5), 16 коэффициентов усреднения | Stable32 на реальной паре Cs 5071A и водородного мазера, 556 990 точек (tests/cs5071a_reference.rs, завязано на данные) |
| VALIDATED | Оценщики Аллана на каноническом Stable32 PHASE.DAT | OADEV/MDEV/TDEV до 1e-3 (наблюдаемо ≤ 5e-5), 139 коэффициентов усреднения | Эталонные девиации Stable32 для PHASE.DAT (tests/phasedat_reference.rs, завязано на данные) |
| MODELLED | Модель ошибок ИДС — ARW / VRW / нестабильность смещения | восстановлено до < 5 % (нестабильность смещения < 15 %) | Спецификация Analog Devices ADIS16465; эталонный профиль NaveGo |
| VALIDATED | Численный распространитель Коуэлла + модель сил (консервативные уровни) | наихудшая ошибка положения 0,08 м за 24 ч, 278 эпох (LEO + GTO) | Orekit 12,2 NumericalPropagator/DormandPrince853 (CS GROUP), tests/numerical_cowell_propagator_reference.rs |
| MODELLED | Уровень торможения Коуэлла + абсолютные исходные данные по эфемеридам Солнца и Луны и плотности | уровень торможения охарактеризован ≈ 333 м / 24 ч; невозмущённая орбита совпадает с кеплеровой в универсальных переменных до долей метра, энергия/момент ~1e-9 | встроенные эфемериды низкой точности + аналитический Кеплер |
| MODELLED | Ламберт · Циолковский · porkchop | круговой обход по двухтельной истине; ΔV < 0.01 % | Иззо 2015 · уравнение ракеты · аналитический нижний предел Гомана |
| MODELLED | Определение орбиты (пакетный Гаусс — Ньютон) | до долей метра / мм·с⁻¹ без шума; ~2 м при шумовом пороге 5 м | двухтельная + J2 на дуге RK4 |
| MODELLED | Подгонка модели сил относительно точных эфемерид Galileo (полная дуга) | 0,61 м СКО в 3D, 24 ч, d/o-70, только силы | Конечная орбита ESA/ESOC ESA0MGNFIN (E11), реальные параметры ориентации Земли finals2000A (сравнение с этим эталоном; ни одна строка матрицы верификации не называет его внешним оракулом, поэтому он не помечен как VALIDATED) |
| MODELLED | Подгонка модели сил относительно точных эфемерид Swarm-A (редуцированно-динамическая) | 0,10 м СКО в 3D (граница эмпирического уровня, не мера) | Точная орбита ESA SW_OPER_SP3ACOM_2_ (сравнение с этим эталоном; ни одна строка матрицы верификации не называет его внешним оракулом, поэтому он не помечен как VALIDATED) |
| MODELLED | Подгонка модели сил относительно лунного LRO (честное расхождение) | 6,67 м редуцированно-динамическая, выше цели 5 м | JPL Horizons LRO (NAIF −85) + GRAIL (Gravity Recovery and Interior Laboratory) GRGM660PRIM (сравнение с этим эталоном; ни одна строка матрицы верификации не называет его внешним оракулом, поэтому он не помечен как VALIDATED) |
| MODELLED | Определение орбиты в дальнем космосе у Марса (редуцированно-динамический SRIF) | ≈ 0,2 м Mars-LMO (показатель качества моделирования, не реальной миссии) | синтетическое определение орбиты в замкнутом контуре — проверка механизма оценивания |
| MODELLED | Центральная относительно Солнца динамика Марса относительно JPL DE440 | 137 м на дуге в 1 сутки (растёт с дугой = немоделируемые n тел) | JPL DE440 через ANISE (xval/anise-mars-od, завязано на ядро) (сравнение с этим эталоном; ни одна строка матрицы верификации не называет его внешним оракулом, поэтому он не помечен как VALIDATED) |
| VALIDATED | Одноточечное позиционирование относительно съёмочной координаты IGS (реальные наблюдения) | 5,7 м СКО в 3D / 1,1 м по горизонтали, двухчастотное безионосферное кодовое SPP | Съёмка станции IGS ABMF + вещательные эфемериды GPS, 2018-05-13 (tests/pvt_abmf.rs) |
| MODELLED | Тесносвязанный UKF GNSS/INS | 0,77 м СКО на 30-минутном пролёте LEO, включая отказ 120 с | выбег по модели сил, выведено вручную |
| MODELLED | Навигация по гравитационной карте в условиях отказа GPS | дрейф ИНС ~70 км → восстановлено ~145 м | целевой показатель ESA NAVISP Quantum Wayfarer |
| MODELLED | Навигация по рельефу (TERCOM/SITAN) | дрейф 70 км → < 500 м (порог разрешения сетки ~140 м) | SRTM .hgt DEM; внесённый вручную дрейф (проверка без круговой зависимости) |
| MODELLED | Главное поле IGRF-14 (степень/порядок 13) | полюс ~80,7° с. ш., диполь ~29,7 мкТл, физически правдоподобная полоса 22–67 мкТл | IAGA (Международная ассоциация геомагнетизма и аэрономии) igrf14coeffs.txt (полунормировка Шмидта) |
| MODELLED | Модуляция навигационного сигнала и слежение за кодом | собственный SSC BPSK = 2/(3·R_c); PSD единичной площади; дрожание C/A DLL до долей метра при 45 дБ-Гц | Замкнутые опорные значения SSC/PSD + формула теплового шума DLL по Каплану и Хегарти |
| MODELLED | Дифференциальный корректор гало/NRHO в CR3BP | STM = конечные разности; орбита замыкается до машинной точности; L2 9:2 NRHO ≈ 6,57 сут / периселений ≈ 3 250 км | проверка STM по конечным разностям + опубликованная южная NRHO L2 9:2 (≈ 6,56 сут / ≈ 3 370 км) — CR3BP, не реальные эфемериды Gateway |
| MODELLED | Целостность ARAIM при двух орбитальных группировках | режим отказа всей орбитальной группировки на реальных GPS + Galileo | Технический отчёт (TR) ARAIM ЕС / DO-316; Celestrak gps-ops 2021-07-28 (сравнение с этим эталоном; ни одна строка матрицы верификации не называет его внешним оракулом, поэтому он не помечен как VALIDATED) |
| VALIDATED | Геометрия GNSS / DOP (GDOP/PDOP/HDOP/VDOP/TDOP) | совпадение до 1e-6 относительно на 8 геометриях (от хорошо обусловленных до почти вырожденных) | gnss_lib_py 1.0.4 (Stanford NAV Lab) — независимая библиотека (tests/dop_reference.rs) |
| VALIDATED | Метрики оценки детекторов на основе ML (AUC/ROC/матрица ошибок/Pd-Pmd/precision/F1) | точное совпадение счётчиков + < 1e-9 на 5 наборах данных × 24 порогах | scikit-learn 1.9.0 (Pedregosa et al., JMLR — Journal of Machine Learning Research — 2011) — независимая библиотека (tests/eval_metrics_reference.rs) |
| VALIDATED | ROC AUC обнаружения аномалий на реальной телеметрии ESA OPS-SAT | AUC воспроизводит scikit-learn с точностью до < 1e-9; AUC детектора по числу пиков ≈ 0.85 на размеченной тестовой выборке | scikit-learn roc_auc_score на тестовой выборке OPSSAT-AD (Ruszczak et al. 2025, CC BY 4,0) — реальная телеметрия OPS-SAT (tests/opssat_ad_reference.rs) |
| VALIDATED | Численные ядра компромиссов квантовых решений (подгонка ADEV по NNLS · полосы согласованности χ² · Q часов по ван Лоану) | NNLS + Q точно; χ² < 5e-4 при рабочих степенях свободы ≥ 48 | scipy 1.17.1 — optimize.nnls / stats.chi2.ppf / linalg.expm (tests/scipy_reference.rs) |
| VALIDATED | Телекоммуникационные метрики блуждания MTIE / MDEV / TDEV (ITU-T G.810/G.823/G.8261/G.811 — рекомендации Сектора стандартизации электросвязи Международного союза электросвязи) | MTIE (9 коэффициентов усреднения, побитово точно) и MDEV + TDEV (8 коэффициентов, < 1e-9 относительно) на ряду NIST SP 1065 LCG (линейный конгруэнтный генератор) | allantools 2024,06 mtie / mdev / tdev — независимая библиотека (tests/mtie_reference.rs, tests/mdev_tdev_reference.rs) |
| VALIDATED | Методы исследований компромиссов MCDA — все четыре семейства решений, девять внешне проверенных агрегаторов (WSM · WPM · WASPAS · MOORA · COPRAS · TOPSIS · VIKOR · PROMETHEE II · ELECTRE I) плюс приоритетное взвешивание по парным сравнениям AHP | оценки / ранжирования / матрицы согласия воспроизведены до < 1e-9 | pymcdm + pyDecision (независимые сторонние библиотеки MCDA) + RI Саати (случайный индекс) / eig SciPy-LAPACK (tests/mcda_*_reference.rs) |
| VALIDATED | Огибающая доплеровского сдвига LEO по орбите и несущей | максимум Iridium в пределах 5 % от опубликованных ±36 кГц; Xona Pulsar X1 внутри опубликованных 32–34 кГц | Результаты испытаний RNTF LEO PNT; Leclère, Marathe & Reid, arXiv:2509,19551 (tests/leo_doppler_reference.rs) |
| MODELLED | Сходимость PPP с дополнением LEO | 7,4 → 4,8 / 3,2 / 2,7 / 2,3 мин при 60 / 96 / 192 / 288 спутниках LEO, монотонно; NEES фильтра внутри полосы χ² | тенденция сопоставлена с Li et al., J. Geod. 93:749 (2019) (9,6 → 7,0 / 3,2 / 2,1 / 1,3 мин); орбитальные группировки и шум не воспроизведены |
| MODELLED | Условный уровень защиты времени (ограниченная holdover необнаруженная ошибка времени при спуфинге) | композиция воспроизводит многошаговую ковариационную рекурсию clock_state; откалибровано на реальном записанном спуфинге |
Скаляры JammerTest 2024 (Zenodo 15911589) + замкнутые формы ван Лоана / CUSUM (examples/tpl_jammertest) |
| MODELLED | Оценка устойчивости PNT + нестабильность решений | 35 тестов по выведенным вручную оракулам; побайтово детерминированный артефакт исследования (фиксированное начальное значение) | Сопоставление с DHS RPCF v2.0 + замкнутые формы Дирихле / τ Кендалла / Hill-N2 — синтетические архитектуры, не сертификация |
| MODELLED | Исследование разрыва оптимизма для РЧ-нарушений (законы масштабирования + предиктор по схеме «один отложен») | значимость по перестановочному нулю; побайтово детерминированный артефакт (5 начальных значений) | синтетический корпус, основанный на параметрах, — метрики оценки VALIDATED относительно scikit-learn (выше); исследование MODELLED |
| CI | Воспроизводимость между платформами | побитово идентичный вход + эталоны формы на 3 ОС (операционных системах) | Матрица CI Linux / macOS / Windows, эталоны SHA-256 |
| CI | Покрытие тестами | ~95 % строк в src/ за исключением src/*_data.rs и src/main.rs, порог ≥ 85 % |
cargo-tarpaulin (движок LLVM) |
Как возможность получает свою метку — инвариант, обеспечиваемый CI: нет внешнего оракула ⇒ не может быть Validated · SVG
Сверху: каждая строка Validated подкреплена внешним набором данных по построению. Снизу: SGP4 совпадает с официальным эталоном в каждом режиме (наихудшее 4,12 мм). SVG · SVG
176 проверено · 221 смоделировано · 4 у партнёра — SVG
Области возможностей#
Каждая возможность публичной карты по областям с её меткой в реестре. Таблица областей пишется с помощью tools/gen_readme_blocks.py из web/capabilities.json, того же файла, который читает карта всего в Studio.
Полная таблица, область за областью, со всеми возможностями и их метками — docs/CAPABILITY-DOMAINS.md.
Установка#
Одна строка устанавливает инструмент командной строки: cargo install kshana. Каждый канал поставляет v0.40.0 из одного и того же помеченного коммита.
| Канал | Установка | Руководство |
|---|---|---|
| Попробовать в браузере | откройте https://kshana.dev | Руководство по Studio |
| Командная строка (Rust) | cargo install kshana |
Использование командной строки |
| Библиотека Rust | cargo add kshana |
Справочник по API на docs.rs |
| Python | pip install kshana |
Руководство по API Python |
| JavaScript и WebAssembly | npm install kshana |
Руководство по npm и WebAssembly |
| ИИ-ассистент (сервер MCP, cargo) | cargo install kshana-mcp |
Руководство по серверу MCP |
| Образ Docker | docker run --rm -i ghcr.io/ashfordeou/kshana-mcp |
Руководство по серверу MCP: Docker |
| Cursor (в один щелчок) | Добавить в Cursor (npx) · Добавить в Cursor (Docker) · npx -y kshana-mcp@0.40.0 |
Все фрагменты установки MCP |
| VS Code (в один щелчок) | Установить в VS Code (npx) · Установить в VS Code (Docker) · npx -y kshana-mcp@0.40.0 |
Все фрагменты установки MCP |
| npx | npx -y kshana-mcp@0.40.0 |
Все фрагменты установки MCP |
| uvx / pipx | uvx kshana-mcp==0.40.0 |
Все фрагменты установки MCP |
| Homebrew | brew install ashfordeOU/tap/kshana-mcp |
Все фрагменты установки MCP |
| Scoop | scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket && scoop install kshana-mcp |
Все фрагменты установки MCP |
| winget | winget install AshfordeOU.KshanaMcp |
Все фрагменты установки MCP |
| Готовый двоичный файл | скачайте kshana-mcp-<target> из выпуска и сверьте его с SHA256SUMS | Все фрагменты установки MCP |
| Официальный реестр MCP | найдите io.github.ashfordeOU/kshana-mcp | Все фрагменты установки MCP |
| Удалённый (потоковый HTTP), самостоятельно размещаемый | kshana-mcp --http 127.0.0.1:8080 |
Руководство по самостоятельному размещению |
| Плагин для IDE JetBrains | Settings → Plugins → Marketplace → найдите «Kshana» (идентификатор плагина dev.kshana.ide) | Руководство по плагину |
| Плагин Signal K | npm install signalk-kshana-trust |
Руководство по плагину Signal K |
| Плагин OpenCPN | скачайте архив tar плагина из выпуска | Заявка в каталог OpenCPN |
| Панель Grafana | импортируйте kshana-grafana-*.json из выпуска | Исходный код панели |
| Образ эталонной сборки | docker pull ghcr.io/ashfordeou/kshana-reference-build |
Морские интеграции |
Kshana в JetBrains Marketplace Собирается с Rust 1,88 или новее, rust-version в Cargo.toml
MCP — это Model Context Protocol. Зафиксируйте выпуск с помощью cargo install kshana --version 0.40.0, pip install kshana==0.40.0 или npm install kshana@0.40.0. Сборка из исходного кода описана в Install and build в разделе Reference.
Запуск сценария из Python и из 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
Помимо run, модуль предоставляет run_full (JSON, SVG и однострочную сводку сразу), run_typed, validate_toml, list_kinds / scenario_kinds и error_kind; см. docs/PYTHON_API.md.
Пакет npm — это весь движок, скомпилированный в WebAssembly. В Node.js передайте двоичный файл в initSync; в браузере его загружает await init() (см. 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));
Архитектура#
В центре находится один открытый движок, и его запускает каждая поверхность: командная строка, библиотека на Rust, Python, WebAssembly и Kshana Studio, сервер MCP, образ Docker и плагин для JetBrains. Один и тот же файл сценария даёт на каждой из них одни и те же байты. Kshana Pro надстраивается сверху как отдельное расширение, которое зависит от движка и никогда не создаёт его форк.
Внутри движка: предметные слои и реестр верификации
Один движок, много точек входа. Единое ядро на Rust (kshana) запускает каждый сценарий; доступ к нему даёт интерфейс командной строки, расширение для Python, модуль WebAssembly в браузере, сервер MCP для ИИ-агентов и плагин для IDE JetBrains — все они сходятся в одной диспетчеризации api::run_toml. Внутри пакеты датчиков подключаются к общему интерфейсу моделей ошибок; рядом с ними находятся слой систем отсчёта (прецессия–нутация IAU 2006/2000A и приведение GCRS↔ITRS на основе CIO), астродинамический/численный слой (аналитические SGP4/SDP4 и численный пропагатор Коуэлла с силовой моделью EGM2008/возмущений, проектирование манёвров и определение орбиты), слой целостности/ГНСС (RAIM/ARAIM, SBAS, область измерений, подавление, цислунное пространство), слой объединения данных / альтернативного PNT (оценщики ГНСС/ИНС и сопоставление с гравитационными, рельефными и магнитными картами), слой дальнего космоса и Луны (радиометрический Mars-PNT и лунный набор PNT; уровень доказательств каждой части указан в матрице — время LTC, VLBI, совместное определение орбиты и часов, реализация системы отсчёта, зона обслуживания, дифференциальный PNT, совместимость), слой анализа миссий (запуск / вход в атмосферу / покрытие / наведение / пролёт / бюджеты линий связи и космическая погода) и открытый слой исследований устойчивости и машинного обучения (оценка устойчивости RPCF, разрыв оптимизма при РЧ-искажениях и демонстратор PNT на квантовых технологиях), воспроизводимые артефакты которого опираются на проверенные ядра.
Рядом с ядром находятся два самостоятельных крейта, исключённых из рабочего пространства: mcp/kshana-mcp (сервер MCP, построенный на SDK rmcp редакции 2024) и xval/anise-frames (перекрёстная проверка систем координат ANISE/SPICE, которая подтягивает зависимости под MPL-2.0 (Mozilla Public License 2,0)). Список exclude в корневом Cargo.toml исключает их из графа зависимостей опубликованного крейта, из Cargo.lock, из проверки лицензий и из сборки по MSRV (минимально поддерживаемой версии Rust). Плагин для JetBrains (ide/jetbrains) — отдельный проект на Kotlin. Полный набор диаграмм см. в docs/ARCHITECTURE.md.
Готовые диаграммы (поток движка, карта модулей, распространение) находятся в docs/ARCHITECTURE.md.
Диаграммы#
Диаграммы — это исходники Mermaid в docs/diagrams/, отрисованные в SVG и PNG в docs/assets/diagrams/ (tools/render-diagram-chromium.sh <name> в Linux, два других скрипта render-diagram — в остальных системах); запись связывает каждый PNG с тем SVG, из которого он получен. Тесты фиксируют указанные в тексте количества. Графики в разделах выше строятся инструментами по прогонам движка; эти диаграммы показывают, как части складываются в целое.

Одна диспетчеризация, один движок, воспроизводимый вывод · SVG · исходник system-overview.mmd

Каждая поверхность работает на одном и том же движке · SVG · исходник surfaces.mmd

Внутренний цикл прогона · SVG · исходник engine-flow.mmd

От журнала приёмника к оценке доверия и к тому, что её использует · SVG · исходник trust-flow.mmd

От сценария до подписанного пакета; Kshana никогда не создаёт и не воспроизводит сигнал · SVG · исходник lab-round-trip.mmd

Как Studio работает локально · SVG · исходник studio-flow.mmd

Поток тестирования и выпуска: от локальных проверок до проверенного выпуска и пути только для сайта · SVG · исходник release-flow.mmd · docs/RELEASING.md

Где находится код · SVG · исходник module-map.mmd

Что где поставляется и что это проверяет · SVG · исходник distribution.mmd
ИИ-ассистент#
kshana-mcp — это сервер MCP: ваш ассистент запускает настоящий движок и читает его JSON, а не угадывает математику. Каждый из его 49 инструментов — тонкая обёртка над публичной функцией библиотеки kshana, поэтому логики моделирования в самом сервере нет.
Установка сервера MCP#
Носит консультативный характер: это не навигационное оборудование с утверждённым типом; ответственность за навигацию остаётся на операторе. Сервер работает на вашем компьютере; ничего не отправляется Ashforde OÜ.
Фрагмент с названиями сторонних ИИ-клиентов здесь опущен; он есть в README.md на GitHub.
| Канал | Команда или кнопка | Требуется | Закреплённая форма |
|---|---|---|---|
| Cursor (в один щелчок) | npx (Node) · Docker | Node или Docker | kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0 |
| VS Code (в один щелчок) | npx (Node) · Docker · Insiders (npx) | Node или 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+ с uv или 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 | формула для v0.40.0 |
| Scoop | scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket, затем scoop install kshana-mcp |
Scoop (Windows) | манифест для 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 |
| Готовый двоичный файл | страница выпуска: kshana-mcp (Linux x86-64), kshana-mcp-<target>[.exe], проверяется с помощью SHA256SUMS и gh attestation verify |
нет | v0.40.0 |
| Реестр MCP | io.github.ashfordeOU/kshana-mcp (находят клиенты, поддерживающие реестр) |
клиент, поддерживающий реестр | 0.40.0 |
| Удалённо (потоковый HTTP) | kshana-mcp --http 127.0.0.1:8080, с самостоятельным размещением: см. docs/deploy/mcp-http.md |
ваш собственный хост | v0.40.0 |
kshana-mcp на Glama, оценка качества его сервера MCP
Фрагмент с названиями сторонних ИИ-клиентов здесь опущен; он есть в README.md на GitHub.
Настройка для каждого клиента описана в docs/integrations.md. Сервер внесён в официальный реестр MCP под именем io.github.ashfordeOU/kshana-mcp.
49 инструментов
Сценарии и отчёты
| Инструмент | Что делает |
|---|---|
run_scenario |
Запустить сценарий из определения TOML (Tom's Obvious, Minimal Language) |
list_scenario_kinds |
92 встроенных видов сценариев с описаниями и обязательными/необязательными полями — чтобы агент мог составить корректный сценарий |
validate_scenario |
Предварительная проверка: разобрать TOML и определить его вид, не запуская |
list_example_scenarios |
Входящие в комплект эталонные сценарии в виде JSON |
get_example_scenario |
Текст TOML одного входящего в комплект эталонного сценария, байт в байт тот же, что и файл в scenarios/ |
report_scenario |
Запустить сценарий и вернуть его отчёт |
animate_scenario |
Запустить сценарий и вернуть его временной ряд в виде анимации |
sky_geometry |
Геометрия неба при линии горизонта, зависящей от азимута: видимые и скрытые спутники, DOP, ковариация в системе восток–север–вверх и эллипс горизонтальной ошибки; либо готовая линия горизонта с её происхождением |
Экспорт и совместимость
| Инструмент | Что делает |
|---|---|
list_export_formats |
Какие форматы совместимости применимы к сценарию (czml, kml, geojson, stk, sigmf), причина, если формат не применим, и спецификация, которой следует каждый writer |
export_interop |
Экспортировать сценарий как CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON, эфемериды STK (Systems Tool Kit) .e или SigMF (Signal Metadata |
import_route |
Записать маршрут GeoJSON LineString в сценарий, который выполняет полёт по путевым точкам (terrain-nav, terrain-slam, gravity-map, combined-altpnt), и вернуть новый TOML |
export_sp3 |
Экспортировать орбитальную группировку сценария orbit как прецизионные эфемериды SP3-c (Standard Product 3, редакция c) |
export_omm |
Экспортировать элементы сценария orbit как каталог CCSDS (Consultative Committee for Space Data Systems) 502.0-B-2 OMM (Orbit Mean-elements Message) |
export_oem |
Экспортировать ряд состояний сценария orbit как эфемериды CCSDS OEM (Orbit Ephemeris Message) 2,0 — положение в TEME (истинный экватор, средний равноденствие) и |
export_table_csv |
Запустить сценарий и вернуть его таблицу воспроизводимости в формате CSV (значения, разделённые запятыми) — побайтово стабильную таблицу, которую CLI (интерфейс командной строки) записывает как <scenario>.table.csv |
export_test_bench |
Движение транспортного средства и события сценария для лабораторного имитатора ГНСС (kshana bench-export) |
Доверие к приёмнику и судну
| Инструмент | Что делает |
|---|---|
assess_receiver_log |
Оценить доверие к журналу реального приёмника ГНСС (глобальной навигационной спутниковой системы) |
assess_vessel_stream |
Оценить ограниченный фрагмент NMEA 0183 (не более 2 МиБ и 20 000 эпох |
assess_vessel_log |
Журнал NMEA 0183 судна (не более 4 МиБ) как пакетный прогон, где TOML сессии задаёт ограничения судна |
create_evidence_pack |
Подписанный пакет доказательств для окна журнала судна (kshana receiver-trust evidence) |
attach_evidence_timestamp |
Привязать токен временной метки RFC 3161 (base64 от байтов .tsr) к пакету в памяти (kshana evidence attach-timestamp) |
verify_evidence_pack |
Проверить пакет (kshana evidence verify) |
generate_training_nmea |
Синтетический мостиковый NMEA 0183 для обучения экипажа из TOML nmea-scenario (подавление, увод позиции, спуфинг времени, задержка повтора) с журналом инструктора (kshana-nmea-training/1) |
build_interference_map |
Карта помех ГНСС по сообщениям о положении ADS-B или AIS в виде текста CSV (не более 4 МиБ) |
route_exposure |
Доля длины маршрута в ячейках со статусом «degraded», «не degraded», «не оценено» и «не наблюдалось» одной или нескольких карт помех, при необходимости в пределах диапазона дат |
trust_telemetry |
Поток доверия (строки JSON) или результат receiver-trust, представленный как текст Prometheus, строки syslog CEF или LEEF либо полезная нагрузка OTLP JSON, с кодировщиками kshana trust-telemetry |
jammertest_import |
Прочитать опубликованный каталог испытаний и план передач Jammertest (NPRA/jammertest-plan, MIT) как истину по расписанию (kshana jammertest import): слоты одной области испытаний становятся событиями доверия к приёмнику с идентификатором каталога и годом в каждой метке. Это плановые слоты, а не записанное время в эфире; ни одно контактное поле плана не читается. MODELLED. См. docs/JAMMERTEST.md. |
jammertest_score |
Оценить журнал приёмника по этому расписанию (kshana jammertest score): по каждому испытанию — задержку обнаружения, пропущенные тревоги и время восстановления, а также ложные тревоги вне всех слотов. Текстовые журналы — как log, двоичные (ubx, sbf) — как log_base64. Для подписанного пакета нужен ключ: командная строка. Только консультативно; MODELLED. |
fit_imu_log |
Параметры акселерометра и гироскопа сценариев hybrid и fusion, подогнанные по стационарному журналу IMU (CSV или EuRoC) через девиацию Аллана, с готовой для вставки таблицей [accel_classical] и SHA-256 журнала (kshana imu-fit). На входе текст, на выходе JSON; MODELLED. |
IQ ГНСС (файлы рабочего каталога; в режиме HTTP отключено)
| Инструмент | Что делает |
|---|---|
iq_signals |
Настройка слоя IQ ГНСС |
iq_info |
Описать одну запись IQ (синфазная и квадратурная составляющие) в рабочем каталоге, не обрабатывая её |
iq_scene |
Сформировать многоспутниковую сцену IQ ГНСС в рабочем каталоге (kshana iq scene) |
iq_acquire |
Захват по БПФ (быстрому преобразованию Фурье) одного или нескольких PRN (псевдослучайных кодов) по записи (kshana iq acquire), при необходимости с предварительными каскадами входной части |
iq_track |
Захватить, затем отслеживать банком контуров DLL/PLL/FLL (контуры слежения за задержкой, фазой и частотой) (kshana iq track), с контурами из `kshana.loop-desig |
iq_frontend |
Применить ЦОС (цифровую обработку сигналов) входной части приёмника и подавления помех |
iq_sweep |
Воспроизвести одну запись IQ в рабочем каталоге при нескольких конструкциях контуров слежения (kshana iq sweep) |
iq_monitor |
Запустить мониторы обнаружения помех и спуфинга по записи IQ в рабочем каталоге (kshana iq monitor) |
iq_labfit |
Подогнать модель потери захвата контуром слежения к лабораторным прогонам (kshana iq labfit) по сценарию iq-labfit, журналы которого переданы в тексте (text или base64 |
iq_test_conditions |
Проверить файл kshana.test-conditions/1, переданный как текст, и вернуть разрешённые условия с их хешем |
iq_campaign |
Запустить кампанию лабораторного воспроизведения (kshana iq campaign) |
iq_campaign_status |
Ход выполнения выходной папки кампании |
Сопоставление compliance
| Инструмент | Что делает |
|---|---|
compliance_report |
Сопоставление с публичными рамками, заполненное по документам результатов, переданным как текст (kshana compliance-report) |
compliance_mapping |
Статические таблицы сопоставления (или, с sources, исходные документы, на которые они ссылаются, с версиями и URL) в виде Markdown, начинающиеся с того же заявления |
list_standards_packs |
Стандартные пакеты (kshana standards-pack list): оценённые наборы сценариев для тестовых профилей рамочного документа DHS Resilient PNT, IMO MSC.1/Circ.1575 и ICAO Doc 9849 Appendix F |
run_standards_pack |
Один пакет, прогнанный против порогов, заявленных до прогона: каждый тест — MET, NOT MET или NEEDS INPUT; MODELLED, не оценивает ни один продукт |
lunanet_afs_check |
Дополненный прямой сигнал LunaNet, проверенный по LNIS V5 AD1 Volume A (LSIS-AFS V1.0): коды по печатным таблицам либо поток символов по формату кадра; LDPC и CRC-24Q подкадров с 2 по 4 не проверяются |
create_round_trip_pack |
Подписанный пакет лабораторного цикла: сценарий, документ kshana.test-conditions/1, журнал приёмника и оценка, связанные хешем |
Бенчмарк
| Инструмент | Что делает |
|---|---|
score_benchmark |
Заявка kshana-bench, оцененная по файлу истины, оба в виде текста JSON (kshana bench score, bench/SPEC.md): файл результата с версией спецификации, разбиением, хешами входных данных и метриками задачи. MODELLED; описывает журнал или корпус, а не продукт. |
render_leaderboard |
Файлы результатов kshana-bench, представленные как статическая страница таблицы лидеров (текст HTML), каждый предварительно проверяется. |
Редакции#
Весь движок бесплатен. Kshana Pro и индивидуальные исследования предназначены для программ, которым нужно больше, и каждый платный путь начинается с сообщения: цен здесь нет.
| Бесплатно | Kshana Pro | Индивидуальное исследование | |
|---|---|---|---|
| Что это | весь открытый движок, все 92 видов сценариев, без ограничения функций | проприетарное расширение того же движка, по договору | исследование устойчивости PNT вашей системы уровня MODELLED, выполненное для вас |
| Лицензия | AGPL-3.0 (GNU Affero General Public License, версия 3) или коммерческая лицензия | проприетарное | договор |
| Как начать | установите или откройте kshana.dev | запросить оценочную версию Pro | заказать исследование |
Что такое Pro, словами docs/PRO.md:
Строгое надмножество открытого Kshana. Pro зависит от открытого движка как от библиотеки и никогда не создаёт его форк. Каждый вид открытого сценария работает в Pro без изменений, а открытый сценарий работает в Pro вообще без лицензии.
Никакой новой физики. Pro не добавляет физических моделей и ничего в них не меняет. Каждое число Pro получено из прогонов открытого движка, поэтому показатель Pro заслуживает ровно столько же доверия, сколько вид открытого сценария, из которого он получен, и никогда не больше.
Pro отвечает на следующие вопросы программы: какую конструкцию запускать (оптимизатор конструкции и его фронт Парето), насколько надёжен ответ (неопределённость и чувствительность) и выполняет ли миссия свои требования (досье миссии, прослеживаемость требований, сравнительные исследования, проверка регрессии сценариев, цифровые двойники часов, досье исследования и служба на собственных серверах). Он также отслеживает кампанию показателей и останавливает конвейер, когда один из них ухудшается, проверяет варианты сигнальных планов против открытых навигационных спутниковых сигналов в обоих направлениях (сосуществование спектра) и ставит исследования в очередь в службе заданий на собственных серверах с хеш-цепочкой журнала доставки. Каждая из этих возможностей описана, с указанием того, что она даёт и чего не делает, в docs/PRO.md. Ничто из создаваемого Pro не является сертификацией, и индивидуальное исследование — тоже не сертификация.
Что Kshana Pro берёт из открытого движка, и поддержка от Ashforde® OÜ
На чём построен Kshana Pro. Каждая часть Pro работает от открытого движка и оставляет его неизменным:
- Оптимизатор конструкции, исследование неопределённости и досье миссии запускают сценарии открытого движка через его публичный интерфейс и вычисляют каждое число по результатам прогонов. Каждый вывод сохраняет уровень VALIDATED, MODELLED или PARTNER, который открытый движок присвоил каждому показателю, и никогда не более высокий.
- Цифровые двойники часов используют модель часов открытого движка и его оценщик девиации Аллана: двойник калибруется по опубликованному бюджету Аллана устройства, а затем проверяется оценкой девиации Аллана двойника открытым оценщиком.
- Сравнительные исследования запускают каждый вариант архитектуры как сценарий открытого движка без изменений и ранжируют варианты по показателю качества, считанному из результата каждого прогона.
- Слежение за кампанией считывает свои показатели из результатов прогонов сценариев пакета на открытом движке и сравнивает их с предыдущим успешным прогоном.
- Сосуществование спектра считывает каждое физическое число из прогонов открытого движка видов
leo-signalиconstellation-designи добавляет только сумму по видимым спутникам и ранжирование планов. - Служба заданий на собственных серверах запускает открытые сценарии и сценарии Pro на одном и том же движке и сохраняет каждый результат в том виде, в каком его вернул прогон.
- Пакеты доказательств записывают для каждого прогона хеш сценария, который открытый движок проставляет в своём результате, так что показатель в пакете можно воспроизвести повторным прогоном его сценария.
- Инструменты системной инженерии и программ. Инструменты Kshana Pro для модельно-ориентированной системной инженерии (MBSE) и программ проверяют требования программы по прогонам открытого движка: они импортируют требования в виде значений, разделённых запятыми (CSV), либо в виде документированного подмножества Requirements Interchange Format (ReqIF) или текста Systems Modeling Language версии 2 (SysML v2), оценивают каждый критерий приёмки с его единицей измерения по значениям, записанным прогоном, и создают перекрёстную матрицу верификации (VCRM), модель SysML v2, отчёт о влиянии изменений и автономный пакет доказательств. Они ничего не перезапускают и не пересчитывают и читают только то, что публикует открытый движок:
result.jsonкаждого прогона (поля, названные критерием, их единицы, штамп воспроизводимости из хеша сценария, начального значения (seed), версии движка и версии схемы, а также метка прогона и уровни показателей), егоreport.json(вид, запись воспроизводимости и метки возможностей), файл сценария (его хеш, вид, начальное значение (seed) и параметры), схему единиц полей (единица, происхождение и уровень доказательств каждого поля) и матрицу верификации (метку VALIDATED, MODELLED или PARTNER каждой возможности).
Поддержка и профессиональные услуги#
Kshana бесплатен и имеет открытый исходный код под AGPL-3.0, а профессионально разрабатывается и сопровождается Ashforde® OÜ (Эстония). Открытый движок полон и пригоден для самостоятельного использования. Для организаций, которым нужно больше, Ashforde® OÜ предлагает:
- Коммерческая поддержка и интеграция — встраивание Kshana в вашу цепочку инструментов, индивидуальные сценарии и приоритетные исправления.
- Индивидуальные модели датчиков — откалиброванные под ваше оборудование, включая модели устойчивости, на которые распространяются экспортные ограничения и которые сопровождаются в закрытом расширении.
- Kshana Pro — проприетарные инструменты модельно-ориентированной системной инженерии (MBSE) и программ, которые проверяют требования программы по прогонам открытого движка и создают перекрёстную матрицу верификации (VCRM), модель Systems Modeling Language версии 2 (SysML v2), отчёт о влиянии изменений и автономный пакет доказательств. Они ничего не перезапускают и читают только опубликованные выходные данные движка:
result.jsonиreport.jsonкаждого прогона, файл сценария, схему единиц полей и метки матрицы верификации (полный список приведён в разделе Редакции). - Инструменты Kshana Pro для конструкции, неопределённости и миссий — фронт Парето пространства проектных решений, неопределённость и чувствительность по тысячам прогонов и досье миссии одной командой с матрицей верификации и PDF; см.
docs/PRO.md. - Слежение за кампанией, сосуществование спектра и служба заданий Kshana Pro — конвейер, который останавливается, когда отслеживаемый показатель ухудшается, планы сигналов, проверенные против открытых навигационных спутниковых сигналов в обоих направлениях, и очередь заданий на собственных серверах с хеш-цепочкой журнала доставки; см.
docs/PRO.md. - Обучение и консультирование по анализу характеристик квантового и классического PNT.
Это модель open-core: движок имеет и сохраняет открытую лицензию; бизнес держится на экспертизе, поддержке и проприетарных расширениях, а не на лицензионных платежах. Связаться: contact@ashforde.org · ashforde.org.
Исследования#
Исследования, построенные на открытом движке, публикуются на arXiv. Каждое называет команду движка, которая за ним стоит, так что его числа можно воспроизвести из зафиксированного сценария или примера исследования.
| Статья | Что она показывает | Команда движка |
|---|---|---|
| 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 |
Падение оценки детектора помех ГНСС при смене условий можно предсказать только по статистике внутри распределения — сначала на открытом синтетическом стенде, затем на открытых полевых записях. | 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 |
У приёмника ГНСС для синхронизации времени при спуфинге нет конечной безусловной границы необнаруженной ошибки времени, поэтому в статье дана условная граница, откалиброванная по записанному эфирному спуфингу из публичной кампании 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 |
Единая составная оценка устойчивости служит устойчивым основанием для решения только там, где доминирует один вариант конструкции; там, где варианты конкурируют, одно лишь изменение весов может сменить победителя. | 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 |
Измерение дальности внутри лунной орбитальной группировки оставляет абсолютное положение наземной станции на поверхности ненаблюдаемым; задержка радиоинтерферометрии со сверхдлинной базой (VLBI) с Земли восстанавливает его, когда группировка разрежена, и повышает точность, когда она насыщена. | вид 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 |
Запланированные орбитальные группировки из четырёх–шести спутников дают плохую геометрию на южном полюсе Луны, а несколько маяков дальнометрии на поверхности исправляют её намного дешевле, чем дополнительные спутники. | вид 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 |
Геометрический фактор DOP не определён для цислунного слежения только по дальности, потому что скорость в один момент времени ненаблюдаема, поэтому в статье используется грамиан наблюдаемости на четырёх плоских дальних retrograde-орбитах: при слежении только по дальности ранг в один момент равен 2 из 4, а для полной наблюдаемости нужна дуга примерно 2,09 ч, причём обусловленность улучшается по мере удлинения дуги; измерение скорости изменения дальности (Доплер) сразу даёт ранг 4; а совместная оценка станции вместе с состояниями спутников и часами остаётся с дефицитом ранга на единицу, если не добавить внешнюю интерферометрическую наблюдаемую. Требования следует выражать в бюджетах длины дуги, обусловленности и типов измерений, а не в DOP. | вид cislunar-observability: kshana scenarios/cislunar-observability.toml (родственный ему cislunar-arc-recovery проверяет порог независимым оценщиком по конечным разностям) |
Три примера исследований записывают побайтово детерминированные артефакты (с фиксированными начальными значениями), в которых фиксируются версия движка, начальные значения (seed) и хеш конфигурации. Три статьи о Луне и цислунном пространстве построены на лунном наборе (уровень доказательств каждой части указан в матрице верификации); их утверждения о геометрии и геометрическом факторе DOP дополнительно перекрёстно проверяются по отдельным оракулам в tests/validate_p*.rs. Подробнее см. Воспроизводимые артефакты исследований в разделе «Справочник».
Цитирование#
Если вы используете Kshana в научной или технической работе, указывайте использованную версию вместе со сценарием и начальным значением (seed). В CITATION.cff хранятся машиночитаемые метаданные, и GitHub по ним показывает кнопку «Cite this repository». Каждый выпуск архивируется в Zenodo; концептуальный DOI (идентификатор цифрового объекта) 10.5281/zenodo.20528627 всегда указывает на последнюю версию.
Baweja, C. (2026). Kshana — a PNT-resilience simulator with quantum-sensor performance models. Ashforde OÜ. https://doi.org/10.5281/zenodo.20528627
Статьи, упомянутые выше:
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
Лицензия#
Kshana распространяется по двойной лицензии: GNU AGPL-3.0-only (LICENSE) либо коммерческая лицензия от Ashforde® OÜ для закрытой интеграции, для которой AGPL не подходит. В LICENSING.md объясняется, какая из них применима. Вклады лицензируются на входе по AGPL и, кроме того, дают Ashforde® OÜ право включать их в коммерческую редакцию; подписывайте каждый коммит командой git commit -s (см. CONTRIBUTING.md). «Kshana» и связанные с ним знаки являются товарными знаками Ashforde® OÜ: лицензия охватывает код, но не название, поэтому форки следует переименовывать.
Справочник#
Длинные материалы, свёрнутые. Все документы перечислены в разделе Документация.
Установка и сборка из исходного кода
Установка и сборка#
Требуется набор инструментов Rust (≥ 1,88, указано в rust-version в Cargo.toml; разработка велась на 1,93).
git clone https://github.com/ashfordeOU/kshana
cd kshana
cargo build --release
cargo test # all tests pass
Использование: командная строка целиком
Использование#
Запустите любой сценарий; CLI выбирает обработку по полю kind сценария и записывает рядом с ним <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html и <scenario>.report.json, а для видов, публикующих таблицу, ещё и <scenario>.table.csv. Отчёт (страница HyperText Markup Language (HTML) и документ JSON с тем же содержимым) содержит краткое резюме, каждый входной параметр с его единицей измерения, результаты и графики, таблицы перебора, Монте-Карло или цепочек кампании, временную шкалу событий, метку VALIDATED / MODELLED / PARTNER и источник каждой возможности, использованной в прогоне, перечень того, что не моделируется, и запись воспроизводимости (версия движка, дайджесты Secure Hash Algorithm 256-bit (SHA-256), начальное значение (seed), платформа и точная команда). Отчёт выводится на печать в чистый файл PDF (Portable Document Format) из браузера на бумаге A4 или Letter; сам движок PDF не записывает. См. 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> записывает рядом со сценарием записи CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON (Request for Comments 7946), эфемериды Ansys STK (Systems Tool Kit) .e и записи SigMF (Signal Metadata Format), а --import-route <route.geojson> передаёт линию GeoJSON в виды, моделирующие полёт по трассе. Каждый формат проверяется по опубликованной спецификации, а если формат к сценарию не применим, сообщается причина: см. docs/INTEROP.md.
Другие режимы CLI — проверка сценария (lint), подача реальных данных об ориентации Земли или запуск целого набора:
# 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
Экспорт анимации. --animate svg|html|frames|all записывает <scenario>.animation.svg (ключевые кадры Cascading Style Sheets (CSS), без скриптов), <scenario>.animation.html (воспроизведение, пауза, перемотка, скорость и синхронизированные панели, без внешних ресурсов) и <scenario>.frames/ (frame_0000.svg, … плюс manifest.json с частотой кадров и длительностью). Кампания воспроизводит свои фазы и тревоги, прогон спектра — свою водопадную диаграмму; тема следует prefers-color-scheme, а prefers-reduced-motion показывает готовую картинку. Анимация отображает собственные отсчёты прогона, побайтово идентична при повторном прогоне и не добавляет доказательств. См. docs/ANIMATION.md.
Манифест набора — это небольшой файл TOML (Tom's Obvious, Minimal Language) с полем title и массивом scenarios = [ … ] путей к сценариям, который движок прогоняет по очереди, сводя каждый результат (с его метками MODELLED / VALIDATED) в один самоописывающийся артефакт исследования. См. scenarios/quantum-pnt-demonstrator.suite.toml.
Роль в совместимости. Kshana — это слой моделирования характеристик, который работает рядом с цепочкой инструментов постобработки, а не заменяет её: передавайте его вывод RINEX в RTKLIB или gLAB для получения решения по положению, а его вывод SP3 используйте как продукт прецизионной орбиты для таких инструментов, как Ginan — Kshana отвечает на вопрос какую устойчивость даёт данная архитектура PNT ещё до появления реальных сигналов, в форматах, которые эти инструменты уже принимают (--export-sp3, либо export_sp3 = true в сценарии orbit, записывает <scenario>.sp3). Ту же орбиту можно опубликовать как средние элементы CCSDS OMM, относящиеся к стандартизируемым (--export-omm, либо export_omm = true, записывает <scenario>.omm) — по одному сообщению OMM 502,0 KVN (нотация «ключ = значение») на каждый спутник, определённый по TLE, с реальным каталожным номером NORAD (Командование воздушно-космической обороны Северной Америки), международным обозначением COSPAR (Комитет по космическим исследованиям) и эпохой каждого объекта, для любого потребителя, поддерживающего OMM, вместо специального двухстрочного набора элементов.
Пример вывода (holdover часов — обратите внимание, как приводятся показатели качества «Целостность» и «Безопасность»):
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
Ошибка времени оптических часов по 95-му процентилю (p95) составляет 1.20e-4 нс: сводка выводит малые значения со значащими цифрами, а не округляет их до 0.0. security показывает n/a (no attack), потому что в этом сценарии не настроена атака, так что обнаруживать нечего. Результат JSON по-прежнему содержит аналитическую границу обнаружимости спуфинга для каждых часов в fom.security (0,997 для оптических часов, 0,000 для атомных часов чипового масштаба, собственный шум которых за окно мониторинга превышает спецификацию 20 нс), а его блок figure_tiers помечает этот показатель как applicable: false. Вид spoof оценивает обнаружение на фоне внедрённой атаки. figure_tiers также присваивает каждому приведённому показателю его уровень верификации — VALIDATED (проверено по внешнему оракулу) или MODELLED — и строку матрицы верификации, из которой этот уровень считывается. Сценарий орбиты дополнительно сообщает блок геометрии — долю отсчётов с решением, а также наилучший/медианный геометрический фактор DOP по положению (PDOP) и точность по положению — наряду с результатом по часам.
Внимательно прочитайте эти два числа.
security— это аналитическая граница обнаружимости спуфинга, выведенная из стабильности каждых часов; она имеет смысл только для настроенного сценария спуфинга и не является многоспутниковым детектором RAIM.integrityздесь — это самосогласованность фильтра (доля отсчётов в пропадании сигнала внутри его собственной границы k сигм), а не показатель целостности HPL/VPL авиационного типа. См.docs/INTEGRITY.md.Для подлинной автономной целостности приёмника вид сценария
integrity(scenarios/integrity-raim.toml) запускает настоящий RAIM по моментальному снимку и с разделением решений (в стиле ARAIM) по геометрии пропагированной орбитальной группировки: он вычисляет горизонтальные и вертикальные уровни защиты (HPL/VPL) для каждой эпохи и сообщает долю эпох, удовлетворяющих заданным пределам оповещения, а также стэнфордскую диаграмму целостности для классификации «ошибка — уровень защиты» (PL).
Воспроизводимые артефакты исследований
Четыре открытых исследования воспроизводят побайтово детерминированный артефакт (с фиксированным начальным значением) одной командой — числа, лежащие в основе исследований перекрёстной точки квантовых и классических систем, разрыва оптимизма при РЧ-искажениях, оценки устойчивости PNT и уровня защиты времени:
# 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
Каждый артефакт записывает версию движка, начальные значения (seed) и хеш конфигурации и несёт честную метку MODELLED/VALIDATED. Зонды на реальных данных (*_probe) прогоняют тот же конвейер по записям, которые вы предоставляете локально; наборы данных в репозиторий не включены. Исследование разрыва оптимизма при РЧ-искажениях описано в препринте arXiv:2606,22054, а условный уровень защиты времени (tpl_jammertest выше) — в препринте arXiv:2606,24210 (см. Цитирование).
Опубликованные исследования лунного PNT (arXiv:2607,06212 — DOP при маяках на поверхности, arXiv:2607,02566 — наблюдаемость при VLBI и arXiv:2610,23871 — наблюдаемость по длине дуги в цислунном пространстве) имеют свои утверждения о геометрии, геометрическом факторе DOP, прогнозе системы отсчёта в реальном времени / параметров ориентации Земли (EOP), дальних retrograde-орбитах и РЧ-дальнометрии независимо перекрёстно проверенными в tests/validate_p*.rs по отдельным оракулам (scipy.special.j1, независимое решение DOP на NumPy (HᵀH)⁻¹, повторный разбор на NumPy тех же строк IERS finals2000A и база данных периодических орбит задачи трёх тел NASA/JPL). Это дополнительные регрессионные проверки модельного лунного набора; они не меняют машинно проверяемое число в матрице.
Формат сценария
Формат сценария#
Сценарии — это декларативный TOML. Поле верхнего уровня kind выбирает пакет — всего их пятьдесят (clock по умолчанию, если поле опущено): 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 (испытательный стенд оценки обнаружения РЧ-искажений методами машинного обучения — размеченный синтетический корпус + не зависящая от детектора оснастка ROC/AUC + разрыв оптимизма на распределении и вне его), quantum-trade (сравнение квантовых и классических PNT с приёмом измеренной ADEV + огибающая устойчивости в условиях недоступности ГНСС; MODELLED), space-weather (индексы солнечной и геомагнитной активности + экзосферная температура по Jacchia-71 + плотность термосферы, зависящая от активности, поверх статической атмосферы; MODELLED), oem-interop (мост импорта/кругового преобразования CCSDS OEM для эфемерид GMAT/Orekit/STK; MODELLED), трио анализа миссий launch-window (азимут запуска двух тел / смена плоскости / возможности), reentry (баллистический коридор входа в атмосферу по Аллену–Эггерсу), eo-coverage (геометрия полосы обзора / GSD / доступа / повторного прохода для наблюдения Земли), space-packet (CCSDS 133,0 TM/TC — телеметрия/телекоманды — кадрирование Space Packet — точная раскладка битов, круговая проверка выполнена) и attitude-budget (3-DOF гравитационно-градиентный момент + бюджет ошибки наведения по RSS), passes (прогноз пролётов над наземной станцией по восходу/заходу — AOS/TCA/LOS, максимальное возвышение, доступ) и link-budget (односторонне уравнение линии CCSDS/DSN — FSPL / Eb·N₀ / запас / замыкание); telecom-timing (ошибка времени в holdover, MTIE и TDEV, проверенные по маскам ITU-T); spectrum (вся L-полоса ГНСС как одна спектральная плотность мощности: водопад «частота — время» при заданной по сценарию временной шкале помехи — непрерывной волны, узкополосной, чирп или согласованного шума, отношение помехи к сигналу по полосам и эффективная несущая к плотности шума по коэффициенту спектрального разделения, а также вход и выход записей Signal Metadata Format (SigMF) с оценками спектра по Уэлчу; спектры сигналов VALIDATED по значениям из учебников, сценарий помех MODELLED; см. docs/SPECTRUM.md; тот же вид строит панели диапазонов UHF, S и C с рассчитанными сигналами низкой околоземной орбиты); leo-signal (проекты сигналов позиционирования, навигации и времени на низкой околоземной орбите для любой системы: спектры с ограниченной полосой, дрожание слежения за кодом и точность дальнометрии, поиск захвата и время захвата, спектральное разделение с GPS и Galileo, устойчивость к помехам и сравнение диапазонов от UHF до C, по публичным предустановкам, таким как Xona Pulsar, Iridium, Starlink и CentiSpace, или по встроенным проектам; замкнутые формулы и доплер LEO VALIDATED, проекты MODELLED; см. docs/LEO-SIGNAL.md); solar-system (Солнце, планеты, Плутон, Луна и семь крупных спутников на одну эпоху — положения, константы, времена распространения света и орбитальные треки; положения планет VALIDATED по JPL Horizons) и body-pnt (позиционирование вокруг любого из этих тел с локальной навигационной орбитальной группировкой и линией связи дальнего космоса с Земли; MODELLED); campaign (существующие виды, составленные в цепочку временной шкалы миссии с передачей состояния между фазами, перебор параметров, Монте-Карло ансамбль с начальным значением или несколько сценариев при одном общем условии; MODELLED, см. docs/CAMPAIGNS.md); constellation-design (схемы Walker delta и star, списки элементов и многооболочечные проекты с предустановками GPS, Galileo, BeiDou и ГЛОНАСС, а также покрытие и геометрический фактор DOP по сетке широты/долготы; генератор и глобальный DOP GPS VALIDATED по опубликованным сервисным документам, см. docs/CONSTELLATION-DESIGN.md); leo-pass (пролёт спутника позиционирования, навигации и времени (PNT) на низкой околоземной орбите (LEO) и его бюджет линии по диапазонам, для любой орбитальной группировки и любого проекта сигнала: углы обзора, доплер и скорость доплера, потери ITU-R в дожде, газах, на сцинтилляциях и при проникновении в здания, отношение несущей к плотности шума относительно спутников ГНСС на средней околоземной орбите (MEO) в зоне видимости, ионосфера первого порядка и безионосферные пары, бюджет решения при малой энергии, зондирование ионосферы по каждой паре диапазонов и мониторы спуфинга по согласованности доплера и геометрии пролёта и по согласованности между диапазонами; члены ITU-R и огибающая доплера для неподвижного пользователя VALIDATED, пролёт MODELLED, см. docs/LEO-PASS.md); leo-navmsg (широковещательное сообщение эфемерид и часов спутника PNT на низкой околоземной орбите (LEO), для любой орбиты и несущей: подгонка по интегрированной эталонной орбите к кеплеровскому набору Galileo, этот набор с полиномами поправок вдоль трассы, поперёк трассы и по радиусу, 22-параметрическая модель Liu и др. 2025 или полином ATOMIC с нулевыми часами в ECEF; ошибка дальности сигнала в пространстве (SISRE) в зависимости от интервала подгонки и периода обновления, проверка непрерывности обновления в середине пролёта, собственный документированный двоичный кадр Kshana с проверкой циклическим избыточным кодом CRC-24Q и бюджетом квантования, а также блок в стиле RINEX 4, помеченный как расширение Kshana; веса SISRE, пользовательский алгоритм Galileo и CRC-24Q VALIDATED, подгонки MODELLED; необязательные предустановки для Xona Pulsar, Iridium, Starlink, CentiSpace, типовой системы C-диапазона, ATOMIC и Celeste IOD; см. docs/LEO-NAVMSG.md); трио объединённого PNT на MEO + LEO leo-pvt (доплеровское позиционирование по скорости изменения дальности LEO, совместные решения по псевдодальностям ГНСС + LEO с межсистемными смещениями и геометрическим фактором DOP в зависимости от числа спутников LEO, покрытие полярных и арктических районов и передача времени LEO к UTC — для любой орбитальной группировки, с необязательными предустановками, такими как оппортунистические сигналы Xona Pulsar, Iridium и Starlink; огибающая доплера LEO VALIDATED по опубликованным данным Iridium и Xona), leo-ppp (сходимость прецизионного абсолютного позиционирования только по ГНСС и с дополнением LEO, в сравнении с Li и др. 2019) и ntn-positioning (позиционирование в нетерриториальных сетях 5G по границе Крамера — Рао от полосы сигнала), MODELLED, кроме этой огибающей, см. docs/LEO-PNT-FUSION.md; leo-pnt-chain (одна система LEO-PNT от начала до конца: проект leo-signal, переносимый полосой leo-pass, C/N0 пролёта и ошибка дальности сигнала в пространстве навигационного сообщения, переданные объединённому решению leo-pvt и сходимости leo-ppp, с перечнем каждой передачи; MODELLED, см. docs/LEO-PNT.md, что одновременно служит обзором всех видов и сценариев LEO-PNT, включая кампании устойчивости, по одному сценарию на каждую область фокуса эксперимента и на каждую вертикаль конечных пользователей); набор лунного PNT lunar-vlbi, lunar-joint-od-clock, lunar-frame-realisation, moonlight-service-volume, lunar-differential-pnt, lunar-interop-export; демонстратор PNT на квантовых технологиях quantum-time-transfer, quantum-gnss-free-nav, quantum-anomaly-detect; и исследовательские виды безопасности сигналов, цислунного пространства и многоуровневой устойчивости lunar-attack-surface, realtime-frame-eop, lunar-time-budget, hybrid-optical-rf, cislunar-observability, conflict-resilience — трио анализа миссий и эти более поздние виды все MODELLED (каждый с проверенным замкнутым ядром; см. матрицу). Общие поля: seed, сетка [time], временная шкала доступности [gnss] (источник пропаданий) и блоки отдельных датчиков со строками provenance, указывающими источник каждого показателя. Пример (часы):
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
Необязательные поля (отключены, если отсутствуют): часы могут добавить flicker_floor (нижняя граница Аллана для 1/f FM — частотной модуляции); инерциальный датчик может добавить gyro_bias и q_arw (смещение гироскопа и угловое случайное блуждание), а также bias_instability и q_aa (нижняя граница Аллана для нестабильности смещения и случайное блуждание ускорения) — вместе это бюджет ошибок одноосного (1-DOF) акселерометра (VRW/ARW — случайное блуждание скорости/угла — и нестабильность смещения). Именно такой бюджет ошибок запускает поставляемый пакет сценариев inertial. Отдельно библиотека теперь содержит проверенный 3-осный бесплатформенный навигатор (src/inertial/{attitude,mechanization,imu_errors}.rs): кватернионную ориентацию с компенсацией конусного и скуллинг-движения, полную механизацию NED (члены угловой скорости Земли и скорости переноса, гравитация Сомильяны WGS-84) и детерминированную модель ошибок IMU, в которой моделируются масштабный коэффициент, неортогональность осей, g-чувствительность, квантование и линейное нарастание скорости (IEEE Std 952-1997, стандарт IEEE на спецификации и методы испытаний гироскопов, §A.2; Groves 2013 §4,3). Этот 3-осный путь теперь подключён к работающему пакету слабосвязанных ГНСС/ИНС (kind = "gnss-ins"): 15-мерный EKF по вектору ошибок дисциплинирует бесплатформенное решение по зашумлённым решениям, пока ГНСС доступна, затем идёт по инерции через пропадание и сообщает объединённую горизонтальную ошибку в сравнении с разомкнутым свободным инерциальным выбегом. Доступно и сильносвязанное обновление по псевдодальности (оно формирует инновацию в области дальностей, поэтому продолжает корректировать при менее чем четырёх спутниках). Сценарий holdover часов может добавить runs (> 1) для запуска ансамбля Монте-Карло — тогда каждый показатель качества приводится как среднее с разбросом между 5-м и 95-м процентилями, а график закрашивает доверительную полосу ошибки (см. scenarios/clock-ensemble.toml).
Сценарий fusion (с теми же блоками, что и hybrid) запускает два независимых оценщика Калмана — один для состояния часов, другой для состояния положения, — дисциплинируемых ГНСС и поддерживаемых оптической передачей времени, и сообщает совокупный показатель качества holdover. Эти два блока не имеют общей кросс-ковариации: это составленная вместе пара бюджетов ошибок, а не настоящий связанный совместный фильтр часов и положения (межблочная ковариация — пункт дорожной карты). См. scenarios/fusion-pnt.toml.
Сценарий spoof внедряет спуфинг времени — один из четырёх видов [attack.shape] (linear_ramp, step_jump, meaconing, replay; простой rate_ns_per_s по-прежнему принимается как линейный рост) — и запускает детектор спуфинга каждых часов. Детектор — это двусторонний тест энергии χ²₁ / Неймана — Пирсона по статистике монитора с поддержкой часов: порог задаётся по целевому бюджету ложных тревог target_pfa, а вероятность пропуска обнаружения P_md приводится и в замкнутой форме, и методом Монте-Карло (mc_runs испытаний на гипотезу — оба значения согласуются с точностью до нескольких ×1/√N). Показатель качества «Безопасность» равен 1 − P_md при эксплуатационно вредной (заданной спецификацией) величине, так что тихие часы, ловящие спуфинг размера спецификации, получают ≈ 1, а шумные, часто его пропускающие, — меньше (см. scenarios/spoof-attack.toml, scenarios/spoof-meaconing.toml).
Сценарий gnss-sim — это моделирование в области измерений: для каждого видимого спутника он синтезирует псевдодальность ρ = geometric range + c·δt_rx − c·δt_sv + I + T + noise + multipath и доплер на L1 с однодиапазонной ионосферой по модели Клобучара ([iono], IS-GPS-200 §20.3.3.5.2.5) и зенитной тропосферой по модели Саастамойнена, спроецированной функцией отображения Нилла (1996) ([tropo]). Невязки поступают в RAIM по моментальному снимку для HPL/VPL по эпохам, а псевдодальность, доплер, C/N₀ и поправки на ионосферу и тропосферу каждого спутника выдаются в массиве JSON gnss_measurements. Это прямой имитатор (он порождает измерения из известной истины), а не приёмник и не решатель: прогон без шума воспроизводит геометрию и поправки с точностью до долей миллиметра (см. scenarios/gnss-sim-raim.toml).
Сценарий jamming моделирует РЧ-помехи как бюджет линии: [jammer] (положение в ECEF, передаваемая мощность power_dbw, тип) повышает отношение помехи к сигналу у [receiver], наблюдающего за орбитальной группировкой Walker [constellation]. По геометрии (потери в свободном пространстве и коэффициент усиления приёмной антенны по направлениям) он вычисляет J/S для каждого спутника, эффективное C/N₀ по стандартному уравнению помехозащиты (выигрыш обработки при сжатии спектра × коэффициент спектрального разделения Q; Kaplan & Hegarty §9,4) и отмечает потерю захвата ниже настраиваемого порога слежения, сообщая показатель качества availability_under_jamming. Широкополосный источник помех мощностью 10 Вт на расстоянии 1 км полностью лишает приёмник связи (J/S ≈ 72 дБ); тот же источник на расстоянии 100 км лишь ухудшает линии (см. scenarios/jamming-demo.toml).
Сценарий sweep выполняет сравнительное исследование: он изменяет один parameter (threshold_ns, duration_s, quantum_q_wf или classical_q_wf) от start до stop по steps точкам на шкале scale lin или log, записывает metric (например, holdover_s) для обоих часов и строит две кривые. Базовый сценарий размещается в [base] (см. scenarios/sweep-clock-stability.toml).
Сценарий sweep-nd обобщает это на любой пакет и любое число осей: он изменяет ключи TOML с точками в сценарии [base] (любого kind) по декартову произведению [[axes]], заново прогоняет каждый узел сетки и записывает metrics, заданные как пути JSON с точками внутри результата (например, classical.fom.holdover_s). Он работает для каждого пакета, потому что действует на границе TOML и результата; нативные прогоны вычисляют сетку параллельно (без дополнительной зависимости, wasm переходит на последовательное выполнение), а вывод детерминирован и построчный (см. scenarios/sweep-nd-inertial.toml).
Сценарий orbit выводит временную шкалу [gnss] из геометрии, а не задаёт её вручную: задайте орбиту [user], [constellation], mask_deg по углу места и два блока часов. Он также сообщает точность по положению по геометрии спутников; необязательный sigma_uere_m (1-сигма эквивалентной пользовательской ошибки дальности, по умолчанию 1 м) масштабирует геометрический фактор DOP по положению в сигму положения. Орбиту пользователя можно сделать эксцентричной с помощью eccentricity и argp_deg, а j2 = true добавляет вековой дрейф от сжатия Земли (см. scenarios/orbit-molniya.toml). Орбитальная группировка может быть и реальной: задайте в [constellation] блок tle с двухстрочными наборами элементов, и спутники будут разобраны из него (см. scenarios/orbit-real-tle.toml). Добавьте один или несколько блоков [[constellations]] для мульти-ГНСС (например, GPS + Galileo; см. 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
Виды альтернативного PNT при недоступности GPS навигируют вообще без ГНСС, сопоставляя измеренную последовательность поля с картой через корпускулярный фильтр. Сценарий gravity-map прокладывает трассу через поле гравитационных аномалий в сферических гармониках и восстанавливает её по показаниям гравиметра на холодных атомах (scenarios/gps-denied-gravity-nav.toml); сценарий terrain-nav делает то же самое по цифровой модели рельефа SRTM (TERCOM/SITAN, scenarios/terrain-nav.toml); а сценарий combined-altpnt объединяет в одном фильтре гравитацию + магнитное поле IGRF + рельеф (scenarios/combined-altpnt.toml).
Сценарий lunar-integrity оценивает цислунное PNT: он выполняет проход по уровню защиты ARAIM на южном полюсе Луны относительно набора ретрансляторов LunaNet/LNIS и честно сообщает разрыв по целостности — лунное σ_URE около 30 м поднимает уровень защиты намного выше предела оповещения 50 м, поэтому по правилам целостности авиационного типа служба недоступна (scenarios/lunanet-araim.toml).
Сценарий lunar-time-offset сообщает релятивистскую скорость хода часов Земля–Луна — основу шкалы лунного координатного времени (LTC/TCL). Постньютоновское тождество из первых принципов суммирует разность собственных потенциалов (потенциал геоида IAU L_G за вычетом собственного потенциала на поверхности Луны) и кинетический член Луны (поперечный эффект Доплера) в вековую скорость ≈ 57 мкс/сут, которая приводится вместе с опубликованным диапазоном 56–59 мкс/сут; он также даёт накопленное смещение LTC−TT на горизонте и ансамбль с обратной дисперсией (лунные бумажные часы). MODELLED — основной показатель зависит от выбора эталона (геоид Земли и селеноид Луны, окно усреднения), поэтому сообщается диапазон, а не единое сертифицированное число (scenarios/lunar-time-offset.toml).
См. scenarios/: по меньшей мере один рабочий пример для каждого вида (92 видов, 193 файлов сценариев .toml + 1 манифест набора — для нескольких видов поставляется более одного примера). Не у каждого вида есть файл с его именем: lunar-integrity → scenarios/lunanet-araim.toml и gravity-map → scenarios/gps-denied-gravity-nav.toml — два из нескольких таких случаев. Перечислить доступные для запуска виды можно в любой момент с помощью ошибок cargo run -- --validate <file>, функции Python list_kinds() или инструмента MCP list_scenario_kinds.
Вывод
Вывод#
Артефакт результата — версионированный самоописывающийся JSON: временные ряды по шагам, оценённые показатели качества, действующие спецификации моделей (с происхождением), начальное значение (seed), хеш сценария — так что любой график можно воспроизвести из файла — и для каждых часов adev_curve ([{tau_s, adev, n_samples, noise, edf, ci_lo, ci_hi}]): перекрывающаяся девиация Аллана по временам усреднения с шагом в октаву — стандартный способ оценить стабильность часов — теперь с 95%-й доверительной полосой, зависящей от типа шума, для каждой точки (степенной тип шума записи определяется по наклону модифицированной девиации Аллана, а интервал χ² использует соответствующие эффективные степени свободы по NIST SP 1065). Браузерная песочница отображает её как график «Стабильность часов (ADEV)» в двойном логарифмическом масштабе. (MDEV, TDEV и HDEV доступны как оценщики библиотеки; экспортируемая кривая результата — перекрывающаяся ADEV.) Каждое поле с единицами измерения и указателем на источник описано в docs/SCHEMA.md.
Каждый график самоописывающийся. Браузерная песочница, экспорт *.chart.svg в CLI и карточка результатов HTML (HyperText Markup Language) ставят на каждое изображение графика нижнюю строку вида Kshana v<version> · scenario <hash> · kshana.dev. scenario <hash> — это первые 12 шестнадцатеричных символов хеша сценария прогона — дайджеста SHA-256 (256-битного Secure Hash Algorithm) по каноническому определению сценария (начальное значение (seed), пороги, параметры моделей, окна ГНСС, …); отчёты о целостности и о Луне, у которых нет собственного хеша, используют SHA-256 исходного текста сценария. Это тот же отпечаток, что показан в однострочной сводке и в JSON результата, так что сохранённый или вставленный график всегда несёт свою версию, точный сценарий, который его создал (для побитового воспроизведения), и источник; измените любой вход — и хеш изменится.
Показатели качества следуют стандартным эксплуатационным показателям качества PNT:
| Показатель качества | Как Kshana его вычисляет |
|---|---|
| Характеристики времени (пакеты часов/орбит) | СКО ошибки фазы часов и 95-й процентиль за время пропадания, в наносекундах (timing_rms_ns) — метрика времени, а не положения |
| Характеристики позиционирования (инерциальные/гибридные пакеты) | СКО ошибки положения 1-DOF и 95-й процентиль за время пропадания, в метрах (pos_rms_m); одноосное. Одиночный прогон помечается monte_carlo: false; задайте runs = N для ансамбля Монте-Карло, который сообщает по каждой метрике среднее, разброс и бутстрэп-доверительный интервал (CI) 95%. По-прежнему не 2-мерные CEP/2DRMS (круговая вероятная ошибка / удвоенное среднеквадратичное расстояние) и не точность, взвешенная по DOP (для них нужна 3-осная модель — в дорожной карте) |
| Автономность | длительность holdover — время в пределах спецификации после потери ГНСС (квантованное по сетке: нижняя граница) |
| Устойчивость | наклон роста ошибки во время пропадания |
| Доступность | доля прогона с решением в пределах спецификации |
| Целостность | самосогласованность фильтра — доля отсчётов пропадания, ошибка которых остаётся внутри собственной границы k сигм фильтра Калмана. Не показатель целостности HPL/VPL/RAIM авиационного типа (см. docs/INTEGRITY.md) |
| Безопасность | аналитическая граница обнаружимости спуфинга по стабильности часов — насколько малый и медленный спуфинг времени мог бы пометить монитор согласованности по одним часам. Имеет смысл только при настроенной атаке; не является многоспутниковым детектором RAIM |
Незнакомые термины? Каждый определён простым языком в глоссарии.
Структура репозитория
Структура репозитория#
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 (часто задаваемые вопросы)
FAQ#
Нужно ли понимать квантовую физику, чтобы этим пользоваться? Нет. Если вы умеете запускать командную строку, вы сможете запускать Kshana. Начните с введения простым языком; термины ищите в глоссарии.
Это проект квантового оборудования или лётное программное обеспечение? Нет. Это симулятор характеристик. Точность квантового оборудования берётся из опубликованных моделей ошибок, а не из этого инструмента. См. Что это и чем не является.
Квантовые результаты реалистичны или это маркетинг? Каждый параметр подкреплён ссылкой на технический паспорт или статью, каждая модель проверена по учебниковому соотношению, а зрелость честно помечена в VALIDATION.md — включая то, что ни одни стронциевые оптические часы ещё не летали. Движок нейтрален: квантовые и классические системы — это один и тот же код с разными опубликованными числами.
Можно ли быть уверенным, что два прогона совпадут? Да — прогоны детерминированы: scenario + seed + engine version → bit-identical output, что обеспечивается scripts/check-reproducible.sh.
Можно ли пользоваться из Python или в браузере? Да — см. Установка: под ней приведены примеры для Python и WebAssembly. Оба вызывают один и тот же движок.
Как смоделировать собственный датчик? Напишите сценарий .toml с опубликованными показателями вашего датчика в полях provenance. См. Формат сценария и примеры в scenarios/.
Бесплатен ли он для коммерческого использования? Да — по AGPL-3.0, в том числе в коммерческих условиях, если вы соблюдаете копилефт AGPL (в частности: если вы изменяете Kshana и предлагаете его по сети, вы обязаны предоставить этим пользователям свой изменённый исходный код). Если это вам не подходит — например, нужно встроить Kshana в проприетарный продукт или запустить закрытую сетевую службу, — коммерческая лицензия доступна у Ashforde® OÜ; см. LICENSING.md и Поддержка.
Устранение неполадок
Устранение неполадок#
cargo build завершается ошибкой на старом наборе инструментов. Kshana требует Rust ≥ 1,88. Обновите командой rustup update.
Сборка расширения Python не удаётся скомпоновать в macOS (Undefined symbols … _Py…). Расширение Python разрешает свои символы во время загрузки. maturin автоматически задаёт нужный флаг компоновщика — используйте maturin develop --features python, а не голый cargo build.
Сборка Python жалуется, что интерпретатор новее, чем известно PyO3. Задайте PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 (колёса abi3 совместимы вперёд между версиями CPython).
Сборка WebAssembly не находит целевую платформу. Установите её один раз командой rustup target add wasm32-unknown-unknown, затем wasm-pack build --target web -- --features wasm.
Куда делся мой вывод? Каждый прогон записывает <scenario>.result.json, <scenario>.chart.svg, <scenario>.report.html и <scenario>.report.json рядом с входным .toml, а для видов, публикующих таблицу, ещё и <scenario>.table.csv. Все они намеренно исключены из git.
Версионирование и выпуски
Версионирование и выпуски#
Kshana следует семантическому версионированию. Пока версия ниже 1.0, публичная схема сценария/результата ещё может меняться; несовместимые изменения прямо указываются в CHANGELOG.md. Каждый результат воспроизводим по scenario + seed + engine version.
Каждый тег vX.Y.Z автоматически публикует все каналы в одном порядке — сначала на помеченном коммите выполняется полный набор тестов, пока он не пройден, ничего не публикуется, а затем конвейер проверяет, что каждый реестр действительно отдаёт новую версию (docs/RELEASING.md). Каналы:
| Канал | Установка / получение | Содержание |
|---|---|---|
| crates.io | cargo install kshana · kshana = "0.35" |
библиотека на Rust + CLI |
| crates.io | cargo install kshana-mcp |
сервер MCP |
| PyPI (Python Package Index) | pip install kshana |
колёса abi3 (Linux/macOS/Windows) + sdist (исходный дистрибутив) |
| npm | npm install kshana |
модуль WebAssembly + обёртка на JS |
| ghcr.io | docker run -i ghcr.io/ashfordeou/kshana-mcp |
образ OCI (Open Container Initiative) для нескольких архитектур — набор инструментов не нужен |
| npm | npx -y kshana-mcp@0.40.0 |
загрузчик: скачивает двоичный файл выпуска, проверяет SHA256SUMS и запускает его |
| PyPI | uvx kshana-mcp==0.40.0 · pipx run kshana-mcp==0.40.0 |
тот же загрузчик для Python |
| Homebrew · Scoop · winget | brew install ashfordeOU/tap/kshana-mcp · scoop install kshana-mcp · winget install AshfordeOU.KshanaMcp |
двоичный файл kshana-mcp, создаваемый из SHA256SUMS каждого выпуска |
| официальный реестр MCP | автоматически обнаруживается клиентами MCP | io.github.ashfordeOU/kshana-mcp (образ OCI, пакеты npm и PyPI) |
| JetBrains Marketplace | IDE → Plugins → поиск «Kshana» | плагин для IDE Kshana — PNT simulator |
| Zenodo | DOI | архив каждого выпуска, на который можно ссылаться |
| kshana.dev | открыть в браузере | Kshana Studio — приложение WebAssembly в браузере, пересобираемое по каждому тегу выпуска (так что показанная версия — это та версия, которая работает) |
Версия крейта / образа / реестра сервера MCP следует версии движка (он включает библиотеку); плагин для JetBrains версионируется независимо (он вызывает установленный у вас двоичный файл kshana).
Дорожная карта
Дорожная карта#
Поэтапная дорожная карта см. в ROADMAP.md, историю выпусков — в CHANGELOG.md, а дорожную карту по возможностям — в docs/CAPABILITY.md. Порядок приоритетов таков: сначала свидетельства по времени и holdover для критической инфраструктуры (маски телекоммуникаций, более длительный holdover со старением и фликкер-шумом, приём измеренных данных часов); во вторую очередь — нейтральный метод сравнения квантовых и классических систем (результаты помечаются MODELLED, пока измеренные данные партнёра не повысят их уровень); а лунная / цислунная навигация и навигация в дальнем космосе поддерживаются, но не расширяются как главное направление. Прецизионное приведение к ITRF теперь реализовано — полная цепочка GCRS↔ITRS по IAU 2006/2000A на основе CIO (движение полюса + нутация с точностью до долей угловой секунды), побитово проверенная по SOFA/ERFA и независимо перекрёстно проверенная по ANISE (SPICE на чистом Rust) с расхождением ≤ 3,6 м на орбите ГНСС. Ближайшие пункты включают сильносвязанное объединение по фазе несущей и вывод слабо-/сильносвязанного навигатора ГНСС/ИНС в большее число пакетов; движок радиометрической навигации в дальнем космосе / на Марсе появился в v0.17.0 (проверен моделированием). Слой квантовой физики — пункт P2: акселерометр CAI теперь моделируется из первых принципов (фаза Маха — Цендера, проекционный шум, спад контраста, связь с вибрацией), тогда как датчики часов и передачи времени по-прежнему управляются опубликованными коэффициентами Аллана / бюджета шума. Преобразование TEME↔ECEF на основе GMST, системы времени IERS с високосными секундами (UTC/TAI/TT/UT1), пропагация орбит SGP4/SDP4 (v0.7.0, проверена по векторам AIAA 2006-6753) и работающий пакет объединения gnss-ins — всё это поставлено, а инерциальная скорость передаётся далее. В main попали: активный стохастический детектор спуфинга времени (тест энергии Неймана — Пирсона / χ²₁ с P_fa/P_md по Монте-Карло и показателем «Безопасность» 1−P_md), модель подавления по бюджету линии (J/S → эффективное C/N₀ → потеря захвата), доступность для нескольких орбитальных группировок, бюджет ошибок IMU по одной оси (1-DOF), два независимых оценщика Калмана (часы + положение), сообщаемых как совокупный показатель качества, реальная геометрия орбитальной группировки по TLE, отчёт-карточка HTML, доступность ГНСС и геометрический фактор DOP, выводимые из геометрии по кеплеровым орбитам с эксцентриситетом и дрейфом J2, доверительные полосы Монте-Карло, перебор параметров для сравнительных исследований, песочница WebAssembly в браузере, а также необязательные привязки Python (PyO3) и WebAssembly (wasm-bindgen).
Участие в разработке
Участие в разработке#
См. CONTRIBUTING.md. Кратко: тесты проходят (cargo test), оба охранных скрипта проходят, используются Conventional Commits, а для каждого заметного пользователю изменения нужна запись [Unreleased] в CHANGELOG.md. Участие регулируется нашим кодексом поведения. О проблеме безопасности сообщайте согласно политике безопасности — пожалуйста, не открывайте публичный issue об уязвимостях.
Документация: каждый документ и для кого он
Документация#
| Документ | Для кого | Что внутри |
|---|---|---|
| Краткое введение в концепции | для всех, начните отсюда | что делает Kshana и зачем, от нуля до физики |
| Kshana Studio | для всех | запуск движка в браузере (WebAssembly); заметки по сборке и развёртыванию |
| Глоссарий | для всех | определения каждого термина простым языком |
| Виды сценариев | для всех | каждый вид, который диспетчеризует движок: что он делает, его поля, пример команды, его строки реестра и график, который для него записывает движок |
| Данные партнёров | лаборатории и производители, располагающие измеренными данными | какие строки MODELLED могла бы повысить измеренная запись часов или IMU, какие форматы принимаются, как проверяется заявка (kshana partner check), оценивается и учитывается в благодарностях |
| Архитектура | разработчикам / рецензентам | карта модулей, конвейер движка, диспетчеризация и диаграммы |
| Статус валидации | рецензентам / цитирующим | что validated, а что not modeled, с доказательствами |
| Матрица верификации | рецензентам / цитирующим | машинно проверяемый реестр доказательств — каждая строка возможности с её статусом, модулем, тестом и внешним оракулом, создаваемый из src/verification.rs |
| Обоснование уровня Modelled | рецензентам | почему у каждой строки уровня Modelled нет внешнего оракула, с объяснением по строкам |
| Происхождение | рецензентам / цитирующим | каждый параметр датчика, модель и набор данных с привязкой к опубликованному источнику в одной таблице, на которую можно ссылаться |
| Воспроизводимость и происхождение | рецензентам / упаковщикам | гарантии детерминизма, фиксация эталонных значений, SBOM (перечень компонентов программного обеспечения), происхождение сборки |
| Теги платформ колёс | упаковщикам | матрица колёс Python abi3 — какой тег платформы выбирает pip install kshana |
| Позиционирование | оценивающим | где Kshana находится относительно RTKLIB/gLAB (дополняет их) и ступень без установки в браузере |
| Kshana Pro | оценивающим / руководителям программ | что проприетарное расширение Pro добавляет к тому же движку: оптимизатор конструкции, неопределённость и чувствительность, досье миссии, слежение за кампанией, сосуществование спектра, служба заданий на собственных серверах, прослеживаемость требований; что каждое из них даёт и чего не делает |
| Технический отчёт · статья JOSS | рецензентам / цитирующим / оценивающим | полная расширенная научная статья — архитектура, модели по областям, валидация, примеры и ограничения — а также краткая заявка в JOSS (Journal of Open Source Software) |
| Валидация SGP4 | рецензентам / цитирующим | согласие с эталоном AIAA 2006-6753 (666 состояний, ~4 мм) и прямое сравнение с независимым крейтом sgp4 (согласие до долей микрона / 4,12 мм) |
| Валидация модели сил | рецензентам / цитирующим | движок с полной моделью сил (src/precise_od.rs), подогнанный к эфемеридам агентств, — методология и проверенные невязки |
| Руководство по реальным TLE | пользователям | управление сценариями по реальным TLE орбитальных группировок Celestrak / Space-Track (вместо входящего в комплект синтетического набора Walker) |
| Показатель качества «Целостность» | оценивающим | что означают показатели integrity / security — и чем они не являются по сравнению с авиационными HPL/VPL |
| Справочник по ARAIM | рецензентам / интеграторам | открытая реализация уровня защиты MHSS ARAIM — проекция номинального смещения b_k, σ_URA и σ_URE, а также априорные вероятности режимов отказа |
| Квантовые модели · подробнее | рецензентам | физический слой атомного интерферометра на холодных атомах и то, где коэффициенты по-прежнему берутся из справочных данных |
| Compliance | оценивающим | область применения алгоритмов DO-229E / DO-316 и то, что не является заявлением о соответствии |
| Доверие на море | морякам / интеграторам | оценка доверия к ГНСС от 0 до 100 по NMEA судна, её мониторы и ограничения (носит консультативный характер, это не навигационное оборудование с утверждённым типом) |
| Потоки NMEA для обучения | инструкторам по морской подготовке | синтетический мостиковый NMEA со сценарным подавлением и спуфингом и журналом инструктора; только текст, никогда не для реальной навигации |
| Карта помех | аналитикам / морякам | где воздушные и морские суда сообщали об ухудшении навигационных данных и какую часть маршрута это затрагивает |
| Пакеты доказательств | операторам / страховщикам | подписанные технические записи о событии доверия и способ проверить такую запись |
| Телеметрия доверия | службам эксплуатации / безопасности | поток доверия как метрики Prometheus, события SIEM и OpenTelemetry, с панелью Grafana |
| Морские интеграции | владельцам судов / интеграторам | плагин Signal K, режим шлюза OpenCPN и эталонная сборка |
| Test bench | производителям приёмников | воспроизведение экспортированного сценария через лабораторный имитатор и оценка журнала приёмника |
| Сопоставление compliance | оценивающим | публичные рамочные документы по устойчивости, сопоставленные с выходными данными Kshana, с источниками и пробелами; kshana compliance-report |
| Блокноты | пользователям | запускаемые учебные материалы с их отрисованным текстом |
| Стандарты и совместимость | интеграторам | форматы обмена ГНСС / динамики полёта / агентств, которые Kshana читает и записывает (RINEX, SP3, CCSDS OEM/OMM/TDM/Space-Packet, …) |
| Объединение LEO PNT | пользователям / оценивающим | объединённое позиционирование, навигация и время на MEO + LEO: доплер, совместные псевдодальности, сходимость PPP, 5G NTN, полярное покрытие и передача времени LEO для любой орбитальной группировки; необязательные предустановки и их публичные источники |
| Кампании | пользователям / оценивающим | составление сценариев: цепочки временных шкал миссий, перебор параметров, ансамбли Монте-Карло и прогоны при общих условиях, с тождествами композиции, которые фиксируют тесты |
| Каталог сценариев | пользователям / интеграторам | каждый доступный для диспетчеризации вид с его обязательными и необязательными полями TOML — создаётся из api::list_scenario_kinds() |
| Схема результата | интеграторам | каждое поле JSON результата с единицами измерения и указателем на источник |
| API Python | пользователям Python | интерфейс привязки PyO3 — вызов движка, типы сценария и результата и примеры |
| Заявления и реальность | рецензентам | реестр закрытия завышенных заявлений и охрана CI (tests/no_overclaims.rs), которая поддерживает его в закрытом состоянии |
| Дорожная карта | для всех | поэтапная дорожная карта — что поставлено и что дальше |
| Сервер MCP · плагин для JetBrains | агентам / пользователям IDE | запуск Kshana из ИИ-ассистента или из IDE JetBrains |
| Руководство для агента · Поверхности | агентам / интеграторам | какой инструмент отвечает на какой вопрос и что хранить вместе с каждым ответом; где доступна каждая возможность (CLI, Rust, Python, WASM, MCP, плагин, JetBrains, блокноты) и почему ячейка помечена N/A |
| Журнал изменений | для всех | история выпусков (Keep a Changelog + SemVer, семантическое версионирование) |
| Участие в разработке | участникам разработки | сборка, охранные проверки, дисциплина тестов и цитирования, DCO (Developer Certificate of Origin) |
| Управление проектом | участникам разработки / сообществу | как управляется Kshana — кто решает, как и граница между открытым и закрытым |
| Кодекс поведения | сообществу | ожидаемое поведение (Contributor Covenant) |
| Политика безопасности | сообщающим об уязвимостях | как сообщить об уязвимости; примечание о двойном назначении |
Основные ссылки
Основные ссылки#
Оракулы валидации и стандарты — внешние авторитетные источники, к которым привязаны проверки Kshana:
- Vallado, Crawford, Hujsak & Kelso — Revisiting Spacetrack Report #3 (AIAA 2006-6753; тестовые данные): проверочный набор SGP4/SDP4, с которым Kshana совпадает до 4,12 мм, и разобранные примеры преобразования систем координат, по которым проверяется цепочка TEME→ITRF.
- IAU SOFA / ERFA — эталонные процедуры времени и систем координат, по которым побитово проверены нутация IAU 2000A и приведение GCRS↔ITRS на основе CIO.
- Petit & Luzum (eds.) — IERS Conventions (2010), IERS TN (Technical Note) 36 (ориентация Земли, движение полюса и стандарты систем координат).
- Riley — Handbook of Frequency Stability Analysis, NIST SP 1065 (соотношения для девиации Аллана и эталонный ряд NBS14; NBS — бывшее Национальное бюро стандартов США).
- Pedregosa et al. — scikit-learn: Machine Learning in Python, JMLR 12 (2011): эталонные реализации ROC/AUC, матрицы ошибок и precision/recall/F1, с которыми точно совпадает испытательный стенд оценки РЧ-искажений (
tests/eval_metrics_reference.rs). - Virtanen et al. — SciPy 1,0, Nature Methods 17 (2020):
optimize.nnls,stats.chi2иlinalg.expm— эталонные процедуры, по которым проверены подгонка NNLS измеренной ADEV в сравнении квантовых и классических систем, полосы согласованности χ² и ковариация шума процесса часов по ван Лоану (tests/scipy_reference.rs). - Knowles, Kanhere, Neamati & Gao — gnss_lib_py, SoftwareX 27 (2024): используется и как открытый предшествующий уровень техники (см. Сравнение и открытый предшествующий уровень техники ниже), и как независимый оракул DOP, с которым вычисление GDOP/PDOP/HDOP/VDOP/TDOP совпадает до 1e-6 (
tests/dop_reference.rs). - Montenbruck & Gill — Satellite Orbits: Models, Methods and Applications (Springer): модели сил, лежащие в основе подгонки силовой модели к прецизионным эфемеридам агентств.
- 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 (семейства гало-орбит и NRHO, которые воспроизводит дифференциальный корректор CR3BP).
Физика устройств и методов — источники, на которые опираются модели датчиков:
- Origlia, Schiller, Bongs et al. — arXiv:1503,08457 (стронциевые оптические часы на решётке, цель для космоса).
- Oelker et al., Nature Photonics (2019) — doi:10.1038/s41566-019-0493-4 (лабораторные часы на Sr, 4,8×10⁻¹⁷).
- Templier et al., Science Advances (2022) — arXiv:2209,13209 (гибридная тройка квантовых акселерометров).
- Groves, Principles of GNSS, Inertial, and Multisensor Integrated Navigation — учебный материал IEEE AESS (Aerospace and Electronic Systems Society) (репозиторий University College London Discovery) (рост ошибки при счислении пути).
- 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) (оптическая двусторонняя передача времени и частоты; модели оптической межспутниковой линии строят бюджет её невзаимности по этим работам).
- Betz — Binary Offset Carrier Modulations for Radionavigation, NAVIGATION 48(4) (2001), doi:10.1002/j.2161-4296.2001.tb00247.x (модуляция BOC и теория спектрального разделения, лежащие в основе
src/navsignal.rs). - Kaplan & Hegarty (eds.) — Understanding GPS/GNSS: Principles and Applications (3-е изд., Artech House, 2017): уравнение эффективного C/N₀ при помехозащите и тепловое дрожание слежения за кодом в DLL «раньше — позже», которые используют модели навигационного сигнала и подавления.
Сравнение и открытый предшествующий уровень техники — инструменты и обзоры, с которыми соотносится Kshana:
- Humphreys et al. — TEXBAT (Texas Spoofing Test Battery; ION — Институт навигации — GNSS 2012): параметры набора тестов на спуфинг, по которым охарактеризован многоуровневый детектор.
- González et al. — NaveGo (2017): открытые проверенные профили ошибок инерциальной навигации, используемые как классический базовый уровень.
- Iiyama, Casadesús Vila & Gao — LuPNT (ION GNSS+ 2023, Stanford NavLab): открытый имитатор лунного PNT.
- Knowles, Kanhere, Neamati & Gao — gnss_lib_py, SoftwareX 27 (2024), doi:10.1016/j.softx.2024.101811: открытый анализ данных ГНСС.
- 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: редуцированно-динамическое определение орбиты GRAIL, нижняя граница эмпирического ускорения, которую воспроизводит подгонка LRO.