常见问题(FAQ)

参考资料

Orekit已经被使用过了吗?

是的,它已经在成功的操作任务中被使用过。

Orekit的第一个操作使用是用于自动转移飞行器(ATV)任务到国际空间站(ISS)。Orekit在实时监测交会对接阶段期间进行了操作使用。它不断重新计算两个航天器的相对几何关系,使用不同的传感器输出来检查其一致性。

Orekit已经被法国国家航天研究中心(CNES)选中,用于其下一代飞行动力学系统(Sirius项目)的操作系统、研究系统和任务分析系统。

Orekit在欧洲气象卫星组织(Eumetsat)用于长期任务分析(包括卫星的整个寿命)的低地球轨道(LEO)和地球静止轨道(GEO)任务。

Orekit在Sentinel-2图像处理设施中作为Rugged传感器到地形映射库的底层使用,每天处理数千兆字节的数据。

由于Orekit是开源的,我们无法了解所有的使用情况,因为人们不需要通知我们任何事情。

Orekit是否经过验证?

部分部分经过了严格的验证,其他部分则经过了较少的验证。

框架包是其中一个经过最好验证的。整体机制(变换、帧之间的导航、运动学等)在理论测试和实际操作中都经受了很多挑战。这部分在欧洲航天局的自动转移飞行器(ATV)与国际空间站(ISS)的会合中得到了广泛使用。它是一个操作地面程序,用于实时监测会合和对接阶段。这部分已经在相对配置下检查到毫米级精度。参考帧部分(ITRF等)在版本3.1中使用公共数据进行了验证,精度达到了米级,版本4.0的精度达到了厘米级。

Orekit 3.1发布后进行了一轮新的验证。发现并修复了两个缺陷:J2000帧与真实J2000之间存在一个约18毫弧秒的恒定旋转偏差(实际上是GCRF,而不是J2000),ITRF2000B实现存在一个时间相关的旋转错误,导致半短轴约为10000km的轨道误差约为0.6米。这些错误已在4.0版本中修复。我们的测试显示,新的帧与参考案例的符合度约为LEO的10mm和GEO的60mm。

TLE包也经过了相当好的验证;它已经与Vallado发布的一些参考数据进行了对比,Vallado在修订原始spacetrack报告时修复了原始Fortran实现中的一些错误。

大气模型也以同样的方式进行了验证,使用了已发布的数据。

时间包仅通过其单元测试进行了验证,但由于行为较简单,可以手动检查。单元测试包括许多边界情况(例如在引入闰秒时的行为)。

版本3.1的Sun和Moon类精度很低,并在一个松散定义的伪惯性坐标系中定义。它们只能与非常特定的软件进行比较。它们的精度可能仅限于约10角秒。它们在4.0版本中被精确的参考模型所取代。新模型已经通过参考NASA程序进行了验证。

数值传播已由法国国家航天中心(CNES)独立于Orekit团队对一些非常高精度的传播器(Zoom)进行了验证。他们告诉我们结果很好(对于简单的力模型,精度达到厘米级),但我们没有各种轨道和力模型的详细错误分析。

包括潮汐在内的精确力模型已在2014年由美国海军研究实验室(Naval Research Laboratory)针对其参考OCEAN程序进行了验证。一篇论文已在2014年的AIAA/AAS Astrodynamics Specialist Conference in San Diego上发表。一旦精确的GNSS建模完成(该功能截至2017年底正在开发中),预计将进行一轮新的验证。

验证对我们来说是一个持续的任务,我们始终致力于改进。我们很乐意让其他团队进行独立的验证运行。在第一个版本发布后,我们已经收到了一些反馈和新的测试案例。

Orekit是否是线程安全的?

版本5.X及之前的版本不是线程安全的。请注意,简单地将Orekit调用包装在同步块中并不是一个解决方案,因为这会完全破坏所有数据缓存功能,从而大大降低性能。

由于线程安全对许多人来说是一个重要需求,因此这个问题已经得到解决,从版本6.0开始,许多Orekit类是线程安全的。然而,请注意,一些自然顺序访问的部分不是线程安全的。从版本9.0开始,甚至可以使用不同的线程进行多卫星传播(和轨道确定),并进行线程间调度以进行并行传播(但每个传播都在专用线程中执行)。

安装

Orekit的依赖关系是什么?

在4.0版本之前,Orekit依赖于Apache Commons Math的一些尚未发布的功能,因此依赖关系被设置为2.0-SNAPSHOT开发版本。这个开发版本可以从Apache的子版本库中获取。从4.1版本开始,直到7.2版本,Orekit只依赖于Apache Commons Math的正式发布版本。从8.0版本开始,Orekit已经从Apache Commons Math切换到Hipparchus。

版本     |                             依赖关系
Orekit 4.1 Apache Commons Math 2.0
Orekit 5.0 Apache Commons Math 2.1
Orekit 5.0.3 Apache Commons Math 2.2
Orekit 6.0 Apache Commons Math 3.2
Orekit 6.1 Apache Commons Math 3.2
Orekit 7.0 Apache Commons Math 3.4.1
Orekit 7.1 Apache Commons Math 3.6
Orekit 7.2 Apache Commons Math 3.6.1
Orekit 7.2.1 Apache Commons Math 3.6.1
Orekit 8.0 Hipparchus 1.0
Orekit 8.0.1 Hipparchus 1.0
Orekit 9.0 Hipparchus 1.1
Orekit 9.0.1 Hipparchus 1.1
Orekit 9.1 Hipparchus 1.2
Orekit 9.2 Hipparchus 1.3
Orekit 9.3 Hipparchus 1.4
Orekit 9.3.1 Hipparchus 1.4
Orekit 10.0 Hipparchus 1.5
Orekit 10.1 Hipparchus 1.6
Orekit 10.2 Hipparchus 1.7
Orekit 10.3 Hipparchus 1.8
Orekit 10.3.1 Hipparchus 1.8
Orekit 11.0 Hipparchus 2.0
Orekit 11.0.1 Hipparchus 2.0
Orekit 11.0.2 Hipparchus 2.0
Orekit 11.1 Hipparchus 2.0
Orekit 11.1.1 Hipparchus 2.0
Orekit 11.1.2 Hipparchus 2.1
Orekit 11.2 Hipparchus 2.1
Orekit 11.2.1 Hipparchus 2.1
Orekit 11.3 Hipparchus 2.3
Orekit 11.3.1 Hipparchus 2.3
Orekit 11.3.2 Hipparchus 2.3
Orekit 11.3.3 Hipparchus 2.3
Orekit 12.0 Hipparchus 3.0
Orekit 12.0.1 Hipparchus 3.0

Maven编译Orekit失败,并且报告缺少依赖项。

Orekit的发布版本总是只依赖于发布的Hipparchus版本,但是开发版本的Orekit可能依赖于未发布的Hipparchus版本。Maven知道如何下载已发布的Hipparchus版本的预构建二进制文件,但是无法下载未发布的Hipparchus版本的预构建二进制文件,因为没有公开可用的。在这种情况下,maven命令将以错误消息结束,如下所示:

[ERROR] Failed to execute goal on project orekit: Could not resolve dependencies for project org.orekit:orekit:jar:8.0-SNAPSHOT: Could not find artifact org.hipparchus:hipparchus-core:jar:1.0-SNAPSHOT

在这种情况下,您应该先构建缺失的Hipparchus依赖项,并将其安装到本地的maven存储库中。这可以通过在某个临时文件夹中从Hipparchus git存储库的GitHub克隆Hipparchus源代码并使用maven进行安装来完成。通过运行以下命令(使用Linux命令语法)来完成:

git clone https://github.com/Hipparchus-Math/hipparchus.git
cd hipparchus
mvn install

一旦使用上述命令在本地安装了Hipparchus开发版本,您可以删除克隆的文件夹(如果需要)。然后,您可以再次尝试在Orekit级别运行mvn命令,这次应该成功,因为所需的依赖项现在在本地可用。

您提供的orekit-data.zip文件不是最新的。您能更新它吗?

这个文件没有定期更新。数据仅作为示例提供,以便新用户快速开始。对于长期使用,数据处理仍然是用户自己的责任。配置页面指出了Orekit可以考虑的数据源,因此您可以访问该链接查找所需的内容。

对于非常新的数据可能会遇到一些困难。事实上,IERS再次更改了文件格式,并停止发布B公告(请参阅地球定向数据页面)。例如,最后一个发布的IAU 2000 B公告是编号263。IERS还停止了对IERS 2003约定的数据发布,他们已经转向了IERS 2010约定。年度数据(EOP 05 C08文件)仍在发布。因此,我们建议您定期更新这些文件,因为IERS会发布它们。

关于UTC闰秒,截至2017年中,最后一个闰秒是在2016年12月底引入的。

运行时错误

orekit-data-master.zip文件,将其解压到任意位置,将创建的orekit-data-master文件夹重命名为orekit-data,并在程序的开头添加以下代码:

File orekitData = new File("/path/to/the/folder/orekit-data");
DataProvidersManager manager = DataContext.getDefault().getDataProvidersManager();
manager.addProvider(new DirectoryCrawler(orekitData));

使用文件夹的方式可以在初始下载后更改其中的数据,例如按照IERS发布的新的EOP文件添加。更新orekit-data的内容是用户的责任。