Hi you will find below the code I use but it is the same code that initializes the orbit that is then passed onto the propagator. The only thing I have changed is the anomaly of the orbit epoch for the figures from the left to the right.
Another person I know has noticed the same behavior. I am basically initializing a SSO orbit with:
a = 6928137m, i = 97.594, again only difference between the 2 plots is the anomaly which should not make the ground track all that difference from my understanding.
I can’t understand why the results from the Eicklein-Hechler would be different from the DSST Mean either.
Maybe the coordinate transformation is doing something funny but then I can’t understand why it would look fine for 0° and different for 90°.
Code involved:
Orbit initialization (I have also tried initializing with an Equinoctial orbit resulting to the same behavior):
this.initialOrbit = new KeplerianOrbit(a, e, Math.toRadians(i),
Math.toRadians(omega), Math.toRadians(raan), Math.toRadians(nu), PositionAngle.MEAN,
this.inertialFrame, startDate, Constants.EGM96_EARTH_MU);
propagator initialization:
if (propagatorParameters.type == PropagatorKind.NUMERICAL) {
NumericalPropagator numericalPropagator = new NumericalPropagator(integrator);
this.setForces(propagatorParameters.forces, earthFrame, numericalPropagator);
numericalPropagator.setInitialState(new SpacecraftState(this.initialOrbit, mass));
this.propagator = numericalPropagator;
} else if (propagatorParameters.type == PropagatorKind.DSST) {
DSSTPropagator dsstPropagator = new DSSTPropagator(integrator, !propagatorParameters.considerOsculatingOrbit);
dsstPropagator.setInterpolationGridToFixedNumberOfPoints(3);
this.setForces(propagatorParameters.forces, earthFrame, dsstPropagator);
dsstPropagator.setInitialState(new SpacecraftState(this.initialOrbit, mass), propagatorParameters.considerOsculatingOrbit);
this.propagator = dsstPropagator;
}
NadirPointing attitudeProvider = new NadirPointing(this.propagator.getFrame(), earth);
this.propagator.setAttitudeProvider(attitudeProvider);
Coordinates transformation in the StepHandler using a master-mode propagation:
public void handleStep(SpacecraftState s, boolean isLast) {
AbsoluteDate date = s.getDate();
PVCoordinates coord = s.getPVCoordinates();
Vector3D pos = coord.getPosition();
GeodeticPoint latlong = this.earth.transform(pos, this.eme2000, date);
Vector3D itrfpos = this.eme2000.getTransformTo(this.earth.getBodyFrame(), date).transformPVCoordinates(coord).getPosition();
// These coordinates are then just printed out
}
I have also tried to print out the ITRF cartesian coordinates in 3D and we can see the same discrepancy.
Thank you for reading!