Collocation Algorithm

Top  Previous  Next

There are numerous ways to solve ordinary differential equations (ODEs) including but not limited to numerical integration and collocation. Numerical integration can sometimes cause sensitivity in optimization/targeting problems and thereby decrease the probability that the optimizer will converge on a solution. Collocation is significantly less sensitive than integration in these situations, and often offers improved convergence when solving spacecraft trajectory problems. FreeFlyer provides many built-in numerical integrators for propagating Spacecraft; these numerical integrators solve ODEs one step at a time and are dependent on the step size while collocation solves across the entire trajectory in parallel. The TrajectoryPhase object uses the 3rd-order Legendre-Gauss-Lobatto (LGL) collocation transcription.


Through the TrajectoryPhase.CollocationOptions property, users have the ability to edit properties that pertain specifically to the collocation dynamical solver including the ForceModel. The example below demonstrates setting up a TrajectoryPhase object and configuring the ForceModel through the TrajectoryPhase.CollocationOptions property:


// Initialize TrajectoryPhase object

TrajectoryPhase phase;


// Create an Alias for the Collocation.ForceModel to reduce scripting overhead

Alias phaseFM = phase.CollocationOptions.ForceModel;


// Turn off gravitational effects for Sun and Moon

phaseFM.Sun = 0; 

phaseFM.Moon = 0;


// Model Earth as a Point Mass and turn off drag

phaseFM.PlanetFieldType[2] = 0;

phaseFM.Drag = 0;



1.Topputo, F., & Zhang, C. (2014). Survey of direct transcription for low-thrust space trajectory optimization with applications. Abstract and Applied Analysis, 2014, 1–15


See Also

Spacecraft Propagators Guide

Trajectory Phases Guide

TrajectoryPhase Object

TrajectoryPhase.CollocationOptions Property