File Exchange

image thumbnail

Optimal Finite-burn Interplanetary Injection from Earth Orbit

version (760 KB) by David Eagle
A MATLAB script for optimizing finite-burn interplanetary injection trajectories.

1 Download

Updated 10 Jul 2014

View License

PDF document and MATLAB script named escape.m that can be used to analyze a finite-burn maneuver that achieves interplanetary injection from an initial Earth park orbit. The simulation assumes the propulsive maneuver is continuous, coplanar and modeled as a series of optimal discretized steering angles. This script attempts to minimize the scalar magnitude of the finite-burn while solving for user-defined “boundary conditions” or hyperbolic targets.
The orbital motion is modeled using modified equinoctial orbital elements and the script assumes that the thrust magnitude is constant during the entire orbit transfer. Initial guesses for the escape.m script can be determined using the hyper1.m script, “Impulsive Hyperbolic Injection from a Circular Park Orbit”. This MATLAB script provides the park orbit right ascension of the ascending node (RAAN) and the true anomaly of the impulsive injection maneuver on the initial circular park orbit.

Cite As

David Eagle (2020). Optimal Finite-burn Interplanetary Injection from Earth Orbit (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (2)


I try again with the MATLAB2012b and 2013 version of SNOPT.And I note that there are two date file,"escape1.dat" and " low_thrust1.dat".
After run the eacape.m,I choose the "escape1.dat". Then the error shows:
< finite-burn interplanetary injection >
Error using csvread (line 35)
File not found.

Error in escape (line 46)
edata = csvread(read_fname);

If I choose the "low_thrust1.dat". Then the error shows:
Error in snwrapper (line 7)
if ( nargin == 3 ),

Error using snoptcmex
Output argument "F" (and maybe others) not assigned during call to "D:\Program

Error in snJac (line 7)
[A,iAfun,jAvar,iGfun,jGvar] = snoptcmex(findJacOption,usrfun,x0,xlow,xupp,nF);

Error in snopt (line 109)
[A,iAfun,jAvar,iGfun,jGvar] = snJac(userfun,x,xlow,xupp,m);

Error in escape (line 204)
[x, f, inform, xmul, fmul] = snopt(xg, xlb, xub, flow, fupp, 'escape_shoot1');

I think there some problems in SNOPT, but I can't find the mistake.Can you help me?


Thanks for your work. My MATLAB release is MATLAB 2014a, and I use the March 17, 2014 version of SNOPT. When I run the main script (escape_64bit.m) ,then choose the date, it shows a error:
the ' double' type input parameter was not defined corresponding to function 'snoptmex'

error snscreen (line 18)
snoptmex( screenon );

error escape_64bit (line 368)
why? Is there some mistake I have made?
Thanks again.


Changed objective function to thrust duration. Updated PDF. Added main script (escape_64bit.m) that uses the March 17, 2014 version of SNOPT.

Option added to read and use a csv data file for the initial guess. Also writes a data file of the current simulation.

MATLAB Release Compatibility
Created with R2012b
Compatible with any release
Platform Compatibility
Windows macOS Linux