[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orekit Users] question on using Orekit

"Ng, Alfred (ASC/CSA)" <alfred.ng@canada.ca> a écrit :


Hi Alfred,

I'm new to using Orekit and I have one question.

Suppose we have onboard navigation data from the GPS receiver, which routines within Orekit, if they exist, that can be used to process the GPS data and determine the orbit as an output. Any suggestion or information is appreciated. Thank you!

What you are looking after is an orbit determination system.
There are already several basic blocks in Orekit that would help
creating one. The most important one is the propagation of
Jacobians matrices in the NumericalPropagator class. Basically,
in addition to simply propagating the orbit as usual, you can
register some AdditionalEquations to it. Here, the implementation
of AdditionalEquations that could help you is already present,
it is the PartialDerivativesEquations class.

So with this setup, for any estimated initial orbit, you can
run the propagator and at each GPS point received, you compare
the observed point and the one given by the propagator. At the
same time, you take care of the state Jacobian, i.e. the
transition matrix between the estimated initial orbit and the
current propagated point. If your estimated initial orbit was
wrong, the two points will be different, and using the state
Jacobian, you can determine how much you should change the
estimated initial state so for the next propagation the points
will be closer to each other.

So what remains to be done is this loop around the propagator
(all the underlying parts have been there in Orekit since
several years). There are two classical approaches, either
Kalman filtering that uses one measurement at a time and
continuously update the estimated state, and batch least squares
filtering that uses all the measurements in a time range of
a few orbits.

Note that currently, these higher level parts are not available
in the published version of Orekit yet. They will be available
in a future version, but I cannot say when.

If your needs are restricted to a set of GPS position/velocity
there are also some more basic ways, using the various
PropagatorConvertor implementations. They are basically
devoted to find the configuration of a propagator that matches
another propagator (typically if you want to go from a SGP4
to a more sophisticated numerical propagator and wants to
make sure the match is correct over at least a few orbits),
but they can also take as input a list of SpacecraftState
instances. If you wrap up your GPS data as such a list,
this may suit your needs. Beware this is not really extensible,
it is only a makeshift.

best regards,

Alfred Ng

Gestionnaire  (Électronique et contrôle), Sciences & technologies spatiales
Agence spatiale canadienne / Gouvernement du Canada
alfred.ng@canada.ca / Tél. : 450-926-4641 / Tél. cell. : 514-502-5568

Manager (Electronics & Control), Space Science & Technology
Canadian Space Agency / Government of Canada
alfred.ng@canada.ca / Tel: 450-926-4641 / Cel. : 514-502-5568