Class KalmanEstimator
- java.lang.Object
-
- org.orekit.estimation.sequential.KalmanEstimator
-
public class KalmanEstimator extends Object
Implementation of a Kalman filter to perform orbit determination.The filter uses a
NumericalPropagatorBuilder
to initialize its reference trajectoryNumericalPropagator
.The estimated parameters are driven by
ParameterDriver
objects. They are of 3 different types:- Orbital parameters:The position and velocity of the spacecraft, or, more generally, its orbit.
These parameters are retrieved from the reference trajectory propagator builder when the filter is initialized. - Propagation parameters: Some parameters modelling physical processes (SRP or drag coefficients etc...).
They are also retrieved from the propagator builder during the initialization phase. - Measurements parameters: Parameters related to measurements (station biases, positions etc...).
They are passed down to the filter in its constructor.
The total number of estimated parameters is m, the size of the state vector.
The Kalman filter implementation used is provided by the underlying mathematical library Hipparchus. All the variables seen by Hipparchus (states, covariances, measurement matrices...) are normalized using a specific scale for each estimated parameters or standard deviation noise for each measurement components.
A
KalmanEstimator
object is built using thebuild
method of aKalmanEstimatorBuilder
.- Since:
- 9.2
- Author:
- Romain Gerbaud, Maxime Journot, Luc Maisonobe
- Orbital parameters:The position and velocity of the spacecraft, or, more generally, its orbit.
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description NumericalPropagator[]
estimationStep(ObservedMeasurement<?> observedMeasurement)
Process a single measurement.AbsoluteDate
getCurrentDate()
Get the current date.int
getCurrentMeasurementNumber()
Get the current measurement number.ParameterDriversList
getEstimatedMeasurementsParameters()
Get the list of estimated measurements parameters.ParameterDriversList
getOrbitalParametersDrivers(boolean estimatedOnly)
Get the orbital parameters supported by this estimator.org.hipparchus.linear.RealMatrix
getPhysicalEstimatedCovarianceMatrix()
Get the "physical" estimated covariance matrix (i.e.org.hipparchus.linear.RealVector
getPhysicalEstimatedState()
Get the "physical" estimated state (i.e.ParameterDriversList
getPropagationParametersDrivers(boolean estimatedOnly)
Get the propagator parameters supported by this estimator.NumericalPropagator[]
processMeasurements(Iterable<ObservedMeasurement<?>> observedMeasurements)
Process several measurements.void
setObserver(KalmanObserver observer)
Set the observer.
-
-
-
Method Detail
-
setObserver
public void setObserver(KalmanObserver observer)
Set the observer.- Parameters:
observer
- the observer
-
getCurrentMeasurementNumber
public int getCurrentMeasurementNumber()
Get the current measurement number.- Returns:
- current measurement number
-
getCurrentDate
public AbsoluteDate getCurrentDate()
Get the current date.- Returns:
- current date
-
getPhysicalEstimatedState
public org.hipparchus.linear.RealVector getPhysicalEstimatedState()
Get the "physical" estimated state (i.e. not normalized)- Returns:
- the "physical" estimated state
-
getPhysicalEstimatedCovarianceMatrix
public org.hipparchus.linear.RealMatrix getPhysicalEstimatedCovarianceMatrix()
Get the "physical" estimated covariance matrix (i.e. not normalized)- Returns:
- the "physical" estimated covariance matrix
-
getOrbitalParametersDrivers
public ParameterDriversList getOrbitalParametersDrivers(boolean estimatedOnly)
Get the orbital parameters supported by this estimator.If there are more than one propagator builder, then the names of the drivers have an index marker in square brackets appended to them in order to distinguish the various orbits. So for example with one builder generating Keplerian orbits the names would be simply "a", "e", "i"... but if there are several builders the names would be "a[0]", "e[0]", "i[0]"..."a[1]", "e[1]", "i[1]"...
- Parameters:
estimatedOnly
- if true, only estimated parameters are returned- Returns:
- orbital parameters supported by this estimator
-
getPropagationParametersDrivers
public ParameterDriversList getPropagationParametersDrivers(boolean estimatedOnly)
Get the propagator parameters supported by this estimator.- Parameters:
estimatedOnly
- if true, only estimated parameters are returned- Returns:
- propagator parameters supported by this estimator
-
getEstimatedMeasurementsParameters
public ParameterDriversList getEstimatedMeasurementsParameters()
Get the list of estimated measurements parameters.- Returns:
- the list of estimated measurements parameters
-
estimationStep
public NumericalPropagator[] estimationStep(ObservedMeasurement<?> observedMeasurement)
Process a single measurement.Update the filter with the new measurement by calling the estimate method.
- Parameters:
observedMeasurement
- the measurement to process- Returns:
- estimated propagators
-
processMeasurements
public NumericalPropagator[] processMeasurements(Iterable<ObservedMeasurement<?>> observedMeasurements)
Process several measurements.- Parameters:
observedMeasurements
- the measurements to process in chronologically sorted order- Returns:
- estimated propagators
-
-