Optimal continous thrust transfer to Planet 9

Compute an optimal 3D trajectory to Planet 9's presumed orbit. Size a spacecraft to bring a specific payload there given engine parameters. This demo requires the optimization toolbox.

See also: Constant, RVOrbGen, Date2JD, TrajectoryBetweenTwoPlanets, SpacecraftFromAccel

Contents

%--------------------------------------------------------------------------
%   Copyright (c) 2021 Princeton Satellite Systems, Inc.
%   All rights reserved.
%--------------------------------------------------------------------------
%   Since 2021.1
%--------------------------------------------------------------------------

Setup

% Constants
AU        = Constant('au');
MU        = Constant('mu sun');
secInYear = 86400*365.25;
dToR      = pi/180;

% Planet 9 assumed orbit
el        = [700*AU [30 100 140]*dToR 0.6 0];
[r,v,t]   = RVOrbGen(el,[],[],MU);

% Today's date
jD0       = Date2JD;

% Plot the planet 9 orbit with the outer planets, it's quite large
HelioPlot([7 8 9],150,jD0,r,{'Planet 9'});

Compute an optimal trajectory (fmincon)

years         = 11;  % 50, 20
planet1       = 3;
planet2       = struct;
planet2.name  = 'Planet 9';
planet2.el    = el;
nSteps        = 15;
s             = TrajectoryBetweenTwoPlanets( jD0, planet1, planet2, years, nSteps );
                                            First-order      Norm of
 Iter F-count            f(x)  Feasibility   optimality         step
    0      91    1.044776e-05    5.114e+09    3.987e-06
    1     182    1.410289e-05    6.500e+07    1.418e+03    1.014e-06
    2     273    1.414919e-05    6.178e+06    2.834e+02    3.460e-08
    3     364    1.414982e-05    1.185e+06    8.384e+00    4.931e-09
    4     455    1.414965e-05    4.284e+04    1.122e-01    1.803e-10
    5     546    1.414964e-05    3.403e+02    1.042e-02    4.465e-12

Optimization stopped because the relative changes in all elements of x are
less than options.StepTolerance = 1.000000e-10, and the relative maximum constraint
violation, 6.653471e-08, is less than options.ConstraintTolerance = 1.000000e-06.

Nonoptimal solution, flag: 2
         iterations: 5
          funcCount: 546
    constrviolation: 340.27
           stepsize: 4.4649e-12
          algorithm: 'interior-point'
      firstorderopt: 0.010423
       cgiterations: 0
            message: 'Local minimum possible. Constraints satisfied.↵↵fmincon stopped because the size of the current step is less than↵the value of the step size tolerance and constraints are ↵satisfied to within the value of the constraint tolerance.↵↵<stopping criteria details>↵↵Optimization stopped because the relative changes in all elements of x are↵less than options.StepTolerance = 1.000000e-10, and the relative maximum constraint↵violation, 6.653471e-08, is less than options.ConstraintTolerance = 1.000000e-06.'
       bestfeasible: []

Final Equality Constraints (km, km/s)
       340.27
       303.23
      -50.922
     1.08e-06
     1.03e-06
   -1.787e-07

Size the spacecraft

sC = SpacecraftFromAccel;
sC.uE    = 300;   % exhaust velocity, km/s
sC.sigma = 2e3;   % specific power, W/kg
sC.fS    = 0.02;  % fuel structural fraction
sC.mP    = 2000;  % payload mass, kg
sC.eff    = 0.5;  % efficiency to jet thrust power

SpacecraftFromAccel(sC,s);


%--------------------------------------

% $Id: e85964e66613116708ce096e2eb3bdef3d1ae7b2 $
Total mission DV:    327.5 km/s
Max thrust power:   13.729 MW
Total mass:        28104.6 kg
Payload mass:     2000 kg
Engine mass:      6865 kg
Fuel mass:        18669 kg
Structural mass:  373 kg
Payload Fraction: 0.0711626