diff --git a/classes/@Rocket/Rocket.m b/classes/@Rocket/Rocket.m index 825e8360ef8caa2d09ce9628731c6f6616e89d73..30c76a48b95e72217938671ddc07ed5db368dd17 100644 --- a/classes/@Rocket/Rocket.m +++ b/classes/@Rocket/Rocket.m @@ -52,7 +52,8 @@ classdef Rocket < Config parachutes cell % [-] (nParachutes, nStages) Parachutes onboard dynamicDerivatives (1, 1) logical % [-] True if dynamic derivatives will be loaded - + highAOACoefficients (1, 1) logical % [-] True if highAOACoefficients are loaded + coefficients Coefficient % [-] Aerodynamic coefficients coefficientsHighAOA Coefficient % [-] Aerodynamic coefficients at high angle of attack end @@ -150,13 +151,16 @@ classdef Rocket < Config fullfile(mission.dataPath, 'aeroCoefficients.mat'), ... coeffName); - obj.coefficientsHighAOA = Coefficient( ... - fullfile(mission.dataPath, 'aeroCoefficientsHighAOA.mat'), ... - coeffName); + if obj.highAOACoefficients + obj.coefficientsHighAOA = Coefficient( ... + fullfile(mission.dataPath, 'aeroCoefficientsHighAOA.mat'), ... + coeffName); + end answer = ''; - if isempty(obj.coefficients.static) || isempty(obj.coefficientsHighAOA.static) + if isempty(obj.coefficients.static) || ... + (obj.highAOACoefficients && isempty(obj.coefficientsHighAOA.static)) answer = questdlg(['Coefficient matrices not found. ' ... 'Do you want to create new matrices?']); elseif options.checkGeometry @@ -195,7 +199,7 @@ classdef Rocket < Config parserPath = fullfile(mission.msaPath, 'autoMatricesProtub'); addpath(genpath(parserPath)); [obj.coefficients, obj.coefficientsHighAOA] = ... - mainAutoMatProtub(obj); + mainAutoMatProtub(obj, 'computeHighAOA', obj.highAOACoefficients); case 'Cancel' error('Rocket creation aborted') otherwise diff --git a/classes/enums/CoeffType.m b/classes/enums/CoeffType.m new file mode 100644 index 0000000000000000000000000000000000000000..85e051cba449a53e81cbc4661ab2025987e83284 --- /dev/null +++ b/classes/enums/CoeffType.m @@ -0,0 +1,7 @@ +classdef CoeffType + enumeration + AlphaTotPhi + AlphaBeta + end +end + diff --git a/classes/bays/MotorType.m b/classes/enums/MotorType.m similarity index 100% rename from classes/bays/MotorType.m rename to classes/enums/MotorType.m diff --git a/classes/misc/Coefficient.m b/classes/misc/Coefficient.m index f7eb51b09518ae3395228fd0af572ef5f7ac421e..219bca89f335199a1d25633b8622f4105ac6cb97 100644 --- a/classes/misc/Coefficient.m +++ b/classes/misc/Coefficient.m @@ -58,10 +58,12 @@ classdef Coefficient dynamic double % Dynamic derivatives: [Clp, Cmad, Cmq, Cnr, Cnp] end - properties(SetAccess = private) - isReady (1, 1) logical % Whether all coefficients are loaded and of the right size - isDynamic (1, 1) logical % Whether to load dynamic derivatives. Adds XCG dependece + type CoeffType % Wheter based on alphaTot-phi or alpha-beta + symmetry (1, 1) logical % Apply axial simmetry: valid for alphaTot-phi + + isReady (1, 1) logical % Whether all coefficients are loaded and of the right size + isDynamic (1, 1) logical % Whether to load dynamic derivatives. Adds XCG dependece end properties(Access = private) @@ -89,7 +91,7 @@ classdef Coefficient obj = obj.updateInterpolants(); end - function coefficients = get(obj, alpha, mach, beta, altitude, airbakes, xcg) + function [coefficients] = get(obj, alpha, mach, beta, altitude, airbakes, xcg) % GET: Retrieve aerodynamic coefficients for specified flight conditions % % This method interpolates the aerodynamic coefficients based on @@ -114,10 +116,31 @@ classdef Coefficient if ~obj.isReady, error('Cannot interpolate coefficients: check that all dimensions match'); end + % Interpolating coefficients coefficients = zeros(11, 1); - coefficients(1:6) = obj.staticInterpolant(alpha, mach, beta, altitude, airbakes); - % Transporting static coefficients to new xcg + if obj.type == CoeffType.AlphaBeta + coefficients(1:6) = obj.staticInterpolant(alpha, mach, beta, altitude, airbakes); + else + [alphaTot, phi] = getAlphaPhi(alpha, beta); + phi = wrapTo2Pi(phi); + + finAngle = 2*pi / obj.GEOMETRY.nPanel; % Angle between two fin panels + n = floor(phi / finAngle); + deltaPhi = n*finAngle; + psi = phi - deltaPhi; % Angle wrapped to finAngle + + coefficients(1:6) = obj.staticInterpolant(alphaTot, mach, psi, altitude, airbakes); % Get coeffs in limited range + + if n > 0 % If necessary, perform rotation on different frame + R = [cos(deltaPhi), -sin(deltaPhi); + sin(deltaPhi), cos(deltaPhi)]; + + coefficients([2, 3]) = R * coefficients([2, 3]); + coefficients([5, 6]) = R' * coefficients([5, 6]); + end + end + % Transporting static coefficients to new xcg % C_B = C_A + d / c * [0; -CN; CY]_A <- NOTE: Non torna il meno su CN d = xcg - obj.GEOMETRY.xcg(1); l = obj.GEOMETRY.diameter; @@ -128,6 +151,9 @@ classdef Coefficient coefficients(4:6) = coefficients(4:6) + d/l * forceCoeffs; if ~obj.isDynamic, return; end + if obj.type == CoeffType.AlphaTotPhi + error('Alpha-Phi coefficients do not support dynamic derivatives yet') + end coefficients(7:11) = obj.dynamicInterpolant(alpha, mach, beta, altitude, airbakes, xcg); end end @@ -165,12 +191,28 @@ classdef Coefficient end function obj = set.geometry(obj, value) + if ~isempty(obj.STATE) && isfield(obj.STATE, 'phis') && ~isempty(obj.STATE.phis) + obj.symmetry = (360/obj.STATE.phis(end) == value.nPanel); + end + obj.GEOMETRY = value; obj.isReady = obj.checkProperties(); obj = obj.updateInterpolants(); end function obj = set.state(obj, value) + if isfield(value, 'phis') && ~isempty(value.phis) + if ~isempty(value.betas) + error('Cannot set both alpha, beta and phi'); + end + if ~isempty(obj.GEOMETRY) + obj.symmetry = (360/value.phis(end) == obj.GEOMETRY.nPanel); + end + obj.type = CoeffType.AlphaTotPhi; + else + obj.type = CoeffType.AlphaBeta; + end + obj.STATE = value; obj.isReady = obj.checkProperties(); obj = obj.updateInterpolants(); @@ -198,7 +240,7 @@ classdef Coefficient obj.finsCN = dataCoeffs.finsCN; obj.GEOMETRY = dataCoeffs.geometry; - obj.STATE = dataCoeffs.state; + obj.state = dataCoeffs.state; % Load coefficients obj.total = dataCoeffs.total; @@ -214,12 +256,17 @@ classdef Coefficient alpha = obj.STATE.alphas; mach = obj.STATE.machs; - beta = obj.STATE.betas; altitude = obj.STATE.altitudes; airbakes = obj.STATE.hprot; xcg = obj.GEOMETRY.xcg; - gridVecs = {alpha, mach, beta, altitude, airbakes, xcg}; + if obj.type == CoeffType.AlphaBeta + theta = obj.STATE.betas; % Converting to rad + else + theta = obj.STATE.phis; % Converting to rad + end + + gridVecs = {alpha, mach, theta, altitude, airbakes, xcg}; dims = cellfun(@(x) length(x), gridVecs); dims(dims == 0) = 1; % Empty case is the same as scalar case @@ -233,15 +280,20 @@ classdef Coefficient %% Retrieve flight conditions alpha = obj.STATE.alphas*pi/180; % Converting to rad mach = obj.STATE.machs; - beta = obj.STATE.betas*pi/180; % Converting to rad altitude = obj.STATE.altitudes; xcg = obj.GEOMETRY.xcg; if isempty(obj.STATE.hprot), airbakes = 0; else, airbakes = obj.STATE.hprot/obj.STATE.hprot(end); % Normalizing on height end + + if obj.type == CoeffType.AlphaBeta + theta = obj.STATE.betas*pi/180; % Converting to rad + else + theta = obj.STATE.phis*pi/180; % Converting to rad + end - gridVecs = {alpha, mach, beta, altitude, airbakes, xcg}; + gridVecs = {alpha, mach, theta, altitude, airbakes, xcg}; % Find singleton dims (last dimension is coefficients and will not be of length 1) singletonDims = cellfun(@(x) isscalar(x) || isempty(x), gridVecs); diff --git a/functions/miscellaneous/createDissileInput.m b/functions/miscellaneous/createDissileInput.m index 39bc2b0b88f53030d739d657bdb7668c3fae7f6f..1c3f5eee6da918539abc97779c31585e5bc65d75 100644 --- a/functions/miscellaneous/createDissileInput.m +++ b/functions/miscellaneous/createDissileInput.m @@ -49,12 +49,12 @@ if not(any(vars.alpha == 1)) error('vars.alpha does not contains 1'); end -if not(any(vars.alpha == -1)) - error('vars.alpha does not contains -1'); +if isempty(vars.phi) && not(any(vars.alpha == -1)) + error('vars.alpha does not contain -1 in alpha-beta configuration'); end -if not(isequal(vars.alpha, -fliplr(vars.alpha))) - error('vars.alpha is not symmetric'); +if isempty(vars.phi) && not(isequal(vars.alpha, -fliplr(vars.alpha))) + error('vars.alpha is not symmetric in alpha-beta configuration'); end % if any(vars.abk > 1) @@ -69,6 +69,7 @@ input.fltcon.about = 'Flight conditions quantities'; input.fltcon.MACH = vars.mach; input.fltcon.ALPHA = vars.alpha; input.fltcon.BETA = vars.beta; +input.fltcon.PHI = vars.phi; input.fltcon.ALT = vars.alt; %% REFQ diff --git a/functions/odeFunctions/ballistic.m b/functions/odeFunctions/ballistic.m index d08b3069d7274836e0f686c19963919facaec233..fed5600a547105015d3835c998120ef8accf7f44 100644 --- a/functions/odeFunctions/ballistic.m +++ b/functions/odeFunctions/ballistic.m @@ -134,7 +134,7 @@ end if not(abs(ur) < 1e-9 || velsNorm < 1e-9) alpha = atan(wr/ur); beta = atan(vr/ur); % beta = asin(vr/V_norm) is the classical notation, Datcom uses this one though. - % alpha_tot = atan(sqrt(wr^2 + vr^2)/ur); % datcom 97' definition + alphaTot = atan(sqrt(wr^2 + vr^2)/ur); % datcom 97' definition else alpha = 0; beta = 0; @@ -144,14 +144,17 @@ alphaOut = alpha; betaOut = beta; %% INTERPOLATE AERODYNAMIC COEFFICIENTS: - -if abs(alpha) > rocket.coefficients.state.alphas(end)*pi/180 || ... - abs(beta) > rocket.coefficients.state.betas(end)*pi/180 - coeffsValues = rocket.coefficientsHighAOA.get(alpha, mach, beta, absoluteAltitude, extension, xcg); +if rocket.coefficients.type == CoeffType.AlphaBeta + if abs(alpha) > rocket.coefficients.state.alphas(end)*pi/180 || abs(beta) > rocket.coefficients.state.betas(end)*pi/180 + coeffsValues = rocket.coefficientsHighAOA.get(alpha, mach, beta, absoluteAltitude, extension, xcg); + end +elseif abs(alphaTot) > rocket.coefficients.state.alphas(end)*pi/180 + coeffsValues = rocket.coefficientsHighAOA.get(alpha, mach, beta, absoluteAltitude, extension, xcg); else coeffsValues = rocket.coefficients.get(alpha, mach, beta, absoluteAltitude, extension, xcg); end + % Retrieve Coefficients CA = coeffsValues(1); CY = coeffsValues(2); CN = coeffsValues(3); Cl = coeffsValues(4); Cm = coeffsValues(5); Cn = coeffsValues(6); diff --git a/missions/2021_Lynx_Portugal_October/config/rocketConfig.m b/missions/2021_Lynx_Portugal_October/config/rocketConfig.m index 160c5b09b850ef81406e13cf89dfcda9005c2e9c..cb264015ae392fd9ed08b661398f6b5efb8f1d2e 100644 --- a/missions/2021_Lynx_Portugal_October/config/rocketConfig.m +++ b/missions/2021_Lynx_Portugal_October/config/rocketConfig.m @@ -20,6 +20,7 @@ rocket.lengthCenterNoMot = 1.7640; % [m] % When false, coefficients are saved with current motor's name % When true, coefficients are saved as 'generic' rocket.dynamicDerivatives = false; % [-] True if dynamic derivatives will be loaded +rocket.highAOACoefficients = false; % [-] True if separate matrix for high AOA will be loaded %% PLD - Includes Parafoil + Nose parafoil = Parafoil(); diff --git a/missions/2021_Lynx_Roccaraso_September/config/rocketConfig.m b/missions/2021_Lynx_Roccaraso_September/config/rocketConfig.m index d0dc3df55356e3aebc59d51214a30794f8668dc1..0851f94e15aa603fff564f4dd2d8ed15c0e56bf8 100644 --- a/missions/2021_Lynx_Roccaraso_September/config/rocketConfig.m +++ b/missions/2021_Lynx_Roccaraso_September/config/rocketConfig.m @@ -20,6 +20,7 @@ rocket.lengthCenterNoMot = 1.7840; % [m] % When false, coefficients are saved with current motor's name % When true, coefficients are saved as 'generic' rocket.dynamicDerivatives = false; % [-] True if dynamic derivatives will be loaded +rocket.highAOACoefficients = false; % [-] True if separate matrix for high AOA will be loaded %% PLD - Includes Parafoil + Nose parafoil = Parafoil(); diff --git a/missions/2022_Pyxis_Portugal_October/config/rocketConfig.m b/missions/2022_Pyxis_Portugal_October/config/rocketConfig.m index 2f949bfb46c9b09dd02fea6a1c87253e9c6c5b20..17d63ca520136746a7f874cb8e2d9c34c726670b 100644 --- a/missions/2022_Pyxis_Portugal_October/config/rocketConfig.m +++ b/missions/2022_Pyxis_Portugal_October/config/rocketConfig.m @@ -20,6 +20,7 @@ rocket.lengthCenterNoMot = 1.4470; % [m] % When false, coefficients are saved with current motor's name % When true, coefficients are saved as 'generic' rocket.dynamicDerivatives = false; % [-] True if dynamic derivatives will be loaded +rocket.highAOACoefficients = false; % [-] True if separate matrix for high AOA will be loaded %% PLD - Includes Parafoil + Nose parafoil = Parafoil(); diff --git a/missions/2022_Pyxis_Roccaraso_September/config/rocketConfig.m b/missions/2022_Pyxis_Roccaraso_September/config/rocketConfig.m index ee3a3c71bd73ab263db92f3e929db488a6a5735c..5b7406a3e5a8362c54c1caddde3a35c9fa1798cc 100644 --- a/missions/2022_Pyxis_Roccaraso_September/config/rocketConfig.m +++ b/missions/2022_Pyxis_Roccaraso_September/config/rocketConfig.m @@ -22,6 +22,7 @@ rocket.lengthCenterNoMot = 1.61; % [m] % When false, coefficients are saved with current motor's name % When true, coefficients are saved as 'generic' rocket.dynamicDerivatives = false; % [-] True if dynamic derivatives will be loaded +rocket.highAOACoefficients = false; % [-] True if separate matrix for high AOA will be loaded %% PLD - Includes Parafoil + Nose parafoil = Parafoil(); diff --git a/missions/2023_Gemini_Portugal_October/config/rocketConfig.m b/missions/2023_Gemini_Portugal_October/config/rocketConfig.m index 401c415be5e782af00b4318e62db4d13ea6ef5ca..f9d6d4c6f95e6d93445e6289d5115b9bba35837a 100644 --- a/missions/2023_Gemini_Portugal_October/config/rocketConfig.m +++ b/missions/2023_Gemini_Portugal_October/config/rocketConfig.m @@ -19,7 +19,7 @@ rocket.lengthCenterNoMot = 1.517; % [m] % When false, coefficients are saved with current motor's name % When true, coefficients are saved as 'generic' rocket.dynamicDerivatives = false; % [-] True if dynamic derivatives will be loaded - +rocket.highAOACoefficients = false; % [-] True if separate matrix for high AOA will be loaded %% PLD - Includes Parafoil + Nose parafoil = Parafoil(); diff --git a/missions/2023_Gemini_Roccaraso_September/config/rocketConfig.m b/missions/2023_Gemini_Roccaraso_September/config/rocketConfig.m index fc2715bc0dd7d61dd740e20b3138c8552440dcf1..cadbc7ef2b84f7f504eae85f73766ece8a83ec9c 100644 --- a/missions/2023_Gemini_Roccaraso_September/config/rocketConfig.m +++ b/missions/2023_Gemini_Roccaraso_September/config/rocketConfig.m @@ -19,6 +19,7 @@ rocket.lengthCenterNoMot = 1.517; % [m] % When false, coefficients are saved with current motor's name % When true, coefficients are saved as 'generic' rocket.dynamicDerivatives = false; % [-] True if dynamic derivatives will be loaded +rocket.highAOACoefficients = false; % [-] True if separate matrix for high AOA will be loaded %% PLD - Includes Parafoil + Nose parafoil = Parafoil(); diff --git a/missions/2024_Lyra_Portugal_October/config/rocketConfig.m b/missions/2024_Lyra_Portugal_October/config/rocketConfig.m index f87640c176ca52f0ab3274f1b32602462a1489ff..1d90d15565d46515b3ca9ef5bcc7677b369fd810 100644 --- a/missions/2024_Lyra_Portugal_October/config/rocketConfig.m +++ b/missions/2024_Lyra_Portugal_October/config/rocketConfig.m @@ -13,6 +13,7 @@ rocket.lengthCenterNoMot = []; % [m] % When false, coefficients are saved with current motor's name % When true, coefficients are saved as 'generic' rocket.dynamicDerivatives = false; % [-] True if dynamic derivatives will be loaded +rocket.highAOACoefficients = false; % [-] True if separate matrix for high AOA will be loaded %% PLD - Includes Parafoil + Nose parafoil = Parafoil(); diff --git a/missions/2024_Lyra_Roccaraso_September/config/rocketConfig.m b/missions/2024_Lyra_Roccaraso_September/config/rocketConfig.m index 2939db0ce6550575817cdd355d8b2f6ca2e68943..133be74e22c422360b80e924c6fb291a147c61db 100644 --- a/missions/2024_Lyra_Roccaraso_September/config/rocketConfig.m +++ b/missions/2024_Lyra_Roccaraso_September/config/rocketConfig.m @@ -19,6 +19,7 @@ rocket.lengthCenterNoMot = []; % [m] % When false, coefficients are saved with current motor's name % When true, coefficients are saved as 'generic' rocket.dynamicDerivatives = false; % [-] True if dynamic derivatives will be loaded +rocket.highAOACoefficients = false; % [-] True if separate matrix for high AOA will be loaded %% PLD - Includes Parafoil + Nose parafoil = Parafoil(); diff --git a/missions/2025_Orion_Portugal_October/config/environmentConfig.m b/missions/2025_Orion_Portugal_October/config/environmentConfig.m index a667f90e589c2892f397076c5dff8a46325de11f..4820fb5e013c53054f22b4f9412002d944a7ff8b 100644 --- a/missions/2025_Orion_Portugal_October/config/environmentConfig.m +++ b/missions/2025_Orion_Portugal_October/config/environmentConfig.m @@ -11,7 +11,7 @@ environment.omega = 85*pi/180; % [deg] Launchpad elevation environment.phi = 133*pi/180; % [deg] Launchpad azimuth environment.pin1Length = 0.5603; % [m] Distance from the upper pin to the upper tank cap environment.pin2Length = 0.2055; % [m] Distance from the lower pin to the lower tank cap -environment.rampLength = 12; % [m] Total launchpad length +environment.rampLength = 10; % [m] Total launchpad length % environment.temperature = []; % [K] Ground temperature correction % environment.pressure = []; % [Pa] Ground pressure correction diff --git a/missions/2025_Orion_Portugal_October/config/rocketConfig.m b/missions/2025_Orion_Portugal_October/config/rocketConfig.m index 6a13ec2512f1ba80b938af94064c3038be076bfd..d47071cd692009e5f9df6998f671e48b73ba8691 100644 --- a/missions/2025_Orion_Portugal_October/config/rocketConfig.m +++ b/missions/2025_Orion_Portugal_October/config/rocketConfig.m @@ -12,7 +12,8 @@ rocket.diameter = 0.15; % [m] % If dynamic derivatives are loaded, coefficient will depend on rocket xcg % When false, coefficients are saved with current motor's name % When true, coefficients are saved as 'generic' -rocket.dynamicDerivatives = false; % [-] True if dynamic derivatives will be loaded +rocket.dynamicDerivatives = false; % [-] True if dynamic derivatives will be loaded +rocket.highAOACoefficients = false; % [-] True if separate matrix for high AOA will be loaded %% PRF - Includes Parafoil + Nose parafoil = Parafoil(); @@ -74,7 +75,7 @@ airbrakes.servoTau = 0.0374588; %% MOTOR motor = Motor(); -motor.name = 'HRE_ARM_EuRoC_2024'; +motor.name = 'HRE_ARM_SFT_2'; motor.cutoffTime = []; % [s] OVERRIDE Cutoff time motor.ignitionTransient = 0.3; % [s] Ignition transient diff --git a/missions/2025_Orion_Portugal_October/data/aeroCoefficients.mat b/missions/2025_Orion_Portugal_October/data/aeroCoefficients.mat index b3c1b232046a3a87cdee3944653945372648719d..3aa85db1d0c630e6edcc2dbcc2e69b32a96925dc 100644 --- a/missions/2025_Orion_Portugal_October/data/aeroCoefficients.mat +++ b/missions/2025_Orion_Portugal_October/data/aeroCoefficients.mat @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:75ad0a581c512de8f345a79f16d8e3d2bf681547eb386ce000434c66d6b292e0 -size 288267248 +oid sha256:f4ad48c4d016c33811361e5823e3fb0c87ae64679ff148293e2fcbb48c52f056 +size 300753532 diff --git a/missions/2025_Orion_Portugal_October/data/aeroCoefficientsHighAOA.mat b/missions/2025_Orion_Portugal_October/data/aeroCoefficientsHighAOA.mat index 9bd98f086dcafb9f9cdb22dcf40d83a9c8ea127d..00d9ce5686896e88b5ebfa31fd23bb911eaa6da2 100644 --- a/missions/2025_Orion_Portugal_October/data/aeroCoefficientsHighAOA.mat +++ b/missions/2025_Orion_Portugal_October/data/aeroCoefficientsHighAOA.mat @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da4a2977b055341314ba88e9698ffbac9702c2e57e9b876c67ea2da01631b783 -size 40438794 +oid sha256:1659d1dc6b19ea13c3cdd75b8f9627d42123c4cb6dff535d93618247a17ab9d1 +size 46224320 diff --git a/missions/2025_Orion_Portugal_October/data/motors.mat b/missions/2025_Orion_Portugal_October/data/motors.mat index b559afdbe21f341efd934abc7f80827c590d3dcf..679c796c6f3db7766946ec48f5a9adbc8167c206 100644 --- a/missions/2025_Orion_Portugal_October/data/motors.mat +++ b/missions/2025_Orion_Portugal_October/data/motors.mat @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c61e85655bf70ce3494f1f60ceafe391437e566c54e5451cfbcc652a2bf26871 -size 382167 +oid sha256:30f01e10ad8f07a578c9dcbdd18982ffb77eab23057ef003df0f20e51bea5bc2 +size 597957 diff --git a/missions/2025_Orion_Roccaraso_September/config/rocketConfig.m b/missions/2025_Orion_Roccaraso_September/config/rocketConfig.m index c4e1ffcee38a736e09fe06543010f7699fe3a553..e320c1583c941f7fe5b25b5c54d0a4ee114c5e15 100644 --- a/missions/2025_Orion_Roccaraso_September/config/rocketConfig.m +++ b/missions/2025_Orion_Roccaraso_September/config/rocketConfig.m @@ -19,6 +19,7 @@ rocket.lengthCenterNoMot = []; % [m] % When false, coefficients are saved with current motor's name % When true, coefficients are saved as 'generic' rocket.dynamicDerivatives = false; % [-] True if dynamic derivatives will be loaded +rocket.highAOACoefficients = false; % [-] True if separate matrix for high AOA will be loaded %% PLD - Includes Parafoil + Nose parafoil = Parafoil();