Compute delta-V for lunar orbit insertion
See also: LunarOrbitInsertion, RV2El, AE2RPRA, Constant
%-------------------------------------------------------------------------- % Copyright (c) 2024 Princeton Satellite Systems, Inc. % All rights reserved. % Since 2024.1 %-------------------------------------------------------------------------- disp('Demo of LunarOrbitInsertion:') muMoon = Constant('mu moon'); rMoon = Constant('equatorial radius moon'); % First example: specify the target perigee altitude hLunarOrbit = 200; % km % Relative position at start dR = [2000;0;0]; % km dV = [0;3;0]; % km/s % Spacecraft initial mass, kg mI = 6; % Thruster parameters for insertion uE = 9.806*285; % Exhaust velocity (m/s) thrust = 20; % thrust (N) % Compute the insertion delta-V and vector (ECI frame) [deltaV, uECI, tBurn] = LunarOrbitInsertion( hLunarOrbit, dR, dV, mI, uE, thrust ); el = RV2El(dR,dV+uECI*deltaV,muMoon); [rP,rA] = AE2RPRA(el(1),el(5)); fprintf('\nPerigee altitude input:\n\n'); fprintf('Desired lunar perigee atitude %8.1f km\n', hLunarOrbit); fprintf('Resulting lunar perigee altitude %8.1f km\n', rP-rMoon); fprintf('Resulting lunar apogee altitude %8.1f km\n', rA-rMoon); fprintf('Engine exhaust velocity %8.1f m/s\n', uE); fprintf('Initial mass %8.1f kg\n', mI); fprintf('Thrust %8.1f N\n', thrust); fprintf('Delta V %8.1f km/s\n', deltaV); fprintf('Burn duration %8.1f sec\n', tBurn); fprintf('Position difference [%8.2f %8.2f %8.2f] km\n', dR); fprintf('Velocity difference [%8.2f %8.2f %8.2f] km/s\n', dV); fprintf('Burn vector ECI [%8.2f %8.2f %8.2f]\n', uECI); % Now, input target orbital elements instead (1st input) [a,e] = RPRA2AE(1800,2000); el = [a 0.01 0 0 e pi]; [deltaV, uECI] = LunarOrbitInsertion( el, dR, dV, mI, uE, thrust ); elA = RV2El(dR,dV+uECI*deltaV,muMoon); fprintf('\nElements input:\n\n'); fprintf('Desired Elements %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f \n', el); fprintf('Achieved elements %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f \n', elA); fprintf('Delta V %8.1f km/s\n', deltaV); fprintf('Burn duration %8.1f sec\n', tBurn); fprintf('Position difference [%8.2f %8.2f %8.2f] km\n', dR); fprintf('Velocity difference [%8.2f %8.2f %8.2f] km/s\n', dV); fprintf('Burn vector ECI [%8.2f %8.2f %8.2f]\n', uECI); %-------------------------------------- % $Id: 404830678c8fa9f879e5eea137dfa23922e06369 $
Demo of LunarOrbitInsertion: Perigee altitude input: Desired lunar perigee atitude 200.0 km Resulting lunar perigee altitude 200.0 km Resulting lunar apogee altitude 262.0 km Engine exhaust velocity 2794.7 m/s Initial mass 6.0 kg Thrust 20.0 N Delta V 1.4 km/s Burn duration 346.3 sec Position difference [ 2000.00 0.00 0.00] km Velocity difference [ 0.00 3.00 0.00] km/s Burn vector ECI [ -0.00 -1.00 -0.00] Elements input: Desired Elements 1900.000 0.010 0.000 0.000 0.053 3.142 Achieved elements 1900.000 3.132 3.142 0.000 0.053 3.142 Delta V 4.5 km/s Burn duration 346.3 sec Position difference [ 2000.00 0.00 0.00] km Velocity difference [ 0.00 3.00 0.00] km/s Burn vector ECI [ -0.00 -1.00 -0.00]