Class GroundStation
- All Implemented Interfaces:
MeasurementParticipant,Observer,ParameterDriversProvider
- Direct Known Subclasses:
EarthBasedStation
This class adds a position offset parameter to a base topocentric frame.
Since 9.3, this class also adds a station clock offset parameter, which manages the value that must be subtracted from the observed measurement date to get the real physical date at which the measurement was performed (i.e. the offset is negative if the ground station clock is slow and positive if it is fast).
- station clock offset, controlled by
MeasurementParticipant.getClockBiasDriver() - station position offset, controlled by
getEastOffsetDriver(),getNorthOffsetDriver()andgetZenithOffsetDriver()
- Since:
- 8.0
- Author:
- Luc Maisonobe
-
Field Summary
Fields inherited from interface org.orekit.estimation.measurements.MeasurementParticipant
ACCELERATION_SUFFIX, BIAS_SUFFIX, DRIFT_SUFFIX, OFFSET_SUFFIX -
Constructor Summary
ConstructorsConstructorDescriptionGroundStation(TopocentricFrame baseFrame) Build a ground station ignoringstation displacements.GroundStation(TopocentricFrame baseFrame, QuadraticClockModel clock) Simple constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected Vector3DcomputeDisplacement(AbsoluteDate date, Vector3D position) Get the station displacement.Get the base frame associated with the station.Get a driver allowing to change station position along East axis.getFieldPVCoordinatesProvider(int freeParameters, Map<String, Integer> parameterIndices) Return the FieldPVCoordinatesProvider.Get a driver allowing to change station position along North axis.Get the geodetic point at the center of the offset frame.<T extends CalculusFieldElement<T>>
FieldGeodeticPoint<T> getOffsetGeodeticPoint(FieldAbsoluteDate<T> date) Get the geodetic point at the center of the offset frame.getOffsetToInertial(Frame inertial, AbsoluteDate date, boolean clockOffsetAlreadyApplied) Get the transform between offset frame and inertial frame.getOffsetToInertial(Frame inertial, FieldAbsoluteDate<Gradient> offsetCompensatedDate, int freeParameters, Map<String, Integer> indices) Get the transform between offset frame and inertial frame with derivatives.protected FieldVector3D<Gradient> Retrieve station's position in body shape frame.Return the PVCoordinatesProvider.Get a driver allowing to change station position along Zenith axis.final booleanGet the type of object being used in measurement observations.protected FieldStaticTransform<Gradient> shiftKinematicTransform(KinematicTransform kinematicTransform, Gradient dt) Shift a kinematic transform by a Gradient time into a FieldStaticTransform.Methods inherited from class org.orekit.estimation.measurements.AbstractParticipant
addParameterDriver, createEmptyQuadraticClock, extractFieldPVCoordinatesProvider, extractPVCoordinatesProvider, getName, getParametersDrivers, getQuadraticClockModelMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.orekit.estimation.measurements.MeasurementParticipant
getClockAccelerationDriver, getClockBiasDriver, getClockDriftDriver, getFieldOffsetRate, getFieldOffsetValue, getName, getOffsetRate, getOffsetValue, getQuadraticClockModel, getQuadraticFieldClockMethods inherited from interface org.orekit.estimation.measurements.Observer
getCorrectedReceptionDate, getCorrectedReceptionDateField, getOffsetToInertialMethods inherited from interface org.orekit.utils.ParameterDriversProvider
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, getParametersDrivers, isSupported
-
Constructor Details
-
GroundStation
Build a ground station ignoringstation displacements.The initial values for the station offset model (
MeasurementParticipant.getClockBiasDriver(),getEastOffsetDriver(),getNorthOffsetDriver(),getZenithOffsetDriver()) are set to 0. This implies that as long as these values are not changed, the offset frame is the same as thebase frame. As soon as some of these models are changed, the offset frame moves away from thebase frame.- Parameters:
baseFrame- base frame associated with the station, without *any* parametric model (no station offset)- Since:
- 13.0
- See Also:
-
GroundStation
Simple constructor.The initial values for the station offset model (
MeasurementParticipant.getClockBiasDriver(),getEastOffsetDriver(),getNorthOffsetDriver(),getZenithOffsetDriver(),MeasurementParticipant.getClockBiasDriver()) are set to 0. This implies that as long as these values are not changed, the offset frame is the same as thebase frame. As soon as some of these models are changed, the offset frame moves away from thebase frame.- Parameters:
baseFrame- base frame associated with the station, without *any* parametric model (no station offset)clock- new quadratic clock model with user-supplied displacements- Since:
- 12.1
-
-
Method Details
-
isSpaceBased
public final boolean isSpaceBased()Get the type of object being used in measurement observations.- Specified by:
isSpaceBasedin interfaceObserver- Returns:
- boolean
-
getEastOffsetDriver
Get a driver allowing to change station position along East axis.- Returns:
- driver for station position offset along East axis
-
getNorthOffsetDriver
Get a driver allowing to change station position along North axis.- Returns:
- driver for station position offset along North axis
-
getZenithOffsetDriver
Get a driver allowing to change station position along Zenith axis.- Returns:
- driver for station position offset along Zenith axis
-
getBaseFrame
Get the base frame associated with the station.The base frame corresponds to a null position offset, null polar motion, null meridian shift
- Returns:
- base frame associated with the station
-
computeDisplacement
Get the station displacement.- Parameters:
date- current dateposition- raw position of the station in Earth frame before displacement is applied- Returns:
- station displacement
- Since:
- 9.1
-
getOffsetGeodeticPoint
Get the geodetic point at the center of the offset frame.- Parameters:
date- current date (may be null if displacements are ignored)- Returns:
- geodetic point at the center of the offset frame
- Since:
- 9.1
-
getOffsetGeodeticPoint
public <T extends CalculusFieldElement<T>> FieldGeodeticPoint<T> getOffsetGeodeticPoint(FieldAbsoluteDate<T> date) Get the geodetic point at the center of the offset frame.- Type Parameters:
T- type of the field elements- Parameters:
date- current date(must be non-null, which is a more stringent condition * than ingetOffsetGeodeticPoint(AbsoluteDate)- Returns:
- geodetic point at the center of the offset frame
- Since:
- 12.1
-
getPVCoordinatesProvider
Return the PVCoordinatesProvider.- Specified by:
getPVCoordinatesProviderin interfaceObserver- Returns:
- pos/vel coordinates provider
-
getFieldPVCoordinatesProvider
public FieldPVCoordinatesProvider<Gradient> getFieldPVCoordinatesProvider(int freeParameters, Map<String, Integer> parameterIndices) Return the FieldPVCoordinatesProvider.- Specified by:
getFieldPVCoordinatesProviderin interfaceObserver- Parameters:
freeParameters- number of estimated parametersparameterIndices- indices of the estimated parameters in derivatives computations, must be driver- Returns:
- pos/vel coordinates provider for values with Gradient field
-
getOrigin
protected FieldVector3D<Gradient> getOrigin(FieldAbsoluteDate<Gradient> date, Map<String, Integer> indices) Retrieve station's position in body shape frame.- Parameters:
date- dateindices- mapping from parameters' name to derivatives' index.- Returns:
- origin position
-
shiftKinematicTransform
protected FieldStaticTransform<Gradient> shiftKinematicTransform(KinematicTransform kinematicTransform, Gradient dt) Shift a kinematic transform by a Gradient time into a FieldStaticTransform.- Parameters:
kinematicTransform- kinematic transform to shiftdt- time to shift by- Returns:
- Field static transform shifted by dt
- Since:
- 14.0
-
getOffsetToInertial
public Transform getOffsetToInertial(Frame inertial, AbsoluteDate date, boolean clockOffsetAlreadyApplied) Get the transform between offset frame and inertial frame.The offset frame takes the current position offset, polar motion and the meridian shift into account. The frame returned is disconnected from later changes in the parameters. When the
parametersmanaging these offsets are changed, the method must be called again to retrieve a new offset frame.- Specified by:
getOffsetToInertialin interfaceObserver- Parameters:
inertial- inertial frame to transform todate- date of the transformclockOffsetAlreadyApplied- if true, the specifieddateis as read by the ground station clock (i.e. clock offset not compensated), if false, the specifieddatewas already compensated and is a physical absolute date- Returns:
- transform between offset frame and inertial frame, at real measurement date (i.e. with clock, Earth and station offsets applied)
-
getOffsetToInertial
public FieldTransform<Gradient> getOffsetToInertial(Frame inertial, FieldAbsoluteDate<Gradient> offsetCompensatedDate, int freeParameters, Map<String, Integer> indices) Get the transform between offset frame and inertial frame with derivatives.As the East and North vectors are not well defined at pole, the derivatives of these two vectors diverge to infinity as we get closer to the pole. So this method should not be used for stations less than 0.0001 degree from either poles.
- Specified by:
getOffsetToInertialin interfaceObserver- Parameters:
inertial- inertial frame to transform tooffsetCompensatedDate- date of the transform, clock offset and its derivatives already compensatedfreeParameters- total number of free parameters in the gradientindices- indices of the estimated parameters in derivatives computations, must be driver span name in map, not driver name or will not give right results (seeParameterDriver.getValue(int, Map))- Returns:
- transform between offset frame and inertial frame, at specified date
-