15. Low-thrust orbit transfer
Electric propulsion uses propellant efficiently but produces very little thrust compared with gravity. A spacecraft must gradually expand its orbit over several revolutions. When and in which direction should it thrust to save fuel?
| Item | Definition |
|---|---|
| States | Radius , radial velocity , tangential velocity |
| Controls | Nonnegative components |
| Objective | Minimize |
| Phases | One phase, 60 nodes, free final time up to 55 |
| New concepts | Dimensionless orbital dynamics, split controls for absolute values, a long trajectory |
Situation
Section titled “Situation”Transfer from a circular orbit of radius 1 to one of radius 4. Each thrust-acceleration component is limited to 0.01, only 1% of gravity at the initial orbit. Length and velocity units are the initial radius and circular speed, so the gravitational parameter is . Initial and final orbital periods are and . The time limit 55 equals about 8.8 initial orbital periods.
Thrust is expressed as acceleration, and spacecraft mass change is neglected. The objective is a componentwise accumulated velocity change, used as a propellant-use measure.
Formulation
Section titled “Formulation”Coordinates
Section titled “Coordinates”Radius is distance from the central body, is outward velocity, and is velocity along the orbital direction. The thrust accelerations are and . Angle does not enter the dynamics, so it is omitted from the states and recovered for plotting by integrating .
Split positive and negative controls
Section titled “Split positive and negative controls”The positive radial component points outward; the negative one inward. Tangential components point along or against the direction of travel.
Dynamics
Section titled “Dynamics”Gravity and centrifugal acceleration balance for . Without tangential thrust, angular momentum is conserved, so outward motion reduces tangential speed.
Boundary conditions
Section titled “Boundary conditions”Both endpoints are circular orbits. Terminal angle is free.
Constraints
Section titled “Constraints”Limits apply to components, so simultaneous radial and tangential thrust can have magnitude . Radius bounds apply at interior nodes; endpoints are fixed by equalities.
Objective
Section titled “Objective”Absolute value is not differentiable at zero. Splitting replaces by the smooth linear sum . At the optimum, simultaneous opposing thrust only wastes cost, so one component is zero and the sum equals .
The objective adds magnitudes by direction. It is an L1 measure, which exceeds the Euclidean thrust magnitude when both directions are active. It can represent separate thrusters for the two directions.
Parameters and initial guess
Section titled “Parameters and initial guess”Use , , initial state , target state , and maximum time 55. Guess final time 50, radius linear from 1 to 4, zero radial velocity, and tangential velocity . Set and the other controls to zero. The guess approximates a slow outward spiral. Sixty nodes resolve the long trajectory.
Results
Section titled “Results”

- The spacecraft makes about 3.8 revolutions and arrives at 55.0, reaching the time upper bound 55.
- Objective: 0.579.
- Tangential thrust stays near 0.01 for most of the transfer. Outward thrust appears around time 36–41, followed by a coast around 43–48.
- The final burn combines forward and inward thrust to bring radial velocity back to zero.
- Despite forward thrust, tangential velocity decreases from 1 to 0.5.
Explanation
Section titled “Explanation”Why forward thrust can accompany decreasing speed
Section titled “Why forward thrust can accompany decreasing speed”Forward thrust raises orbital energy, expanding the orbit. Circular speed is lower at larger radius, . The reduction from outward motion, , can exceed the acceleration from . Energy rises even as tangential speed falls.
Time and fuel
Section titled “Time and fuel”A slow, nearly circular spiral has an ideal velocity-change requirement of . A two-impulse Hohmann transfer needs about 0.449. The computed objective 0.579 is larger than both.
The active time limit forces near-continuous thrust to reach radius 4 by time 55, leaving little opportunity to coast. A looser limit allows thrust to concentrate at more efficient orbital locations.
Node resolution
Section titled “Node resolution”The path covers roughly four revolutions. The angle is reconstructed for the scene, while one polynomial represents each state and control over the full interval. Around thrust switches, interpolation can oscillate or exceed 0.01 between nodes because constraints apply only at nodes (multiple phases).
Try it
Section titled “Try it”- Raise
tf_maxfrom 55 to 70. A representative solve finishes around 65 with objective near 0.50 and several coast intervals. - Change
rfandvtftogether to preserve a circular target: forrf = 2, usevtf = 1/sqrt(2)(about 0.707). - Raise
u_maxto 0.02 and compare revolutions and the objective with the Hohmann value about 0.449.
uv run python examples/15_low_thrust_orbit_transfer.py