Is it possible to propagate a TLE over an impulsive maneuver event?
The following Python code tries to simulate an impulsive maneuver of 1 m/s, in the velocity direction, executed 30 minutes after TLE epoch:
mandv = Vector3D(1.0, 0.0, 0.0) # delta-v in VNC orbital reference frame
inertialFrame = FramesFactory.getEME2000()
dt = 1.0 # [s] propagation time step
manT = 30*60.0 # [s] man time from epoch
simDur = 90*60.0 # [s] simulatioun duration
# SPOT-5 TLE
tle_line1 = "1 27421U 02021A 02124.48976499 -.00021470 00000-0 -89879-2 0 20"
tle_line2 = "2 27421 98.7490 199.5121 0001333 133.9522 226.1918 14.26113993 62"
tle = TLE(tle_line1,tle_line2)
TLEepoch = tle.getDate()
# attitude law
attitudeOverride = LofOffset(inertialFrame,LOFType.VNC)
# maneuver triggers
triggers = DateDetector(AbsoluteDate(TLEepoch, manT))
# Impulse maneuver definition
impMan = ImpulseManeuver(triggers, attitudeOverride, mandv, isp)
# TLE propagation for simulation duration
propagator = TLEPropagator.selectExtrapolator(tle)
propagator.addEventDetector(impMan)
propagator.propagate(TLEepoch.shiftedBy(simDur))
The impulsive manuever is triggered after TLE epoch and propagation is performed from TLE epoch up to TLEepoch.shiftedBy(simDur)
, which is after maneuver time. I’d expect to see the maneuver effect in the final state.
But, in last line of the above code, I get the following java error:
propagator.propagate(TLEepoch.shiftedBy(simDur))
orekit.JavaError: <super: <class 'JavaError'>, <JavaError object>>
Java stacktrace:
org.orekit.errors.OrekitException: reset state not allowed
at org.orekit.propagation.analytical.tle.TLEPropagator.resetIntermediateState(TLEPropagator.java:559)
at org.orekit.propagation.analytical.AbstractAnalyticalPropagator.acceptStep(AbstractAnalyticalPropagator.java:278)
at org.orekit.propagation.analytical.AbstractAnalyticalPropagator.propagate(AbstractAnalyticalPropagator.java:147)
at org.orekit.propagation.AbstractPropagator.propagate(AbstractPropagator.java:186)
The message reset state not allowed
sounds to me like there is something wrong with this implementation. What is it?
Is there any example of maneuver execution with TLEPropagator I could refer to?
Thank you very much