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:
AbstractOnBoardMeasurement
,GroundReceiverMeasurement
,InterSatellitesRange
,MultiplexedMeasurement
,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.void
setObservedValue(double[] newObserved)
Set the observed value.static <T extends CalculusFieldElement<T>>
TsignalTimeOfFlightAdjustableEmitter(FieldPVCoordinatesProvider<T> adjustableEmitter, FieldAbsoluteDate<T> approxEmissionDate, FieldVector3D<T> receiverPosition, FieldAbsoluteDate<T> signalArrivalDate, Frame frame)
Compute propagation delay on a link leg (typically downlink or uplink).static double
signalTimeOfFlightAdjustableEmitter(PVCoordinatesProvider adjustableEmitter, AbsoluteDate approxEmissionDate, Vector3D receiverPosition, AbsoluteDate signalArrivalDate, Frame frame)
Compute propagation delay on a link leg (typically downlink or uplink).static <T extends CalculusFieldElement<T>>
TsignalTimeOfFlightAdjustableEmitter(TimeStampedFieldPVCoordinates<T> adjustableEmitterPV, FieldVector3D<T> receiverPosition, FieldAbsoluteDate<T> signalArrivalDate, Frame frame)
Compute propagation delay on a link leg (typically downlink or uplink).static double
signalTimeOfFlightAdjustableEmitter(TimeStampedPVCoordinates adjustableEmitterPV, Vector3D receiverPosition, AbsoluteDate signalArrivalDate, Frame frame)
Compute propagation delay on a link leg (typically downlink or uplink).static <T extends CalculusFieldElement<T>>
TsignalTimeOfFlightAdjustableReceiver(FieldVector3D<T> emitterPosition, FieldAbsoluteDate<T> emissionDate, FieldPVCoordinatesProvider<T> adjustableReceiver, FieldAbsoluteDate<T> approxReceptionDate, Frame frame)
Compute propagation delay on a link leg (typically downlink or uplink).static <T extends CalculusFieldElement<T>>
TsignalTimeOfFlightAdjustableReceiver(FieldVector3D<T> emitterPosition, FieldAbsoluteDate<T> emissionDate, TimeStampedFieldPVCoordinates<T> adjustableReceiverPV, FieldAbsoluteDate<T> approxReceptionDate, Frame frame)
Compute propagation delay on a link leg (typically downlink or uplink).static double
signalTimeOfFlightAdjustableReceiver(Vector3D emitterPosition, AbsoluteDate emissionDate, PVCoordinatesProvider adjustableReceiver, AbsoluteDate approxReceptionDate, Frame frame)
Compute propagation delay on a link leg (typically downlink or uplink).static double
signalTimeOfFlightAdjustableReceiver(Vector3D emitterPosition, AbsoluteDate emissionDate, TimeStampedPVCoordinates adjustableReceiverPV, AbsoluteDate approxReceptionDate, Frame frame)
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 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
estimateWithoutDerivatives, 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
-
setObservedValue
public void setObservedValue(double[] newObserved)
Set the observed value.The observed value is the value that was measured by the instrument.
- Specified by:
setObservedValue
in interfaceComparableMeasurement
- Parameters:
newObserved
- observed value
-
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 EstimatedMeasurementBase<T> theoreticalEvaluationWithoutDerivatives(int iteration, int evaluation, SpacecraftState[] states)
Estimate the theoretical value without derivatives. The default implementation uses the computation with derivatives and ought to be overwritten for performance.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. For use in orbit determination.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)
-
signalTimeOfFlightAdjustableEmitter
public static double signalTimeOfFlightAdjustableEmitter(TimeStampedPVCoordinates adjustableEmitterPV, Vector3D receiverPosition, AbsoluteDate signalArrivalDate, Frame frame)
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
frame
- inertial frame in which bothadjustableEmitterPV
andreceiverPosition
are definedsignalArrivalDate
- date at which the signal arrives to receiver- Returns:
- positive delay between signal emission and signal reception dates
- Since:
- 13.0
-
signalTimeOfFlightAdjustableEmitter
public static double signalTimeOfFlightAdjustableEmitter(PVCoordinatesProvider adjustableEmitter, AbsoluteDate approxEmissionDate, Vector3D receiverPosition, AbsoluteDate signalArrivalDate, Frame frame)
Compute propagation delay on a link leg (typically downlink or uplink).- Parameters:
adjustableEmitter
- position/velocity provider of emitterapproxEmissionDate
- approximate emission datereceiverPosition
- fixed position of receiver atsignalArrivalDate
signalArrivalDate
- date at which the signal arrives to receiverframe
- inertial frame in which receiver is defined- Returns:
- positive delay between signal emission and signal reception dates
- Since:
- 13.0
-
signalTimeOfFlightAdjustableReceiver
public static double signalTimeOfFlightAdjustableReceiver(Vector3D emitterPosition, AbsoluteDate emissionDate, TimeStampedPVCoordinates adjustableReceiverPV, AbsoluteDate approxReceptionDate, Frame frame)
Compute propagation delay on a link leg (typically downlink or uplink).- Parameters:
emitterPosition
- fixed position of emitteremissionDate
- emission dateadjustableReceiverPV
- position/velocity of receiver that may be adjustedapproxReceptionDate
- approximate reception dateframe
- inertial frame in which bothemitterPosition
andadjustableReceiverPV
are defined- Returns:
- positive delay between signal emission and signal reception dates
- Since:
- 13.0
-
signalTimeOfFlightAdjustableReceiver
public static double signalTimeOfFlightAdjustableReceiver(Vector3D emitterPosition, AbsoluteDate emissionDate, PVCoordinatesProvider adjustableReceiver, AbsoluteDate approxReceptionDate, Frame frame)
Compute propagation delay on a link leg (typically downlink or uplink).- Parameters:
emitterPosition
- fixed position of emitteremissionDate
- emission dateadjustableReceiver
- provider for adjusting receiver positionapproxReceptionDate
- approximate reception dateframe
- inertial frame in which emitter is defined- Returns:
- positive delay between signal emission and signal reception dates
- Since:
- 13.0
-
signalTimeOfFlightAdjustableEmitter
public static <T extends CalculusFieldElement<T>> T signalTimeOfFlightAdjustableEmitter(TimeStampedFieldPVCoordinates<T> adjustableEmitterPV, FieldVector3D<T> receiverPosition, FieldAbsoluteDate<T> signalArrivalDate, Frame frame)
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 receiverframe
- inertial frame in which bothadjustableEmitterPV
andreceiverPosition
are defined- Returns:
- positive delay between signal emission and signal reception dates
- Since:
- 13.0
-
signalTimeOfFlightAdjustableEmitter
public static <T extends CalculusFieldElement<T>> T signalTimeOfFlightAdjustableEmitter(FieldPVCoordinatesProvider<T> adjustableEmitter, FieldAbsoluteDate<T> approxEmissionDate, FieldVector3D<T> receiverPosition, FieldAbsoluteDate<T> signalArrivalDate, Frame frame)
Compute propagation delay on a link leg (typically downlink or uplink).- Type Parameters:
T
- the type of the components- Parameters:
adjustableEmitter
- position/velocity provider of emitterapproxEmissionDate
- approximate emission datereceiverPosition
- fixed position of receiver atsignalArrivalDate
, in the same frame asadjustableEmitterPV
signalArrivalDate
- date at which the signal arrives to receiverframe
- inertial frame in which receiver is defined- Returns:
- positive delay between signal emission and signal reception dates
- Since:
- 13.0
-
signalTimeOfFlightAdjustableReceiver
public static <T extends CalculusFieldElement<T>> T signalTimeOfFlightAdjustableReceiver(FieldVector3D<T> emitterPosition, FieldAbsoluteDate<T> emissionDate, TimeStampedFieldPVCoordinates<T> adjustableReceiverPV, FieldAbsoluteDate<T> approxReceptionDate, Frame frame)
Compute propagation delay on a link leg (typically downlink or uplink).- Type Parameters:
T
- the type of the components- Parameters:
emitterPosition
- fixed position of emitteremissionDate
- emission dateadjustableReceiverPV
- position/velocity of emitter that may be adjustedapproxReceptionDate
- approximate reception dateframe
- inertial frame in which bothemitterPosition
andadjustableReceiverPV
are defined- Returns:
- positive delay between signal emission and signal reception dates
- Since:
- 13.0
-
signalTimeOfFlightAdjustableReceiver
public static <T extends CalculusFieldElement<T>> T signalTimeOfFlightAdjustableReceiver(FieldVector3D<T> emitterPosition, FieldAbsoluteDate<T> emissionDate, FieldPVCoordinatesProvider<T> adjustableReceiver, FieldAbsoluteDate<T> approxReceptionDate, Frame frame)
Compute propagation delay on a link leg (typically downlink or uplink).- Type Parameters:
T
- the type of the components- Parameters:
emitterPosition
- fixed position of emitteremissionDate
- emission dateadjustableReceiver
- provider for adjusting receiver positionapproxReceptionDate
- approximate reception dateframe
- inertial frame in which emitter is defined- Returns:
- positive delay between signal emission and signal reception dates
- Since:
- 13.0
-
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
-
-