由于Rugged是建立在Orekit和Hipparchus之上的,所有的飞行动力学和数学计算都委托给这两个库,并且使用了完整的可用精度。例如,当计算惯性坐标系和地球坐标系之间的坐标转换时,如果有IERS文件可用,将应用完整的IERS地球定向参数(EOP)修正。这可能导致与一些其他几何校正库产生的结果略有不同,这些库仅限于较旧的基于黄道的范式(日期平均和日期真实),仅应用DUT1和极移校正,并忽略其他地球定向参数修正。与这些库相比,预期的差异是由于在传统的MOD和TOD坐标系中使用的IAU-1980岁差(Lieske)和章动(Wahr)模型缺少修正(对于基于黄道的范式来说是δΔε和δΔψ)。
下图是这个误差的绘图,显示了三个地球点沿着三个规范的X、Y和Z轴的坐标,大致在地球半径处。绘图显示了一个明显的规则信号,其中包含几个谐波,这些谐波对应于这个较旧模型中没有的章动分量。这个误差在80年代很小,但现在(截至2014年)要高得多,大约为3米的数量级。误差在稳步增加。
请注意,当航天器位置的初始数据最初以惯性坐标系给出并且必须转换为地球坐标系时,会出现这个误差。这通常发生在任务分析阶段,因为航天器位置是通过轨道传播计算得出的。然而,在操作系统中并不总是这种情况,因为位置不是通过轨道传播提供的,而是通过机载GPS系统提供的,该系统已经在地球坐标系中工作,并且了解完整的校正。在这些操作情况下,误差较小,因为它仅适用于姿态四元数的转换(通常以惯性坐标系给出,因为它们通常由星敏感器产生)。
由于Rugged委托计算给Orekit,所有的校正(DUT1、极移、LOD、δΔε/δΔψ或δx/δy)都会自动加载和应用。当考虑所有EOP时,最终获得的精度在位置上达到亚毫米级别,与忽略δΔε和δΔψ的库的预期差异在几米级别,Rugged是更准确的。
这些传统模型非常古老,不再被IERS推荐自2003年以来。IERS目前仍提供这些模型的校正,但不能保证他们会无限期地这样做,因为他们现在提供的是相对于更新和更准确的模型的校正。新的坐标系基于非旋转原点范式和不同的岁差和章动模型(IAU-2000/2006),这些模型更准确。相应的校正(δx/δy,不要与xp/yp极移混淆)较小,因为岁差和章动模型比以前的模型更好。这些新模型的更好精度可以通过执行与之前相同类型的绘图来看到,即临时忽略IERS校正。下图显示了结果。
剩余误差非常小,大约为2或3厘米的数量级。Rugged不仅限于传统的MOD和TOD坐标系,还可以使用较新的IERS推荐坐标系。从用户的角度来看,这是完全不可察觉的,因为用户只需通过名称选择一个地球坐标系作为现有的预定义对象,而不必关心转换和修正。实际上,在Rugged级别上,甚至没有岁差、章动或EOP修正的概念。唯一使用的接口是惯性坐标系和地球坐标系的名称以及日期。根据这三个元素,Orekit计算所有的几何变换,包括理论运动模型和IERS修正,从而大大提高了计算效率。
使用较新的岁差和章动模型的一个结果是,即使尚未提供EOP修正(通常用于对图像进行实时分析),仍然可以非常精确地计算图像的几何形状,如前面的图所示。
总之,Rugged可能给出比其他几何校正库稍微更准确的结果,并且与传统坐标系和较新的坐标系兼容。
图像的全局几何取决于航天器的位置和姿态。这两者都可以使用Orekit提供的任何传播器来获取。由于Orekit传播框架的架构,传播可以是从初始状态进行的真实传播(在任务分析和仿真用例中很有趣),也可以是从加载的星历进行的插值。从调用者的角度来看,这两种情况没有区别,因为星历是传播器的一种特殊情况,使用其加载的样本进行插值。Orekit已经提供了对基于CCSDS的星历的支持,如果开发了专用的加载器来解析特定于任务的文件,则可以构建星历列表。
当选择星历插值作为底层传播器时,用户可以指定用于插值的点数,因此可以使用简单的线性模型,但也可以使用更高阶的插值。插值保留原始状态格式,因此如果星历包含圆形轨道参数,则将使用这些参数进行插值,而如果星历包含位置和速度,则将使用位置和速度进行插值。由于速度是位置的时间导数,在这种情况下执行Hermite插值,从而保持导数的一致性。
Orekit实现了专用算法来处理四元数插值。直接多项式插值四个四元数分量在可靠性上不起作用,即使之后使用归一化也不行,尤其是如果只进行线性插值。这种不良行为的第一个原因是仅使用线性模型的非常粗糙的精度。第二个原因是尽管四元数Q1和-Q1表示相同的旋转,但在Q1和Q2或-Q1和Q2之间插值分量会导致完全不同的旋转,并且星历中的四元数通常在某个随机点每个轨道发生一次符号变化。第三个原因是,插值不遵守四元数约束,而是首先违反约束,然后在归一化步骤中尝试恢复。Orekit使用基于Sergeï Tanygin的论文《姿态插值》的方法,稍作修改以使用Malcolm D Shuster的《姿态表示概述》中定义的修改Rodrigues向量,尽管Orekit仍然使用四元数表示姿态(Rodrigues向量仅用于插值)。这些修改避免了π处的奇点。还添加了其他一些改进,以避免2π处的另一个奇点,但这些改进主要适用于自旋稳定的航天器和高旋转速率或姿态跨越超过一整个旋转的大时间跨度的插值,因此在地球观测航天器的情况下可能不会触发这些改进。
然而,不同的插值方案在传统情况下与简单的四元数分量线性插值后归一化相比,只会导致非常小的数值精度差异。这种意外的良好行为的原因是因为在传统的图像处理应用中,四元数的步长通常非常小。线性插值四元数分量的不良行为仅在步长大于一分钟时出现,而在图像处理中很少使用这样的步长。
总之,Rugged依赖于用户选择的传播或插值,姿态插值比四元数分量的线性插值要复杂得多,但在这个层面上不会有任何差异,除了更简单的开发和验证,因为所有的东西都已经在Orekit中实现和验证。
在航天器级别上,由于传感器相对于航天器质心的各种反射和位置,光学路径被折叠起来。根据这个假设,可以使用光学几何定律将路径虚拟展开,并在航天器附近替换为一条直线,其中虚拟像素位置和视线由相对于质心的简单向量定义。由于考虑了位置和方向,这意味着像素与航天器质心并不完全重合,偏移量通常为米级别。例如,如果我们考虑一个长度为3米的航天器,仪器位于前方(+X),如果质心位于航天器中间位置,偏移量将约为1.5米。
这种路径展开在几何加载时由Rugged库上面的接口层完成,使用Rugged视线构建器提供的服务,因此所有后续计算都使用简单的直线进行。当然,如果航天器定义文件不包含位置信息,只考虑各种反射,并且传感器的位置与航天器质心重合。
在构建视线时应用的各种变换可能是时变的,以考虑热弹性效应等缓慢变化。它们的参数也可以在校准阶段进行估计。
在计算像素/地面映射时,所有中间的几何计算(姿态、轨道、岁差、章动、地球自转、极移)都被合并为几个准确的Transform实例。然后,这些变换被应用了几千次,将每个像素的视线转换为地球坐标系。之所以进行这样的计算调度,是因为惯性坐标系和地球坐标系之间的变换计算非常耗时,而且只取决于日期,因此将其从像素循环中分离出来可以大大提高速度。由于Orekit提供了一种将多个Transform实例组合在一起并稍后应用于位置和方向的方法,因此通过还包括所有转换直到航天器坐标系,可以节省很多计算步骤。
由于观测卫星距离地面约800公里,它们所观察的地面点的光线在到达传感器之前大约提前了2.7毫秒离开地球。这意味着必须在比航天器位置更早的时间计算出地面点的精确位置。预期的差异可以预测为光线传播时间内地球的旋转,赤道上大约为1.2米,东西方向。这种效应通过应用所谓的光程校正来补偿。
对于每个像素,延迟是根据旅行时间计算的,对于朝向天顶方向的像素,旅行时间较短,而对于朝向视场边缘的像素,旅行时间较长。由于Orekit框架变换自动包括变换的局部泰勒展开,因此在这2.7毫秒的延迟期间补偿差分地球自转可以在不重新计算完整的岁差/章动模型的情况下完成,因此在应用此补偿时仍然可以节省计算。
光的畸变是另一个必须考虑的现象。光的畸变是当从一个自身在运动的传感器看到时,入射光的方向的表观偏移。这个偏移与光源的运动无关,只取决于到达时传感器的当前速度。它是光速和传感器速度的组合。这个组合可以简单地用经典力学计算,或者用稍微复杂一些的相对论效应方程计算。由于航天器速度有限,经典力学足以进行准确的校正。这种效应很大,对于经典的地球观测任务,在地面上投影后可以对应到最多20米的偏移。
如下图所示,从航天器的角度来看,来自地面点的光似乎来自真实点的“前方”的一个虚构点。
值得一提的是,光的畸变和光时间修正可以被视为类似现象的两个方面,即使在经典(非相对论)物理中也是如此。这取决于我们观察各个元素的参考系。如果光源移动而观察者静止(即我们在观察者参考系中进行计算),那么只有光时间修正,光的畸变为零。如果光源静止而观察者移动(即我们在光源参考系中进行计算),那么只有光的畸变(这是光的畸变首次在天文学背景下被实验性地发现的方式,考虑到地球相对于天文学家观测星星的运动),光时间修正为零。在Rugged上下文中,光源和观察者都相对于我们进行校正计算的惯性参考系移动:光源由于地球自转而移动,观察者由于航天器轨道而移动。因此,在Rugged上下文中,这两个现象都存在并且应该进行补偿。其他一些系统可能只考虑这两个现象中的一个,并通过在地球或航天器参考系中计算校正并将另一部分的运动视为地球和航天器的相对运动来产生准确的结果:这实际上只是一个观点问题。
Rugged库中同时应用了光时间修正和光的畸变修正,以提高精度,但用户可以选择忽略其中的任何一个。忽略这些重要的修正的一个用例是用于验证目的,并与不考虑这些修正的其他库进行比较。这个用例在定义上仅限于验证阶段,不适用于操作系统。忽略光时间修正和光的畸变修正的另一个用例是当明确期望在图像处理链的后续阶段对这种效应进行补偿时,最有可能使用事后多项式模型。这种用例可能出现在操作产品中。然而,最好尽早补偿这些效应,因为它们可以以可忽略的计算开销计算到完全精度。
一旦在地球坐标系中知道了像素的视线,使用OneAxisEllipsoid的实例计算其与参考椭球体的交点就很简单了。Orekit库将此交点计算为椭球体表面上的NormalizedGeodeticPoint实例。
视线是在笛卡尔三维空间中的一条直线,一旦转换为大地坐标(纬度、经度、高度),它就不再是一条直线了。假设视线在这个空间中仍然是一条直线,并且可以通过计算仅两个点来定义,这引入了另一个误差,该误差与视线垂直并且在中间点处达到最大值。这个假设是一个平面体假设,即它在局部上将椭球体近似为其切平面。该误差是由于大地空间中真实视线的弯曲而产生的弓高。
这个误差取决于视线与当地垂直线的夹角。对于一个夹角为90度(即纯天顶线)的视线,误差为零,并且随着夹角减小而增加。对于几乎切线的观测,它可以达到巨大的值(数百米或更多)。上图显示了误差的幅度,作为夹角和观测方位角的函数。它是在中纬度(大约54度北纬,在波兰)的地面点上计算的,并使用视线段的两个基准点,分别位于8000米高度和-400米高度。
当使用Duvenhage算法(见下一节)进行DEM交点计算时,Rugged库完全计算了视线在数字高程模型中的遍历形状。为了测试目的,还提供了另一种假设平面体的算法版本(即它认为视线在纬度/经度/高度坐标中是一条直线),但不建议使用它。由于正确使用椭球体形状而引起的计算开销大约为3%,因此为了性能而忽略它是无关紧要的。
下表总结了在Rugged库中进行的误差补偿,这些补偿在其他几何校正库中不存在:
来源 | 幅度 | 位置 | 备注 |
---|---|---|---|
岁差和章动模型的δΔε和δΔψ校正 | > 3m | 水平偏移 | 最新的岁差和章动模型也可用,如果位置已经在地球坐标系中,只需转换姿态,误差会小得多 |
四元数插值 | 可忽略 | 视线方向 | 对于大于1分钟的步长,效果很重要 |
仪器位置 | 1.5m | 沿轨道 | 与姿态耦合 |
光行时校正 | 1.2m | 东西方向 | 像素相关,如果在处理链的其他地方进行了补偿,可以关闭 |
光的畸变 | 20m | 沿轨道 | 取决于航天器速度,如果在处理链的其他地方进行了补偿,可以关闭 |
平面体 | 0.8m | 视线横向 | 对于大视场,误差会大大增加,可以关闭,但不推荐 |
大气折射 | < 2m | 水平偏移 | 适用于多层大气模型 |