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.troposphere.TroposphericModel;
26 import org.orekit.propagation.SpacecraftState;
27
28
29
30
31
32
33
34
35
36
37
38 public class BistaticRangeRateTroposphericDelayModifier
39 extends BaseRangeRateTroposphericDelayModifier implements EstimationModifier<BistaticRangeRate> {
40
41
42
43
44
45
46 public BistaticRangeRateTroposphericDelayModifier(final TroposphericModel model) {
47 super(model);
48 }
49
50
51 @Override
52 public void modifyWithoutDerivatives(final EstimatedMeasurementBase<BistaticRangeRate> estimated) {
53
54 final BistaticRangeRate measurement = estimated.getObservedMeasurement();
55 final GroundStation emitter = measurement.getEmitterStation();
56 final GroundStation receiver = measurement.getReceiverStation();
57
58 BistaticModifierUtil.modify(estimated, emitter, receiver,
59 this::rangeRateErrorTroposphericModel, 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, getTropoModel(),
73 new ModifierGradientConverter(state, 6, new FrameAlignedProvider(state.getFrame())),
74 emitter, receiver,
75 this::rangeRateErrorTroposphericModel,
76 this::rangeRateErrorTroposphericModel,
77 this);
78
79 }
80
81 }