Class SequentialBatchLSEstimator
- java.lang.Object
-
- org.orekit.estimation.leastsquares.BatchLSEstimator
-
- org.orekit.estimation.leastsquares.SequentialBatchLSEstimator
-
public class SequentialBatchLSEstimator extends BatchLSEstimator
Sequential least squares estimator for orbit determination.When an orbit has already been estimated and new measurements are given, it is not efficient to re-optimize the whole problem. Only considering the new measures while optimizing will neither give good results as the old measurements will not be taken into account. Thus, a sequential estimator is used to estimate the orbit, which uses the old results of the estimation and the new measurements.
In order to perform a sequential optimization, the user must configure a
SequentialGaussNewtonOptimizer
. Depending if its input data are an emptyLeastSquaresProblem.Evaluation
, a completeEvaluation
or an a priori state and covariance, different configuration are possible.1. No input data from a previous estimation
Then, the
SequentialBatchLSEstimator
can be used like aBatchLSEstimator
to perform the estimation. The user can initialize theSequentialGaussNewtonOptimizer
using the default constructor.final SequentialGaussNewtonOptimizer optimizer = new SequentialGaussNewtonOptimizer();
By default, a
QRDecomposer
is used as decomposition algorithm. In addition, normal equations are not form. It is possible to update these two default configurations by using:withDecomposer
method:optimizer.withDecomposer(newDecomposer);
withFormNormalEquations
method:optimizer.withFormNormalEquations(newFormNormalEquations);
2. Initialization using a previous
Evalutation
In this situation, it is recommended to use the second constructor of the optimizer class.
final SequentialGaussNewtonOptimizer optimizer = new SequentialGaussNewtonOptimizer(decomposer, formNormalEquations, evaluation);
Using this constructor, the user can directly configure the MatrixDecomposer and set the flag for normal equations without calling the two previous presented methods.
Note: This constructor can also be used to perform the initialization of 1. In this case, the
Evaluation evaluation
isnull
.3. Initialization using an a priori estimated state and covariance
These situation is a classical satellite operation need. Indeed, a classical action is to use the results of a previous orbit determination (estimated state and covariance) performed a day before, to improve the initialization and the results of an orbit determination performed the current day. In this situation, the user can initialize the
SequentialGaussNewtonOptimizer
using the default constructor.final SequentialGaussNewtonOptimizer optimizer = new SequentialGaussNewtonOptimizer();
The MatrixDecomposer and the flag about normal equations can again be updated using the two previous presented methods. The a priori state and covariance matrix can be set using:
withAPrioriData
method:optimizer.withAPrioriData(aPrioriState, aPrioriCovariance);
- Since:
- 11.0
- Author:
- Julie Bayard
-
-
Constructor Summary
Constructors Constructor Description SequentialBatchLSEstimator(SequentialGaussNewtonOptimizer sequentialOptimizer, PropagatorBuilder... propagatorBuilder)
Simple constructor.
-
Method Summary
-
Methods inherited from class org.orekit.estimation.leastsquares.BatchLSEstimator
addMeasurement, estimate, getEvaluationsCount, getIterationsCount, getLastEstimations, getMeasurementsParametersDrivers, getOptimum, getOrbitalParametersDrivers, getPhysicalCovariances, getPropagatorParametersDrivers, setConvergenceChecker, setMaxEvaluations, setMaxIterations, setObserver, setParametersConvergenceThreshold
-
-
-
-
Constructor Detail
-
SequentialBatchLSEstimator
public SequentialBatchLSEstimator(SequentialGaussNewtonOptimizer sequentialOptimizer, PropagatorBuilder... propagatorBuilder)
Simple constructor.If multiple
propagator builders
are set up, the orbits of several spacecrafts will be used simultaneously. This is useful if the propagators share some model or measurements parameters (typically pole motion, prime meridian correction or ground stations positions).Setting up multiple
propagator builders
is also useful when inter-satellite measurements are used, even if only one of the orbit is estimated and the other ones are fixed. This is typically used when very high accuracy GNSS measurements are needed and the navigation bulletins are not considered accurate enough and the navigation constellation must be propagated numerically.The solver used for sequential least squares problem is a
sequential Gauss Newton optimizer
. Details about how initialize it are given in the class JavaDoc.- Parameters:
sequentialOptimizer
- solver for sequential least squares problempropagatorBuilder
- builders to use for propagation.
-
-