diff --git a/missions/2024_Lyra_Portugal_October/config/rocketConfig.m b/missions/2024_Lyra_Portugal_October/config/rocketConfig.m index cc61485e26c83f236486dd7cfd044237456aa56b..6bc8bb289b77386b83d9899382fae46e4855e16b 100644 --- a/missions/2024_Lyra_Portugal_October/config/rocketConfig.m +++ b/missions/2024_Lyra_Portugal_October/config/rocketConfig.m @@ -51,7 +51,7 @@ airbrakes.xCg = 30.54 * 1e-3; % [m] Cg re airbrakes.enabled = true; % If true, multiple and smooth airbrakes opening will be simulated airbrakes.extension = [1]; % aerobrakes, 1-2-3 for 0%, 50% or 100% opened -airbrakes.deltaTime = [0]; % aerobrakes, configurations usage time +airbrakes.deltaTime = [0.5]; % aerobrakes, configurations usage time airbrakes.n = 3; % [-] number of brakes airbrakes.height = linspace(0, 0.0363, 3); % [m] Block airbrakes opening coordinate ( First entry must be 0! ) diff --git a/missions/2025_Orion_Portugal_October/config/environmentConfig.m b/missions/2025_Orion_Portugal_October/config/environmentConfig.m new file mode 100644 index 0000000000000000000000000000000000000000..78a48f9be3b82c77948133bfe4a8f6629bd2d180 --- /dev/null +++ b/missions/2025_Orion_Portugal_October/config/environmentConfig.m @@ -0,0 +1,19 @@ +% CONFIG - This script sets up parameters for the environment +% +% Use this file to write launch data, independent from the rocket itself + +environment = Environment(); + +environment.lat0 = 39.388727; % [deg] Launchpad latitude +environment.lon0 = -8.287842; % [deg] Launchpad longitude +environment.z0 = 160; % [m] Launchpad Altitude +environment.omega = 85; % [deg] Launchpad elevation +environment.phi = 133; % [deg] Launchpad azimuth +environment.pin1Length = 0.5603; % [m] Distance from the upper pin to the upper tank cap +environment.pin2Length = 0.2055; % [m] Distance from the lower pin to the lower tank cap +environment.rampLength = 12; % [m] Total launchpad length + +environment.temperature = []; % [K] Ground temperature correction +environment.pressure = []; % [Pa] Ground pressure correction +environment.rho = []; % [Kg/m^3] Gorund air density correction +environment.gamma = 1.4; % [-] Gas constant \ No newline at end of file diff --git a/missions/2025_Orion_Portugal_October/config/paraConfig.m b/missions/2025_Orion_Portugal_October/config/paraConfig.m new file mode 100644 index 0000000000000000000000000000000000000000..aa0a50ac796b31cba74b8cfdbbfc0fab3bea103d --- /dev/null +++ b/missions/2025_Orion_Portugal_October/config/paraConfig.m @@ -0,0 +1,96 @@ +% CONFIG - This script contains information about the parachutes onboard +% parachute 1 +para(1, 1) = Parachute(); + +para(1, 1).name = 'DROGUE chute'; +para(1, 1).surface = 0.6; % [m^2] Surface +para(1, 1).mass = 0.25; % [kg] Parachute Mass +para(1, 1).cd = 0.75; % [/] Parachute Drag Coefficient +para(1, 1).cl = 0; % [/] Parachute Lift Coefficient +para(1, 1).openingTime = 0.1; % [s] drogue opening delay +para(1, 1).finalAltitude = 350; % [m] Final altitude of the parachute +para(1, 1).cx = 1.4; % [/] Parachute Longitudinal Drag Coefficient +para(1, 1).chordLength = 1.5; % [m] Shock Chord Length +para(1, 1).chordK = 7200; % [N/m^2] Shock Chord Elastic Constant +para(1, 1).chordC = 0; % [Ns/m] Shock Chord Dynamic Coefficient +para(1, 1).m = 1; % [m^2/s] Coefficient of the surface vs. time opening model +para(1, 1).nf = 12; % [/] Adimensional Opening Time +para(1, 1).expulsionSpeed = 5; % [m/s] Expulsion Speed +para(1, 1).forceCoefficient = 1.8; % [-] Empirical coefficient to obtain correct peak force at deployment + +% parachute 2 +para(2, 1) = Parachute(); + +para(2, 1).name = 'MAIN chute'; +para(2, 1).surface = 14; % [m^2] Surface +para(2, 1).mass = 1.5; % [kg] Parachute Mass +para(2, 1).cd = 0.6; % [/] Parachute Drag Coefficient +para(2, 1).cl = 0; % [/] Parachute Lift Coefficient +para(2, 1).openingTime = 0.9; % [s] drogue opening delay +para(2, 1).finalAltitude = 0; % [m] Final altitude of the parachute +para(2, 1).cx = 1.15; % [/] Parachute Longitudinal Drag Coefficient +para(2, 1).chordLength = 6; % [m] Shock Chord Length +para(2, 1).chordK = 3000; % [N/m^2] Shock Chord Elastic Constant +para(2, 1).chordC = 0; % [Ns/m] Shock Chord Dynamic Coefficient +para(2, 1).m = 1; % [m^2/s] Coefficient of the surface vs. time opening model +para(2, 1).nf = 8.7; % [/] Adimensional Opening Time +para(2 ,1).expulsionSpeed = 0; % [m/s] Expulsion Speed +para(2, 1).forceCoefficient = 2.2; % [-] Empirical coefficient to obtain correct peak force at deployment + +%% PAYLOAD CHUTES +% parachute 1 +para(1, 2) = Parachute(); + +para(1, 2).name = "Payload DROGUE"; +para(1, 2).surface = 0.11; % [m^2] Surface +para(1, 2).mass = 0.1; % [kg] Parachute Mass +para(1, 2).cd = 1.2; % [/] Parachute Drag Coefficient +para(1, 2).cl = 0; % [/] Parachute Lift Coefficient +para(1, 2).openingTime = 1; % [s] drogue opening delay +para(1, 2).finalAltitude = 450; % [m] Final altitude of the parachute +para(1, 2).cx = 1.4; % [/] Parachute Longitudinal Drag Coefficient +para(1, 2).chordLength = 1.5; % [m] Shock Chord Length +para(1, 2).chordK = 7200; % [N/m^2] Shock Chord Elastic Constant +para(1, 2).chordC = 0; % [Ns/m] Shock Chord Dynamic Coefficient +para(1, 2).m = 1; % [m^2/s] Coefficient of the surface vs. time opening model +para(1, 2).nf = 12; % [/] Adimensional Opening Time +para(1, 2).expulsionSpeed = 10; % [m/s] Expulsion Speed +para(1, 2).forceCoefficient = 0; % [-] Empirical coefficient to obtain correct peak force at deployment + +% parachute 2 +para(2, 2) = Parafoil(); + +para(2, 2).name = "Payload AIRFOIL"; +para(2, 2).mass = 0.40; % [kg] Parafoil Mass +para(2, 2).openingTime = 0; % [s] Parafoil opening delay + +para(2, 2).surface = 0.11; % [m^2] Surface +para(2, 2).deltaSMax = 0.1; % max value + +para(2, 2).semiWingSpan = 2.55/2; % [m] settings.para(2, 2).b: semiwingspan - vela nuova: 2.55/2; - vela vecchia: 2.06/2; +para(2, 2).MAC = 0.8; % [m] mean aero chord +para(2, 2).surface = 2.04; % [m^2] parafoil surface - vela nuova 2.04; - vela vecchia: 1.64; +para(2, 2).inertia = [0.42, 0, 0.03; + 0, 0.4, 0; + 0.03, 0, 0.053]; % [kg m^2] [3x3] inertia matrix parafoil + +para(2, 2).finalAltitude = 0; + +para(2, 2).cd0 = 0.25; +para(2, 2).cdAlpha = 0.12; +para(2, 2).cdSurface = 0.01; + +para(2, 2).cl0 = 0.091; +para(2, 2).clAlpha = 0.9; +para(2, 2).clSurface = -0.0035; + +para(2, 2).cLP = -0.84; +para(2, 2).cLPhi = -0.1; +para(2, 2).cLSurface = -0.0035; + +para(2, 2).cM0 = 0.35; +para(2, 2).cMAlpha = -0.72; +para(2, 2).cMQ = -1.49; + +para(2, 2).cNR = -0.27; +para(2, 2).cNSurface = 0.0115; \ No newline at end of file diff --git a/missions/2025_Orion_Portugal_October/config/rocketConfig.m b/missions/2025_Orion_Portugal_October/config/rocketConfig.m new file mode 100644 index 0000000000000000000000000000000000000000..7a1c447354e008038928afde85dd6dbd2ea4cea8 --- /dev/null +++ b/missions/2025_Orion_Portugal_October/config/rocketConfig.m @@ -0,0 +1,157 @@ +% CONFIG - This script sets up rocket's parameters + +%% ROCKET - OVERRIDES BAYS CONFIG +rocket = Rocket(); + +rocket.diameter = 0.15; % [m] Rocket diameter +rocket.massNoMotor = []; % [kg] OVERRIDE mass without motor +rocket.inertiaNoMotor = []; % [kg*m^2] OVERRIDE inertia without motor - body axes reference +rocket.xCgNoMotor = []; % [m] OVERRIDE xCg without motor +rocket.lengthCenterNoMot = []; % [m] OVERRIDE Center length - no nose, no motor + +%% PLD - Includes Payload + Nose +payload = Payload(); + +payload.length = 647.25 * 1e-3; % [m] Total bay length +payload.mass = 4.401; % [kg] Total bay mass +payload.inertia = 1e-9*[12531966; 109986813; 109930516]; % [kg*m^2] Total bay inertia (Body reference) +payload.xCg = 487.78 * 1e-3; % [m] Cg relative to bay upper side + +payload.noseLength = 0.32; % [m] Nosecone length +payload.noseType = 'MHAACK'; % [-] Nosecone shape +payload.nosePower = 3/4; % [-] Nosecone power type parameter +payload.nosePMod = 1.250152e+00; % [-] P coefficient for modified nosecone shapes +payload.noseCMod = 1.799127e-01; % [-] C coefficient for modified nosecone shapes + +%% RCS +recovery = Recovery(); + +recovery.length = 826 * 1e-3; % [m] Total bay length +recovery.mass = 4.261; % [kg] Total bay mass +recovery.inertia = 1e-9*[13831051; 269596803; 269645059]; % [kg*m^2] Total bay inertia (Body reference) +recovery.xCg = 500.38 * 1e-3; % [m] Cg relative to bay upper side + +%% ELC +electronics = Electronics(); + +electronics.length = 433.5 * 1e-3; % [m] Total bay length +electronics.mass = 2.551; % [kg] Total bay mass +electronics.inertia = 1e-9*[9358415; 49265825; 48770607]; % [kg*m^2] Total bay inertia (Body reference) +electronics.xCg = 229.9 * 1e-3; % [m] Cg relative to bay upper side + +%% ARB +airbrakes = Airbrakes(); + +airbrakes.identification = false; % Control parameter for airbrakes - GNC + +airbrakes.length = 54.8 * 1e-3; % [m] Total bay length +airbrakes.mass = 0.936; % [kg] Total bay mass +airbrakes.inertia = 1e-9*[3086650; 1931082; 1889047]; % [kg*m^2] Total bay inertia (Body reference) +airbrakes.xCg = 30.54 * 1e-3; % [m] Cg relative to bay upper side + +airbrakes.enabled = true; % If true, multiple and smooth airbrakes opening will be simulated +airbrakes.extension = [1]; % aerobrakes, 1-2-3 for 0%, 50% or 100% opened +airbrakes.deltaTime = [0.5]; % aerobrakes, configurations usage time + +airbrakes.n = 3; % [-] number of brakes +airbrakes.height = linspace(0, 0.0363, 3); % [m] Block airbrakes opening coordinate ( First entry must be 0! ) +airbrakes.angleFunction = ... + @(x) -0.009083*x^4 + 0.02473*x^3 + ... + -0.01677*x^2 + 0.03129*x; % [-] Relation between angle and extension height +airbrakes.width = 0.1002754821; % [m] brakes width (normal) +airbrakes.thickness = 0.008; % [m] brakes thickness +airbrakes.xDistance = 1.517; % [m] axial position from nosecone base + +airbrakes.maxMach = 0.8; % [-] Maximum Mach at which airbrakes can be used +airbrakes.servoOmega = 300*pi/180; % [rad/s] Servo-motor angular velocity +airbrakes.servoTau = 0.0374588; + +%% MOTOR +motor = Motor(); + +% motor.name = 'HRE_ARM_P_40_T015_T03'; +% motor.name = 'HRE_ARM_P_41_T015_T03'; +% motor.name = 'HRE_ARM_P_42_T015_T03'; +% motor.name = 'HRE_ARM_P_43_T015_T03'; +% motor.name = 'HRE_ARM_P_44_T015_T03'; +% motor.name = 'HRE_ARM_P_45_T015_T03'; +% motor.name = 'HRE_ARM_P_46_T015_T03'; +% motor.name = 'HRE_ARM_P_47_T015_T03'; +% motor.name = 'HRE_ARM_P_48_T015_T03'; +% motor.name = 'HRE_ARM_P_49_T015_T03'; +% motor.name = 'HRE_ARM_P_50_T015_T03'; +% motor.name = 'HRE_ARM_P_52_T015_T03'; +% motor.name = 'HRE_ARM_P_53_T015_T03'; +% motor.name = 'HRE_ARM_P_54_T015_T03'; +% motor.name = 'HRE_ARM_P_55_T015_T03'; +% motor.name = 'HRE_ARM_P_56_T015_T03'; +% motor.name = 'HRE_ARM_P_58_T015_T03'; +% motor.name = 'HRE_ARM_P_59_T015_T03'; +% motor.name = 'HRE_ARM_P_60_T015_T03'; +% motor.name = 'HRE_ARM_P_62_T015_T03'; +% motor.name = 'HRE_ARM_P_63_T015_T03'; +% motor.name = 'HRE_ARM_P_64_T015_T03'; +% motor.name = 'HRE_ARM_P_66_T015_T03'; +% motor.name = 'HRE_ARM_P_67_T015_T03'; +% +% motor.name = 'HRE_ARM_P_40_T030_T03'; +motor.name = 'HRE_ARM_P_41_T030_T03'; +% motor.name = 'HRE_ARM_P_42_T030_T03'; +% motor.name = 'HRE_ARM_P_43_T030_T03'; +% motor.name = 'HRE_ARM_P_44_T030_T03'; +% motor.name = 'HRE_ARM_P_45_T030_T03'; +% motor.name = 'HRE_ARM_P_46_T030_T03'; +% motor.name = 'HRE_ARM_P_47_T030_T03'; +% motor.name = 'HRE_ARM_P_48_T030_T03'; +% motor.name = 'HRE_ARM_P_49_T030_T03'; +% motor.name = 'HRE_ARM_P_50_T030_T03'; +% motor.name = 'HRE_ARM_P_52_T030_T03'; +% motor.name = 'HRE_ARM_P_53_T030_T03'; +% motor.name = 'HRE_ARM_P_54_T030_T03'; +% motor.name = 'HRE_ARM_P_55_T030_T03'; +% motor.name = 'HRE_ARM_P_56_T030_T03'; +% motor.name = 'HRE_ARM_P_58_T030_T03'; +% motor.name = 'HRE_ARM_P_59_T030_T03'; +% motor.name = 'HRE_ARM_P_60_T030_T03'; +% motor.name = 'HRE_ARM_P_62_T030_T03'; +% motor.name = 'HRE_ARM_P_63_T030_T03'; +% motor.name = 'HRE_ARM_P_64_T030_T03'; +% motor.name = 'HRE_ARM_P_66_T030_T03'; +% motor.name = 'HRE_ARM_P_67_T030_T03'; + +motor.cutoffTime = []; % [s] OVERRIDE Cutoff time +motor.ignitionTransient = 0.3; % [s] Ignition transient +motor.cutoffTransient = 0.3; % [s] Cut-off transient + +%% REAR - Includes Fincan + Boat +rear = Rear(); + +rear.position = 1.090; % [m] offset from +rear.length = 547 * 1e-3; % [m] Total bay length +rear.mass = 1.623; % [kg] Total bay mass +rear.inertia = 1e-9*[13074201; 44271226; 44270124]; % [kg*m^2] Total bay inertia (Body reference) +rear.xCg = 253.77 * 1e-3; % [m] Cg relative to bay upper side + +rear.boatType = 'OGIVE'; % [-] Boat type +rear.boatLength = 0.114; % [m] Boat length +rear.boatFinalDiameter = 0.125; % [m] Boat end diameter + +rear.finsRootChord = 0.3; % [m] attached chord length +rear.finsFreeChord = 0.12; % [m] free chord length +rear.finsHeight = 0.13; % [m] fin height +rear.finsDeltaXFreeChord = 0.13; % [m] start of Chord 2 measured from start of Chord 1 +rear.nPanel = 3; % [m] number of fins +rear.finsLeadingEdgeRadius = [0 0]; % [deg] Leading edge radius at each span station +rear.finsAxialDistance = -0.044; % [m] distance between end of root chord and end of center body +rear.finsSemiThickness = 0.00175; % [m] fin semi-thickness +rear.finsMaxThicknessPosition = 0.00175; % [m] Fraction of chord from leading edge to max thickness + +%% PITOT +pitot = Pitot(); + +pitot.diameter = []; % [m] Pitot tube diameter +pitot.length = []; % [m] Pitot tube length +pitot.initialConeLength = []; % [m] Pitot initial conic section length +pitot.finalConeLength = []; % [m] Pitot final conic section length +pitot.initialConeDiameter = []; % [m] Pitot initial conic section diameter +pitot.finalConeDiameter = []; % [m] Pitot final conic section diameter \ No newline at end of file diff --git a/missions/2025_Orion_Portugal_October/config/windConfig.m b/missions/2025_Orion_Portugal_October/config/windConfig.m new file mode 100644 index 0000000000000000000000000000000000000000..32bd11ee5e83b92402b84277be0e5e943e2dca34 --- /dev/null +++ b/missions/2025_Orion_Portugal_October/config/windConfig.m @@ -0,0 +1,35 @@ +% CONFIG - This script sets up wind direction and magnitude based on +% altitudes +% +% Wind azimuth angle indications - Wind directed from <angle> +% 0 deg (use 360 instead of 0) -> North +% 90 deg -> East +% 180 deg -> South +% 270 deg -> West + +%% CUSTOM WIND MODEL + +windCustom = WindCustom(); + +windCustom.altitudes = [0 140 500 1000 1500 2000 2500 3000 3500 4000]; % [m] Altitudes at which a distribution change occurs +windCustom.magnitudeDistribution = ["u", "g", "g", "g", "g", "g", "g", "g", "g", "g"]; % [-] Distribution type: "u" - uniform, "g" - gaussian +windCustom.magnitudeParameters = [0 7 12 13 13 14 14 15 15 15; + 8.7 1.5 3 3 3 3 3 3 3 3]; % [m/s] Distribution parameters: "u" - [min; max], "g" - [mu; sigma] +windCustom.azimuthDistribution = ["u", "u", "u", "u", "u", "u", "u", "u", "u", "u"]; % [-] Distribution type: "u" - uniform, "g" - gaussian +windCustom.azimuthParameters = [270 270 270 280 270 260 260 240 240 240; + 290 290 290 300 290 280 280 280 280 280]*pi/180; % [deg] Distribution parameters: "u" - [min; max], "g" - [mu; sigma] + +% windCustom.altitudes = [0 4500]; +% windCustom.magnitudeDistribution = ["u", "u"]; +% windCustom.magnitudeParameters = [0 0; 15 15]; +% windCustom.azimuthDistribution = ["u", "u"]; +% windCustom.azimuthParameters = [0 0; 359 359]; +%% MATLAB WIND MODEL + +windMatlab = WindMatlab(); + +windMatlab.DayMin = 105; % [d] Minimum Day of the launch +windMatlab.DayMax = 105; % [d] Maximum Day of the launch +windMatlab.HourMin = 4; % [h] Minimum Hour of the day +windMatlab.HourMax = 4; % [h] Maximum Hour of the day +windMatlab.ww = 0; % [m/s] Vertical wind speed \ No newline at end of file diff --git a/missions/2025_Orion_Portugal_October/data/aeroCoefficients.mat b/missions/2025_Orion_Portugal_October/data/aeroCoefficients.mat new file mode 100644 index 0000000000000000000000000000000000000000..b52e8c2b1853ed3887d974e8c48d4fcdfa1e5d76 --- /dev/null +++ b/missions/2025_Orion_Portugal_October/data/aeroCoefficients.mat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:794e0b7e6a1809b920bd67c72e84fab131be8b3069e52a05f2373059f73c5847 +size 44345906 diff --git a/missions/2025_Orion_Portugal_October/data/aeroCoefficientsHighAOA.mat b/missions/2025_Orion_Portugal_October/data/aeroCoefficientsHighAOA.mat new file mode 100644 index 0000000000000000000000000000000000000000..40d2ddc17ca812d5846a58923b4ffeb085934e93 --- /dev/null +++ b/missions/2025_Orion_Portugal_October/data/aeroCoefficientsHighAOA.mat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d27c66f66d63999ffd64693669178d5c8d2c742df5b10dd63388bd553e037d07 +size 5779240 diff --git a/missions/2025_Orion_Portugal_October/data/motors.mat b/missions/2025_Orion_Portugal_October/data/motors.mat new file mode 100644 index 0000000000000000000000000000000000000000..abfa44c30b78215f9b6a523bb143fd68956feebc --- /dev/null +++ b/missions/2025_Orion_Portugal_October/data/motors.mat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f868aaf8fd1023761e62dd14f49ac06e03c4c6b0531c77c74f4ef5c3af0edfaf +size 231082 diff --git a/missions/2025_Orion_Portugal_October/data/satelliteData.mat b/missions/2025_Orion_Portugal_October/data/satelliteData.mat new file mode 100644 index 0000000000000000000000000000000000000000..cc4ab62aad6f3f4ab50fa1a3b621d21216f9271f --- /dev/null +++ b/missions/2025_Orion_Portugal_October/data/satelliteData.mat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e397bc4e9d60eaab3cfcd65adaef7cf5ca31f6e18455abe2d0456fbe22d347cd +size 197 diff --git a/missions/2025_Orion_Portugal_October/data/satelliteMap.tif b/missions/2025_Orion_Portugal_October/data/satelliteMap.tif new file mode 100644 index 0000000000000000000000000000000000000000..3cf6d60a0e5c7997d98eacaf5cf84a50ed9e949d Binary files /dev/null and b/missions/2025_Orion_Portugal_October/data/satelliteMap.tif differ diff --git a/missions/2025_Orion_Roccaraso_Settember/config/environmentConfig.m b/missions/2025_Orion_Roccaraso_Settember/config/environmentConfig.m new file mode 100644 index 0000000000000000000000000000000000000000..c028315ed9d95392e7af87cc36456fffc11f562c --- /dev/null +++ b/missions/2025_Orion_Roccaraso_Settember/config/environmentConfig.m @@ -0,0 +1,18 @@ +% CONFIG - This script sets up parameters for the environment +% +% Use this file to write launch data, independent from the rocket itself + +environment = Environment(); + +environment.lat0 = 41.8084579; % [deg] Launchpad latitude +environment.lon0 = 14.0546408; % [deg] Launchpad longitude +environment.z0 = 1414; % [m] Launchpad Altitude +environment.omega = 83; % [deg] Launchpad Elevation +environment.phi = 165; % [deg] Launchpad Azimuth +environment.pin1Length = 0.5603; % [m] Distance from the upper pin to the upper tank cap +environment.pin2Length = 0.2055; % [m] Distance from the lower pin to the lower tank cap +environment.rampLength = 10; % [m] Total launchpad length + +environment.temperature = []; % [deg] Ground temperature correction +environment.pressure = []; % [Pa] Ground pressure correction +environment.rho = []; % [Kg/m^3] Gorund air density correction \ No newline at end of file diff --git a/missions/2025_Orion_Roccaraso_Settember/config/paraConfig.m b/missions/2025_Orion_Roccaraso_Settember/config/paraConfig.m new file mode 100644 index 0000000000000000000000000000000000000000..80f10dae397f28bea09650adb0ab541f5f1d2090 --- /dev/null +++ b/missions/2025_Orion_Roccaraso_Settember/config/paraConfig.m @@ -0,0 +1,97 @@ +% CONFIG - This script contains information about the parachutes onboard +%% MAIN CHUTES +% parachute 1 +% para(1, 1) = Parachute(); +% +% para(1, 1).name = 'DROGUE chute'; +% para(1, 1).surface = 0.6; % [m^2] Surface +% para(1, 1).mass = 0.25; % [kg] Parachute Mass +% para(1, 1).cd = 0.75; % [/] Parachute Drag Coefficient +% para(1, 1).cl = 0; % [/] Parachute Lift Coefficient +% para(1, 1).openingTime = 0.1; % [s] drogue opening delay +% para(1, 1).finalAltitude = 350; % [m] Final altitude of the parachute +% para(1, 1).cx = 1.4; % [/] Parachute Longitudinal Drag Coefficient +% para(1, 1).chordLength = 1.5; % [m] Shock Chord Length +% para(1, 1).chordK = 7200; % [N/m^2] Shock Chord Elastic Constant +% para(1, 1).chordC = 0; % [Ns/m] Shock Chord Dynamic Coefficient +% para(1, 1).m = 1; % [m^2/s] Coefficient of the surface vs. time opening model +% para(1, 1).nf = 12; % [/] Adimensional Opening Time +% para(1, 1).expulsionSpeed = 5; % [m/s] Expulsion Speed +% para(1, 1).forceCoefficient = 1.8; % [-] Empirical coefficient to obtain correct peak force at deployment + +% parachute 2 +para(2, 1) = Parachute(); + +para(2, 1).name = 'MAIN chute'; +para(2, 1).surface = 14; % [m^2] Surface +para(2, 1).mass = 1.5; % [kg] Parachute Mass +para(2, 1).cd = 0.6; % [/] Parachute Drag Coefficient +para(2, 1).cl = 0; % [/] Parachute Lift Coefficient +para(2, 1).openingTime = 0.9; % [s] drogue opening delay +para(2, 1).finalAltitude = 0; % [m] Final altitude of the parachute +para(2, 1).cx = 1.15; % [/] Parachute Longitudinal Drag Coefficient +para(2, 1).chordLength = 6; % [m] Shock Chord Length +para(2, 1).chordK = 3000; % [N/m^2] Shock Chord Elastic Constant +para(2, 1).chordC = 0; % [Ns/m] Shock Chord Dynamic Coefficient +para(2, 1).m = 1; % [m^2/s] Coefficient of the surface vs. time opening model +para(2, 1).nf = 8.7; % [/] Adimensional Opening Time +para(2 ,1).expulsionSpeed = 0; % [m/s] Expulsion Speed +para(2, 1).forceCoefficient = 2.2; % [-] Empirical coefficient to obtain correct peak force at deployment + +%% PAYLOAD CHUTES +% parachute 1 +para(1, 2) = Parachute(); + +para(1, 2).name = "Payload DROGUE"; +para(1, 2).surface = 0.11; % [m^2] Surface +para(1, 2).mass = 0.1; % [kg] Parachute Mass +para(1, 2).cd = 1.2; % [/] Parachute Drag Coefficient +para(1, 2).cl = 0; % [/] Parachute Lift Coefficient +para(1, 2).openingTime = 1; % [s] drogue opening delay +para(1, 2).finalAltitude = 450; % [m] Final altitude of the parachute +para(1, 2).cx = 1.4; % [/] Parachute Longitudinal Drag Coefficient +para(1, 2).chordLength = 1.5; % [m] Shock Chord Length +para(1, 2).chordK = 7200; % [N/m^2] Shock Chord Elastic Constant +para(1, 2).chordC = 0; % [Ns/m] Shock Chord Dynamic Coefficient +para(1, 2).m = 1; % [m^2/s] Coefficient of the surface vs. time opening model +para(1, 2).nf = 12; % [/] Adimensional Opening Time +para(1, 2).expulsionSpeed = 10; % [m/s] Expulsion Speed +para(1, 2).forceCoefficient = 0; % [-] Empirical coefficient to obtain correct peak force at deployment + +% parachute 2 +para(2, 2) = Parafoil(); + +para(2, 2).name = "Payload AIRFOIL"; +para(2, 2).mass = 0.40; % [kg] Parafoil Mass +para(2, 2).openingTime = 0; % [s] Parafoil opening delay + +para(2, 2).surface = 0.11; % [m^2] Surface +para(2, 2).deltaSMax = 0.1; % max value + +para(2, 2).semiWingSpan = 2.55/2; % [m] settings.para(2, 2).b: semiwingspan - vela nuova: 2.55/2; - vela vecchia: 2.06/2; +para(2, 2).MAC = 0.8; % [m] mean aero chord +para(2, 2).surface = 2.04; % [m^2] parafoil surface - vela nuova 2.04; - vela vecchia: 1.64; +para(2, 2).inertia = [0.42, 0, 0.03; + 0, 0.4, 0; + 0.03, 0, 0.053]; % [kg m^2] [3x3] inertia matrix parafoil + +para(2, 2).finalAltitude = 0; + +para(2, 2).cd0 = 0.25; +para(2, 2).cdAlpha = 0.12; +para(2, 2).cdSurface = 0.01; + +para(2, 2).cl0 = 0.091; +para(2, 2).clAlpha = 0.9; +para(2, 2).clSurface = -0.0035; + +para(2, 2).cLP = -0.84; +para(2, 2).cLPhi = -0.1; +para(2, 2).cLSurface = -0.0035; + +para(2, 2).cM0 = 0.35; +para(2, 2).cMAlpha = -0.72; +para(2, 2).cMQ = -1.49; + +para(2, 2).cNR = -0.27; +para(2, 2).cNSurface = 0.0115; \ No newline at end of file diff --git a/missions/2025_Orion_Roccaraso_Settember/config/rocketConfig.m b/missions/2025_Orion_Roccaraso_Settember/config/rocketConfig.m new file mode 100644 index 0000000000000000000000000000000000000000..bcc3bb6fcdf2897a46ea8920d80f6cc3ad9fdee6 --- /dev/null +++ b/missions/2025_Orion_Roccaraso_Settember/config/rocketConfig.m @@ -0,0 +1,115 @@ +% CONFIG - This script sets up rocket's parameters + +%% ROCKET - OVERRIDES BAYS CONFIG +rocket = Rocket(); + +rocket.diameter = 0.15; % [m] Rocket diameter +rocket.massNoMotor = 14.0376; % [kg] OVERRIDE mass without motor +rocket.inertiaNoMotor = []; % [kg*m^2] OVERRIDE inertia without motor - body axes reference +rocket.xCgNoMotor = []; % [m] OVERRIDE xCg without motor +rocket.lengthCenterNoMot = []; % [m] OVERRIDE Center length - no nose, no motor + +% rocket.diameter = 0.15; % [m] Rocket diameter +% rocket.massNoMotor = 17.0; % [kg] OVERRIDE mass without motor +% rocket.inertiaNoMotor = [0.06535397; 17.21019828; 17.21056483]; % [kg*m^2] OVERRIDE inertia without motor - body axes reference +% rocket.xCgNoMotor = 1.28; % [m] OVERRIDE xCg without motor +% rocket.lengthCenterNoMot = 1.778; % [m] OVERRIDE Center length - no nose, no motor + +%% PLD - Includes Payload + Nose +payload = Payload(); + +payload.length = 647.25 * 1e-3; % [m] Total bay length +payload.mass = 4.401; % [kg] Total bay mass +payload.inertia = 1e-9*[12531966; 109986813; 109930516]; % [kg*m^2] Total bay inertia (Body reference) +payload.xCg = 487.78 * 1e-3; % [m] Cg relative to bay upper side + +payload.noseLength = 0.32; % [m] Nosecone length +payload.noseType = 'MHAACK'; % [-] Nosecone shape +payload.nosePower = 3/4; % [-] Nosecone power type parameter +payload.nosePMod = 1.250152e+00; % [-] P coefficient for modified nosecone shapes +payload.noseCMod = 1.799127e-01; % [-] C coefficient for modified nosecone shapes + +%% RCS +recovery = Recovery(); + +recovery.length = 826 * 1e-3; % [m] Total bay length +recovery.mass = 4.261; % [kg] Total bay mass +recovery.inertia = 1e-9*[13831051; 269596803; 269645059]; % [kg*m^2] Total bay inertia (Body reference) +recovery.xCg = 500.38 * 1e-3; % [m] Cg relative to bay upper side + +%% ELC +electronics = Electronics(); + +electronics.length = 433.5 * 1e-3; % [m] Total bay length +electronics.mass = 2.551; % [kg] Total bay mass +electronics.inertia = 1e-9*[9358415; 49265825; 48770607]; % [kg*m^2] Total bay inertia (Body reference) +electronics.xCg = 229.9 * 1e-3; % [m] Cg relative to bay upper side + +%% ARB +airbrakes = Airbrakes(); + +airbrakes.identification = false; % Control parameter for airbrakes - GNC + +airbrakes.length = 54.8 * 1e-3; % [m] Total bay length +airbrakes.mass = 0.936; % [kg] Total bay mass +airbrakes.inertia = 1e-9*[3086650; 1931082; 1889047]; % [kg*m^2] Total bay inertia (Body reference) +airbrakes.xCg = 30.54 * 1e-3; % [m] Cg relative to bay upper side + +airbrakes.enabled = true; % If true, multiple and smooth airbrakes opening will be simulated +airbrakes.extension = [1]; % aerobrakes, 1-2-3 for 0%, 50% or 100% opened +airbrakes.deltaTime = [0]; % aerobrakes, configurations usage time + +airbrakes.n = 3; % [-] number of brakes +airbrakes.height = linspace(0, 0.0363, 3); % [m] Block airbrakes opening coordinate ( First entry must be 0! ) +airbrakes.angleFunction = ... + @(x) -0.009083*x^4 + 0.02473*x^3 + ... + -0.01677*x^2 + 0.03129*x; % [-] Relation between angle and extension height +airbrakes.width = 0.1002754821; % [m] brakes width (normal) +airbrakes.thickness = 0.008; % [m] brakes thickness +airbrakes.xDistance = 1.517; + +airbrakes.maxMach = 0.8; % [-] Maximum Mach at which airbrakes can be used +airbrakes.servoOmega = 300*pi/180; % [rad/s] Servo-motor angular velocity +airbrakes.servoTau = 0.0374588; + +%% MOTOR +motor = Motor(); + +motor.name = 'HRE_ARM_Rocc_PTank_T015_T02'; + +motor.cutoffTime = []; % [s] OVERRIDE Cutoff time +motor.ignitionTransient = 0.15; % [s] Ignition transient +motor.cutoffTransient = 0.3; % [s] Cut-off transient + +%% REAR - Includes Fincan + Boat +rear = Rear(); + +rear.position = 1.090; % [m] offset from +rear.length = 547 * 1e-3; % [m] Total bay length +rear.mass = 1.623; % [kg] Total bay mass +rear.inertia = 1e-9*[13074201; 44271226; 44270124]; % [kg*m^2] Total bay inertia (Body reference) +rear.xCg = 253.77 * 1e-3; % [m] Cg relative to bay upper side + +rear.boatType = 'OGIVE'; % [-] Boat type +rear.boatLength = 0.114; % [m] Boat length +rear.boatFinalDiameter = 0.125; % [m] Boat end diameter + +rear.finsRootChord = 0.3; % [m] attached chord length +rear.finsFreeChord = 0.12; % [m] free chord length +rear.finsHeight = 0.13; % [m] fin height +rear.finsDeltaXFreeChord = 0.13; % [m] start of Chord 2 measured from start of Chord 1 +rear.nPanel = 3; % [m] number of fins +rear.finsLeadingEdgeRadius = [0 0]; % [deg] Leading edge radius at each span station +rear.finsAxialDistance = -0.044; % [m] distance between end of root chord and end of center body +rear.finsSemiThickness = 0.00175; % [m] fin semi-thickness +rear.finsMaxThicknessPosition = 0.00175; % [m] Fraction of chord from leading edge to max thickness + +%% PITOT +pitot = Pitot(); + +pitot.diameter = []; % [m] Pitot tube diameter +pitot.length = 0.04777; % [m] Pitot tube length +pitot.initialConeLength = []; % [m] Pitot initial conic section length +pitot.finalConeLength = []; % [m] Pitot final conic section length +pitot.initialConeDiameter = []; % [m] Pitot initial conic section diameter +pitot.finalConeDiameter = []; % [m] Pitot final conic section diameter \ No newline at end of file diff --git a/missions/2025_Orion_Roccaraso_Settember/config/windConfig.m b/missions/2025_Orion_Roccaraso_Settember/config/windConfig.m new file mode 100644 index 0000000000000000000000000000000000000000..cd274dacf5d5590e4e3c49b00f0b63d47a2edf5d --- /dev/null +++ b/missions/2025_Orion_Roccaraso_Settember/config/windConfig.m @@ -0,0 +1,30 @@ +% CONFIG - This script sets up wind direction and magnitude based on +% altitudes +% +% Wind azimuth angle indications - Wind directed towards <angle> +% 0 deg (use 360 instead of 0) -> North +% 90 deg -> East +% 180 deg -> South +% 270 deg -> West + +%% CUSTOM WIND MODEL + +windCustom = WindCustom(); + +windCustom.altitudes = [0 500 900 1200]; % [m] Altitudes at which a distribution change occurs +windCustom.magnitudeDistribution = ["g", "g", "g", "g"]; % [-] Distribution type: "u" - uniform, "g" - gaussian +windCustom.magnitudeParameters = [4 5 5 4; % [m/s] Distribution parameters: "u" - [min; max], "g" - [mu; sigma] + 0.25 0.83 0.83 0.83]; +windCustom.azimuthDistribution = ["u", "u", "u", "u"]; % [-] Distribution type: "u" - uniform, "g" - gaussian +windCustom.azimuthParameters = [350 320 320 320; + 370 370 370 370]*pi/180; % [deg] Distribution parameters: "u" - [min; max], "g" - [mu; sigma] + +%% MATLAB WIND MODEL + +windMatlab = WindMatlab(); + +windMatlab.DayMin = 105; % [d] Minimum Day of the launch +windMatlab.DayMax = 105; % [d] Maximum Day of the launch +windMatlab.HourMin = 4; % [h] Minimum Hour of the day +windMatlab.HourMax = 4; % [h] Maximum Hour of the day +windMatlab.ww = 0; % [m/s] Vertical wind speed \ No newline at end of file diff --git a/missions/2025_Orion_Roccaraso_Settember/data/aeroCoefficients.mat b/missions/2025_Orion_Roccaraso_Settember/data/aeroCoefficients.mat new file mode 100644 index 0000000000000000000000000000000000000000..fdff8eca182197966866ab16a2da4fdb949534d1 --- /dev/null +++ b/missions/2025_Orion_Roccaraso_Settember/data/aeroCoefficients.mat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d82a35bf673e0e33613384102d303aa84af3cdfaa153410681666c4b88b5080 +size 44347284 diff --git a/missions/2025_Orion_Roccaraso_Settember/data/aeroCoefficientsHighAOA.mat b/missions/2025_Orion_Roccaraso_Settember/data/aeroCoefficientsHighAOA.mat new file mode 100644 index 0000000000000000000000000000000000000000..b737cf0ae9660af47606005e430870ae9b0a35d4 --- /dev/null +++ b/missions/2025_Orion_Roccaraso_Settember/data/aeroCoefficientsHighAOA.mat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7b7433b4b996539ffe5d399f48429385843aa0813b563976215e549d1022776 +size 5781680 diff --git a/missions/2025_Orion_Roccaraso_Settember/data/motors.mat b/missions/2025_Orion_Roccaraso_Settember/data/motors.mat new file mode 100644 index 0000000000000000000000000000000000000000..950cdb9b7d5d637364a64582e3648bb581bfb8ff --- /dev/null +++ b/missions/2025_Orion_Roccaraso_Settember/data/motors.mat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4387e1045f7f6dbd43fc5f7d17d74feddfe198441ea682749cc21e6c33a45d3c +size 67367 diff --git a/missions/2025_Orion_Roccaraso_Settember/data/satelliteData.mat b/missions/2025_Orion_Roccaraso_Settember/data/satelliteData.mat new file mode 100644 index 0000000000000000000000000000000000000000..086bc4c8ac2583f89a6b6ffe2e98d55e65925f7d --- /dev/null +++ b/missions/2025_Orion_Roccaraso_Settember/data/satelliteData.mat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01301b7d1248be552e296924c120f66094b8b2770f9499e4befd6a277ced75c9 +size 197 diff --git a/missions/2025_Orion_Roccaraso_Settember/data/satelliteMap.tif b/missions/2025_Orion_Roccaraso_Settember/data/satelliteMap.tif new file mode 100644 index 0000000000000000000000000000000000000000..804387bbb68ec22b082b7496ba1928f45e9fc375 Binary files /dev/null and b/missions/2025_Orion_Roccaraso_Settember/data/satelliteMap.tif differ