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