Orbit Transfer Optimizer

Purpose

Find the best way to transfer from one orbit around a body to another orbit around the same body, using two burns (one intermediate orbit).

How To Use

Select the desired planet / moon / star. This has no effect on the geometry of the best transfer orbit; only on the magnitudes of values like km and m/s. (more bodies may be added if users ask nicely) Enter in the initial orbit of the spacecraft. This can be obtained from Kerbal Engineer Redux, for example. The initial orbit will appear in red. a: semimajor axis in km

e: eccentricity

i: inclination in Degrees

Ω: longitude of ascending node in Degrees

ϖ: longitude of periapsis in Degrees

ν start and ν end: sliders can be used to adjust the range of true anomaly that the program will search. Enter in the desired final orbit for the spacecraft. The final orbit will appear in blue. Push 'Calculate Best Orbit'. May take a few seconds to calculate. See the transfer orbit appear in green on the Orbit view. The black arrows show the location of the inital and final burns (but not their magnitude). (The arrows may not be visible because they are coincident with the other arrows.) To see information about the two burns required, and of the transfer orbit, click the Elements tab. Use the ViewBox slider to zoom in and out if needed.

For hyperbolic orbits

For hyperbolic orbits or for a semimajor axis larger than that allowed by the slider, enter the desired value into the box. The slider will turn red but it should still work. Hyperbolic orbits are one place where the ν limit sliders are useful, to prevent the burn from being too far away.

Interpretation of 'Elements' output

Total ΔV The total velocity change in meters/second to carry out this orbital transfer. Burn 1 The burn from the initial orbit to the transfer orbit. Burn 2 The burn from the transfer orbit to the final orbit. Orbital Speed Speed immediately before the burn takes place. Altitude Altitude (above the surface) when the burn takes place. KSP Navball The heading that your navball should read when you execute the burn. The first number is the 0-360° direction (north-east-south-west) and the second number is the -90 to 90 ° (radial in - radial out) LVLH Heading The velocity change of the burn in the pre-burn Local Vertical, Local Horizontal frame. Format is {Prograde, Normal, Radial}. This can be used as a sanity check. Cart. Vel. The velocity (before the burn) in cartesian coordinates: {X, Y, Z} Cart. ΔV The burn velocity change in cartesian coordinates: {X, Y, Z} Transfer Orbit The Keplerian elements of the transfer orbit. a Semimajor axis e eccentricity i inclination Ω Longitude of Ascending Node ω Argument of periapsis Long. of Peri. Longitude of periapsis ϖ Periapsis Radius radius to the planet's center Periapsis Radius radius to the planet's surface. Note that atmosphere and planetary surface are not taken into account during the optimizer calculation.

Theory:

Orbits are made of collections of points (and associated velocities) in space. To find the lowest-delta-V transfer between two orbits, we iterate over points on each of the orbits.

Assuming a massive body (such as planet) at the origin, and two given points in space, there usually* one DOF (Degree Of Freedom) to choose a conic-section orbit that passes through those points. When we associate velocities with each of those points, there is some orbit that passes through the points that requires the lowest amount of delta-V.

*There are 2 DOF for points exactly opposite one another, for example.

Details

Will this always find the lowest-delta-V transfer?

No.

Some optimal orbit transfers require 3 burns, such as a bi-elliptic transfer. Changing radius, eccenticity, and inclinations probably also requires multiple burns for the lowest total delta V.

Finding the best transfer orbit when two points are directly across from each other requires searching two DOF. Rather than slowly search another DOF my program guesses (somewhat poorly) to save time.

The brute-force search over points belonging to the initial and final orbits uses 24 x 24 steps. For closed orbits this corresponds to 15 degrees of true anomaly. To search more accurately, try adjusting the ν-start and ν-end sliders to encompass less than 180 degrees.

There could be other flaws that result in a less-than-perfect two-burn transfer. Use a reasonable margin of error when Kerbal lives are at risk.

Why use Longitude of Periapsis ϖ rather than Argument of Periapsis ω ?

Kerbal engineer gives Longitude of PE ϖ. To convert from ω remember that ϖ = Ω + ω.

Will this calculate interplanetary transfers?

Not quite. This program only handles one gravitating body, and does not take into account a planet or moon's finite Sphere of Influence. However, if your target is a moon with very small escape velocity (like Gilly) you can use this program to find a good way to transfer from Eve orbit into Gilly's orbit and intersect it.

Will this let me rendezvous with another craft?

Not directly, but if you are not under time constraints, one you have transferred to the other craft's orbit, you can then start a rendezvous procedure.

What's the radius of the sphere?

The sphere corresponds to the height of the atmosphere. The calculator itself does not take into account atmospheres, aerobraking, or the planetary surface(!) ... it is displayed as a visual indicator. To see whether the transfer orbit will intersect the atmosphere, look at the Periapsis Altitude (above the surface) on the Elements tab, or visually check whether the transfer orbit enter the atmosphere.

© 2015 Jacob Schwartz under the FreeCDF license. From the Mathematica package OrbitTransferOptimizer`.