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