Get from Ico-github-logo

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Highlights from
Skipping Stone - An interplanetary space mission design tool

  • ae2n.m
  • minor_planets_model.m
  • aeM2rtheta.m
  • user_MP_pruning.m
  • central_body_flyby.m
  • JPL_DE405_ephemerides.m
  • lambert_low_exposins.m
  • cart2kep.m
  • cart2para.m
  • date2days.m
  • ne2a.m
  • date2MJD.m
  • date2sec.m
  • para2cart.m
  • eE2M.m
  • eE2theta.m
  • eM2E.m
  • eM2theta.m
  • etheta2E.m
  • etheta2M.m
  • exposin2initial_collocati...
  • exposin2initial_SimsFlana...
  • JD2date.m
  • kep2cart.m
  • kep2para.m
  • MJD2date.m
  • minor_planets_parameters.m
  • FindRealRoots(funfcn, a, ...
    FINDREALROOTS Find approximations to all real roots of any function
  • GODLIKE(funfcn, lb, ub, v...
  • Jovian_atmospheres_model(...
  • Jovian_atmospheres_parame...
  • Jovian_system_model(model...
  • Jovian_system_parameters(...
  • Julian_atmospheres_model(...
  • Julian_atmospheres_parame...
  • Julian_system_model
  • Julian_system_parameters(...
  • NBody_Battin(y0, tspan, o...
  • SimsFlanagan(rs, tfs, Vmi...
    method by Sims and Flanagan
  • Solar_system_model(seq, t...
    SOLAR_SYSTEM_MODEL Definitions of various parameters for all the planets.
  • Solar_system_parameters(m...
    SOLAR_SYSTEM_PARAMETERS Definitions of various parameters for all the planets.
  • TOF(theta, rp, r, gradien...
  • Tsjiolkovsky(DeltaV, Isp,...
    TSJIOLKOVSKY Determine parameters from Tsjiolkovsky's equation.
  • aM2t(a, M, t0, muC)
  • ae2T(a, e, muC)
  • aet2M(a, e, t, t0, muC)
  • aet2theta(a, e, t, t0, muC)
  • aetheta2t(a, e, theta, t0...
  • batch_optimization(varargin)
    BATCH-optimization GUI
  • build_main_window(environ...
    % C3 constraint
  • callbacks(funfcn, varargin)
    CALLBACKS() Contains all callback functions for all controls on the
  • cancel_button_pressed(var...
  • collocation(X, type, vara...
    method of collocation
  • date2JD(year, month, day,...
  • days2date(days)
  • eml
  • example_costfunction(vara...
    NOTE: don't use "global MainWin" here - this would give difficulties when
  • example_postprocessor(var...
  • find_nearby_MPs(varargin)
  • generate_output(embedding)
    generate all output & graphics
  • himmelblau(X)
    Himmelblau function
  • initialize_ephemerides_ge...
    initialize all the ephemerides generators
  • main(varargin)
  • max_MPs(MainWin, result)
    NOTE: don't use "global MainWin" here - this would give difficulties when
  • minimum_distance_conics( ...
    MINIMUM_DISTANCE Calculates the minimum distance between an
  • minimum_distance_exposins...
  • modify_settings(funfcn, v...
    if ispc
  • not_yet_done(varargin)
  • optimize(funfcn, x0, A, b...
    OPTIMIZE Optimize general constrained problems using Nelder-Mead algorithm
  • optimize_button(varargin)
    Callback function for the optimize! button
  • paretofront(varargin)
    PARETOFRONT returns the logical Pareto Front of a set of points.
  • patched_conics(seq, X, pa...
  • planetary_atmospheres_mod...
  • planetary_atmospheres_par...
  • progress_bar(progress, st...
    Last changed 21/Jun/2009 (Rody)
  • progress_orbit(dts, varar...
    progress orbit through Kepler state transition matrix
  • quintic_ephemerides(seq, ...
  • rkn1210(funfcn, tspan, y0...
    RKN1210 12th/10th order Runge-Kutta-Nystrom integrator
  • rkn86(FunFcn, tspan, y0, ...
    rkn86 Integrates a special system of ordinary differential equations using
  • set_options(varargin)
  • settingsdlg(varargin)
  • speedup
    SPEEDUP Compile several functions to speed up Skipping Stone
  • stateceres
  • stateearth
  • statejupiter
    Jupiter Barycenter
  • statemars
  • statemercury
  • statemoon
  • stateneptune
  • statepallas
  • statepluto
  • statesaturn
    Saturn Barycenter
  • stateuranus
  • statevenus
  • statevesta
  • two_body_ephemerides(body...
    % extract orbital elements
  • user_Jovian_system_parame...
  • user_Julian_system_parame...
  • user_MP_model(MPs)
  • user_Solar_system_paramet...
  • ASA
  • DE
  • GA
  • PSO
  • pop_multi
  • pop_single
    =insert documentation here=
  • View all files

Join the 15-year community celebration.

Play games and win prizes!

» Learn more

5.0 | 1 rating Rate this file 15 Downloads (last 30 days) File Size: 7.87 MB File ID: #29272 Version: 1.1
image thumbnail

Skipping Stone - An interplanetary space mission design tool


Rody Oldenhuis (view profile)


04 Nov 2010 (Updated )

An easy-to-use tool to optimize trajectories for interplanetary missions using swingby manoevres

| Watch this File

File Information

Skipping Stone
A richly featured application to design trajectories for interplanetary space missions using (multiple) gravity-assist maneuvers. Its most prominent capabilities are:
- single/multi objective optimization
- can work with a multitude of (heuristic) optimization algorithms
- Low/high thrust propulsion both supported
- (rough) global and (accurate) local searches seamlessly integrated
- additional functionality can be added easily via user-definable plugins
- intuitive GUI, nice plots of best trajectory found, speed w.r.t. central body, and many others. Designed to easily explore various mission scenarios, BATCH optimization to find the best in a whole set of scenarios, etc.
- Comes ready with "nearby MPs" post processor, to also locate the known asteroids/comets/etc. that come close to the final trajectory.
- And lots, lots more...

I wrote this application for my master's thesis in space engineering. The idea was to make everything as general and easy to understand as possible, so that other, future students could easily experiment with their problem(s), and eventually expand and improve this program. If anything, it is an excellent showcase of all that's possible with MATLAB (and all that's not :) See (my master thesis) for all the details and background.

To start Skipping Stone, just unpack the zip, navigate to its home directory in MATLAB and execute "main.m".

A word of advice: First run "speedup.m" (also in the home directory) first to compile a few bottleneck-algorithms; this speeds up the optimizations pretty dramatically. It is not required though; everything should work as is.

An easy example: find a so-called Mars-free-return trajectory:
- run "main.m" and leave all settings untouched
- on the "Sequence" tab, select "Venus" as swingby1, and "Mars" as target.
- Press the OPTIMIZE! button and wait a few seconds.

Feel free to add more planets and play with all the settings. Note that low thrust trajectories are MUCH harder to optimize, so you should expect to wait longer. Naturally, this also holds for increasingly complex problems; 5 swingbys with multiple revolutions and long/short way optimized will require a LOT more time than the Mars-free return mission mentioned above.

Although I took great care to catch all errors I can think of, I expect lots of bugs are still present. So if you do find any strange errors popping up, or have a much more general question, please e-mail me with a brief description, screenshots etc. so I can post a fix, or post your request here on the forum. Also, if you are also an aerospace student and want to participate, I can sure use a hand or two (or more)!


Known flaws, improvements, etc.:

- second order optimizations ("high-accuracy local search") NOT YET IMPLEMENTED: expect errors when trying this! It's something that wasn't required for my thesis, so due to time pressure at the time I didn't implement this correctly yet.

- A much better approach to building the windows and data management etc. would be to make a class out of the main window (plus all callbacks). This would make it a lot more scalable and easier to understand. But at the time I wrote this, I didn't know how to do this properly, and now that I do it's an awful lot of work: so for now this is future work.

- There is NO clear documentation (although the code is pretty well documented). This is a problem with all software written under pressure of course; it's something I'm still working on...
- As for validation: as you can read in my thesis, all missions I tried could be found by Skipping Stone, EXCEPT NASA's Galileo for some reason. Please; if you find that reason, I'd be very happy!

- and many, many more...

Required Products Spline Toolbox
MATLAB release MATLAB 7.7 (R2008b)
Other requirements Optimization toolbox would be great, but is not required Spline toolbox is also not required if you selec "Kepler (direct)" as the ephemerides generator
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (2)
25 Feb 2011 Rody Oldenhuis

Rody Oldenhuis (view profile)

Oh no!!!! :)

Anyway, I suspect it's the global optimizer: Although the solution I reported gave my ~15km/s, that does not mean that solution is easy to find! In my thesis there's also a section of "raw data" (somewhere in the appendices), which shows per point I tried that different optimizers often find wildly different results.

I suspect that if you retry a few times, it'll probably decrease from a few hundred to a few tens to (hopefully for me!) ~fifteen.

Anyway, keep in mind that the global optimization algorithms I used (GA, PSO, etc.) use a fair bit of randomness. Chances are you'll find different results each time you run an optimization.

Of course, if you try 100 times and you still don't find anything lower than say 25km/s, I'd like to hear about that :)

Comment only
23 Feb 2011 Bibux Bi

Hi, this program is wonderfull. I tried to do a mission in solar bow shock to confront results written in your thesis. The program give me a total DV of several hundred of km/s... there is something that escape me? why in your thesis there are total DV of 15 km/s?

24 Sep 2016 1.1

[linked to Github]

Contact us