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.hipparchus.linear.MatrixUtils;
22 import org.hipparchus.linear.RealMatrix;
23 import org.junit.Test;
24 import org.orekit.estimation.BrouwerLyddaneContext;
25 import org.orekit.estimation.BrouwerLyddaneEstimationTestUtils;
26 import org.orekit.estimation.measurements.ObservedMeasurement;
27 import org.orekit.estimation.measurements.PVMeasurementCreator;
28 import org.orekit.orbits.Orbit;
29 import org.orekit.orbits.PositionAngle;
30 import org.orekit.propagation.Propagator;
31 import org.orekit.propagation.analytical.BrouwerLyddanePropagator;
32 import org.orekit.propagation.conversion.BrouwerLyddanePropagatorBuilder;
33
34 public class BrouwerLyddaneKalmanEstimatorTest {
35
36
37
38
39
40 @Test
41 public void testKeplerianPV() {
42
43
44 BrouwerLyddaneContext context = BrouwerLyddaneEstimationTestUtils.eccentricContext("regular-data:potential:tides");
45
46
47 final PositionAngle positionAngle = PositionAngle.TRUE;
48 final boolean perfectStart = true;
49 final double dP = 1.;
50 final BrouwerLyddanePropagatorBuilder propagatorBuilder =
51 context.createBuilder(positionAngle, perfectStart, dP);
52
53
54 final Propagator propagator = BrouwerLyddaneEstimationTestUtils.createPropagator(context.initialOrbit,
55 propagatorBuilder);
56 final List<ObservedMeasurement<?>> measurements =
57 BrouwerLyddaneEstimationTestUtils.createMeasurements(propagator,
58 new PVMeasurementCreator(),
59 0.0, 3.0, 300.0);
60
61 final BrouwerLyddanePropagator referencePropagator = propagatorBuilder.
62 buildPropagator(propagatorBuilder.getSelectedNormalizedParameters());
63
64
65 final Orbit refOrbit = referencePropagator.
66 propagate(measurements.get(measurements.size()-1).getDate()).getOrbit();
67
68
69 final RealMatrix initialP = MatrixUtils.createRealDiagonalMatrix(new double [] {
70 1e-2, 1e-2, 1e-2, 1e-5, 1e-5, 1e-5
71 });
72
73
74 RealMatrix Q = MatrixUtils.createRealDiagonalMatrix(new double [] {
75 1.e-8, 1.e-8, 1.e-8, 1.e-8, 1.e-8, 1.e-8
76 });
77
78
79
80 final KalmanEstimator kalman = new KalmanEstimatorBuilder().
81 addPropagationConfiguration(propagatorBuilder, new ConstantProcessNoise(initialP, Q)).
82 build();
83
84
85 final double expectedDeltaPos = 0.;
86 final double posEps = 2.33e-8;
87 final double expectedDeltaVel = 0.;
88 final double velEps = 6.59e-11;
89 final double[] expectedsigmasPos = {0.998894, 0.933798, 0.997346};
90 final double sigmaPosEps = 1e-6;
91 final double[] expectedSigmasVel = {9.475825e-4, 9.903811e-4, 5.061704e-4};
92 final double sigmaVelEps = 1e-10;
93 BrouwerLyddaneEstimationTestUtils.checkKalmanFit(context, kalman, measurements,
94 refOrbit, positionAngle,
95 expectedDeltaPos, posEps,
96 expectedDeltaVel, velEps,
97 expectedsigmasPos, sigmaPosEps,
98 expectedSigmasVel, sigmaVelEps);
99 }
100
101 }