1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.estimation.measurements.modifiers;
18
19 import org.orekit.attitudes.FrameAlignedProvider;
20 import org.orekit.estimation.measurements.BistaticRangeRate;
21 import org.orekit.estimation.measurements.EstimatedMeasurement;
22 import org.orekit.estimation.measurements.EstimatedMeasurementBase;
23 import org.orekit.estimation.measurements.EstimationModifier;
24 import org.orekit.estimation.measurements.GroundStation;
25 import org.orekit.models.earth.ionosphere.IonosphericModel;
26 import org.orekit.propagation.SpacecraftState;
27
28
29
30
31
32
33
34
35
36
37
38 public class BistaticRangeRateIonosphericDelayModifier extends BaseRangeRateIonosphericDelayModifier implements EstimationModifier<BistaticRangeRate> {
39
40
41
42
43
44
45 public BistaticRangeRateIonosphericDelayModifier(final IonosphericModel model, final double freq) {
46 super(model, freq);
47 }
48
49
50 @Override
51 public void modifyWithoutDerivatives(final EstimatedMeasurementBase<BistaticRangeRate> estimated) {
52
53 final BistaticRangeRate measurement = estimated.getObservedMeasurement();
54 final GroundStation emitter = measurement.getEmitterStation();
55 final GroundStation receiver = measurement.getReceiverStation();
56
57 BistaticModifierUtil.modify(estimated, emitter, receiver,
58 this::rangeRateErrorIonosphericModel,
59 this);
60
61 }
62
63
64 @Override
65 public void modify(final EstimatedMeasurement<BistaticRangeRate> estimated) {
66
67 final BistaticRangeRate measurement = estimated.getObservedMeasurement();
68 final GroundStation emitter = measurement.getEmitterStation();
69 final GroundStation receiver = measurement.getReceiverStation();
70 final SpacecraftState state = estimated.getStates()[0];
71
72 BistaticModifierUtil.modify(estimated, getIonoModel(),
73 new ModifierGradientConverter(state, 6, new FrameAlignedProvider(state.getFrame())),
74 emitter, receiver,
75 this::rangeRateErrorIonosphericModel,
76 this::rangeRateErrorIonosphericModel,
77 this);
78
79 }
80
81 }