Hi all,
I found an issue with KalmanEstimator
if no orbital coordinate is estimated but a propagation model parameter is. It basically crashes (whilst it works fine with UKF as far as I am aware).
Code sample to reproduce:
@Test
void testEstimationStepWithBStarOnly() {
// GIVEN
TLEEstimationTestUtils.eccentricContext("regular-data:potential:tides");
String line1 = "1 07276U 74026A 00055.48318287 .00000000 00000-0 22970+3 0 9994";
String line2 = "2 07276 71.6273 78.7838 1248323 14.0598 3.8405 4.72707036231812";
final TLE tle = new TLE(line1, line2);
final TLEPropagatorBuilder propagatorBuilder = new TLEPropagatorBuilder(tle,
PositionAngleType.TRUE, 1., new FixedPointTleGenerationAlgorithm());
for (final ParameterDriver driver: propagatorBuilder.getOrbitalParametersDrivers().getDrivers()) {
driver.setSelected(false);
}
propagatorBuilder.getPropagationParametersDrivers().getDrivers().get(0).setSelected(true);
final KalmanEstimatorBuilder builder = new KalmanEstimatorBuilder();
builder.addPropagationConfiguration(propagatorBuilder,
new ConstantProcessNoise(MatrixUtils.createRealMatrix(1, 1)));
final KalmanEstimator estimator = builder.build();
final AbsoluteDate measurementDate = tle.getDate().shiftedBy(1.0);
final TLEPropagator propagator = TLEPropagator.selectExtrapolator(tle);
final Position positionMeasurement = new Position(measurementDate, propagator.getPosition(measurementDate,
propagator.getFrame()), 1., 1., new ObservableSatellite(0));
// WHEN & THEN
Assertions.assertDoesNotThrow(() -> estimator.estimationStep(positionMeasurement));
}
I naively tried to replace the “6” by “nbOrbParams” line 157 of KalmanModel, but it’s not enough.
Cheers,
Romain.