Class AbstractMeasurement<T extends ObservedMeasurement<T>>

    • 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 measurement
        observed - observed value
        sigma - theoretical standard deviation
        baseWeight - base weight
        satellites - 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 measurement
        observed - observed value
        sigma - theoretical standard deviation
        baseWeight - base weight
        satellites - 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
      • 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 interface ObservedMeasurement<T extends ObservedMeasurement<T>>
        Parameters:
        enabled - if true the measurement will be enabled, otherwise it will be disabled
      • 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 interface ObservedMeasurement<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 interface ObservedMeasurement<T extends ObservedMeasurement<T>>
        Returns:
        expected standard deviation
        See Also:
        ObservedMeasurement.getBaseWeight()
      • 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 number
        evaluation - evaluation number
        states - 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 number
        evaluation - evaluation number
        states - orbital states at measurement date
        Returns:
        theoretical value
        See Also:
        estimate(int, int, SpacecraftState[])
      • 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 interface ObservedMeasurement<T extends ObservedMeasurement<T>>
        Parameters:
        iteration - iteration number
        evaluation - evaluations number
        states - orbital states corresponding to ObservedMeasurement.getSatellites() at measurement date
        Returns:
        estimated measurement
      • getObservedValue

        public double[] getObservedValue()
        Get the observed value.

        The observed value is the value that was measured by the instrument.

        Specified by:
        getObservedValue in interface ComparableMeasurement
        Returns:
        observed value
      • signalTimeOfFlight

        public static double signalTimeOfFlight​(TimeStampedPVCoordinates adjustableEmitterPV,
                                                Vector3D receiverPosition,
                                                AbsoluteDate signalArrivalDate,
                                                Frame receiverFrame)
        Compute propagation delay on a link leg (typically downlink or uplink).
        Parameters:
        adjustableEmitterPV - position/velocity of emitter that may be adjusted
        receiverPosition - fixed position of receiver at signalArrivalDate
        receiverFrame - frame in which both adjustableEmitterPV and receiver receiverPosition are defined
        signalArrivalDate - date at which the signal arrives to receiver
        Returns:
        positive delay between signal emission and signal reception dates
        Since:
        12.1
      • signalTimeOfFlight

        public static double signalTimeOfFlight​(PVCoordinatesProvider adjustableEmitter,
                                                AbsoluteDate approxEmissionDate,
                                                Vector3D receiverPosition,
                                                AbsoluteDate signalArrivalDate,
                                                Frame receiverFrame)
        Compute propagation delay on a link leg (typically downlink or uplink).
        Parameters:
        adjustableEmitter - position/velocity provider of emitter
        approxEmissionDate - approximate emission date
        receiverPosition - fixed position of receiver at signalArrivalDate
        signalArrivalDate - date at which the signal arrives to receiver
        receiverFrame - frame in which receiver is defined
        Returns:
        positive delay between signal emission and signal reception dates
        Since:
        12.1
      • signalTimeOfFlight

        public static <T extends CalculusFieldElement<T>> T signalTimeOfFlight​(TimeStampedFieldPVCoordinates<T> adjustableEmitterPV,
                                                                               FieldVector3D<T> receiverPosition,
                                                                               FieldAbsoluteDate<T> signalArrivalDate,
                                                                               Frame receiverFrame)
        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 adjusted
        receiverPosition - fixed position of receiver at signalArrivalDate, in the same frame as adjustableEmitterPV
        signalArrivalDate - date at which the signal arrives to receiver
        receiverFrame - frame in which receiver is defined
        Returns:
        positive delay between signal emission and signal reception dates
        Since:
        12.1
      • signalTimeOfFlight

        public static <T extends CalculusFieldElement<T>> T signalTimeOfFlight​(FieldPVCoordinatesProvider<T> adjustableEmitter,
                                                                               FieldAbsoluteDate<T> approxEmissionDate,
                                                                               FieldVector3D<T> receiverPosition,
                                                                               FieldAbsoluteDate<T> signalArrivalDate,
                                                                               Frame receiverFrame)
        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 emitter
        approxEmissionDate - approximate emission date
        receiverPosition - fixed position of receiver at signalArrivalDate, in the same frame as adjustableEmitterPV
        signalArrivalDate - date at which the signal arrives to receiver
        receiverFrame - frame in which receiver is defined
        Returns:
        positive delay between signal emission and signal reception dates
        Since:
        12.1
      • 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 and firstDerivative + 2. The velocity will correspond to variables firstDerivative + 3, firstDerivative + 4 and firstDerivative + 5. The acceleration will correspond to constants.

        Parameters:
        state - state of the satellite considered
        firstDerivative - index of the first derivative
        freeParameters - total number of free parameters in the gradient
        Returns:
        Cartesian coordinates as derivatives
        Since:
        10.2