Add a provider generating process noise increasing in time, for better Kalman filtering
The Kalman filter implementation in Orekit let the user provide the
process noise
matrix at each prediction step. As of 2018-03-22, the only
implementation of
the ProcessNoiseMatricProvider is ConstantProcessNoise. Users could
implement their
own process noise provider, as complex and as realistic as they want.
It would be interesting to have another implementation in Orekit that is
more realistic
than a constant matrix, and that simulates at least the expansion of the
uncertainty
ellipsoid along track as time without measurements increase.
A first idea would be to have user provide six polynomials representing
the diagonal
elements of the covariance in some Local Orbital Frame (say LVLH for
example). The
polynomial for the along velocity covariance would increase faster than
the polynomial
for the across directions. Then, by pre and post-multiplying by the
rotation matrix
we get from LOFType.rotationFromInertial, we get the dense matri in
inertial frame
we need to return.
This implementation is simple but much more realistic than a constant
matrix, and it
should properly take into account the fact the uncertainty from the
prediction step
is larger when the time between measurements is long than when
measurements occur
frequently.
Finding the polynomials would remain here the responsibility of the
caller. Later on,
we can think about using FieldPropagator on a reference orbit to
estimate these
polynomials during the mission analysis phase prior to operations.
(from redmine: issue id 403, created on 2018-03-22)