Class AbstractMeasurement<T extends ObservedMeasurement<T>>
- java.lang.Object
-
- org.orekit.estimation.measurements.AbstractMeasurement<T>
-
- Type Parameters:
T
- the type of the measurement
- All Implemented Interfaces:
Comparable<ComparableMeasurement>
,ComparableMeasurement
,ObservedMeasurement<T>
,TimeStamped
,ParameterDriversProvider
- Direct Known Subclasses:
GroundReceiverMeasurement
,InterSatellitesPhase
,InterSatellitesRange
,MultiplexedMeasurement
,OneWayGNSSPhase
,OneWayGNSSRange
,Position
,PV
public abstract class AbstractMeasurement<T extends ObservedMeasurement<T>> extends Object implements ObservedMeasurement<T>
Abstract class handling measurements boilerplate.- Since:
- 8.0
- Author:
- Luc Maisonobe
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractMeasurement(AbsoluteDate date, double[] observed, double[] sigma, double[] baseWeight, List<ObservableSatellite> satellites)
Simple constructor, for multi-dimensional measurements.protected
AbstractMeasurement(AbsoluteDate date, double observed, double sigma, double baseWeight, List<ObservableSatellite> satellites)
Simple constructor for mono-dimensional measurements.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
addModifier(EstimationModifier<T> modifier)
Add a modifier.protected void
addParameterDriver(ParameterDriver driver)
Add a parameter driver.EstimatedMeasurement<T>
estimate(int iteration, int evaluation, SpacecraftState[] states)
Estimate the theoretical value of the measurement, with derivatives.EstimatedMeasurementBase<T>
estimateWithoutDerivatives(int iteration, int evaluation, SpacecraftState[] states)
Estimate the theoretical value of the measurement, without derivatives.double[]
getBaseWeight()
Get the base weight associated with the measurementstatic TimeStampedFieldPVCoordinates<Gradient>
getCoordinates(SpacecraftState state, int firstDerivative, int freeParameters)
Get Cartesian coordinates as derivatives.AbsoluteDate
getDate()
Get the date.int
getDimension()
Get the dimension of the measurement.List<EstimationModifier<T>>
getModifiers()
Get the modifiers that apply to a measurement.double[]
getObservedValue()
Get the observed value.List<ParameterDriver>
getParametersDrivers()
Get the drivers for parameters.List<ObservableSatellite>
getSatellites()
Get the satellites related to this measurement.double[]
getTheoreticalStandardDeviation()
Get the theoretical standard deviation.boolean
isEnabled()
Check if a measurement is enabled.void
setEnabled(boolean enabled)
Enable or disable a measurement.static <T extends CalculusFieldElement<T>>
TsignalTimeOfFlight(TimeStampedFieldPVCoordinates<T> adjustableEmitterPV, FieldVector3D<T> receiverPosition, FieldAbsoluteDate<T> signalArrivalDate)
Compute propagation delay on a link leg (typically downlink or uplink).static double
signalTimeOfFlight(TimeStampedPVCoordinates adjustableEmitterPV, Vector3D receiverPosition, AbsoluteDate signalArrivalDate)
Compute propagation delay on a link leg (typically downlink or uplink).protected abstract EstimatedMeasurement<T>
theoreticalEvaluation(int iteration, int evaluation, SpacecraftState[] states)
Estimate the theoretical value.protected abstract EstimatedMeasurementBase<T>
theoreticalEvaluationWithoutDerivatives(int iteration, int evaluation, SpacecraftState[] states)
Estimate the theoretical value without derivatives.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.estimation.measurements.ComparableMeasurement
compareTo
-
Methods inherited from interface org.orekit.estimation.measurements.ObservedMeasurement
getMeasurementType
-
Methods inherited from interface org.orekit.utils.ParameterDriversProvider
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, isSupported
-
Methods inherited from interface org.orekit.time.TimeStamped
durationFrom
-
-
-
-
Constructor Detail
-
AbstractMeasurement
protected AbstractMeasurement(AbsoluteDate date, double observed, double sigma, double baseWeight, List<ObservableSatellite> satellites)
Simple constructor for mono-dimensional measurements.At construction, a measurement is enabled.
- Parameters:
date
- date of the measurementobserved
- observed valuesigma
- theoretical standard deviationbaseWeight
- base weightsatellites
- satellites related to this measurement- Since:
- 9.3
-
AbstractMeasurement
protected AbstractMeasurement(AbsoluteDate date, double[] observed, double[] sigma, double[] baseWeight, List<ObservableSatellite> satellites)
Simple constructor, for multi-dimensional measurements.At construction, a measurement is enabled.
- Parameters:
date
- date of the measurementobserved
- observed valuesigma
- theoretical standard deviationbaseWeight
- base weightsatellites
- satellites related to this measurement- Since:
- 9.3
-
-
Method Detail
-
addParameterDriver
protected void addParameterDriver(ParameterDriver driver)
Add a parameter driver.- Parameters:
driver
- parameter driver to add- Since:
- 9.3
-
getParametersDrivers
public List<ParameterDriver> getParametersDrivers()
Get the drivers for parameters.- Specified by:
getParametersDrivers
in interfaceParameterDriversProvider
- Returns:
- drivers for parameters
-
setEnabled
public void setEnabled(boolean enabled)
Enable or disable a measurement.Disabling a measurement allow to not consider it at one stage of the orbit determination (for example when it appears to be an outlier as per current estimated covariance).
- Specified by:
setEnabled
in interfaceObservedMeasurement<T extends ObservedMeasurement<T>>
- Parameters:
enabled
- if true the measurement will be enabled, otherwise it will be disabled
-
isEnabled
public boolean isEnabled()
Check if a measurement is enabled.- Specified by:
isEnabled
in interfaceObservedMeasurement<T extends ObservedMeasurement<T>>
- Returns:
- true if the measurement is enabled
-
getDimension
public int getDimension()
Get the dimension of the measurement.Dimension is the size of the array containing the value. It will be one for a scalar measurement like a range or range-rate, but 6 for a position-velocity measurement.
- Specified by:
getDimension
in interfaceObservedMeasurement<T extends ObservedMeasurement<T>>
- Returns:
- dimension of the measurement
-
getTheoreticalStandardDeviation
public double[] getTheoreticalStandardDeviation()
Get the theoretical standard deviation.The theoretical standard deviation is a theoretical value used for normalizing the residuals. It acts as a weighting factor to mix appropriately measurements with different units and different accuracy. The value has the same dimension as the measurement itself (i.e. when a residual is divided by this value, it becomes dimensionless).
- Specified by:
getTheoreticalStandardDeviation
in interfaceObservedMeasurement<T extends ObservedMeasurement<T>>
- Returns:
- expected standard deviation
- See Also:
ObservedMeasurement.getBaseWeight()
-
getBaseWeight
public double[] getBaseWeight()
Get the base weight associated with the measurementThe base weight is used on residuals already normalized thanks to
ObservedMeasurement.getTheoreticalStandardDeviation()
to increase or decrease relative effect of some measurements with respect to other measurements. It is a dimensionless value, typically between 0 and 1 (but it can really have any non-negative value).- Specified by:
getBaseWeight
in interfaceObservedMeasurement<T extends ObservedMeasurement<T>>
- Returns:
- base weight
- See Also:
ObservedMeasurement.getTheoreticalStandardDeviation()
-
getSatellites
public List<ObservableSatellite> getSatellites()
Get the satellites related to this measurement.- Specified by:
getSatellites
in interfaceObservedMeasurement<T extends ObservedMeasurement<T>>
- Returns:
- satellites related to this measurement
-
theoreticalEvaluationWithoutDerivatives
protected abstract EstimatedMeasurementBase<T> theoreticalEvaluationWithoutDerivatives(int iteration, int evaluation, SpacecraftState[] states)
Estimate the theoretical value without derivatives.The theoretical value does not have any modifiers applied.
- Parameters:
iteration
- iteration numberevaluation
- evaluation numberstates
- orbital states at measurement date- Returns:
- theoretical value
- Since:
- 12.0
- See Also:
estimate(int, int, SpacecraftState[])
-
theoreticalEvaluation
protected abstract EstimatedMeasurement<T> theoreticalEvaluation(int iteration, int evaluation, SpacecraftState[] states)
Estimate the theoretical value.The theoretical value does not have any modifiers applied.
- Parameters:
iteration
- iteration numberevaluation
- evaluation numberstates
- orbital states at measurement date- Returns:
- theoretical value
- See Also:
estimate(int, int, SpacecraftState[])
-
estimateWithoutDerivatives
public EstimatedMeasurementBase<T> estimateWithoutDerivatives(int iteration, int evaluation, SpacecraftState[] states)
Estimate the theoretical value of the measurement, without derivatives.The estimated value is the combination of the raw estimated value and all the modifiers that apply to the measurement.
- Specified by:
estimateWithoutDerivatives
in interfaceObservedMeasurement<T extends ObservedMeasurement<T>>
- Parameters:
iteration
- iteration numberevaluation
- evaluations numberstates
- orbital states corresponding toObservedMeasurement.getSatellites()
at measurement date- Returns:
- estimated measurement
-
estimate
public EstimatedMeasurement<T> estimate(int iteration, int evaluation, SpacecraftState[] states)
Estimate the theoretical value of the measurement, with derivatives.The estimated value is the combination of the raw estimated value and all the modifiers that apply to the measurement.
- Specified by:
estimate
in interfaceObservedMeasurement<T extends ObservedMeasurement<T>>
- Parameters:
iteration
- iteration numberevaluation
- evaluations numberstates
- orbital states corresponding toObservedMeasurement.getSatellites()
at measurement date- Returns:
- estimated measurement
-
getDate
public AbsoluteDate getDate()
Get the date.- Specified by:
getDate
in interfaceTimeStamped
- Returns:
- date attached to the object
-
getObservedValue
public double[] getObservedValue()
Get the observed value.The observed value is the value that was measured by the instrument.
- Specified by:
getObservedValue
in interfaceComparableMeasurement
- Returns:
- observed value
-
addModifier
public void addModifier(EstimationModifier<T> modifier)
Add a modifier.The modifiers are applied in the order in which they are added in order to
estimate
the measurement.- Specified by:
addModifier
in interfaceObservedMeasurement<T extends ObservedMeasurement<T>>
- Parameters:
modifier
- modifier to add- See Also:
ObservedMeasurement.getModifiers()
-
getModifiers
public List<EstimationModifier<T>> getModifiers()
Get the modifiers that apply to a measurement.- Specified by:
getModifiers
in interfaceObservedMeasurement<T extends ObservedMeasurement<T>>
- Returns:
- modifiers that apply to a measurement
- See Also:
ObservedMeasurement.addModifier(EstimationModifier)
-
signalTimeOfFlight
public static double signalTimeOfFlight(TimeStampedPVCoordinates adjustableEmitterPV, Vector3D receiverPosition, AbsoluteDate signalArrivalDate)
Compute propagation delay on a link leg (typically downlink or uplink).- Parameters:
adjustableEmitterPV
- position/velocity of emitter that may be adjustedreceiverPosition
- fixed position of receiver atsignalArrivalDate
, in the same frame asadjustableEmitterPV
signalArrivalDate
- date at which the signal arrives to receiver- Returns:
- positive delay between signal emission and signal reception dates
-
signalTimeOfFlight
public static <T extends CalculusFieldElement<T>> T signalTimeOfFlight(TimeStampedFieldPVCoordinates<T> adjustableEmitterPV, FieldVector3D<T> receiverPosition, FieldAbsoluteDate<T> signalArrivalDate)
Compute propagation delay on a link leg (typically downlink or uplink).- Type Parameters:
T
- the type of the components- Parameters:
adjustableEmitterPV
- position/velocity of emitter that may be adjustedreceiverPosition
- fixed position of receiver atsignalArrivalDate
, in the same frame asadjustableEmitterPV
signalArrivalDate
- date at which the signal arrives to receiver- Returns:
- positive delay between signal emission and signal reception dates
-
getCoordinates
public static TimeStampedFieldPVCoordinates<Gradient> getCoordinates(SpacecraftState state, int firstDerivative, int freeParameters)
Get Cartesian coordinates as derivatives.The position will correspond to variables
firstDerivative
,firstDerivative + 1
andfirstDerivative + 2
. The velocity will correspond to variablesfirstDerivative + 3
,firstDerivative + 4
andfirstDerivative + 5
. The acceleration will correspond to constants.- Parameters:
state
- state of the satellite consideredfirstDerivative
- index of the first derivativefreeParameters
- total number of free parameters in the gradient- Returns:
- Cartesian coordinates as derivatives
- Since:
- 10.2
-
-