diff --git a/classes/Component.m b/classes/Component.m index f297c21b0aab25587c9538a41798d2acf3c4ea69..0a1e53fcffc0b4f885faa26c024bbf5ccc32ab38 100644 --- a/classes/Component.m +++ b/classes/Component.m @@ -6,10 +6,6 @@ classdef Component < Config % Insert dependencies here mission Mission end - - properties(Access = protected) - variableName string = ''; - end methods function obj = Component(mission, varsIn) @@ -44,7 +40,8 @@ classdef Component < Config % obj.loadConfig(vars) - To load from given variables fileName = obj.configName; - obj.variableName = strtok(fileName, 'C'); + varName = obj.variableName; + if isempty(varName), varName = strtok(fileName, 'C'); end switch nargin case 1 @@ -56,9 +53,9 @@ classdef Component < Config end run(fileName); - configObj = eval(obj.variableName); + configObj = eval(varName); case 2 - configObj = varargin{1}.(obj.variableName); + configObj = varargin{1}.(varName); otherwise error('Too many input arguments.') end diff --git a/classes/Config.m b/classes/Config.m index 0b8af1abcf291b77a05501e488f22967f76a5c33..ae525c4d864c7a5cbddfeb5ee380be998711c56a 100644 --- a/classes/Config.m +++ b/classes/Config.m @@ -5,6 +5,7 @@ classdef(Abstract) Config < handle properties(Abstract, Access = protected) configName {mustBeTextScalar} + variableName char end methods(Abstract, Access = protected) diff --git a/classes/Mission.m b/classes/Mission.m index 2ffe2f8ca86078509c6433c2060585592acff288..d3198c0a5f7019c5e437ebd781a021320324e7d3 100644 --- a/classes/Mission.m +++ b/classes/Mission.m @@ -19,6 +19,7 @@ classdef Mission < Config properties(Access = protected) configName = 'missionConfig.m' + variableName = '' end methods diff --git a/classes/Rocket.m b/classes/Rocket.m index 7f40c78b9a39157f208eeb18fdddd7b7ee2994fb..bddf2d7bf55f0f0f28b53747d008d351848e62a2 100644 --- a/classes/Rocket.m +++ b/classes/Rocket.m @@ -17,11 +17,13 @@ classdef Rocket < Bay length diameter mass + massNoMotor inertia end properties(Access = protected) configName = 'rocketConfig.m' + variableName = '' mission Mission end diff --git a/classes/bays/Airbrakes.m b/classes/bays/Airbrakes.m index 1a5adea18fab2e522a7eb96d8b8dcac573808105..d7e5e7f4ec0e05e157d0a60ae75652566b096a2f 100644 --- a/classes/bays/Airbrakes.m +++ b/classes/bays/Airbrakes.m @@ -21,7 +21,8 @@ classdef Airbrakes < Bay end properties(Access = protected) - configName = 'airbrakesConfig.m' - mission + configName = 'rocketConfig.m' + variableName = 'airbrakes' + mission Mission = Mission() end end \ No newline at end of file diff --git a/classes/bays/Boat.m b/classes/bays/Boat.m index 386988879ccfa38bd8e3bcf7887f018f088bdde2..4747c7ad131e778dda8b39c068010158684fbf6b 100644 --- a/classes/bays/Boat.m +++ b/classes/bays/Boat.m @@ -9,7 +9,8 @@ classdef Boat < Bay end properties(Access = protected) - configName = 'boatConfig.m' - mission + configName = 'rocketConfig.m' + variableName = 'boat' + mission Mission = Mission() end end \ No newline at end of file diff --git a/classes/bays/Electronics.m b/classes/bays/Electronics.m index 7f1237359ae8a82e0e99428bff47718f6a8e9fba..30add52a8a51543b85cd22e2cafa34cd5e4d3326 100644 --- a/classes/bays/Electronics.m +++ b/classes/bays/Electronics.m @@ -10,7 +10,8 @@ classdef Electronics < Bay end properties(Access = protected) - configName = 'electronicsConfig.m' - mission + configName = 'rocketConfig.m' + variableName = 'electronics' + mission Mission = Mission() end end \ No newline at end of file diff --git a/classes/bays/Motor.m b/classes/bays/Motor.m index bfc6728c39d8819629ecf302d5ffb3e71cb2170c..f07892b76d8093bdbe2b4186ddd24bbb332d1baf 100644 --- a/classes/bays/Motor.m +++ b/classes/bays/Motor.m @@ -29,7 +29,8 @@ classdef Motor < Bay properties(Access = protected) configName = 'motorConfig.m' - mission + variableName = '' + mission Mission = Mission() end methods diff --git a/classes/bays/Nose.m b/classes/bays/Nose.m index 6085b1bfb6b2a6f290cb19dec947946473a173e5..297c2246cf8ab0ce9fa9e5c46036706b65ed3d59 100644 --- a/classes/bays/Nose.m +++ b/classes/bays/Nose.m @@ -14,7 +14,8 @@ classdef Nose < Bay end properties(Access = protected) - configName = 'noseConfig.m' - mission + configName = 'rocketConfig.m' + variableName = 'nose' + mission Mission = Mission() end end \ No newline at end of file diff --git a/classes/bays/Payload.m b/classes/bays/Payload.m index 3f120f19cc92a4a5643e0c26ab3e3dd97f7e37c8..9aedec37dfbf1b2e40489de689f6a2f7e9ba4047 100644 --- a/classes/bays/Payload.m +++ b/classes/bays/Payload.m @@ -9,7 +9,8 @@ classdef Payload < Bay end properties(Access = protected) - configName = 'payloadConfig.m' - mission + configName = 'rocketConfig.m' + variableName = 'payload' + mission Mission = Mission() end end \ No newline at end of file diff --git a/classes/bays/Recovery.m b/classes/bays/Recovery.m index d76416f07e18320041b9e5bd035c1a6b0307a4e5..802272bea549696521efb76d325a01a0629b9a8b 100644 --- a/classes/bays/Recovery.m +++ b/classes/bays/Recovery.m @@ -9,7 +9,8 @@ classdef Recovery < Bay end properties(Access = protected) - configName = 'recoveryConfig.m' - mission + configName = 'rocketConfig.m' + variableName = 'recovery' + mission Mission = Mission() end end \ No newline at end of file diff --git a/classes/components/Fins.m b/classes/components/Fins.m index e641595c72f10f6b59980b0806671c047d6ba9d6..bf20b0685bc2086ef5904d0b2be1c65f453e5d8b 100644 --- a/classes/components/Fins.m +++ b/classes/components/Fins.m @@ -15,7 +15,8 @@ classdef Fins < Component end properties(Access = protected) - configName = 'finsConfig.m' - mission Mission + configName = 'rocketConfig.m' + variableName = 'fins' + mission Mission = Mission() end end \ No newline at end of file diff --git a/classes/components/Pitot.m b/classes/components/Pitot.m index 33d877f80d2539380cd3500f29716bb8a2ded6e3..eca6f94d4eb434ee2dda0d682a1a2ac9a1df167e 100644 --- a/classes/components/Pitot.m +++ b/classes/components/Pitot.m @@ -12,7 +12,8 @@ classdef Pitot < Component end properties(Access = protected) - configName = 'pitotConfig.m' - mission Mission + configName = 'rocketConfig.m' + variableName = 'pitot' + mission Mission = Mission() end end \ No newline at end of file diff --git a/missions/2024_Lyra_Roccaraso_September/config/airbrakesConfig.m b/missions/2024_Lyra_Roccaraso_September/config/old/airbrakesConfig.m similarity index 100% rename from missions/2024_Lyra_Roccaraso_September/config/airbrakesConfig.m rename to missions/2024_Lyra_Roccaraso_September/config/old/airbrakesConfig.m diff --git a/missions/2024_Lyra_Roccaraso_September/config/boatConfig.m b/missions/2024_Lyra_Roccaraso_September/config/old/boatConfig.m similarity index 100% rename from missions/2024_Lyra_Roccaraso_September/config/boatConfig.m rename to missions/2024_Lyra_Roccaraso_September/config/old/boatConfig.m diff --git a/missions/2024_Lyra_Roccaraso_September/config/electronicsConfig.m b/missions/2024_Lyra_Roccaraso_September/config/old/electronicsConfig.m similarity index 100% rename from missions/2024_Lyra_Roccaraso_September/config/electronicsConfig.m rename to missions/2024_Lyra_Roccaraso_September/config/old/electronicsConfig.m diff --git a/missions/2024_Lyra_Roccaraso_September/config/finsConfig.m b/missions/2024_Lyra_Roccaraso_September/config/old/finsConfig.m similarity index 100% rename from missions/2024_Lyra_Roccaraso_September/config/finsConfig.m rename to missions/2024_Lyra_Roccaraso_September/config/old/finsConfig.m diff --git a/missions/2024_Lyra_Roccaraso_September/config/motorConfig.m b/missions/2024_Lyra_Roccaraso_September/config/old/motorConfig.m similarity index 100% rename from missions/2024_Lyra_Roccaraso_September/config/motorConfig.m rename to missions/2024_Lyra_Roccaraso_September/config/old/motorConfig.m diff --git a/missions/2024_Lyra_Roccaraso_September/config/noseConfig.m b/missions/2024_Lyra_Roccaraso_September/config/old/noseConfig.m similarity index 100% rename from missions/2024_Lyra_Roccaraso_September/config/noseConfig.m rename to missions/2024_Lyra_Roccaraso_September/config/old/noseConfig.m diff --git a/missions/2024_Lyra_Roccaraso_September/config/payloadConfig.m b/missions/2024_Lyra_Roccaraso_September/config/old/payloadConfig.m similarity index 100% rename from missions/2024_Lyra_Roccaraso_September/config/payloadConfig.m rename to missions/2024_Lyra_Roccaraso_September/config/old/payloadConfig.m diff --git a/missions/2024_Lyra_Roccaraso_September/config/pitotConfig.m b/missions/2024_Lyra_Roccaraso_September/config/old/pitotConfig.m similarity index 100% rename from missions/2024_Lyra_Roccaraso_September/config/pitotConfig.m rename to missions/2024_Lyra_Roccaraso_September/config/old/pitotConfig.m diff --git a/missions/2024_Lyra_Roccaraso_September/config/recoveryConfig.m b/missions/2024_Lyra_Roccaraso_September/config/old/recoveryConfig.m similarity index 100% rename from missions/2024_Lyra_Roccaraso_September/config/recoveryConfig.m rename to missions/2024_Lyra_Roccaraso_September/config/old/recoveryConfig.m diff --git a/missions/2024_Lyra_Roccaraso_September/config/rocketConfig.m b/missions/2024_Lyra_Roccaraso_September/config/rocketConfig.m index b8a2bbc62074a32bc4e6cd6aee9fc9f9b6a4fbdc..5f16058a899b345ed9c8d6d06f6b8047c22257a0 100644 --- a/missions/2024_Lyra_Roccaraso_September/config/rocketConfig.m +++ b/missions/2024_Lyra_Roccaraso_September/config/rocketConfig.m @@ -1,17 +1,105 @@ % CONFIG - This script sets up control parameters +%% ROCKET - OVERRIDES BAYS CONFIG rocket = Rocket(); -nose = Nose(); -payload = Payload(); -recovery = Recovery(); -electronics = Electronics(); -airbrakes = Airbrakes(); -motor = Motor(); -boat = Boat(); -fins = Fins(); -pitot = Pitot(); - -rocket.length = 000; -rocket.diameter = 000; -rocket.mass = 000; -rocket.inertia = 000; + +rocket.length = NaN; % [m] OVERRIDE total length +rocket.diameter = NaN; % [m] OVERRIDE diameter +rocket.mass = NaN; % [kg] OVERRIDE total mass +rocket.massNoMotor = NaN; % [kg] OVERRIDE mass without motor +rocket.inertia = NaN; % [] OVERRIDE total inertia + +%% NOSE +nose = Nose(); + +nose.length = 000; % [m] Nosecone Length +nose.diameter = 000; % [m] Nosecone Diameter +nose.mass = 000; % [m] Nosecone Inertia +nose.inertia = 000; % [m] Nosecone Mass +nose.ogiveType = 'MHAACK'; % [-] Nosecone shape +nose.power = 000; %3/4; % [-] Nosecone power type parameter +nose.p = 000; %1.250152e+00; % [-] P coefficient for modified nosecone shapes +nose.c = 000; %1.799127e-01; % [-] C coefficient for modified nosecone shapes + +%% PLD +payload = Payload(); + +payload.length = 0; +payload.diameter = 0; +payload.mass = 0; +payload.inertia = 0; + +%% ELC +electronics = Electronics(); + +electronics.length = 000; +electronics.diameter = 000; +electronics.mass = 000; +electronics.inertia = 000; + +%% RCS +recovery = Recovery(); + +recovery.length = 0; +recovery.diameter = 0; +recovery.mass = 0; +recovery.inertia = 0; + +%% ARB +airbrakes = Airbrakes(); + +airbrakes.multipleAB = false; % If true, multiple and smooth airbrakes opening will be simulated +airbrakes.opening = [1 3]; % aerobrakes, 1-2-3 for 0%, 50% or 100% opened +airbrakes.deltaTime = [10]; % aerobrakes, configurations usage time + +airbrakes.n = 3; % [-] number of brakes +airbrakes.brakeWidth = 0.1002754821; % [m] brakes width (normal) +airbrakes.brakeLength = 0.008; % [m] brakes thickness +airbrakes.xDistance = 1.517; % [m] axial position from nosecone base + +airbrakes.length = 000; +airbrakes.diameter = 000; +airbrakes.mass = 000; +airbrakes.inertia = 000; + +%% AIRBRAKES CONTROL SETTINGS +airbrakes.minTime = 0; % [s] time after which the airbrakes can be used +airbrakes.maxMach = 0.8; % [-] Maximum Mach at which airbrakes can be used +airbrakes.servoOmega = 150*pi/180; % [rad/s] Servo-motor angular velocity +airbrakes.height = linspace(0, 0.0363, 3); % [m] Block airbrakes opening coordinate ( First entry must be 0! ) + +%% MOTOR +motor = Motor(); + +motor.name = 'HRE_FURIA-Rv2-T04T03'; +motor.ignitionTime = 0.4; % [s] Ignition transient +motor.cutoffTime = 0.3; % [s] Cut-off transient + +%% BOAT +boat = Boat(); + +boat.length = 0; +boat.diameter = 0; +boat.mass = 0; +boat.inertia = 0; + +%% FINS +fins = Fins(); + +fins.rootChord = 0.30; % [m] attached chord length +fins.freeChord = 0.14; % [m] free chord length +fins.height = 0.11; % [m] fin heigth +fins.deltaXFreeChord = 0.13; % [m] start of Chord 2 measured from start of Chord 1 +fins.nPanel = 3; % [m] number of fins +fins.leadingEdgeRadius = [0 0]; % [deg] Leading edge radius at each span station +fins.axialDistance = 0.012; % [m] distance between end of root chord and end of center body +fins.semiThickness = 0.00175; % [m] fin semi-thickness +fins.maxThicknessPosition = 0.00175; % [m] Fraction of chord from leading edge to max thickness + +%% PITOT +pitot = Pitot(); + +protuberances.xDistance = 1.517; % [m] axial position from nosecone base +protuberances.n = 3; % [-] number of brakes +protuberances.length = 0.008; % [m] brakes thickness +protuberances.width = 0.1002754821; % [m] brakes width (normal) \ No newline at end of file