机器翻译,未经母语人士审校。以英文版为准。

低地球轨道(LEO)导航在GitHub上编辑来源:docs/LEO-NAVMSG.md

LEO导航电文

leo-navmsg场景类型构建低地球轨道(LEO)定位、导航与授时(PNT)卫星的广播星历和时钟电文,并回答电文设计者会问的问题:一条电文能覆盖多长时间,每多一个参数能换来什么,电文在过境中途变化时用户会看到什么,以及要用多少比特才能把它精确到厘米。

它与具体系统无关。任意轨道、任意载波和四种星历模型中的任何一种,都可在完全没有预设的情况下运行;具名预设是可选数据(见预设)。

用kshana example <name>打印一个内置示例(每次调用一个名称),并用kshana scenarios/<name>.toml运行:leo-navmsg-fit-interval-trade、leo-navmsg-model-comparison、leo-navmsg-midpass-update和leo-navmsg-encode-decode。该类型也是leo-pnt-chain类型(LEO-PNT.md)的电文阶段,并且是leo-focus-data-services测评活动的成员,该活动组合四种电文配置,并报告每种配置的帧长(146、154、159和171字节)。

代码:src/leo_navmsg/ — elements.rs(记录与用户算法)、truth.rs(真值轨道和时钟)、fit.rs(拟合器)、sisre.rs(空间信号测距误差)、services.rs(电离层和协调世界时(UTC))、codec.rs(二进制格式)、text.rs(类Receiver Independent Exchange Format(RINEX)和逗号分隔值(CSV)导出)、presets/(每个预设一个文件)、mod.rs(该类型)。

电文携带的内容#

部分 内容
辅助 航天器标识符(SVID)、数据期号(IOD)、频段标识符、信号健康状态(Galileo约定:0正常、1停止服务、2扩展运行、3测试中)
同步 周数、发射的周内时(TOW),以及二阶钟差多项式af0 + af1·(t − toc) + af2·(t − toc)²
星历 下列四种模型之一
其他服务 一组Klobuchar广播电离层参数、含五个风暴标志的Galileo NeQuick-G系数ai0, ai1, ai2,以及系统时到UTC的参数A0, A1, ΔtLS, t0t, WNot, WNLSF, DN, ΔtLSF

星历模型#

代码 模型 参数
kepler16 Galileo开放服务空间信号接口控制文件(OS SIS ICD)的开普勒参数集:√A, e, i0, Ω0, ω, M0, Δn, Ω̇, i̇, Cuc, Cus, Crc, Crs, Cic, Cis, toe 16
kepler-rac 同上,另加沿轨、横向和径向(RAC)修正多项式a0…、c0…、r0…,其自变量为τ = tk / tau_s,系数单位为米,tau_s为不小于拟合区间一半的二的幂(随电文发送),阶数由rac_degrees设定(默认为7、5、6) 默认为16 + 21,再加时间尺度
liu22 Liu、Su、Xie、Zhou和Qu的22参数模型(2025,Remote Sensing 17(16):2894,doi 10.3390/rs17162894):即16个参数加ȧ, ṅ, Crs3, Crc3, Crs1, Crc1 22
ecef-poly ATOMIC(Autonomous Time and Orbit Determination for Microsatellite Constellations,微型卫星星座自主时间与定轨)“零钟”模型:每个轴在τ = (t − t_ref) / 64 s中取地心地固(ECEF)多项式(默认阶数6),因卫星钟被校准到系统时,故没有钟项(InsideGNSS) 默认为22

用户算法(elements::sat_state)即Galileo ICD的流程(开普勒方程、二次谐波修正、地固升交点),随后对kepler-rac沿开普勒轨道自身的坐标系施加三个多项式:径向沿所求位置方向,横向沿由修正后的轨道倾角和升交点得到的轨道法向,沿轨方向补全三轴。钟项加上ICD的相对论项F·e·√A·sin E;对ecef-poly,则由多项式及其导数取一般形式−2 r·v / c²。

Liu等人的各项遵循论文的用户算法(第2.2节,式1-7):A = A0 + ȧ·tk、n = √(μ/A0³) + Δn + ṅ·tk(0.30之前的版本沿用美国全球定位系统(GPS)民用导航的约定½·ṅ·tk,因此其所写出的ṅ是论文值的两倍),以及加到半径上的Crs1·sin Φ + Crc1·cos Φ + Crs3·sin 3Φ + Crc3·cos 3Φ,Φ为未修正的纬度幅角。ṅ的尺度约定转录自论文的式1;与论文在真实轨道上的比较不依赖于它(对ṅ乘以系数 ½ 不会改变任何拟合数值),因此所传nDot值的含义在该处未经独立核对。

有两处解读属于Kshana自身,并已如实说明:

  • RAC坐标系和τ = tk / tau_s归一化。没有任何公开文件为广播电文定义LEO修正坐标系。
  • 零钟电文的钟差整体为零:假定校准环路将表观钟(含相对论项)保持在系统时。

拟合器#

truth.rs用定步长四阶Runge–Kutta法积分轨道,所用坐标系通过一次旋转θ(t) = θ0 + Ω̇e·t转为地固轴,与广播用户算法所用的单次旋转相同。重力取二体(gravity_degree = 0)、带谐项J2至J6(2至6),或地球重力场模型2008(EGM2008)的7至70阶次,其田谐项带有使LEO拟合困难的短周期特征。阻力为可选项(静态指数密度)。钟为自由运行(偏差、漂移、漂移率和白频率噪声,按规定的一秒阿伦偏差给出,另加周期性相对论项)或受控(一阶Gauss–Markov残差)。

fit.rs在非奇异根数(e·cos ω、e·sin ω、λ0 = M0 + ω)上用Levenberg–Marquardt法拟合开普勒参数集:LEO轨道近乎圆形,因此仅凭ω与M0几乎无法区分。拟合从toe时刻的密切状态和J2升交点进动率出发。弱的零中心先验约束短弧无法分辨的变化率和谐波;在1 cm观测权重下,它们仅在这些零空间方向上起作用。liu22拟合则采用论文第2.3节的起点和估计器:所有修正项从零开始,无先验(普通最小二乘),并保留论文的100次迭代上限。它按Kshana自己的参数收敛规则停止,即每个参数步长均小于其形式标准差的1e-3;论文则在RMS变化小于0.1 mm时停止。随后用线性最小二乘将RAC多项式拟合到沿轨/横向/径向残差上,并将钟多项式拟合到真值钟差减去用户之后会加回的相对论项。

由默认值体现的一项发现:经最小二乘开普勒拟合后,残差按构造即为16个参数无法张成的部分,因此它在窗口内振荡(每个分量有数次过零),而非漂移。只有当修正多项式的阶数超过开普勒参数集已张成的阶数时,它才能将其去除:沿轨7、横向5和径向6可将15分钟的厘米级残差降到约一毫米,而较低的横向阶数几乎去除不了什么(横向残差关于窗口中心为奇函数)。以其他方式得到开普勒部分的系统,残差形状不同,所需阶数也随之而定。Celeste预设自带的修正阶数(低于这些;仅存在于预设文件src/celeste_iod.rs中)在此运行于Kshana的最小二乘基础之上,因此其横向项在本引擎中贡献很小:这是关于Kshana拟合器的陈述,而非关于任何真实系统。toe和toc为整秒,因为二进制格式即如此携带。

每条电文在其拟合窗口中央的一段时间内使用(第一张权衡表使用整个窗口)。空间信号测距误差(SISRE)各数值衡量的是电文相对于其拟合所依据的真值的表示误差,以均方根(RMS)和跨度内的最大值给出。真实地面段或星载段在其上叠加的定轨与轨道预报误差未建模。

空间信号测距误差#

sisre.rs采用Montenbruck、Steigenberger和Hauschild的全球平均SISRE(2018,Advances in Space Research 61(12):3020–3038,doi 10.1016/j.asr.2018.03.041):

SISRE_orb = sqrt( w_R² R² + w_AC² (A² + C²) )
SISRE     = sqrt( (w_R R − c·dT)² + w_AC² (A² + C²) )

权重是对均匀分布在可见地球球冠上的用户取cos² η和½ sin² η的平均值,其中η为视线在卫星处的天底角,按该轨道自身的半径和高度截止角计算。在0°截止角下,该计算复现了论文中中地球轨道(GPS 0.98和1/49,GLONASS 1/45,Galileo 1/61,BeiDou 1/54)和地球静止轨道(0.99和1/126)的表值:这就是VALIDATED检验。在LEO,同样的平均给出

高度 w_R 1 / w_AC² 地平天底角
320 km 0.384 2.35 72.2°
510 km 0.459 2.53 67.8°
550 km 0.472 2.57 67.0°
786 km 0.536 2.81 62.9°
1080 km 0.597 3.11 58.8°
1336 km 0.638 3.37 55.8°

因此,看到卫星远离天底的LEO用户,对沿轨和横向误差的感受远大于中轨用户。

分析#

analysis = [...]可选取这四项中的任意几项(默认全部)。

拟合区间权衡#

[trade]设定跨度、拟合区间、更新周期和模型。scenarios/leo-navmsg-fit-interval-trade.toml(550 km,97.6°,EGM2008至20阶并含阻力,30分钟的电文)在使用周期等于拟合区间时给出:

模型 拟合区间 SISRE轨道RMS SISRE轨道最大值 含钟差的SISRE RMS 径向 / 沿轨 / 横向RMS
kepler16 60 s 0.041 cm 0.179 cm 0.069 cm 0.09 / 0.01 / 0.00 cm
kepler16 120 s 0.032 cm 0.160 cm 0.079 cm 0.06 / 0.01 / 0.01 cm
kepler16 180 s 0.093 cm 0.540 cm 0.134 cm 0.18 / 0.06 / 0.00 cm
kepler16 300 s 0.310 cm 1.033 cm 0.329 cm 0.09 / 0.49 / 0.02 cm
kepler16 450 s 1.690 cm 7.542 cm 1.696 cm 0.72 / 2.65 / 0.04 cm
kepler16 600 s 2.875 cm 10.219 cm 2.866 cm 1.72 / 4.42 / 0.26 cm
kepler16 900 s 9.345 cm 34.032 cm 9.349 cm 6.46 / 14.14 / 0.91 cm
kepler-rac 60 s 0.000 cm 0.000 cm 0.057 cm 0.00 / 0.00 / 0.00 cm
kepler-rac 120 s 0.000 cm 0.000 cm 0.074 cm 0.00 / 0.00 / 0.00 cm
kepler-rac 180 s 0.000 cm 0.001 cm 0.090 cm 0.00 / 0.00 / 0.00 cm
kepler-rac 300 s 0.004 cm 0.014 cm 0.106 cm 0.00 / 0.00 / 0.01 cm
kepler-rac 450 s 0.037 cm 0.176 cm 0.127 cm 0.05 / 0.01 / 0.04 cm
kepler-rac 600 s 0.214 cm 0.643 cm 0.229 cm 0.28 / 0.09 / 0.26 cm
kepler-rac 900 s 1.015 cm 3.695 cm 1.062 cm 1.52 / 0.70 / 0.91 cm

在300 s拟合下,改变新电文接替的频繁程度:

模型 更新周期 SISRE轨道RMS SISRE轨道最大值
kepler16 30 s 0.314 cm 0.850 cm
kepler16 60 s 0.288 cm 0.859 cm
kepler16 150 s 0.219 cm 0.830 cm
kepler16 300 s 0.310 cm 1.033 cm
kepler-rac 30 s 0.004 cm 0.009 cm
kepler-rac 60 s 0.004 cm 0.009 cm
kepler-rac 150 s 0.004 cm 0.010 cm
kepler-rac 300 s 0.004 cm 0.014 cm

16参数开普勒参数集的误差从60 s时的0.04 cm退化到900 s时的9.35 cm:带每圈两次谐波的单一开普勒参数集,无法在几分钟以上的时间内跟随LEO弧段中较高频的重力项和阻力,其最小二乘残差在窗口内振荡。沿轨/横向/径向多项式(阶数7、5、6)吸收了剩余部分:900 s时为1.01 cm,600 s时为0.21 cm。在最短的区间上,开普勒数值低于一毫米,且不再严格有序(此时拟合受条件数而非模型限制)。

模型比较#

scenarios/leo-navmsg-model-comparison.toml在同一轨道上以1、5和10分钟运行四种模型,并给出参数个数和Kshana编码下的星历与钟差比特数:

模型 拟合区间 参数 星历 + 钟差比特数 SISRE轨道RMS 含钟差的SISRE RMS
kepler16 60 s 16 570 0.022 cm 0.049 cm
kepler16 300 s 16 570 0.230 cm 0.260 cm
kepler16 600 s 16 570 3.061 cm 3.071 cm
kepler-rac 60 s 37 1045 0.000 cm 0.044 cm
kepler-rac 300 s 37 1045 0.005 cm 0.120 cm
kepler-rac 600 s 37 1045 0.160 cm 0.208 cm
liu22 60 s 22 730 0.014 cm 0.046 cm
liu22 300 s 22 730 0.074 cm 0.142 cm
liu22 600 s 22 730 0.258 cm 0.290 cm
ecef-poly(零钟) 60 s 22 750 0.000 cm 28.784 cm
ecef-poly(零钟) 300 s 22 750 0.005 cm 28.784 cm
ecef-poly(零钟) 600 s 22 750 0.561 cm 28.774 cm

零钟一行是对照以0.24 m残差校准的钟来评分的(ATOMIC的数值),其他各行则对照其所拟合的自由运行钟。

Liu等人2025,SISRE与高度的关系(MODELLED)。同一场景在论文的五个高度上,按各卫星的轨道倾角,对20分钟弧段拟合Kshana的22参数模型:

卫星 高度 轨道倾角 Liu等人2025 Kshana(仅轨道RMS) 比值
GRACE-A 320 km 89.00° 8.88 cm 4.25 cm 0.48
GRACE-C 475 km 89.00° 6.21 cm 2.87 cm 0.46
Sentinel-2A 786 km 98.57° 2.87 cm 2.20 cm 0.77
HY-2A 966 km 99.34° 2.11 cm 1.25 cm 0.59
Sentinel-6A 1336 km 66.04° 0.75 cm 0.51 cm 0.67

这不是一次验证。论文拟合的是所述卫星的真实精密科学轨道(含其完整的重力、阻力和非引力历史);Kshana拟合的是自己积分出的轨道,按上文所述计算新增的六个参数,并使用自己的SISRE权重。该比较显示趋势和量级。在论文所拟合的同一批真实轨道上的比较见tests/leo_navmsg_fit_real_orbit_oracle.rs(自0.30起,22参数拟合在那里于预先登记的系数1.5之内与之吻合,无论是论文所用的日期还是八个保留日)。

过境中更新#

[midpass]放置一名用户(默认45° N,10° E),在search_s内找到高于截止角的最高一次过境,并每隔update_period_s安排电文。在过境内的每次切换处,它报告位置跳变、钟差跳变、用户的伪距跳变(新电文减旧电文)、任何可见用户可能看到的最大跳变(天底锥内的闭式解)、前后的测距误差,以及对照threshold_m的PASS或FAIL。scenarios/leo-navmsg-midpass-update.toml(300 s拟合,每150 s更新):

一天中最高的一次过境达到43.7°,持续455 s。其切换如下:

切换 仰角 位置跳变 钟差跳变 用户测距跳变 最差几何跳变
IOD 270 → 271 12.7° 0.07 mm 0.19 mm -0.17 mm 0.27 mm
IOD 271 → 272 37.4° 0.14 mm 0.14 mm -0.24 mm 0.27 mm
IOD 272 → 273 28.2° 0.27 mm -0.22 mm 0.35 mm 0.48 mm

最大用户测距跳变0.35 mm,对照5 cm阈值:PASS。

编码与解码#

scenarios/leo-navmsg-encode-decode.toml对三条电文中的第一条编码、解码,检查CRC并拒绝一份损坏的副本,打印量化预算,并写出和读回RINEX风格的块与CSV表:

  • 帧:171字节(有效载荷1310比特,其中1045比特为星历和钟差),24位循环冗余校验(CRC-24Q)0x19105F;
  • 任一字段的最大半步长影响:af0,0.545 mm;
  • 量化后的整条电文:位置与精确电文相差在1.126 mm以内,钟差在0.185 mm以内;SISRE精确值0.113 cm,解码值0.129 cm;
  • 有一个比特翻转的帧被拒绝:true;
  • RINEX风格往返误差在5.0e-06 m以内,CSV往返误差在0.0e+00 m以内。

平台无关性#

帧是传输的整数,因此无论场景在何处、以何种方式运行,它都必须是同样的整数:任何操作系统上的原生二进制、调试构建或发布构建,以及浏览器中的WebAssembly(WASM)构建。有三件事成为障碍。宿主数学库的正弦、余弦、反正切和指数函数不要求正确舍入,在不同宿主间最末一位有差异。macOS上的优化构建对同一自变量的正弦和余弦取自系统的组合例程,其结果并不总是等于单独正弦的值,因此调试构建与发布构建也不同。而常用的正态采样器在其罕见分支中调用宿主的指数和对数。拟合会把这么小的差异变成不同的量化字段。因此整个种类(真值轨道与钟、拟合、用户算法、空间信号测距误差(SISRE)、编解码器)通过src/portable_math.rs用纯Rust的libm crate计算每一个此类函数,整数幂写成显式乘积,正态偏差则对生成器的原始输出用极坐标法得到。leo_navmsg::tests::the_encoded_frame_is_the_same_bytes_on_every_platform固定了下文编码与解码场景的171字节帧,以及每种星历模型的一个校验值;调试构建、发布构建和WASM构建对全部五个内置leo-navmsg场景给出逐字节相同的结果文档。

二进制格式#

这是Kshana自己有文档记载的编码。它携带已发表的LEO导航电文描述所列出的各组成部分,以Galileo ICD的字段集为蓝本。它不是 Celeste或任何其他系统的比特布局:这些都未公开。

帧:前导码0xA7(8比特),版本1(4),模型(4:1 kepler16,2 kepler-rac,3 liu22,4 ecef-poly),以字节计的有效载荷长度(12),补零至整字节的有效载荷,以及对此前每个字节计算的CRC-24Q(24位循环冗余校验,24比特)。CRC-24Q是海事无线电技术委员会标准RTCM 10403和Galileo ICD的校验(多项式0x1864CFB,初值0);该代码复现了123456789的目录校验值0xCDE703,以及RTCM 10403 1005型电文示例帧的校验字节(VALIDATED)。

Galileo ICD的步长是为中地球轨道选定的,对厘米级的LEO电文过于粗糙:Crs步长2⁻⁵ m(3.1 cm),Cuc 2⁻²⁹ rad(LEO半径处1.3 cm),角度2⁻³¹ semicircle(1.0 cm),af0 2⁻³⁴ s(1.7 cm)。Kshana保留ICD的单位和semicircle约定,细化步长使每个字段的半步长误差在15分钟窗口内低于位置或测距的1 mm,并加宽字段以保留LEO拟合所需的范围:

块 字段 比特 步长 单位
辅助与同步 SVID 8 1 -
辅助与同步 IOD 10 1 -
辅助与同步 Band 4 1 -
辅助与同步 Health 2 1 -
辅助与同步 WeekNumber 13 1 周
辅助与同步 ToW 20 1 s
辅助与同步 Flags 4 1 -
钟(标志位0) toc 20 1 s
钟(标志位0) af0 34 2^-38 s
钟(标志位0) af1 28 2^-50 s/s
钟(标志位0) af2 20 2^-62 s/s^2
开普勒(模型1-3) toe 20 1 s
开普勒(模型1-3) M0 36 2^-35 semicircle
开普勒(模型1-3) e 32 2^-33 -
开普勒(模型1-3) sqrtA 36 2^-23 m^0.5
开普勒(模型1-3) Omega0 36 2^-35 semicircle
开普勒(模型1-3) i0 36 2^-35 semicircle
开普勒(模型1-3) omega 36 2^-35 semicircle
开普勒(模型1-3) deltaN 29 2^-43 semicircle/s
开普勒(模型1-3) OmegaDot 29 2^-43 semicircle/s
开普勒(模型1-3) iDot 22 2^-43 semicircle/s
开普勒(模型1-3) Cuc 26 2^-34 rad
开普勒(模型1-3) Cus 26 2^-34 rad
开普勒(模型1-3) Crc 26 2^-10 m
开普勒(模型1-3) Crs 26 2^-10 m
开普勒(模型1-3) Cic 26 2^-34 rad
开普勒(模型1-3) Cis 26 2^-34 rad
沿轨/横向/径向修正(模型2) degA 3 1 -
沿轨/横向/径向修正(模型2) degC 3 1 -
沿轨/横向/径向修正(模型2) degR 3 1 -
沿轨/横向/径向修正(模型2) racTauExp 4 1 log2(s)
沿轨/横向/径向修正(模型2) a_k, c_k, r_k 22 2^-14 m
Liu等人2025附加项(模型3) aDot 26 2^-20 m/s
Liu等人2025附加项(模型3) nDot 30 2^-58 semicircle/s^2
Liu等人2025附加项(模型3) Crs3 26 2^-10 m
Liu等人2025附加项(模型3) Crc3 26 2^-10 m
Liu等人2025附加项(模型3) Crs1 26 2^-10 m
Liu等人2025附加项(模型3) Crc1 26 2^-10 m
ECEF多项式(模型4) tref 20 1 s
ECEF多项式(模型4) degP 4 1 -
ECEF多项式(模型4) x0, y0, z0 38 2^-11 m
ECEF多项式(模型4) x_k, y_k, z_k (k >= 1) 34 2^-12 m
Klobuchar(标志位1) alpha0 8 2^-30 s
Klobuchar(标志位1) alpha1 8 2^-27 s/semicircle
Klobuchar(标志位1) alpha2 8 2^-24 s/semicircle^2
Klobuchar(标志位1) alpha3 8 2^-24 s/semicircle^3
Klobuchar(标志位1) beta0 8 2^11 s
Klobuchar(标志位1) beta1 8 2^14 s/semicircle
Klobuchar(标志位1) beta2 8 2^16 s/semicircle^2
Klobuchar(标志位1) beta3 8 2^16 s/semicircle^3
NeQuick-G(标志位2) ai0 11 2^-2 sfu
NeQuick-G(标志位2) ai1 11 2^-8 sfu/deg
NeQuick-G(标志位2) ai2 14 2^-15 sfu/deg^2
NeQuick-G(标志位2) SF1-5 5 1 -
UTC(标志位3) A0 32 2^-30 s
UTC(标志位3) A1 24 2^-50 s/s
UTC(标志位3) dtLS 8 1 s
UTC(标志位3) t0t 8 3600 s
UTC(标志位3) WNot 8 1 周
UTC(标志位3) WNLSF 8 1 周
UTC(标志位3) DN 3 1 天
UTC(标志位3) dtLSF 8 1 s

超出其字段范围的值会被拒绝,而不是回绕。这些范围是通过对300至2000 km、倾角0°至140°以及不超过20分钟拟合区间的拟合进行编码来检验的:deltaN和OmegaDot之所以宽,是因为在近赤道轨道上升交点定义不佳,拟合会把纬度幅角的J2漂移分摊给二者;aDot和nDot之所以宽,是因为20分钟的22参数拟合会吸收一部分半长轴的短周期振荡。自0.30起,22参数拟合为论文的无先验普通最小二乘,此时赤道800 km的拟合需要约6.3e-10 semicircle/s^2的nDot,因此其刻度由2^-60改为2^-58。kepler-rac的7阶沿轨修正可容纳至15分钟的22位系数范围;更长的拟合可能超出该范围,随即被拒绝。quantisation_budget对每个星历和钟差字段报告,半步长变化在使用周期内造成的最大位置和测距变化,以及量化后整条电文的变化。

文本导出#

RINEX 4.02未定义LEO导航记录(其系统字母为G、R、E、J、C、I和S;国际GNSS服务(IGS)RINEX 4.02)。text.rs写出的块借用了RINEX 4的形态:一个> EPH记录头,一行带三个钟项的卫星和历元,以及每行四个D19.12字段的广播轨道行;它是有文档记载的Kshana扩展:系统字母L,记录类型KP16、KRAC、LU22、APOL,以及三行说明这一点的头部注释。LEO轨道在RINEX-4风格导航记录中的先行做法:arXiv 2401.17767。

> EPH L04 KRAC
L04 yyyy mm dd hh mm ss  af0 af1 af2
     IOD      Crs      deltaN   M0
     Cuc      e        Cus      sqrtA
     toe      Cic      Omega0   Cis
     i0       Crc      omega    OmegaDot
     IDOT     Band     Week     Health
     txTOW    clock    degA     degC
     degR     tau_s    a0       a1         then the rest of a_k, c_k and r_k, four per line

CSV表每行携带一条kepler16或kepler-rac电文。默认列使用Galileo ICD的名称(SVID, IOD, Band, WeekNumber, ToW, Health, toc, af0, af1, af2, toe, M0, sqrtA, e, deltaN, Omega0, OmegaDot, iDot, i0, omega, Crc, Crs, Cic, Cis, Cuc, Cus, a0…, c0…, r0…, racTau);csv_schema则改为选用某个预设的拼写。两种格式均可读回。

电离层与UTC#

  • Klobuchar:引擎的L1模型(gnss_sim::klobuchar_delay_m,已对照RTKLIB核对)按一阶(f_L1 / f)²定律缩放到该载波。
  • NeQuick-G:系数随电文传输,effective_ionisation_level针对修正的磁倾纬度μ返回Az = ai0 + ai1·μ + ai2·μ²,并遵循该算法的规则(全零系数给出63.7太阳流量单位,sfu;结果限制在[0, 400] sfu内)。将Az转为延迟的NeQuick电子密度模型及其斜路径积分未实现。
  • 位于几百千米高度的卫星在电离层之内飞行。两种广播模型都未考虑卫星上方的电子含量,也未施加相应的改正。
  • UTC:system_to_utc应用Galileo ICD §5.1.7的三种情形(闰秒事件之前、距其六小时之内和之后);插入的一秒读作86400。

预设#

预设是数据,每个一份文件,位于src/leo_navmsg/presets/之下,并附其来源。除Celeste场景外,引擎和所有内置场景无需它们即可运行。

标注 来源 轨道 载波 电文模型
xona-pulsar PUBLIC, arXiv 2509.19551 1080 km, 53° X1 1593.3225 MHz 未公布
xona-pulsar-0 PUBLIC, arXiv 2509.19551 520 km, 97° X1 未公布
iridium PUBLIC, RNTF报告,星座描述 781 km, 86.4° 1621 MHz(1616–1626 MHz频段) 无广播
starlink PUBLIC, NAVIGATION 72(1),星座描述 550 km, 53° Ku频段,中频段取值(代表性) 无(机会信号)
centispace PUBLIC, Sensors 2023, Satellite Navigation 2026 700 km, 55° 接近B1(来源中已被遮蔽;以L1代替) 未公布
cband-generic REPRESENTATIVE 600 km, 97.8° 5020 MHz(RNSS C频段中心) 未公布
atomic PUBLIC, InsideGNSS 500 km(代表性) L1(代表性) ecef-poly,阶数6,60 s,每30 s刷新,零钟,0.24 m校准残差
celeste-iod WORKSHOP与PUBLIC 510 km, 97.4° 1191.795 MHz kepler-rac,阶数和记录间隔见预设文件

RNSS指无线电导航卫星业务(radionavigation-satellite service);RNTF指Resilient Navigation and Timing Foundation(韧性导航与授时基金会)。

Celeste IOD。欧洲航天局(ESA)的Celeste在轨演示(IOD)预设是唯一使用了在ESA导航创新与支持计划(NAVISP)LEO-PNT研讨会(2026)上展示的材料的预设:电文结构(Galileo开普勒参数集加沿轨/横向/径向修正多项式、钟多项式、SVID、健康状态、IOD、电离层和UTC参数)、记录间隔和CSV列名。轨道(510 km,近极地太阳同步)和载波来自文件中所引的公开来源。Celeste的比特布局未公开,也未复现;Celeste的后续阶段和欧盟(EU)LEO-PNT系统可能有所不同。所有源自研讨会的数值都位于src/celeste_iod.rs的navmsg模块中,由scenarios/leo-navmsg-celeste-iod.toml使用。预设如何不予发布:引擎中每一个源自研讨会的数字都存放于一个文件src/celeste_iod.rs中,build.rs仅在该文件存在时才将其编译进来,并存放于仅限仓库的场景scenarios/*celeste-iod*.toml中。删除该文件和这些场景即不再发布该预设,无需修改任何源码;其他所有测试、参考基准(oracle)和场景无需它也能运行,而README中的场景文件数仍把未予发布的文件计入在内。

验证#

行 标签 参考基准
SISRE权重 VALIDATED Montenbruck等人2018表(GPS、GLONASS、Galileo、BeiDou、地球静止轨道)
Galileo ICD用户算法 VALIDATED RTKLIB eph2pos对四组真实Galileo广播星历,每轴1 mm(tests/leo_navmsg_reference.rs)
CRC-24Q VALIDATED 目录校验值0xCDE703;RTCM 10403 1005示例帧
拟合器与SISRE权衡 MODELLED 二体真值恢复到1 mm;修正后的J2–J6拟合到1 mm;随区间单调增长
过境中连续性 MODELLED 跳变恒等式;闭式锥界对照采样
二进制格式与预算 MODELLED 往返;每个字段的半步长小于1 mm
RINEX风格与CSV MODELLED 往返
Liu等人2025 22参数模型与拟合 VALIDATED 四颗卫星的TU Graz ITSG精密轨道对照论文的表4、5、6和8:沿轨、横向、径向和SISRE之比在论文所用日期为0.755至1.138,在八个保留日为0.683至1.186,均在1.5倍之内(tests/leo_navmsg_fit_real_orbit_oracle.rs)
ATOMIC零钟多项式与五高度表 MODELLED ATOMIC的事实取自InsideGNSS;已发表的Liu表与Kshana的积分轨道拟合并列,未设为固定检验值
电离层与UTC MODELLED ICD闭式;已对照RTKLIB核对的Klobuchar模型

局限#

  • SISRE仅为表示误差:不含定轨或轨道预报误差。
  • 真值是Kshana的一次积分(无第三体、太阳辐射压或潮汐),而非某颗真实卫星的精密轨道。
  • 二进制格式和RINEX风格的块属于Kshana自己。
  • NeQuick-G仅被携带,未积分为延迟;对位于电离层之内的卫星不作改正。
  • 与Liu等人的比较在轨道、参数解读和权重上均有不同。