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

[Orekit Users] Problem with Eckstein-Hechler propagation - 50km off from STK/J2 after 24h



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].


PNG image

PNG image