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 protectedAbstractMeasurement(AbsoluteDate date, double[] observed, double[] sigma, double[] baseWeight, List<ObservableSatellite> satellites)Simple constructor, for multi-dimensional measurements.protectedAbstractMeasurement(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 voidaddModifier(EstimationModifier<T> modifier)Add a modifier.protected voidaddParameterDriver(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.AbsoluteDategetDate()Get the date.intgetDimension()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.booleanisEnabled()Check if a measurement is enabled.voidsetEnabled(boolean enabled)Enable or disable a measurement.voidsetObservedValue(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 doublesignalTimeOfFlightAdjustableEmitter(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 doublesignalTimeOfFlightAdjustableEmitter(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 doublesignalTimeOfFlightAdjustableReceiver(Vector3D emitterPosition, AbsoluteDate emissionDate, PVCoordinatesProvider adjustableReceiver, AbsoluteDate approxReceptionDate, Frame frame)Compute propagation delay on a link leg (typically downlink or uplink).static doublesignalTimeOfFlightAdjustableReceiver(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:
setObservedValuein 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:
getParametersDriversin 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:
setEnabledin 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:
isEnabledin 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:
getDimensionin 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:
getTheoreticalStandardDeviationin 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:
getBaseWeightin 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:
getSatellitesin 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:
estimateWithoutDerivativesin 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:
estimatein 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:
getDatein 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:
getObservedValuein 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
estimatethe measurement.- Specified by:
addModifierin 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:
getModifiersin 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 atsignalArrivalDateframe- inertial frame in which bothadjustableEmitterPVandreceiverPositionare 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 atsignalArrivalDatesignalArrivalDate- 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 bothemitterPositionandadjustableReceiverPVare 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 asadjustableEmitterPVsignalArrivalDate- date at which the signal arrives to receiverframe- inertial frame in which bothadjustableEmitterPVandreceiverPositionare 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 asadjustableEmitterPVsignalArrivalDate- 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 bothemitterPositionandadjustableReceiverPVare 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 + 1andfirstDerivative + 2. The velocity will correspond to variablesfirstDerivative + 3,firstDerivative + 4andfirstDerivative + 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
-
-