Set up and run the trajectory optimization for an asteroid intercept.
I1/'Oumuamua is a recent interstellar asteroid that passed through the solar system. This shows that a fusion powered spacecraft could have intercepted the asteroid. This demo requires the optimization toolbox.
Simulation is in the gravity field of the sun. THe demo also sizes a spacecraft to perform the mission given the engine parameters and payload.
See also: TrajectoryBetweenTwoPlanets, SpacecraftFromAccel
Contents
%-------------------------------------------------------------------------- % Copyright (c) 2018 Princeton Satellite Systems, Inc. % All rights reserved. %-------------------------------------------------------------------------- % Since 2018.1 % 2019.1 Update units of sigma to W/kg from kW/kg %--------------------------------------------------------------------------
I1/'Oumuamua orbit
jD = 2462576.5;% A.D. 2030-Mar-16 00:00:00.0000 TDB rA = [ 1.008272975334536E+10; 1.579428200546252E+09; 4.311503526924462E+09]; vA = [ 2.428440175149515E+01; 3.623455975379303E+00; 1.063812980138126E+01]; mu = Constant('mu sun'); el0 = RV2El(rA,vA,mu); [r,v] = RVOrbGen(el0,linspace(0,-12*365*86400,200),[],mu); au = Constant('au'); Plot3D(r/au) % Assume we could launch closer to when asteroid was detected (2018) el = RV2El(r(:,end),v(:,end),mu); jD0 = jD - 12*365;

Compute an optimal trajectory (fmincon)
years = 23; % 50, 20 planet1 = 3; planet2 = struct; planet2.name = 'I1/''Oumuamua'; planet2.el = el; nSteps = 40; clear InterpolateState jDStart = FindDepartureDate( jD0, planet1, planet2, years ); s = TrajectoryBetweenTwoPlanets( jDStart, planet1, planet2, years, nSteps );
First-order Norm of Iter F-count f(x) Feasibility optimality step 0 241 3.107932e-06 8.207e+09 4.522e-07 1 482 2.244017e-06 2.517e+08 3.468e+04 3.734e-07 2 723 2.231092e-06 1.385e+07 2.844e+03 3.920e-08 3 964 2.233585e-06 3.432e+05 1.306e+02 2.808e-09 4 1205 2.233600e-06 1.750e+04 1.144e+01 6.521e-11 Optimization stopped because the relative changes in all elements of x are less than options.StepTolerance = 1.000000e-10, but the relative maximum constraint violation, 2.132211e-06, exceeds options.ConstraintTolerance = 1.000000e-06. Consider enabling the interior point method feasibility mode. Nonoptimal solution, flag: -2 iterations: 4 funcCount: 1205 constrviolation: 17500 stepsize: 6.521e-11 algorithm: 'interior-point' firstorderopt: 11.441 cgiterations: 0 message: 'Converged to an infeasible point.↵↵fmincon stopped because the size of the current step is less than↵the value of the step size tolerance but constraints are not↵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, but the relative maximum constraint↵violation, 2.132211e-06, exceeds options.ConstraintTolerance = 1.000000e-06.' bestfeasible: [] Final Equality Constraints (km, km/s) -2046.3 -17500 7208.2 1.8872e-06 -2.7098e-05 1.4219e-05




Size the spacecraft
This will compute the power required to move the requested payload given the acceleration profile returned from the optimization. Not all combinations of parameters will converge.
sC = SpacecraftFromAccel; sC.uE = 120; % exhaust velocity, km/s sC.sigma = 1e3; % specific power, W/kg sC.fS = 0.04; % fuel structural fraction sC.eff = 0.3; % efficiency to jet thrust power sC.mP = 2000; % payload mass, kg SpacecraftFromAccel(sC,s); %-------------------------------------- % $Id: f3e717ec99412ed845a96bdb6fab28568f2937e2 $
Total mission DV: 40.5 km/s Max thrust power: 0.066 MW Total mass: 2945.5 kg Payload mass: 2000 kg Engine mass: 66 kg Fuel mass: 844 kg Structural mass: 34 kg Payload Fraction: 0.678995
