1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.estimation.sequential;
18
19 import java.util.List;
20
21 import org.orekit.annotation.DefaultDataContext;
22 import org.orekit.propagation.PropagationType;
23 import org.orekit.propagation.Propagator;
24 import org.orekit.propagation.SpacecraftState;
25 import org.orekit.propagation.analytical.tle.TLEJacobiansMapper;
26 import org.orekit.propagation.analytical.tle.TLEPartialDerivativesEquations;
27 import org.orekit.propagation.analytical.tle.TLEPropagator;
28 import org.orekit.propagation.conversion.OrbitDeterminationPropagatorBuilder;
29 import org.orekit.propagation.integration.AbstractJacobiansMapper;
30 import org.orekit.utils.ParameterDriversList;
31
32
33
34
35
36
37
38
39
40
41
42
43 public class TLEKalmanModel extends AbstractKalmanModel {
44
45
46
47
48
49
50
51 public TLEKalmanModel(final List<OrbitDeterminationPropagatorBuilder> propagatorBuilders,
52 final List<CovarianceMatrixProvider> covarianceMatricesProviders,
53 final ParameterDriversList estimatedMeasurementParameters,
54 final CovarianceMatrixProvider measurementProcessNoiseMatrix) {
55
56 super(propagatorBuilders, covarianceMatricesProviders, estimatedMeasurementParameters,
57 measurementProcessNoiseMatrix, new TLEJacobiansMapper[propagatorBuilders.size()]);
58 }
59
60
61 @Override
62 @DefaultDataContext
63 protected void updateReferenceTrajectories(final Propagator[] propagators,
64 final PropagationType pType,
65 final PropagationType sType) {
66
67
68 setReferenceTrajectories(propagators);
69
70
71 final AbstractJacobiansMapper[] mappers = getMappers();
72
73 for (int k = 0; k < propagators.length; ++k) {
74
75 final String equationName = KalmanEstimator.class.getName() + "-derivatives-" + k;
76 final TLEPartialDerivativesEquations pde = new TLEPartialDerivativesEquations(equationName, (TLEPropagator) getReferenceTrajectories()[k]);
77
78
79 final SpacecraftState rawState = getReferenceTrajectories()[k].getInitialState();
80 final SpacecraftState stateWithDerivatives = pde.setInitialJacobians(rawState);
81 ((TLEPropagator) getReferenceTrajectories()[k]).resetInitialState(stateWithDerivatives);
82 mappers[k] = pde.getMapper();
83 }
84
85
86 setMappers(mappers);
87
88 }
89
90
91 @Override
92 @DefaultDataContext
93 protected void analyticalDerivativeComputations(final AbstractJacobiansMapper mapper, final SpacecraftState state) {
94 ((TLEJacobiansMapper) mapper).analyticalDerivatives(state);
95 }
96
97 }