Hi all,
This is my first post as I have recently started using orekit for my
master thesis, I hope the community can provide some advice, and I
thank you in advance for that.
I am planning on propagating using Eckstein-hechler (EH) propagator,
my intention is to have a fast propagation with custom stephandlers
which I have already implemented. I could make-do with a simple J2,
but in orekit I found that EH was the simplest that included Earth
oblateness effect (which I definitely need to consider).
I run Orekit from Matlab, and have tested my orbit propagation using
Keplerianpropagator against STK successfully. However, when I cross
check the results of orekit's EH propagator with STK's J2 or J4, I see
a huge discordance that I cannot attribute to nominal differences in
the propagators margins of error. I am talking of about 51 km of error
(ground track projection) after just 24 hours.
Since the 2-body problem matches the results of STK, I assume my model
and my synchronization of orekit and STK are correct. I assume I am
having issues with orekit's EH propagator but I cannot see why or
where. There's some more info below. *Any suggestions will be
appreciated!*
Thank you!
Alvaro
------------------------------------
I am attaching two images with the ground tracks after 5 days:
- EH.png : the propagation of orekit/EH vs STK/J2.
- Kepler.png : the propagation of orekit/Kepler and STK/2-body
propagation
Here are the parameters of my orbit.
Propagation for 5 days starts on 2004-jan-01 at 01:30:00 UTC.
semimajor axis 7578137 m.
eccentricity 0.
inclination 98.8 deg.
argument of perigee 90 deg.
RAAN 0.
true anomaly 0.
My initializations (note matlab's syntax to use java objects):
initialDate = AbsoluteDate(2004, 01, 01, 01, 30, 00.000,...
TimeScalesFactory.getUTC());
inertialFrame = FramesFactory.getEME2000();
orbit = KeplerianOrbit(a, e, i, omega, raan, lv,...
PositionAngle.TRUE,...
inertialFrame, initialDate, ...
Constants.EIGEN5C_EARTH_MU);
EcksteinHechlerPropagator(orbit,...
Constants.EIGEN5C_EARTH_EQUATORIAL_RADIUS,...
Constants.EIGEN5C_EARTH_MU, ...
Constants.EIGEN5C_EARTH_C20,...
Constants.EIGEN5C_EARTH_C30, ...
Constants.EIGEN5C_EARTH_C40,...
Constants.EIGEN5C_EARTH_C50,...
Constants.EIGEN5C_EARTH_C60);
and my transformations to ECEF (these happen in the fixedstephandler,
coded in java):
this.ECEFframe = FramesFactory.getITRF(IERSConventions.IERS_2010, true)
...
Transform fromJ2000toITRFtransform =
currentState.getFrame().getTransformTo(this.ECEFframe,
currentState.getDate());
// Obtain satellite position vector
Vector3D satelliteVector = fromJ2000toITRFtransform.transformVector(
currentState.getPVCoordinates().getPosition());
satLatitudes.add(satelliteVector.getDelta());
satLongitudes.add(satelliteVector.getAlpha() > FastMath.PI ?
satelliteVector.getAlpha()-2*FastMath.PI :
satelliteVector.getAlpha()); // To change representation from [0, 2pi]
to [-pi, pi].