Hello, I am attempting to create a maneuver with the following conditions:
- The maneuver begins when the spacecraft reaches a minimum altitude.
- There is a set maximum duration for the maneuver. If the spacecraft reaches a maximum altitude before this duration, the maneuver should cease.
- If the maximum altitude is not achieved within the maximum duration, the thrust must be halted. After a specified waiting period, the thrust should be reactivated.
- This cycle of thrusting, waiting, and reactivation should repeat until the maximum altitude is attained.
Currently, a code implementing only minimum and maximum altitude is as follows:
// The maneuver is triggered when the mean SMA is lower than min_altitude and stops when it reaches max_altitude
MeanSemiMajorAxisDetector minSmaDetector = new MeanSemiMajorAxisDetector(Constants.WGS84_EARTH_EQUATORIAL_RADIUS+stationKeepingParameters[0]);
MeanSemiMajorAxisDetector maxSmaDetector = new MeanSemiMajorAxisDetector(Constants.WGS84_EARTH_EQUATORIAL_RADIUS+stationKeepingParameters[1]);
// Negate minSmaDetector since the start and stop firing events are triggered only on increasing event
EventBasedManeuverTriggers trigger = new EventBasedManeuverTriggers(new NegateDetector(minSmaDetector),maxSmaDetector);
// Constant thrust direction in TNW
ThrustDirectionAndAttitudeProvider thrustDirProvider = ThrustDirectionAndAttitudeProvider.buildFromFixedDirectionInSatelliteFrame(Vector3D.PLUS_I);
ConfigurableLowThrustManeuver maneuver = new ConfigurableLowThrustManeuver(thrustDirProvider,trigger,stationKeepingParameters[2],stationKeepingParameters[3]);
propagator.addForceModel(maneuver);
I am considering adding a DateDetector to control the thrust after a certain time, but I am unsure how to integrate it with the other triggers. Could you provide suggestions on how to modify my code to implement this maneuver? Your ideas would be greatly appreciated. Thank you!