File Exchange

image thumbnail

Optimal Finite-burn Interplanetary Injection from Earth Orbi

version (1.49 MB) by David Eagle
A MATLAB script for optimizing finite-burn interplanetary injection trajectories (SNOPT version).


Updated 01 May 2021

View Version History

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 (2021). Optimal Finite-burn Interplanetary Injection from Earth Orbi (, 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.

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

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!