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.BistaticRange;
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
39
40
41
42
43 public class BistaticRangeTroposphericDelayModifier extends BaseRangeTroposphericDelayModifier implements EstimationModifier<BistaticRange> {
44
45
46
47
48
49
50 public BistaticRangeTroposphericDelayModifier(final TroposphericModel model) {
51 super(model);
52 }
53
54
55 @Override
56 public void modifyWithoutDerivatives(final EstimatedMeasurementBase<BistaticRange> estimated) {
57 final BistaticRange measurement = estimated.getObservedMeasurement();
58 final GroundStation emitter = measurement.getEmitterStation();
59 final GroundStation receiver = measurement.getReceiverStation();
60
61 BistaticModifierUtil.modify(estimated, emitter, receiver,
62 this::rangeErrorTroposphericModel, this);
63
64 }
65
66
67 @Override
68 public void modify(final EstimatedMeasurement<BistaticRange> estimated) {
69 final BistaticRange measurement = estimated.getObservedMeasurement();
70 final GroundStation emitter = measurement.getEmitterStation();
71 final GroundStation receiver = measurement.getReceiverStation();
72 final SpacecraftState state = estimated.getStates()[0];
73
74 BistaticModifierUtil.modify(estimated, getTropoModel(),
75 new ModifierGradientConverter(state, 6, new FrameAlignedProvider(state.getFrame())),
76 emitter, receiver,
77 this::rangeErrorTroposphericModel,
78 this::rangeErrorTroposphericModel,
79 this);
80
81 }
82
83 }