From 671da2f403c15f31e0206335ada13974c02ce49f Mon Sep 17 00:00:00 2001 From: Mauco03 <marco.gaibotti@skywarder.eu> Date: Wed, 26 Mar 2025 21:51:46 +0100 Subject: [PATCH] [handle-value-conversion] Fixed a bug where updating inertia would trigger override --- classes/@Rocket/Rocket.m | 6 +++--- classes/@Rocket/update.m | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/classes/@Rocket/Rocket.m b/classes/@Rocket/Rocket.m index 5d91e4b..a06283b 100644 --- a/classes/@Rocket/Rocket.m +++ b/classes/@Rocket/Rocket.m @@ -175,7 +175,7 @@ classdef Rocket < Config obj = update(obj); end - methods + methods % Getters function obj = set.parafoil(obj, value), obj = obj.updateBay('PARAFOIL', value); end function obj = set.recovery(obj, value), obj = obj.updateBay('RECOVERY', value); end function obj = set.electronics(obj, value), obj = obj.updateBay('ELECTRONICS', value); end @@ -186,8 +186,8 @@ classdef Rocket < Config end end function obj = set.motor(obj, value) - obj = obj.updateBay('MOTOR', value); obj.time = value.time; + obj = obj.updateBay('MOTOR', value); obj.cutoffTime = value.cutoffTime; if ~isempty(obj.airbrakes) obj.AIRBRAKES.minTime = obj.motor.cutoffTime; @@ -212,7 +212,7 @@ classdef Rocket < Config function obj = set.xcgNoMotor(obj, value), obj = obj.updateOverridable('XCG_NO_MOTOR', value); end end - methods + methods % Getters function value = get.parafoil(obj), value = obj.PARAFOIL; end function value = get.recovery(obj), value = obj.RECOVERY; end function value = get.electronics(obj), value = obj.ELECTRONICS; end diff --git a/classes/@Rocket/update.m b/classes/@Rocket/update.m index 2685b08..ab547d2 100644 --- a/classes/@Rocket/update.m +++ b/classes/@Rocket/update.m @@ -31,17 +31,17 @@ if ~override('INERTIA') baysInertia = obj.inertiaNoMotor(2:3, :) + ... (obj.xcg - obj.xcgNoMotor).^2 .* obj.massNoMotor; - obj.inertia = [obj.motor.inertia(1, :) + obj.inertiaNoMotor(1, :); + obj.INERTIA = [obj.motor.inertia(1, :) + obj.inertiaNoMotor(1, :); motorInertia + baysInertia]; - obj.inertiaDot = diff(obj.inertia, 1, 2)./diff(obj.motor.time); + obj.inertiaDot = diff(obj.INERTIA, 1, 2)./diff(obj.motor.time); obj.inertiaDot(:, end + 1) = obj.inertiaDot(:, end); end %% Cutoff cutoffXcg = interp1(obj.time, obj.xcg, obj.cutoffTime, "linear", 'extrap'); obj.cutoffMass = interp1(obj.time, obj.mass, obj.cutoffTime, "linear", 'extrap'); -obj.cutoffInertia = interp1(obj.time, obj.inertia', obj.cutoffTime, "linear", 'extrap')'; +obj.cutoffInertia = interp1(obj.time, obj.INERTIA', obj.cutoffTime, "linear", 'extrap')'; %% Stages % TODO! generalize for n stages, variable input -- GitLab