From dc85374afae0fc7c4de84662bd06070b61d7ee5a Mon Sep 17 00:00:00 2001
From: Stefano Belletti <stefano.belletti@skywarder.eu>
Date: Sat, 22 Feb 2025 12:34:00 +0100
Subject: [PATCH] New Orion data for noise analysis

---
 .../{ => 2024_Lyra}/mat_creator.m             |  10 -
 .../NoiseAnalysis/2025_Orion/mat_creator.m    | 128 ++++++++++
 .../NoiseAnalysis/main_noiseAnalysis.m        |  38 ++-
 .../Lyra_Port_sensor_vect_res.mat             | Bin 4397 -> 4397 bytes
 .../initSensors2025_Orion_Portugal_October.m  | 239 +++++++++---------
 ...nitSensors2025_Orion_Roccaraso_September.m | 233 ++++++++---------
 simulator/configs/configMission.m             |  66 -----
 simulator/configs/configPath.m                |   8 +-
 simulator/src/sensor_plots.m                  |   2 +-
 9 files changed, 394 insertions(+), 330 deletions(-)
 rename commonFunctions/sensors/NoiseAnalysis/{ => 2024_Lyra}/mat_creator.m (96%)
 create mode 100644 commonFunctions/sensors/NoiseAnalysis/2025_Orion/mat_creator.m
 delete mode 100644 simulator/configs/configMission.m

diff --git a/commonFunctions/sensors/NoiseAnalysis/mat_creator.m b/commonFunctions/sensors/NoiseAnalysis/2024_Lyra/mat_creator.m
similarity index 96%
rename from commonFunctions/sensors/NoiseAnalysis/mat_creator.m
rename to commonFunctions/sensors/NoiseAnalysis/2024_Lyra/mat_creator.m
index bd319e46..611e07b7 100644
--- a/commonFunctions/sensors/NoiseAnalysis/mat_creator.m
+++ b/commonFunctions/sensors/NoiseAnalysis/2024_Lyra/mat_creator.m
@@ -5,7 +5,6 @@ close all
 
 ii = 1;
 
-% Ok, check factor
 Lyra_Port_sensor_vect(ii).name = "main_Boardcore_LIS2MDLData.csv";
 Lyra_Port_sensor_vect(ii).info = "Mag";
 Lyra_Port_sensor_vect(ii).fs = 100;
@@ -19,7 +18,6 @@ Lyra_Port_sensor_vect(ii).factor = 1000;
 
 ii = ii + 1;
 
-% Ok, check factor
 Lyra_Port_sensor_vect(ii).name = "main_Main_StaticPressureData1.csv";
 Lyra_Port_sensor_vect(ii).info = "barometer1";
 Lyra_Port_sensor_vect(ii).fs = 100;
@@ -33,7 +31,6 @@ Lyra_Port_sensor_vect(ii).factor = 0.01;
 
 ii = ii + 1;
 
-% Ok, check factor
 Lyra_Port_sensor_vect(ii).name = "main_Main_StaticPressureData2.csv";
 Lyra_Port_sensor_vect(ii).info = "barometer2";
 Lyra_Port_sensor_vect(ii).fs = 100;
@@ -47,7 +44,6 @@ Lyra_Port_sensor_vect(ii).factor = 0.01;
 
 ii = ii + 1;
 
-% Ok, check factor
 Lyra_Port_sensor_vect(ii).name = "payload_Payload_StaticPressureData.csv";
 Lyra_Port_sensor_vect(ii).info = "StaticPressure";
 Lyra_Port_sensor_vect(ii).fs = 100;
@@ -61,7 +57,6 @@ Lyra_Port_sensor_vect(ii).factor = 0.01;
 
 ii = ii + 1;
 
-% Ok, check factor
 Lyra_Port_sensor_vect(ii).name = "payload_Payload_DynamicPressureData.csv";
 Lyra_Port_sensor_vect(ii).info = "DynamicPressure";
 Lyra_Port_sensor_vect(ii).fs = 100;
@@ -75,7 +70,6 @@ Lyra_Port_sensor_vect(ii).factor = 0.01;
 
 ii = ii + 1;
 
-% Ok, check factor
 Lyra_Port_sensor_vect(ii).name = "main_Boardcore_LPS28DFWData.csv";
 Lyra_Port_sensor_vect(ii).info = "barometer3";
 Lyra_Port_sensor_vect(ii).fs = 50;
@@ -86,7 +80,6 @@ Lyra_Port_sensor_vect(ii).factor = 0.01;
 
 ii = ii + 1;
 
-% Ok, check factor
 Lyra_Port_sensor_vect(ii).name = "main_Boardcore_LSM6DSRXData.csv";
 Lyra_Port_sensor_vect(ii).info = "accelerometer";
 Lyra_Port_sensor_vect(ii).fs = 440;
@@ -97,7 +90,6 @@ Lyra_Port_sensor_vect(ii).factor = 1000/9.81;
 
 ii = ii + 1;
 
-% Ok, check factor
 Lyra_Port_sensor_vect(ii).name = "main_Boardcore_LSM6DSRXData.csv";
 Lyra_Port_sensor_vect(ii).info = "initial gyroscope";
 Lyra_Port_sensor_vect(ii).fs = 440;
@@ -108,7 +100,6 @@ Lyra_Port_sensor_vect(ii).factor = 180/pi*1000;
 
 ii = ii + 1;
 
-% Ok, check factor
 Lyra_Port_sensor_vect(ii).name = "motor_Motor_CCPressureData.csv";
 Lyra_Port_sensor_vect(ii).info = "initial chamber pressure";
 Lyra_Port_sensor_vect(ii).fs = 100;
@@ -122,7 +113,6 @@ Lyra_Port_sensor_vect(ii).factor = 0.01;
 
 ii = ii + 1;
 
-% Ok, check factor
 Lyra_Port_sensor_vect(ii).name = "payload_Payload_StaticPressureData.csv";
 Lyra_Port_sensor_vect(ii).info = "pitot (static + total)";
 Lyra_Port_sensor_vect(ii).fs = 100;
diff --git a/commonFunctions/sensors/NoiseAnalysis/2025_Orion/mat_creator.m b/commonFunctions/sensors/NoiseAnalysis/2025_Orion/mat_creator.m
new file mode 100644
index 00000000..7cc074d6
--- /dev/null
+++ b/commonFunctions/sensors/NoiseAnalysis/2025_Orion/mat_creator.m
@@ -0,0 +1,128 @@
+%% new .mat for init Temp 2025 - Orion
+
+clear, clc
+close all
+
+ii = 1;
+
+Orion_Temp_sensor_vect(ii).name = "main_Boardcore_LIS2MDLData.csv";
+Orion_Temp_sensor_vect(ii).info = "Mag";
+Orion_Temp_sensor_vect(ii).fs = 100;
+Orion_Temp_sensor_vect(ii).noise_type = "pink";
+Orion_Temp_sensor_vect(ii).colored_data.white_variance = 0.00003;
+Orion_Temp_sensor_vect(ii).colored_data.fcut = 0.3;
+Orion_Temp_sensor_vect(ii).colored_data.butterOrder = 1;
+Orion_Temp_sensor_vect(ii).bounds = [0.5 0.7];
+Orion_Temp_sensor_vect(ii).tracks = [2 3 4];
+Orion_Temp_sensor_vect(ii).factor = 1000;
+
+ii = ii + 1;
+
+Orion_Temp_sensor_vect(ii).name = "main_Main_StaticPressureData1.csv";
+Orion_Temp_sensor_vect(ii).info = "barometer1";
+Orion_Temp_sensor_vect(ii).fs = 100;
+Orion_Temp_sensor_vect(ii).noise_type = "pink";
+Orion_Temp_sensor_vect(ii).colored_data.white_variance = 10;
+Orion_Temp_sensor_vect(ii).colored_data.fcut = 0.3;
+Orion_Temp_sensor_vect(ii).colored_data.butterOrder = 1;
+Orion_Temp_sensor_vect(ii).bounds = [0.6 0.7];
+Orion_Temp_sensor_vect(ii).tracks = 2;
+Orion_Temp_sensor_vect(ii).factor = 0.01;
+
+ii = ii + 1;
+
+Orion_Temp_sensor_vect(ii).name = "main_Main_StaticPressureData2.csv";
+Orion_Temp_sensor_vect(ii).info = "barometer2";
+Orion_Temp_sensor_vect(ii).fs = 100;
+Orion_Temp_sensor_vect(ii).noise_type = "pink";
+Orion_Temp_sensor_vect(ii).colored_data.white_variance = 15;
+Orion_Temp_sensor_vect(ii).colored_data.fcut = 0.3;
+Orion_Temp_sensor_vect(ii).colored_data.butterOrder = 1;
+Orion_Temp_sensor_vect(ii).bounds = [0.6 0.7];
+Orion_Temp_sensor_vect(ii).tracks = 2;
+Orion_Temp_sensor_vect(ii).factor = 0.01;
+
+ii = ii + 1;
+
+Orion_Temp_sensor_vect(ii).name = "payload_Payload_StaticPressureData.csv";
+Orion_Temp_sensor_vect(ii).info = "StaticPressure";
+Orion_Temp_sensor_vect(ii).fs = 100;
+Orion_Temp_sensor_vect(ii).noise_type = "pink";
+Orion_Temp_sensor_vect(ii).colored_data.white_variance = 30;
+Orion_Temp_sensor_vect(ii).colored_data.fcut = 0.3;
+Orion_Temp_sensor_vect(ii).colored_data.butterOrder = 1;
+Orion_Temp_sensor_vect(ii).bounds = [0.3 0.4];
+Orion_Temp_sensor_vect(ii).tracks = 2;
+Orion_Temp_sensor_vect(ii).factor = 0.01;
+
+ii = ii + 1;
+
+Orion_Temp_sensor_vect(ii).name = "payload_Payload_DynamicPressureData.csv";
+Orion_Temp_sensor_vect(ii).info = "DynamicPressure";
+Orion_Temp_sensor_vect(ii).fs = 100;
+Orion_Temp_sensor_vect(ii).noise_type = "colored";
+Orion_Temp_sensor_vect(ii).colored_data.white_variance = 12;
+Orion_Temp_sensor_vect(ii).colored_data.fcut = 0.05;
+Orion_Temp_sensor_vect(ii).colored_data.butterOrder = 1;
+Orion_Temp_sensor_vect(ii).bounds = [0.06 0.14];
+Orion_Temp_sensor_vect(ii).tracks = 2;
+Orion_Temp_sensor_vect(ii).factor = 0.01;
+
+ii = ii + 1;
+
+Orion_Temp_sensor_vect(ii).name = "main_Boardcore_LPS28DFWData.csv";
+Orion_Temp_sensor_vect(ii).info = "barometer3";
+Orion_Temp_sensor_vect(ii).fs = 50;
+Orion_Temp_sensor_vect(ii).noise_type = "white";
+Orion_Temp_sensor_vect(ii).bounds = [0.13 0.23];
+Orion_Temp_sensor_vect(ii).tracks = 2;
+Orion_Temp_sensor_vect(ii).factor = 0.01;
+
+ii = ii + 1;
+
+Orion_Temp_sensor_vect(ii).name = "main_Boardcore_LSM6DSRXData.csv";
+Orion_Temp_sensor_vect(ii).info = "accelerometer";
+Orion_Temp_sensor_vect(ii).fs = 440;
+Orion_Temp_sensor_vect(ii).noise_type = "white";
+Orion_Temp_sensor_vect(ii).bounds = [0.35 0.5];
+Orion_Temp_sensor_vect(ii).tracks = [2 3 4];
+Orion_Temp_sensor_vect(ii).factor = 1000/9.81;
+
+ii = ii + 1;
+
+Orion_Temp_sensor_vect(ii).name = "main_Boardcore_LSM6DSRXData.csv";
+Orion_Temp_sensor_vect(ii).info = "initial gyroscope";
+Orion_Temp_sensor_vect(ii).fs = 440;
+Orion_Temp_sensor_vect(ii).noise_type = "white";
+Orion_Temp_sensor_vect(ii).bounds = [0.35 0.5];
+Orion_Temp_sensor_vect(ii).tracks = [6 7 8];
+Orion_Temp_sensor_vect(ii).factor = 180/pi*1000;
+
+ii = ii + 1;
+
+Orion_Temp_sensor_vect(ii).name = "motor_Motor_CCPressureData.csv";
+Orion_Temp_sensor_vect(ii).info = "initial chamber pressure";
+Orion_Temp_sensor_vect(ii).fs = 100;
+Orion_Temp_sensor_vect(ii).noise_type = "colored";
+Orion_Temp_sensor_vect(ii).colored_data.white_variance = 0.000025;
+Orion_Temp_sensor_vect(ii).colored_data.fcut = 0.15;
+Orion_Temp_sensor_vect(ii).colored_data.butterOrder = 1;
+Orion_Temp_sensor_vect(ii).bounds = [0.35 0.5];
+Orion_Temp_sensor_vect(ii).tracks = 2;
+Orion_Temp_sensor_vect(ii).factor = 0.01;
+
+ii = ii + 1;
+
+Orion_Temp_sensor_vect(ii).name = "payload_Payload_StaticPressureData.csv";
+Orion_Temp_sensor_vect(ii).info = "pitot (static + total)";
+Orion_Temp_sensor_vect(ii).fs = 100;
+Orion_Temp_sensor_vect(ii).noise_type = "pink";
+Orion_Temp_sensor_vect(ii).colored_data.white_variance = 10;
+Orion_Temp_sensor_vect(ii).colored_data.fcut = 0.3;
+Orion_Temp_sensor_vect(ii).colored_data.butterOrder = 1;
+Orion_Temp_sensor_vect(ii).bounds = [0.2 0.25];
+Orion_Temp_sensor_vect(ii).tracks = 2;
+Orion_Temp_sensor_vect(ii).factor = 0.01;
+
+save("Orion_Temp_sensor_vect")
+
diff --git a/commonFunctions/sensors/NoiseAnalysis/main_noiseAnalysis.m b/commonFunctions/sensors/NoiseAnalysis/main_noiseAnalysis.m
index ce214ad9..b1b5a719 100644
--- a/commonFunctions/sensors/NoiseAnalysis/main_noiseAnalysis.m
+++ b/commonFunctions/sensors/NoiseAnalysis/main_noiseAnalysis.m
@@ -6,7 +6,7 @@ restoredefaultpath
 %% Path
 
 matFolder = "..\New data";
-addpath(genpath("./Functions"))
+addpath(genpath(".\Functions"))
 addpath(genpath(matFolder))
 
 
@@ -56,30 +56,42 @@ end
 clear, clc
 close all
 
-name = "Lyra_Port_sensor_vect";
+% rocketName = "2025_Orion";
+% missionName = 'Orion_Temp_sensor_vect';
+% save_name = "Orion_Temp_sensor_vect_res";
+rocketName = "2024_Lyra";
+missionName = 'Lyra_Port_sensor_vect';
 save_name = "Lyra_Port_sensor_vect_res";
 
 try
-    load(name)
+    load(rocketName + "\" + missionName)
 catch
-    error("Use mat_creator first")
+    error("Use mat_creator first (inside the chosen mission)")
 end
 
-for sensor_num  = 1:length(Lyra_Port_sensor_vect)
-    for track = Lyra_Port_sensor_vect(sensor_num).tracks
-        if Lyra_Port_sensor_vect(sensor_num).noise_type == "white"
-            Lyra_Port_sensor_vect = NoiseAnalysis_white(Lyra_Port_sensor_vect, sensor_num, track, 0);
-        elseif Lyra_Port_sensor_vect(sensor_num).noise_type == "pink"
-            Lyra_Port_sensor_vect = NoiseAnalysis_pink(Lyra_Port_sensor_vect, sensor_num, track, 0);
-        elseif Lyra_Port_sensor_vect(sensor_num).noise_type == "colored"
-            Lyra_Port_sensor_vect = NoiseAnalysis_colored(Lyra_Port_sensor_vect, sensor_num, track, 0);
+% missionMat = Orion_Temp_sensor_vect;
+missionMat = Lyra_Port_sensor_vect;
+
+for sensor_num  = 1:length(missionMat)
+    for track = missionMat(sensor_num).tracks
+        if missionMat(sensor_num).noise_type == "white"
+            missionMat = NoiseAnalysis_white(missionMat, sensor_num, track, 0);
+        elseif missionMat(sensor_num).noise_type == "pink"
+            missionMat = NoiseAnalysis_pink(missionMat, sensor_num, track, 0);
+        elseif missionMat(sensor_num).noise_type == "colored"
+            missionMat = NoiseAnalysis_colored(missionMat, sensor_num, track, 0);
         else
             error("Noise type is not 'white', 'pink' or 'colored'")
         end
     end
 end
 
-save(save_name, name)
+% Orion_Temp_sensor_vect = missionMat;
+Lyra_Port_sensor_vect = missionMat;
+
+% save(rocketName + "\" + save_name, 'Orion_Temp_sensor_vect')
+save(rocketName + "\" + save_name, 'Lyra_Port_sensor_vect')
+fprintf("Copy paste the generated .mat in %s\n", ".\matlab-simulator\data\"+rocketName)
 
 
 %% 3 - fs
diff --git a/data/2024_Lyra_Portugal_October/Lyra_Port_sensor_vect_res.mat b/data/2024_Lyra_Portugal_October/Lyra_Port_sensor_vect_res.mat
index b2bb62cb4d87b848836a45fce2176e94e1971de3..d244a21cf270acec308679a866f77f109793737d 100644
GIT binary patch
delta 41
xcmZ3hv{q??i9~Q>iGo{dl7f+uf}xR>p}Ccjk%Ezdk?F)h<%tQb8%uTy008;33+Vs=

delta 41
xcmZ3hv{q??iG*){o`PFyl7gXuf}y#UiLsTDxq^{_k?F)h<%tQb8%uTy008<|3-JH|

diff --git a/data/2025_Orion_Portugal_October/initSensors2025_Orion_Portugal_October.m b/data/2025_Orion_Portugal_October/initSensors2025_Orion_Portugal_October.m
index 2a8dce4d..e3b79ac9 100644
--- a/data/2025_Orion_Portugal_October/initSensors2025_Orion_Portugal_October.m
+++ b/data/2025_Orion_Portugal_October/initSensors2025_Orion_Portugal_October.m
@@ -1,22 +1,21 @@
-% initialise sensors
+%% Sensor Initialization
 
-% author: Pier Francesco Bachini - ipt GNC 2025
-% pierfrancesco.bachini@skywarder.eu 
-% release 29/11/2024
+% author: Stefano Belletti - ipt GNC 2025
+% stefano.belletti@skywarder.eu 
+% release 22/02/2025
+% latest update: Stefano Belletti (22/02/2025)
 
+load("Orion_Temp_sensor_vect_res.mat")
 
-
-%% barometer1 - static measure (HSCMAND001BAAA5)
-sensorSettings.barometer1 = Sensor_with_fault_sim(); % presure in mbar, temp should be in C°
-sensorSettings.barometer1.maxMeasurementRange  =   1000;                   % 1100, 1300 in mbar
-sensorSettings.barometer1.minMeasurementRange  =   0;                    % 300, 10 in mbar
-sensorSettings.barometer1.bit = 24; % adc on rocket is 24 bits 
-sensorSettings.barometer1.resolution = (sensorSettings.barometer1.maxMeasurementRange -sensorSettings.barometer1.minMeasurementRange)/(2^sensorSettings.barometer1.bit);
-sensorSettings.barometer1.noiseVariance        =   1;                     % mbar^2
-
-sensorSettings.barometer1.fault_time = 9; %if negative it will be generated at random between a max and a min value
-sensorSettings.barometer1.max_fault_time = 96; %max seconds to wait before possible fault
-sensorSettings.barometer1.min_fault_time = 6; %min seconds to wait before possible fault
+%% barometer1 - static measure
+% NOTE: pressure in mbar, temp should be in C°
+sensorSettings.barometer1 = SensorFault();
+sensorSettings.barometer1.maxMeasurementRange   =   1000;                   % 1100, 1300 in mbar
+sensorSettings.barometer1.minMeasurementRange   =   0;                      % 300, 10 in mbar
+sensorSettings.barometer1.bit                   =   24;                     % adc on rocket is 24 bits 
+sensorSettings.barometer1.fault_time = 9;           % if negative it will be generated at random between a max and a min value
+sensorSettings.barometer1.max_fault_time = 96;      % max seconds to wait before possible fault
+sensorSettings.barometer1.min_fault_time = 6;       % min seconds to wait before possible fault
 
 % fault generation
 switch  settings.fault_sim.fault_type(1)
@@ -34,28 +33,27 @@ switch  settings.fault_sim.fault_type(1)
     otherwise
 end
 
-%% barometer2 - static measure (HSCMAND001BAAA5)
-sensorSettings.barometer2 = Sensor_with_fault_sim(); % presure in mbar, temp should be in C°
-sensorSettings.barometer2.maxMeasurementRange  =   1000;                   % 1100, 1300 in mbar
-sensorSettings.barometer2.minMeasurementRange  =   0;                    % 300, 10 in mbar
-sensorSettings.barometer2.bit = 24; % adc on rocket is 24 bits 
-sensorSettings.barometer2.resolution = (sensorSettings.barometer2.maxMeasurementRange -sensorSettings.barometer2.minMeasurementRange)/(2^sensorSettings.barometer2.bit);
-sensorSettings.barometer2.noiseVariance        =   1;                     % mbar^2
+sensorSettings.barometer1.update(Orion_Temp_sensor_vect, "main_Main_StaticPressureData1.csv", 1);
 
-sensorSettings.barometer2.fault_time = -1; %if negative it will be generated at random between a max and a min value
-sensorSettings.barometer2.max_fault_time = 96; %max seconds to wait before possible fault
-sensorSettings.barometer2.min_fault_time = 6; %min seconds to wait before possible fault
+%% barometer2 - static measure
+% NOTE: pressure in mbar, temp should be in C°
+sensorSettings.barometer2 = SensorFault();
+sensorSettings.barometer2.maxMeasurementRange   =   1000;                   % 1100, 1300 in mbar
+sensorSettings.barometer2.minMeasurementRange   =   0;                      % 300, 10 in mbar
+sensorSettings.barometer2.bit                   =   24;                     % adc on rocket is 24 bits 
+sensorSettings.barometer2.fault_time = -1;          % if negative it will be generated at random between a max and a min value
+sensorSettings.barometer2.max_fault_time = 96;      % max seconds to wait before possible fault
+sensorSettings.barometer2.min_fault_time = 6;       % min seconds to wait before possible fault
 
 % fault generation
-
 switch  settings.fault_sim.fault_type(2)
     case "offset"
         offset_value_2 = round((settings.fault_sim.max_offset-settings.fault_sim.min_offset)*rand() + settings.fault_sim.min_offset);
-        sensorSettings.barometer2 = sensorSettings.barometer2.setOffset(offset_value_2); % i don't know the unit of measurment as of now
+        sensorSettings.barometer2 = sensorSettings.barometer2.setOffset(offset_value_2); % i don't know the unit of measurement as of now
         [sensorSettings.barometer2, fault_time_2] = sensorSettings.barometer2.setErrorTime(); % in seconds
     case "degradation"
         degradation_value_2 = round((settings.fault_sim.max_degradation-settings.fault_sim.min_degradation)*rand() + settings.fault_sim.min_degradation);
-        sensorSettings.barometer2 = sensorSettings.barometer2.setDegradation(degradation_value_2); % i don't know the unit of measurment as of now
+        sensorSettings.barometer2 = sensorSettings.barometer2.setDegradation(degradation_value_2); % i don't know the unit of measurement as of now
         [sensorSettings.barometer2, fault_time_2] = sensorSettings.barometer2.setErrorTime(); % in seconds
     case "freezing"
         sensorSettings.barometer2.setFreezing;
@@ -63,28 +61,27 @@ switch  settings.fault_sim.fault_type(2)
     otherwise
 end
 
-%% barometer3 - digital measure (LPS28DFWTR)
-sensorSettings.barometer3 = Sensor_with_fault_sim(); % presure in mbar, temp should be in C°
-sensorSettings.barometer3.maxMeasurementRange  =   4060;                   % 1100, 1300 in mbar
-sensorSettings.barometer3.minMeasurementRange  =   260;                    % 300, 10 in mbar
-sensorSettings.barometer3.bit = 24; 
-sensorSettings.barometer3.resolution = (sensorSettings.barometer3.maxMeasurementRange -sensorSettings.barometer3.minMeasurementRange)/(2^sensorSettings.barometer3.bit);
-sensorSettings.barometer3.noiseVariance        =   4.06;                      % guess in mbar
+sensorSettings.barometer2.update(Orion_Temp_sensor_vect, "main_Main_StaticPressureData2.csv", 1);
 
-sensorSettings.barometer3.fault_time = -1; %if negative it will be generated at random between a max and a min value
-sensorSettings.barometer3.max_fault_time = 96; %max seconds to wait before possible fault
-sensorSettings.barometer3.min_fault_time = 6; %min seconds to wait before possible fault
+%% barometer3 - digital measure (LPS28DFW)
+% NOTE: pressure in mbar, temp should be in C°
+sensorSettings.barometer3 = SensorFault();
+sensorSettings.barometer3.maxMeasurementRange   =   4060;                   % 1100, 1300 in mbar
+sensorSettings.barometer3.minMeasurementRange   =   260;                    % 300, 10 in mbar
+sensorSettings.barometer3.bit                   =   24; 
+sensorSettings.barometer3.fault_time = -1;          % if negative it will be generated at random between a max and a min value
+sensorSettings.barometer3.max_fault_time = 96;      % max seconds to wait before possible fault
+sensorSettings.barometer3.min_fault_time = 6;       % min seconds to wait before possible fault
 
 % fault generation
-
 switch  settings.fault_sim.fault_type(3)
     case "offset"
         offset_value_3 = round((settings.fault_sim.max_offset-settings.fault_sim.min_offset)*rand() + settings.fault_sim.min_offset);
-        sensorSettings.barometer3 = sensorSettings.barometer3.setOffset(offset_value_3); % i don't know the unit of measurment as of now
+        sensorSettings.barometer3 = sensorSettings.barometer3.setOffset(offset_value_3); % i don't know the unit of measurement as of now
         [sensorSettings.barometer3, fault_time_3] = sensorSettings.barometer3.setErrorTime(); % in seconds
     case "degradation"
         degradation_value_3 = round((settings.fault_sim.max_degradation-settings.fault_sim.min_degradation)*rand() + settings.fault_sim.min_degradation);
-        sensorSettings.barometer3 = sensorSettings.barometer3.setDegradation(degradation_value_3); % i don't know the unit of measurment as of now
+        sensorSettings.barometer3 = sensorSettings.barometer3.setDegradation(degradation_value_3); % I don't know the unit of measurement as of now
         [sensorSettings.barometer3, fault_time_3] = sensorSettings.barometer3.setErrorTime(); % in seconds
     case "freezing"
         sensorSettings.barometer3.setFreezing;
@@ -92,84 +89,86 @@ switch  settings.fault_sim.fault_type(3)
     otherwise
 end
 
-%% accelerometer (6 dof imu - LSM6DSRXTR)
-sensorSettings.accelerometer = Sensor3D(); % acceleration in mg
-sensorSettings.accelerometer.maxMeasurementRange =   16000;                  % 2000, 4000, 8000, 16000 in mg
-sensorSettings.accelerometer.minMeasurementRange =  -16000;                  % -2000, -4000, -8000, -16000 in mg
-sensorSettings.accelerometer.bit = 16; 
-sensorSettings.accelerometer.resolution          =   (sensorSettings.accelerometer.maxMeasurementRange -sensorSettings.accelerometer.minMeasurementRange)/(2^sensorSettings.accelerometer.bit);
-sensorSettings.accelerometer.noiseVariance       =   10;                     % guess in mg 
-sensorSettings.accelerometer.offsetX             =   0;                      % +-90 in mg
-sensorSettings.accelerometer.offsetY             =   0;                      % +-90 in mg
-sensorSettings.accelerometer.offsetZ             =   0;                      % +-90 in mg
-sensorSettings.accelerometer.walkDiffusionCoef   =   0;                      % guess
-sensorSettings.accelerometer.dt                  =   0.01;                   % sampling time
-
-%% initial gyroscope sensor from LSM9DS1
-sensorSettings.gyroscope = Sensor3D(); % angular rate in mdps
-sensorSettings.gyroscope.maxMeasurementRange  =   245e3;                  % 245e3, 500e3, 2000e3 in mdps
-sensorSettings.gyroscope.minMeasurementRange  =  -245e3;                  % -245e3, -500e3, -2000e3 in mdps
-sensorSettings.gyroscope.bit = 16;
-sensorSettings.gyroscope.resolution           =   (sensorSettings.gyroscope.maxMeasurementRange -sensorSettings.gyroscope.minMeasurementRange)/(2^sensorSettings.gyroscope.bit);                   % 8.75, 17.5, 70 in mdps
-sensorSettings.gyroscope.noiseVariance        =   50;                      % guess in mdps    100 was original
-sensorSettings.gyroscope.offsetX              =   0;                      % +-30e3 in mdps
-sensorSettings.gyroscope.offsetY              =   0;                      % +-30e3 in mdps
-sensorSettings.gyroscope.offsetZ              =   0;                      % +-30e3 in mdps
-sensorSettings.gyroscope.walkDiffusionCoef    =   1;                      % guess
-sensorSettings.gyroscope.dt                   =   0.01;                   % sampling time
-sensorSettings.gyroscope.transMatrix          =   diag([1 1 1]);          % axis transformation
-
-%% initial megnetometer sensor from LSM9DS1
-sensorSettings.magnetometer=Sensor3D(); % magnetic field in mgauss
-sensorSettings.magnetometer.maxMeasurementRange  =   16000;                  % 4000, 8000, 12000, 16000 in mgauss
-sensorSettings.magnetometer.minMeasurementRange  =  -16000;                  % -4000, -8000, -12000, -16000 in mgauss
-sensorSettings.magnetometer.resolution           =   0.58;                   % 0.14, 0.29, 0.43, 0.58 in mgauss
-sensorSettings.magnetometer.noiseVariance        =   4;                      % guess in mgauss    original guess 2
-sensorSettings.magnetometer.offsetX              =   0;                      % +-1000 in mgauss
-sensorSettings.magnetometer.offsetY              =   0;                      % +-1000 in mgauss
-sensorSettings.magnetometer.offsetZ              =   0;                      % +-1000 in mgauss
-sensorSettings.magnetometer.walkDiffusionCoef    =   0;                      % guess
-sensorSettings.magnetometer.dt                   =   0.01;                   % sampling time
-sensorSettings.magnetometer.transMatrix          =   diag([1 1 1]);          % axis transformation
-
-%% initial GPS sensor from NEO-M9N   
-sensorSettings.GPS = GPS();                                                        % lon, in degree lat in deree, alt in m
-sensorSettings.GPS.noiseVariance          =   [2e-9*ones(2,1);5;0.0011*ones(3,1)]; % [deg; deg; m; m/s; m/s; m/s]^2
-sensorSettings.GPS.transMatrix            =   diag([1 1 1]);                       % axis transformation
-sensorSettings.lat0                   =   environment.lat0;
-sensorSettings.lon0                   =   environment.lon0;
-sensorSettings.z0                         =   environment.z0;
-sensorSettings.spheroid                   =   wgs84Ellipsoid;
-
-%% initial chamber pressure sensor NAT825281
-sensorSettings.comb_chamber = Sensor(); % presure in mbar, temp should be in C°
-sensorSettings.comb_chamber.maxMeasurementRange  =   40000;                   % 1100, 1300 in mbar
-sensorSettings.comb_chamber.minMeasurementRange  =   0;                    % 300, 10 in mbar
-sensorSettings.comb_chamber.noiseVariance        =   60000;                      %  mbar
-% sensorSettings.comb_chamber.error2dOffset        =   ep_data;                % [p in mbar, T in celsius, ep in mbar]
-sensorSettings.comb_chamber.resolution           =   1;     % random value stolen from baro
-sensorSettings.comb_chamber.offset              = 0;
-% check 2d offset for chamber pressure sensor
-
-%% pitot  
+sensorSettings.barometer3.update(Orion_Temp_sensor_vect, "main_Boardcore_LPS28DFWData.csv", 1);
+
+%% accelerometer (6 dof imu - LSM6DSRX)
+% NOTE: acceleration in mg
+sensorSettings.accelerometer = Sensor3D();
+sensorSettings.accelerometer.maxMeasurementRange   =   16000;                       % 2000, 4000, 8000, 16000 in mg
+sensorSettings.accelerometer.minMeasurementRange   =   -16000;                      % -2000, -4000, -8000, -16000 in mg
+sensorSettings.accelerometer.bit                   =   16; 
+sensorSettings.accelerometer.offsetX               =   0;                           % +-90 in mg
+sensorSettings.accelerometer.offsetY               =   0;                           % +-90 in mg
+sensorSettings.accelerometer.offsetZ               =   0;                           % +-90 in mg
+sensorSettings.accelerometer.walkDiffusionCoef     =   0;                           % guess
+sensorSettings.accelerometer.dt                    =   0.01;                        % sampling time
+
+sensorSettings.accelerometer.update(Orion_Temp_sensor_vect, "main_Boardcore_LSM6DSRXData.csv", 1);
+
+%% initial gyroscope sensor from LSM6DSRX
+% NOTE: angular rate in mdps
+sensorSettings.gyroscope = Sensor3D();
+sensorSettings.gyroscope.maxMeasurementRange   =   245e3;                           % 245e3, 500e3, 2000e3 in mdps
+sensorSettings.gyroscope.minMeasurementRange   =   -245e3;                          % -245e3, -500e3, -2000e3 in mdps
+sensorSettings.gyroscope.bit                   =   16;
+sensorSettings.gyroscope.offsetX               =   0;                               % +-30e3 in mdps
+sensorSettings.gyroscope.offsetY               =   0;                               % +-30e3 in mdps
+sensorSettings.gyroscope.offsetZ               =   0;                               % +-30e3 in mdps
+sensorSettings.gyroscope.walkDiffusionCoef     =   1;                               % guess
+sensorSettings.gyroscope.dt                    =   0.01;                            % sampling time
+sensorSettings.gyroscope.transMatrix           =   diag([1 1 1]);                   % axis transformation
+
+sensorSettings.gyroscope.update(Orion_Temp_sensor_vect, "main_Boardcore_LSM6DSRXData.csv", 2);
+
+%% initial magnetometer sensor from LIS2MDL
+% NOTE: magnetic field in mG (m Gauss)
+sensorSettings.magnetometer = Sensor3D();
+sensorSettings.magnetometer.maxMeasurementRange   =   16000;                        % 4000, 8000, 12000, 16000 in mG
+sensorSettings.magnetometer.minMeasurementRange   =   -16000;                       % -4000, -8000, -12000, -16000 in mG
+sensorSettings.magnetometer.resolution            =   0.58;                         % 0.14, 0.29, 0.43, 0.58 in mG
+% sensorSettings.magnetometer.noiseVariance         =   4;                            % guess in mG (original guess 2)
+sensorSettings.magnetometer.offsetX               =   0;                            % +-1000 in mG
+sensorSettings.magnetometer.offsetY               =   0;                            % +-1000 in mG
+sensorSettings.magnetometer.offsetZ               =   0;                            % +-1000 in mG
+sensorSettings.magnetometer.walkDiffusionCoef     =   0;                            % guess
+sensorSettings.magnetometer.dt                    =   0.01;                         % sampling time
+sensorSettings.magnetometer.transMatrix           =   diag([1 1 1]);                % axis transformation
+
+sensorSettings.magnetometer.update(Orion_Temp_sensor_vect, "main_Boardcore_LIS2MDLData.csv", 1);
+
+%% initial GPS sensor from NEO-M9N
+% NOTE: lon, in degree lat in degree, alt in m
+sensorSettings.GPS = SensorGPS();
+sensorSettings.GPS.noiseVariance   =   [2e-9*ones(2,1);5;0.0011*ones(3,1)];         % [deg; deg; m; m/s; m/s; m/s]^2
+sensorSettings.GPS.transMatrix     =   diag([1 1 1]);                               % axis transformation
+sensorSettings.lat0                =   environment.lat0;
+sensorSettings.lon0                =   environment.lon0;
+sensorSettings.z0                  =   environment.z0;
+sensorSettings.spheroid            =   wgs84Ellipsoid;
+
+%% initial chamber pressure sensor
+% NOTE: pressure in mbar, temp should be in C°;
+%       check 2D offset for chamber pressure sensor
+sensorSettings.comb_chamber = Sensor1D();
+sensorSettings.comb_chamber.maxMeasurementRange   =   40000;                        % 1100, 1300 in mbar
+sensorSettings.comb_chamber.minMeasurementRange   =   0;                            % 300, 10 in mbar
+sensorSettings.comb_chamber.resolution            =   1;                            % random value stolen from baro
+sensorSettings.comb_chamber.offset                =   0;
+
+sensorSettings.comb_chamber.update(Orion_Temp_sensor_vect, "motor_Motor_CCPressureData.csv", 1);
+
+%% Pitot  
 % static pressure
-sensorSettings.pitot_static = Sensor();
-sensorSettings.pitot_static.maxMeasurementRange = 1034.21; % mbar ( 15psi)
-sensorSettings.pitot_static.minMeasurementRange = 0;
-sensorSettings.pitot_static.bit = 12; 
-sensorSettings.pitot_static.resolution = (sensorSettings.pitot_static.maxMeasurementRange -sensorSettings.pitot_static.minMeasurementRange)/(2^sensorSettings.pitot_static.bit);
-sensorSettings.pitot_static.noiseVariance = 0.043043; % from flight logs
+sensorSettings.pitot_static = Sensor1D();
+sensorSettings.pitot_static.maxMeasurementRange   =   1034.21;                      % mbar (15 psi)
+sensorSettings.pitot_static.minMeasurementRange   =   0;
+sensorSettings.pitot_static.bit                   =   12; 
+sensorSettings.pitot_static.update(Orion_Temp_sensor_vect, "payload_Payload_StaticPressureData.csv", 1);
 
 % total pressure
-sensorSettings.pitot_total = Sensor();
-sensorSettings.pitot_total.maxMeasurementRange = 2*1034.21; % mbar ( 30psi)
-sensorSettings.pitot_total.minMeasurementRange = 0;
-sensorSettings.pitot_total.bit = 12; 
-sensorSettings.pitot_total.resolution = (sensorSettings.pitot_total.maxMeasurementRange -sensorSettings.pitot_total.minMeasurementRange)/(2^sensorSettings.pitot_total.bit);
-sensorSettings.pitot_total.noiseVariance = 2*0.043043; % from flight logs
-
-%% total sensor initialization 
-% 
-% now is in std_setInitialParams.m
-%
-%
\ No newline at end of file
+sensorSettings.pitot_total = Sensor1D();
+sensorSettings.pitot_total.maxMeasurementRange   =   2*1034.21;                     % mbar (30 psi)
+sensorSettings.pitot_total.minMeasurementRange   =   0;
+sensorSettings.pitot_total.bit                   =   12; 
+sensorSettings.pitot_total.update(Orion_Temp_sensor_vect, "payload_Payload_DynamicPressureData.csv", 1);
+
diff --git a/data/2025_Orion_Roccaraso_September/initSensors2025_Orion_Roccaraso_September.m b/data/2025_Orion_Roccaraso_September/initSensors2025_Orion_Roccaraso_September.m
index 1c66d0d6..e3b79ac9 100644
--- a/data/2025_Orion_Roccaraso_September/initSensors2025_Orion_Roccaraso_September.m
+++ b/data/2025_Orion_Roccaraso_September/initSensors2025_Orion_Roccaraso_September.m
@@ -1,20 +1,21 @@
-% initialise sensors
+%% Sensor Initialization
 
-% author: Pier Francesco Bachini - ipt GNC 2025
-% pierfrancesco.bachini@skywarder.eu 
-% release 29/11/2024
+% author: Stefano Belletti - ipt GNC 2025
+% stefano.belletti@skywarder.eu 
+% release 22/02/2025
+% latest update: Stefano Belletti (22/02/2025)
 
-%% barometer1 - static measure (HSCMAND001BAAA5)
-sensorSettings.barometer1 = Sensor_with_fault_sim(); % presure in mbar, temp should be in C°
-sensorSettings.barometer1.maxMeasurementRange  =   1000;                   % 1100, 1300 in mbar
-sensorSettings.barometer1.minMeasurementRange  =   0;                    % 300, 10 in mbar
-sensorSettings.barometer1.bit = 24; % adc on rocket is 24 bits 
-sensorSettings.barometer1.resolution = (sensorSettings.barometer1.maxMeasurementRange -sensorSettings.barometer1.minMeasurementRange)/(2^sensorSettings.barometer1.bit);
-sensorSettings.barometer1.noiseVariance        =   1;                     % mbar^2
+load("Orion_Temp_sensor_vect_res.mat")
 
-sensorSettings.barometer1.fault_time = 9; %if negative it will be generated at random between a max and a min value
-sensorSettings.barometer1.max_fault_time = 96; %max seconds to wait before possible fault
-sensorSettings.barometer1.min_fault_time = 6; %min seconds to wait before possible fault
+%% barometer1 - static measure
+% NOTE: pressure in mbar, temp should be in C°
+sensorSettings.barometer1 = SensorFault();
+sensorSettings.barometer1.maxMeasurementRange   =   1000;                   % 1100, 1300 in mbar
+sensorSettings.barometer1.minMeasurementRange   =   0;                      % 300, 10 in mbar
+sensorSettings.barometer1.bit                   =   24;                     % adc on rocket is 24 bits 
+sensorSettings.barometer1.fault_time = 9;           % if negative it will be generated at random between a max and a min value
+sensorSettings.barometer1.max_fault_time = 96;      % max seconds to wait before possible fault
+sensorSettings.barometer1.min_fault_time = 6;       % min seconds to wait before possible fault
 
 % fault generation
 switch  settings.fault_sim.fault_type(1)
@@ -32,28 +33,27 @@ switch  settings.fault_sim.fault_type(1)
     otherwise
 end
 
-%% barometer2 - static measure (HSCMAND001BAAA5)
-sensorSettings.barometer2 = Sensor_with_fault_sim(); % presure in mbar, temp should be in C°
-sensorSettings.barometer2.maxMeasurementRange  =   1000;                   % 1100, 1300 in mbar
-sensorSettings.barometer2.minMeasurementRange  =   0;                    % 300, 10 in mbar
-sensorSettings.barometer2.bit = 24; % adc on rocket is 24 bits 
-sensorSettings.barometer2.resolution = (sensorSettings.barometer2.maxMeasurementRange -sensorSettings.barometer2.minMeasurementRange)/(2^sensorSettings.barometer2.bit);
-sensorSettings.barometer2.noiseVariance        =   1;                     % mbar^2
+sensorSettings.barometer1.update(Orion_Temp_sensor_vect, "main_Main_StaticPressureData1.csv", 1);
 
-sensorSettings.barometer2.fault_time = -1; %if negative it will be generated at random between a max and a min value
-sensorSettings.barometer2.max_fault_time = 96; %max seconds to wait before possible fault
-sensorSettings.barometer2.min_fault_time = 6; %min seconds to wait before possible fault
+%% barometer2 - static measure
+% NOTE: pressure in mbar, temp should be in C°
+sensorSettings.barometer2 = SensorFault();
+sensorSettings.barometer2.maxMeasurementRange   =   1000;                   % 1100, 1300 in mbar
+sensorSettings.barometer2.minMeasurementRange   =   0;                      % 300, 10 in mbar
+sensorSettings.barometer2.bit                   =   24;                     % adc on rocket is 24 bits 
+sensorSettings.barometer2.fault_time = -1;          % if negative it will be generated at random between a max and a min value
+sensorSettings.barometer2.max_fault_time = 96;      % max seconds to wait before possible fault
+sensorSettings.barometer2.min_fault_time = 6;       % min seconds to wait before possible fault
 
 % fault generation
-
 switch  settings.fault_sim.fault_type(2)
     case "offset"
         offset_value_2 = round((settings.fault_sim.max_offset-settings.fault_sim.min_offset)*rand() + settings.fault_sim.min_offset);
-        sensorSettings.barometer2 = sensorSettings.barometer2.setOffset(offset_value_2); % i don't know the unit of measurment as of now
+        sensorSettings.barometer2 = sensorSettings.barometer2.setOffset(offset_value_2); % i don't know the unit of measurement as of now
         [sensorSettings.barometer2, fault_time_2] = sensorSettings.barometer2.setErrorTime(); % in seconds
     case "degradation"
         degradation_value_2 = round((settings.fault_sim.max_degradation-settings.fault_sim.min_degradation)*rand() + settings.fault_sim.min_degradation);
-        sensorSettings.barometer2 = sensorSettings.barometer2.setDegradation(degradation_value_2); % i don't know the unit of measurment as of now
+        sensorSettings.barometer2 = sensorSettings.barometer2.setDegradation(degradation_value_2); % i don't know the unit of measurement as of now
         [sensorSettings.barometer2, fault_time_2] = sensorSettings.barometer2.setErrorTime(); % in seconds
     case "freezing"
         sensorSettings.barometer2.setFreezing;
@@ -61,28 +61,27 @@ switch  settings.fault_sim.fault_type(2)
     otherwise
 end
 
-%% barometer3 - digital measure (LPS28DFWTR)
-sensorSettings.barometer3 = Sensor_with_fault_sim(); % presure in mbar, temp should be in C°
-sensorSettings.barometer3.maxMeasurementRange  =   4060;                   % 1100, 1300 in mbar
-sensorSettings.barometer3.minMeasurementRange  =   260;                    % 300, 10 in mbar
-sensorSettings.barometer3.bit = 24; 
-sensorSettings.barometer3.resolution = (sensorSettings.barometer3.maxMeasurementRange -sensorSettings.barometer3.minMeasurementRange)/(2^sensorSettings.barometer3.bit);
-sensorSettings.barometer3.noiseVariance        =   4.06;                      % guess in mbar
+sensorSettings.barometer2.update(Orion_Temp_sensor_vect, "main_Main_StaticPressureData2.csv", 1);
 
-sensorSettings.barometer3.fault_time = -1; %if negative it will be generated at random between a max and a min value
-sensorSettings.barometer3.max_fault_time = 96; %max seconds to wait before possible fault
-sensorSettings.barometer3.min_fault_time = 6; %min seconds to wait before possible fault
+%% barometer3 - digital measure (LPS28DFW)
+% NOTE: pressure in mbar, temp should be in C°
+sensorSettings.barometer3 = SensorFault();
+sensorSettings.barometer3.maxMeasurementRange   =   4060;                   % 1100, 1300 in mbar
+sensorSettings.barometer3.minMeasurementRange   =   260;                    % 300, 10 in mbar
+sensorSettings.barometer3.bit                   =   24; 
+sensorSettings.barometer3.fault_time = -1;          % if negative it will be generated at random between a max and a min value
+sensorSettings.barometer3.max_fault_time = 96;      % max seconds to wait before possible fault
+sensorSettings.barometer3.min_fault_time = 6;       % min seconds to wait before possible fault
 
 % fault generation
-
 switch  settings.fault_sim.fault_type(3)
     case "offset"
         offset_value_3 = round((settings.fault_sim.max_offset-settings.fault_sim.min_offset)*rand() + settings.fault_sim.min_offset);
-        sensorSettings.barometer3 = sensorSettings.barometer3.setOffset(offset_value_3); % i don't know the unit of measurment as of now
+        sensorSettings.barometer3 = sensorSettings.barometer3.setOffset(offset_value_3); % i don't know the unit of measurement as of now
         [sensorSettings.barometer3, fault_time_3] = sensorSettings.barometer3.setErrorTime(); % in seconds
     case "degradation"
         degradation_value_3 = round((settings.fault_sim.max_degradation-settings.fault_sim.min_degradation)*rand() + settings.fault_sim.min_degradation);
-        sensorSettings.barometer3 = sensorSettings.barometer3.setDegradation(degradation_value_3); % i don't know the unit of measurment as of now
+        sensorSettings.barometer3 = sensorSettings.barometer3.setDegradation(degradation_value_3); % I don't know the unit of measurement as of now
         [sensorSettings.barometer3, fault_time_3] = sensorSettings.barometer3.setErrorTime(); % in seconds
     case "freezing"
         sensorSettings.barometer3.setFreezing;
@@ -90,84 +89,86 @@ switch  settings.fault_sim.fault_type(3)
     otherwise
 end
 
-%% accelerometer (6 dof imu - LSM6DSRXTR)
-sensorSettings.accelerometer = Sensor3D(); % acceleration in mg
-sensorSettings.accelerometer.maxMeasurementRange =   16000;                  % 2000, 4000, 8000, 16000 in mg
-sensorSettings.accelerometer.minMeasurementRange =  -16000;                  % -2000, -4000, -8000, -16000 in mg
-sensorSettings.accelerometer.bit = 16; 
-sensorSettings.accelerometer.resolution          =   (sensorSettings.accelerometer.maxMeasurementRange -sensorSettings.accelerometer.minMeasurementRange)/(2^sensorSettings.accelerometer.bit);
-sensorSettings.accelerometer.noiseVariance       =   10;                     % guess in mg 
-sensorSettings.accelerometer.offsetX             =   0;                      % +-90 in mg
-sensorSettings.accelerometer.offsetY             =   0;                      % +-90 in mg
-sensorSettings.accelerometer.offsetZ             =   0;                      % +-90 in mg
-sensorSettings.accelerometer.walkDiffusionCoef   =   0;                      % guess
-sensorSettings.accelerometer.dt                  =   0.01;                   % sampling time
-
-%% initial gyroscope sensor from LSM9DS1
-sensorSettings.gyroscope = Sensor3D(); % angular rate in mdps
-sensorSettings.gyroscope.maxMeasurementRange  =   245e3;                  % 245e3, 500e3, 2000e3 in mdps
-sensorSettings.gyroscope.minMeasurementRange  =  -245e3;                  % -245e3, -500e3, -2000e3 in mdps
-sensorSettings.gyroscope.bit = 16;
-sensorSettings.gyroscope.resolution           =   (sensorSettings.gyroscope.maxMeasurementRange -sensorSettings.gyroscope.minMeasurementRange)/(2^sensorSettings.gyroscope.bit);                   % 8.75, 17.5, 70 in mdps
-sensorSettings.gyroscope.noiseVariance        =   50;                      % guess in mdps    100 was original
-sensorSettings.gyroscope.offsetX              =   0;                      % +-30e3 in mdps
-sensorSettings.gyroscope.offsetY              =   0;                      % +-30e3 in mdps
-sensorSettings.gyroscope.offsetZ              =   0;                      % +-30e3 in mdps
-sensorSettings.gyroscope.walkDiffusionCoef    =   1;                      % guess
-sensorSettings.gyroscope.dt                   =   0.01;                   % sampling time
-sensorSettings.gyroscope.transMatrix          =   diag([1 1 1]);          % axis transformation
-
-%% initial megnetometer sensor from LSM9DS1
-sensorSettings.magnetometer=Sensor3D(); % magnetic field in mgauss
-sensorSettings.magnetometer.maxMeasurementRange  =   16000;                  % 4000, 8000, 12000, 16000 in mgauss
-sensorSettings.magnetometer.minMeasurementRange  =  -16000;                  % -4000, -8000, -12000, -16000 in mgauss
-sensorSettings.magnetometer.resolution           =   0.58;                   % 0.14, 0.29, 0.43, 0.58 in mgauss
-sensorSettings.magnetometer.noiseVariance        =   4;                      % guess in mgauss    original guess 2
-sensorSettings.magnetometer.offsetX              =   0;                      % +-1000 in mgauss
-sensorSettings.magnetometer.offsetY              =   0;                      % +-1000 in mgauss
-sensorSettings.magnetometer.offsetZ              =   0;                      % +-1000 in mgauss
-sensorSettings.magnetometer.walkDiffusionCoef    =   0;                      % guess
-sensorSettings.magnetometer.dt                   =   0.01;                   % sampling time
-sensorSettings.magnetometer.transMatrix          =   diag([1 1 1]);          % axis transformation
+sensorSettings.barometer3.update(Orion_Temp_sensor_vect, "main_Boardcore_LPS28DFWData.csv", 1);
+
+%% accelerometer (6 dof imu - LSM6DSRX)
+% NOTE: acceleration in mg
+sensorSettings.accelerometer = Sensor3D();
+sensorSettings.accelerometer.maxMeasurementRange   =   16000;                       % 2000, 4000, 8000, 16000 in mg
+sensorSettings.accelerometer.minMeasurementRange   =   -16000;                      % -2000, -4000, -8000, -16000 in mg
+sensorSettings.accelerometer.bit                   =   16; 
+sensorSettings.accelerometer.offsetX               =   0;                           % +-90 in mg
+sensorSettings.accelerometer.offsetY               =   0;                           % +-90 in mg
+sensorSettings.accelerometer.offsetZ               =   0;                           % +-90 in mg
+sensorSettings.accelerometer.walkDiffusionCoef     =   0;                           % guess
+sensorSettings.accelerometer.dt                    =   0.01;                        % sampling time
+
+sensorSettings.accelerometer.update(Orion_Temp_sensor_vect, "main_Boardcore_LSM6DSRXData.csv", 1);
+
+%% initial gyroscope sensor from LSM6DSRX
+% NOTE: angular rate in mdps
+sensorSettings.gyroscope = Sensor3D();
+sensorSettings.gyroscope.maxMeasurementRange   =   245e3;                           % 245e3, 500e3, 2000e3 in mdps
+sensorSettings.gyroscope.minMeasurementRange   =   -245e3;                          % -245e3, -500e3, -2000e3 in mdps
+sensorSettings.gyroscope.bit                   =   16;
+sensorSettings.gyroscope.offsetX               =   0;                               % +-30e3 in mdps
+sensorSettings.gyroscope.offsetY               =   0;                               % +-30e3 in mdps
+sensorSettings.gyroscope.offsetZ               =   0;                               % +-30e3 in mdps
+sensorSettings.gyroscope.walkDiffusionCoef     =   1;                               % guess
+sensorSettings.gyroscope.dt                    =   0.01;                            % sampling time
+sensorSettings.gyroscope.transMatrix           =   diag([1 1 1]);                   % axis transformation
+
+sensorSettings.gyroscope.update(Orion_Temp_sensor_vect, "main_Boardcore_LSM6DSRXData.csv", 2);
+
+%% initial magnetometer sensor from LIS2MDL
+% NOTE: magnetic field in mG (m Gauss)
+sensorSettings.magnetometer = Sensor3D();
+sensorSettings.magnetometer.maxMeasurementRange   =   16000;                        % 4000, 8000, 12000, 16000 in mG
+sensorSettings.magnetometer.minMeasurementRange   =   -16000;                       % -4000, -8000, -12000, -16000 in mG
+sensorSettings.magnetometer.resolution            =   0.58;                         % 0.14, 0.29, 0.43, 0.58 in mG
+% sensorSettings.magnetometer.noiseVariance         =   4;                            % guess in mG (original guess 2)
+sensorSettings.magnetometer.offsetX               =   0;                            % +-1000 in mG
+sensorSettings.magnetometer.offsetY               =   0;                            % +-1000 in mG
+sensorSettings.magnetometer.offsetZ               =   0;                            % +-1000 in mG
+sensorSettings.magnetometer.walkDiffusionCoef     =   0;                            % guess
+sensorSettings.magnetometer.dt                    =   0.01;                         % sampling time
+sensorSettings.magnetometer.transMatrix           =   diag([1 1 1]);                % axis transformation
+
+sensorSettings.magnetometer.update(Orion_Temp_sensor_vect, "main_Boardcore_LIS2MDLData.csv", 1);
 
 %% initial GPS sensor from NEO-M9N
-sensorSettings.GPS = GPS();                                      % lon, in degree lat in deree, alt in m
-sensorSettings.GPS.noiseVariance          =  [2e-9*ones(2,1);5;0.0011*ones(3,1)]; % [deg; deg; m; m/s; m/s; m/s]^2
-sensorSettings.GPS.transMatrix            =   diag([1 1 1]);          % axis transformation
-sensorSettings.lat0                       =   environment.lat0;
-sensorSettings.lon0                       =   environment.lon0;
-sensorSettings.z0                         =   environment.z0;
-sensorSettings.spheroid                   =   wgs84Ellipsoid;
-
-%% initial chamber pressure sensor NAT825281
-sensorSettings.comb_chamber = Sensor(); % presure in mbar, temp should be in C°
-sensorSettings.comb_chamber.maxMeasurementRange  =   40000;                   % 1100, 1300 in mbar
-sensorSettings.comb_chamber.minMeasurementRange  =   0;                    % 300, 10 in mbar
-sensorSettings.comb_chamber.noiseVariance        =   60000;                      %  mbar
-%sensorSettings.comb_chamber.error2dOffset        =   ep_data;                % [p in mbar, T in celsius, ep in mbar]
-sensorSettings.comb_chamber.resolution           =   1;     % random value stolen from baro
-%sensorSettings.comb_chamber.offset              = 0;
-% check 2d offset for chamber pressure sensor
-
-%% pitot  
+% NOTE: lon, in degree lat in degree, alt in m
+sensorSettings.GPS = SensorGPS();
+sensorSettings.GPS.noiseVariance   =   [2e-9*ones(2,1);5;0.0011*ones(3,1)];         % [deg; deg; m; m/s; m/s; m/s]^2
+sensorSettings.GPS.transMatrix     =   diag([1 1 1]);                               % axis transformation
+sensorSettings.lat0                =   environment.lat0;
+sensorSettings.lon0                =   environment.lon0;
+sensorSettings.z0                  =   environment.z0;
+sensorSettings.spheroid            =   wgs84Ellipsoid;
+
+%% initial chamber pressure sensor
+% NOTE: pressure in mbar, temp should be in C°;
+%       check 2D offset for chamber pressure sensor
+sensorSettings.comb_chamber = Sensor1D();
+sensorSettings.comb_chamber.maxMeasurementRange   =   40000;                        % 1100, 1300 in mbar
+sensorSettings.comb_chamber.minMeasurementRange   =   0;                            % 300, 10 in mbar
+sensorSettings.comb_chamber.resolution            =   1;                            % random value stolen from baro
+sensorSettings.comb_chamber.offset                =   0;
+
+sensorSettings.comb_chamber.update(Orion_Temp_sensor_vect, "motor_Motor_CCPressureData.csv", 1);
+
+%% Pitot  
 % static pressure
-sensorSettings.pitot_static = Sensor();
-sensorSettings.pitot_static.maxMeasurementRange = 1034.21; % mbar ( 15psi)
-sensorSettings.pitot_static.minMeasurementRange = 0;
-sensorSettings.pitot_static.bit = 12; 
-sensorSettings.pitot_static.resolution = (sensorSettings.pitot_static.maxMeasurementRange -sensorSettings.pitot_static.minMeasurementRange)/(2^sensorSettings.pitot_static.bit);
-sensorSettings.pitot_static.noiseVariance = 0.043043; % from flight logs
+sensorSettings.pitot_static = Sensor1D();
+sensorSettings.pitot_static.maxMeasurementRange   =   1034.21;                      % mbar (15 psi)
+sensorSettings.pitot_static.minMeasurementRange   =   0;
+sensorSettings.pitot_static.bit                   =   12; 
+sensorSettings.pitot_static.update(Orion_Temp_sensor_vect, "payload_Payload_StaticPressureData.csv", 1);
 
 % total pressure
-sensorSettings.pitot_total = Sensor();
-sensorSettings.pitot_total.maxMeasurementRange = 2*1034.21; % mbar ( 30psi)
-sensorSettings.pitot_total.minMeasurementRange = 0;
-sensorSettings.pitot_total.bit = 12; 
-sensorSettings.pitot_total.resolution = (sensorSettings.pitot_total.maxMeasurementRange -sensorSettings.pitot_total.minMeasurementRange)/(2^sensorSettings.pitot_total.bit);
-sensorSettings.pitot_total.noiseVariance = 2*0.043043; % from flight logs
-
-%% total sensor initialization 
-% 
-% now is in std_setInitialParams.m
-%
-%
\ No newline at end of file
+sensorSettings.pitot_total = Sensor1D();
+sensorSettings.pitot_total.maxMeasurementRange   =   2*1034.21;                     % mbar (30 psi)
+sensorSettings.pitot_total.minMeasurementRange   =   0;
+sensorSettings.pitot_total.bit                   =   12; 
+sensorSettings.pitot_total.update(Orion_Temp_sensor_vect, "payload_Payload_DynamicPressureData.csv", 1);
+
diff --git a/simulator/configs/configMission.m b/simulator/configs/configMission.m
deleted file mode 100644
index d4ae76b5..00000000
--- a/simulator/configs/configMission.m
+++ /dev/null
@@ -1,66 +0,0 @@
-%{
-
-mission configuration script
-
-%}
-
-conf.year = 2024; % choose between: 2021, 2022, 2023, 2024
-conf.flight = "pds"; % choose between: "roccaraso", "pds" ( ponte de sor ) , " "
-
-switch conf.year
-
-    case 2021
-
-        switch conf.flight
-            
-            case "roccaraso"
-                mission.name = 'Lynx_Roccaraso_September_2021';
-                mission.nameMSA = '2021_Lynx_Roccaraso_September';
-
-            case "pds"
-                mission.name = 'Lynx_Portugal_October_2021';
-                mission.nameMSA = '2021_Lynx_Portugal_October';
-        end
-
-    case 2022
-        
-        switch conf.flight
-
-            case "roccaraso"
-                mission.name = 'Pyxis_Roccaraso_September_2022';
-                mission.nameMSA = '2022_Pyxis_Roccaraso_September';
-
-            case "pds"
-                mission.name = 'Pyxis_Portugal_October_2022';
-                mission.nameMSA = '2022_Pyxis_Portugal_October';
-                
-        end
-
-    case 2023
-
-        switch conf.flight
-            
-            case "roccaraso"
-                mission.name = 'Gemini_Roccaraso_September_2023';
-                mission.nameMSA = '2023_Gemini_Roccaraso_September';
-            
-            case "pds"
-                mission.name = 'Gemini_Portugal_October_2023';
-                mission.nameMSA = '2023_Gemini_Portugal_October';
-
-        end
-        
-    case 2024
-
-        switch conf.flight
-            
-            case "roccaraso"
-                mission.name = 'Lyra_Roccaraso_September_2024';
-                mission.nameMSA = '2024_Lyra_Roccaraso_September';
-            
-            case "pds"
-                mission.name = 'Lyra_Portugal_October_2024';
-                mission.nameMSA = '2024_Lyra_Portugal_October';
-
-        end
-end
diff --git a/simulator/configs/configPath.m b/simulator/configs/configPath.m
index a2d8ce3f..73b91ede 100644
--- a/simulator/configs/configPath.m
+++ b/simulator/configs/configPath.m
@@ -14,10 +14,10 @@ addpath(ConDataPath);
 commonFunctionsPath = '../commonFunctions';
 addpath(genpath(commonFunctionsPath));
 
-% Remove unwanted paths
-missionPath = strcat('../common/missions/', mission.name);
-rmpath(genpath('../common/missions/'));
-addpath(genpath(missionPath));
+% % Remove unwanted paths
+% missionPath = strcat('../common/missions/', mission.name);
+% rmpath(genpath('../common/missions/'));
+% addpath(genpath(missionPath));
 
 % only for hardware in the loop - path configuration
 if conf.HIL
diff --git a/simulator/src/sensor_plots.m b/simulator/src/sensor_plots.m
index 5168e004..c6a93f32 100644
--- a/simulator/src/sensor_plots.m
+++ b/simulator/src/sensor_plots.m
@@ -175,7 +175,7 @@ if length(simOutput.sensors.mea.time) > 1
     plot(simOutput.sensors.comb_chamber.time(1:cut_idx),simOutput.sensors.comb_chamber.measures(1:cut_idx),'DisplayName','Sensor')
     plot(simOutput.t, P_cc_real, 'DisplayName', 'Real cc pressure');
     legend
-    xlabel("Time [s]"), ylabel("Pressure [Pa]")
+    xlabel("Time [s]"), ylabel("Pressure [Bar]")
 end
 drawnow
 
-- 
GitLab