From 425daa96580ba5b584b4cc4e9b3504507d63753b Mon Sep 17 00:00:00 2001 From: Riccardo Cadamuro <92547831+RicCada@users.noreply.github.com> Date: Sun, 24 Sep 2023 14:19:53 +0200 Subject: [PATCH] CA postprocessing - WIP --- .../postprocessing/AFD/CA_alpha0.mat | Bin 0 -> 5335 bytes .../postprocessing/AFD/estimationCA.m | 117 ++++++++++++++++++ .../postprocessing/AFD/mainPostprocess.m | 47 +++---- .../postprocessing/AFD/trajectory.m | 26 ++++ 4 files changed, 157 insertions(+), 33 deletions(-) create mode 100644 RoccarasoFlight/postprocessing/AFD/CA_alpha0.mat create mode 100644 RoccarasoFlight/postprocessing/AFD/estimationCA.m create mode 100644 RoccarasoFlight/postprocessing/AFD/trajectory.m diff --git a/RoccarasoFlight/postprocessing/AFD/CA_alpha0.mat b/RoccarasoFlight/postprocessing/AFD/CA_alpha0.mat new file mode 100644 index 0000000000000000000000000000000000000000..bd42c5d2d01da8316b015d2f7c91a2fb1e4a218d GIT binary patch literal 5335 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 V!e@ILS5>ozem^M3kZJ5?1pt85imLzs literal 0 HcmV?d00001 diff --git a/RoccarasoFlight/postprocessing/AFD/estimationCA.m b/RoccarasoFlight/postprocessing/AFD/estimationCA.m new file mode 100644 index 0000000..a7e55b8 --- /dev/null +++ b/RoccarasoFlight/postprocessing/AFD/estimationCA.m @@ -0,0 +1,117 @@ + +%% CA estimation +NPOINTS = 1000; +MSTRUCT = 25.2885; % [kg] Gemini structural mass +AREF = 0.15^2 * pi * 0.25; +PROP_FINAL_MASS = 0.7799 + 0.4445; % [kg] initial propellant mass +tIGN = 0.97500; % Ignition time in the thrust curve +tCO = 5.32702; % Cutoff time in the thrsut curve +mDot = 0.9660; % [kg/s] Averaged propellant mass flow rate +DELTA_TIME = 0.4988; +load("CA_alpha0.mat"); + +% acceleration raw +indexApoIMU = find(main.IMU(:, 1)> main.tApogee, 1, 'first'); +accXB_raw = main.IMU(1:indexApoIMU ,2); +tAcc = main.IMU(1:indexApoIMU, 1); +accXB = movmean(accXB_raw, 30); + +% Motor data +load("../RPS/cleanData/ROC-02/engineFlightData.mat"); +timeThrust = flightData.timeThrust; +indexTimeThrust = and(timeThrust > tIGN, timeThrust < tCO); +timeThrust = timeThrust(indexTimeThrust); +timeThrust = timeThrust - timeThrust(1) - DELTA_TIME; + +Thrust = flightData.Thrust(indexTimeThrust); + +tNodal = [timeThrust(1), -0.2248, 3.33322, timeThrust(end)]; +indexTransIGN = and(timeThrust>=tNodal(1), timeThrust<tNodal(2)); +indexTransCO = and(timeThrust>tNodal(3), timeThrust<=tNodal(4)); + +thrustTransIGN = Thrust(indexTransIGN); +thrustTransCO = Thrust(indexTransCO); + +offsetIGN = thrustTransIGN(1); +offsetCO = thrustTransCO(end); + +thrustTransIGN = thrustTransIGN - offsetIGN; +thrustTransCO = thrustTransCO - offsetCO; + +thrustTransIGN = thrustTransIGN * (1 + offsetIGN/thrustTransIGN(end)); +thrustTransCO = thrustTransCO * (1 + offsetCO/thrustTransCO(1)); + +Thrust = [thrustTransIGN; Thrust(and(timeThrust>=tNodal(2), timeThrust<=tNodal(3))); thrustTransCO]; +mMotor = linspace(PROP_FINAL_MASS + mDot*(tCO - tIGN), PROP_FINAL_MASS, sum(indexTimeThrust)); +timeThrust = timeThrust - timeThrust(1); + +% Velocity +tNas = main.NASData(1:main.NASApogeeIndex, 1); +altNas = -main.NASData(1:main.NASApogeeIndex, 4); +velNas = vecnorm(main.NASData(1:main.NASApogeeIndex, 5:7), 2, 2); + +tPitot = main.PITOT(:, 1); +vPitot = main.PITOT(:, 3); + +% Air density +[~, vSon, ~, rho] = atmosisa(altNas + alt0); + +% Mach number +mach = velNas./vSon; + +% Normalize data +timeRef = linspace(max([tNas(1), tAcc(1), tPitot(1)]), min([tNas(end), tAcc(end), tPitot(end)]) , NPOINTS); +indexEndThrust = find(timeRef > timeThrust(end), 1, 'first'); + +accXBRef = interp1(tAcc, accXB, timeRef); + +ThrustRef = zeros(1, NPOINTS); +ThrustRef(1:indexEndThrust) = interp1(timeThrust, Thrust, timeRef(1:indexEndThrust)); + +mRocket = (mMotor(end) + MSTRUCT) * ones(1, NPOINTS); +mRocket(1:indexEndThrust) = interp1(timeThrust, mMotor, timeRef(1:indexEndThrust)) + MSTRUCT; + +rhoRef = interp1(tNas, rho, timeRef); + +velRef = interp1(tNas, movmean(velNas, 10), timeRef); + +velPitRef = interp1(tPitot, vPitot, timeRef); + +altRef = interp1(tNas, altNas, timeRef); + +% Compute CA +CA = (ThrustRef - mRocket.*accXBRef) ./ (0.5 .* rhoRef .* velRef.^2 * AREF); + +CA_pitot = (ThrustRef - mRocket.*accXBRef) ./ (0.5 .* rhoRef .* velPitRef.^2 * AREF); + +tCO = tCO -1.8519; +indexCO = find(ThrustRef == 0, 1, 'first'); + +mRocketNoPwr = mRocket(indexCO:end); +CANoPwr = CA(indexCO:end); +CA_100ARB = zeros(1, length(CANoPwr)); +CA_0ARB = zeros(1, length(CANoPwr)); + +for i = 1:length(CANoPwr) + [~, indexMach] = nearestValSorted(MachRef, mach(i)); + [~, indexAlt] = nearestValSorted(AltRef, altRef(i)); + CA_100ARB(i) = CA_MD(indexMach, indexAlt, 3); + CA_0ARB(i) = CA_MD(indexMach, indexAlt, 1); +end + +figure +plot(timeRef(indexCO:end),CANoPwr); +hold on +plot(timeRef(indexCO:end), CA_pitot(indexCO:end)); +plot(timeRef(indexCO:end), CA_100ARB); +plot(timeRef(indexCO:end), CA_0ARB); +xlabel('Time [s]'); +ylabel('CA [-]'); +title('CA from telemetry'); +grid on +legend('NAS', 'PITOT', '100% ARB', '0% ARB', 'Location','southoutside', 'Orientation', 'horizontal'); + + + + + diff --git a/RoccarasoFlight/postprocessing/AFD/mainPostprocess.m b/RoccarasoFlight/postprocessing/AFD/mainPostprocess.m index c3dc585..8ce8319 100644 --- a/RoccarasoFlight/postprocessing/AFD/mainPostprocess.m +++ b/RoccarasoFlight/postprocessing/AFD/mainPostprocess.m @@ -2,46 +2,27 @@ clear; clc; close all; +%% Select options +opt.flagTraj = false; +opt.flagCA = true; +alt0 = 1414; + %% adding path and recall data addpath("..\commonFunctions\"); +addpath("..\..\..\..\msa-toolkit\commonFunctions\miscellaneous\"); main = importData('main'); +%% Trajectory -%% 2D TRAJECTORY - GPS -tGps = main.GPS(:, 1); -lat = main.GPS(:, 2); -lon = main.GPS(:, 3); -altGps = main.GPS(:, 4); - -indApo = find(tGps > main.tApogee, 1, 'first'); - -figure -geoplot(lat, lon, 'LineWidth', 2); -geobasemap satellite -hold on -geoplot(lat(1), lon(1), 'Marker','o', 'MarkerSize', 10, 'LineWidth',2); -geoplot(lat(indApo), lon(indApo), 'Marker','square', 'MarkerSize', 10, 'LineWidth',2); -geoplot(lat(end), lon(end), 'Marker','x', 'MarkerSize', 10, 'LineWidth',2, 'Color', 'r'); -legend('Trajectory', 'Liftoff', 'Apogee', 'Landing'); - - -%% 3D TRAJECTORY - GPS -alt = -main.NASData(:, 4); -tNas = main.NASData(:, 1); -altNasInterp = interp1(tNas, alt, tGps); -alt0 = atmospalt(main.RCS_PRESSURE(1, 2)); - -uif = uifigure; -g = geoglobe(uif); -geoplot3(g,lat,lon,altNasInterp + alt0,'b','Linewidth',2.5); - -%% CA estimation - - - - +if opt.flagTraj + trajectory; +end +%% CA Estimation +if opt.flagCA + estimationCA; +end diff --git a/RoccarasoFlight/postprocessing/AFD/trajectory.m b/RoccarasoFlight/postprocessing/AFD/trajectory.m new file mode 100644 index 0000000..2d4a64c --- /dev/null +++ b/RoccarasoFlight/postprocessing/AFD/trajectory.m @@ -0,0 +1,26 @@ +%% 2D TRAJECTORY - GPS +tGps = main.GPS(:, 1); +lat = main.GPS(:, 2); +lon = main.GPS(:, 3); +altGps = main.GPS(:, 4); + +indApo = find(tGps > main.tApogee, 1, 'first'); + +figure +geoplot(lat, lon, 'LineWidth', 2); +geobasemap satellite +hold on +geoplot(lat(1), lon(1), 'Marker','o', 'MarkerSize', 10, 'LineWidth',2); +geoplot(lat(indApo), lon(indApo), 'Marker','square', 'MarkerSize', 10, 'LineWidth',2); +geoplot(lat(end), lon(end), 'Marker','x', 'MarkerSize', 10, 'LineWidth',2, 'Color', 'r'); +legend('Trajectory', 'Liftoff', 'Apogee', 'Landing'); + + +%% 3D TRAJECTORY - GPS +altNas = -main.NASData(:, 4); +tNas = main.NASData(:, 1); +altNasInterp = interp1(tNas, altNas, tGps); + +uif = uifigure; +g = geoglobe(uif); +geoplot3(g,lat,lon,altNasInterp + alt0,'b','Linewidth',2.5); \ No newline at end of file -- GitLab