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.propagation.PropagationType;
22 import org.orekit.propagation.Propagator;
23 import org.orekit.propagation.SpacecraftState;
24 import org.orekit.propagation.conversion.OrbitDeterminationPropagatorBuilder;
25 import org.orekit.propagation.integration.AbstractJacobiansMapper;
26 import org.orekit.propagation.semianalytical.dsst.DSSTJacobiansMapper;
27 import org.orekit.propagation.semianalytical.dsst.DSSTPartialDerivativesEquations;
28 import org.orekit.propagation.semianalytical.dsst.DSSTPropagator;
29 import org.orekit.utils.ParameterDriversList;
30
31
32
33
34
35
36
37
38
39
40
41 public class DSSTKalmanModel extends AbstractKalmanModel {
42
43
44
45
46
47
48
49
50
51 public DSSTKalmanModel(final List<OrbitDeterminationPropagatorBuilder> propagatorBuilders,
52 final List<CovarianceMatrixProvider> covarianceMatricesProviders,
53 final ParameterDriversList estimatedMeasurementParameters,
54 final CovarianceMatrixProvider measurementProcessNoiseMatrix,
55 final PropagationType propagationType,
56 final PropagationType stateType) {
57
58 super(propagatorBuilders, covarianceMatricesProviders, estimatedMeasurementParameters,
59 measurementProcessNoiseMatrix, new DSSTJacobiansMapper[propagatorBuilders.size()],
60 propagationType, stateType);
61 }
62
63
64 @Override
65 protected void updateReferenceTrajectories(final Propagator[] propagators,
66 final PropagationType pType,
67 final PropagationType sType) {
68
69
70 setReferenceTrajectories(propagators);
71
72
73 final AbstractJacobiansMapper[] mappers = getMappers();
74
75 for (int k = 0; k < propagators.length; ++k) {
76
77 final String equationName = KalmanEstimator.class.getName() + "-derivatives-" + k;
78 final DSSTPartialDerivativesEquations pde = new DSSTPartialDerivativesEquations(equationName, (DSSTPropagator) getReferenceTrajectories()[k], pType);
79
80
81 final SpacecraftState rawState = getReferenceTrajectories()[k].getInitialState();
82 final SpacecraftState stateWithDerivatives = pde.setInitialJacobians(rawState);
83 ((DSSTPropagator) getReferenceTrajectories()[k]).setInitialState(stateWithDerivatives, sType);
84 mappers[k] = pde.getMapper();
85 }
86
87
88 setMappers(mappers);
89
90 }
91
92
93 @Override
94 protected void analyticalDerivativeComputations(final AbstractJacobiansMapper mapper, final SpacecraftState state) {
95 ((DSSTJacobiansMapper) mapper).setShortPeriodJacobians(state);
96 }
97
98 }