diff --git a/controls/model/modelParameters.m b/controls/model/modelParameters.m index f01946f1f512a9e114c26b68b801b0581d243f04..5af568c42ae034703801eb4d55c26d80c4cc5738 100644 --- a/controls/model/modelParameters.m +++ b/controls/model/modelParameters.m @@ -1,9 +1,9 @@ - % Model Parameters +% Log Analysis Toggle + logAnalysisToggle = 1; % 1 for log analysis, 0 for normal operation + +% Model Parameters m = 1.244; % Quadrotor + battery mass g = 9.81; % Acceleration of gravity -% Jxx = 0.0277; % Quadrotor and battery motor of inertia around bx (pitch) -% Jyy = 0.0218; % Quadrotor and battery motor of inertia around by (roll) -% Jzz = 0.0332; % Quadrotor and battery motor of inertia around bz (yaw) Jxx = 0.0130; % Quadrotor and battery motor of inertia around bx (pitch) Jyy = 0.0140; % Quadrotor and battery motor of inertia around by (roll) Jzz = 0.0285; % Quadrotor and battery motor of inertia around bz (yaw) @@ -33,4 +33,65 @@ height_controlled_o = (((Rm*If + ... + (((omega_o * 2 * Rm * Kv * Kq ... * Kd + 1)^2) - 1)/(4* Rm*Kv^2*Kq ... - *Kd))/Vb)*(Pmax- Pmin)+Pmin); \ No newline at end of file + *Kd))/Vb)*(Pmax- Pmin)+Pmin); + +% Import Data and determine errors +if logAnalysisToggle == 1 + + % Import Data to Workspace + data = importdata('loggingAnalysis/logFiles/logData.csv'); + + % Set up time vector + time = data.data(:, 1); + + % Determine x position error + x_setpoint = data.data(:, 25); + x_position = data.data(:, 20); + x_error = timeseries(x_setpoint - x_position, time); + + % Determine y position error + y_setpoint = data.data(:, 26); + y_position = data.data(:, 21); + y_error = timeseries(y_setpoint - y_position, time); + + % Determine z position error + z_setpoint = data.data(:, 27); + z_position = data.data(:, 22); + z_error = timeseries(z_setpoint - z_position, time); + + % Determine pitch error + pitch_setpoint = data.data(:, 9); + pitch_value = data.data(:, 23); + pitch_error = timeseries(pitch_setpoint - pitch_value, time); + + % Determine roll error + roll_setpoint = data.data(:, 10); + roll_value = data.data(:, 24); + roll_error = timeseries(roll_setpoint - roll_value, time); + + % Determine yaw error + yaw_setpoint = zeros(length(time), 1); % NEEDS UPDATED WHEN LOG FILE INCLUDES YAW SETPOINT + yaw_value = ones(length(time), 1); % NEEDS UPDATED WHEN LOG FILE INCLUDES YAW VALUE + yaw_error = timeseries(yaw_setpoint - yaw_value, time); + + % Determine pitch rate error + pitchrate_setpoint = data.data(:, 11); + pitchrate_value = data.data(:, 6); + pitchrate_error = timeseries(pitchrate_setpoint - pitchrate_value, time); + + % Determine roll rate error + rollrate_setpoint = data.data(:, 12); + rollrate_value = data.data(:, 5); + rollrate_error = timeseries(rollrate_setpoint - rollrate_value, time); + + % Determine yaw rate error + yawrate_setpoint = data.data(:, 13); + yawrate_value = data.data(:, 7); + yawrate_error = timeseries(yawrate_setpoint - yawrate_value, time); + + % Pull motor commands from log + x_command = data.data(:, 14); + y_command = data.data(:, 15); + z_command = data.data(:, 8); + yaw_command = data.data(:, 16); +end diff --git a/controls/model/test_model.slx b/controls/model/test_model.slx index d95ac846d3726b2898b9a6499f563588a52764c8..fcf716855f95156454eb3da5d19ef6c99b22301c 100644 Binary files a/controls/model/test_model.slx and b/controls/model/test_model.slx differ