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 @Deprecated
47 public BistaticRangeRateTroposphericDelayModifier(final org.orekit.models.earth.troposphere.DiscreteTroposphericModel model) {
48 this(new org.orekit.models.earth.troposphere.TroposphericModelAdapter(model));
49 }
50
51
52
53
54
55
56 public BistaticRangeRateTroposphericDelayModifier(final TroposphericModel model) {
57 super(model);
58 }
59
60
61 @Override
62 public void modifyWithoutDerivatives(final EstimatedMeasurementBase<BistaticRangeRate> estimated) {
63
64 final BistaticRangeRate measurement = estimated.getObservedMeasurement();
65 final GroundStation emitter = measurement.getEmitterStation();
66 final GroundStation receiver = measurement.getReceiverStation();
67
68 BistaticModifierUtil.modify(estimated, emitter, receiver,
69 this::rangeRateErrorTroposphericModel, this);
70
71 }
72
73
74 @Override
75 public void modify(final EstimatedMeasurement<BistaticRangeRate> estimated) {
76
77 final BistaticRangeRate measurement = estimated.getObservedMeasurement();
78 final GroundStation emitter = measurement.getEmitterStation();
79 final GroundStation receiver = measurement.getReceiverStation();
80 final SpacecraftState state = estimated.getStates()[0];
81
82 BistaticModifierUtil.modify(estimated, getTropoModel(),
83 new ModifierGradientConverter(state, 6, new FrameAlignedProvider(state.getFrame())),
84 emitter, receiver,
85 this::rangeRateErrorTroposphericModel,
86 this::rangeRateErrorTroposphericModel,
87 this);
88
89 }
90
91 }