Skip to content

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?

ItemDefinition
StatesRadius rr, radial velocity vrv_r, tangential velocity vtv_t
ControlsNonnegative components ur+,ur−,ut+,ut−u_r^+,u_r^-,u_t^+,u_t^-
ObjectiveMinimize ∫(∣ur∣+∣ut∣) dt\int(\lvert u_r\rvert+\lvert u_t\rvert)\,dt
PhasesOne phase, 60 nodes, free final time up to 55
New conceptsDimensionless orbital dynamics, split controls for absolute values, a long trajectory

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 μ=1\mu=1. Initial and final orbital periods are 2π≈6.282\pi\approx6.28 and 16π≈50.316\pi\approx50.3. 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.

Radius rr is distance from the central body, vrv_r is outward velocity, and vtv_t is velocity along the orbital direction. The thrust accelerations are uru_r and utu_t. Angle does not enter the dynamics, so it is omitted from the states and recovered for plotting by integrating θ˙=vt/r\dot\theta=v_t/r.

ur=ur+−ur−,ut=ut+−ut−,ur±,ut±≥0.u_r=u_r^+-u_r^-,\qquad u_t=u_t^+-u_t^-,\qquad u_r^\pm,u_t^\pm\ge0.

The positive radial component points outward; the negative one inward. Tangential components point along or against the direction of travel.

r˙=vr,v˙r=vt2r−1r2+ur+−ur−,v˙t=−vrvtr+ut+−ut−.\dot r=v_r,\qquad \dot v_r=\frac{v_t^2}r-\frac1{r^2}+u_r^+-u_r^-,\qquad \dot v_t=-\frac{v_rv_t}r+u_t^+-u_t^-.

Gravity and centrifugal acceleration balance for vt=1/rv_t=1/\sqrt r. Without tangential thrust, angular momentum rvtrv_t is conserved, so outward motion reduces tangential speed.

r(0)=1,vr(0)=0,vt(0)=1,r(tf)=4,vr(tf)=0,vt(tf)=0.5.r(0)=1,\quad v_r(0)=0,\quad v_t(0)=1,\qquad r(t_f)=4,\quad v_r(t_f)=0,\quad v_t(t_f)=0.5.

Both endpoints are circular orbits. Terminal angle is free.

0≤ur+,ur−,ut+,ut−≤0.01,1≤r≤4,1≤tf≤55.0\le u_r^+,u_r^-,u_t^+,u_t^-\le0.01,\qquad1\le r\le4,\qquad1\le t_f\le55.

Limits apply to components, so simultaneous radial and tangential thrust can have magnitude 0.0120.01\sqrt2. Radius bounds apply at interior nodes; endpoints are fixed by equalities.

J=∫0tf(ur++ur−+ut++ut−) dt.J=\int_0^{t_f}(u_r^++u_r^-+u_t^++u_t^-)\,dt.

Absolute value is not differentiable at zero. Splitting u=u+−u−u=u^+-u^- replaces ∣u∣|u| by the smooth linear sum u++u−u^++u^-. At the optimum, simultaneous opposing thrust only wastes cost, so one component is zero and the sum equals ∣u∣|u|.

The objective adds magnitudes by direction. It is an L1 measure, which exceeds the Euclidean thrust magnitude ur2+ut2\sqrt{u_r^2+u_t^2} when both directions are active. It can represent separate thrusters for the two directions.

Use μ=1\mu=1, umax⁡=0.01u_{\max}=0.01, initial state (1,0,1)(1,0,1), target state (4,0,0.5)(4,0,0.5), and maximum time 55. Guess final time 50, radius linear from 1 to 4, zero radial velocity, and tangential velocity 1/r1/\sqrt r. Set ut+=0.005u_t^+=0.005 and the other controls to zero. The guess approximates a slow outward spiral. Sixty nodes resolve the long trajectory.

Path in the orbital plane. The central dot is the attracting body; gray dashed circles mark r = 1 and r = 4. Dots are node positions and orange arrows show thrust direction and relative magnitude.
Path in the orbital plane. The central dot is the attracting body; gray dashed circles mark r = 1 and r = 4. Dots are node positions and orange arrows show thrust direction and relative magnitude.
Radius, tangential and radial velocities, and signed radial and tangential thrust accelerations. Red dotted lines mark component limits ±0.01.
Radius, tangential and radial velocities, and signed radial and tangential thrust accelerations. Red dotted lines mark component limits ±0.01.
Transfer motion beside radius and tangential thrust histories. The vertical cursor marks the current time.
  • 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.

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, vt=1/rv_t=1/\sqrt r. The reduction from outward motion, −vrvt/r-v_rv_t/r, can exceed the acceleration from utu_t. Energy rises even as tangential speed falls.

A slow, nearly circular spiral has an ideal velocity-change requirement of 1−0.5=0.51-0.5=0.5. 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.

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).

  • Raise tf_max from 55 to 70. A representative solve finishes around 65 with objective near 0.50 and several coast intervals.
  • Change rf and vtf together to preserve a circular target: for rf = 2, use vtf = 1/sqrt(2) (about 0.707).
  • Raise u_max to 0.02 and compare revolutions and the objective with the Hohmann value about 0.449.
Terminal window
uv run python examples/15_low_thrust_orbit_transfer.py

View the Python source on GitHub.