Enabling backward propagation in batch least-square orbit determination
As it is right now Orekit always performs forward propagation in the
batch LS orbit determination algorithm.
The class "Model" implements the forward propagation in method "value",
and the handler "MultiSatStepHandler" is designed only for forward
propagation.
I think it would be nice to let the "Model" choose if it must run the
propagation forward or backward.
In the use case where most (or all) of the measurements' dates are older
than the orbit determination date, Orekit will always propagate backward
a first time to the first measurement date, doing nothing; then
propagate forward until the last measurement date, gathering residuals
on the fly and computing a batch LS evaluation.
In my opinion it would be much more efficient to gather the residuals
during the backward propagation. This would avoid propagating twice for
each iteration of the batch LS.
The idea would be to implement a switch in the "Model" class. If the
date of the orbit determination is closer from the date of the first
measurement than from the date of the last measurement then we propagate
forward. Otherwise we propagate backward.
Therefore we ensure that the "useless" propagation step is as short as
possible.
(from redmine: issue id 375, created on 2018-02-14, closed on 2018-06-04)