验证状态
关于容差。下文中的“经独立核对”是指:某项校准测试断言仿真统计量与参考关系的吻合落在一个强制门限之内,目前对阿伦/噪声预算关系为相对误差20–25%(按随机种子平均)。实际观察到的吻合中位数通常紧得多(几个百分点),但有保证的界限是该门限,而不是中位数。凡出现“约2%”之类数值,均为典型观测值,而不是强制的容差。见声明与现实。
升级规则#
机器核查的验证矩阵(src/verification.rs)中的一行,只有在一个独立于Kshana的参考基准(oracle)在比较运行之前就已写明的容差之内与实现一致,并且该比较在门禁中运行的测试里完成时,才算VALIDATED。本节是该规则唯一的书面出处;矩阵、各行文字说明和发布说明都以它为准。
被接受的参考基准(oracle)类型#
| 类别 | 算作什么 | 矩阵中已有的示例 |
|---|---|---|
| 测量值 | 该行所声称的量的真实测量数据:对物理世界的观测,而不是模型输出。 | 一份真实铯钟记录中被保留的三分之二;存档的月球激光测距标准点;BIPM(国际计量局)Circular T的UTC(k) 序列;SRTM(航天飞机雷达地形测绘任务)地形图块。 |
| 资料库 | 独立的第三方库或工具,在相同输入上计算一个唯一确定的量,且该库自身实现了该领域的计算。库与库之间的一致之所以是真正的核对,只因为该量只有一个正确答案。 | allantools、Orekit、ANISE、RTKLIB、gnss_lib_py、lamberthub、pymcdm、scikit-learn、SciPy的统计分布。 |
| 参考 | 已发布的参考向量、表格或验证算例:标准、机构或参考文献印出的数字,供各实现据此核对。 | SOFA/ERFA(Standards of Fundamental Astronomy)向量、AIAA(美国航空航天学会)SGP4验证向量、ITU-R(国际电信联盟无线电通信部门)验证算例、Working Group C的ARAIM算例、JPL(喷气推进实验室)Horizons。 |
另有两条标准用于裁定边界情形。两者均自0.30版起采用。
- P1,已发布的算例值。由该行所实现的同一闭式解算出的已发布算例值,当该出版物独立于Kshana且比较中固定了写明的容差时,算作已发布的参考向量。该值必须在出版物中以数字印出(从图上读出的值,仅当读数不确定度处于写明的容差之内才算),并且测试必须让Kshana依据出版物的输入自行计算它;把一个常数与其所抄自的文献相比,属于转抄核对,不是P1。
- P2,独立的数值库。numpy或LAPACK(线性代数软件包)之类独立的数值库,在写明的输入上重新计算一个唯一确定的线性代数量,算作独立的库。该库必须以自己的算法完成分解、求逆、求解或最小二乘步骤,所用输入随夹具一并提交;此时经核对的结论是这些输入上的线性代数,而不是代表性场景的物理量值。用numpy运算重新计算一个标量闭式解的脚本,是我们自己的第二套实现,不是P2。
适用于所有类型的条件:参考基准(oracle)不是由本项目编写、运行或发布的(因此本仓库自己的论文系列并不独立于本项目);容差写在测试中,并在第一次比较之前就已确定;当公开数据缺失而跳过某个依赖数据的测试时,跳过时会如实说明。
不算什么#
- 我们自己的第二套实现:本crate中的第二条代码路径(
ReferenceImpl),或本仓库中重新计算同一闭式解的脚本。 - 与我们自己早先输出的一致:golden文件、回归固定值、快照,或本项目自己论文中的表格。
- 对引用常数的转抄:把某个系数、预设值、数据手册数字或参数表,与其所抄自的文献进行核对。
- 设计选择:分配、加权、阈值、告警限值或代表性场景。对于一个选择,并不存在外部的真值。
- 内部恒等关系:数值积分与其自身解析式的对照、往返转换、求逆、性质测试或单调性测试。
- 针对真实宿主的集成运行(
IntegrationRun):把插件加载到真实的Signal K服务器或OpenCPN中,或把真实门的输出送入某个TCP消费端,并检查宿主是否接受该输入并显示预期状态。它表明接口连接是通的。宿主并不是该集成所携带任何数值的参考基准(oracle),因此没有任何外部量可供比较,这样的行(海事集成一行)是MODELLED,而不是VALIDATED。IntegrationRun是单独的一类参考基准,只允许出现在MODELLED行上:如果某个VALIDATED行带有它,src/verification.rs中的integration_run_only_on_modelled_rows就会失败,而validated_rows_require_an_external_oracle已经要求每个VALIDATED行都是ExternalDataset。 - 对真实输入的合理性检查:真实数据仅用作输入,断言的是量级,而不是与外部值的比较。
- 在看到比较结果之后才选定的容差。
规则如何执行#
每个VALIDATED行都在src/verification.rs的validated_oracle_basis()中声明它所依据的类型(Measured、Library、Reference、P1或P2)、独立来源(引自该行自身的参考基准(oracle)说明文字),以及承载该比较的那一个测试。表旁的单元测试会在以下情况失败:某个VALIDATED行未声明或被声明两次;某项声明指向并非VALIDATED的行;所声明的来源不是该行参考基准(oracle)文字所指的来源,或就是Kshana本身;所声明的测试不是该行所引用的测试;或某个P2行没有指明独立的数值库。随后tests/verification_rows_declare_an_oracle_basis.rs要求所声明的测试确实作为一个未被忽略的真实#[test]存在于磁盘上。机器无法检查的是,所指名的测试是否真的与所声明的来源作比较;这仍需人工阅读。各类型的数量不在此处列出:以表为准。
依该规则重新审视现有的VALIDATED行#
该规则既适用于现有各行,也适用于今后的升级。
- 0.30验证研究所指名的P1行,均有依据:单向链路预算(JPL Pub 82-76 Galileo X波段设计控制表,由其逐项明细重新汇总,自由空间损耗吻合到4.6e-3 dB);任意测距信号的带限闭式解(90.3 % 的主瓣功率与已发布的相干早迟码抖动);低地球轨道导航卫星的最大多普勒(已发布的Xona Pulsar X1与Iridium数值);静止用户从LEO或MEO轨道看到的最大多普勒(Pulsar论文的表1,20个数值);地面接收机须应对的LEO导航卫星多普勒(来自实际在轨轨道的同一批已发布数值)。每份出版物都独立于Kshana,印出了它的数字,且测试写明了其容差。
- 重新审视中发现的其他依据P1的行,均有依据:测距码设计权衡(已发布的 −23.9 dB Gold互相关);月球坐标时(Ashby和Patla 2024,其对照DE440的月球速度交叉核对属于Library核对);闭式L波段信号功率谱密度(Kaplan和Hegarty的Q值);每个频段的一阶电离层延迟(IS-GPS-200群延迟比);全球平均空间信号测距误差权重(Montenbruck、Steigenberger和Hauschild 2018的表)。
- 研究所指名的P2行,均有依据:Fisher信息与Cramér–Rao可观测性(numpy
eigh/inv);月球基准可辨识性;耦合的月球坐标系与时标规范;自主自由网故障可观测性流水线(numpy/SciPy SVD,奇异值分解)。每一项都在已提交的输入上,用与Kshana的Jacobi本征求解器不同的算法,重新计算一个唯一确定的线性代数量。 - 重新审视中发现的其他依据P2的行,均有依据:MCDA(多准则决策分析)优先级推导(AHP,层次分析法,其特征向量由SciPy/LAPACK算出;它同时复现的Random Index表属于转抄,不计入);时钟守时滑行方差(Van Loan增广矩阵的SciPy
expm);月球参考框架实现(numpy SVD Umeyama求解);CRPA(受控接收方向图天线)波束形成(LAPACK复数求解);月球ARAIM保护级内核(RTKLIB的LU求逆配合SciPy分位数);跨提供方的月球坐标系/动力学一致性(对三份已发布星历的numpy SVD最小二乘拟合)。 - 在第一轮中被标记,在0.30运行的第2轮中重新获得依据。三个行曾被标记为得不到书面规则的支持。现在每一个都建立在取得其夹具之前就已预先登记的比较之上,因此没有行被标记;
validated_oracle_basis()旁的一个单元测试固定了这份(现已为空的)清单。- 完好性(RAIM/ARAIM/SBAS)。所引用的测试过去只对真实IGS(国际GNSS服务组织)几何断言合理性。该行现在建立在三个Library类参考基准(oracle)之上:Airborne Design Document v4.2的ARAIM多假设解分离,对照Stanford MAAST的ARAIM 2(270个真实案例,最坏VPL差异为2.2e-3 m,对应0.05 m的容差);快照RAIM检测与排除,对照RTKLIB
raim_fde(2016个决策中2016个一致)及斜率保护级;以及SBAS DO-229E L1保护级,对照Stanford MAAST在真实WAAS广播上的结果(2868对数据在1.6e-5 m之内)。该行明确写明:等sigma函数raim::araim_raim和raim::araim_dual_raim不满足ADD的要求,而双频L5 SBAS的比较是一项发现。 - 依据JPL Standish开普勒根数得出的整个太阳系行星位置。事后设定的“名义误差两倍”判据,已被预先登记的判据取代:每颗行星、每个分量的RMS至多为Explanatory Supplement表8.10.1的数值,对照JPL Horizons DE441,并涵盖地月分离和ICRF旋转。
- 太阳系天体之间的光行时。光行时求解器现在在DE441位置上与Horizons光行时比较,吻合到1e-6 s之内,这是一个不沿用位置判据的、预先登记的判据。
- 完好性(RAIM/ARAIM/SBAS)。所引用的测试过去只对真实IGS(国际GNSS服务组织)几何断言合理性。该行现在建立在三个Library类参考基准(oracle)之上:Airborne Design Document v4.2的ARAIM多假设解分离,对照Stanford MAAST的ARAIM 2(270个真实案例,最坏VPL差异为2.2e-3 m,对应0.05 m的容差);快照RAIM检测与排除,对照RTKLIB
- 这两条政策使之可以升级的MODELLED行(只能通过逐行的0.30运行,绝不能靠本文字):按P1,TDOA/FDOA(到达时间差与到达频率差)辐射源地理定位界限、相对论时钟速率与坐标系耦合、ITU-T(电信标准化部门)同步模板(仅限建议书中以数字印出的模板值;对自身核对的转抄断点不算)以及5G非地面网络定位界限(仅当找到已发布的算例数字时);按P2,共模完好性盲区、标量MHSS(多假设解分离)授时保护级和GLS(广义最小二乘)白化。两个授时完好性基准行(Stanford完好性图分类器和完好性覆盖评分器)属于基于规则的分类,不是线性代数,因此P2不适用于它们;它们需要独立的工具,而找到的唯一一个(gLAB)带有非商业许可。
- 与先前拒绝的一致性。发射窗口一行的Vallado核对,如果其测试计算的是所印出的算例,现在按P1就够格;0.30计划改为通过Orekit来升级它。按时钟类别划分的月球时间交叉表仍为MODELLED:它所复现的表来自本项目自己的论文,而该论文并不独立。
| 噪声项 | 状态 | 证据 |
|---|---|---|
| 阿伦估计器一致性(ADEV/MDEV/TDEV/OHDEV(ADEV:阿伦偏差;MDEV:修正阿伦偏差;OHDEV:重叠哈达玛偏差)) | validated |
两项对照NIST(美国国家标准与技术研究院)SP(特别出版物)1065(Riley,Handbook of Frequency Stability Analysis,2008)的一手来源核对,均达到1e-4的相对容差。(1)tests/allan_reference.rs:重叠ADEV、修正ADEV、时间偏差和重叠哈达玛估计器,复现了标准10点NBS14数据集的偏差(SP 1065表29/30,第107页),取tau = 1、2——实际吻合约为1e-6(例如 τ = 2时的重叠ADEV(OADEV):85.952868对85.95287)。(2)tests/allan_nist_sp1065_1000point.rs:同样的四个估计器,在平均因子1 / 10 / 100下复现了SP 1065 §12.4的1000点数据集(表31,第108页),其中数据集由SP 1065的LCG(式73)在代码中重新生成——封闭自足,无需夹具。同样的数据和表31的数字也是aewallin/allantools中的回归目标(tests/nbs14),此处不使用任何第三方代码即可复现。它把估计器的数学固定到参考上,有别于下面的噪声校准行。 |
| 在真实测量硬件上的阿伦估计器一致性 | validated |
tests/cs5071a_reference.rs:重叠阿伦估计器和重叠哈达玛估计器,复现了Stable32对一台真实5071A铯原子基准、对氢脉泽测得的数据给出的参考偏差(556,990个相位样本,τ₀ = 1 s;1 PPS(脉冲每秒)接入53230A计数器,2014年二月;由A. Wallin采集,随allantools一同分发)。覆盖整个十倍程 τ 阶梯(16个平均因子,τ = 1 s … 4×10⁴ s):采样充分的因子达到1e-3的相对门限(实际观察到的吻合其实 ≤ 3e-5,例如OADEV(1 s) 为3.317111e-10,Stable32为3.3171e-10),长 τ 的稀疏因子则要求落在Stable32所印出的1‑σ 置信区间之内。这是对上述合成NBS14一致性的补充,加上一项实测时钟的核对。原始相位文件是没有再分发许可的第三方数据,因此被git忽略;scripts/fetch_cs5071a.sh可复现它,当它缺失时测试会输出跳过提示(CI(持续集成)保持绿色)。仅提交公开的Stable32参考数值(tests/fixtures/cs5071a/);不使用任何第三方代码。 |
| 在标准Stable32 PHASE.DAT上的阿伦估计器一致性 | validated |
tests/phasedat_reference.rs:重叠阿伦、修正阿伦和时间偏差估计器,复现了Stable32对PHASE.DAT给出的参考偏差——这是随Stable32分发的1001点序列,独立工具(例如allantools)把它用作标准回归目标——覆盖完整的平均因子阶梯(139个因子),达到1e-3的相对门限(观察到 ≤ 5e-5)。这是与上述实测铯钟核对并列的、第二个独立的真实参考序列。PHASE.DAT随商业软件Stable32提供,因此原始序列被git忽略;scripts/fetch_phasedat.sh可复现它,当它缺失时测试以绿色跳过(CI保持绿色)。仅提交公开的Stable32参考数值(tests/fixtures/phasedat/);不使用任何第三方代码。 |
| 在真实测量曲线上的光钟稳定度 | validated |
tests/optical_clock_adev_reference.rs:时钟噪声参数反演(quantum_trade::qparams_from_adev_curve)复现了Norcia等发表的 ⁸⁸Sr光晶格钟 σ_y(τ),Science 366:93(2019)(Zenodo 10.5281/zenodo.3382347,CC-BY-4.0(Creative Commons Attribution 4.0),曲线内置于tests/fixtures/optical_clock_adev/):恢复出的白频率系数 √q_wf ≈ 4.33e-16与论文中约4.7e-16/√τ 的短期稳定度吻合(整条曲线上约10% RMS(均方根)),且拟合检测到非零的实测本底(q_rw > 0)。这把实测ADEV → 噪声参数反演固定到一台真实光钟上;建立其上的守时至阈值收益仍为MODELLED。 |
| 在真实的ESA(欧洲空间局)OPS-SAT遥测数据上的异常检测ROC(受试者工作特征)AUC(曲线下面积) | validated(复现标签) |
tests/opssat_ad_reference.rs:在OPSSAT-AD数据集(Ruszczak等2025,Zenodo 10.5281/zenodo.12588359,CC BY 4.0)——带有真值异常标签的真实OPS-SAT内务数据片段——上,Kshana的Mann–Whitney ROC AUC(impairment_eval::auc)在保留的测试划分(529个片段,113个异常)上复现了scikit-learn roc_auc_score,偏差< 1e-9,针对两个确定性评分:一个透明的单特征检测器(片段峰值计数,AUC ≈ 0.851)和一个在正常训练片段上拟合的8特征对角马氏距离评分(AUC ≈ 0.556);eval_stats::bootstrap_auc_ci给出点估计的置信区间,其下界高于随机水平。这核对的是真实ESA数据上的AUC计算以及一个透明检测器的带标签分离度——它不复现OPSSAT-AD论文已发表的最佳指标(有监督的FCNN(全连接神经网络),F1 ≈ 0.95),因为那需要他们训练好的模型。CC-BY数据已内置(tests/fixtures/opssat/,封闭自足);参考基准(oracle)由generate_opssat_oracle.py重新生成。 |
| 重力场泛函合成(重力辅助 / 无GNSS(GNSS:全球导航卫星系统)导航图) | validated |
tests/icgem_gravity_reference.rs:球谐重力泛函内核(gravity_sh::gravity_magnitude / gravity_disturbance_mgal)——重力辅助导航器据以匹配的“地图读取器”——已对照GRS80(Geodetic Reference System 1980)正常重力标准(Moritz 1980,IAG采纳(IAG:国际大地测量协会))核对。由其已发布的偶阶带谐系数J₂…J₈ 构建GRS80正常场,并在椭球面上合成重力(引力 + 离心力),复现了闭式的Somigliana正常重力,以及已发布的赤道/极区值 γ_e = 9.7803267715 / γ_p = 9.8321863685 m/s²,在所有纬度上相对偏差为3.5e-12(门限1e-9)。同一内核加载了旗舰级的真实ICGEM(国际全球地球模型中心)地球模型EGM2008(Earth Gravitational Model 2008)(NGA(美国国家地理空间情报局)公有领域数据,经由ICGEM;from_gfc读取器还在tests/agency_lro.rs中用GRAIL(重力恢复与内部结构实验室)月球场做了测试),并生成了物理上有界的重力扰动图(RMS ≈ 26 mGal,在阶/次70时最大约89 mGal)。核对的是合成代码的正确性;重力辅助导航定位精度仍为MODELLED(没有带真值的、平台上重力仪的公开轨迹)。 |
| 按噪声类型区分的等效自由度edf(置信区间) | validated |
src/allan.rs:每个重叠ADEV点上的 χ² 置信区间使用按噪声类型区分的有效自由度(NIST SP 1065表5针对白相位调制、闪烁相位调制、白频率调制、闪烁频率调制和随机游走频率调制(WPM/FPM/WFM/FFM/RWFM)的闭式解——Stable32简单集),记录的幂律类型由其MDEV双对数斜率识别。三项独立核对:(a) 五个公式在N=64、m=4下复现手工计算值,偏差1e-12;(b) 一个蒙特卡罗白FM(FM:频率调制)集合(4,000条记录)测得估计器的实际卡方edf = 2·mean²/Var(σ²),与公式吻合到20% 之内(并且明显优于保守的非重叠计数);(c) tests/allan_nist_sp1065_1000point.rs复现了所印出的SP 1065表32(第109页)中1000点数据集在m=10(白FM)时的edf = 146.177,偏差5e-3,以及该表的95% 置信界限(8.223942e-2 / 1.035201e-1),偏差<0.2%(小的残差来自Wilson-Hilferty χ² 近似与NIST精确 χ² 之差)。导出的ADEV曲线对每个 τ 都带有所识别的噪声类型、edf和95% 区间。 |
| 白FM(短期) | validated |
tests/calibration.rs:仿真的重叠ADEV复现已发布的sigma_y(1 s)——通常相差几个百分点,强制门限20%(CSAC和光晶格目标)——并且白FM曲线sigma_y(tau)=sigma_y(1s)/sqrt(tau) 在tau = 1、10、100 s上落在25% 门限之内(与CSAC(芯片级原子钟)数据手册的3e-10 / 1e-10 / 3e-11相符)。 |
| 随机游走FM(长期) | validated |
tests/calibration.rs:仿真的ADEV与sigma_y^2(tau)=q_rw*tau/3(Riley NIST SP 1065)吻合到约20%(按随机种子平均)。 |
| 老化 / 线性漂移 | modeled + 已校准扣除 |
确定性;守时估计器通过二次预测器去除偏移和老化,因此残差即为随机极限。在src/estimator.rs / src/models.rs中测试。 |
| 卡尔曼估计器 + 完好性界限 | validated |
src/kalman.rs:一个两状态(相位、频率)滤波器,其精确的van Loan过程噪声与真值模型一致;滑行复现了解析的守时方差q_wf*T + q_rw*T^3/3,偏差1e-9。协方差更新采用Joseph稳定形式 P⁺ = (I−KH)P(I−KH)ᵀ + KRKᵀ,在极端的R=1e-26 / Q≈1e-30比值下经500个预测/更新步骤仍保持半正定(经Cholesky检验),并且在后者条件良好时与朴素形式吻合到1e-9。运行层把完好性报告为中断样本中落在3-sigma保护界限之内的比例(src/run.rs)。 |
| 滤波器自洽性(NIS(归一化新息平方)/ NEES(归一化估计误差平方)) | validated(模型) |
src/filter_health.rs:蒙特卡罗一致性评估(Bar-Shalom §5.4)。匹配滤波器合并后的NIS → 1和NEES → 2落在各自95% 的 χ² 区间之内(NIS区间使用合并后的白新息计数;NEES区间使用独立运行计数,因为估计误差在时间上相关)。一项Q/R失配扫描测试验证,监测器仅在调参为单位值时报告consistent=true,而在 ×0.1/×0.5/×2/×10失配时报告consistent=false,NIS如推导所示约按1/q_factor变化。它在时钟结果JSON(JavaScript Object Notation)和playground卡片中以filter_health呈现。χ² 区间使用Wilson–Hilferty分位数(detection::chi2_inv_cdf,已与表格核对)。 |
| 双向时间传递模型 | validated(模型) |
src/timetransfer.rs:互易的共模延迟在(m_AB - m_BA)/2估计中被精确抵消(手工推导,精确),两次单向测量平均后为1/sqrt(2)(按随机种子平均);非互易的差分延迟是有色的白FM + 随机游走FM过程,其阿伦偏差遵循sigma_y^2(tau) = q_rw*tau/3(按随机种子平均,约20%,经由该链路自身的step())。参数(每条链路的sigma_j、q_rw)是具有代表性的TWSTFT/光学(TWSTFT:双向卫星时间频率传递)数值,并未针对某个具体终端拟合。 |
| 安全性(欺骗干扰检测评分) | validated(模型) |
src/security.rs:监测器的1-sigma下限sqrt(r/m + q_wf*tau + q_rw*tau^3/3)、由此得到的k-sigma最小可检偏移以及[0,1]评分,均为手工推导并有单元测试。该模型(新息 / RAIM式(RAIM:接收机自主完好性监测)时钟辅助检测)是合理的;参数(监测窗口tau、检测倍数k、测量噪声r)是代表性取值,并未针对某个具体接收机拟合。 |
| 欺骗攻击检测 | validated(模型) |
src/spoof.rs:当斜升的虚假时间欺骗的偏移超过时钟的检测界限时被标记;检测时间与手工推导的start + bound/rate相差不超过一个网格步,而界限超过规格的时钟会让欺骗在未被检测到的情况下达到阈值。与安全性评分的representative-parameters保留意见相同。 |
| 闪烁FM(本底) | modeled(默认关闭) |
合成为一组对数间隔的Ornstein-Uhlenbeck(OU)过程之和,校准到可配置的平坦ADEV本底;src/models.rs核对该本底在各平均时间上是平坦的,并处于所配置的水平(按随机种子平均)。按时钟通过flicker_floor启用。所引用的参考场景将其关闭:CSAC在其数据手册范围(1-1000 s)内以白FM为主,而光钟的系统本底(约5e-17)由其精度数值代表。 |
| 蒙特卡罗集合统计 | validated(聚合) |
src/ensemble.rs:对runs次可复现的实现取最近秩百分位数与均值;单次运行时离散度塌缩,逐时间步的区间满足p05 <= p50 <= p95的顺序,重复运行逐位相同。这是对已经过核对的单次运行所做的统计聚合,而不是新的物理模型。 |
| 时钟 | sigma_y(1 s) | 来源 |
|---|---|---|
| csac-sa45s(CSAC) | 3.0e-10 | Microchip SA65 / SA.45s数据手册 |
| optical-sr-lattice(Sr晶格) | 1.0e-15 | 锶光晶格钟,面向空间应用的目标,arXiv:1503.08457 |
状态:白FM和随机游走FM已经独立核对;老化为建模得出并已校准扣除;闪烁FM为建模得出并已核对(在所引用的场景中默认关闭)。
成熟度:光钟数值是地面硬件上的面向空间应用的目标——尚无锶光钟上过天。实验室中的Sr钟达到4.8e-17(Oelker等2019,Nature Photonics)。CSAC数值来自已部署的商用器件。
关系:Riley,NIST SP 1065,式67——白FM sigma_y^2(tau)=h0/(2 tau);随机游走FM sigma_y^2(tau)=(2 pi^2/3) h_-2 tau,对于扩散系数为q_rw的频率维纳过程,等价于q_rw*tau/3。
包2——惯性航位推算(量子惯性测量单元)#
| 项目 | 状态 | 证据 |
|---|---|---|
| 恒定/残余偏置 ->位置 | validated |
位置误差 = 0.5bT^2一族(Groves AESS(航空航天与电子系统学会)教程);src/inertial/mod.rs中有手工推导的离散测试。 |
| 速度随机游走(白加速度) | validated |
src/inertial/mod.rs:仿真的位置误差SD(标准差)与sigma_x(T)=sqrt(S_a*T^3/3)(Groves式54)吻合到观察值约12%(按随机种子平均;强制门限20%)。 |
| 冷原子干涉(CAI)加速度计物理(第一性原理) | validated(模型) |
src/inertial/quantum_imu.rs:三脉冲Mach-Zehnder冷原子干涉仪。已对照教科书几何手工验证——Rb-87 k_eff = 4pi/lambda ~ 1.611e7 rad/m;1 g下的Phi = k_eff*a*T^2 ~ 1.580e4 rad,T = 10 ms;投影噪声sigma_Phi = 1/(C*sqrt(N)) = 2e-3 rad,取C = 0.5、N = 1e6;单次sigma_a ~ 1.24e-6 m/s^2;1/T^2与1/sqrt(N)标度律;指数衬比衰减。q_va()推导出经典AccelModel所使用的白加速度PSD(功率谱密度)。如实说明适用范围:这里只是量子投影噪声本底(此处约0.09 ug/sqrtHz)——远低于真实的、受振动限制的器件(1-50 ug/sqrtHz);振动张量、科里奥利和光频移系统误差尚未建模(见QUANTUM.md)。 |
| 陀螺偏置 + 角度随机游走(ARW)->倾斜 ->重力耦合 | modeled(默认关闭) |
残余陀螺偏置和ARW导致姿态误差;倾斜把重力(g*theta)耦合进水平比力误差。src/inertial/mod.rs精确核对了纯偏置的三次方位置增长,并核对了ARW姿态增长为维纳过程(按随机种子平均)。按传感器通过gyro_bias和q_arw启用;在所引用的仅加速度计场景中关闭。 |
| 偏置不稳定性(1/f闪烁本底) | modeled(默认关闭) |
src/inertial/mod.rs:一个1/f闪烁过程(与时钟所核对的同一种OU合成),其平坦的阿伦偏差本底位于偏置不稳定性系数处;取零为空操作,非零本底会改变轨迹,两者均可复现。按传感器通过bias_instability启用。 |
| 加速度随机游走(速率随机游走) | validated |
src/inertial/mod.rs:偏置是满足Var(bias_rw(T)) = q_aa*T的维纳过程,按随机种子平均核对到约20%。按传感器通过q_aa启用。 |
| NaveGo交叉验证(IMU(惯性测量单元)噪声系数) | validated |
tests/navego_imu_crossval.rs:对照NaveGo(R. Gonzalez,开源INS/GNSS(INS:惯性导航系统)工具箱,github.com/rodralez/NaveGo)的外部交叉核对。在其已发布的Microstrain 3DM-GX3-35参考配置上复现NaveGo的navego_example_allan.m合成往返:用NaveGo的1-σ 水平的白传感器噪声驱动我们(经NBS14/Stable32核对的)重叠ADEV估计器,恢复出速度和角度随机游走(VRW、ARW)系数(ADEV(1 s) = σ·√dt),偏差< 5%(实际约0.4%),白噪声分支处于 −1/2斜率。这确认了我们的阿伦流水线与NaveGo的VRW/ARW定义一致。40 MB的已记录STIM300 .mat日志未被导入(受二进制格式所限)。 |
| 比例因子、更细的交叉轴项 | 在这个1-DOF(一个自由度)包中为not modeled |
旧版单轴包没有比例因子或交叉耦合误差。三轴捷联库和gnss-ins包确实对比例因子、失准角、g敏感性、量化和速率斜坡建模(src/inertial/imu_errors.rs;见下方的声明表)。 |
| 传感器 | 偏置稳定性 | 噪声根谱密度 | 来源 |
|---|---|---|---|
| cold-atom-quat(量子) | 5.88e-7 m/s^2(60 ng,24 h) | 22 ug/sqrtHz = 2.16e-4 (m/s^2)/sqrtHz | Templier等2022,Science Advances(arXiv:2209.13209) |
| nav-grade-quartz(经典) | 1.57e-3 m/s^2(约160 ug) | 约20 ug/sqrtHz = 1.96e-4 (m/s^2)/sqrtHz | Honeywell QA-2000 / Groves AESS教程 |
如实表述:冷原子的优势在于长期偏置稳定性(低约2600倍),它通过0.5bT^2在长时间GNSS中断中起主导作用。短期噪声相当(量子约22,经典约20 ug/sqrtHz)——量子传感器赢的是马拉松,而不是短跑。成熟度:冷原子加速度计处于实验室/早期阶段(JRC122785),导航级石英已经部署。
包3——时间传递(光学与射频(RF),光学星间链路)#
| 项目 | 状态 | 证据 |
|---|---|---|
| 白噪声授时抖动 ->同步精度 | validated |
src/timetransfer.rs:仿真的同步RMS复现链路抖动sigma_j;样本均值按sigma/sqrt(N) 平均,偏差<20%(按随机种子平均)。 |
| 授时 ->单向测距 | validated |
距离 = c * dt,c=299792458 m/s;1 ps = 0.299792458 mm(精确,手工推导的测试)。 |
| 闪烁/TDEV本底,双向互易残差 | modelled |
src/twstft_budget.rs(time-transfer-budget类型):双向序列上的闪烁相位噪声(Kasdin–Walter,平坦TDEV)、日变非互易性和恒定互易残差;白抖动的timetransfer包保持不变。 |
| 链路 | 单样本抖动 | 类型 | 来源 |
|---|---|---|---|
| optical-isl | 1 ps(1e-12 s) | 在轨可信的目标 | 光学星间链路,皮秒级同步目标;实验室O-TWTFT(TWTFT:双向时间频率传递)约1 fs(Giorgetta 2013 / Deschenes 2016) |
| twstft-rf | 0.5 ns(5e-10 s) | 实测的单次会话 | BIPM/PTB/NIST(BIPM:国际计量局;PTB:德国物理技术研究院,德国国家计量研究院)TWSTFT |
如实表述:光学数值是皮秒量级的在轨同步目标(尚未上天)。地面光学实验室的本底约为1 fs(好得多);精心设计的微波链路(ACES(空间原子钟组)微波链路(MWL),约0.3 ps)可以与光学相媲美,因此“RF = 0.5 ns”基线特指普通的TWSTFT。测距换算为单向(距离 = cdt);双向/往返则减半(距离 = cdt/2)。
包4——混合融合(压轴篇)#
把包1(时钟)、包2(惯性)和包3(时间传递)组合成一套PNT(定位、导航与授时)套件。该套件必须使授时(< 授时规格)与位置(< 位置规格)两者都保持在界限之内;pnt_holdover_s是直到其中任何一项越界的时间。可选的光学星间链路(ISL)时间传递在中断期间对时钟重新同步(仅授时辅助——位置不会被重新同步,因为时间传递给出的是时间,而不是位置)。
| 方面 | 状态 | 证据 |
|---|---|---|
| 联合PNT评分(授时与位置) | validated |
src/hybrid.rs手工推导的score_hybrid测试(pnt_holdover = 授时/位置中最先越界者)。 |
| 混合包的完好性 + 安全性 | validated |
src/hybrid.rs:一个卡尔曼授时估计器,被牵引到真值(标称),并在每次光学重新同步时重新锚定;完好性是保护界限的包含率(界限含链路抖动本底),安全性是欺骗干扰检测评分。两种套件(包括链路辅助的情形)均经过测试。 |
| 联合融合估计器 | validated(模型) |
src/fusion/mod.rs:单个联合卡尔曼滤波器([相位, 频率] ⊕ [位置, 速度])担任导航器,由GNSS牵引(从非零初始协方差中学习偏移)并由时间传递辅助;联合协方差给出联合完好性,对两种套件、配以噪声自洽的传感器,经测试是可靠的(≥0.9)。该包分别观测位置和时间,对此最优滤波器是块对角的;增广状态的恒定偏置估计和动态交叉辅助属于未来工作。 |
| 耦合的时钟+位置滤波器(跨块协方差) | validated(模型) |
src/fusion/coupled.rs CoupledPntFilter:单个堆叠的[pos, vel, phase, freq]卡尔曼滤波器(Joseph形式更新),其伪距测量ρ = g·pos + c·phase + noise把位置块与时钟块耦合起来。测试:共享的伪距使P[pos,phase]非零(解耦滤波器会让它精确保持为0);两种不同的几何构型共同解出单个测距无法区分的、被注入的位置和时钟偏移;仅时钟的定位解通过交叉协方差使位置变得更精确(这是耦合带来而解耦滤波器无法带来的收益);并且蒙特卡罗NEES与 χ²(4) 自洽(Bar-Shalom §5.4,基于运行次数的区间)。1-DOF(该包的维数);尚未接入可运行的包,3-D的8状态扩展属于未来工作。 |
| 由已核对的子模型组合而成 | 继承 | 时钟/惯性/时间传递各项在各自的包中已核对。 |
松耦合GNSS/INS(gnss-ins包) |
validated(模型) |
src/fusion/{gnss_ins_ekf,closed_loop,pack}.rs:一个15状态误差状态EKF(δp、δv、ψ、加速度计/陀螺偏置;Groves §14)带反馈地驱动三轴捷联导航器。测试:在完美真值辅助下,被注入的位置误差归零;辅助解保持在米级界限内,而自由运行的INS发散超过100 m;在60 s的中断中,融合后的位置RMS优于无辅助航位推算,达到集合测试的界限(在0.27.3之前测得约4×;在下述修复之后裕量更大)。陀螺偏置耦合与捷联本身核对:已知的残余陀螺偏置必须产生滤波器所预测的姿态误差(closed_loop::tests::gyro_bias_coupling_predicts_the_strapdown_attitude_error),并且宽先验必须学到飞控级的陀螺偏置同时保持有界;两者在0.27.3之前的符号下都会失败。在0.27.3中修订:该耦合的符号有误,导致陀螺偏置估计朝错误方向推动,只有紧先验才使该包保持稳定;已发布的中断数字因此变化(CHANGELOG,Fixed)。如实说明的局限:松耦合下加速度计偏置/倾斜难以分离,因此不声称可做逐项偏置校准。 |
| 紧耦合GNSS/INS(伪距) | validated(模型) |
src/fusion/gnss_ins_ekf.rs update_tightly_coupled + closed_loop.rs fuse_tightly_coupled:新息在距离域中形成(对 δp的视线雅可比)。测试:四颗卫星使被注入的8 m/−5 m水平误差归零到< 0.1 m;两颗卫星(无法得到位置、速度与时间(PVT)解)仍能把水平误差削减超过5×;单颗正上方的卫星只观测到沿视线(垂直)分量,而不触动水平分量;格式错误的输入会被拒绝。仅伪距——载波相位和显式的接收机钟状态在路线图中。 |
| 传感器交叉辅助保真度(完整卡尔曼/因子图融合) | 在hybrid包中为not modeled |
混合包是系统级的组合加时间辅助,而不是最优估计器。滤波器存在于别处:gnss-ins包(见上面各行)的松耦合与紧耦合EKF(扩展卡尔曼滤波器),以及hybrid-ukf类型的17状态UKF(无迹卡尔曼滤波器)。没有建模因子图平滑器。 |
结果:全量子套件在1.8 h的中断期间保持完整的PNT;全经典套件受位置限制(导航级IMU最先越界)。光学ISL时间传递让经典的时钟也保持锁定,从而把惯性传感器隔离出来,作为经典套件的薄弱环节——这正是把量子惯性与光学授时结合起来的核心论据。
几何——由轨道得出的GNSS可用性#
| 方面 | 状态 | 证据 |
|---|---|---|
| 圆形二体外推 | validated |
src/orbit.rs:周期T=2 pi sqrt(r^3/mu)(mu = 3.986004418e14),位置在一个周期后复原,赤道/极轨共面性——手工推导的测试。 |
| 偏心(开普勒)外推 | validated |
src/orbit.rs:开普勒方程M = E - e sin E用牛顿法求解(残差< 1e-12);近地点/远地点半径a(1∓e);圆形情形与闭式路径吻合到1e-9。 |
| J2长期节点/拱线漂移 | validated |
src/orbit.rs:Omega_dot = -1.5 n J2 (Re/p)^2 cos i、argp_dot = 0.75 n J2 (Re/p)^2 (5cos^2 i - 1)(Vallado);节点顺行轨道时西退 / 逆行轨道时东进 / 极轨时静止,拱线在临界倾角63.4度处冻结——手工推导的符号/零值测试。仅二体加长期项,不是密切根数。 |
| 视线可见性(地球遮挡 + 高度截止角) | validated |
对跖点的卫星被遮挡,径向向外的卫星处于90度高度角,切向卫星位于地平线上——精确的手工推导测试。 |
| 可见性 -> GNSS状态 ->时间线 | validated |
>=4颗可见 = 标称,1-3颗为降级,0颗为拒止;Walker-delta生成器;集成测试由推导出的时间线驱动一次时钟守时运行。 |
| 星座设计优化器 + 覆盖带几何 | validated(模型) |
src/walker.rs:optimize_walker_design搜索{planes × sats × inclination}网格,并返回最能满足DesignObjective的单元(覆盖目标所需最少卫星数 / 最大覆盖 / 最小最差PDOP(PDOP:位置精度因子))——一项测试断言所选结果等于对同一扫描所做的独立暴力扫描,一个算例确认GPS(全球定位系统)Walker 24/6/1设计的覆盖至少不逊于一个稀疏化的18颗卫星设计。解析的覆盖带闭式解(coverage_half_angle_rad λ = arccos(Re/r·cos ε) − ε;street_half_width_rad cos c = cos λ / cos(π/s),Rider/Beste)已对照教科书几何手工验证(GPS在5° 截止角下:λ ≈ 71.16°,4星覆盖带半宽 ≈ 62.83°),并能检测到星数不足的缺口(λ < π/s ⇒ None)。完整的Rider最少卫星全球覆盖求解器(对接缝敏感的轨道面数)尚未实现。 |
| 精度因子(GDOP/PDOP/HDOP/VDOP/TDOP(GDOP:几何精度因子;HDOP:水平精度因子;VDOP:垂直精度因子;TDOP:时间精度因子))->位置精度 | validated |
src/orbit.rs:由视线设计矩阵得出Q=(HᵀH)⁻¹。外部参考基准(oracle)(tests/dop_reference.rs):这五个DOP因子复现了gnss_lib_py 1.0.4(Stanford NAV Lab——一个经同行评审的独立GNSS库,其用法在此类似于ERFA(Essential Routines for Fundamental Astronomy)之于坐标系)所算出的结果,覆盖8种几何构型,从条件良好到接近奇异(DOP达数百),相对偏差1e-6;来源与重新生成方法见tests/fixtures/dop/。作为额外的闭式核对,正四面体几何构型复现了解析DOP值(PDOP 1.5、TDOP 0.5、GDOP √2.5、HDOP √1.5、VDOP √0.75),偏差1e-9。位置sigma = PDOP × 用户等效测距误差。 |
| 对引擎自身最小二乘定位解,位置误差 = σ_UERE × DOP | modelled |
src/dop_error_mc.rs、tests/uere_dop_monte_carlo.rs:对pvt::solve_spp做带随机种子的蒙特卡罗(每种几何构型N = 20,000个历元,σ = 1.5 m,ChaCha8随机种子36 + i),采用单位权重、从真实位置出发求解,在tests/fixtures/dop/dop_reference.csv的8种几何构型(其DOP已与gnss_lib_py吻合的那些)上,对照 σ²·Q,其中Q是orbit::dop内核自身(orbit::dop_cofactor,同一套运算)的协方差因子。容差已预先登记(提交e50c88d2,在第一次运行之前,依据0.36几何设计说明第5.2节),每一项都以标准误差的倍数表示:东向、北向、天向和钟差方差在5 % 之内;H/V/P RMS在2.5 % 之内;东-北相关系数在0.035之内;均值在5个标准误差之内;95 % 水平椭圆包含比例在0.95 ± 0.0077之内。首次运行:全部104项检查通过(最差的方差3.2 %,RMS 1.6 %,相关系数0.012,均值2.2个标准误差,椭圆0.0039)。负对照按要求失败:PDOP加倍,在每种几何构型上都失败;误差按1/sin(仰角) 增长并对照未加权的Q,在每一种最低卫星低于20° 的几何构型上都使方差检查失败。它与上一行的关系:上一行对照gnss_lib_py核对了这些几何构型的DOP;本行补上了通过引擎的求解器把这些因子转换为米的那一步。旁边保留了一项单独的首次核对(src/dop_error_ci.rs、tests/position_error_dop_ci.rs,在预先登记之前运行,并如实标明):四种人工选定的天空(开阔、聚集、峡谷、半天空;σ 1 m),在20项检查上总计1e-6的卡方置信区间;比值为0.987至1.009,其自身的负对照(10 % 的DOP误差、1/sin(仰角) 误差)按要求失败。为何为MODELLED:没有外部数据集;它并不表明真实接收机的误差遵循该模型,而且 σ_UERE是输入。 |
| 多星座可用性 | validated |
src/orbit.rs:额外的[[constellations]]被合并为一个卫星集合,用于可见性/DOP;一项合并计数测试确认了并集。 |
| 广播电离层(Klobuchar,IS-GPS-200(IS:接口规范))→ L1斜路径延迟 | validated |
src/gnss_sim.rs:klobuchar_delay_m,即八系数广播单频模型。外部参考基准(oracle)(tests/klobuchar_reference.rs):斜路径L1延迟复现了RTKLIB(开源实时动态定位库)的ionmodel(tomojitakasu/RTKLIB,src/rtkcmn.c——事实上的开放GNSS参考,由源码编译并独立运行),覆盖10个案例,涵盖仰角、方位角、地方时和两组系数(kshana的默认值 + RTKLIB的),偏差< 1e-4 m。针对GIM(全球电离层图)文件的IONEX(电离层图交换格式)TEC图(TEC:总电子含量)读取器现已具备(src/ionex.rs,带双线性空间与时间插值以及斜路径映射的parse_ionex,在crate内有单元测试);把该插值与真实的CODE(欧洲定轨中心)GIM产品做交叉核对,仍属后续工作。广播模型本身已经过外部核对。 |
| RAIM/ARAIM(ARAIM:先进接收机自主完好性监测)检测内核(χ² / 非中心 χ² / 正态)→ 阈值与乘数 | validated |
src/raim.rs:快照 / 解分离 / ARAIM检测阈值(chi2_quantile)、漏检非中心参数pbias=√λ(noncentral_chi2_cdf)以及K_fa/K_md/K_V乘数(normal_quantile),全部由一个无依赖的正则化不完全伽马函数计算得出。外部参考基准(oracle)(tests/raim_reference.rs):171个案例复现了SciPy 1.17.0(scipy.stats.chi2/.ncx2/.norm + optimize.brentq——独立的Cephes/Boost实现,算法不同),覆盖P_fa / P_md / 冗余度的工作范围,相对偏差 ≤ 1e-6。包裹该内核的几何(来自(GᵀG)⁻¹的斜率/协方差)是经gnss_lib_py核对的DOP内核。范围:本行固定的是统计内核。ARAIM MHSS(多假设解分离)分配的保护级数值另行对照WG-C(Working Group C)ARAIM技术小组已发布的算例固定(tests/araim_reference_vectors.rs,VPL(垂直保护级)18.2926 m对18.3 m,HPL(水平保护级)13.4063 m对13.45 m,在参考值自身0.05 m的容差之内;见下方的标准说明和ARAIM_REFERENCE.md)。 |
| SBAS(星基增强系统)保护级(DO-229E附录J)→ 水平 / 垂直保护级(HPL / VPL) | validated |
src/sbas.rs:sbas_protection_level,加权LS(LS:最小二乘)D=(GᵀWG)⁻¹ → 水平误差椭圆长轴 + 垂直 σ,再乘以DO-229E的K因子。外部参考基准(oracle)(tests/sbas_reference.rs):kshana的HPL复现了RTKLIB SBAS-PL分支(zsiki/rtklib_ws waasprotlevels(),Siki和Takács 2017的“DO-229D附录J”实现),由rnx2rtkp -ws在真实的EGNOS(欧洲地球静止导航重叠服务)数据(GEO(地球静止轨道)PRN120广播电文 + 真实的BUTE/布达佩斯RINEX(与接收机无关的交换格式),2017-02-19)上运行,覆盖6个历元,偏差< 2e-3 m。每颗卫星的 σ 是参考基准自身完整的SBAS预算(UDRE(用户差分测距误差)+ GIVE(格网电离层垂直误差)电离层 + 对流层 + 机载)。ESA gLAB v6.0.0(core/filter.c)经编译并确认使用相同的约定。K_V说明:两个参考基准都把MOPS(最低运行性能标准)的K_V取整为5.33;kshana使用精确的Φ⁻¹(1−5e-8)=5.3267(VPL小约0.06 %),因此垂直方向按不含K因子的d_U(= 参考基准VPL / 5.33)来核对。HPL则直接吻合(两侧K_H = 6.0)。 |
| 来自TLE的真实星座几何(第2行 / 开普勒) | validated(解析) |
src/tle.rs:解析第2行的平均开普勒根数(由平均运动得出半长轴);一组已知的ISS(国际空间站)根数往返后得到正确的根数和周期。对于仅含第2行的数据块,外推采用引擎对平均根数的二体(+ 可选J2)模型——对来自同一历元的快照是合理的,但随时间推移会偏离SGP4(Simplified General Perturbations 4)。 |
| SGP4 / SDP4(Simplified Deep-space Perturbations 4)外推(完整TLE) | validated |
src/sgp4.rs:完整的近地SGP4 + 深空SDP4(月日长期/周期项 + 12 h / 24 h地球位共振)。已在tests/sgp4_verification.rs中对照官方的AIAA(美国航空航天学会)2006-6753(“Revisiting Spacetrack Report #3”)向量核对——全部666个参考状态(近地、深空、共振、错误码情形)吻合,最坏位置误差约4.1 mm。完整的两行根数(第1行 + 第2行)用SGP4外推;仅含第2行的保持开普勒模型;两者可以混用。坐标系为TEME(真赤道、平春分点),对用户和卫星一致使用(没有TEME→ECEF(ECEF:地心地固)换算——对可用性/DOP几何已经足够)。 |
| IAU(国际天文学联合会)2000A / 2000B章动 + TEME→GCRS(GCRS:地心天球参考系)换算 | validated |
src/nutation.rs:完整的IAU 2000A级数(678个日月项 + 687个行星项,nutation_iau2000a)和77项的2000B截断(nutation_iau2000b),各自在JD_TT 2453736.5处对照已发布的SOFA/ERFA(SOFA:Standards of Fundamental Astronomy)参考向量做了逐位核对——eraNut00a给出 Δψ = −0.9630909107115518e-5,Δε = 0.4063239174001679e-4;eraNut00b给出 Δψ = −0.9632552291148363e-5,Δε = 0.4063197106621160e-4——两者均达到1e-13 rad。2000A表由tools/gen_nut00a.py从ERFA的nut00a源码机器生成(逐位复现已提交的nutation_iau2000a_data.rs)。章动矩阵(iauNumat)、二分差,以及完整的TEME→TOD→MOD→GCRS(TOD:当日真;MOD:当日平)链(teme_to_gcrs,Vallado AIAA-2006-6980)经过了真旋转/往返/岁差加章动性质的测试,其中章动矩阵逐元素对照ERFA numat,偏差1e-14,整条TEME→GCRS链则对照Vallado已发布的TEME→GCRF算例(AIAA 2006-6753,2004-04-06),偏差0.11 m(tests/frame_reference_vectors.rs);在加入这项端到端核对之前,章动矩阵所带的 Δψ 符号有误,造成一个2·Δψ(约25″)的旋转,性质测试无法发现它(见CHANGELOG,Unreleased,Fixed);2000A与2000B按要求吻合到< 1 mas。该链基于春分点/GMST(GMST:格林尼治平恒星时);不依赖春分点的CIO(X,Y,s)换算及其独立的ANISE/SPICE(ANISE:Attitude, Navigation, Instrument, Spacecraft, Ephemeris——纯Rust行星几何工具包;SPICE:Spacecraft, Planet, Instrument, C-matrix, Events)数值交叉核对(GNSS轨道上 ≤ 3.6 m,远在< 10 m目标之内)见下方的CIO行。 |
| IGRF-14(IGRF:国际地磁参考场)地磁主磁场模型 | validated |
src/igrf.rs:IAGA(国际地磁与高空物理协会)Schmidt归一化球谐场(阶/次13,2025.0 + 长期变化;系数由官方igrf14coeffs.txt通过tools/gen_igrf.py机器生成,逐位复现igrf_data.rs)。在五个独立方面得到核对:(1)对照IAGA文件精确抽查系数(g₁⁰=−29350.0、g₁¹=−1410.3、h₁¹=4545.5 nT);(2)1阶合成复现精确的闭式倾斜偶极子场(B_r,B_θ,B_φ),偏差1e-6;(3)完整的13阶解析场等于标量势的 −∇V(有限差分,偏差1e-4)——端到端检验了勒让德导数和1/sinθ 项;(4)偶极轴复现已知的地磁北极(约80.7°N,−72.7°E)和偶极强度(约29.7 µT),全球磁场位于物理上合理的22–67 µT范围内,且半球磁倾角符号正确;以及(5)外部参考基准(oracle)——完整合成复现了官方British Geological Survey IGRF-14网络服务在2025.0(大地、WGS-84(WGS:世界大地坐标系)高度)处的数值,X/Y/Z/F偏差< 2 nT,D/I偏差< 0.02°,涉及四个点,包括400 km高度(synthesis_matches_the_official_bgs_igrf14_values_at_2025)。 |
| 基于CIO的IAU 2006/2000A GCRS↔ITRS(ITRS:国际地球参考系)换算 | validated |
src/cio.rs:不依赖春分点的天球到地球链。CIP(天球中间极)坐标(X, Y)和66项CIO定位量s级数,在JD_TT 2453736.5处对照已发布的SOFA/ERFA eraXys06a向量做了逐位核对——X=0.5791308482835292617e-3(1e-14),Y=0.4020580099454020310e-4(1e-15),s=-0.1220032294164579896e-7(1e-18);GCRS→CIRS(CIRS:天球中间参考系)矩阵对照eraC2ixys(全部九个元素偏差1e-12);地球自转角(ERA)对照eraEra00(2400000.5, 54388.0) = 0.4022837240028158102(1e-12)。s表由tools/gen_s06.py从ERFA的s06.c参考机器生成(逐位复现cio_s06_data.rs)。完整的gcrs_to_itrs_matrix(CIO eraC2tcio = 极移 · ERA · GCRS→CIRS)经过真旋转加往返的测试,并显示与旧版的春分点/GMST-1982 TEME换算一致,在7,000 km半径处相差在1 m之内(两种约定在该处相差约5 cm)。独立的第三方交叉核对(xval/anise-frames/):同一个gcrs_to_itrs_matrix与ANISE(纯Rust的NAIF/SPICE(NAIF:导航与辅助信息机构)重新实现)作比较,后者使用来自JPL(喷气推进实验室)的earth_latest_high_prec.bpc把GCRF旋转到ITRF93(GCRF:地心天球参考框架;ITRF93:国际地球参考框架1993),两侧输入的是相同的IERS(国际地球自转与参考系统服务)finals2000A地球定向参数,覆盖2020–2023年的八个季度历元。这两个独立的坐标系实现吻合到最大相对旋转0.028″——地面上 ≤ 0.86 m,LEO(低地球轨道)处 ≤ 0.93 m,GNSS轨道处 ≤ 3.6 m(平均角0.023″)。这就是ROADMAP中“< 10 m”的坐标系交叉核对,已完成;其残差是预期的ITRF93与IERS-2010-CIO模型/基准之差,不是缺陷(逐位的锚点仍是上文的SOFA/ERFA向量)。ANISE是MPL-2.0(MPL:Mozilla公共许可证)/ edition-2024的crate,因此该核对位于一个独立的、被排除在工作区之外的子crate中,从不触及已发布的kshana依赖图或任何默认的CI门禁。 |
| SP3(Standard Product 3,精密轨道格式)导出往返(星座 → SP3-c → 重新解析) | validated |
tests/sp3_export_roundtrip.rs:真实的Celestrak gps-ops快照(30颗GPS卫星)用SGP4外推,导出为SP3-c(Sp3File::from_propagators → to_sp3_string),重新解析(parse_sp3),并在24 h内的每个历元把恢复出的ECEF位置与SGP4真值作比较——最差残差< 0.5 m(写出器的毫米级序列化;里程碑中10 m的TLE(TLE:两行根数集)级容差在很大裕量下得到达到)。CLI(命令行界面)的--export-sp3路径也有覆盖:自带的轨道场景导出可重新解析的30颗卫星SP3,而非轨道场景会被拒绝。 |
| 基于TLE的真实GPS星座几何(SGP4 → ECEF) | validated |
tests/igs_real_data.rs:一份真实的Celestrak gps-ops快照(2021-07-28,30颗在役GPS卫星;来源见tests/fixtures/celestrak/NOTICE)被解析,每颗卫星经由已核对的SGP4核心外推到同一时刻,并由TEME旋转到ECEF。断言整个星座落在GPS中地球轨道(MEO)壳层的1% 以内,并且在一个中纬度开阔天空站点,真实的全部可见卫星(九颗)给出PDOP 1.64,垂直精度因子大于水平精度因子(对地面用户必然如此)。这在一个真实星座上检验了SGP4,与SP3(精密)和RINEX(广播)的真实数据路径并列。 |
| SGP4平均根数Walker生成器 | validated |
src/walker.rs:设计好的Walker-delta构型被输出为SGP4平均根数(选取Kozai平均运动,使SGP4半长轴落在目标壳层上),并经由已核对的核心外推。测试:一个24颗卫星的类GPS Walker位于MEO壳层的1% 以内,各轨道面在升交点赤经(RAAN)上恰好相隔90°(由轨道法向量恢复),并且平均运动复现约718 min的GPS壳层周期。 |
| 星座PDOP扫描 + 覆盖/重访性能指标(FoM) | validated(单调性) |
src/walker.rs:pdop_sweep在{planes × sats × inclination}网格上列出覆盖率以及PDOP的中位数/最差值;coverage_revisit报告地面某一点的覆盖比例和重访间隔。通过设计权衡必须遵守的物理单调性得到核对:增加卫星绝不会降低覆盖,并严格降低PDOP中位数(完整的24颗卫星设计连续覆盖,PDOP约1.7),而把稀疏化的星座加密则严格缩小最差重访间隔。平均重访间隔绝不超过最大值。这些是几何权衡表,不是经认证的链路/覆盖预算。 |
如实表述:这是一个确定性的几何层(圆轨道、平均半径6371 km的球形地球、纯视线)。它由真实几何确定可用性和几何位置精度(精度因子 × 具有代表性的测距误差预算),而不是精密星历的导航解。orbit-gnss-challenged.toml参考场景把航天器置于GNSS壳层之内:它一天中只有约59% 的时间保持定位,量子时钟在每次间断中都保持5 ns的授时解(可用性1.0),而芯片级时钟约保持0.73。
数值(Cowell)外推器与力模型#
数值外推器(src/propagator.rs)用自适应积分器(src/integrator.rs)对分层的力模型(src/forces.rs)进行积分。下面每一项都对照解析真值或手工推导的闭式解做了核对;各项摄动默认关闭,因此已发布的golden值不受影响。组合后的模型也与另一款工具做了交叉核对:tests/numerical_cowell_propagator_reference.rs运行11个LEO与GTO(地球同步转移轨道)案例,275个逐小时历元,对照Orekit 12.2的DormandPrince853外推器,保守项各层(二体 → J2–J6 → 日/月 → 球形SRP)在24 h内最差吻合到0.08 m(矩阵中为VALIDATED);阻力层仅作了特性刻画(333 m),仍为MODELLED。
| 项目 | 状态 | 证据 |
|---|---|---|
| Cowell外推器对照解析开普勒真值 | validated |
src/propagator.rs:无摄动(二体)轨道在24 h的LEO轨道上,复现精确的通用变量开普勒解,达到亚米级(比“对照数值参考< 10 m”更严的门限);比能量和角动量守恒到约1e-9相对精度;J2节点进动复现闭式的j2_secular_rates,在一阶理论范围内吻合(2 % 之内,即O(J2²) 残差)。当牛顿法无法收敛时(近地点附近e = 0.999),solve_kepler_checked返回Err,而不是悄悄给出错误答案。稳健的solve_kepler_robust(Markley 1995初值,src/kepler.rs)在该处以及整个0 ≤ e ≤ 0.999999范围内都收敛,与50位数字的mpmath根相差在0.9 ε·|E| 之内(tests/kepler_mpmath_oracle.rs)。 |
| 自适应积分器(RK4(四阶Runge–Kutta)步长加倍 + Dormand–Prince RK5(4) 嵌入对,下文称DP5(4)) | validated |
src/integrator.rs:RK4对y' = y → e积分到< 1e-9,步长每减半误差下降约16×(4 阶收敛),并在一个周期内保持谐振子守恒。DP5(4) 嵌入误差估计为O(h⁵)(步长减半使其降低约32×),对振子积分50个周期,能量守恒到< 1e-6,并且在相同容差下以更少的函数求值次数到达与步长加倍相同的终点;propagate_dopri通过同一个亚米级开普勒门限,并与RK4路径吻合,差异< 1 m(J2..J6轨道)。DOP853(integrate_dop853):Hairer的带稠密输出的8(5,3) 对,逐步复现SciPy 1.18.1的DOP853(单步偏差在5.6e-15之内;在e = 0.7和Arenstorf运行中步数相同,LEO运行中501步里有一次接受/拒绝的翻转;终态偏差在1.6e-12之内),并且与精确开普勒解的吻合程度同SciPy一样好(tests/dop853_scipy_oracle.rs)。 |
| J2–J6带谐场 | validated |
src/forces.rs:zonal_accel经三种方式核对——当限制为[J2]时,它在机器精度下退化为经666个向量核对的j2_accel;它在整个J2..J6场上与自身带谐势的数值梯度吻合(保守场的黄金标准);并且奇数的J3与偶数的J2/J4..J6项在z → −z下表现出特有的南北(反)对称。一条外推的J2..J6轨道在一天内总能量守恒到约1e-8。 |
| 第三体(太阳和月球)引力 | validated |
src/forces.rs + src/ephem.rs:third_body_accel 与其扰动势的精确梯度吻合,在地心处为零,并达到教科书中的LEO量级(太阳约5e-7 m/s²,月球约1.1e-6 m/s²)。低精度的Montenbruck–Gill太阳星历达到手工推导的J2000锚点(近日点距离 ≈ 1.471e11 m,冬至赤纬约 −23°,运动约1°/天);月球星历保持在其近地点/远地点包络之内,恢复出约384,400 km的平均距离,从不超过5.3° 的倾角,并在一个恒星月后回到1° 之内。由历元驱动的RHS(右端项)接线是逐位精确的(在t = 0和t = 1天时,RHS项在采样位置上等于third_body_accel),并且四分之一年的历元平移会得到不同的轨迹。 |
| 太阳辐射压(SRP)+ 锥形阴影 | validated |
src/forces.rs:srp_accel(球形ν·P☉·cᵣ·(A/m)·(AU/d)²·d̂)在全日照下与闭式解逐位相同,把1-AU(AU:天文单位)辐射压固定在约4.5398e-6 N/m²,位于推离太阳的约1.36e-7 m/s² LEO量级内,太阳距离加倍时降为四分之一(平方反比),并且在本影深处精确为零。conical_shadow在全日照下给出ν = 1,在全本影中给出ν = 0(精确),半影平滑单调,在延伸到本影圆柱之外的[b−a, b+a]区间内从0升到1。 |
| 大气阻力(首个与速度相关的项) | validated |
src/forces.rs:atmospheric_density(Vallado表8-4分段指数)在海平面锚定为1.225 kg/m³,在地表以下钳位,在整个LEO中单调下降,在400 km处处于约1e-12 kg/m³ 量级,恢复出的标高约58 km,符合物理;drag_accel与共转相对速度方向相反,量级约2e-6 m/s²(LEO)。标志性的核对:一条300 km的轨道比能单调下降,其半长轴每天衰减有限的约km量级,而真空基线的能量守恒到< 1e-9。 |
| 后牛顿(Schwarzschild)相对论修正 | validated |
src/forces.rs:relativistic_accel(IERS β = γ = 1形式a = (μ/c²r³)·{[4μ/r − v²]·r + 4(r·v)·v})在圆轨道上化为闭式3μ²/(c²r³)·r̂(径向、向外,偏轴分量精确为零),给出教科书中的≈1.9e-9 LEO与二体之比,与手工化简的径向速度形式μ(4μ + 3v²r)/(c²r³)吻合到< 1e-12,并且在外推器中扰动轨道的同时,使半长轴每天的变化保持在一米以下——这是与阻力衰减相反的保守效应。 |
如实说明范围:已发布的ForceModel默认设置只对带谐项场进行积分。高阶EGM2008 田谐场(src/gravity_sh.rs,阶次70)、固体/海洋/大气潮汐(src/tides.rs),以及Lense–Thirring参考系拖曳项现已实现,并已组合进精密星历拟合力模型(src/precise_od.rs,见下文)。田谐场同时也是Cowell ForceModel(propagator::Geopotential,默认关闭)中可选启用的一项,已与Orekit 12.2的HolmesFeatherstoneAttractionModel在阶次70上做过核对(24 h内6个算例,最差 |Δr| 为0.036 m;tests/cowell_tesseral_orekit_oracle.rs)。场的计算器有两种:历史的acceleration(球面偏导数;在远离两极处,阶数可达约180;输出已固定)和acceleration_hf(Holmes–Featherstone 2002改进的前向列递推,梯度不含1/cos φ;在所有纬度上阶数可达2190)。2190阶的EGM2008在运行时加载(from_gfc_file、scripts/fetch_egm2008.sh,不随附)。acceleration_hf在最高2190阶的八个点上与Orekit 12.2的一致程度为7.3e-17 m/s²;其等级仍为MODELLED,因为pyshtools未达到预先登记的近极点判据(mpmath检查表明误差出在pyshtools;xval/high-degree-gravity/)。一条24 h、200×200的轨道与Orekit相差0.13 m,但其预先登记的70阶敏感性对照未达到判据(0.73 m < 1 m),因此71–200阶在轨道上只是做了特征描述,没有经过独立核对(xval/cowell-tesseral-200-orekit/)。NRLMSISE-00(NRLMSISE:美国海军研究实验室质谱仪与非相干散射雷达扩展大气模型)热层密度已移植(src/nrlmsise00.rs:在720个点上与公有领域的C移植版逐位一致,与pymsis的相对差在1.9e-6以内,已复现17个公开发布的测试算例;tests/nrlmsise00_reference.rs),并作为可选启用的阻力密度层级(forces::DensityModel、ForceModel::drag_density;默认仍为静态Vallado模型)。这检验的是移植是否正确,而不是该模型相对实测密度的精度。DE440(DE:Development Ephemeris,发展星历)的太阳和月球是可选启用的星历层级(ForceModel::with_ephemeris)。WGS-84扁球形地球的太阳辐射压阴影可选启用(ForceModel::srp_shadow),在2400种几何配置上与Orekit 12.2的光照比一致到7.4e-9以内(tests/srp_oblate_shadow_orekit_oracle.rs);其临边昏暗变体没有外部参考基准(MODELLED)。NRLMSISE-00阻力层级在24 h内与Orekit 12.2自带的NRLMSISE-00阻力一致到0.03 m,对照的阻力位移最大达142 km(tests/drag_tier_orekit_oracle.rs,在共同约定下为VALIDATED)。与GMAT(General Mission Analysis Tool,通用任务分析工具)的交叉检验仍是后续工作。
地球重力位上的潮汐(src/tides.rs)#
对斯托克斯系数的随时间变化的修正 ΔC̄_nm、ΔS̄_nm(IERS Conventions 2010,第6章),已对照该规范自身公布的数值做过核对,而不是对照另一个工具。
| 贡献项 | 状态 | 证据 |
|---|---|---|
| 固体地球潮汐(IERS式6.6 / 6.8b / 6.14) | validated |
tests/tides_iers.rs:永久(零频)潮汐 ΔC̄₂₀ 与IERS公布的 −4.1736×10⁻⁹(非弹性勒夫数)相差在1 % 以内;Step-2的K1算例逐位复现(正弦/余弦振幅470.9 / −30.2 ×10⁻¹²,精确到0.1×10⁻¹²);归一化Legendre路径由与递推无关的闭式手算值固定。 |
| 海洋潮汐(IERS式6.15,FES2004(Finite Element Solution 2004潮汐图集),8个分潮) | validated |
随附的FES2004子集(tools/gen_fes2004.py → src/fes2004_data.rs,Doodson到倍数的解析)精确复现了源数据的M2(2,2)系数;K1的Doodson相位等于 θ_g + π;2阶扇谐项的量级符合物理,比固体潮低一个量级。 |
| 大气S2气潮(Ray 2001,NASA(美国国家航空航天局)GSFC(戈达德太空飞行中心)) | validated |
随附的Ray谐波经表面载荷关系(式6.21)换算后,峰值 ΔC̄₂₂ ≈ 4×10⁻¹¹(约为海洋M2项的10 %)。如实的保留说明:气潮没有已发布的重力位系数参考基准,因此只通过源数据完整性和量级进行核对,判据弱于固体潮和海洋潮。 |
机动与轨迹设计(src/maneuver.rs)#
| 方面 | 状态 | 证据 |
|---|---|---|
| 脉冲式 ΔV与协方差传播 | validated |
速度不连续,并向前传递6×6协方差(确定性点火 ⇒ 状态转移矩阵(STM)为单位阵;执行误差协方差由点火坐标系(ECI(地心惯性系)或LVLH(局部垂直、局部水平坐标系))旋转到速度分块中)。 |
| 有限推力点火积分与Tsiolkovsky公式对照 | validated |
在点火弧段上做恒推力积分(质量作为状态量),所得 ΔV与闭式Tsiolkovsky火箭方程相符,优于0.01 %。 |
| Lambert求解器(Izzo 2015)往返检验 | validated |
单圈Lambert输出(r1、r2,飞行时间 ⇒ v1、v2)经精确的通用变量Kepler传播器往返传播,必须落回r2。 |
| Porkchop扫描与Hohmann下限对照 | validated |
发射 × 到达的C3 / 到达V∞ 网格的最小值,与两条共面圆轨道的解析Hohmann转移C3下限对照检查。 |
| Lambert求解器与独立库对照 | validated |
tests/lambert_reference.rs:13个单圈转移,涵盖从LEO到GEO再到日心,含顺行与逆行,对照lamberthub 1.0.0 izzo2015;边界速度的最大差异为7e-12 m/s。 |
如实说明范围:没有轨迹优化器,没有多圈Lambert分支,日心模型是合成的共面圆轨道模型(没有行星DE星历,因此尚未运行与GMAT的地球—火星C3交叉检验)。
定轨(OD)(src/orbit_determination.rs、src/batch_ls.rs)#
| 方面 | 状态 | 证据 |
|---|---|---|
| Gauss–Newton批处理修正器 | validated |
通用的gauss_newton求解器在线性拟合上得到精确的加权最小二乘解,在非线性a·exp(b·t)拟合上恢复出真实参数,并能由无噪声测距求解3-D测距多边定位。 |
| 基于测距的批处理定轨 | validated |
determine_orbit_batch由地面站测距跟踪(按二体 + J2力模型传播)恢复[r, v]:无噪声测距时达到亚米级 / mm·s⁻¹;含噪声时达到约2 m,拟合后残差落在5 m噪声底限,这是一致的最小二乘拟合的特征。 |
| 序贯(无迹滤波)定轨 | validated |
determine_orbit_sequential在同样的动力学和测距模型上递推恢复状态,精度在几十米以内。 |
| 批处理与序贯定轨对照独立估计器 | validated |
tests/batch_sequential_orbit_determination_reference.rs:8个场景(6个无噪声的LEO/MEO/偏心轨道,3–4个测站;2个为 σ = 5 m),在匹配的力模型上对照Orekit 12.2的批处理最小二乘与Kalman估计器;批处理最差为1e-3 m / 1e-6 m/s,序贯为0.9 m。 |
| 带高度截止角的距离变化率 / 方位-俯仰批处理定轨 | modelled(外部比较,有一项预先登记的判据未达到) | tests/od_tracking_measurements_reference.rs:8个场景,对照Orekit 12.2采用自定义瞬时几何测量的批处理最小二乘;可见集合完全一致,测量值在5.8e-8 m / 6.3e-10 m/s / 1.4e-13 rad以内,状态转移矩阵在1.2e-14以内,含噪状态在1.74 cm以内,各类型RMS在2.7e-4以内;预先登记的无噪声 ≤ 1 cm状态判据在4个场景中有2个未达到(1.46和1.74 cm;Orekit自己的估计与其模拟真值也相差这么多,而kshana在1e-8 m以内)。参见xval/od-measurements-orekit/RESULTS.md。 |
如实说明范围:教学用定轨使用固定的惯性系测站、球形地球的站心坐标系和瞬时几何测量(不含光行时、光行差、折射或地球自转);距离变化率/角度路径的状态转移矩阵是变分式的(以解析的二体 + J2偏导数做RK4积分),而不是闭式;距离变化率或角度没有序贯滤波器。仅测距路径仍使用有限差分雅可比矩阵。(下文的全力模型星历拟合引擎自带变分状态转移矩阵。)
通过星历拟合做力模型核对(src/precise_od.rs)#
一个精密的、全力模型的位置观测批处理最小二乘估计器:EGM2008田谐重力位(在地固系中通过CIO归算求值),与太阳/月球第三体、太阳辐射压、大气阻力、Schwarzschild/Lense–Thirring GR(广义相对论)以及上述潮汐组合,拟合一段惯性系位置定位轨迹,并使用变分状态转移矩阵雅可比。在合成数据上做过核对,其真值就是Kshana自己的积分器,所以每一项残差都来自估计器,而不是来自动力学。
| 方面 | 状态 | 证据 |
|---|---|---|
| 精密力模型的组合 | validated |
tests/precise_od_synth.rs:0阶场在每个历元都是精确的点质量(中心项具有旋转不变性);8阶加入J2带的扁率;太阳第三体和潮汐项逐位忠实接入;恒定径向经验加速度在RTN(径向、横向、法向)中是纯径向的。 |
| 变分状态转移矩阵 | validated |
在半个LEO轨道上(8阶重力位 + 太阳 + 月球),Φ 的每一列与独立的全弧段中心有限差分(FD)重新传播结果一致,位置和速度响应的相对差均< 1×10⁻⁶,这是文档记载的STM↔FD交叉检验。Φ(0) = I;增广传播器与普通传播器的一致程度达到亚毫米。 |
| 批处理最小二乘的自我恢复 | validated |
一段1小时的Kshana弧段(6阶 + 太阳 + 月球),无噪声观测,从150 m / 0.1 m·s⁻¹ 的偏差恢复到历元状态在1×10⁻² m以内,拟合后RMS接近零;在5 m白噪声下,拟合后3-D RMS稳定在约 σ 噪声底限,且无偏。太阳辐射压C_R由1.0恢复到真值1.4的1 % 以内。 |
| 异常值剔除与RTN报告 | validated |
一个500 m的粗大误差被5-σ 拟合后剔除(恰好一个观测),留下干净的毫米级拟合;残差既按3-D报告,也分解为径向/横向/法向报告。 |
| 经验加速度层级(RTN常量 + 1-CPR(CPR:每圈一周期)) | validated |
九个带先验约束的经验参数,在不含经验项的真值上保持在1×10⁻⁸ m·s⁻² 以下,且不干扰拟合;注入真值的3×10⁻⁸ m·s⁻² 恒定横向加速度,可恢复到20 % 以内。 |
如实说明范围:合成波形使用名义地球定向参数(EOP:UT1(世界时1,地球自转时间)≈ TT(地球时),无极移),对于自我恢复是精确的,因为生成弧段和拟合弧段用的是同一个模型。机构数据集的核对在此引擎之上,通过CIO坐标系链叠加真实的 finals2000A EOP和SP3/SPK(SPK:行星星历核)真值(src/eop.rs、tests/agency_galileo.rs、tests/agency_swarm.rs、tests/agency_lro.rs)。
真实的机构精密轨道(tests/agency_galileo.rs、tests/agency_swarm.rs、tests/agency_lro.rs)#
| 数据集 | 状态 | 证据 |
|---|---|---|
| Galileo MEO — < 5 m GREEN | validated |
Kshana的全力模型引擎,对ESA/ESOC(ESOC:欧洲空间操作中心)自己的最终轨道(ESA0MGNFIN,ITRF(国际地球参考框架))中原样截取的一段Galileo E11数据做拟合,时长8 h,每个ITRF定位点用真实的finals2000A EOP旋转到GCRS:纯力模型 + C_R的拟合后3-D RMS为0.133 m(RTN 0.105/0.067/0.047 m,C_R 1.174),加入经验层级后为0.070 m,原始重叠为78.7 km。完整24 h弧段为0.611 m。均远在5 m的判据之内。重力场在d/o-8已收敛(d/o 8/10/12相同);workflow_dispatch作业运行完整的d/o-70。出处与SHA-256(SHA:安全散列算法)见tests/fixtures/agency/NOTICE.md;完整记录见docs/AGENCY-ORBIT-VALIDATION.md。 |
| Swarm-A LEO — < 5 m GREEN | validated |
全力模型引擎(+ 大气阻力),对ESA自己的Swarm-A简化动力学精密轨道(SW_OPER_SP3ACOM_2_,L47,ITRF,约430 km,约2 cm)中原样截取的一段做拟合,时长3 h,d/o-70,通过CIO链使用真实的finals2000A EOP:动力学层级(仅状态,静态密度,C_R=1)的拟合后3-D RMS为2.687 m(RTN 0.925/2.522/0.045 m,残差约等于纯沿迹阻力);简化动力学层级(+ 经验CPR加速度)为0.098 m(RTN 0.026/0.092/0.025 m),相对ESA约2 cm的轨道,差约10 cm。出处与SHA-256见tests/fixtures/agency/NOTICE.md;完整记录见docs/AGENCY-ORBIT-VALIDATION.md。 |
| LRO(Lunar Reconnaissance Orbiter,月球勘测轨道器)月球轨道:已与独立参考核对,但高于5 m(如实说明) | validated |
以月球为中心的力模型拟合(src/lunar_od.rs):GRAIL GRGM660PRIM重力场(d/o 100),置于月固主轴坐标系(src/lunar_frame.rs,IAU 2015平均地球 + 固定的DE421(Development Ephemeris 421)平均地球到主轴(ME→PA)偏移,自0.36起按SPICE的定义应用;此前应用方向有误,约偏差208″)+ 地球/太阳第三体,通过与地球数据集相同的通用Gauss–Newton估计器,拟合真实的JPL Horizons LRO(NAIF −85)重建轨道,4 h / 241个历元,约98 km。如实的拟合后结果(0.36):动力学12.05 m(RTN 2.91/10.11/5.88),简化动力学6.67 m(RTN 3.41/4.58/3.44,1+2次每圈经验项),原始重叠为39.9 m(ME→PA修正之前:12.6 m、6.65 m、53.8 m):高于 < 5 m的判据,原因不在估计器(d/o 100/150和atol 1e-6/1e-9下结果相同)。一次DE级交叉验证(xval/anise-lunar-od:通过ANISE使用DE440(Development Ephemeris 440)的月球主轴定向和DE440星历)更正了关于限制因素的说法:它给出动力学12.0 m、简化动力学6.67 m,而经更正的解析方案现在在两个层级上都与之相符(此前动力学上的差距12.6 → 12.0 m,是ME→PA偏移误差所致),因此运行层面的下限不是解析的定向/星历,而是经验层级无法消除的残差(最符合短弧段内未建模的LRO非引力动力学);精简的解析方案对于简化动力学轨道已经与DE级相当。出处与SHA-256见tests/fixtures/agency/NOTICE.md;完整记录见docs/AGENCY-ORBIT-VALIDATION.md。已与真实机构真值核对:3个中的3个;达到< 5 m:3个中的2个。 |
重力图 / alt-PNT导航(src/gravimeter.rs、src/mapmatch.rs、src/particle_filter.rs、src/altpnt/terrain.rs)#
| 方面 | 状态 | 证据 |
|---|---|---|
| 球谐重力异常场 | validated |
src/gravimeter.rs:一个低阶、完全归一化的场,对照闭式Legendre函数(P̄₁₁ = √3·cosφ、P̄₂₀ = (√5/2)(3sin²φ−1)、P̄₂₂ = (√15/2)cos²φ)和手工推导的单项异常1.897 mGal做了检查。 |
| 冷原子重力仪测量模型 | validated(模型) |
白噪声底限由CAI加速度计的ASD(σ = ASD/√τ)推得,以确定性的带种子序列注入(匹配器从不拿到无噪声真值,但运行结果可逐位复现)。 |
| 序贯重要性重采样粒子滤波器 | validated |
src/particle_filter.rs:确定性核心被精确固定:ESS(有效样本数)覆盖1…N,系统重采样按权重比例选取索引,加权均值为凸组合,高斯似然把估计拉向测量值,以及带种子的预测具有确定性。 |
| 地图匹配似然与恢复 | validated |
src/mapmatch.rs:field_likelihood在完全匹配时达到峰值(= 1),在偏离一个sigma时降到e^(−½);对一块有显著特征的合成地形,粒子滤波器恢复的真实位置误差在0.1以内。 |
| 60分钟GPS拒止基准测试 | validated |
run_gps_denied_gravity_nav(scenarios/gps-denied-gravity-nav.toml):约700 km、持续一小时的中断,惯性解漂移到约70 km,经分层由粗到细的匹配器恢复到约145 m(< 500 m),可逐位复现,在不同噪声实现下保持稳定,并且可证明受精细化程度限制(单一粗网格停滞在约2 km)。 |
SRTM(航天飞机雷达地形测绘任务).hgt DEM(数字高程模型)加载器 + 双线性采样(参考基准A) |
validated |
src/altpnt/terrain.rs / tests/terrain_nav_validation.rs:手工构造的2×2 .hgt缓冲区,四角为 [100,200;300,400],在单元中心双线性插值得到恰为250.0(闭式参考基准),16位大端往返无损,行翻转把文件中最北的一行放在存储的最高纬度,全部对照GDAL(Geospatial Data Abstraction Library)SRTMHGT(航天飞机雷达地形测绘任务高程文件格式)驱动规范(16位有符号大端,按行主序,北行在前,空值 -32768,https://gdal.org/en/stable/drivers/raster/srtmhgt.html)。一个已提交的11×11测试数据(tools/gen_terrain_fixture.py)在CI中检验解析器;并且在CI中读取一块已提交的真实公有领域NASA/USGS(USGS:美国地质调查局)SRTM v3图幅(N36W117,死亡谷,抽稀到6角秒,722 KB,tests/fixtures/terrain/N36W117_sub6.hgt)(不被忽略,real_srtm_committed_badwater_tile_reads_real_relief),得出恶水盆地约 −78 m,落在文档记载的 [−95,−70] m范围内(NGS/NOAA(NGS:美国国家大地测量局;NOAA:美国国家海洋和大气管理局)测量值约 −86 m),图幅最大值约2161 m;真值来源是实地测量,被测的是DEM(非循环论证)。更大的已公布高程点(惠特尼山4421 m)仍留在由#[ignore]控制的整幅图幅测试中。 |
| 地形参照导航(TERCOM/SITAN(TERCOM:地形等高线匹配;SITAN:桑迪亚惯性地形辅助导航))收敛(参考基准B) | validated |
run_terrain_nav(scenarios/terrain-nav.toml):手工推导的注入INS漂移(0.5°N,−0.4°E,在约12° 纬度处约70 km,按漂移角度 × 每度米数 × cos纬度计算)被恢复到< 500 m(在网格分辨率下限search_step/factor² ≈ 140 m以内),相对自由惯性削减超过100倍;对照的是注入的数值,而不是DEM(非循环论证),可逐位复现,且在不同噪声种子下保持稳定。 |
| 重力 + 磁 + 地形联合融合增益(参考基准C) | validated |
run_combined_altpnt(scenarios/combined-altpnt.toml):三路标量通道(Δg · |B| 地壳异常 · 高程)以乘积似然融合,在60分钟中断期间给出有界的< 500 m残差,按种子平均后不比最佳单通道差(信息可加性 / 更低的CRLB(Cramér–Rao下界))。处在已发布的TERCOM / 地形参照导航(TRN)“几十米” CEP(圆概率误差)范围内(https://en.wikipedia.org/wiki/TERCOM;PeerJ 2024 ESKF-TERCOM(ESKF:误差状态Kalman滤波器),https://peerj.com/articles/cs-3118/)。 |
如实说明范围:重力场是低阶 + 合成质量瘤,不是完整的EGM2008/EIGEN(EIGEN:European Improved Gravity model of the Earth by New techniques,新技术欧洲改进地球重力模型)系数集;磁通道建立在平滑的IGRF主磁场加上合成的地壳异常质量瘤之上(真实的高频地壳图是后续工作);导航定位基准测试在CI中使用的地形场是自带的合成DEM,而.hgt读取器本身现已在CI中对照一块已提交的真实SRTM v3图幅做过核对(见上);全分辨率的真实图幅仍由#[ignore]控制。地图表示误差的蒙特卡罗仍是后续工作。三种导航器现在都已接入场景引擎的kind=(gravity-map、terrain-nav、combined-altpnt)。
INS / IMU误差模型:对照数据手册的核对(src/inertial/)#
IMU随机误差模型是对照已公布的厂商数据手册 / 数据集规格做核对的,绝不对照Kshana自己产生的数值。从现场单位规格到SI(国际单位制)噪声模型的桥梁是标准的阿伦偏差辨识(Riley,NIST SP 1065 §5;IEEE(电气电子工程师学会)Std 952):随机游走系数N是在 τ⁻¹ᐟ² 斜率上 τ = 1 s处读取的重叠ADEV,零偏不稳定性系数是Allan曲线的平坦平台(tests/imu_allan_spec.rs,封闭式,无需下载)。
| 方面 | 状态 | 证据 / 参考基准 |
|---|---|---|
| 单位换算层(#1非循环论证风险) | validated |
手工核对:0.15 deg/√hr = 4.3633e-5 rad/√s;3.6 µg = 3.5304e-5 m/s²;2.0 deg/hr = 9.6963e-6 rad/s。 |
| 陀螺角度随机游走 | validated |
ADIS16465的ARW 0.15 deg/√hr(Analog Devices数据手册)由ADEV(1 s) 恢复,误差< 5%。 |
| 加速度计速度随机游走 | validated |
ADIS16465的VRW 0.1 m/s/√hr恢复,误差< 5%。 |
| 白噪声Allan斜率 | validated |
ADIS16460白噪声分支的对数-对数斜率为 −0.5 ± 0.05。 |
| 运行中零偏不稳定性平台 | validated |
ADIS16465陀螺零偏不稳定性(BI)2.0 deg/hr,作为平坦的Allan最小值恢复,误差< 15%。 |
| 第二套IMU配置 | validated |
NaveGo ADIS16488(ARW 0.3 deg/√hr,VRW 0.029 m/s/√hr)两者均恢复,误差< 5%。 |
如实说明范围:这里核对的是随机误差模型,对照数据手册的Allan系数。i2Nav-WHU(WHU:武汉大学)KF-GINS车载数据集用作另一项受数据控制的检查:带GNSS杆臂模型的松耦合闭环误差状态EKF是验证矩阵中的一行VALIDATED(基于KF-GINS数据集、带杆臂的松耦合GNSS/INS EKF),在运行前登记的判据下,与KF-GINS的C++ 参考轨迹做比较。它只在提供了该数据集时运行(KSHANA_KFGINS_DIR);没有数据集时,运行合成加载器和杆臂测试。紧耦合和载波相位变体不在该行的覆盖范围内(载波相位紧耦合GNSS/INS一行为MODELLED)。
深空与火星PNT:D0基础(src/body.rs、src/mars_frame.rs、src/ephem_provider.rs、src/radiometric.rs、src/timescales.rs)#
深空导航引擎的第一个里程碑:把硬编码为地球的核心推广到任意中心天体,加入火星动力学、星历提供器接口、亚微秒时间,以及光行时 / 相对论延迟的基本运算。所有现有的地球场景都逐字节相同:跨平台可复现性的基准输出(tests/cross_platform_golden.rs、tests/golden.rs)原样通过,无需重新生成,每次提交都强制检查。
| 项目 | 状态 | 证据 |
|---|---|---|
| 中心天体抽象(地球逐字节相同) | validated |
src/body.rs:带有earth()/mars()/moon()/sun()的Body{mu,re,zonals,gravity,rotation,IAU-pole}。tests/mars_dynamics.rs断言two_body_accel_body(r,&Body::earth())和zonal_accel_body与原有的地球函数逐位完全相等(assert_eq!),并且默认ForceModel的地球弧段逐字节相同:可复现性基准输出不变(SHA相同,无需重新生成)。 |
| 火星重力(GMM-3(GMM:Goddard Mars Model,戈达德火星模型)田谐,本体固连系) | validated(模型) |
Body::mars_gmm3(nmax):带谐项C̄20/C̄30/C̄40取自MRO110(火星勘测轨道器重力解)的J2/J3/J4(C̄n0=−Jn/√(2n+1),J2往返换算后为1.9604e-3),加上MRO110B2的扇谐/田谐项C̄22/S̄22、C̄32/S̄32(Konopliv等2011;列于Liu、Baoyin和Ma 2012),在IAU火星本体固连系中求值。tests/mars_dynamics.rs检查往返换算、与质点相比J2量级的偏离,以及该场确实是本体固连的(旋转火星日的四分之一周期后,惯性加速度随之改变)。更高阶次通过gravity_sh::from_gfc从随附的.gfc加载。 |
| 火星本体固连系(IAU极轴) | validated |
src/mars_frame.rs:IAU 3-1-3旋转R3(W)·R1(90°−δ0)·R3(90°+α0)(WGCCRE/NAIF(WGCCRE:制图坐标与自转要素工作组)约定,与lunar_frame.rs相同)。测试:正交性精确到1e-12,det +1,往返为恒等,本初子午线按每天prime_w_dot推进。 |
| 火星 / 以太阳为中心的传播 | validated(自洽性) |
tests/mars_propagation.rs:低火星轨道在经过一个Kepler周期后回到起点(闭合);比能 ε=v²/2−μ/r在整个弧段上的漂移<1e-9;火星J2引起的长期节点退行与解析的Vallado速率(独立算得,在轨道倾角60° 时约为 −5.15 °/day)相符,误差3%;日心轨道恢复出约687天的火星年(vis-viva加上由弧段独立恢复周期)。不使用外部数据。 |
| DE440交叉验证(日心火星) | kernel-gated |
xval/anise-mars-od/(排除在工作区之外;MPL-2.0许可的ANISE限定在其自身的Cargo.lock内;与xval/anise-lunar-od对应):将Kshana以太阳为中心的火星传播与JPL DE440(通过ANISE)作比较,Horizons真值原样引用(出处 + SHA-256)。已复现的结果(起始JD(儒略日)2459580.5 TDB(质心力学时),de440s.bsp SHA-256 c1c7fee…b260a49f2):位置残差为1天弧段137 m(相当于2.299×10¹¹ m日心距离的5.97×10⁻¹⁰),5 d时增长到3.3 km,30 d时为87.9 km,90 d时为1.71 Mm:残差随弧段长度增长,因为以太阳为中心的二体模型有意省略了行星摄动(主要是木星)以及DE440质心星历所含的火星系统内部运动,所以这种增长如实反映了未建模的n体动力学,而不是积分器误差;短弧段只占日心距离的极小一部分,这证实了以太阳为中心的计算机制是正确的。只有在存在DE440星历核时才运行($KSHANA_ANISE_DE440S,或自动获取约32 MB),属于手动 / workflow_dispatch的DE级检查,不是默认的CI门禁,所以已发布的crate和所有默认门禁保持逐字节不变。 |
| 光行时 + Shapiro延迟 | validated |
src/radiometric.rs:迭代的延迟历元光行时解(收敛到 |Δτ|<1e-12 s,有迭代上限)以及Shapiro延迟 Δt=(2μ/c³)·ln[(r1+r2+r12)/(r1+r2−r12)]。测试:通过内置星历得到地球—太阳约499 s,地球—月球约1.28 s;合成的匀速发射体恢复出解析的延迟解,误差<1e-9 s(求解器被证明与任何真实星历无关);Shapiro与手算值完全一致,并且对地球—火星上合掠射线给出约100–250 µs。 |
| 星历提供器接口 | validated |
src/ephem_provider.rs:trait EphemerisProvider + 无需星历核的BuiltinEphemeris(Montenbruck–Gill太阳/月球,地心);对没有相应级数的天体(例如火星)返回None,这类天体须走DE级的ANISE提供器,其分工与LunarEnvironment/AniseLunarEnvironment中内置对ANISE的划分相同。 |
| 两段式时间 + TT↔TDB | validated |
src/timescales.rs:带Knuth两数和累加的TwoPartJd{day,frac}可恢复出单个f64儒略日在J2000附近丢失的亚微秒间隔(优于其1000倍以上,已测试);tt_to_tdb/tdb_to_tt使用主要的Fairhead–Bretagnon周期级数(|TDB−TT|≲1.7 ms,在J2000处经手工核验)。属于增量改动,现有的单个f64时间路径不变。 |
深空无线电测量观测量与CCSDS跟踪数据消息:D1(src/radiometric.rs、src/ccsds_tdm.rs)#
深空导航引擎的第二个里程碑:观测量模型把D0的光行时/相对论延迟核心,转换成深空网(DSN)或ESTRACK(欧洲空间跟踪网络)跟踪弧段实际报告的量:测距、单程/双程/三程多普勒、相干应答机转发、再生/PN(PN:伪噪声)测距、Δ-DOR(DOR:差分单向测距)以及传播介质;另外还有CCSDS(空间数据系统咨询委员会)503.0-B跟踪数据消息(TDM)的输入/输出,用于读入/写出标准的机构跟踪文件。如实说明范围:这些是遵循Moyer / CCSDS约定的精确几何模型;测量噪声是调用方提供的逐观测sigma,并未固化在模型里。复现某一次具体的真实跟踪弧段需要真实的TDM数据加上深空定轨求解器,那属于D2,而不是D1。以下所有内容都是增量的(可复现性基准输出不变;SHA相同,无需重新生成)。
| 项目 | 状态 | 证据 |
|---|---|---|
| 测距与1/2/3程多普勒(Moyer双段求解) | validated(模型) |
src/radiometric.rs:one_way_range/two_way_range组合D0的延迟(下行段)与超前(上行段)光行时解;完整往返的约定是ρ₂ = c·(τ_up + τ_down)(m),已记录且自洽。one_way_doppler/two_way_doppler/three_way_doppler由视线方向的距离变化率构成载波频移f_D = −(M·f_ul/c)·(ρ̇_up + ρ̇_down)(Hz),符号约定:飞行器接近时给出正(蓝移)频移。测试:双程测距 = 两段之和,误差<1 mm(约2 AU的地球—太阳往返);单程测距 = c·τ,完全相等;对径向匀速发射体,单程多普勒与解析的−(f/c)·ρ̇相符,精确到ppt;测站同址的三程多普勒逐字节退化为双程。 |
| 相干应答机转发(精确的DSN比值) | validated |
src/radiometric.rs turnaround_ratio:精确的有理数DSN/CCSDS转发比M = f_down/f_up(Moyer §13;DSN 810-005 module 201/214):S/S 240/221、S/X 880/221、X/S 240/749、X/X 880/749、X/Ka 3344/749、Ka/Ka 3360/3599。已测试精确相等;未定义的频段对会触发panic(快速失败,绝不杜撰比值)。two_way_doppler_coherent端到端应用频段载波和比值,并与显式的two_way_doppler在机器精度内相等。 |
| 再生 / PN测距(CCSDS 414;模糊度) | validated |
src/radiometric.rs:regenerative_range_ambiguity = c/(2·chip_rate)(每码片分辨尺度的无模糊测程),pn_range_ambiguity = 该值 × 码长(完整PN码的无模糊测程c·L/(2·f_chip)),依据CCSDS 414.1-B。测试:1 MHz测距时钟给出约149.9 m;CCSDS-414.1加权表决PN码(1,009,470个码片)在1 Mchip/s下给出约151,000 km的设计无模糊测程;码速率加倍使每码片模糊度减半。 |
| Δ-DOR(CCSDS 506天球平面) | validated(模型) |
src/radiometric.rs delta_dor:对干涉仪基线B⃗(CCSDS 506.1-B)的天球平面差分延迟Δτ = −B⃗·(ŝ_sc − ŝ_quasar)/c(s)。测试:对已知的与基线对齐的偏移,与精确的解析投影−B·sin(Δθ)/c相符,精确到1e-15 s;与小角度量级|Δτ| ≈ B·Δθ/c相符;以及零点(与类星体共线的飞行器给出的差分延迟恰为零)。 |
| 等离子体1/f² 双频校准 | validated(模型) |
src/radiometric.rs:solar_plasma_delay = K_PLASMA·TEC/(c·f²)(色散的1/f²带电粒子群延迟,K_PLASMA = 40.3 m·Hz²·TECU⁻¹);coronal_tec_from_sep为Cassini级的TEC ∝ 1/sin(SEP)日冕柱(解析替代,不是经校准的日冕);dual_freq_plasma_calibration为DSN用来消除等离子体的K_disp = (Δt_X−Δt_Ka)/(1/f_X²−1/f_Ka²)色散反演。测试:1/f² 定律d_X/d_Ka = (f_Ka/f_X)²;日冕在接近合时增强;以及注入的TEC恢复到<1 %(无噪声时实际 ≪ 1e-9):dual_frequency_recovers_injected_plasma。 |
| 对流层 / 电离层介质(复用GNSS模型) | validated(模型) |
src/radiometric.rs tropo_delay/iono_delay:深空地面站段穿过的是GNSS包已建模的同一层地球大气,所以这两项委托给gnss_sim::tropo_delay_m(Saastamoinen天顶 + Niell映射,非色散)和gnss_sim::klobuchar_delay_m(广播电离层)。已测试接线正确且符号符合物理:对流层延迟为正,低仰角时比天顶大;电离层为非负的斜向延迟(数值保真度由GNSS包自己对照数据手册的测试负责)。 |
| CCSDS-TDM 503解析 / 写出与无线电测量桥接 | validated |
src/ccsds_tdm.rs:CCSDS 503.0-B-2 KVN(关键字-值记法)读取器和写出器(头部 + META_START…META_STOP / DATA_START…DATA_STOP段;RANGE/DOPPLER_*/ANGLE_*/*_FREQ记录)。测试(#[cfg(test)] + tests/fixtures/deepspace/reference.tdm):参考测试数据解析出预期的命名字段;解析→写出→解析得到相等的结构(语义往返);桥接to_radiometric_obs把无歧义的RANGE/DOPPLER_*记录映射为RadiometricObs(程数取自PATH 1,2/1,2,1/1,2,3,频段取自TRANSMIT_BAND,km→m);多段文件会重置状态机。如实的跳过而不猜测:角度/频率、未知频段、年积日历元和无法识别的时间系统一律跳过,绝不错误映射,sigma保留为0.0,由调用方自行加权。 |
| DSN/ESTRACK基准测试(模型精度 ≫ 已公布的下限) | validated (model) |
tests/radiometric_benchmark.rs:这些观测量是精确的几何计算,所以如实的基准测试结论是:模型自身的数值误差远低于已公布的DSN/ESTRACK测量下限,模型不是精度的瓶颈,调用方提供的 σ 才是。每项测试用两种独立方式计算同一观测量(或恢复注入的真值),并断言残差低于该下限:测距往返误差<1 mm ≪ 约1 m的PN测距下限(DSN 810-005 mod. 214 / CCSDS 414.1-B);多普勒与精确的闭式延迟距离变化率v/(1+v/c)相符,约10⁻⁶ m/s,比约0.05 mm/s的X频段下限低数倍(DSN 810-005 mod. 203 / Moyer),该残差是在约1 AU处f64距离差分的下限,是数值特性而不是建模误差;Δ-DOR复现闭式投影,折合天球平面角 ≪ 1 nrad ≪ 约1–10 nrad的下限(DSN 810-005 mod. 210 / CCSDS 506.1-B);等离子体双频恢复注入的延迟,误差 ≪ 1 %;Shapiro延迟落在已公布的约100–250 µs地球—火星合带内。所列的已公布数字均已注明,并标示为数量级的DSN规格,而不是捏造的精确数字;模块文档明确说明,这一基准测试的是模型精度,而不是真实弧段的复现(那属于D2加真实TDM)。 |
深空简化动力学定轨:D2(src/deepspace_od.rs、src/clock_state.rs、src/mars_atmos.rs)#
深空导航引擎的第三个里程碑:把D1无线电测量观测量转换成恢复出的轨迹的估计器:一个数值稳健的平方根信息滤波器(SRIF),带有简化动力学经验加速度、三状态星载时钟、火星阻力模型,以及把测距/多普勒与滤波器状态联系起来的无线电测量偏导数,并由一次合成的低火星轨道(LMO)定轨恢复实验端到端闭合。如实说明范围:该恢复是一个合成闭环(真值与滤波器共用同一个火星传播器,观测量就是滤波器所反演的同一套几何观测量模型,再加上注入的高斯噪声),它检验的是估计器的机制,而不是火星力模型的绝对保真度;DE级的外部交叉检验是受星历核控制的xval/anise-mars-od crate(D0.8b)。以下所有内容都是增量的(可复现性基准输出不变;SHA相同,无需重新生成)。
| 项目 | 状态 | 证据 |
|---|---|---|
| SRIF核心(平方根信息滤波器) | validated |
src/deepspace_od.rs Srif:手写的Bierman平方根信息滤波器,含上三角R(Λ = RᵀR)、信息向量b、Householder测量/时间更新,使用裸Vec<f64>运算(不用nalgebra)。测试:序贯SRIF在一个设计好的线性高斯问题上,与批处理加权最小二乘(gauss_newton)解在状态和协方差两方面都相符,精确到1e-9(srif_matches_batch_on_linear);经过很长的测量/时间更新序列后,恢复出的协方差P = R⁻¹R⁻ᵀ对称(1e-12),并且按构造为正定(srif_covariance_is_spd,Cholesky分解成功);信息不断累积(把几何相同的测量逐一并入时,P的迹单调递减)。 |
| 简化动力学经验加速度(巡航↔LMO调谐) | validated |
src/deepspace_od.rs ReducedDynamicOd:九状态[r; v; a_emp]滤波器,RTN经验加速度作为一阶Gauss–Markov过程状态,JPL/ESOC的简化动力学技术以单个dynamic_tightness旋钮的形式提供(接近动力学 ⇒ 在弹道弧段上平滑噪声;接近运动学 ⇒ 经验层级吸收未建模的机动/阻力)。测试:接近运动学的滤波器跟踪阶跃式(推进器)机动,残差不到接近动力学滤波器的一半(<½),而接近动力学的滤波器对含噪的弹道弧段平滑得更好(reduced_dynamic_tracks_maneuver);扫描紧度时拟合后残差单调变化,是连续谱而不是开关(tuning_is_a_continuum)。 |
| 3状态星载时钟(相位/频率/漂移,van Loan Q,Allan) | validated |
src/clock_state.rs ClockState3:相位 + 分数频率 + 频率漂移误差状态,带有精确的van Loan离散过程噪声和Joseph稳定化更新。测试:离散化的Q与手工推导的van Loan多项式相符,精确到1e-12,并且在漂移 = 0时精确退化为两状态KalmanClock的Q(严格的超集);多步滑行使相位方差增长到解析的NIST SP 1065守时(holdover)关系,经由T⁵随机游走项;漂移状态恢复出真实的老化斜坡,误差<5 %;恢复出USO级的Allan曲线(τ=1 s处的重叠ADEV在校准门限以内),并且估计器保持NEES一致(3σ 内 >95 %)和PSD,贯穿恶劣的Q/R运行。ClockClass带有引用的CSAC/USO/DSAC(USO:超稳晶振;DSAC:深空原子钟)σ_y(1 s)数据以及Δv = c·σ_y多普勒下限。 |
| 火星大气阻力(Mars-GRAM-lite(GRAM:Global Reference Atmospheric Model,全球参考大气模型)) | validated (model) |
src/mars_atmos.rs:分段指数的火星中性密度剖面(地表约0.020 kg/m³,近地表标高约11 km,取自Mars-GRAM 2010 / MCD(火星气候数据库)低尘均值),以及相对于共转火星大气取得的二次型阻力加速度,另有SRIF可乘的..._scaled变体。测试:密度在各层之间单调且连续地下降,恢复出的近地表标高符合物理,约11 km,阻力严格与相对速度反向平行(叉积小到1e-12),低火星轨道的量级约3e-4 m/s²,合理,并且对弹道项呈线性。如实说明范围:这是一个具代表性的工程大气,不是经飞行验证的、带有尘埃/季节/地方时依赖的Mars-GRAM/MCD。 |
| SRIF的无线电测量偏导数(测距/多普勒) | validated |
src/deepspace_od.rs range_observable / range_rate_observable:视线方向的距离ρ = |r_sc − r_sta|(∂ρ/∂r = û,∂ρ/∂v = 0)和距离变化率ρ̇ = û·(v_sc − v_sta)(∂ρ̇/∂v = û,∂ρ̇/∂r = (v_rel − ρ̇·û)/ρ)的偏导数,把D1观测量与滤波器状态联系起来,另有单程多普勒的时钟频率偏导数∂ρ̇_obs/∂y = c。测试:两种偏导数都与观测量的中心有限差分相符,精确到1e-6(range_partial_matches_finite_difference、range_rate_partials_match_finite_difference);一次测距更新使被观测(视线,LOS)方向的协方差缩小 ≫1000倍,并保持正定(PD),一次多普勒更新使LOS的速度方差缩小(radiometric_update_reduces_covariance_in_observed_direction、range_rate_update_observes_velocity)。 |
| 由无线电测量数据做火星LMO端到端定轨 | validated (synthetic closed-loop) |
tests/mars_lmo_od.rs:在Body::mars_gmm3(4)重力下传播出一段真值低火星轨道弧段,对两个跟踪站生成含噪的双程测距(σ=1 m)+ 多普勒(σ=0.1 mm/s);简化动力学SRIF从偏离约2.7 km的初始状态恢复。结果:收敛后的位置RMS ≈ 0.2 m(亚米级,远在“几米到几十米”的完成判据之内),弧段为3圈,采样间隔30 s,且每个历元的分解协方差均为正定(SRIF的保证,全程有断言)。巡航→LMO调谐连续谱已做端到端检验:在真值含有滤波器模板所缺的未建模阻力时,简化动力学旋钮(紧度1)恢复到约14 m,接近动力学(紧度0)的运行为约677 m,改善48倍,这是经验层级吸收了阻力的结果。如实说明范围:合成闭环(真值 = 滤波器所用的同一个传播器);DE级的外部交叉检验是受星历核控制的xval/anise-mars-od(D0.8b),此处从未运行,无网络。 |
深空PNT场景与单程+双程融合:D3(src/mars_pnt.rs、src/deepspace_od.rs)#
深空导航引擎的第四个里程碑:一个可运行的火星PNT产品场景,把D0的火星本体/坐标系、D1的无线电测量观测量和D2的简化动力学定轨,整合为单一的mars-pnt场景类型。它对一个小型MARCONI式中继星座建模:该星座广播单程(与时钟耦合)空间信号,并向深空站转发双程(相干、与时钟无关)链路;通过D3.1单程 + 双程联合融合估计器(一个十二状态SRIF,在D2的简化动力学轨道/经验分块之上增加三状态星载时钟)对三类参考用户(火星转移段、低火星轨道环绕器、固定的地表点)进行导航。如实说明范围:每一项性能指标都是估计器的形式协方差界(逐历元的1σ / 3σ 位置)以及对照合成闭环真值(真值与滤波器共用同一套火星动力学和同一套几何观测量模型,再加上注入的高斯噪声)得到的实际RMS,是一个模拟的导航性能指标,不是经航空认证的保护级,也不是飞行方面的主张(没有经认证的故障模型,没有完好性监测器,没有真实的跟踪数据)。以下所有内容都是增量的(可复现性基准输出不变;SHA相同,无需重新生成)。
| 项目 | 状态 | 证据 |
|---|---|---|
| 单程 + 双程无线电测量联合融合(融合结果优于任何单独一种) | validated |
src/deepspace_od.rs FusionOd:D2.2简化动力学SRIF增加三个星载时钟状态(ClockState3),通过fused_observable接收双程(与时钟无关,约束轨道:偏导数中时钟列为零)与单程(与时钟耦合,即∂ρ̇_obs/∂y = c频率偏导数)测距/多普勒的混合时间序列。先校准后滑行的结构:双程弧段约束轨道,随后单程数据校准时钟,并在两次弧段之间滑行轨道,误差以时钟的Allan稳定度为界。已在src/deepspace_od.rs #[cfg(test)]中测试:融合解优于任何单独一种链路类型;仅单程运行时,滑行误差随两次双程弧段的间隔增长,与时钟级别的Allan界一致;联合协方差全程保持SPD(对称正定)。 |
| MARCONI星座(火星静止轨道半径,掩蔽) | validated (model) |
src/mars_pnt.rs MarconiConstellation:五颗中继星的组合:三颗火星静止轨道中继星位于r = (μ/ω²)^{1/3} ≈ 20 428 km(由已公布的 μ/自转速率得出的火星同步轨道半径;测试落在20,400–20,500 km范围内),在经度上按120° 等间隔分布,倾角5°;另有两颗中继星位于更高的(1.4倍火星静止轨道)60° 倾角圆轨道,用于天球平面覆盖。逐历元的中继星状态在mars_gmm3重力下向前积分;火星掩蔽可见性检验采用弦穿越球体的几何(chord_clears_sphere,已测试:径向正对的中继星被掩蔽,头顶的中继星可见)。如实说明范围:由已公布的火星常数构建的最小的、具代表性的广播加中继几何,不是某个具体的飞行星座设计。 |
mars-pnt场景可通过CLI / Python / WASM(WebAssembly)/ MCP(Model Context Protocol)使用 |
validated |
src/mars_pnt.rs MarsScenario / run_mars_pnt在所有界面上都接入为kind = "mars-pnt"场景(D3.3):CLI运行器、Python绑定、WASM/playground构建和MCP服务器分派都路由到它(src/api.rs往返测试mars_pnt_kind_round_trips_through_the_dispatch)。随附的参考场景:scenarios/mars-pnt-lmo.toml、scenarios/mars-pnt-surface.toml、scenarios/mars-pnt-transfer.toml。结果带有明确的fom_note,把该性能指标标明为协方差界(不是经认证的PL),并且summary / to_svg输出重复该如实标注。 |
| 已复现MARCONI / LightShip目标:环绕器< 100 m,巡视器< 15 m | validated (synthetic closed-loop, under stated assumptions) |
tests/mars_pnt_targets.rs:在模拟中复现已公布的MARCONI / LightShip项目目标(环绕器< 100 m,地表/巡视器< 15 m)。共同假设:默认的五颗中继星MARCONI星座;每个历元,每颗可见的中继星都给出单程测距+多普勒;每30 min一次相干双程测站弧段;DSN级噪声(测距 σ = 1 m,多普勒 σ = 0.1 mm/s);联合简化动力学轨道 + 3状态时钟融合滤波器,从偏离约2.7 km的先验状态起步(紧度0.1);性能指标 = 弧段后半段收敛后的3-D位置RMS,对照合成真值。环绕器(LMO约400 km / 倾角60°,USO时钟,采样间隔60 s,约2 h,相当于一圈弧段):达到的收敛RMS 约0.40 m,≪ 100 m的目标(平均3.1颗中继星可见,协方差全程SPD)。巡视器(赤道上的固定地表点,USO时钟,采样间隔30 s,约2 h弧段):达到的收敛RMS 约5.1 m,< 15 m的目标(平均3.0颗中继星可见,协方差SPD)。两个目标都达到,没有放宽任何断言:USO是实际星载时钟级别中能力较弱的一类(DSAC只会更好),并且对于常规的中继网络调度,30分钟一次双程的节奏偏保守,所以这些假设对MARCONI级系统在物理上是公平的,而不是为了通过而调出来的。如实说明范围:在所述假设下的模拟复现,不是飞行方面的主张,也不是经认证的保护级;合成闭环真值与滤波器共用火星动力学和观测量模型。 |
月球坐标时:地月相对论时钟速率(src/lunar_time.rs)#
月球坐标时标(LTC/TCL(TCL:Temps-Coordonnée Lunaire,月球坐标时的法文名称))需要知道月面时钟相对于地球大地水准面(TT)时钟的长期速率。src/lunar_time.rs从基本原理算出该速率:这是一个一阶后牛顿恒等式,把自势差(IAU L_G约定的大地水准面位势W0 = L_G·c² ≈ 6.26369e7 m²/s²减去月球表面自势GM_moon/R_moon ≈ 2.822e6 m²/s²)与由地心月球速度得出的动能(二阶多普勒)项 −<v²>/2c²相加(速度由src/ephem.rs中的Montenbruck-Gill月球级数有限差分得到)。占主导的自势项给出≈ 57.5 µs/day,动能项为≈ −0.5 µs/day,总计≈ 57 µs/day。lunar-time-offset场景报告该速率、一段时间范围内累积的LTC−TT偏差,并支持一个最小的逆方差集合(月球纸钟);TT↔LTC换算往返误差< 1 ns/day。
| 能力 | 状态 | 参考基准 / 如实说明范围 |
|---|---|---|
| 地月相对论时钟速率(LTC/TCL) | modelled |
src/lunar_time.rs lunar_rate_breakdown、tt_to_ltc/ltc_to_tt、lunar_ensemble、LunarTimeScenario。参考基准:内部的闭式相对论恒等式(IAU L_G / IERS约定的重力位,以及GM/r(GM:引力常数G乘以质量)自势),与已公布的月球时钟速率范围 [56, 59] µs/day做了交叉检查。测试(lunar_time::tests):自势项 ≈ 57.5 µs/day,月球速度 ≈ 1 km/s,动能项为较小的负值,总和落在该范围内,且各命名项之和与总和一致,1天的LTC−TT偏差 ≈ 57 µs,TT↔LTC往返误差< 1 ns/day。如实说明范围:作为头条数字的 µs/day取值取决于所选参考:它取决于所选的参考面(地球大地水准面W0还是月球类大地水准面(selenoid))、时间平均窗口,以及被忽略的亚 µs/day离心/J₂ 修正,所以公布的输出是一个范围,而不是单一的经认证数字。这是一项Modelled自洽性检查,不是外部验证,不是亚纳秒的绝对精度,也不是经认证可用于业务授时的结果。 |
月球大地测量VLBI:地球基线观测月球信标的近场延迟(src/lunar_vlbi.rs)#
两个地球地面站(一条基线)观测月面NovaMoon级发射机所发单程信号的大地测量VLBI(甚长基线干涉测量)观测量。月球处于近场,而不是平面波,所以几何延迟是精确的两段距离之差tau_geom = (|r2 − r_B| − |r1 − r_B|)/c,而不是天球平面投影。完整的观测量还加上了测站时钟偏差之差,以及差分的地球位势Shapiro项(复用自src/radiometric.rs)。测站通过src/frames.rs + src/cio.rs放入地心惯性(GCRS)坐标;信标通过src/ephem.rs(地心月球)+ src/lunar.rs(月面坐标→MCMF(MCMF:月心月固系))+ src/lunar_frame.rs(IAU-2015 ME本体固连系→惯性系)放置。lunar-vlbi场景在一次弧段内对延迟、其有限差分变化率和近场修正进行采样。
参考基准是同一代码库中的平面波 Δ-DOR观测量delta_dor(在src/radiometric.rs中):在远场极限(合成信标位于1e15 m)下,几何延迟必须在机器精度内退化为−(B·ŝ_B)/c = delta_dor(r_B, [0,0,0], B);在真实的月球距离处,波前曲率的近场修正不为零(几十到几百 µs)。信标偏导数dtau/dr_B = ((r_B−r2)/|r_B−r2| − (r_B−r1)/|r_B−r1|)/c(以及测站偏导数)通过中心有限差分核验(相对误差< 1e-5)。
| 能力 | 状态 | 参考基准 / 如实说明范围 |
|---|---|---|
| 月球大地测量VLBI延迟与偏导数 | modelled |
src/lunar_vlbi.rs geometric_delay_s、vlbi_delay_s、delay_partials_beacon/_station1/_station2、near_field_correction_s、LunarVlbiScenario。参考基准:ReferenceImpl:同一代码库中远场极限下的平面波delta_dor(src/radiometric.rs),加上有限差分偏导数。测试(lunar_vlbi::tests):测站量级 ≈ 地球半径,信标在月球距离处的测距(356–407 Mm),远场几何延迟与delta_dor相符,误差< 1e-9 s,月球距离处的近场修正不为零,有限差分的信标/测站偏导数的相对误差在1e-5以内,时钟项精确,并且一次有限的场景运行通过run_toml分派。如实说明范围:Modelled,未对照真实VLBI数据做过核对。极移被忽略(xp = yp = 0),所以测站惯性位置带有几米的坐标系误差;信标把一个当日平赤道的月球级数与一个ICRF(国际天球参考系)本体固连偏移混在一起(jd_tdb ≈ jd_tt),这种坐标系一致性的不匹配低于模型保真度,但并不严格;并且除差分Shapiro项外,没有光行时迭代、光行时内的地球自转、介质(对流层/电离层/等离子体)或光行差项。不声称有TRL(技术成熟度)、飞行经历或机构背书。0.30:对照通过DE440得到的ANISE光行时,这条解析路径的任何延迟都不在1 ps以内(最大差距24 µs);该结论已被固定。 |
| 月球测地VLBI,星历核路径 | validated (0.30) |
src/lunar_vlbi.rs KernelGeometry(DE440地球和月球,DE440月球主轴,ITRF93地球定向,每个光行时都在质心坐标系中收敛),在设置了三个星历核路径时由lunar-vlbi场景运行。参考基准:库:NAIF SPICE Toolkit N0067(spiceypy 8.2.0)对DSS-14/43/63收敛的光行时,预先登记:75个延迟在1 ps以内(最差0.06 ps),信标和测站偏导数在1e-6以内,在J2000附近25个历元(在2024个历元因SPICE自身双精度发射历元约6 ps的差异而失败后做了修订,已披露并固定)。场景中的差分Shapiro项、延迟变化率和近场修正未做比较。 |
月球多技术联合定轨 + 时钟:模拟闭环恢复(src/lunar_combination.rs)#
一个单历元(快照)批处理最小二乘拟合(crate::batch_ls::gauss_newton_qr,自0.30起为Householder QR步),在模拟的月球网络上融合大地测量VLBI、无线电测量/月面局部测距和星间测距技术,以同时恢复月面测站的3-D位置、一个小型星座的各卫星位置以及每个资产的时钟偏差。观测量包括:(1)地球基线对作为信标的月面测站的大地测量VLBI延迟(复用src/lunar_vlbi.rs,地心惯性),这是头条技术;(2)地球测站到卫星的地心无线电测距(从分布良好的地球测站对星座做多边定位)以及测站↔卫星的月面局部测距(MCI(月心惯性系)欧氏距离加差分时钟项);(3)星间测距(形式相同);另有一个单一的测站时钟同步伪观测,用来锚定否则不可观测的公共时钟偏差。状态向量为[station_pos(3), {sat_pos(3)}×N_sat, station_clk, {sat_clk}×N_sat]。求解器内部没有力模型传播:卫星是固定的、互不相同的、位于具代表性月球轨道上的示意点;这是有意设计得干净的快照拟合。在内部,位置经过缩放,时钟以距离等效的米来估计,使法方程矩阵在f64下保持良好的条件数;VLBI和月面距离相对名义几何做了去均值,使有限差分雅可比矩阵不会出现灾难性抵消。lunar-joint-od-clock场景在同一随机种子/真值上,分别带VLBI与不带VLBI运行求解,并报告两种解以及测站可观测性的改善倍数。
头条的如实结果:从极区测站对一小批卫星做月面局部测距,而这些卫星都位于天空的同一侧,会使测站位置沿某一方向观测较弱,因此仅测距的求解病态,恢复出的测站3-D误差很大(或者求解不收敛)。加入地球基线VLBI延迟后,测站的完整3-D位置变得可观测,恢复出的测站误差降到米级。测试vlbi_restores_station_observability断言,在相同的注入真值上,带VLBI时的测站误差明显(≥5×)小于仅测距的误差;VLBI恢复了否则不可观测的测站方向,这正是该阶段的要点。
参考基准是内部一致性:注入的真值状态(测站约50 m/轴,卫星约30 m/轴,时钟约1e-7 s,带有按分量的带种子抖动),通过求解器所反演的同一几何模型映射为合成观测量,再加上带种子的高斯噪声(示意性默认值:VLBI σ ≈ 1e-11 s,测距 σ ≈ 0.1 m,ISL σ ≈ 0.1 m;权重1/σ²),估计器必须从全零初值出发,在噪声范围内恢复注入的真值。对多个随机种子做蒙特卡罗,平均NEES Δxᵀ(HᵀWH)Δx(formal_covariance_nees)落在n_params附近一个宽松的范围内,这是协方差真实性检查。
| 能力 | 状态 | 参考基准 / 如实说明范围 |
|---|---|---|
| 月球多技术联合定轨与时钟 | validated(0.30,P2:求解的线性代数) |
src/lunar_combination.rs estimate、formal_covariance_nees、LunarCombinationScenario。0.30参考基准:P2:numpy 2.4.6(LAPACK gelsd和inv)在六个网络已提交的雅可比矩阵上重新计算每一个Gauss-Newton步、收敛的加权解、形式sigma和测站误差(tests/lunar_joint_od_numpy_oracle.rs,步长在2.4e-11以内,sigma在1.3e-11以内);物理观测模型和量级仍为MODELLED。早先的参考基准:InternalConsistency:恢复注入的模拟真值 + NEES协方差一致性。测试(lunar_combination::tests):完全融合恢复出真值(测站< 5 m,卫星RMS < 5 m,时钟< 1e-8 s,已收敛);VLBI恢复测站的3-D可观测性(在相同真值上,带VLBI的测站误差比仅测距的小 ≥5×);确定性(相同种子 → 逐位相同的解,不同种子 → 不同但均已恢复);平均NEES落在n_params附近一个宽松的范围内;即使仅测距病态,报告的数值也是有限且有保护的;场景通过run_toml分派。如实说明范围:这是一个模拟的闭环恢复(真值与观测模型共用),不是真实数据的核对;求解器内部没有力模型传播;卫星位置和地球/月面测站几何是示意性的。不声称有TRL、飞行经历或机构背书。 |
月球参考框架实现:7参数Helmert基准拟合(src/lunar_frame_realise.rs)#
src/lunar_frame.rs 应用 IAU 2015 WGCCRE月球本体定向(正向模型),而本模块则由一组与基准相关联的估计点坐标网络,估计(实现)一个月球参考框架。估计核心是经典的7参数相似(Helmert)变换:三个平移、三个小角度旋转和一个尺度参数,把点p_i(估计框架)映射到q_i(基准框架),即q_i = t + (1 + s)·R(θ)·p_i,其中R(θ) = rz(θz)·ry(θy)·rx(θx)由crate::precession::{rx, ry, rz, matmul, mat_vec}构成。七个参数[tx, ty, tz, θx, θy, θz, s]通过crate::batch_ls::gauss_newton用加权最小二乘从至少 ≥ 3对不共线的点对估计出来:正向模型由每个q_i的p_i预测它,并把所有点的全部三个分量展平为观测向量;观测到的基准坐标构成z,权重为1/σ²,求解从x0 = zeros起步。旋转角以 µrad、尺度以ppb估计,使有限差分雅可比矩阵在月面坐标量级(约1.7e6 m)下仍保持良好的尺度。一个小的icrf_orientation_tie把实现出的小旋转,通过IAU本体→ICRF的定向(transpose(crate::lunar_frame::icrf_to_iau_moon(jd_tdb)))复合,并返回实现框架绕ICRF各轴的残余小角度偏移:这是有意设计得简单的表达框架变更,不是对月球极轴的独立估计。
参考基准是内部一致性:把已知的Helmert变换(平移约几十m,旋转约 µrad,尺度约1e-7)注入分布良好的合成点网络(月面经纬度各异 → MCMF,部分点带高度),再加上带种子的高斯噪声,拟合必须恢复出所注入的参数。在无噪声数据上,恢复精度约达机器精度(平移< 1e-6 m,旋转< 1e-9 rad,尺度< 1e-12);在米级噪声下,恢复出的参数落在形式 σ 的几倍以内,拟合后的RMS残差接近噪声水平。lunar-frame-realisation场景报告恢复出的基准、逐参数相对注入真值的恢复误差、拟合后RMS残差,以及实现旋转的ICRF定向联系。
| 能力 | 状态 | 参考基准 / 如实说明范围 |
|---|---|---|
| 月球参考坐标系实现 | modelled |
src/lunar_frame_realise.rs helmert_fit、apply_helmert、realise_frame、icrf_orientation_tie、LunarFrameRealiseScenario。参考基准:InternalConsistency:恢复注入的7参数相似变换,加上apply_helmert的代数往返恒等式。测试(lunar_frame_realise::tests):无噪声恢复注入的变换(平移< 1e-6 m,旋转< 1e-9 rad,尺度< 1e-12);含噪声时恢复精度在 σ 的几倍以内,RMS残差接近噪声水平;先应用再求逆的往返;确定性(相同种子 → 逐位相同,不同种子 → 不同但均已恢复);零旋转的ICRF联系为零,且该联系保持旋转量值;场景通过run_toml分派。如实说明范围:这是一项自洽性检查:它在合成网络上恢复注入的变换,不是对照真实跟踪 / VLBI数据实现月球参考框架,也不声称任何绝对的框架精度。ICRF定向联系只是表达方式的简单变更,不是对极轴的独立估计。不声称有TRL、飞行经历或机构背书。 |
月球导航服务体积:DOP / 覆盖 / 可用性 + 广义月球ARAIM PL(src/lunar_service.rs)#
本模块把已建成的部件组合成月球导航服务体积分析:针对一个示意性的、取自公开来源的Moonlight / LCNS级(LCNS:月球通信与导航服务)月球轨道星座,在一段时间范围内扫描月面经纬度网格,并报告DOP / 覆盖 / 可用性,以及一个广义的月球ARAIM保护级包络。这两处复用至关重要,也是明示的。DOP几何使用的是经VALIDATED(对照gnss_lib_py)的内核crate::orbit::dop:service_dop只是一个薄薄的高度截止角过滤加上该内核,并且有一项测试断言这一恒等关系(service_dop等于对同样的可见位置直接做orbit::dop)。完好性复用LunaNet LNIS(LunaNet互操作规范)的月球ARAIM机制crate::lunar::lunar_araim(σ_URE ≈ 30 m,P_sat ≈ 1e-4);lunar_protection_level把现有的南极保护级推广到任意月面点,并有一项测试断言它退化为南极的情形(在南极、几何与预算相同时,它恰好返回现有的lunar::lunar_araim结果,误差< 1e-9)。
星座参数是对该系统类别的ESA公开描述的示意性近似(≈ 4颗卫星位于偏向覆盖南极的椭圆月球冻结轨道,远月点在南半球;4是库的默认值,随附的moonlight-service-volume.toml设为8,因为保护级要求至少6颗可见)。它们不是真实的Moonlight/LCNS星历,也不意味着任何隶属关系、背书、飞行经历、认证或TRL。其组合(覆盖 / 可用性 / 完好性)为MODELLED:一组圆/椭圆Kepler中继星(不是经微分修正的LCNS / 9:2 NRHO(近直线晕轨道)星历),平均自转的月球(没有物理天平动 / 极轴进动),以及已公布的LunaNet LNIS完好性参数。它演示的是服务体积的方法,而不是业务可用性数字。确定性(纯几何;无随机性)。moonlight-service-volume场景报告覆盖百分比、可见数和PDOP包络、整个体积上的HPL/VPL包络,以及相对告警限值的保护级可用性。
| 能力 | 状态 | 参考基准 / 如实说明范围 |
|---|---|---|
| 月球导航服务体积 | modelled |
src/lunar_service.rs LunarConstellation、visible_sats、service_dop、coverage、lunar_protection_level、LunarServiceScenario。DOP几何通过复用经gnss_lib_py核对的crate::orbit::dop内核而得到核对;完好性复用已公布的LunaNet/LNIS月球ARAIM(crate::lunar::lunar_araim,σ_URE ≈ 30 m)。测试(lunar_service::tests):service_dop是在已核对内核上的恒等式;南极处的lunar_protection_level等于现有的lunar::lunar_araim PL,误差< 1e-9(退化为南极的情形);覆盖随星座规模单调不减;可见性遵守高度截止角;场景是确定性的,并通过run_toml分派。如实说明范围:该星座是示意性的、取自公开来源的,不隶属于ESA,不是真实的Moonlight/LCNS星历;覆盖/可用性/完好性的组合为MODELLED(圆/椭圆Kepler中继星,平均自转的月球,已公布的LNIS参数),不是业务的Moonlight可用性数字。不声称有TRL、飞行经历或机构背书。 |
月球差分PNT:共模抵消 + 随基线增长的残差 + DGNSS保护级(src/lunar_dpnt.rs)#
月球DGNSS(差分卫星导航)/ SBAS类比:位于已知月面位置的NovaMoon级参考站,针对一个示意性的、取自公开来源的Moonlight / LCNS级星座,计算逐卫星差分修正量;与其相隔一段基线的流动用户应用这些修正,使共模的广播星历误差相抵消。每颗卫星i带有注入的共同3-D轨道误差向量e_i和共同时钟误差c_i。参考站的伪距残差就是修正量−e_i · û_ref,i + c_i;用户的原始误差为−e_i · û_user,i + c_i;修正后的用户误差是两者之差−e_i · (û_user,i − û_ref,i)。时钟项c_i恰好抵消(它在两次观测中相同),轨道项则退化为在两个视线单位向量之差上的投影,当基线 → 0时它 → 0(空间去相关下限),并随基线大致线性增长。逐卫星修正后的测距误差,通过用户几何,由一个依赖很少的加权最小二乘快照求解([x, y, z, clock]状态,经crate::orbit::invert4;恒定的测距偏差被时钟未知数吸收,而不会破坏定位解)映射出来,给出用户的位置误差。用户保护级复用DO-229E SBAS保护级机制(crate::sbas::sbas_protection_level,精密进近K因子),以差分残差 σ 作为每颗卫星的1-σ 误差预算。
NovaMoon 仅作为一类系统被引用(对月球参考站的公开描述);该星座复用示意性的、取自公开来源的crate::lunar_service::LunarConstellation。这些是用于演练差分方法的示意性参数,不是真实的星历,也不意味着任何隶属关系、背书、飞行经历、认证或TRL。lunar-differential-pnt场景报告有修正与无修正时的用户位置误差、缩减倍数、误差随基线变化的曲线以及保护级。在默认配置下,50 km基线处修正后的用户误差约为0.008 m,未修正时约为24 m(缩减约3000倍),零基线时约为0。
参考基准是内部一致性:共模抵消是一个精确的代数恒等式(noise = 0时,零基线处修正后误差< 1e-6 m;时钟项在任意基线下都精确抵消到机器精度),残差随基线单调增长,保护级使用的是SBAS栈所对照固定的同一DO-229E算法。空间去相关残差是一个一阶几何模型,不是由真实月球跟踪拟合出的去相关模型。
| 能力 | 状态 | 参考基准 / 如实说明范围 |
|---|---|---|
| 月球差分PNT | modelled |
src/lunar_dpnt.rs differential_corrections、corrected_user_range_errors、user_position_error_m、lunar_dgnss_protection_level、LunarDpntScenario。参考基准:InternalConsistency:差分误差抵消恒等式,加上对DO-229E SBAS保护级机制(crate::sbas)的复用。测试(lunar_dpnt::tests):零基线时,修正后的用户误差和每个修正后的逐卫星测距误差都约为0(< 1e-6 m),并且 ≪ 未修正误差;时钟项在任意基线下恰好抵消(轨道误差为零的情形);修正后的误差随基线单调增长,在基线不大时仍 ≪ 未修正误差;差分以明显的优势优于独立定位(> 2×);保护级等于直接调用sbas::sbas_protection_level,并随残差 σ 缩放;欠定的几何返回None;场景是确定性的(带种子),并通过run_toml分派。如实说明范围:MODELLED:共模抵消是精确恒等式,但空间去相关残差是一个一阶几何模型,不是由真实月球跟踪拟合出的去相关模型,并且未经真实数据核对。NovaMoon 仅作为一类系统被引用(示意性的、取自公开来源的,不隶属于ESA)。不声称有TRL、飞行经历或机构背书。 |
月球互操作性导出:与LunaNet/IOAG对齐的CCSDS OEM + KIF,附往返一致性检验(src/lunar_interop.rs)#
月球参考框架、月球时标和月球星历以与LunaNet/IOAG(IOAG:机构间运行咨询组)对齐的、基于CCSDS的交换形式导出。这一阶段没有另造传输格式:它复用本crate已有的CCSDS OEM(轨道星历消息)2.0输出器和解析器(crate::oem::OemFile::to_oem_string / crate::oem::parse_oem)以及Kshana交换格式信封(crate::interchange::Envelope),并针对月球场景重新打标签。export_lunar_oem把OEM的REF_FRAME设为IAU 2015 WGCCRE月球本体坐标系(MOON_ME平均地球或MOON_PA主轴),把TIME_SYSTEM设为月球时标(LTC / TCL / UTC),把CENTER_NAME设为MOON,针对一份示意性的、取自公开来源的LCNS级星历样本(位置来自crate::lunar_service::LunarSat::position_mci,速度由中心有限差分得到)。export_lunar_time_metadata输出与LunaNet/IOAG对齐的月球时间描述符(时标标识、取自crate::lunar_time::lunar_rate_breakdown的长期速率 µs/day、已公布的56–59 µs/day范围、参考面),可通过serde_json往返。export_kif_lunar把OEM + 描述符 + 坐标系标签包进现有的KIF信封,并带上MODELLED诚实性标签。
参考基准是往返 / 字段一致性。因为oem.rs同时提供两个方向,所以该OEM既经crate::oem::parse_oem往返(回到相等的段,月球坐标系/时间和状态数保持不变),又由oem_conformance独立检查:它验证每个必需的CCSDS/LunaNet头部关键字是否存在,REF_FRAME是否带有月球MOON_*标记,TIME_SYSTEM是否非空,META_START … META_STOP的框架是否成立,以及位置+速度数据行的格式是否正确,并返回结构化的通过结果和存在/缺失字段列表,使损坏的导出(例如丢失TIME_SYSTEM)能被发现并指明。时间元数据通过parse_lunar_time_metadata往返,KIF信封通过Envelope::parse往返,得到带有MODELLED标签的相等工件。
| 能力 | 状态 | 参考基准 / 如实说明范围 |
|---|---|---|
| 月球互操作性导出 | modelled |
src/lunar_interop.rs export_lunar_oem、export_lunar_time_metadata、parse_lunar_time_metadata、export_kif_lunar、oem_conformance、LunarInteropScenario。参考基准:InternalConsistency:确定性往返(CCSDS OEM经crate::oem::parse_oem;KIF经crate::interchange::Envelope::parse;时间元数据经serde_json),加上对照已公布的CCSDS OEM + LunaNet/IOAG字段语义的字段名一致性。测试(lunar_interop::tests):导出的OEM带有月球REF_FRAME(MOON_ME/MOON_PA)和TIME_SYSTEM(LTC/TCL)标记、CENTER_NAME = MOON、对象以及格式正确的数据行;月球时间元数据往返无损(速率/范围/参考)并拒绝无效内容;KIF信封序列化并反序列化为相等的值,且带有MODELLED诚实性标签;一份有意损坏的OEM(缺少TIME_SYSTEM)未通过oem_conformance,并被报告为缺失;场景通过run_toml分派。如实说明范围:字段的名称/单位与公开标准对齐(CCSDS 502.0-B OEM、IAU WGCCRE 2015月球坐标系、LunaNet互操作规范 / IOAG月球架构);该导出为MODELLED:参考基准是确定性往返加字段名一致性,这不是经认证的互操作一致性测试,星历是示意性的、取自公开来源的,不隶属于ESA,也不声称有TRL、飞行经历或机构背书。 |
预先登记的预测#
预先登记的预测是一项MODELLED结果,在任何可用来评分的数据出现之前就已冻结,评分规程同时固定。它不是验证,也不增加台账行。每一项都存放在docs/predictions/中,附有其冻结的输入、结果及其SHA-256哈希,只要有任何冻结的字节发生变化,tests/prediction_frozen.rs就会失败;假设改变时,做法是在旧预测旁新增一份带日期的新预测,绝不修改旧预测。
| 预测 | 冻结于 | 评分所对照的对象 | 状态 |
|---|---|---|---|
| 月球参考站覆盖 | c05dac1d,2026-10-12 | 任何一方公布的南极月球差分站的精度、可用性、覆盖和保护级 | 尚未评分(没有已公布的结果) |
演示的代表性与通往飞行的差距台账(src/representativeness.rs)#
仿真结果只有在表面上就写明它锚定于什么、假设了什么、以及与飞行系统之间还隔着什么,才可作为证据。代表性台账把这一点变成一等的、可由机器检查的输出:一条Representativeness记录带有该演示的外部Anchor、其建模假设、通往飞行的各项Gap(每项都附有能够消除它的阶段/活动),以及它所代表的TRL区间。它是与能力层面的verification矩阵相对应的、逐个结果的配套件。
参考基准是一组闭式不变量,由representativeness::tests强制执行:一条Validated记录必须列出至少一个ExternalDataset锚点(仿真不能对照自身来核对);一条Modelled记录必须列出至少一项通往飞行的差距,且不能声称代表高于4的TRL区间(超出这一级的成熟需要硬件/飞行证据,那是一项差距,而不是仿真输出);TRL区间必须格式正确;一条PartnerOwned记录不得断言任何内容。这些不变量把“论证了代表性,并清楚指出了通往飞行的剩余差距”这一准则落到了实处。
| 能力 | 状态 | 参考基准 / 如实说明范围 |
|---|---|---|
| 代表性与通往飞行的差距台账 | modelled |
src/representativeness.rs Representativeness/Anchor/Gap,check/is_valid/report/to_json。参考基准:InternalConsistency:闭式的如实性不变量,与verification的状态/参考基准类型边界相联系。测试(representativeness::tests):没有外部锚点的“已核对”记录会失败;内部(ReferenceImpl)锚点不满足“已核对”;没有差距的“已建模”记录会失败;TRL高于4的“已建模”记录会失败;格式错误的TRL区间会被发现;记录可序列化为带有预期字段的JSON,并生成可读的报告。如实说明范围:该台账检查的是结果证据的分类,并不证明所列的锚点确实指向在运行的测试(这些是人工整理的,与verification矩阵完全一样);“可由机器检查”的说法仅限于状态/锚点/差距/TRL这几项不变量。 |
统一的量子与经典权衡证据(src/qtrade.rs)#
每个量子PNT应用领域都以同样的方式回答同一个问题:固定一个比较框架(场景 + 随机种子 + 引擎版本),让一个量子候选方案和一个经典基线走同一条中立的代码路径,在共同的性能指标上给它们评分,并报告量子在哪里占优、在哪里不占优,同时附带置信区间和如实的已核对/已建模标签。TradeEvidence让这个回答有了统一的形式,使授时、导航和异常检测各个垂直领域都输出同一种可复现、标签如实的对象。它不重新实现任何权衡:逐项性能指标的数值来自现有引擎(quantum_trade、crossover以及各垂直领域模块);这只是契约,加上可复现性/代表性的封装,建立在代表性台账和验证标签之上。
参考基准是闭式的收益/胜出者恒等式,加上对现有权衡输出的忠实封装。qtrade::tests:收益比的极性是正确的(取向使得>1始终表示量子一方更好,无论是越高越好的守时指标,还是越低越好的误差指标);由真实的quantum_trade::TradeResult构建的证据对象能复现其收益比;不诚实的证据会被拒绝(没有差距的“已建模”代表性,或权衡记录不带外部锚点的Validated性能指标);JSON是确定性的,并带有框架/种子/引擎/性能指标/代表性字段。
| 能力 | 状态 | 参考基准 / 如实说明范围 |
|---|---|---|
| 量子与经典权衡证据 | modelled |
src/qtrade.rs TradeEvidence/TradeFom/TradeFrame/Winner。参考基准:InternalConsistency:闭式的收益/胜出者恒等式 + 对quantum_trade::TradeResult的忠实封装;如实性与代表性台账以及验证状态/参考基准类型边界相联系。测试(qtrade::tests)同上。如实说明范围:该测试框架规范的是权衡如何报告和复现;底层逐项性能指标的物理由提供它的引擎决定,并带着它自己的已核对/已建模标签,TradeEvidence不会把已建模的性能指标升级为已核对。 |
量子器件误差模型库(src/quantum_devices.rs)#
一个集中的位置,提供演示器所权衡的量子PNT器件:光学/囚禁离子/汞离子时钟、经典参考时钟、冷原子干涉仪和时间传递链路,每一项都是带有其主要规格和代表性记录的DeviceCard。大部分器件物理是复用的(时钟稳定度来自holdover::QuantumClockClass和clock_state::ClockClass;冷原子干涉仪来自quantum_trade/crossover;经典光学/射频链路来自timetransfer_adv)。唯一真正新增的模型是纠缠 / 单光子时间传递链路,其定时精度受散粒噪声限制:σ_t ≈ jitter/√(R·τ),取决于检测到的符合率R和积分时间τ,会被暗计数惩罚项√(1 + dark/R)劣化,并受不可消除的系统项所限。
参考基准是被复用的已公布时钟/CAI系数,加上闭式的散粒噪声/损耗恒等式。quantum_devices::tests:被复用的时钟稳定度排序合理(光晶格< 汞离子< CSAC,按 σ_y(1 s));在散粒噪声受限时,纠缠精度按1/√τ改善(积分时间增至4倍,σ 减半);链路每损耗10 dB,检测到的符合率下降到十分之一,即10×;暗计数会单调劣化精度;系统下限为精度设定了下界;每张器件卡都是有效的“已建模”代表性记录。
| 能力 | 状态 | 参考基准 / 如实说明范围 |
|---|---|---|
| 量子器件误差模型库 | modelled |
src/quantum_devices.rs DeviceCard、quantum_clock_card/classical_clock_card、EntanglementTimeLink。参考基准:InternalConsistency:复用已公布的时钟/CAI系数 + 纠缠链路的闭式散粒噪声/损耗恒等式。测试(quantum_devices::tests)同上。如实说明范围:时钟/CAI器件参数复用自引擎中已有的、基于已公布系数的模型;纠缠链路模型由已公布的量子时钟同步行为建立,为MODELLED,其中的对速率/效率/损耗数值是示意性的、取自公开来源的,没有对照实测链路做过核对,真实的光源/信道/探测器硬件是明确列出的通往飞行的差距。 |
可信量子授时:端到端链路、安全分发、异常与权衡(src/timetransfer_chain.rs)#
quantum-time-transfer场景组合出量子PNT演示器所需的授时链路:对量子链路(光晶格钟 + 纠缠/单光子链路)与经典链路(CSAC + 射频双向链路),做端到端用户时间预算(参考时钟滑行误差与链路定时精度按平方和合成);一个界定未检测到的时间误差的授时保护级(TPL,复用自tpl);一个在给定虚警率下的延迟/重放攻击安全性能指标 1 − P_md(复用自detection);一个时钟异常检测概率 + CUSUM(累积和)变化检测延迟;以及以如实的qtrade::TradeEvidence给出的量子与经典比较,并带有代表性 + 通往飞行的差距记录。
参考基准是在被复用的、各自独立核对过的内核之上的闭式平方和预算(对照Stable32/NIST的ADEV;TPL界;detection::analytic_pd/analytic_pmd)。timetransfer_chain::tests:量子精度随积分时间改善;量子链路既可能赢得也可能输掉精度性能指标(如实:并非普遍占优;链路损耗很大时结果会反转);保护级为有限正值;安全性能指标位于 [0,1] 且随攻击延迟增大;异常检测概率随故障幅度单调;并且权衡证据在内部是如实的(is_honest())。
| 能力 | 状态 | 参考基准 / 如实说明范围 |
|---|---|---|
| 可信量子授时(链路 + 安全分发 + 异常 + 权衡) | modelled |
src/timetransfer_chain.rs QuantumTimeTransferScenario/Report、to_svg;kind="quantum-time-transfer"。参考基准:InternalConsistency:在被复用的、已核对的内核之上的闭式平方和预算(ADEV/Stable32-NIST、TPL界、检测的解析Pd/Pmd);如实性与代表性台账相联系。测试(timetransfer_chain::tests)同上。如实说明范围:时钟/链路参数是示意性的、取自公开来源的;纠缠链路是来自quantum_devices的、受散粒噪声限制的MODELLED模型;它建模的是可信授时系统的类别,没有对照实测的端到端链路做过核对,真实的时钟/链路/空间信道硬件是明确列出的通往飞行的差距;不声称有TRL、飞行经历或认证。 |
无GNSS的量子导航(src/quantum_nav_od.rs)#
quantum-gnss-free-nav场景比较GNSS中断期间的航位推算:一边是量子惯性预算(冷原子干涉仪加速度计,复用自inertial::quantum_imu/quantum_trade,其CAI白噪声下限经核对,与Freier等2016相差在约2个数量级以内),另一边是经典导航级INS。它报告滑行期间的位置误差增长、达到位置门限的守时时间,以及以如实的qtrade::TradeEvidence给出的量子与经典权衡。可观测性如实说明:中断期间没有外部定位,加速度计偏置不可观测,所以位置误差无界增长(≈ ½·bias·t²,再加一项速度随机游走);偏置更低的量子传感器减缓这种增长,但并不能弥合差距,只有外部定位才行。
参考基准是被复用的惯性预算(QuantumNavBudget/ClassicalInsBudget,二者都实现了PositionDrift trait),加上闭式的漂移恒等式。quantum_nav_od::tests:量子预算在长时间中断上优于经典预算(误差更低,守时更久);两者的误差都随中断时长增长(可观测性差距);优势取决于中断时长,不是恒定的胜出倍数(量子曲线在短滑行时受噪声主导,在长滑行时受偏置主导);权衡证据在内部是如实的。
| 能力 | 状态 | 参考基准 / 如实说明范围 |
|---|---|---|
| 无GNSS的量子导航 | modelled |
src/quantum_nav_od.rs QuantumNavOdScenario/Report、to_svg;kind="quantum-gnss-free-nav"。参考基准:InternalConsistency:被复用的惯性预算(通过复用而核对的CAI,对照Freier 2016约2个数量级;经典的闭式漂移);如实性与代表性台账相联系。测试(quantum_nav_od::tests)同上。如实说明范围:这是静态航位推算预算的比较,而不是在真实轨迹上运行的动态滤波器;说明了没有定位时偏置不可观测;器件参数是示意性的、取自公开来源的;建模的是无GNSS量子导航的类别,真实的冷原子IMU硬件、动态平台和飞行环境都是明确列出的通往飞行的差距;不声称有TRL/飞行/认证。 |
量子PNT系统的故障 / 异常检测(src/quantum_faults.rs)#
quantum-anomaly-detect场景定义了一份带标签的量子PNT故障目录(时钟频率跳变、漂移、失锁;传感器偏置阶跃、丢失),在正常窗口与故障窗口上给检测统计量评分,并以ROC AUC以及固定虚警率下的最小可检测故障来报告检测器的区分能力。量子与经典的比较角度是:更稳定的量子时钟参考会降低监测噪声 σ,所以能检测更小的故障,并以如实的qtrade::TradeEvidence连同代表性记录给出。
参考基准是高斯检测统计量的闭式AUC(正常N(0,σ),故障N(μ,σ) ⇒ AUC = Φ(μ/(σ√2))),与经外部核对的eval_stats::bootstrap_auc_ci(对照scikit-learn核对)以及detection的解析门限相互交叉检查。quantum_faults::tests:解析AUC与已知值相符(μ=0时为0.5,μ/σ 很大时 →1,单调);经验bootstrap-AUC置信区间包住闭式值;量子监测器的AUC更高,最小可检测故障更小;故障极大时优势消失(两者都能完美检测,并非普遍的裕量);目录有五个带标签的类别;权衡在内部是如实的。
| 能力 | 状态 | 参考基准 / 如实说明范围 |
|---|---|---|
| 量子PNT的故障/异常检测 | modelled |
src/quantum_faults.rs FaultKind、QuantumAnomalyScenario/Report、analytic_auc、min_detectable_fault;kind="quantum-anomaly-detect"。参考基准:InternalConsistency:闭式高斯AUC,与经外部核对的eval_stats bootstrap AUC(对照scikit-learn)以及detection的解析门限相互交叉检查。测试(quantum_faults::tests)同上。如实说明范围:检测统计量是高斯模型,不是真实遥测;故障目录是带标签的合成数据;量子/经典监测噪声水平是示意性的、取自公开来源的;建模的是量子PNT异常检测的类别,带有真值标签的真实硬件遥测是明确列出的通往飞行的差距;不声称有TRL/飞行/认证。 |
标准一致性:交换格式、链路预算与完好性(外部参考基准检查)#
这些标准通过复现标准自身(或独立参考实现)所发布的原文示例 / 参考值来核对,而不是靠Kshana自己的往返。复现标准自带的附录示例,是对交换格式解析器所能做的最有力的一致性检查。
| 标准 | 状态 | 外部参考基准 |
|---|---|---|
| CCSDS OEM(502.0-B轨道数据消息) | validated |
tests/ccsds_reference.rs:parse_oem恢复出CCSDS 502.0-B-3,附录G §G6,图G-11(“无加速度、无协方差的OEM示例”,第G-10页)中KVN OEM示例的精确历元以及X/Y/Z/Ẋ/Ẏ/Ż 状态向量,两个星历段均包括在内,也包括带前导零的源值(-063.042)。测试数据tests/fixtures/ccsds/oem_502_b3_figG11.oem逐字符复现自官方Blue Book(编辑性的“< intervening data records omitted here >”标记不是有效的OEM记录,因此未包含)。 |
| CCSDS TDM(503.0-B跟踪数据消息) | validated |
tests/ccsds_reference.rs:TdmFile::parse恢复出CCSDS 503.0-B-2,附录E,图E-9(“TIMETAG_REF=TRANSMIT的测距数据”,第E-9页)中KVN TDM示例的全部41条RANGE记录(首条3198.03679519614 km,末条3270.46440460551 km)以及元数据。测试数据tests/fixtures/ccsds/tdm_503_b2_figE9.tdm原样取自Blue Book。(这是已公布Blue Book的参考基准,与src/ccsds_tdm.rs中此前已有的手写reference.tdm往返并列。) |
| CCSDS 133.0(空间包协议) | validated |
src/space_packet.rs primary_header_matches_published_independent_test_vectors:编码器复现独立的spacepackets库(us-irs/spacepackets-py,tests/ccsds/test_space_packet.py)的字节级主头测试向量,例如18 02 40 34 00 16和全最大值的1F FF FF FF FF FF,另加典型的全为一的遥测(TM)情形,每一项都经解码往返。位域宽度/顺序依据CCSDS 133.0-B-2 §4.1.3。 |
| CCSDS 401 / DSN(链路预算,DSN 810-005) | validated |
src/linkbudget.rs link_equation_reproduces_descanso_galileo_dct:FSPL(自由空间路径损耗)和C/N₀ 链复现J. H. Yuen(编),Deep Space Telecommunications Systems Engineering(DESCANSO/JPL(DESCANSO:深空通信与导航系统卓越中心)Pub. 82-76),表1-1已公布的深空遥测设计控制表:Galileo X频段(8420.43 MHz)在6.37 AU处的下行链路,自由空间损耗290.54 dB(<0.05 dB),接收Pr/N₀ = 54.6 dB-Hz(<0.2 dB)。频段中心落在DSN/CCSDS-401深空下行分配之内(DSN 810-005 Module 201)。默认任务参数仍只具代表性(不是经校准的应答机);此处被固定的是链路方程。 |
GNSS标准:外部参考基准的状态与如实说明的剩余差距:
| 标准 | 状态与如实的说明 |
|---|---|
| RAIM / ARAIM | 内核、几何以及ARAIM保护级均经外部核对。检测内核(χ² 故障检测门限、非中心 χ² 的漏检非中心参数,以及正态律K乘数)复现SciPy(tests/raim_reference.rs,171个算例,相对误差 ≤ 1e-6),外围的几何复现gnss_lib_py(DOP)。ARAIM保护级(PL)的数值现在也已固定:对照WG-C(WG:工作组)ARAIM Reference ADD(算法描述文档)v3.1的“LPV-200(LPV:带垂直引导的定位器性能)数值示例”,src/araim_reference.rs / tests/araim_reference_vectors.rs给出VPL 18.2926 m对18.3 m,HPL 13.4063 m对13.45 m,σ_v,acc 1.3694 m对1.3694 m,均在参考文档自身的TOL_PL = 0.05 m之内(araim-reference-check类型)。范围:故障模式至多为一颗卫星或一个星座(N_fault,max = 1);多事件故障子集和排除未实现,而经典RAIM仍然没有公认的、已发布的由输入到HPL的测试向量。参见ARAIM_REFERENCE.md。 |
| SBAS / DO-229E | 保护级算法现已经外部核对。给定逐卫星的(el, az, σ),kshana的sbas_protection_level复现RTKLIB SBAS-PL分支(zsiki/rtklib_ws waasprotlevels(),Siki和Takács 2017,“DO-229D Appendix J”):输入的是该工具自己根据真实EGNOS广播电文 + 真实BUTE RINEX算出的 σ,在6个历元上HPL相差< 2e-3 m(tests/sbas_reference.rs);ESA gLAB v6.0.0(core/filter.c)确认了相同的约定。K因子(K_H,PA=6.0、K_V=5.33、K_H,NPA≈6.18)与DO-229E Appendix J相符。哪些已核对、哪些没有:这里固定的是PL 算法(输入 σ → 输出HPL/VPL);由原始UDRE/GIVE电文得出上游 σ 的建模不在kshana的范围之内,而这正是独立的全流程工具在真实数据上仍相差数米的地方。K_V与参考基准取整后的5.33相符(kshana的精确值Φ⁻¹(1−5e-8)=5.3267 → VPL约小0.06 %;垂直方向以不含K因子的d_U做了核对)。 |
| IONEX / Klobuchar | 广播模型经外部核对。Klobuchar L1模型复现RTKLIB的ionmodel(tests/klobuchar_reference.rs,< 1e-4 m):这是与事实上的开放参考的实现一致性,因为不存在官方的实测真值示例。IONEX TEC地图读取器现已具备(src/ionex.rs,已有单元测试);剩下的差距是把它与真实的GIM产品交叉检查,而不是广播模型。参见声明与现实对照中的Klobuchar各行。 |
| GPS L1 C/A扩频码(IS-GPS-200) | 码生成经外部核对。 src/sdr.rs(ca_first_ten_chips_match_is_gps_200_octal):G1/G2 LFSR(线性反馈移位寄存器)C/A码生成器完全复现IS-GPS-200表3-Ia中已公布的码相位分配,即PRN(伪随机噪声)1–9的前十个码片的八进制值({1440, 1620, 1710, 1744, 1133, 1455, 1131, 1454, 1626})。这是对照GPS接口规范固定了扩频码码片序列;其周边的调制、频谱隔离和DLL(延迟锁定环)码跟踪部分(navsignal)仍为MODELLED。 |
网络、频谱、太阳系、星座、测评活动和LEO-PNT的授时#
0.28版本线上新增的能力,在生成的VERIFICATION-MATRIX.md中逐行评定;本节概括其中哪些带有外部参考基准。只有带有独立外部参考基准的行才是VALIDATED,其余一律为MODELLED。
| 能力(类型) | 状态 | 外部参考基准,或为何仍属已建模 |
|---|---|---|
守时序列上的电信MTIE(最大时间间隔误差)和TDEV(时间偏差)(telecom-timing) |
validated |
tests/telecom_timing_reference.rs:在已提交的2 048个样本的芯片级时钟守时序列上,对照allantools 2024.06,17个MTIE和12个TDEV平均因子,相对误差分别< 1e-12 / < 1e-9。ITU-T(国际电信联盟电信标准化部门)模板的PASS/FAIL判定和数据手册振荡器预设仍为MODELLED。参见TELECOM-TIMING.md。 |
由实测时钟记录做守时预测(slot-timing) |
validated |
tests/slot_timing_cs5071a_holdout.rs:用真实5071A铯钟记录的前三分之一做拟合,预测六个门限处的一倍标准差越限时间,再在保留的后三分之二上实测;判据为任一方向差一个1.5倍因子,观测比值为0.84到1.03。建立在其上的时隙保护预算和定位更新节奏仍为MODELLED。 |
闭式L频段功率谱密度与频谱隔离(spectrum) |
validated |
navsignal将闭式解与已发表的数值进行比对(矩阵行“Closed-form L-band signal power spectral densities…”)。带有各频段J/S(干信比)与有效C/N0(载波噪声密度比)的瀑布图,以及SigMF(Signal Metadata Format,信号元数据格式)的输入/输出,仍为MODELLED。 |
基于JPL(喷气推进实验室)Standish根数的行星位置,以及天体之间的光行时(solar-system) |
validated |
0.30,已针对JPL Horizons(DE441)预先登记:tests/solar_system_standish_preregistered.rs和tests/solar_system_standish_earth_icrf_preregistered.rs,每颗行星及每个分量的RMS不超过Explanatory Supplement表8.10.1的数值(最差为0.778),其中包括地球分量拆分和ICRF旋转;tests/solar_system_light_time_solver_preregistered.rs,基于DE441位置的光行时求解器,与Horizons光行时之差在1e-6 s以内(最差为6.7e-9 s)。较早的两倍标称值比对(tests/solar_system_horizons_reference.rs)的判据是在首次比对之后才设定的,作为不设门限的回归检查保留。表1中的天王星/海王星、冥王星、卫星、天体常数和body-pnt仍为MODELLED。 |
Walker几何构型,以及已发布的GPS、Galileo和GLONASS(GLObal NAvigation Satellite System,全球导航卫星系统)轨位;全球GPS精度因子(constellation-design) |
validated |
constellation::tests:Walker 24/3/1与Galileo开放服务定义表在1e-9° 内一致,也复现了GLONASS接口控制文件的轨位公式和GPS的赤道穿越;GPS基线HDOP中位数0.940,对照标准定位服务性能标准中的0.94。围绕任意天体的任意多星座覆盖图仍为MODELLED。 |
测评活动:串联任务、扫描、蒙特卡罗集合、共享条件运行(campaign) |
modelled |
tests/campaign_composition_reference.rs(11项测试):单阶段测评活动逐字节复现独立运行,单节点扫描读出相同的数值,带随机种子的集合逐字节稳定。这是组合恒等式,不是外部参考基准(oracle)。 |
| LEO(近地轨道)链路物理:ITU-R(国际电信联盟无线电通信部门)P.838降雨系数、P.618降雨衰减与闪烁、P.2109建筑物穿透损耗、一阶电离层、最大多普勒 | validated |
tests/leo_link_reference.rs、tests/leo_doppler_reference.rs:ITU-R建议书自带的表格和第3研究组的验证示例(连同其来源与获取日期一并提交),电离层的IS-GPS-200群延迟比,以及Leclere、Marathe和Reid发表的最大多普勒表(ION GNSS+ 2025,arXiv 2509.19551)。 |
LEO导航电文:Galileo ICD(接口控制文件)广播星历用户算法、CRC-24Q(24位循环冗余校验)、全球平均SISRE(空间信号测距误差)权重(leo-navmsg) |
validated |
tests/leo_navmsg_reference.rs:Galileo用户算法在四组真实的Galileo广播星历上与RTKLIB(开源实时动态定位库)在1 mm内一致;CRC-24Q给出目录检验值0xCDE703以及RTCM(海事无线电技术委员会)1005示例帧的校验字节;SISRE权重复现已发表的MEO/GEO表。拟合器、过境中途更新、二进制编码、RINEX-4风格/CSV(逗号分隔值)文本,以及可选的星历模型仍为MODELLED。 |
LEO信号设计、过境与链路预算、多普勒与GNSS+LEO联合定位、PPP(精密单点定位)收敛、5G NTN(非地面网络)定位、LEO时间传递(leo-signal、leo-pass、leo-pvt、leo-ppp、ntn-positioning) |
modelled |
tests/leo_signal_reference.rs、tests/leo_fusion_scenarios.rs:闭式解、滤波器一致性(例如PPP滤波器多次运行平均的NEES落在其95% 区间内)以及与已发表趋势的比较;没有实地数据。 |
一个完整的LEO-PNT系统(leo-pnt-chain) |
modelled |
tests/leo_pnt_chain.rs:每个传递下去的数值都等于上游阶段自身的输出,改变上游输入会使所有依赖它的下游数据随之变化。 |
| LEO韧性与垂直应用(基于多普勒和跨频段一致性的欺骗干扰检测,电离层探测) | modelled |
tests/leo_resilience_verticals.rs(10项测试)。韧性与垂直应用场景列于RESILIENCE-CROSSWALK.md。 |
属于呈现形式而非证据的输出有测试但没有矩阵行:交换格式导出(CZML(Cesium Language)、KML(Keyhole Markup Language)、GeoJSON、STK(Systems Tool Kit)星历、SigMF(Signal Metadata Format)),每种都由依据该格式规范编写的验证器解析回读(tests/interop_formats.rs,13项测试;见INTEROP.md);动画(tests/animation.rs:重复运行逐字节一致、帧数精确、SVG(可缩放矢量图形)格式良好、HTML(超文本标记语言)播放器中没有外部地址);以及运行报告(tests/advanced_report.rs、tests/advanced_report_cli.rs:每个内置场景的报告都没有空白章节或占位值,标签与矩阵一致,且所记录的命令能逐字节复现result.json和报告)。
运行范围#
tests/scenario_coverage.rs在每个包声明的输入范围内对其进行测试,并断言所有数值输出均为有限值(没有NaN/Inf(NaN:非数))且有界。该表列出每个包所测试的输入范围、预期的输出行为以及对应的覆盖测试。
| 包 | 扫描的输入 | 测试范围 | 预期输出 | 覆盖测试 |
|---|---|---|---|---|
| clock | threshold_ns(授时指标) |
1 – 500 ns | 有限的守时/授时/安全性能指标 | clock_pack_covers_the_spec_threshold_envelope |
| inertial | accel.bias |
1e-7 – 1e-2 m/s²(冷原子 → 粗劣的MEMS(微机电系统)) | 有限且有界的位置RMS/p95 | inertial_pack_covers_the_accel_bias_envelope |
| orbit | mask_deg(高度截止角) |
5° – 30° | 有限的DOP/可用性;有界 | orbit_pack_covers_the_elevation_mask_envelope |
| spoof | attack.rate_ns_per_s |
0.1 – 50 ns/s | 有限的P_md / 安全性,有界 | spoof_pack_covers_the_attack_rate_envelope |
| hybrid | position_spec_m |
10 – 1000 m | 有限的授时/位置守时 | hybrid_pack_covers_the_position_spec_envelope |
| 轨道(真实) | 真实的Celestrak gps-ops TLE |
30颗卫星的快照,严格校验和 | 仅在校验和有效时才加载;几何有界 | real_gps_constellation_scenario_loads_with_valid_checksums_and_bounded_output |
| 时钟(闪烁) | flicker_floor开/关 |
0对1e-12 | 启用1/f噪声下限会使授时p95的滑行变差 | flicker_fm_floor_degrades_the_clock_holdover_when_enabled |
| 融合(真实性) | accel.bias 0对5.88e-7 m/s² |
零值对比实际的非零值 | 滤波器仍能收敛,误差在零偏置误差的3× 以内 | fusion_filter_converges_with_a_realistic_non_zero_bias |
闪烁调频和融合偏置这两行弥补了两个具体的真实性缺口:这些噪声项默认关闭,但启用后确实会影响输出;联合融合滤波器并不依赖偏置被置零——在存在实际的冷原子级残余偏置时它同样收敛。
已知限制#
- 量子运行与经典运行现在使用相互独立的RNG(随机数发生器)种子(经典种子 = 种子 + 0x9e3779b97f4a7c15),因此它们的噪声实现互不相关——此问题已在审查后修复。
holdover_s具备分段感知能力:中断时间线在GNSS重新捕获处被拆分为若干连续分段,所报告的数值是其中最坏情况(最短)的滑行时长。它仍受时间网格分辨率的限制(为下界)。- ISL时间传递重新同步把残余链路不确定度建模为:每个测量步长上新的零均值抖动,加上按配置的间隔重新锚定。
宣称与实际——速查表#
一份带批判眼光的评审者清单。对每个可能被读得超出其实际含义的术语:Kshana目前做的是什么,真正的版本在路线图上处于何处。
| 您可能看到的术语 | 它目前实际上是什么 | 它(目前)不是什么 |
|---|---|---|
| “混合量子/经典PNT仿真器” | 一个由已发表的量子传感器阿伦/噪声系数驱动的经典随机仿真器 | 第一性原理量子物理(马赫-曾德尔相位、投影噪声、系统误差)——见QUANTUM-MODELS.md |
| “联合卡尔曼融合”/融合包 | 可运行的fusion包分别观测时钟和位置(直接的时间定位和直接的位置定位),对此最优估计器本来就是块对角的——两个两状态滤波器,合成一个联合性能指标 |
针对伪距情形的耦合滤波器现已作为fusion::coupled::CoupledPntFilter 存在(4状态堆叠的[pos,vel,phase,freq],非零的块间协方差,经NEES验证),但尚未接入可运行的包,且该包为1-DOF(一个自由度)——3-D 8状态扩展属于未来工作 |
安全性能指标(spoof类型) |
随机时间欺骗检测器的1 − P_md:对钟辅助监测统计量做双侧 χ²₁ / Neyman–Pearson检验,门限由目标P_fa设定,P_md 在规格量级处求值,既有闭式解也有蒙特卡罗(二者在几倍1/√N内一致) |
多卫星RAIM/ARAIM检测器——见INTEGRITY.md;监测统计量是带有源自时钟功率谱密度的 σ 的高斯模型,不是信号级相关 |
| “钟辅助欺骗检测” | 单时钟时间差异监测器(高斯统计量,σ 来自时钟功率谱密度),不是多SV(SV:space vehicle,即卫星)RAIM | 带保护级的距离域多SV RAIM |
| 欺骗检测器P_md(闭式解对蒙特卡罗) | 基于Φ的解析P_md与mc_runs次试验的经验估计在抽样误差内一致(≈ 1/√N);在受压偏移(μ/σ = 2)下,由src/spoof.rs / src/detection.rs测试验证 |
针对所记录欺骗干扰数据的实测检测器ROC |
gnss-sim伪距模型 |
正向仿真:ρ = geometric + clocks + Klobuchar iono + Saastamoinen·Niell tropo + noise + multipath。每个大气模型都用手算值做了单元测试(ZHD(天顶静力延迟)≈ 2.3 m,天顶处Niell = 1,Klobuchar倾斜因子),完整的Klobuchar广播模型则与RTKLIB的ionmodel()参考实现交叉核对,一致到亚毫米(klobuchar_agrees_with_rtklib_reference_implementation,RTKLIB默认系数情形下为6.1278 m——不存在官方发布的Klobuchar测试向量,因此这是实现一致性,不是实测真值);零噪声运行复现几何量加各项改正,一致到亚毫米(RAIM残差 ≈ 0) |
来自真实信号的位置解(PPP/RTK(PPP:精密单点定位))、双频无电离层组合,或载波相位整周模糊度解算——未建模 |
压制干扰模型(jamming类型) |
链路预算链:由自由空间路径损耗加各方向天线增益得到J/S → 经抗干扰方程(解扩增益 × 频谱分离Q)得到有效C/N₀ → 在门限处失锁(Kaplan & Hegarty §9.4) |
多路径、随时间变化的AGC(自动增益控制)动态、捕获搜索本身(可选的[acquisition]滞回只是一对门限);可选的[front_end]量化器损耗是针对高斯输入的损耗,对连续波压制干扰源无效;可选的[crpa]阵列是窄带且理想的(没有耦合或失配),可选的[terrain]遮蔽是一块SRTM图幅上的一个刀锋;Q是各类型的代表性常数,不是由压制干扰源实测功率谱密度导出的 |
| 完好性性能指标(时钟/守时包) | 滤波器自洽性(中断样本中落在其自身k·σ 界内的比例) | HPL/VPL、完好性风险 / P_HMI、告警限值、DO-229E/316/ED-259A——这些由integrity类型(RAIM / ARAIM)和SBAS功能另行报告,绝不折入此性能指标 |
旧版inertial场景包性能指标 |
带有真值对齐复位的单轴(1-DOF)加速度计/陀螺误差预算(VRW/ARW、偏置不稳定性) | 旧版包为1-DOF;3轴路径随gnss-ins包提供(见下一行) |
3轴捷联库加gnss-ins 包(src/inertial/、src/fusion/pack.rs) |
经过验证的四元数/NED(NED:北东地)导航器,带有确定性的IMU误差模型——已建模标度因数、失准、g敏感性、量化、速率斜坡(IEEE Std 952-1997 §A.2;Groves 2013 §4.3)——现已由gnss-ins场景包驱动,并可通过TOML(Tom's Obvious Minimal Language,场景格式)逐传感器配置([imu_*.error_model]) |
未建模:振动整流误差、温度梯度漂移。融合滑行误差受交接姿态误差限制而存在下限(倾斜/加速度计偏置难以分离),因此不宣称可逐项偏置标定 |
“混合PNT集成”(hybrid包) |
以真值对齐的GNSS复位为界的开环航位推算 | 耦合(松/紧)GNSS–INS卡尔曼融合——那是另外的gnss-ins包(EKF)和hybrid-ukf类型 |
| “定位性能”(时钟包) | 以ns计的时钟相位授时 RMS(timing_rms_ns) |
位置域的RMS/CEP/SEP/DOP加权(SEP:球概率误差)精度 |
惯性位置性能指标(pos_rms_m) |
以米计的单轴位置RMS/p95,来自一个随机种子,除非runs = N要求使用集合(此时给出每项指标的均值、离散度和自助法95% 置信区间) |
集合的CEP / 2DRMS(距离RMS的两倍)分布(路线图:蒙特卡罗CEP) |
| “验证到约2%” | 一个典型的观测一致度;强制执行的门限是20–25%的相对误差 | 有保证的2% 精度界限 |
| “可复现/逐位一致” | 在同一OS(操作系统)加固定工具链上重复运行逐位一致;跨Linux、macOS和Windows,CI检查每个结果的输入指纹与形状的已提交SHA-256(tests/cross_platform_golden.rs),以及精度达1e-6的数值(tests/golden.rs) |
跨操作系统逐字节一致的完整结果(最末位的libm差异) |
SGP4 GPS场景(orbit-sgp4-gps.toml) |
一份真实的Celestrak gps-ops快照(2021-07-28,30颗卫星,严格校验和),每颗卫星从其自身的TLE历元起传播 |
当前的星座——用scripts/fetch_tles.sh刷新快照(见REAL_TLE_GUIDE.md);NORAD(北美防空司令部)目录编号是真实的 |
月球PNT论文的交叉核对(回归证据,不是矩阵行)#
月球/地月空间套件(README中的“Lunar & cislunar”和“Lunar PNT suite”能力)已发表论文中的论断,在tests/validate_p*.rs中得到独立的交叉核对,每项都对照由不同实现给出的参考基准(oracle):
- 轨道发射/捕获足迹对照
scipy.special.j1(Cephes贝塞尔J1); - 地面信标几何DOP对照独立的NumPy
(HᵀH)⁻¹求解; - UT1/EOP持续性预测误差增长对照用NumPy重新解析的同一批逐字IERS
finals2000A行; - 平面远距离逆行轨道族对照NASA/JPL三体周期轨道数据库;
- 射频测距精密度预算对照第一性原理参考。
固定数据和参考基准(oracle)生成脚本位于tests/fixtures/{p1_footprint,lunar_service,eop_prediction,rf_ranging_precision,dro_family_jpl,p2_independent_dop}/之下。它们加强了在机器检查的矩阵(src/verification.rs)中仍为MODELLED的能力背后的证据;它们是回归检查,不是新增的VALIDATED矩阵行,因此本身不会改变机器检查的矩阵计数。此处不重复该计数,因为手工键入的副本会失准:实时的划分见VERIFICATION-MATRIX.md的自动生成表头,它由gen_validation_artifacts根据verification_matrix()写入,并由tests/verification_artifacts_doc_sync.rs固定。