4.5

4.5 | 2 ratings Rate this file 35 Downloads (last 30 days) File Size: 10.34 KB File ID: #26348

Robust solver for Lambert's orbital-boundary value problem

by Rody Oldenhuis

 

12 Jan 2010

Solves any Lambert-problem robustly. Can be compiled to increase efficiency.

| Watch this File

File Information
Description

A Lambert-orbital boundary value problem can be stated as

"Find the orbit/trajectory of a spacecraft that flies from position [r1] to [r2], taking a time [tf] and making [m] complete orbits before arriving at [r2]. "

The solution to each Lambert-problem is NOT unique; one can travel to [r2] via the long way or the short way, and for [m > 0] there are almost always two ellipses that satisfy the boundary conditions, so that [m > 0] has four distinct solutions.

This function solves any Lambert problem *robustly*. It can handle short-way solutions (the default), long way solutions (by passing negative [tf]), or left-branch (default) or right-branch (by passing negative [m]) solutions in case [m > 0]. It uses two separate solvers; the first one it tries is a new and unpublished algorithm developed by Dr. D. Izzo from the European Space Agency [1]. This version is extremely fast, but especially for larger [m] it still fails quite frequently. In such cases, a MUCH more robust algorithm is started (the one by Lancaster & Blancard [2], with modifcations, initial values and other improvements by R.Gooding [3]), which is a lot slower partly because of its robustness.

This routine can be compiled to increase its speed by a factor of 20-50, which is certainly advisable when an application using this function requires a great number of Lambert problems to be solved. The entire routine is written in embedded MATLAB, so it can be compiled with the emlmex() function. It is described in the function's comments how to accomplish this.

Tested on WinXP/32 and Ubuntu 9.10/32. Tested on MATLAB 2008a through 2009b. As compilation is always a troublesome affair, please let me know what sort of problems you encounter so I can try to improve the code for that.

References:
[1] Izzo, D. ESA Advanced Concepts team. Code used available in MGA.M, on http://www.esa.int/gsp/ACT/inf/op/globopt.htm. Last retreived Nov, 2009.
[2] Lancaster, E.R. and Blanchard, R.C. "A unified form of Lambert's theorem." NASA technical note TN D-5368,1969.
[3] Gooding, R.H. "A procedure for the solution of Lambert's orbital boundary-value problem. Celestial Mechanics and Dynamical Astronomy, 48:145–165,1990.

MATLAB release MATLAB 7.9 (2009b)
Other requirements None that I know of. Please let me know if you find any dependency I overlooked.
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Comments and Ratings (2)
27 Feb 2011 Hermes

I have a problem using this program. First, I created an example_input and ran the command
emlmex -eg example_input lambert.m

Now I have an input for my problem which is:

input = {[22592.145603,-1599.915239,-19783.950506],[1922.067697,4054.157051,-8925.727465],0.417,0,324859};

My question is how I should run this input and how I can access the output of the m-file.

Thank you,

28 May 2012 Nathan

I have used this Lambert's solver extensively for my undergraduate spacecraft design class. Very fast for MATLAB, and it is quite robust, too.

Please login to add a comment or rating.
Tag Activity for this File
Tag Applied By Date/Time
orbital mechanics Rody Oldenhuis 12 Jan 2010 10:55:56
space Rody Oldenhuis 12 Jan 2010 10:55:56
space mechanics Rody Oldenhuis 12 Jan 2010 10:55:56
astrodynamics Rody Oldenhuis 12 Jan 2010 10:55:56
orbit Rody Oldenhuis 12 Jan 2010 10:55:56
mission design Rody Oldenhuis 12 Jan 2010 10:55:57
geometry Rody Oldenhuis 12 Jan 2010 10:55:57
trajectory Rody Oldenhuis 12 Jan 2010 10:55:57
trajectory optimization Rody Oldenhuis 12 Jan 2010 10:55:57
embedded matlab Rody Oldenhuis 12 Jan 2010 10:55:57
boundary value problem Rody Oldenhuis 12 Jan 2010 10:55:57
lambert Rody Oldenhuis 12 Jan 2010 10:55:57
celestial mechanics Rody Oldenhuis 12 Jan 2010 10:55:57
mex Rody Oldenhuis 12 Jan 2010 10:55:57
space mission Rody Oldenhuis 12 Jan 2010 10:55:57
trajectory optimization eli 13 Aug 2010 10:38:27
lambert Hermes 27 Feb 2011 14:23:28
astrodynamics Michael 06 Jul 2011 10:51:33

Contact us at files@mathworks.com