Dear Orekit team,
I have been trying out orbit determination with DSST and ran into some “sample for interpolation is empty” errors when using the osculating propagation type.
I saw this type of error has already been addressed before:
However, I found that the error pops up depending on the epoch of the initial state that I provide for the orbit determination. That is, I can run two test cases where only the epoch of the initial state is different, and one will succeed and one will fail with the “sample for interpolation is empty” error.
The “sample” error can be reproduced by running the DSSTOrbitDeterminationTest.testLageos2 using the following initial state in the “dsst_od_test_Lageos2.in” input file:
Orbit definition
## date of the orbital parameters (UTC)
orbit.date = 2016-02-18T02:08:29.462
## Position & velocity along X, y, z in inertial frame (m)
orbit.cartesian.px = -9568635.49920044
orbit.cartesian.py = 3867192.0159636163
orbit.cartesian.pz = 6277752.981336486
orbit.cartesian.vx = 373.70548163632344
orbit.cartesian.vy = -4558.370517911978
orbit.cartesian.vz = 3507.5434795087112
Here as initial epoch I used the epoch of the last Lageos2 measurement. (Using an epoch that matches a measurement epoch tends to give me an error.) I took the PV state from TLE.
Running using this input gives an error in orekit-develop and Orekit-10.2. For the Orekit-10.2 version, one first needs put PropagationType.OSCULATING on line 92 of DSSTOrbitDeterminationTest.java.
Thank you for your help in advance!
Best wishes,
David
======================================================
org.orekit.errors.OrekitException: sample for interpolation is empty
at org.orekit.errors.OrekitException.unwrap(OrekitException.java:154)
at org.orekit.propagation.integration.AbstractIntegratedPropagator.propagate(AbstractIntegratedPropagator.java:495)
at org.orekit.propagation.integration.AbstractIntegratedPropagator.propagate(AbstractIntegratedPropagator.java:414)
at org.orekit.propagation.PropagatorsParallelizer.propagate(PropagatorsParallelizer.java:141)
at org.orekit.estimation.leastsquares.DSSTBatchLSModel.value(DSSTBatchLSModel.java:272)
at org.hipparchus.optim.nonlinear.vector.leastsquares.LeastSquaresFactory$LocalLeastSquaresProblem.evaluate(LeastSquaresFactory.java:440)
at org.orekit.estimation.leastsquares.BatchLSEstimator$TappedLSProblem.evaluate(BatchLSEstimator.java:616)
at org.hipparchus.optim.nonlinear.vector.leastsquares.GaussNewtonOptimizer.optimize(GaussNewtonOptimizer.java:399)
at org.orekit.estimation.leastsquares.BatchLSEstimator.estimate(BatchLSEstimator.java:436)
at org.orekit.estimation.common.AbstractOrbitDetermination.runBLS(AbstractOrbitDetermination.java:420)
at org.orekit.estimation.leastsquares.DSSTOrbitDeterminationTest.testLageos2(DSSTOrbitDeterminationTest.java:233)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:110)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38)
at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:119)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: org.hipparchus.exception.MathIllegalArgumentException: sample for interpolation is empty
at org.hipparchus.analysis.interpolation.HermiteInterpolator.checkInterpolation(HermiteInterpolator.java:304)
at org.hipparchus.analysis.interpolation.HermiteInterpolator.value(HermiteInterpolator.java:178)
at org.orekit.propagation.semianalytical.dsst.utilities.ShortPeriodicsInterpolatedCoefficient.value(ShortPeriodicsInterpolatedCoefficient.java:76)
at org.orekit.propagation.semianalytical.dsst.forces.DSSTTesseral$Slot.getCijm(DSSTTesseral.java:2166)
at org.orekit.propagation.semianalytical.dsst.forces.DSSTTesseral$TesseralShortPeriodicCoefficients.value(DSSTTesseral.java:1766)
at org.orekit.propagation.semianalytical.dsst.DSSTPropagator$MeanPlusShortPeriodicMapper.mapArrayToState(DSSTPropagator.java:845)
at org.orekit.propagation.integration.StateMapper.mapArrayToState(StateMapper.java:167)
at org.orekit.propagation.integration.AbstractIntegratedPropagator$AdaptedStepInterpolator.convert(AbstractIntegratedPropagator.java:919)
at org.orekit.propagation.integration.AbstractIntegratedPropagator$AdaptedStepInterpolator.getCurrentState(AbstractIntegratedPropagator.java:897)
at org.orekit.estimation.leastsquares.MeasurementHandler.handleStep(MeasurementHandler.java:75)
at org.orekit.propagation.PropagatorsParallelizer$SinglePropagatorHandler.handleStep(PropagatorsParallelizer.java:322)
at org.orekit.propagation.integration.AbstractIntegratedPropagator$AdaptedStepHandler.handleStep(AbstractIntegratedPropagator.java:860)
at org.hipparchus.ode.AbstractIntegrator.acceptStep(AbstractIntegrator.java:429)
at org.hipparchus.ode.nonstiff.EmbeddedRungeKuttaIntegrator.integrate(EmbeddedRungeKuttaIntegrator.java:290)
at org.orekit.propagation.integration.AbstractIntegratedPropagator.propagate(AbstractIntegratedPropagator.java:469)
... 56 more