坐标系

org.orekit.frames包提供了处理坐标系和坐标系之间转换的类。

坐标系介绍

坐标系树

Frame类表示一个单独的坐标系。所有的坐标系都组织成一个树状结构,有一个根坐标系。

坐标系树

每个坐标系由一个将其与一个特定坐标系(即其父坐标系)连接起来的TransformProvider定义。这个定义变换提供者可以提供固定的或时间相关的变换。例如,与地球相关的坐标系ITRF由于岁差/章动、地球自转和极移而依赖于时间。预定义的根坐标系是唯一一个没有父坐标系的坐标系。

对于每对坐标系,从一个坐标系到另一个坐标系有一条最短路径。

变换

Transform类表示两个坐标系之间的完整变换。它管理组合的旋转、平移和它们的一阶时间导数以处理运动学。变换可以将位置、方向和速度从一个坐标系转换到另一个坐标系,包括速度合成效应。

变换用于:

  • 定义从父坐标系到子坐标系的关系。这个变换(下图中的tdef)存储在子坐标系中。

  • 合并在从一个坐标系到另一个坐标系的树上遍历时遇到的所有单独的变换,无论它们之间有多远(下图中的trel)。

坐标系树节点之间的变换

任意两个坐标系之间的变换是通过合并单独的变换来计算的,这些变换在它们之间的最短路径上进行遍历。遍历/合并操作由库透明地处理。用户只需要选择坐标系、提供日期并请求变换,而不需要知道坐标系之间的关系。

变换被定义为运算符,当应用于在旧坐标系中表示的向量的坐标时,提供在新坐标系中表示的相同向量的坐标。当我们说一个变换t是从坐标系A到坐标系B时,我们的意思是如果某个绝对向量(比如远处星星的方向)在坐标系A中的坐标是uA,在坐标系B中的坐标是uB,那么uB=t.transformVector(uA)。变换提供了特定的方法用于向量转换、仿射转换,可以有或没有一阶导数(即角速度和线速度的合成)。

变换可以使用Hermite插值进行插值,即根据需要考虑导数。

预定义参考系

FramesFactory类提供了几个预定义的参考系。

用户可以使用各种静态方法来获取它们:getGCRF()getEME2000()getICRF()getCIRF(IERSConventions, boolean)getTIRF(IERSConventions, boolean)getITRF(IERSConventions, boolean)getMOD(IERSConventions)getTOD(IERSConventions)getGTOD(IERSConventions)getITRFEquinox(IERSConventions, boolean)getTEME()getPZ9011(IERSConventions, boolean)getVeis1950()。其中一个参考系被任意选择为参考系树的根节点:地心天球参考系(GCRF),它是由IERS定义的一个惯性参考系。

对于大多数情况,推荐使用ITRF作为地球参考系,使用GCRF作为天球参考系。EME2000、TOD、Veis1950也可以用于与旧系统的兼容性。TEME仅应用于TLE。

还有一些与预定义天体相关联的行星参考系。

IERS 2010约定

一个预定义的集合对应于IERS约定(2010)中的参考系。该集合在天球(即惯性)一侧定义了GCRF参考系,在地球一侧定义了ITRF(国际地球参考系),以及它们之间的几个中间参考系。已经定义了几个ITRF的版本。Orekit通过Helmert变换支持其中的几个。

新范式:基于CIO的变换(非旋转原点)

计算GCRF和ITRF之间的变换有几种不同的方法。Orekit支持IERS提倡的新范式,即由IERS约定2010定义的范式,它使用单个变换来处理偏差、岁差和章动,该变换由取决于IERS约定选择和IERS在线发布的地球定向参数(EOP)数据的岁差和章动模型计算得出。这个单一变换将GCRF与一个天球中间参考系(CIRF)连接起来。该参考系的X轴是天球中间原点(CIO),其Z轴是天球中间极(CIP)。CIO不再与黄道联系。从CIRF开始,应用地球旋转角(包括潮汐效应)来定义一个地球中间参考系(TIRF),它是一个伪地球固定参考系。最后一个变换将地极运动(包括IERS框架中观测到的和建模效应,包括潮汐效应)与地壳相对运动相结合,达到真实的地球固定参考系:国际地球参考系。ITRS有几个实现,每个实现都是一个不同的ITRF。这些实现使用Helmert变换将它们连接在一起,这些变换非常小,略微依赖于时间。

Orekit中可用的非旋转原点范式的岁差和章动模型是在IERS 1996约定、IERS 2003约定或IERS 2010约定中定义的。

总之,沿着这条路径涉及到五个参考系,具有各种岁差和章动模型:GCRF、CIRF、TIRF、ITRF和PZ-90.11。

经典范式:基于黄道的转换

在IERS 2003年之前使用的经典范式是基于黄道的,并使用更多的中间坐标系。它仍然在许多地面系统中使用,并且可以与新的岁差-章动模型一起使用。

从GCRF开始,第一个转换是一个偏差,将其转换为EME2000,这是以前的参考系。EME2000坐标系(也称为J2000)是使用J2000.0时刻的平均黄道定义的,即2000-01-01T12:00:00地球时(不是UTC!)。从这个坐标系开始,应用J2000.0和当前日期之间的岁差演化定义了当前日期的平均时刻坐标系,并应用章动定义了一个真时刻坐标系,类似于新范式中的CIRF。从这个坐标系,应用格林威治视恒星时达到一个格林威治真时刻坐标系,类似于新范式中的TIRF。最后,涉及极移的最终转换导致ITRF。

总结起来,沿着这条路径涉及六个坐标系:GCRF、EME2000、MOD、TOD、GTOD和基于黄道的ITRF。

除了这些坐标系之外,还可以使用从MOD通过旋转回黄道平面定义的黄道坐标系。

所谓的Veis 1950也属于这条路径,它是通过应用修正的恒星时从GTOD定义的。

这整个范式已被IERS弃用。它涉及额外的复杂性,首先是由于更多的坐标系数量,其次是这些坐标系是由混合模型计算的,其中包括IAU-76岁差、用于匹配IAU-2000的修正项,以及将地球定向数据从发布形式转换为适合该模型的形式的需求。

尽管被弃用,这些坐标系非常重要,许多遗留系统依赖于它们。因此,为了实现互操作性,Orekit支持它们(但不建议用于新系统)。

由于经典范式使用了与非旋转原点范式相同的天球极(Z轴)定义,但是坐标系原点(X轴)的定义不同,因此TOD坐标系和CIRF坐标系共享相同的Z轴,但它们之间通过绕Z轴的非零旋转(原点的方程,不应与黄道的方程混淆)而不同,而TIRF和GTOD在模型精度水平上应该是相同的坐标系(当然,ITRF在两个范式中也应该是相同的)。

Orekit对IERS约定的实现

总结起来,Orekit实现了以下框架:

  • 与非旋转原点相关的框架:GCRF、CIRF、TIRF、IERS 1996、IERS 2003和IERS 2010的所有岁差和章动模型的ITRF,

  • 与基于黄道的原点相关的框架:MOD、TOD、GTOD、基于黄道的ITRF,包括IERS 1996、IERS 2003、IERS 2010和Veis 1950的所有岁差和章动模型。

这些框架可以进行计算,可以选择是否应用地球定向参数修正,当应用这些修正时,可以使用简单插值或精确插值来考虑亚日潮汐效应。可以混合使用所有框架。例如,可以轻松估计基于黄道的ITRF与IERS 1996岁差-章动、无EOP的ITRF以及非旋转原点和IERS 2010岁差-章动、带EOP和EOP插值的潮汐修正之间的差异。当在使用不同约定的地面系统之间交换数据时,这是特别有趣的。

基于CIO的转换

下面是一个包含基于CIO的支持的IERS框架的部分树的示意图。

IERS框架树

Orekit使用新的IERS框架范式,实现了包含数千个月球-太阳和行星项的完整的IAU-2006岁差和IAU-2000A章动模型(x分量有1600个项,y分量有1275个项,s修正有66个项)。每次使用CIRF框架时重新计算所有这些项将非常慢。因此,Orekit实现了一个缓存/插值功能来提高效率。所有项的最短周期约为5.5天(与月球公转周期的五分之一有关)。因此,这种运动在日或周尺度上非常平滑。这意味着可以使用每天或每周的几个参考点准确计算这种运动,并在这些点之间进行插值。Orekit实现选择的权衡是使用每隔四小时分隔的八个点。框架的最大插值误差约为4e-15弧度。参考点被缓存,因此计算成本大致相当于每个仿真日执行两次完整的月球-太阳和行星项评估,以及每个仿真步骤执行一次插值,无论步长如何。对于小于半天的步长,这代表了巨大的节省,这在大多数应用中是规则的(步长主要在几十秒的范围内)。请注意,从Orekit 6.0开始,此缓存功能是线程安全的。

地球自转角和极运动也考虑了潮汐效应。使用IERS的71项模型。由于该模型也具有计算密集性,因此还使用了缓存/插值算法,以避免对性能产生巨大影响。Orekit实现选择的权衡是使用每隔3/32天(135分钟)分隔的8个点。结果的最大插值误差约为3微角秒。使用潮汐效应的惩罚因此仅限于略高于20%,与没有此机制的550%相比。

基于春分点的转换

这是一个包含基于春分点的支持的IERS参考系的部分树的示意图

基于春分点的参考系树

从EME2000到Veis1950的路径,涉及MOD、TOD和GTOD没有EOP校正,是为了兼容一些旧系统,而带有EOP校正的MOD、TOD和GTOD是为了与IERS 2003约定兼容。两个分支之间的差距可能达到几米,对于许多空间系统来说,这是相当粗糙的精度。

对于旧的IAU-1980岁差-章动模型,也采用了与IAU-2006岁差和IAU-2000A章动模型相同的优化方法,尽管它要简单得多。

太阳系坐标系

所有天体都与其自身的以物体为中心的惯性坐标系相关联,就像地球与EME2000和GCRF相关联一样。由于Orekit提供了主要太阳系天体的实现,它还为这些天体提供了以物体为中心的坐标系,一个是惯性定向的,一个是物体定向的。这些坐标系的定向符合国际天文学联合会的极点和本初子午线定义。预定义的坐标系包括太阳、月球、八大行星和冥王星矮行星。除了这些真实的天体外,为了方便起见,还支持两个点,就像它们是真实的天体一样:太阳系质心和地月质心;在这些情况下,相关的坐标系与EME2000对齐。一个重要的情况是太阳系质心,因为它相关的坐标系是ICRF。

太阳系坐标系

地球坐标系

如上所述,IERS规范定义了地球坐标系,即ITRF坐标系。根据用户在运行时加载的地球定向参数,计算得到的ITRF坐标系可能是旧版本或新版本。如果从EOP C04 14文件加载EOP参数,则ITRF将是ITRF 2014,而如果从EOP C04 08文件、Bulletin A或Bulletin B加载EOP参数,则ITRF将是ITRF 2008。当IERS更新其参考时,ITRF产品相应地发生变化。Orekit知道这些变化,并始终允许从一个ITRF转换到任何其他ITRF,或获取特定的ITRF版本,即使加载的EOP与一个或多个不同的ITRF版本相关联。例如,可以加载年度EOP C04文件,其中一些文件引用ITRF 2008,其他文件引用ITRF 2014,并使用这个混合历史来计算ITRF 2020:Orekit将在内部管理每个日期所需的Helmert转换,用户不需要担心这个。支持自1988年以来的所有ITRF版本。截至Orekit 12.0,支持的版本有ITRF88、ITRF89、ITRF90、ITRF91、ITRF92、ITRF93、ITRF94、ITRF96、ITRF97、ITRF2000、ITRF2005、ITRF2008、ITRF2014和ITRF2020。

地心坐标系

该坐标系模型允许定义与任何位置在一个物体形状的表面上相关联的坐标系,该物体形状本身是相对于一个坐标系的,通常是地球的ITRF坐标系。该坐标系定义了以下规范轴:

  • 天顶方向(Z)定义为本地水平面的法线;

  • 北方向(Y)定义在水平面上(垂直于天顶方向)并沿着本地子午线;

  • 东方向(X)定义在水平面上,以便完成直角三角形(东、北、天顶)。

在这样的坐标系中,用户可以在给定日期的任何坐标系中检索任何点的方位角、仰角、距离和距离速率。

局部轨道坐标系

局部轨道坐标系与轨道飞行器绑定。它们随着飞行器移动,因此是时间相关的。提供了两个局部轨道坐标系:(t, n, w) 坐标系和 (q, s, w) 坐标系。

(t, n, w) 坐标系的 X 轴沿着速度(切向),Z 轴沿着轨道动量,Y 轴完成了右手坐标系(大致指向中心天体)。(q, s, w) 坐标系的 X 轴沿着位置(径向),Z 轴沿着轨道动量,Y 轴完成了右手坐标系(大致沿着速度方向)。

用户定义的坐标系

用户可以通过添加所需的任意数量的坐标系来扩展坐标系树。这是通过逐个添加坐标系来完成的,将每个坐标系附加到已构建的坐标系上,通过指定从父坐标系到子坐标系的TransformProvider来实现。

变换可以是常量的或者是变化的。对于简单的固定变换,直接使用FixedTransformProvider类就足够了。对于变化的变换(例如时间相关的或者基于遥测的变换),定义特定的提供者来实现getTransform(AbsoluteDate)可能是有用的。

这种扩展的一个基本示例是添加一个表示卫星运动和姿态的卫星坐标系。这样的坐标系将具有惯性坐标系作为其父坐标系(GCRF 或 EME2000),getTransform(AbsoluteDate)方法将使用轨道和姿态数据的平移和旋转来计算变换。

坐标系变换是通过组合从起始坐标系到目标坐标系的路径上的所有变换来计算的。这意味着当一个TransformProvider局部更改一个变换时,它基本上将不仅仅移动子坐标系,还将移动从该坐标系开始的所有子树相对于树的其余部分。这个属性可以用来轻松更新复杂的树结构,而不必自己合并变换。下面的示例解释了一个实际情况。

子树显示两个坐标系之间的平移与第三个坐标系的定义变换的关系,该坐标系更接近根坐标系

这个案例是对前面基本扩展的改进,用于管理轨道和姿态。在这种情况下,我们引入了几个中间坐标系,具有基本变换,并且需要更新整个树。我们还想考虑 GPS 接收天线与卫星质心之间的偏移量。当有新的 GPS 测量数据可用时,我们希望更新完整的左子树。这可以通过使用专用的UpdatableFrame来完成,它将执行所有的转换。

包组织

坐标系类图