I am setting up a script to compute and apply low thrust maneuvers to my satellite. I have set up my custom maneuver as follows:
# Set up thrust direction and attitude provider
thrustDirProvider = ThrustDirectionAndAttitudeProvider.buildFromDirectionInLOF(
LOFType.QSW, # local orbital frame (QSW frame is same as RTN )
thrustDirectionProvider, # variableDirectionInFrame
Vector3D.MINUS_I # thrusterAxisInSatelliteFrame
)
# Define custom maneuver and add to propagator
customManeuver = Maneuver(thrustDirProvider, maneuverTrigger, customPropulsionModel)
propagator_num.addForceModel(customManeuver)
My script works. However, i am unable to understand the purpose of the ThrustDirectionAndAttitudeProvider
being used. I have also noticed that changing the thrusterAxisInSatelliteFrame
from Vector3D.MINUS_I
to Vector3D.MINUS_J
doesn’t change the output (orbital elements) of the simulation
Can someone explain what this ThrustDirectionAndAttitudeProvider does during propagation?
Additional info: In my script getDirection()
and getThrustVector()
methods of my custom PropulsionModel
are already set up to return the thrust vector and thrust direction in satellite frame. And computeThrustDirection()
method in my custom ThrustDirectionProvider
returns the thrust direction in local orbit (RTN) frame.