Kshana · क्षण · 精确的一瞬
一款开源的PNT(定位、导航与授时)韧性仿真器。
main分支的持续集成状态
行覆盖率接近95 % 的src/,度量见docs/COVERAGE.md,并在持续集成中以85 % 为门槛
401项能力中有176项已对照独立的外部参考基准(oracle)得到VALIDATED,数据来自验证矩阵
SonarQube Cloud质量门状态
发布版本v0.40.0
许可:AGPL-3.0-only
DOI 10.5281/zenodo.20528627,每个发布版本共用的Zenodo概念记录
Ashforde® OÜ 提供商业许可,见“版本”
crates.io上的kshana,当前已发布版本
PyPI上的kshana,当前已发布版本
npm上的kshana,当前已发布版本
打开Kshana Studio · 安装 · 能力 · 证据 · 研究 · 文档 · 引用
目录
- 预演GNSS失效的那一分钟
- 0.40版新增内容、0.39版新增内容、0.38版新增内容,以及0.38版详解:Jammertest评分、接收机自身的标志、机器输入、授时与守时、标准包、LunaNet AFS、实验室往返、kshana-bench、观测台、导出器、光学、空间用户导航和月球基础设施
- Kshana Studio及Studio的所有页面
- 能力:各领域一览表、按系列划分的每种场景类型、每条命令、每个界面
- 一次运行如何进行、任务
- 证据:台账、能力领域
- 安装、架构(及示意图)、AI助手
- 版本、研究、引用、许可
- 参考:用法、场景格式、输出、仓库布局、常见问题、故障排查、版本管理、路线图、参与贡献、文档
预演GNSS失效的那一分钟#
当GNSS(全球导航卫星系统)信号失效时,Kshana重放压制干扰(jamming)、欺骗干扰(spoofing)和时钟守时(holdover),并告诉你系统能在预算范围内保持时间和位置多久,以及哪种时钟或传感器带来的余量最大。它是同一个Rust引擎,可在终端、笔记本、IDE(集成开发环境)、AI(人工智能)助手或浏览器中运行。
每次运行都可以根据场景、随机种子和引擎版本逐比特复现。每项能力在经机器检查的台账(ledger)中带有三种标签之一:VALIDATED(独立的外部参考基准(oracle)一致)、MODELLED(内部自洽,并明确说明)或PARTNER(由硬件合作方负责)。
状态:v0.40.0。面向PNT韧性的、经独立核对且可复现的仿真基础。授时与守时优先,因为该领域经独立核对最为充分。Kshana是研究与权衡取舍的工具:不是射频(RF)信号发生器硬件(它不驱动任何无线电,也不发射任何信号;其信号级输出是供软件接收机使用的基带IQ采样文件),不是硬件接收机,也不是经认证的GNSS接收机(其软件接收机是一款分析工具),更不是飞行产品。刚接触这个领域?请从通俗入门和术语表开始。
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),拟合序列可驱动守时。对照预先登记的判据,拟合在六条记录中的五条上未达到 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(任何被关闭的标准输出)不再触发panic:程序以状态141安静退出,与其他工具对被关闭的管道所做的相同。其他写入错误仍会自行报告。 - Dependencies. 两个ANISE交叉核对锁文件中的
memmap20.9.11,以及参考基准环境固定版本中的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(取自采用BSD许可的pyrtcm表,而不是RTCM文本)、GNSS-SDR监测数据流、作为第二传感器的IMU日志、一个ROS 2软件包、一座gnss_lib_py桥接,以及用于混合传感器参数的imu-fit |
MODELLED:六条台账行;只用自行编写的测试夹具,没有读取来自真实接收机、IMU、GNSS-SDR运行或ROS图的任何采集数据 | 机器输入 |
| 授时与守时测试 | holdover-test类型依据ITU-T模板,根据实测的钟差记录为守时测试(由操作人员撤去GNSS、守时、恢复)评分,措辞为“对照模板测得”;linuxptp和chrony日志读取器;硬件阶段和lab-attestation字段 |
MODELLED:两条台账行;时间是操作人员的陈述,未经验证 | 授时HIL,硬件安全 |
| 标准包、LunaNet AFS、实验室往返 | 针对DHS RPCF、IMO MSC.1/Circ.1575和ICAO Doc 9849附录F、依据运行前所陈述判据评分的评分包,措辞为“为……提供证据支持(supports evidence for)”;NIST IR 8323r1对照表;LunaNet AFS码生成器和检查器;一个把实验室运行的场景、测试条件、接收机日志和评分关联起来的已签名包 | 评分包和往返为MODELLED;AFS码检查为VALIDATED,对照的是其印出的校验列(见台账行) | 标准、LunaNet AFS |
| kshana-bench与观测台 | 针对干扰检测、IQ检测、守时预测和乐观差距的固定任务、数据划分和指标,附带封存的保留集和静态排行榜;一项可复现的每日干扰产品,延迟24 h,单元格较粗,不作成因归属 | 没有自己的台账行:它为提交内容评分,其基线在结果文件中标注为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桥接,最终都汇入同一条接收机信任度时间线。imu-fit从静止IMU日志中读出混合与融合场景所需的传感器参数,这样场景就可以用你实际拥有的传感器来运行。
kshana imu-fit still.csv --format csv --axis x --expected-mean 0 --id bench-imu
台账状态:MODELLED。只用自行编写的测试夹具;没有读取来自真实接收机、IMU、GNSS-SDR运行或ROS图的任何采集数据。机器输入。
授时与守时测试#
holdover-test类型依据ITU-T模板,根据实测的钟差记录为守时测试(由操作人员撤去GNSS、守时、恢复)评分,并用这样的措辞表述:对照模板测得。linuxptp和chrony日志读取器为它提供输入;硬件阶段和lab-attestation字段说明各项内容由谁陈述。
kshana scenarios/holdover-test-example.toml
台账状态:MODELLED。撤去和恢复GNSS的时间是操作人员的陈述,未经验证。授时HIL、硬件安全。
标准包#
针对DHS弹性PNT测试规范、IMO MSC.1/Circ.1575和ICAO Doc 9849附录F的评分包,另有compliance-report中的NIST IR 8323r1对照表。每项测试运行一个内置场景,并将某个结果字段与运行前所陈述的判据比较;需要接收机日志的测试被列为需要输入,而不评分。措辞为“为……提供证据支持(supports evidence for)”。
kshana standards-pack list
kshana standards-pack run imo-circ-1575
台账状态:MODELLED。达到判据,说明的是一个由模型计算的场景达到了所陈述的判据,对任何产品则什么也没有说明;每一次未达到判据都予以保留,并由测试固定。标准。
LunaNet AFS#
LunaNet增强前向信号码生成器(Gold码、Weil码和三级码、消息帧及其纠错编码),以及针对已记录或已生成符号流的检查器,固定于规范的某一版次。
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印出了同一个值)。不检查子帧2至4的LDPC和CRC字。台账行准确说明了是哪些。LunaNet AFS。
实验室往返#
kshana.test-conditions/1是对实验室所做之事(事件、时间、功率)的已发布描述。kshana evidence round-trip把场景哈希、条件哈希、接收机日志哈希和评分关联成一个已签名的包,并拒绝条件与评分场景在事件上不一致的包。Kshana从不产生或重放信号:场景如何到达接收机,由操作人员负责。
kshana evidence --help
该图展示的是一个证据包的版面结构。台账状态:MODELLED。测试条件,测试bench。
kshana-bench#
为干扰检测、IQ检测、守时(holdover)预测和乐观差距设定的固定任务、数据划分与指标,配有封存的保留集和静态排行榜。它为提交的结果打分;它不是对接收机的排名。
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 h之后才发布,小单元格被抑制,且不做成因归属。
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:没有外部参考基准(oracle)、没有地面真值,也不做成因归属;未观测的单元格表示未经评估,这与正常不是一回事。观测站方法。
导出器#
以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这一类型可以把某个站点天气的一次带随机种子的实现写成链路裕量序列:云层事件、每个事件对应的液态水柱,以及每步一个闪烁采样。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)#
面向位于GNSS轨道之上、之周或远在其外的航天器:它能用多少GNSS信号,信号有多强,几何构型有多好,以及星载滤波器能用这些信号做什么。一种类型,四种模式,由场景的表格选定:用户的壳层(每个星座有一个和有四个信号的时间占比)、轨迹(沿轨道的信号、C/N0、精度因子和临边射线介质)、导航运行(基于伪距的九状态滤波器,一直到月球)以及编队(副星相对主星的相对导航)。可用性比较所用的公开来源是互操作GNSS空间服务区手册(联合国外空司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:上、下服务区几何(52个单元格中的43个和52个中的48个)、15/20/25 dB-Hz上服务区、六项GEO任务、HEO任务,以及参数化旁瓣方向图与实测GPS面板方向图的对照。S1至S5中几乎每一处未达标都涉及GLONASS,而手册为它印出了两组不同的参考角;采用另一组角度的诊断变体可使S1、S2和S4的每个单元格都达标,但它并不取代正式记录的运行,也没有任何一行为VALIDATED。编队运行中的绝对滤波器同样过于自信(平均归一化误差平方远高于一致滤波器所给出的约3)。
月球基础设施(lunar-infrastructure)#
把月球的轨道和表面作为导航与大地测量基础设施,共五项研究,由study选定:od-consistency(晕轨道上基于地球GNSS的星载定轨与独立的地面定轨的对照)、carrier-phase(月面站与轨道器之间的整周模糊度固定)、frame-coestimation(有无轨道器链路时,由地球站测距得到的月球基准)、space-tie(同一航天器上的激光、VLBI和GNSS偏差与局部连接误差的对照)以及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 m/s2模型误差未被检测到(C3:星载解的已知精度约为350 m,因此约十米的误差隐藏在其协方差之中);未能实现整周固定(在25 dBi时成功率为1至3 %,而在登记的12 dBi时无法构成该问题);以及G3中关于增加观测量类别的迹半部分(在28次增加中,迹在12次中上升,每次都是因为该类别提高了秩)。每一项未达标都由一个测试固定。月球基础设施。
Kshana Studio#
打开kshana.dev/studio,整个引擎就会在你的浏览器中运行,已编译为WebAssembly。无需安装,也不上传任何内容。Studio对同一个引擎有两种视图,页眉中的开关可在二者之间切换,并保留场景、视图和你更改过的所有设置。
简易视图是Studio打开时的默认视图。它从问题出发(我能看到多少颗卫星、我能否信任我的定位解、时钟能守时多久、干扰机会对我的接收机造成什么影响),并给出一张引擎全部能力的地图,每个领域都附有经验证方法所占的比例。打开一个场景,答案最先出现:一句通俗的话,针对该场景所测量的内容而写,随后是其关键数据和一张图表。最多显示五项设置,即对答案影响最大的那几项;其余的收在高级设置之下。计算方式解释方法,面向研究人员则给出引擎自身的数据、场景文件、用Python运行它的代码以及引用格式。

高级视图是完整的仪表板:场景库、五个带编号的步骤(选择、设置、运行、查看结果、分享或导出)、在运行给出门限的地方带有PASS和FAIL标签的关键数据,以及所有面板:概览、图表、地图、回放、引擎报告和导出。一个搜索框即可查到场景、领域及其内部的字段,并且最多可以固定四次运行并排比较。
简易视图的开始界面,以及运行之后的高级视图


Studio的源码及其构建说明见web/README.md。
网站#
kshana.dev的其余部分由本代码库自己的文件和引擎运行构建而成:任务、能力、证据台账、已发表的研究和各个版本。

能力#
一个引擎覆盖整条失效链,从第一颗被压制干扰的卫星到时钟守时的最后一纳秒。引擎有92种场景类型;kshana kinds列出它们,docs/SCENARIOS.md记录了每个字段。
| 能力 | 它回答什么 |
|---|---|
| 频谱 | 干扰机如何逐频段、逐秒地占据GNSS L波段 |
| 时钟与授时 | GNSS丢失后每个时钟能守时多久 |
| 围绕任意天体的星座 | 地球、月球或火星周围的覆盖、精度因子和可用性 |
| 太阳系 | 每颗行星在何处,以及任意链路的光行时间 |
| 低地球轨道导航 | 一次过境、一条链路、一条导航电文和一次融合定位解,逐阶段呈现 |
| 测评活动 | 在一个场景中运行链式任务、参数扫描或蒙特卡罗集合 |
| 动画 | 把一次运行的时间序列做成动画绘图、播放器或帧 |
| 报告 | 每个数据都带有单位和标签,输出为HTML(超文本标记语言)和JSON(JavaScript对象表示法) |
| 互操作导出 | 供其他工具使用的轨道和几何数据:SP3、CCSDS OMM和OEM、CZML、KML、GeoJSON、STK和SigMF |
| 海事信任度 | 桥上能否信任这个定位解:针对船舶NMEA(实时或来自日志)给出0至100的分数及原因(仅供参考,不是经型式认可的导航设备) |
| 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:场景的载体运动和事件,供实验室GNSS模拟器使用(不写出任何信号),以及事后如何给接收机的日志打分 |
| compliance映射与报告 | kshana compliance-report:一组运行为公开韧性框架的哪些行提供证据支持(supports evidence for),以及仍然存在的缺口 |
| Notebook | 可运行的教程:船舶信任度与训练数据流、干扰地图航线暴露、compliance映射与测试bench,以及量子对比经典GDOP |
| Galileo OSNMA验证器 | 接收机可对哪些卫星的导航数据进行密码学认证,以及检查为何失败;Kshana不授予欧盟OSNMA ICD知识产权下的任何权利(见页面中的NOTICE) |
导出格式全称:SP3即Standard Product 3;CCSDS OMM和OEM是空间数据系统咨询委员会(Consultative Committee for Space Data Systems)的轨道平均根数消息和轨道星历消息;CZML和KML是Cesium和Keyhole标记语言;STK是Systems Tool Kit;SigMF是信号元数据格式。
每项能力,取自一次真实运行: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运行,第二项在examples/interference-map/中的样本上用kshana route-exposure运行,第三项用kshana nmea-scenario scenarios/training/coastal-drag-off.toml --out drag.nmea运行(仅限训练使用:绝不可输入到实时导航设备),第四项按docs/EVIDENCE-PACKS.md中的方式运行。
完整的能力表,按领域逐一列出
以下为按领域逐一列出的完整细节;各项能力的成熟度台账见docs/CAPABILITY.md和docs/VALIDATION.md。
| 领域 | 能力 |
|---|---|
| 轨道与几何 | SGP4/SDP4传播(对全部666个AIAA 2006-6753向量独立检验至4.12 mm);真实的两行根数(已提交的、带日期戳的Celestrak gps-ops快照)或合成的Walker-delta星座,其平均根数在24 h传播中实现i:T/P/F公式的误差小于1 km;多星座可见性、精度因子——几何、位置、水平、垂直和时间精度因子(GDOP/PDOP/HDOP/VDOP/TDOP),对照gnss_lib_py 1.0.4独立检验至1e-6,Stanford NAV Lab(导航与自主载体实验室)以及GNSS可用性;无梯度的星座设计优化器、覆盖带最少卫星数规模估算、多星座比较工具,以及一个Walker 设计扫描,它在轨道面数 × 卫星数的网格上列出覆盖/PDOP/重访时间,并报告帕累托最优的设计。 |
| 数值外推器 | 一个Cowell数值传播器(src/propagator.rs),与解析的SGP4/SDP4路径互补,带有分层的七项摄动力模型(src/forces.rs):二体加完整的J2–J6带谐场(地球扁率带谐系数J2至J6;其扰动位的精确解析梯度)、可选的最高70阶次的EGM2008田谐球谐地球重力位(Earth Gravitational Model 2008;src/gravity_sh.rs;真实的NGA(美国国家地理空间情报局)系数,Holmes–Featherstone归一化勒让德递推,并与闭式勒让德函数及解析 ∇V恒等式交叉核对)、由历元驱动的日、月第三体引力(内置的低精度星历,不使用DE/SPK(Development Ephemeris / SPICE航天器与行星内核)内核)、太阳辐射压(球形模型,带圆锥形本影加半影的阴影)、大气阻力(Vallado分段指数密度,共转大气)、后牛顿Schwarzschild相对论修正,以及Lense–Thirring框架拖曳项(IERS(国际地球自转与参考系服务)Conventions 2010 §10,与地球角动量成线性关系,比Schwarzschild项低约1–2个数量级)——由两种自适应积分器二选一驱动(RK4(四阶Runge–Kutta)步长加倍法,或Dormand–Prince RK5(4)嵌入对)。已对照Orekit 12.2(CS GROUP,Apache-2.0)的NumericalPropagator/DormandPrince853独立检验——LEO(低地球轨道)加GTO(地球同步转移轨道)共278个历元,保守力各层级一致,最坏情形为24 h内 |Δr| 0.08 m(tests/numerical_cowell_propagator_reference.rs);大气阻力一层单独表征(约333 m / 24 h),而绝对的日/月星历和密度输入则如实保持为由模型计算得出。其他内部证据(不属于外部检验):无摄动轨道与精确的通用变量开普勒解对照,在24 h内达到亚米级,能量/角动量守恒至约1e-9,每一项摄动都与手工推导的闭式特征相符。 |
| 机动与轨迹设计 | 带有6×6协方差传播的脉冲 ΔV节点(ECI(地心惯性系)/LVLH(本地垂直、本地水平)执行误差坐标系),有限推力积分与闭式的Tsiolkovsky火箭方程对照,误差小于0.01 %,一个Izzo-2015单圈Lambert求解器、一个精确的通用变量开普勒传播器,以及一个输出为JSON等值线网格的porkchop(发射 × 到达)C3(发射能量)/到达V∞ 扫描——即位于GMAT/Orekit之上的性能仿真层,每个Lambert输出都与二体真值做过往返核对,porkchop的最小值则与解析的Hohmann下限对照。 |
| 时间系统与参考框架 | IERS闰秒UTC / TAI / TT / UT1时间尺度(协调世界时、国际原子时、地球时,以及地球自转时间世界时1)、儒略日API(应用程序接口)、IAU-2000(国际天文学联合会)地球自转角(ERA)、基于GMST(格林尼治平恒星时)的TEME ↔ ECEF(真赤道平春分点 ↔ 地心地固)以及WGS-84(World Geodetic System 1984)大地坐标系、IAU 2006岁差(Fukushima–Williams)、完整的IAU 2000A/2000B章动、IERS 极移,以及不依赖春分点的基于CIO的IAU 2006/2000A GCRS↔ITRS归算(CIO = 天球中间零点)——均对照SOFA/ERFA向量逐位检验一致,并与ANISE独立交叉核对(ANISE是纯Rust的NAIF/SPICE重新实现;NAIF = 美国国家航空航天局NASA的导航与辅助信息设施):kshana的GCRS→ITRS与ANISE来自JPL earth_latest_high_prec.bpc的ITRF93(International Terrestrial Reference Frame 1993)相比,两者使用相同的IERS地球定向参数,在2020–2023年的八个历元上,地面处一致至≤ 0.86 m,GNSS轨道处一致至 ≤ 3.6 m(最大0.028″)。 |
| 惯性 | 三轴捷联INS——四元数姿态、WGS-84 NED(北东地)机械编排、圆锥/划船补偿,以及确定性的IMU误差模型(比例因子、失准、g敏感性、量化、漂移);一个基于第一性原理的冷原子干涉仪加速度计(Mach–Zehnder相位、量子投影噪声、对比度衰减、振动耦合),可推导出速度随机游走系数;以及一个序贯重要性重采样的粒子滤波器,用于地图辅助(以地形/重力为参照)的GPS拒止导航。 |
| 替代PNT(GPS拒止) | 一个冷原子重力仪测量模型,其白噪声底(σ = ASD/√τ,ASD = 幅度谱密度)由CAI加速度计物理推导而来;一个低阶、完全归一化的球谐重力异常场(与闭式勒让德函数和手工推导的单项异常对照)外加合成质量瘤;重力泛函合成核(gravity_sh::gravity_magnitude / gravity_disturbance_mgal)——即重力辅助导航器进行匹配所依据的“地图读取器”——已对照GRS80正常重力标准(Geodetic Reference System 1980)独立检验,复现了闭式Somigliana正常重力以及已发布的 γ_e / γ_p,误差3.5e-12,并由真实的ICGEM(国际全球地球模型中心)EGM2008场生成了物理上有界的扰动地图(RMS——均方根——约26 mGal,在d/o 70时最大约89 mGal;tests/icgem_gravity_reference.rs);以及一个重力地图匹配粒子滤波器,可由其飞越的异常序列恢复GPS拒止下的航迹。它可扩展到地形参考导航(TERCOM/SITAN——地形等高线匹配/Sandia惯性地形辅助导航——对照SRTM(航天飞机雷达地形测绘任务).hgt DEM(数字高程模型),src/altpnt/terrain.rs)、直到13阶次的IGRF-14地磁主场(第14代国际地磁参考场)(src/igrf.rs,与倾斜偶极子闭式和 ∇V有限差分对照),以及重力 + 磁 + 地形组合导航器,它通过一个粒子滤波器融合全部三个标量通道(信息是可叠加的——没有哪个通道会使定位解变差)。一个60分钟的GPS拒止基准测试(约700 km / 一小时的中断,期间惯性解漂移至约70 km)由分层的由粗到细匹配器恢复到约145 m(< 500 m)——这是ESA NAVISP(导航创新与支持计划)Quantum Wayfarer的目标。 |
| 融合 | 松耦合的15状态GNSS/INS误差状态EKF(扩展卡尔曼滤波器),带闭环反馈(gnss-ins包);一个紧耦合的伪距更新,在可见卫星少于四颗时仍可持续修正;一个耦合的时钟 + 位置滤波器;一个用于强非线性测量的通用无迹(sigma点)卡尔曼估计器;一个紧耦合的GNSS/INS UKF导航器(伪距 + 多普勒),其力模型轨道滑行在含120秒GNSS中断的30分钟弯曲LEO过境上经自洽性核对,RMS为0.77 m(这是滤波器一致性数据,不是对照外部参考基准(oracle)的检验——该导航器仍为MODELLED);以及一个完整的17状态紧耦合GNSS/INS UKF(位置、速度、姿态误差、加速度计和陀螺偏置、钟差和钟漂),其量子CAI航位推算依靠冷原子加速度计推导出的速度随机游走来滑行度过120秒中断。 |
| 定轨 | 由地面站测距跟踪恢复轨道状态[r, v],结合二体 + J2力模型和RK4积分器,使用Gauss–Newton批处理校正器(determine_orbit_batch,无噪声测距时达亚米级 / mm·s⁻¹,在5 m噪声底下约2 m),以及一种序贯无迹滤波变体(determine_orbit_sequential)。 |
| 可观测性与估计理论 | 一个通用、可复用的Fisher信息 / Cramér–Rao层(src/fim.rs):信息矩阵M = HᵀWH、Cramér–Rao下界、可观测性秩和基准亏损零空间(Moore–Penrose伪逆),以及由对称Jacobi特征值求解器得到的D/A/E/T最优实验设计标量。已独立检验——特征值对照numpy.linalg.eigh,CRLB协方差对照经numpy.linalg.inv计算的 σ²(XᵀX)⁻¹,以及由信息矩阵得到的GNSS DOP,全部吻合至1e-9(tests/fim_observability_reference.rs),并且另外与Kay(1993)闭式界以及蒙特卡罗CRLB达成情况交叉核对。它是DOP引擎、被动地理定位CRLB以及月球绝对站可观测性定理(见下文)的基础。 |
| 月球与地月空间 | 一个地月圆形限制性三体(CR3BP)传播器,位于旋转坐标系中——守恒的Jacobi常数和全部五个拉格朗日点(src/cr3bp.rs)——现已带有6×6状态转移矩阵(STM)和单次打靶微分校正器(cr3bp_jacobian、propagate_state_stm、differential_correct_halo),可生成真正周期性的晕轨道 / NRHO(近直线晕轨道):STM已与有限差分对照检验,校正后的轨道闭合到机器精度,以已发布的远月点状态为种子可复现L2南向9:2 NRHO(L2 = 第二地月拉格朗日点;Gateway轨道),周期约6.57 d / 近月点约3,250 km,与已发布的约6.56 d / 约3,370 km一致(这是CR3BP——圆形、不含太阳——的解,并未对照真实的LANS(月球增强导航服务)/Gateway星历检验;校正后轨道的月心MCI/MCMF(月心惯性系/月心月固系)变换留待后续);另有LunaNet / LNIS(LunaNet互操作规范)地月空间PNT几何(MCI↔MCMF归算、月面坐标),以及一次月球南极ARAIM过境,如实暴露出完好性缺口:约30 m的 σ_URE(用户测距误差)使保护级远高于50 m的告警限值(src/lunar.rs、scenarios/lunanet-araim.toml);以及一个月面信标DOP增强(src/lunar_beacon.rs),展示少数几个经测量的月面测距信标如何提供全部位于头顶的纯轨道集所缺少的低仰角、宽方位视线行——使病态的南极GDOP大幅改善,并通过方和根误差预算改善以米计的实际位置精度(复用经gnss_lib_py检验的DOP核和无大气地平线可见性闭式;精度因子分析写成了arXiv:2607.06212)。 |
| 月球PNT套件 | 一套建立在CR3BP核心之上的月球/地月空间导航套件,每一项都是可运行的kind:月球坐标时(lunar-time-offset、src/lunar_time.rs——由自位势差加动能项得出的长期LTC/TCL − TT速率(LTC = 月球坐标时;TCL = 其法文形式Temps-Coordonnée Lunaire),与已发布的56–59 µs/天范围一并报告);一个大地测量的月球VLBI(甚长基线干涉测量)时延观测量(lunar-vlbi、src/lunar_vlbi.rs——地球基线近场两程差时延加变化率,在远场极限下与同一代码库中的平面波 Δ-DOR(差分单向测距)交叉核对,偏导数经有限差分验证);一个联合多技术定轨 + 时钟批处理估计器(lunar-joint-od-clock、src/lunar_combination.rs——融合VLBI + 月面本地测距 + 星间测距的Gauss–Newton拟合),带有Fisher信息可观测性结论:仅靠内部测距,会留下六自由度刚体基准亏损,因此月面站的绝对位置不可观测,直到加入地球框架的连接——地球基线VLBI时延对稀疏星座恢复了可观测性,对密集星座则收紧了Cramér–Rao界,绝对基准在三个不共线的地球站时闭合(可观测性结论写成了arXiv:2607.02566);参考框架实现(lunar-frame-realisation、src/lunar_frame_realise.rs——7参数Helmert基准拟合 + IAU 2015 WGCCRE定向连接——WGCCRE = IAU制图坐标与自转要素工作组);一个Moonlight/LCNS级服务区分析(LCNS = 月球通信与导航服务;moonlight-service-volume、src/lunar_service.rs——DOP / 覆盖 / 可用性,加上一个广义的月球ARAIM HPL/VPL(水平/垂直保护级)包络,复用经gnss_lib_py检验的DOP核和LunaNet σ_URE≈30 m的机制);月球差分PNT(lunar-differential-pnt、src/lunar_dpnt.rs——月球差分GNSS / 星基增强系统(SBAS)的类比:精确的共模钟差抵消加一阶空间去相关随基线的变化,复用DO-229E SBAS保护级——DO-229E是RTCA(原为无线电技术委员会,Radio Technical Commission for Aeronautics)为SBAS接收机制定的最低运行性能标准);以及一个与LunaNet/IOAG对齐的互操作导出(IOAG = 机构间运行咨询组;lunar-interop-export、src/lunar_interop.rs——CCSDS-OEM(轨道星历消息)+ 月球时间尺度在IAU 2015月体坐标系中的往返转换,封装在KIF信封内)。各部分的证据等级见验证矩阵:月球坐标时、联合定轨 + 时钟估计器、参考框架实现和服务区几何为VALIDATED(各自对照其行所指明的独立参考基准(oracle),VLBI时延的核路径同样如此);VLBI观测量、基准亏损可观测性结论、差分PNT和互操作导出为MODELLED。参数是示意性的公开来源数值——未对照真实的VLBI/Gateway跟踪检验,与任何机构无隶属或背书关系,不作TRL(技术成熟度等级)/飞行经历方面的声明。 |
| 深空与火星PNT | 一个开放的无线电测量导航引擎:迭代光行时 + Shapiro相对论时延、双程/单程/三程多普勒与测距(Moyer两段)、相干转发器转换比、再生/PN(伪随机噪声)测距(CCSDS 414,伪噪声测距标准),以及Δ-DOR天平面(CCSDS 506,Delta-DOR标准),带有太阳等离子体/对流层/电离层介质;CCSDS-TDM(503)跟踪数据消息的解析与输出;一个简化动力学平方根信息滤波器(RTN——径向、横向、法向——经验加速度 + 3状态星载时钟 + 火星大气阻力),在合成闭环中实现火星LMO定轨,精度约0.2 m;一个联合的单程 + 双程融合估计器;一个多天体动力学核心(Body{μ, re, zonals, gravity, IAU-pole}、火星GMM-3(Goddard Mars Model 3)重力、IAU火固系火星坐标系、可插拔的EphemerisProvider接口、两段式儒略日 + TT↔TDB(质心力学时));以及mars-pnt中继PNT场景(一个MARCONI火星静止中继星座),配有端到端的GSE性能仿真器(GSE = 地面支持设备)(几何 → 链路预算 → 观测量 → SRIF → 协方差)。经仿真检验(协方差/闭环性能指标);以太阳为中心的火星动力学与JPL DE440交叉核对(137 m @ 1天弧段,xval/anise-mars-od)。对真实DSN/ESTRACK跟踪数据的检验列在路线图上。 |
| 太阳系与任意天体PNT | 一个无需内核文件的整个太阳系星历(src/ephem.rs、src/ephem_provider.rs):每颗行星取自JPL Standish开普勒根数(表1,公元1800–2050年;表2a/2b,公元前3000年至公元3000年),并附有每颗行星已发布的标称误差,地球和月球由月球级数拆分,火卫一、火卫二、木卫一、木卫二、木卫三、木卫四和土卫六取自JPL平均根数和IAU(国际天文学联合会)自转模型;任一天体相对任一其他天体,在ICRF(国际天球参考框架)中给出。Body现已带有十八个天体的GM(引力参数)、半径、已发布的J2(二阶带谐项)以及IAU极点和本初子午线。solar-system类型报告任意两个天体之间的位置、速度、常数、光行时和单程/双程距离(沿用现有的无线电光行时求解器,含太阳Shapiro时延)以及每个天体的轨道轨迹——足以绘制一个可交互的太阳系;body-pnt类型把轨道器或着陆器定位在任意天体周围(scenarios/mars-orbit-pnt.toml、scenarios/europa-surface-pnt.toml),带有本地Walker星座、精度因子和Gauss–Newton机制,以及来自地球的深空测距。已对照 JPL Horizons(DE441,JPL Development Ephemeris 441)独立检验:表1中的水星至土星和地球在标称误差的两倍以内(最坏1.87×),表2a/2b中的全部八颗行星(最坏1.71×),以及地球—火星/木星的光行时。由模型计算得出:表1中的天王星和海王星(相对DE441为所述误差的2.0× 和5.2×)、冥王星、各卫星,以及body-pnt导航结果。 |
| 融合的MEO + LEO PNT | src/leo_fusion/:与系统无关的LEO定位、导航与授时,适用于任意星座(Walker壳层、根数集、GNSS预设)和任意信号(载波、码速率、C/N0包络、空间信号测距误差),可选带有附带来源的单文件预设(Xona Pulsar X1/X5、Iridium STL、Starlink机会信号、CentiSpace、一个具代表性的C波段系统、ATOMIC零钟星历模型)。leo-pvt:基于距离变化率的批处理多普勒定位(单星和多星、钟漂和速度状态、单次过境沿航迹/横航迹几何及其镜像解)、带有各系统间偏差和调用方提供的各信号sigma的联合GNSS + LEO加权最小二乘、DOP随LEO卫星数量的变化、极区和北极覆盖,以及随C/N0和振荡器变化的LEO到UTC时间传递。leo-ppp:一个浮点解PPP(精密单点定位)EKF(扩展卡尔曼滤波器),分别仅用GNSS和加入LEO,给出其收敛时间和卡方NEES一致性检验。ntn-positioning:由带宽的Cramér-Rao界得出的5G非地面网络定位。已独立检验:LEO多普勒包络对照已发布的Iridium和Xona数据。由模型计算得出:其余部分,其中PPP趋势与Li等(2019)对照——见docs/LEO-PNT-FUSION.md。 |
| 完好性 | 快照式和解分离式(ARAIM风格)RAIM——接收机自主完好性监测——带水平/垂直保护级(HPL/VPL)、故障检测与排除以及Stanford完好性图;一个显式的完好性风险预算多假设解分离(MHSS)保护级,包括双星座/多星座的全星座故障模式(EU(欧盟)ARAIM / DO-316,RTCA针对带机载增强的GPS机载设备的性能标准),在一个真实的GPS + Galileo快照上演练(scenarios/araim-gps-galileo.toml)。该保护级对每种故障模式应用单侧的标称偏差投影b_k = Σ_i|s_i|·b_nom,并使用来自完好性支持消息的完好性 sigma σ_URA(用户测距精度;有别于精度的 σ_URE,即用户测距误差)——见docs/ARAIM_REFERENCE.md。检测核(χ²/非中心 χ²/正态阈值及K乘数)在171个用例上已对照SciPy做外部检验(tests/raim_reference.rs);几何部分复用经gnss_lib_py检验的DOP核。ARAIM MHSS完好性风险预算分配本身没有已发布的数值参考基准,如实保持为由模型计算得出。 |
| 增强(SBAS) | SBAS / WAAS保护级(WAAS = 广域增强系统),采用DO-229E加权最小二乘形式(精密进近和航路K因子),以及支撑DO-316的L1/L5双频无电离层组合(L1和L5是两个GPS民用信号频段;IS-GPS-705,即L5信号的GPS接口规范,γ₁₅ ≈ 1.793)——src/sbas.rs。该保护级算法已对照RTKLIB SBAS-PL分支做外部检验(RTKLIB = 开源实时动态定位库;PL = 保护级)(zsiki/rtklib_ws waasprotlevels(),Siki与Takács 2017,DO-229D——DO-229的前一版——附录J),在真实的EGNOS数据(欧洲静地轨道导航重叠服务)上运行,复现其HPL,误差< 2e-3 m(tests/sbas_reference.rs);gLAB(GNSS实验室工具套件)v6.0.0确认了相同的约定。 |
| 时钟与授时 | 双状态卡尔曼守时(Joseph形式协方差,NIS/NEES——归一化新息平方/归一化估计误差平方——一致性健康度);Allan族稳定度(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漂移指标另外在NIST SP 1065序列上与独立的allantools 2024.06库交叉核对,吻合至< 1e-9(tests/mtie_reference.rs、tests/mdev_tdev_reference.rs);几何修正(Sagnac、GNSS共视);以及实际运行中的传递方法——带BIPM(国际计量局)Sagnac闭式的TWSTFT(双向卫星时间频率传递)、GNSS共视、PPP(精密单点定位)无电离层时间传递、带湍流闪烁的自由空间光学链路,以及优于最佳贡献时钟的逆方差时钟组(纸面)时标。一个GNSS拒止时钟守时(holdover)计算器(src/holdover.rs)把闭式van-Loan滑行误差增长表达为守时到阈值的反演——即时钟自由运行多久后其授时误差会超出预算——涵盖具代表性的经典和量子时钟类别;由模型计算得出(与多步clock_state协方差递推交叉核对),并如实指出,对于非常稳定的时钟,到紧阈值的守时由假定的长tau噪声底决定,而不是所引用的ADEV。一个条件授时保护级(src/tpl.rs)把守时扩展到欺骗干扰:在有独立交叉核对的前提下,对未被检测到的时间误差给出界限,它由k-sigma监测下限、检测延迟内的van-Loan滑行方差和CUSUM(累积和)报警时间组合而成。以一次真实记录的欺骗干扰(JammerTest 2024)标定,可通过cargo run --example tpl_jammertest复现;MODELLED组合(没有每小时完好性风险预算),以检测到为条件——不存在有限的无条件界限。 |
| GNSS测量域 | 带Klobuchar(广播)和IONEX / TEC网格(IONosphere map EXchange格式 / 电子总含量;实测)电离层的伪距/多普勒正向合成——包括IONEX文件解析器、地图之间的时间插值以及薄壳斜距倾角映射——Saastamoinen + Niell对流层,以及快照式RAIM(HPL/VPL)。 |
| 韧性 | 链路预算压制干扰(J/S → 有效C/N₀ → 失锁——干信比、载噪比密度——其中抗干扰谱分离因子Q现已通过src/navsignal.rs 由实际的信号和干扰机功率谱推导——Q = 1/(R_c·κ),并在CI中与先前具代表性的常数做交叉核对);一个随机时间欺骗干扰检测器(Neyman–Pearson / χ²₁ 能量检验,带闭式和蒙特卡罗的P_fa/P_md,以及安全性能指标(FoM)1 − P_md);一个多层欺骗干扰检测器,融合RAIM一致性奇偶检验(如实模拟其共模盲区)、射频AGC功率(自动增益控制)监测器和信号质量(SQM——信号质量监测,早减晚)监测器;以及量子惯性航位推算误差预算(QuantumNavBudget、src/inertial/quantum_imu.rs),把冷原子干涉仪白噪声速度随机游走与残余偏置(与独立的AccelModel积分器交叉核对)和比例因子误差合成为守时期间的位置漂移数据——即时钟守时的惯性对应物。一个与框架对齐的韧性评分引擎(src/resilience/)把某个架构的仿真行为映射为Kshana自己七个韧性类别(不是DHS的术语)上的各维度子分数,对齐于美国国土安全部的Resilient PNT Conformance Framework,然后研究任何单一综合分数或成熟度等级在Dirichlet权重单纯形和五种威胁集合下的决策稳定性——Kendall-τ 排名不稳定性、top-1获胜者更替率和共模多样性坍缩(Hill-N2),并附带完整性哈希的保证报告(35个手工推导的参考基准测试)。可通过cargo run --example resilience_report复现;MODELLED的合成架构,是对照RPCF v2.0的自我评估,不是认证。见docs/RESILIENCE-CROSSWALK.md。 |
| 无源射频地理定位 | TDOA/FDOA辐射源地理定位(到达时间差/到达频率差;src/geolocation.rs)——根据接收机网络上的到达时间差双曲面来定位干扰机或欺骗干扰源(或用于反向PNT的机会信号源),用Gauss–Newton最小二乘求解;加入带运动接收机的到达频率差后,可联合恢复辐射源的位置和速度,并由网络几何推导出位置协方差的Cramér–Rao界。MODELLED(内部自洽性参考基准:正向→反向往返、J·CRLB = I恒等式、GDOP单调性,以及估计器在蒙特卡罗下达到自身的CRLB)——点源视线模型,不含多路径 / NLOS(非视线)、接收机钟差或折射项。 |
| 导航信号与码跟踪 | 位于链路预算与测量域之间的信号层(src/navsignal.rs):BPSK-R(n)(矩形码片的二进制相移键控)和sine-BOC(m,n)(二进制偏移载波)的单位面积功率谱密度(PSD);谱分离系数(SSC)κ = ∫ G_s·G_i df,用它推导出干扰模型所用的抗干扰Q(Q = 1/(R_c·κ)),取自实际的信号/干扰机谱,而不是具代表性的常数;RMS(Gabor)带宽(BOC > BPSK——测距信息 / Cramér–Rao度量);相干早—晚DLL码跟踪热噪声抖动(DLL = 延迟锁定环;Kaplan与Hegarty;C/A——GPS粗捕获码——在45 dB-Hz时约为亚米级);以及多路径误差包络(相干EML,早减晚——窄相关器抑制)。已对照闭式锚点独立检验(BPSK自SSC = 2/(3·R_c)、单位面积PSD、亚米级C/A抖动)。这是信号性能分析,不是天线 / 射频有效载荷硬件设计(那是有效载荷合作方的职责)。 |
| 互操作性 | RINEX-3多GNSS广播星历摄取(GPS、Galileo、QZSS——日本的准天顶卫星系统——、BeiDou MEO/IGSO——中地球轨道 / 倾斜地球同步轨道——依据GPS接口规范IS-GPS-200;GLONASS,俄罗斯的全球导航卫星系统,依据PZ-90——俄罗斯Parametry Zemli 1990基准——状态向量RK4),可用作星座来源(输入RINEX,输出PNT几何);一个RINEX-3观测值解析器(伪距、载波相位、多普勒、信号强度;4.00观测值布局预计可以解析但未经测试,而RINEX 4导航文件按名称被拒绝,而不是被错误解码),现已馈入单点定位(SPP)求解器(pvt)——输入真实的码观测值,输出真实的接收机位置,已在IGS数据上独立检验;一个SP3-c/d精密星历读写器,带9阶Lagrange插值;以及面向飞行动力学工具(GMAT、Orekit、STK——Systems Tool Kit)的CCSDS OEM 2.0 + OMM(轨道平均根数消息)导出;以及面向深空无线电测量跟踪的CCSDS-TDM(503)跟踪数据消息解析与输出。 |
| 任务分析(系统工程) | 一阶任务设计预算,每一项都是可运行的类型:二体发射与上升几何(launch-window——发射方位角sin Az = cos i/cos lat、最小倾角、地球自转增益、dogleg平面变轨 Δv、每日发射机会;src/launch.rs);Allen–Eggers弹道再入走廊(reentry——峰值减速度、峰值g的速度/高度、峰值热流的速度;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,逼近理想解排序技术)、折衷规划(VIKOR,源自塞尔维亚语“多准则优化与折衷解”)以及优先超越(PROMETHEE II,偏好排序组织法;ELECTRE I,源自法语“表达现实的消除与选择”),外加比率系统MOORA(基于比率分析的多目标优化)和比例式COPRAS(复杂比例评估)——并带有AHP(层次分析法)成对比较优先级权重(一致性比率)、Pareto非支配前沿、权重敏感性分析和多属性效用评分。这九个聚合器复现了独立的第三方库pymcdm(WSM / WPM / WASPAS / MOORA / TOPSIS / VIKOR / PROMETHEE II)和pyDecision(ELECTRE I、COPRAS),吻合至< 1e-9,AHP优先级向量 + 一致性比率与Saaty的随机指数表以及SciPy/LAPACK主特征值求解器吻合至< 1e-9(tests/mcda_*_reference.rs)。VALIDATED——位于权衡研究引擎之下的决策层。 |
| 空间环境 | 一个空间天气环境模型(space-weather、src/space_weather.rs):太阳(F10.7 / 以81天为中心的F10.7a——10.7 cm太阳射电流量)和地磁(Kp,行星K指数,附按定义的Kp↔ap对照表——ap为其线性的行星幅度)活动指数,由它们驱动的Jacchia-1971外逸层温度(已对照已发布的太阳极小/平均/极大值检验),以及在某一高度上按活动修正与静态的热层中性密度——即静态USSA76(美国1976标准大气)大气所忽略的太阳周期密度依赖。MODELLED:经标定的一阶标高耦合,不是经数据检验的(NRLMSISE——美国海军研究实验室质谱仪与非相干散射雷达外逸层模型)大气。 |
| 机器学习评估与权衡 | 一个射频损伤检测评估试验台(impairment-eval、src/impairment_eval.rs):带标签、以参数为基础的合成语料(正常 / 压制干扰 / 时间欺骗 / 位置欺骗 / 多路径),一个与检测器无关的ROC/AUC(接收机工作特性 / 曲线下面积)测试框架,可对任意检测器(energy | agc | sqm | parity | fused)打分,给出目标Pfa(虚警概率)下各类别的Pd(检测概率),以及分布内与分布外的乐观差距(分布偏移模式)。外加一个量子对经典PNT权衡(quantum-trade、src/quantum_trade.rs),根据实测ADEV曲线对比经典基线,量化候选时钟的授时/惯性守时收益,工件上附带长 τ 底的限制说明,以及GNSS拒止下韧性随时间变化的包络。评估指标(AUC / 混淆矩阵 / Pd-Pmd,Pmd为漏检概率)已对照scikit-learn 1.9.0独立检验为完全吻合——包括在真实的ESA OPS-SAT遥测上(OPSSAT-AD异常检测数据集,Ruszczak等2025,CC BY 4.0——Creative Commons署名4.0),其中Kshana的Mann–Whitney ROC AUC在保留的测试集划分上复现了scikit-learn的roc_auc_score,吻合至< 1e-9,而一个透明的峰值计数检测器能以AUC ≈ 0.85区分带标签的异常(tests/opssat_ad_reference.rs)——并且权衡引擎的数值核(ADEV NNLS——非负最小二乘——拟合、χ² 一致性带、van-Loan时钟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中断期间,冷原子干涉仪惯性滑行对比导航级INS,并如实指出:没有外部定位解时加速度计偏置不可观测,因此误差仍会增长);以及量子系统的故障/异常检测(quantum-anomaly-detect、src/quantum_faults.rs——带标签的故障目录,其带自助法置信区间(CI)的ROC AUC来自经外部检验的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标签包裹起来,使存储的工件保持自我说明,旧信封也仍可向前兼容地读取。 |
每项能力都可以通过Rust API、可运行的场景kind或二者兼有的方式使用。每项能力的成熟度——经独立检验、可运行或库——记录在docs/CAPABILITY.md中。一个机器检查的验证矩阵(src/verification.rs)给出需求 → 模块 → 测试 → 参考基准 → 状态的交叉引用,并带有经单元测试的诚实性不变量:只有在独立的外部参考基准支持时才允许使用经独立检验的标签——并记录Kshana有意不提供的硬件/PA(产品保证)能力。
四个传感器包,首次发布时的结果
结果#
每个场景都在约1.8 h的GNSS中断期间,把量子传感器与其经典对应物作比较。数值可复现(scenario + seed + version)。
GNSS消失时量子传感器带来的收益——clock-holdover · 随机种子42 · 以引擎0.40.0绘制,上方每个数据在每次构建时都由tests/published_figures_still_reproduce.rs对照当前引擎重新核对 · SVG
优势取决于中断时长和振动,并有明确的盈亏平衡点,超过该点则经典方案占优——在整个技术成熟度阶梯上如实展示(光钟数据是地面演示器的目标;尚无锶光钟上过天):
量子对经典韧性交叉点——时钟守时TRL阶梯(上)· 带盈亏平衡等值线的惯性优势图(下)。可通过cargo run --release --bin crossover_study重新生成。
GNSS中断期间的航位推算位置误差:量子传感器(蓝色)在规格附近保持平稳;经典传感器(红色)发散到数十公里。由Kshana根据scenarios/imu-deadreckoning.toml生成。
| 包 | 场景 | 量子 | 经典 |
|---|---|---|---|
| 1 — 时钟守时 | clock-holdover.toml(20 ns规格) |
光钟撑过整个中断 | CSAC在中断中途超出规格 |
| 2 — 惯性航位推算 | imu-deadreckoning.toml(100 m规格) |
冷原子:约41 m,撑过整个中断 | 导航级:在约350 s时超出规格 → 数十km |
| 3 — 时间传递(光学星间链路) | timetransfer.toml |
光学:约0.3 mm测距 | 射频(TWSTFT):约150 mm测距 |
| 4 — 混合融合(压轴) | hybrid-pnt.toml |
整个中断期间的完整位置+授时 | 位置受限,约350 s |
压轴方案展示了融合的论点:光学星间时间传递使即便是经典时钟也保持锁定,从而把惯性传感器孤立出来,成为经典套件的薄弱环节——即量子惯性加光学授时二者结合。
经历GNSS中断的时钟守时:光钟(蓝色)在整个滑行期间保持在20 ns规格之内;芯片级时钟(红色)在中途超出规格。由Kshana根据scenarios/clock-holdover.toml生成。
另一个场景orbit-gnss-challenged.toml由轨道几何而非手工编写的时间窗口推导出GNSS可用性:GNSS壳层内的航天器针对类GPS的Walker星座传播,可见卫星数(视线、地球遮挡、仰角截止)决定每一步的定位解状态。一天之中,用户仅约59% 的时间处于有定位解状态;量子时钟在每一次中断期间都维持5 ns的授时解(可用性1.0),芯片级时钟仅为~0.83。
一天内的授时误差,GNSS可用性由轨道几何推导:可见卫星数(视线、地球遮挡、仰角截止)决定每一步的定位解状态,因此时钟必须滑行度过每一个间隔——光钟保持5 ns规格,而芯片级时钟超出规格。由Kshana根据scenarios/orbit-gnss-challenged.toml生成。
星座也可以用真实的两行根数集(TLE)给出。完整的TLE(第1行 + 第2行)用完整的SGP4/SDP4模型传播——包括大气阻力以及对约12 h的GNSS轨道有影响的深空日月摄动和12 h / 24 h共振项——并对照官方AIAA 2006-6753向量检验,最坏情形约4 mm。scenarios/orbit-sgp4-gps.toml附带了运行中GPS星座的真实Celestrak gps-ops快照(2021-07-28,30颗卫星),并要求TLE校验和有效——两行根数集是来自美国太空军 / 第18太空防御中队目录的开放数据,由Celestrak再分发(T. S. Kelso博士,celestrak.org);用scripts/fetch_tles.sh刷新。仅含第2行的数据块沿用解析的二体传播(scenarios/orbit-real-tle.toml);两种形式可以混用于同一个星座。星座同样可以由一组RINEX-3 GPS广播星历记录构建——即接收机所解码的格式——按IS-GPS-200用户算法传播,并送入同样的几何(scenarios/orbit-rinex.toml)。
它是什么 / 不是什么,完整说明
它是什么 / 不是什么#
它是:一个确定性的、依赖很少的引擎,覆盖整个PNT技术栈——轨道几何、惯性导航、GNSS/INS融合、完好性、时钟和授时。它运行一个场景(通常是一次GNSS中断),让经标定的传感器误差模型通过相应的估计器演化,并对照运行层面的性能指标给结果打分——输出可复现的JSON(JavaScript对象表示法)结果和SVG图表,可通过Rust库、命令行界面(CLI)、Python扩展、浏览器内的WebAssembly模块、面向AI智能体的模型上下文协议(MCP)服务器,或JetBrains IDE(集成开发环境)插件使用。
它不是:飞行硬件、量子有效载荷设计、完整的GNSS信号接收机、射频(RF)信号模拟器或硬件在环试验台,也不是经认证的航空电子产品——而且它不取代MATLAB/Simulink、STK(Systems Tool Kit)或Orekit;它与它们并存,并与它们交换文件。量子硬件的保真度来自已发布的误差模型,而不是来自本工具。各项能力的详细成熟度记录在docs/CAPABILITY.md中。
它(目前)还不是:一个完整的原子干涉测量物理引擎(大多数量子传感器采用已发布的Allan/噪声预算系数;CAI(冷原子干涉仪)加速度计有一个第一性原理层——Mach–Zehnder相位、投影噪声、对比度衰减和振动耦合,外加Coriolis和光频移系统误差——但波前系统误差和条纹模糊度解算仍属P2(路线图第2阶段,量子物理层)路线图层,见ROADMAP.md和docs/QUANTUM-MODELS.md);一台经认证的或硬件的GNSS接收机(它根据真实的RINEX(Receiver Independent Exchange Format)码观测值解出单点PVT(位置、速度和时间)定位解——已在真实的IGS(国际GNSS服务)数据上独立检验——而它的IQ层(kshana iq,自0.31.0起)则在软件中对已记录或生成的基带采样进行捕获和跟踪,作为一台分析用接收机:它不驱动无线电硬件,也不发射信号,不是经认证的接收机,也不做载波相位定位(RTK或PPP));也不是完整的任务设计套件(它具有Lambert / porkchop / 机动 / 定轨的构建模块,但属于位于GMAT(通用任务分析工具)/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写成,如果引擎新增了没有任何系列点名的类型,两者都会失败。
所有命令#
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(汤姆的显而易见的极简语言)文件:一个类型、一个随机种子和若干参数。引擎运行它,并在旁边写出结果、一张图表和一份报告,以及你要求的导出文件。
这个内置场景运行2 h:10 min的GNSS,随后约1.8 h的GNSS拒止。它要问的是,一台锶光晶格钟和一台芯片级原子钟(CSAC)各自能把时间保持在20 ns以内多久。
kshana example clock-holdover > clock-holdover.toml
kshana clock-holdover.toml
scenario 5ba83a232b94 | quantum holdover 6600s p95 1.20e-4ns integrity 1.000 security n/a (no attack) | classical holdover 2610s p95 19.7ns integrity 1.000 security n/a (no attack)
wrote clock-holdover.result.json, clock-holdover.chart.svg, clock-holdover.report.html, and clock-holdover.report.json
光钟在整个6600 s的中断期间都保持在20 ns预算之内;CSAC保持了2610 s,在整个运行中有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失效之后,我的无人驾驶航空器系统(UAS)还能在位置预算之内停留多久,我的航线上是否有完好性可用? | 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结果,精确到随机种子? | sweep-clock-stability, quantum-pnt-demonstrator.suite |
证据#
SGP4已对照全部666个AIAA 2006-6753参考向量检验,最坏位置误差4.12 mm
401项能力中有176项已对照独立的外部参考基准(oracle)验证;221项如实标注为由模型计算。验证矩阵的每一行都写明一项能力、用来核对它的参考基准、运行该核对的测试,以及随之得出的标签。持续集成(CI)使得没有独立的外部参考基准就无法把某项能力称为VALIDATED。
| 标签 | 行数 | 含义 |
|---|---|---|
| VALIDATED | 176 | 有独立的外部参考基准与之一致:真实数据、独立实现或已发布的参考向量 |
| MODELLED | 221 | 对照解析真值或仿真自洽性核对,并明确说明 |
| PARTNER | 4 | 由硬件合作方负责;Kshana没有针对它的参考基准 |
部分核对结果:全部666个AIAA(美国航空航天学会)2006-6753 SGP4(简化通用摄动4)向量,精度达4.12 mm;Cowell力模型对照Orekit 12.2,精度达0.08 m;Galileo对照欧洲航天局(ESA)的真实精密星历,精度达0.61 m,Swarm-A精度达0.10 m。测试对src/的行覆盖率接近95 %,在CI中以85 %为门限。台账为docs/VERIFICATION-MATRIX.md,由src/verification.rs生成:完整的401行矩阵,以及每个由模型计算的行为何没有外部参考基准,见docs/MODELLED-RATIONALE.md。
验证如何进行、精选要点表和证据图
验证、可复现性与诚实性#
- 每个噪声项都按已发布、有引用的数据标定,并对照标准关系检验(时钟用阿伦偏差;惯性用Groves的航位推算误差增长;时间传递用授时→测距转换)。各项的状态在
docs/VALIDATION.md中记为validated或not modeled——没有任何内容在未经检验的情况下被称为已检验。 - 按构造即可复现:
scenario + seed + engine version → identical bits。scripts/check-reproducible.sh强制执行这一点;量子与经典运行使用相互独立的随机种子,因此它们的噪声不相关。 - 成熟度如实陈述:光钟和光链路的数据是目标 / 地面演示器的结果,并未上过天。
每个图表上的证据标签#
一次运行写出的每个图表和表格,都会说明应在多大程度上信任它,以及它依据的是台账中的哪些行。结果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证明——软件制品供应链等级)。
状态列说明证据的种类,与上文的验证阶梯相对应:VALIDATED = 已对照独立的外部参考基准核对(真实数据、独立的库或已发布的参考向量);MODELLED = 已对照解析真值或仿真自洽性核对(没有独立的外部数据集)。VALIDATED描述的是核对的方法,而不是通过/未通过——对照真实外部参考基准的一次如实未达标仍然是VALIDATED,而没有任何矩阵行将其指为参考基准的比较(上文的LRO——Lunar Reconnaissance Orbiter——拟合)则显示为MODELLED。CI行是过程防护,不是性能指标。少数真实数据孤岛(实测的铯钟、Stable32 PHASE.DAT,以及原始输入不带再分发许可的OPS-SAT/ICGEM核对)为数据门控:输入缺失时,测试会打印跳过通知并保持green,公开的参考数值提交在tests/fixtures/之下。用相应的scripts/fetch_*.sh复现原始输入。
| 状态 | 能力 | 一致程度 | 参考 / 参考基准(oracle) |
|---|---|---|---|
| VALIDATED | SGP4/SDP4传播 | 666/666个向量,最坏4.12 mm | AIAA 2006-6753(Vallado tcppver.out)+ 与独立的sgp4 crate正面对比 |
| VALIDATED | 参考框架——IAU 2000A/B章动、IAU 2006/2000A CIO链、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 m,GNSS轨道 ≤ 3.6 m | ANISE(纯Rust的NAIF/SPICE),同样的IERS finals2000A EOP,2020–2023年的8个历元(与该参考作比较;没有任何验证矩阵行将其指为外部参考基准,因此未标注为VALIDATED) |
| MODELLED | EGM2008地球重力位(阶次70) | 加速度 = ∇V,吻合至< 1e-6;带谐项收缩至经检验的J2 | NGA EGM2008系数 + 解析 ∇V恒等式 |
| VALIDATED | 重力泛函合成(重力辅助 / 无GNSS导航地图) | GRS80 Somigliana + γ_e/γ_p吻合至3.5e-12;真实的EGM2008扰动地图在物理上合理(RMS ≈ 26 mGal,d/o 70) | GRS80(Moritz 1980,IAG——国际大地测量协会)Somigliana正常重力 + 真实的ICGEM EGM2008(tests/icgem_gravity_reference.rs) |
| VALIDATED | 阿伦估计器(ADEV/MDEV/TDEV/HDEV)+ 置信带 | 复现参考偏差;χ² 带吻合 | NIST SP 1065(Riley),1000点表31/32 |
| VALIDATED | 在真实实测的铯钟上的阿伦估计器 | OADEV/OHDEV吻合至1e-3(观测值 ≤ 3e-5),16个平均因子 | Stable32作用于真实的5071A铯钟对氢脉泽,556,990个点(tests/cs5071a_reference.rs,数据门控) |
| VALIDATED | 在标准Stable32 PHASE.DAT上的阿伦估计器 | OADEV/MDEV/TDEV吻合至1e-3(观测值 ≤ 5e-5),139个平均因子 | PHASE.DAT的Stable32参考偏差(tests/phasedat_reference.rs,数据门控) |
| MODELLED | IMU误差模型——ARW / VRW / 偏置不稳定性 | 恢复至< 5 %(偏置不稳定性< 15 %) | Analog Devices ADIS16465数据手册;NaveGo参考剖面 |
| VALIDATED | 数值Cowell传播器 + 力模型(保守力各层级) | 24 h内最坏位置误差0.08 m,278个历元(LEO + GTO) | Orekit 12.2 NumericalPropagator/DormandPrince853(CS GROUP),tests/numerical_cowell_propagator_reference.rs |
| MODELLED | Cowell阻力层 + 绝对的日/月星历和密度输入 | 阻力层已表征,≈ 333 m / 24 h;无摄动情形与通用变量开普勒解吻合至亚米级,能量/动量 ~1e-9 | 内置的低精度星历 + 解析开普勒解 |
| MODELLED | Lambert · Tsiolkovsky · porkchop | 与二体真值往返核对;ΔV < 0.01 % | Izzo 2015 · 火箭方程 · 解析Hohmann下限 |
| MODELLED | 定轨(Gauss–Newton批处理) | 无噪声时亚米级 / mm·s⁻¹;在5 m噪声底下约2 m | 在RK4弧段上的二体 + J2 |
| MODELLED | 力模型对Galileo精密星历的拟合(全弧段) | 0.61 m 3-D RMS,24 h,d/o-70,仅力模型 | ESA/ESOC ESA0MGNFIN最终轨道(E11),真实的finals2000A EOP(与该参考作比较;没有任何验证矩阵行将其指为外部参考基准,因此未标注为VALIDATED) |
| MODELLED | 力模型对Swarm-A精密星历的拟合(简化动力学) | 0.10 m 3-D RMS(经验层的界限,不是一项测量) | ESA SW_OPER_SP3ACOM_2_精密轨道(与该参考作比较;没有任何验证矩阵行将其指为外部参考基准,因此未标注为VALIDATED) |
| MODELLED | 力模型对LRO月球的拟合(如实的未达标) | 6.67 m简化动力学,高于 5 m的目标 | JPL Horizons LRO(NAIF −85)+ GRAIL(Gravity Recovery and Interior Laboratory)GRGM660PRIM(与该参考作比较;没有任何验证矩阵行将其指为外部参考基准,因此未标注为VALIDATED) |
| MODELLED | 深空火星定轨(简化动力学SRIF) | ≈ 0.2 m火星LMO(仿真性能指标,不是真实任务) | 合成闭环定轨——估计器机制的检验 |
| MODELLED | 以太阳为中心的火星动力学对照JPL DE440 | 137 m @ 1天弧段(随弧段增长 = 未建模的n体) | 经ANISE的JPL DE440(xval/anise-mars-od,需要内核文件)(与该参考作比较;没有任何验证矩阵行将其指为外部参考基准,因此未标注为VALIDATED) |
| VALIDATED | 单点定位对照经测量的IGS坐标(真实观测值) | 5.7 m 3-D RMS / 1.1 m水平,双频无电离层码SPP | IGS站ABMF测量坐标 + GPS广播星历,2018-05-13(tests/pvt_abmf.rs) |
| MODELLED | 紧耦合GNSS/INS UKF | 在含120 s中断的30分钟LEO过境上0.77 m RMS | 力模型滑行,手工推导 |
| MODELLED | GPS拒止下的重力地图导航 | INS漂移约70 km → 恢复到约145 m | ESA NAVISP Quantum Wayfarer目标 |
| MODELLED | 地形参考导航(TERCOM/SITAN) | 70 km漂移 → < 500 m(网格分辨率下限约140 m) | SRTM .hgt DEM;手工注入的漂移(非循环核对) |
| MODELLED | IGRF-14主场(阶次13) | 磁极约80.7°N,偶极矩约29.7 µT,物理合理的22–67 µT范围 | IAGA(国际地磁与高空物理学协会)igrf14coeffs.txt(Schmidt半归一化) |
| MODELLED | 导航信号调制与码跟踪 | BPSK自SSC = 2/(3·R_c);单位面积PSD;亚米级 C/A DLL抖动 @ 45 dB-Hz | 闭式SSC/PSD锚点 + Kaplan与Hegarty的DLL热噪声公式 |
| MODELLED | CR3BP晕轨道/NRHO微分校正器 | STM = 有限差分;轨道闭合到机器精度;L2 9:2 NRHO ≈ 6.57 d / 近月点 ≈ 3,250 km | 有限差分STM核对 + 已发布的L2南向9:2 NRHO(≈ 6.56 d / ≈ 3,370 km)——CR3BP,不是真实的Gateway星历 |
| MODELLED | ARAIM双星座完好性 | 在真实GPS + Galileo上的全星座故障模式 | EU ARAIM TR(技术报告)/ DO-316;Celestrak gps-ops 2021-07-28(与该参考作比较;没有任何验证矩阵行将其指为外部参考基准,因此未标注为VALIDATED) |
| VALIDATED | GNSS几何 / DOP(GDOP/PDOP/HDOP/VDOP/TDOP) | 在8种几何构型(良态 → 近奇异)上吻合至相对1e-6 | gnss_lib_py 1.0.4(Stanford NAV Lab)——独立的库(tests/dop_reference.rs) |
| VALIDATED | ML检测器评估指标(AUC/ROC/混淆矩阵/Pd-Pmd/精确率/F1) | 在5个数据集 × 24个阈值上,计数完全一致 + < 1e-9 | scikit-learn 1.9.0(Pedregosa等,JMLR——Journal of Machine Learning Research——2011)——独立的库(tests/eval_metrics_reference.rs) |
| VALIDATED | 在真实的ESA OPS-SAT遥测上的异常检测ROC AUC | AUC复现scikit-learn,吻合至< 1e-9;峰值计数检测器在带标签的测试集划分上的AUC为≈ 0.85 | scikit-learn roc_auc_score在OPSSAT-AD测试集划分上(Ruszczak等2025,CC BY 4.0)——真实的OPS-SAT遥测(tests/opssat_ad_reference.rs) |
| VALIDATED | 量子权衡数值核(ADEV NNLS拟合 · χ² 一致性带 · van-Loan时钟Q) | NNLS + Q 完全一致;在工作自由度 ≥ 48时 χ² < 5e-4 | 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——国际电信联盟电信标准化部门建议书) | 在NIST SP 1065 LCG(线性同余生成器)序列上,MTIE(9个平均因子,逐位一致)和MDEV + TDEV(8个因子,相对< 1e-9) | 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库)+ Saaty RI(随机指数)/ SciPy-LAPACK特征值求解(tests/mcda_*_reference.rs) |
| VALIDATED | 由轨道和载波得出的LEO多普勒包络 | Iridium最大值与已发布的 ±36 kHz相差在5 %以内;Xona Pulsar X1处于已发布的32–34 kHz之内 | RNTF LEO PNT测试结果;Leclère、Marathe与Reid,arXiv:2509.19551(tests/leo_doppler_reference.rs) |
| MODELLED | 加入LEO增强后的PPP收敛 | 使用60 / 96 / 192 / 288颗LEO卫星时,7.4 → 4.8 / 3.2 / 2.7 / 2.3 min,单调;滤波器NEES处于 χ² 带之内 | 趋势与Li等人,J. Geod. 93:749(2019)作比较(9.6 → 7.0 / 3.2 / 2.1 / 1.3 min);星座和噪声未复现 |
| MODELLED | 条件授时保护级(欺骗干扰下受守时限制的未检测时间误差) | 该组合复现多步clock_state协方差递推;以一次真实记录的欺骗干扰标定 |
JammerTest 2024(Zenodo 15911589)标量 + van-Loan / CUSUM闭式(examples/tpl_jammertest) |
| MODELLED | PNT韧性评分 + 决策不稳定性 | 35个手工推导的参考基准测试;字节级确定性的研究工件(固定随机种子) | DHS RPCF v2.0映射 + Dirichlet / Kendall-τ / Hill-N2闭式——合成架构,不是认证 |
| MODELLED | 射频损伤乐观差距研究(标度律 + 留一预测器) | 置换零假设显著性;字节级确定性的工件(5个随机种子) | 以参数为基础的合成语料——评估指标已对照scikit-learn检验为VALIDATED(见上);该研究为MODELLED |
| CI | 跨平台可复现性 | 在3种操作系统(OS)上输入逐位一致 + 形状基准值 | Linux / macOS / Windows CI矩阵,SHA-256基准值 |
| CI | 测试覆盖率 | src/上的行覆盖约95 %,不含src/*_data.rs和src/main.rs,门限 ≥ 85 % |
cargo-tarpaulin(LLVM引擎) |
一项能力如何获得其标签:由CI强制执行的不变量:没有外部参考基准 ⇒ 不能被标为已核对 · SVG
上图:每一个已核对的行按构造均有外部数据集支撑。下图:SGP4在每一类轨道下均与官方参考值吻合(最坏4.12 mm)。SVG · SVG
已验证176 · 由模型计算221 · 合作方负责4 — SVG
能力领域#
公开能力图谱中的每一项能力,按领域分类,并附其台账(ledger)标签。领域表由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 |
docs.rs上的API参考 |
| Python | pip install kshana |
Python API指南 |
| JavaScript与WebAssembly | npm install kshana |
npm与WebAssembly指南 |
| AI助手(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 |
自托管指南 |
| JetBrains IDE插件 | Settings → Plugins → Marketplace → 搜索“Kshana”(插件ID dev.kshana.ide) | 插件指南 |
| Signal K插件 | npm install signalk-kshana-trust |
Signal K插件指南 |
| OpenCPN插件 | 从发布页下载插件tarball | OpenCPN目录提交 |
| Grafana仪表板 | 从发布页导入kshana-grafana-*.json | 仪表板源文件 |
| 参考构建镜像 | docker pull ghcr.io/ashfordeou/kshana-reference-build |
船舶集成 |
JetBrains Marketplace上的Kshana 需要Rust 1.88或更高版本才能构建,即Cargo.toml中的rust-version
MCP即Model Context Protocol(模型上下文协议)。可用cargo install kshana --version 0.40.0、pip install kshana==0.40.0或npm install kshana@0.40.0固定某个发布版本。从源码构建,请参见“参考”下的安装与构建。
从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)运行每个场景,可通过CLI、Python扩展、浏览器内的WebAssembly模块、面向AI智能体的MCP服务器以及JetBrains IDE插件访问,全部汇聚到同一个api::run_toml分派。内部,各传感器包接入统一的误差模型接口;与之并列的有参考坐标系层(IAU 2006/2000A岁差—章动,以及基于CIO的GCRS↔ITRS归算)、天体动力学/数值层(解析的SGP4/SDP4以及数值Cowell传播器,带EGM2008/摄动力模型、机动设计和定轨)、完好性/GNSS层(RAIM/ARAIM、SBAS、测量域、压制干扰(jamming)、地月空间)、融合/备用PNT层(GNSS/INS估计器以及重力/地形/磁场地图匹配器)、深空与月球层(射电测量的火星PNT以及月球PNT套件,每一部分的证据等级都记在矩阵中:LTC时间、VLBI、联合OD+时钟、坐标系实现、服务区、差分PNT、互操作)、任务分析层(发射/再入/覆盖/指向/过境/链路预算以及空间天气环境),以及开放的韧性与机器学习研究层(RPCF韧性评分、射频损伤的乐观差距,以及量子增强PNT演示器),其可复现的产物建立在已核对的计算核心之上。
核心旁边有两个独立的、被工作区排除的crate:mcp/kshana-mcp(MCP服务器,基于edition-2024的rmcp SDK)和xval/anise-frames(ANISE/SPICE坐标系交叉检查,会拉入MPL-2.0(Mozilla Public License 2.0)依赖);根目录的Cargo.toml中的exclude列表使它们不进入已发布crate的依赖图、Cargo.lock、许可证关卡和MSRV(最低支持的Rust版本)构建。JetBrains插件(ide/jetbrains)是独立的Kotlin项目。完整的图集见docs/ARCHITECTURE.md。
渲染好的图(引擎流程、模块图、分发)见docs/ARCHITECTURE.md。
图集#
这些图是docs/diagrams/中的Mermaid源文件,渲染为SVG和PNG并存入docs/assets/diagrams/(在Linux上用tools/render-diagram-chromium.sh <name>,其他系统用另外两个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
AI助手#
kshana-mcp是一个MCP服务器:你的助手运行真正的引擎并读回其JSON,而不是凭猜测去算数学。它的49个工具中每一个都是对kshana库某个公开函数的薄封装,因此服务器中不含任何仿真逻辑。
安装MCP服务器#
仅供参考,不是经型式认可的导航设备:导航责任仍由操作人员承担。服务器运行在本机;不向Ashforde OÜ 发送任何内容。
此处省略了一段提及第三方AI客户端的文字,该段见GitHub上的README.md。
| 通道 | 命令或按钮 | 需要 | 固定版本形式 |
|---|---|---|---|
| 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的formula |
| 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 |
| 远程(streamable HTTP) | kshana-mcp --http 127.0.0.1:8080,自行托管:见docs/deploy/mcp-http.md |
你自己的主机 | v0.40.0 |
此处省略了一段提及第三方AI客户端的文字,该段见GitHub上的README.md。
各客户端的设置见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),某格式不适用时的原因,以及每个写出器所遵循的规范 |
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 |
供实验室GNSS模拟器使用的场景载体运动和事件(kshana bench-export) |
接收机与船舶信任度
| 工具 | 作用 |
|---|---|
assess_receiver_log |
评估真实GNSS(全球导航卫星系统)接收机日志的信任度 |
assess_vessel_stream |
对一段有限的NMEA 0183摘录打分(至多2 MiB和20,000个历元 |
assess_vessel_log |
以批量运行方式处理船舶的NMEA 0183日志(至多4 MiB),并由会话TOML给出该船的限制 |
create_evidence_pack |
针对船舶日志某一时间窗的签名证据包(kshana receiver-trust evidence) |
attach_evidence_timestamp |
将RFC 3161时间戳令牌(.tsr字节的base64)在内存中绑定到证据包(kshana evidence attach-timestamp) |
verify_evidence_pack |
验证证据包(kshana evidence verify) |
generate_training_nmea |
根据nmea-scenario TOML生成用于船员训练的合成桥楼NMEA 0183(压制干扰(jamming)、位置拖离、时间欺骗干扰(spoofing)、重放延迟),并附教员日志(kshana-nmea-training/1) |
build_interference_map |
根据ADS-B或AIS位置报告的CSV文本生成GNSS干扰地图(至多4 MiB) |
route_exposure |
一条或多条干扰地图中,某条航线长度落在degraded、not-degraded、unassessed和not-observed单元格内的占比,可限定日期范围 |
trust_telemetry |
将信任度数据流(JSON行)或receiver-trust结果渲染为Prometheus文本、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 |
依据静止IMU日志(CSV或EuRoC),通过阿伦偏差拟合hybrid和fusion场景的加速度计和陀螺仪参数,附可直接粘贴的[accel_classical]表和日志的SHA-256(kshana imu-fit)。输入为文本,输出为JSON;MODELLED。 |
GNSS IQ(工作目录中的文件;HTTP模式下关闭)
| 工具 | 作用 |
|---|---|
iq_signals |
GNSS IQ层的设置 |
iq_info |
描述工作目录中的一份IQ(同相与正交)录制,而不对其做处理 |
iq_scene |
在工作目录中生成多卫星GNSS IQ场景(kshana iq scene) |
iq_acquire |
对录制数据中的一个或多个PRN(伪随机噪声码)做FFT(快速傅里叶变换)捕获(kshana iq acquire),可选择置于前端各级之后 |
iq_track |
先捕获,再用DLL/PLL/FLL(延迟锁定环、相位锁定环和频率锁定环)环路组跟踪(kshana iq track),环路取自 `kshana.loop-desig |
iq_frontend |
应用接收机前端与干扰抑制DSP(数字信号处理 |
iq_sweep |
在多种跟踪环路设计下回放工作目录中的一份IQ录制(kshana iq sweep) |
iq_monitor |
对工作目录中的一份IQ录制运行干扰和欺骗干扰检测监测器(kshana iq monitor) |
iq_labfit |
根据日志内联的iq-labfit场景(text或base64),将跟踪环路失锁模型拟合到实验室运行结果(kshana iq labfit |
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附录F的已打分场景集 |
run_standards_pack |
一个包对照运行前已声明的判据运行:每项测试为MET、NOT MET或NEEDS INPUT;MODELLED,不对任何产品评级 |
lunanet_afs_check |
对照LNIS V5 AD1第A卷(LSIS-AFS V1.0)检查的LunaNet增强前向信号:码对照所印的表,或符号流对照帧格式;子帧2至4的LDPC和CRC-24Q未经验证 |
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种场景类型,无功能门控 | 同一引擎之上的专有叠加层,按合同提供 | 为你代做的、针对你系统的MODELLED PNT韧性研究 |
| 许可 | AGPL-3.0(GNU Affero General Public License,版本3),或商业许可 | 专有 | 合同 |
| 如何开始 | 安装或打开kshana.dev | 申请Pro评估 | 申请一项研究 |
docs/PRO.md中对Pro的说明:
开放Kshana的严格超集。Pro以库的形式依赖开放的引擎,绝不分叉它。每种开放的场景类型在Pro中都原样运行,而开放场景无需任何许可即可在Pro中运行。
没有新的物理。Pro不增加任何物理模型,也不改动任何模型。Pro的每个数字都来自开放引擎的运行,因此Pro的一个数值与它所源自的开放场景类型同样可信,绝不会更可信。
Pro回答项目接下来的问题:该飞哪种设计(设计优化器及其Pareto前沿),答案有多可靠(不确定性与敏感性),以及任务是否满足其需求(任务档案、需求追溯、权衡研究、场景回归检查、时钟数字孪生、研究档案和本地部署服务)。它还会监视一组测评活动的数值,并在某个数值变差时让流水线失败;双向测试候选信号方案与开放的卫星导航信号(频谱共存);并在本地部署的作业服务中为研究排队,附带哈希链式的交付台账(ledger)。每一项及其产出和不做的事,都在docs/PRO.md中有说明。Pro产出的任何内容都不是认证,定制研究也不是认证。
Kshana Pro从开放引擎读取什么,以及Ashforde® OÜ 提供的支持
Kshana Pro建立在什么之上。Pro的每一部分都基于开放引擎工作,并保持其不变:
- 设计优化器、不确定性研究和任务档案通过引擎的公开接口运行开放引擎的场景,并根据运行结果计算每个数字。每项输出都保持开放引擎给予每个数值的VALIDATED、MODELLED或PARTNER等级,绝不更高。
- 时钟数字孪生使用开放引擎的时钟模型及其阿伦偏差估计器:孪生体先按器件公布的阿伦预算校准,再用开放的估计器估计该孪生体的阿伦偏差来检验。
- 权衡研究把每个架构方案都作为开放引擎场景原样运行,并依据从每次运行结果读取的性能指标对方案排序。
- 测评活动监视从包内各场景的开放引擎运行结果中读取其数值,并与上一次通过的运行比较。
- 频谱共存从
leo-signal和constellation-design类型的开放引擎运行中读取每个物理数值,只增加对可见卫星的求和以及对各方案的排序。 - 本地部署的作业服务通过同一个引擎运行开放和Pro场景,并按运行返回的原样存储每个结果。
- 证据包为每次运行记录开放引擎盖在其结果上的场景哈希,因此包中的数值可以通过重新运行其场景来复现。
- 系统工程与项目工具。Kshana Pro的基于模型的系统工程(MBSE)与项目工具,对照开放引擎的运行检查项目的需求:它以逗号分隔值(CSV)、或以需求交换格式(ReqIF)的文档化子集、或以系统建模语言第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)、系统建模语言第2版(SysML v2)模型、变更影响报告和离线证据包。它不重新运行任何内容,只读取引擎发布的输出:每次运行的
result.json和report.json、场景文件、字段单位模式以及验证矩阵的标签(完整列表见版本)。 - Kshana Pro设计、不确定性与任务工具:设计空间的Pareto前沿、基于数千次运行的不确定性与敏感性分析,以及带验证矩阵和PDF的一条命令任务档案;见
docs/PRO.md。 - Kshana Pro测评活动监视、频谱共存与作业服务:被监视的数值变差时失败的流水线,双向对照开放的卫星导航信号测试的信号方案,以及带哈希链式交付台账(ledger)的本地部署作业队列;见
docs/PRO.md。 - 关于量子/经典PNT性能分析的培训与咨询。
这就是开放核心模式:引擎是并将一直是开放许可的;维持业务运转的是专业知识、支持和专有扩展,而不是许可费。联系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 |
一旦条件发生偏移,GNSS干扰检测器得分的下降,仅凭分布内统计量即可预测,先在开放的合成测试平台上,再在开放的实地录制数据上。 | 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 |
处于欺骗干扰(spoofing)下的GNSS授时接收机,其未检出的时间误差没有有限的无条件界,因此该论文给出一个有条件的界,并以公开的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)没有定义,因为速度在单个时刻不可观测,所以该论文在四条平面远距逆行轨道上使用可观测性格拉姆矩阵:仅测距在单个时刻的秩为4中的2,需要约2.09 h的弧段才能变得完全可观测,条件数随弧段加长而改善;测距率(多普勒)立即给出秩4;而把一个测站与卫星状态和时钟一起联合估计时,除非加入外部干涉观测量,否则秩始终亏一。需求应体现在弧长、条件数和测量类型的预算中,而不是DOP。 | cislunar-observability类型:kshana scenarios/cislunar-observability.toml(其同类cislunar-arc-recovery用独立的有限差分估计器检验该阈值) |
三个研究示例写出字节确定性的产物(固定随机种子),其中记录引擎版本、随机种子和配置哈希。三篇月球和地月空间论文建立在月球套件之上(每一部分的证据等级见验证矩阵);它们的几何和精度因子论断还在tests/validate_p*.rs中对照独立的参考基准做了交叉检查。更多内容见“参考”下的可复现的研究产物。
引用#
如果你在学术或技术工作中使用Kshana,请引用你所用的版本,并注明场景和随机种子。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,即Cargo.toml中的rust-version;开发所用版本为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。报告(内容相同的超文本标记语言(HTML)页面和JSON文档)包含执行摘要、每项输入及其单位、结果和图表、测评活动的扫描表、蒙特卡罗表或链式表、事件时间线、本次运行所用每项能力的VALIDATED / MODELLED / PARTNER标签和来源、未建模的内容,以及可复现性记录(引擎版本、安全哈希算法256位(SHA-256)摘要、随机种子、平台和确切的命令)。它可以在浏览器中以A4或Letter纸张打印为干净的PDF(便携式文档格式)文件;引擎本身不写出任何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 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(层叠样式表(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,或在orbit场景中用export_sp3 = true,写出<scenario>.sp3)。同一条轨道还可以发布为标准轨道上的CCSDS OMM平均根数(--export-omm,或export_omm = true,写出<scenario>.omm):每颗由TLE定义的卫星对应一条OMM 502.0 KVN(关键字 = 值表示法)消息,带有每个目标真实的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 ns:摘要以有效数字打印小数值,而不是把它们舍入为0.0。security读作n/a (no attack),因为该场景没有配置任何攻击,所以没有可检测的对象。JSON结果仍在fom.security中给出每个时钟的解析欺骗可检测性界(光学时钟为0.997,芯片级原子钟为0.000,后者自身在监测窗口内的噪声超出了20 ns的规格),其figure_tiers块把该数值标记为applicable: false。spoof场景类型则针对注入的攻击对检测打分。figure_tiers还给每个报告的数值标明其验证等级,VALIDATED(已对照外部参考基准(oracle)核对)或MODELLED,以及该等级所依据的验证矩阵行。除时钟结果外,orbit场景还报告一个几何块:有定位解的采样比例,以及最佳/中位的位置精度因子(PDOP)和位置精度。
请仔细阅读这两个数字。
security是由每个时钟的稳定度推出的解析欺骗可检测性界:它只在配置了欺骗干扰(spoofing)场景时才有意义,不是多卫星RAIM检测器。这里的integrity是滤波器的自洽性(中断采样中落在其自身k倍标准差界内的比例),不是航空的HPL/VPL完好性数值。见docs/INTEGRITY.md。对于真正的接收机自主完好性,
integrity场景类型(scenarios/integrity-raim.toml)在传播得到的星座几何上运行真实的快照式和解分离(ARAIM式)RAIM:它逐历元计算水平/垂直保护级(HPL/VPL),并报告满足所配置告警限值的历元比例,同时给出Stanford完好性图,用于误差与保护级(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
每个产物都记录其引擎版本、随机种子和配置哈希,并带有如实的MODELLED/VALIDATED标签。真实数据探测(*_probe)对你在本地提供的录制数据运行同样的流水线;仓库中不附带任何数据集。射频损伤乐观差距研究写成预印本arXiv:2606.22054,条件授时保护级(上文的tpl_jammertest)见预印本arXiv:2606.24210(见引用)。
已发表的月球PNT研究(arXiv:2607.06212月面信标DOP、arXiv:2607.02566 VLBI可观测性和arXiv:2610.23871地月空间弧长可观测性),其几何、精度因子、实时坐标系/地球定向参数(EOP)预测、远距逆行轨道和射频测距的论断,已在tests/validate_p*.rs中对照独立的参考基准(scipy.special.j1、独立的NumPy (HᵀH)⁻¹ DOP求解、对同样的IERS finals2000A行的NumPy重新解析,以及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导入 + GNSS拒止下的韧性包络;MODELLED)、space-weather(太阳/地磁指数 + Jacchia-71外逸层温度 + 在静态大气之上由活动驱动的热层密度;MODELLED)、oem-interop(用于GMAT/Orekit/STK星历的CCSDS OEM导入/往返桥接;MODELLED)、任务分析三件套launch-window(二体发射方位角/轨道面变更/机会)、reentry(Allen-Eggers弹道再入走廊)、eo-coverage(对地观测幅宽/地面分辨率/接入/重访几何)、space-packet(CCSDS 133.0 TM/TC,即遥测/遥控,Space Packet组帧:精确的比特布局,已验证往返)以及attitude-budget(3自由度重力梯度力矩 + RSS指向误差预算)、passes(地面站升落过境预测:AOS/TCA/LOS、最大仰角、接入)以及link-budget(单向CCSDS/DSN链路方程:FSPL / Eb·N₀ / 裕量 / 闭合);telecom-timing(守时(holdover)的时间误差、MTIE和TDEV,对照ITU-T模板检查);spectrum(把整个GNSS L频段当作一条功率谱密度:在脚本化的连续波、窄带、啁啾或匹配噪声压制干扰(jamming)时间线下的频率—时间瀑布图,由谱分离系数给出的分频段干信比和有效载噪密度,以及带Welch谱估计的信号元数据格式(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(同一历元下的太阳、行星、冥王星、月球和七颗主要卫星:位置、常数、光行时和轨道轨迹;行星位置已对照JPL Horizons核对(VALIDATED))和body-pnt(在上述任一天体周围用本地导航星座和来自地球的深空链路进行定位;MODELLED);campaign(把现有类型组合成链式的任务时间线,各阶段之间传递状态,或参数扫描、带随机种子的蒙特卡罗集合,或在同一共享条件下的多个场景;MODELLED,见docs/CAMPAIGNS.md);constellation-design(Walker delta和星形构型、根数列表和多壳层设计,带GPS、Galileo、北斗和GLONASS预设,以及在经纬度网格上的覆盖和精度因子;生成器和GPS全球DOP已对照公布的服务文件核对(VALIDATED),见docs/CONSTELLATION-DESIGN.md);leo-pass(低地球轨道(LEO)定位、导航与授时(PNT)卫星的一次过境及其逐频段链路预算,适用于任何星座和任何信号设计:观测角、多普勒和多普勒变化率、ITU-R的雨、气体、闪烁和建筑穿透损耗、相对所见MEO GNSS卫星的载噪密度、一阶电离层和无电离层组合对、低能量定位预算、由每个频段对给出的电离层探测,以及按多普勒与过境几何一致性和按跨频段一致性进行的欺骗干扰监测;ITU-R各项和静态用户多普勒包络为VALIDATED,过境为MODELLED,见docs/LEO-PASS.md);leo-navmsg(低地球轨道(LEO)PNT卫星的广播星历和时钟电文,适用于任何轨道和载波:从积分得到的真值轨道到Galileo开普勒根数集的拟合器,带沿迹、横向和径向修正多项式的该根数集,Liu等人2025的22参数模型或ATOMIC零钟差ECEF多项式;信号在空间中的测距误差(SISRE)随拟合区间和更新周期的变化,过境中更新的连续性检查,Kshana自己有文档的二进制帧,带CRC-24Q循环冗余校验和量化预算,以及标为Kshana扩展的RINEX-4式数据块;SISRE权重、Galileo用户算法和CRC-24Q为VALIDATED,各拟合为MODELLED;可选的Xona Pulsar、Iridium、Starlink、CentiSpace、一个有代表性的C频段系统、ATOMIC和Celeste IOD的预设;见docs/LEO-NAVMSG.md);融合的MEO + LEO PNT三件套leo-pvt(根据低地球轨道(LEO)距离变化率的多普勒定位,带系统间偏差的GNSS + LEO联合伪距定位以及DOP随LEO卫星数量的变化,极区和北极覆盖,以及对UTC的LEO时间传递:适用于任何星座,可选Xona Pulsar、Iridium和Starlink机会信号等预设;LEO多普勒包络已对照已发布的Iridium和Xona数值核对(VALIDATED))、leo-ppp(仅用GNSS和用LEO增强的精密单点定位收敛,并与Li等人2019比较)和ntn-positioning(根据信号带宽的Cramér-Rao界进行的5G非地面网络定位),除该包络外均为MODELLED,见docs/LEO-PNT-FUSION.md;leo-pnt-chain(端到端的一个LEO-PNT系统:由leo-pass频段承载的leo-signal设计,过境的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 Somigliana重力),以及一个确定性的IMU误差模型,其中比例因子、失准、g敏感性、量化和速率斜坡均已建模(IEEE Std 952-1997,即IEEE陀螺规范与测试程序标准,§A.2;Groves 2013 §4.3)。这条3轴路径现在已接入一个可运行的松耦合GNSS/INS场景包(kind = "gnss-ins"):15状态误差状态EKF在GNSS可用时用含噪定位修正捷联解,然后在中断期间惯性外推,并报告融合后的水平误差与开环纯惯导外推的对比。另外还提供紧耦合伪距更新(它在距离域形成新息,因此不足四颗卫星时仍能继续修正)。守时(holdover)场景可增加runs(> 1)来运行蒙特卡罗集合:此时每个性能指标都以均值加第5至第95百分位的范围报告,图表也会给误差置信带着色(见scenarios/clock-ensemble.toml)。
fusion场景(块与hybrid相同)运行两个相互独立的卡尔曼估计器,一个用于时钟状态,一个用于位置状态,由GNSS约束并由光学时间传递辅助,报告合并的守时(holdover)性能指标。两个块之间没有互协方差:这是一对叠放的误差预算,不是真正耦合的时钟+位置联合滤波器(跨块协方差属于路线图项目)。见scenarios/fusion-pnt.toml。
spoof场景注入一次时间欺骗干扰(spoofing),它是四种[attack.shape]类型之一(linear_ramp、step_jump、meaconing、replay;单独的rate_ns_per_s仍被接受,视为线性斜坡),并运行每个时钟的欺骗检测器。该检测器是对时钟辅助监测统计量的双侧χ²₁ 能量 / Neyman–Pearson检验:门限由目标虚警预算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多普勒,其中有Klobuchar单频电离层([iono],IS-GPS-200 §20.3.3.5.2.5)和由Niell(1996)映射函数投影的Saastamoinen天顶对流层([tropo])。残差输入快照式RAIM以得到逐历元的HPL/VPL,每颗卫星的伪距、多普勒、C/N₀ 以及电离层/对流层修正都在JSON的gnss_measurements数组中给出。它是前向仿真器(根据已知真值生成测量),不是接收机/求解器:零噪声运行可把几何加修正复现到亚毫米(见scenarios/gnss-sim-raim.toml)。
jamming场景把射频干扰建模为链路预算:一个[jammer](ECEF位置、发射power_dbw、类型)在监视Walker [constellation]的[receiver]处抬高干信比。根据几何(自由空间路径损耗和分方向的接收天线增益)计算每颗卫星的J/S,通过标准抗干扰方程(解扩处理增益 × 谱分离因子Q;Kaplan & Hegarty §9.4)得到有效C/N₀,并在低于可配置的跟踪门限时标记失锁,报告availability_under_jamming性能指标。一个10 W的宽带干扰源在1 km处使接收机完全失效(J/S ≈ 72 dB);同一干扰源在100 km处只使链路下降(见scenarios/jamming-demo.toml)。
sweep场景运行权衡研究:在lin或log scale上,让一个parameter(threshold_ns、duration_s、quantum_q_wf或classical_q_wf)从start到stop取steps个点,为两个时钟记录一个metric(例如holdover_s),并绘出两条曲线。基础场景放在[base]下(见scenarios/sweep-clock-stability.toml)。
sweep-nd场景把这一点推广到任何场景包和任意多个轴:它在[[axes]]的笛卡尔积上改变某个[base]场景(任何kind)的带点TOML键,重新运行每个网格节点,并记录以结果中的带点JSON路径给出的metrics(例如classical.fom.holdover_s)。它适用于每个场景包,因为它在TOML/结果的边界上运行;原生运行并行评估网格(没有额外依赖,wasm退回为顺序执行),输出是确定性的且按行优先排列(见scenarios/sweep-nd-inertial.toml)。
orbit场景根据几何推出[gnss]时间线,而不是手工编写:给出[user]轨道、[constellation]、仰角mask_deg和两个时钟块。它还根据卫星几何报告位置精度;可选的sigma_uere_m(1倍标准差的用户等效距离误差,默认1 m)把位置精度因子换算为位置标准差。用户轨道可以用eccentricity和argp_deg设为偏心,j2 = true则加入地球扁率的长期漂移(见scenarios/orbit-molniya.toml)。星座也可以改用真实星座:给[constellation]一个含两行根数集的tle块,卫星即由其解析得到(见scenarios/orbit-real-tle.toml)。加入一个或多个[[constellations]]块即可实现多GNSS(例如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
GPS拒止的备用PNT类型完全不用GNSS导航,通过粒子滤波器把实测的场序列与地图匹配。gravity-map场景让载体沿一条轨迹飞过球谐重力异常场,并根据冷原子重力仪的读数恢复该轨迹(scenarios/gps-denied-gravity-nav.toml);terrain-nav场景针对SRTM高程DEM做同样的事(TERCOM/SITAN,scenarios/terrain-nav.toml);combined-altpnt场景则在一个滤波器中融合重力 + IGRF磁场 + 地形(scenarios/combined-altpnt.toml)。
lunar-integrity场景评估地月空间 PNT:它针对LunaNet/LNIS中继集运行月球南极的ARAIM保护级过境,并如实报告完好性差距:约30 m的月球 σ_URE使保护级远高于50 m的告警限值,因此在航空式完好性规则下服务是不可用的(scenarios/lunanet-araim.toml)。
lunar-time-offset场景报告相对论的地月时钟速率,这是月球坐标时标(LTC/TCL)的基础。一个由第一性原理得到的后牛顿恒等式,把自势差(IAU L_G大地水准面势减去月球表面自势)与月球的动能(二阶多普勒)项相加,得到约57 µs/天的长期速率,并给出已发表的56–59 µs/天范围;它还给出一个时间范围内累积的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:逐步时间序列、已评分的性能指标、起作用的模型规格(附出处)、随机种子、场景哈希(因此任何图表都可以根据该文件复现),并且对每个时钟还有一个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中。
每张图表都是自描述的。浏览器演练场、CLI的*.chart.svg导出和HTML(超文本标记语言)记分卡都在每张图表图像上加盖页脚,内容为Kshana v<version> · scenario <hash> · kshana.dev。其中的scenario <hash>是该次运行场景哈希的前12个十六进制字符,场景哈希是对规范场景定义(随机种子、门限、模型参数、GNSS窗口等)的SHA-256(256位安全哈希算法)摘要;完好性报告和月球报告本身没有哈希,改用场景源文件的SHA-256。它与单行摘要和结果JSON中显示的是同一个指纹,所以保存或粘贴的图表总是带有其版本、产生它的确切场景(用于逐位复现)和来源:改变任何输入,哈希随之改变。
性能指标遵循标准的运行PNT性能指标:
| 性能指标 | Kshana如何计算 |
|---|---|
| 授时性能(时钟/轨道场景包) | 中断期间时钟相位误差的RMS和第95百分位,单位为纳秒(timing_rms_ns):这是授时指标,不是位置指标 |
| 定位性能(惯性/混合场景包) | 中断期间1-DOF位置误差的RMS和第95百分位,单位为米(pos_rms_m);单轴。单次运行标记为monte_carlo: false;设置runs = N可得到蒙特卡罗集合,报告每个指标的均值、离散度和自助法95% CI(置信区间)。仍不是 2-D CEP/2DRMS(圆概率误差/距离均方根的两倍)或DOP加权精度(这些需要3轴模型,见路线图) |
| 自主性 | 守时(holdover)时长:GNSS丢失后保持在规格内的时间(按网格量化:是一个下界) |
| 韧性 | 中断期间的误差增长斜率 |
| 可用性 | 运行中有符合规格的解的时间占比 |
| 完好性 | 滤波器自洽性:中断采样中误差保持在卡尔曼滤波器自身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的copyleft(尤其是:如果你修改了Kshana并通过网络提供,就必须向这些用户提供你修改后的源码)。如果这不适合你,例如你需要把Kshana嵌入专有产品或运行闭源的网络服务,可以向Ashforde® OÜ 获取商业许可;见LICENSING.md和支持。
故障排查
故障排查#
在旧的工具链上cargo build失败。Kshana需要Rust ≥ 1.88。用rustup update更新。
在macOS上构建Python扩展时链接失败(Undefined symbols … _Py…)。Python扩展在加载时解析其符号。maturin会自动设置正确的链接器标志:请使用maturin develop --features python,而不要直接用cargo build。
Python构建报告解释器比PyO3所知的更新。设置PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1(abi3 wheel跨CPython版本向前兼容)。
WebAssembly构建找不到目标。用rustup target add wasm32-unknown-unknown安装一次,然后运行wasm-pack build --target web -- --features wasm。
我的输出在哪里?每次运行都会在输入的.toml旁写出<scenario>.result.json、<scenario>.chart.svg、<scenario>.report.html和<scenario>.report.json,对发布表格的类型还会写出<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 wheel(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 |
由每个发布版本的SHA256SUMS生成的kshana-mcp二进制文件 |
| 官方MCP注册表 | 由MCP客户端自动发现 | io.github.ashfordeOU/kshana-mcp(OCI镜像、npm和PyPI包) |
| JetBrains Marketplace | IDE → Plugins → 搜索“Kshana” | Kshana — PNT simulator IDE插件 |
| Zenodo | DOI | 每个发布版本的可引用存档 |
| kshana.dev | 在浏览器中打开 | Kshana Studio,浏览器内的WebAssembly应用,从每个发布标签重新构建(因此它显示的版本就是它运行的版本) |
MCP服务器的crate / 镜像 / 注册表版本跟随引擎(它打包了该库);JetBrains插件独立版本化(它调用你已安装的kshana二进制文件)。
路线图
路线图#
阶段性路线图见ROADMAP.md,已发布的历史见CHANGELOG.md,各能力的路线图见docs/CAPABILITY.md。优先顺序是:首先是面向关键基础设施的授时与守时证据(电信模板、含老化和闪烁噪声的更长守时、实测时钟数据的导入);其次是中立的量子与经典权衡方法(结果标为MODELLED,直到合作方的实测数据使其升级);而地月空间和深空导航予以维持,不作为主线扩展。ITRF精密坐标系归算现已交付:完整的基于CIO的IAU 2006/2000A GCRS↔ITRS链(极移 + 亚角秒章动),已对照SOFA/ERFA逐位核对,并对照ANISE(纯Rust的SPICE)独立交叉检查,在GNSS轨道高度上 ≤ 3.6 m。近期事项包括紧耦合载波相位融合,以及把松耦合/紧耦合GNSS/INS导航器推广到更多场景包;深空 / 火星射电导航引擎已在v0.17.0中落地(经仿真核对)。量子物理层是一个P2项目:CAI加速度计现在已按第一性原理仿真(Mach–Zehnder相位、投影噪声、对比度衰减、振动耦合),而时钟/时间传递传感器仍由已发布的阿伦/噪声预算系数驱动。基于GMST的TEME↔ECEF、IERS闰秒时间系统(UTC/TAI/TT/UT1)、SGP4/SDP4轨道传播(v0.7.0,已对照AIAA 2006-6753向量核对)和可运行的gnss-ins融合场景包都已发布,惯性速度也已向下游提供。主动随机时间欺骗干扰检测器(带蒙特卡罗P_fa/P_md的Neyman–Pearson / χ²₁ 能量检验,以及1−P_md的安全性指标)、链路预算压制干扰(jamming)模型(J/S → 有效C/N₀ → 失锁)、多星座可用性、单轴(1-DOF)IMU误差预算、作为合并指标报告的两个独立(时钟 + 位置)卡尔曼估计器、取自TLE的真实星座几何、HTML记分卡报告、由带偏心率和J2漂移的开普勒轨道得到的几何导出GNSS可用性和精度因子、蒙特卡罗置信带、权衡研究参数扫描、浏览器内的WebAssembly演练场,以及可选的Python(PyO3)和WebAssembly(wasm-bindgen)绑定,都已并入main。
参与贡献
参与贡献#
见CONTRIBUTING.md。简言之:测试通过(cargo test),两个守卫脚本通过,采用Conventional Commits,并且每项用户可见的变更都在CHANGELOG.md的[Unreleased]中有一条记录。参与须遵守我们的行为准则。要报告安全问题,请见安全策略,请勿为漏洞公开提交issue。
文档:每份文档及其面向的读者
文档#
| 文件 | 面向 | 内容 |
|---|---|---|
| 概念入门 | 所有人,从这里开始 | Kshana做什么以及为什么,从零讲到物理 |
| Kshana Studio | 所有人 | 在浏览器中运行引擎(WebAssembly);构建与部署说明 |
| 术语表 | 所有人 | 每个术语的通俗定义 |
| 场景类型 | 所有人 | 引擎分派的每种类型:它做什么、它的字段、一条示例命令、它的台账(ledger)行以及引擎为它写出的图表 |
| 合作方数据 | 持有实测数据的实验室和制造商 | 实测的时钟或IMU记录可以提升哪些MODELLED行、数据格式、提交如何检查(kshana partner check)、如何评分和如何署名 |
| 架构 | 开发者 / 审阅者 | 模块图、引擎流水线、分派和图集 |
| 验证状态 | 审阅者 / 引用者 | 何者为validated、何者为not modeled,并附证据 |
| 验证矩阵 | 审阅者 / 引用者 | 经机器检查的证据台账(ledger):每项能力一行,列出其状态、模块、测试和外部参考基准(oracle),由src/verification.rs生成 |
| 已建模的理由 | 审阅者 | 为什么每个已建模的行都没有外部参考基准(oracle),逐行说明 |
| 出处 | 审阅者 / 引用者 | 每个传感器参数、模型和数据集都可追溯到其公开来源,汇于一张可引用的表 |
| 可复现性与出处 | 审阅者 / 打包者 | 确定性保证、golden固定、SBOM(软件物料清单)、构建来源证明 |
| Wheel平台标签 | 打包者 | abi3 Python wheel矩阵:pip install kshana会解析到哪个平台标签 |
| 定位 | 评估者 | Kshana相对RTKLIB/gLAB所处的位置(互补),以及零安装的浏览器层 |
| Kshana Pro | 评估者 / 项目经理 | 专有的Pro叠加层在同一个引擎之上增加了什么:设计优化器、不确定性与敏感性、任务档案、测评活动监视、频谱共存、本地部署作业服务、需求追溯;每一项产出什么以及不做什么 |
| 技术报告 · JOSS论文 | 审阅者 / 引用者 / 评估者 | 完整的扩展研究论文(架构、各领域模型、验证、案例研究和局限)以及简明的JOSS(Journal of Open Source Software)投稿 |
| SGP4验证 | 审阅者 / 引用者 | 与AIAA 2006-6753参考值一致(666个状态,约4 mm),并且与独立的sgp4 crate正面对比(亚微米 / 4.12 mm内一致) |
| 力模型验证 | 审阅者 / 引用者 | 对照机构星历拟合的全力模型引擎(src/precise_od.rs):方法和经核对的残差 |
| 真实TLE指南 | 用户 | 用真实的Celestrak / Space-Track星座TLE驱动场景(相对于内置的合成Walker集) |
| 完好性性能指标 | 评估者 | integrity / security数值的含义,以及它们相对于航空HPL/VPL 不是什么 |
| ARAIM参考 | 审阅者 / 集成者 | 开放的MHSS ARAIM保护级实现:b_k名义偏差投影、σ_URA与 σ_URE,以及故障模式先验 |
| 量子模型 · 详情 | 审阅者 | 冷原子干涉仪物理层,以及哪些系数仍是查表得到的 |
| Compliance | 评估者 | DO-229E / DO-316算法范围,以及什么不是满足标准的声明 |
| 海事信任度 | 船员 / 集成者 | 针对船舶NMEA的0-100 GNSS信任度评分、其监测器及其限制(仅供参考,不是经型式认可的导航设备) |
| NMEA训练流 | 航海培训人员 | 带脚本化压制干扰(jamming)和欺骗干扰(spoofing)以及教员日志的合成桥楼NMEA;仅为文本,绝不用于实际导航 |
| 干扰地图 | 分析人员 / 船员 | 飞机和船舶在何处报告了降级的导航数据,以及它涉及一条航线的多大部分 |
| 证据包 | 操作人员 / 保险机构 | 对信任度事件的签名技术记录,以及如何验证 |
| 信任度遥测 | 运维 / 安全团队 | 以Prometheus指标、SIEM事件和OpenTelemetry呈现的信任度数据流,附Grafana仪表板 |
| 船舶集成 | 船主 / 集成者 | Signal K插件、OpenCPN关口模式和参考构建 |
| Test bench | 接收机制造商 | 通过实验室模拟器回放导出的场景并对接收机的日志打分 |
| compliance映射 | 评估者 | 公开的韧性框架与Kshana输出的映射,附来源和缺口;kshana compliance-report |
| Notebook | 用户 | 可运行的教程及其渲染文本 |
| 标准与互操作 | 集成者 | Kshana读取和写出的GNSS / 飞行动力学 / 机构交换格式(RINEX、SP3、CCSDS OEM/OMM/TDM/Space-Packet等) |
| LEO PNT融合 | 用户 / 评估者 | 融合的MEO + LEO定位、导航与授时:多普勒、联合伪距、PPP收敛、5G NTN、极区覆盖和适用于任何星座的LEO时间传递;可选预设及其公开来源 |
| 测评活动 | 用户 / 评估者 | 场景的组合:链式任务时间线、参数扫描、蒙特卡罗集合和共享条件下的运行,以及由测试固定的组合恒等式 |
| 场景目录 | 用户 / 集成者 | 每种可分派的类型及其必填和选填的TOML字段,由api::list_scenario_kinds()生成 |
| 结果模式 | 集成者 | 结果JSON的每个字段,附单位和来源指针 |
| Python API | Python用户 | PyO3绑定接口:调用引擎、场景/结果类型以及示例 |
| 声明与实际 | 审阅者 | 夸大声明的收口台账,以及使其保持已解决状态的CI守卫(tests/no_overclaims.rs) |
| 路线图 | 所有人 | 阶段性路线图:已发布的内容和下一步 |
| MCP服务器 · JetBrains插件 | 智能体 / IDE用户 | 从AI助手或JetBrains IDE运行Kshana |
| 智能体指南 · 界面 | 智能体 / 集成者 | 哪个工具回答哪个问题,每个回答要保留什么;每项能力可通过哪些途径使用(CLI、Rust、Python、WASM、MCP、插件、JetBrains、笔记本),以及某个单元格为何是N/A |
| 变更日志 | 所有人 | 已发布的历史(Keep a Changelog + SemVer,语义化版本) |
| 参与贡献 | 贡献者 | 构建、守卫、测试/引用规范、DCO(开发者原创声明) |
| 治理 | 贡献者 / 社区 | Kshana如何治理:谁来决定、如何决定,以及开放与封闭的边界 |
| 行为准则 | 社区 | 期望的行为(Contributor Covenant) |
| 安全策略 | 报告者 | 如何报告漏洞;两用性说明 |
主要参考文献
主要参考文献#
核对用参考基准(oracle)与标准:Kshana的各项检查所依据的外部权威:
- Vallado, Crawford, Hujsak & Kelso — Revisiting Spacetrack Report #3(AIAA 2006-6753;测试数据):Kshana与之吻合到4.12 mm的SGP4/SDP4验证集,以及TEME→ITRF链所对照检查的坐标系算例。
- IAU SOFA / ERFA:IAU 2000A章动和基于CIO的GCRS↔ITRS归算所对照逐位核对的参考时间与坐标系例程。
- Petit & Luzum(编)— IERS Conventions (2010),IERS TN(Technical Note)36(地球定向、极移和坐标系标准)。
- Riley — Handbook of Frequency Stability Analysis,NIST SP 1065(阿伦偏差关系式和NBS14参考序列;NBS即原美国国家标准局)。
- Pedregosa等 — scikit-learn: Machine Learning in Python,JMLR 12 (2011):射频损伤评估测试平台与之完全匹配的参考ROC/AUC、混淆矩阵和精确率/召回率/F1实现(
tests/eval_metrics_reference.rs)。 - Virtanen等 — SciPy 1.0,Nature Methods 17 (2020):
optimize.nnls、stats.chi2和linalg.expm,即量子权衡的实测ADEV NNLS拟合、χ² 一致性带以及van-Loan时钟过程噪声协方差所对照核对的参考例程(tests/scipy_reference.rs)。 - Knowles, Kanhere, Neamati & Gao — gnss_lib_py,SoftwareX 27 (2024):既作为开放的现有技术(见下文比较与开放的现有技术),也作为GDOP/PDOP/HDOP/VDOP/TDOP计算与之匹配到1e-6的独立DOP参考基准(oracle)(
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(CR3BP微分修正器所复现的halo/NRHO族)。
器件与方法的物理:传感器模型背后引用的来源:
- Origlia, Schiller, Bongs等 — arXiv:1503.08457(锶光晶格钟,面向空间的目标)。
- Oelker等,Nature Photonics (2019) — doi:10.1038/s41566-019-0493-4(实验室Sr钟,4.8×10⁻¹⁷)。
- Templier等,Science Advances (2022) — arXiv:2209.13209(混合量子加速度计三联组)。
- Groves,Principles of GNSS, Inertial, and Multisensor Integrated Navigation — IEEE AESS(航空航天与电子系统学会)教程(伦敦大学学院Discovery仓库)(航位推算误差增长)。
- Giorgetta等,Nature Photonics 7, 434 (2013) — arXiv:1211.4902;Deschênes等,Phys. Rev. X 6, 021016 (2016) — APS(美国物理学会)(光学双向时频传递;光学星间链路的非互易性预算即以这些文献为蓝本)。
- Betz — Binary Offset Carrier Modulations for Radionavigation, NAVIGATION 48(4) (2001),doi:10.1002/j.2161-4296.2001.tb00247.x(
src/navsignal.rs背后的BOC调制和谱分离理论)。 - Kaplan & Hegarty(编)— Understanding GPS/GNSS: Principles and Applications(第3版,Artech House,2017):导航信号和压制干扰(jamming)模型所用的抗干扰有效C/N₀ 方程以及早迟型DLL码跟踪热噪声抖动。
比较与开放的现有技术:Kshana所对照定位自身的工具和综述:
- Humphreys等 — TEXBAT(Texas Spoofing Test Battery;ION,即导航学会,GNSS 2012):多层检测器据以表征的欺骗干扰(spoofing)测试集参数。
- González等 — 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:开放的GNSS数据分析。
- Li, Zaminpardaz, Kealy & Greentree — Quantum sensors for enhanced positioning and navigation: a comprehensive review, GPS Solutions 30(1):62 (2026),doi:10.1007/s10291-026-02030-y。
- Bertone等 — Earth and Space Science 8(6) (2021),doi:10.1029/2020EA001454:GRAIL约化动力学OD,即LRO拟合所复现的经验加速度下限。