Hi @JulienL
for i in range(len(TLEs)):
tle_i.append(TLEs[i].getI())
tle_omega.append(TLEs[i].getRaan())
tle_e.append(TLEs[i].getE())
tle_arg.append(TLEs[i].getPerigeeArgument())
tle_M.append(TLEs[i].getMeanAnomaly())
tle_date.append(TLEs[i].getDate())
tle_meanMotion.append(TLEs[i].getMeanMotion())
You can’t use directly the orbital parameters contained in the TLE.
These parameters are only significant with respect to the propagation model (e.g. SGP4). Therefore, you must call the TLEPropagator
to compute the correct orbital elements at the TLE epoch before using them. I’m not a Python expert, but you can try something like that:
for i in range(len(TLEs)):
propagator = TLEPropagator.selectExtrapolator(TLEs[i])
orbit = propagator.propagate(TLEs[i].getDate()).getOrbit()
keplerian = OrbitType.KEPLERIAN.convertType(orbit)
tle_i.append(keplerian.getI())
tle_a.append(keplerian.geSma())
...
Other remarks.
-
If you only want to consider J2 perturbation, you can remove the following line:
propagator.addForceModel(DSSTZonal(provider))
-
Using DSST propagator, you can increase the integration step of the Runge-Kutta integrator. For instance, for LEO satellites you can try using 5 orbital periods. For MEO/GEO an integration step of 43200 seconds is acceptable.
Best regards,
Bryan