From e8265de9199ff7037837bbe18b12766141acf5e1 Mon Sep 17 00:00:00 2001 From: Mauco03 <marco.gaibotti@skywarder.eu> Date: Mon, 4 Mar 2024 22:25:53 +0100 Subject: [PATCH] [msa-refactoring][classes] Working Rocket Main difference: - fixed loadConfig to be able to load multiple variables from single file. - updated bay configs (unified under rocketConfig.m) --- classes/Component.m | 11 +- classes/Config.m | 1 + classes/Mission.m | 1 + classes/Rocket.m | 2 + classes/bays/Airbrakes.m | 5 +- classes/bays/Boat.m | 5 +- classes/bays/Electronics.m | 5 +- classes/bays/Motor.m | 3 +- classes/bays/Nose.m | 5 +- classes/bays/Payload.m | 5 +- classes/bays/Recovery.m | 5 +- classes/components/Fins.m | 5 +- classes/components/Pitot.m | 5 +- .../config/{ => old}/airbrakesConfig.m | 0 .../config/{ => old}/boatConfig.m | 0 .../config/{ => old}/electronicsConfig.m | 0 .../config/{ => old}/finsConfig.m | 0 .../config/{ => old}/motorConfig.m | 0 .../config/{ => old}/noseConfig.m | 0 .../config/{ => old}/payloadConfig.m | 0 .../config/{ => old}/pitotConfig.m | 0 .../config/{ => old}/recoveryConfig.m | 0 .../config/rocketConfig.m | 116 +++++++++++++++--- 23 files changed, 136 insertions(+), 38 deletions(-) rename missions/2024_Lyra_Roccaraso_September/config/{ => old}/airbrakesConfig.m (100%) rename missions/2024_Lyra_Roccaraso_September/config/{ => old}/boatConfig.m (100%) rename missions/2024_Lyra_Roccaraso_September/config/{ => old}/electronicsConfig.m (100%) rename missions/2024_Lyra_Roccaraso_September/config/{ => old}/finsConfig.m (100%) rename missions/2024_Lyra_Roccaraso_September/config/{ => old}/motorConfig.m (100%) rename missions/2024_Lyra_Roccaraso_September/config/{ => old}/noseConfig.m (100%) rename missions/2024_Lyra_Roccaraso_September/config/{ => old}/payloadConfig.m (100%) rename missions/2024_Lyra_Roccaraso_September/config/{ => old}/pitotConfig.m (100%) rename missions/2024_Lyra_Roccaraso_September/config/{ => old}/recoveryConfig.m (100%) diff --git a/classes/Component.m b/classes/Component.m index f297c21..0a1e53f 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 0b8af1a..ae525c4 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 2ffe2f8..d3198c0 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 7f40c78..bddf2d7 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 1a5adea..d7e5e7f 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 3869888..4747c7a 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 7f12373..30add52 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 bfc6728..f07892b 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 6085b1b..297c224 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 3f120f1..9aedec3 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 d76416f..802272b 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 e641595..bf20b06 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 33d877f..eca6f94 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 b8a2bbc..5f16058 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 -- GitLab