diff --git a/active_damping/index.html b/active_damping/index.html index d4e19e6..035023c 100644 --- a/active_damping/index.html +++ b/active_damping/index.html @@ -4,7 +4,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Active Damping applied on the Simscape Model @@ -284,99 +284,100 @@ for the JavaScript code in this tag.

Table of Contents

-First, in section 1, we will looked at the undamped system. +First, in section 1, we will looked at the undamped system.

Then, we will compare three active damping techniques:

@@ -415,11 +416,11 @@ The disturbances are:

  • Motion errors of all the stages
  • -
    -

    1 Undamped System

    +
    +

    1 Undamped System

    - +

    @@ -433,12 +434,12 @@ The performance of this undamped system will be compared with the damped system

    -
    -

    1.1 Identification of the dynamics for Active Damping

    +
    +

    1.1 Identification of the dynamics for Active Damping

    -
    -

    1.1.1 Initialize the Simulation

    +
    +

    1.1.1 Initialize the Simulation

    We initialize all the stages with the default parameters. @@ -489,8 +490,8 @@ save('./mat/controllers.mat', -

    1.1.2 Identification

    +
    +

    1.1.2 Identification

    First, we identify the dynamics of the system using the linearize function. @@ -539,25 +540,25 @@ And we save them for further analysis.

    -
    -

    1.1.3 Obtained Plants for Active Damping

    +
    +

    1.1.3 Obtained Plants for Active Damping

    -
    +

    nass_active_damping_iff_plant.png

    Figure 1: G_iff: IFF Plant (png, pdf)

    -
    +

    nass_active_damping_ine_plant.png

    Figure 2: G_dvf: Plant for Direct Velocity Feedback (png, pdf)

    -
    +

    nass_active_damping_inertial_plant.png

    Figure 3: Inertial Feedback Plant (png, pdf)

    @@ -566,12 +567,12 @@ And we save them for further analysis.
    -
    -

    1.2 Tomography Experiment

    +
    +

    1.2 Tomography Experiment

    -
    -

    1.2.1 Simulation

    +
    +

    1.2.1 Simulation

    We initialize elements for the tomography experiment. @@ -608,8 +609,8 @@ Finally, we save the simulation results for further analysis

    -
    -

    1.2.2 Results

    +
    +

    1.2.2 Results

    We load the results of tomography experiments. @@ -621,14 +622,14 @@ t = linspace(0, 3, length(En(:,1)));

    -
    +

    nass_act_damp_undamped_sim_tomo_trans.png

    Figure 4: Position Error during tomography experiment - Translations (png, pdf)

    -
    +

    nass_act_damp_undamped_sim_tomo_rot.png

    Figure 5: Position Error during tomography experiment - Rotations (png, pdf)

    @@ -638,11 +639,11 @@ t = linspace(0, 3, length(En(:,1)));
    -
    -

    2 Integral Force Feedback

    +
    +

    2 Integral Force Feedback

    - +

    @@ -655,12 +656,12 @@ Integral Force Feedback is applied on the simscape model.

    -
    -

    2.1 Control Design

    +
    +

    2.1 Control Design

    -
    -

    2.1.1 Plant

    +
    +

    2.1.1 Plant

    Let’s load the previously indentified undamped plant: @@ -671,11 +672,11 @@ Let’s load the previously indentified undamped plant:

    -Let’s look at the transfer function from actuator forces in the nano-hexapod to the force sensor in the nano-hexapod legs for all 6 pairs of actuator/sensor (figure 6). +Let’s look at the transfer function from actuator forces in the nano-hexapod to the force sensor in the nano-hexapod legs for all 6 pairs of actuator/sensor (figure 6).

    -
    +

    iff_plant.png

    Figure 6: Transfer function from forces applied in the legs to force sensor (png, pdf)

    @@ -683,8 +684,8 @@ Let’s look at the transfer function from actuator forces in the nano-hexap
    -
    -

    2.1.2 Control Design

    +
    +

    2.1.2 Control Design

    The controller for each pair of actuator/sensor is: @@ -695,11 +696,11 @@ The controller for each pair of actuator/sensor is:

    -The corresponding loop gains are shown in figure 7. +The corresponding loop gains are shown in figure 7.

    -
    +

    iff_open_loop.png

    Figure 7: Loop Gain for the Integral Force Feedback (png, pdf)

    @@ -707,8 +708,8 @@ The corresponding loop gains are shown in figure 7.
    -
    -

    2.1.3 Diagonal Controller

    +
    +

    2.1.3 Diagonal Controller

    We create the diagonal controller and we add a minus sign as we have a positive @@ -728,14 +729,54 @@ We save the controller for further analysis.

    + +
    +

    2.1.4 IFF with High Pass Filter

    +
    +
    +
    w_hpf = 2*pi*10; % Cut-off frequency for the high pass filter [rad/s]
    +w_lpf = 2*pi*200; % Cut-off frequency for the low pass filter [rad/s]
    +
    +K_iff = 2*pi*200/s * (s/w_hpf)/(s/w_hpf + 1) * 1/(s/w_lpf + 1);
    +
    -
    -

    2.2 Tomography Experiment

    +

    +The corresponding loop gains are shown in figure 8. +

    + +
    +

    iff_hpf_open_loop.png +

    +

    Figure 8: Loop Gain for the Integral Force Feedback with an High pass filter (png, pdf)

    +
    + +

    +We create the diagonal controller and we add a minus sign as we have a positive +feedback architecture. +

    +
    +
    K_iff = -K_iff*eye(6);
    +
    +
    + +

    +We save the controller for further analysis. +

    +
    +
    save('./active_damping/mat/K_iff_hpf.mat', 'K_iff');
    +
    +
    +
    +
    +
    + +
    +

    2.2 Tomography Experiment

    -
    -

    2.2.1 Initialize the Simulation

    +
    +

    2.2.1 Simulation with IFF Controller

    We initialize elements for the tomography experiment. @@ -753,12 +794,7 @@ We set the IFF controller. save('./mat/controllers.mat', 'K_iff', '-append');

    -
    -
    -
    -

    2.2.2 Simulation

    -

    We change the simulation stop time.

    @@ -788,41 +824,93 @@ save('./active_damping/mat/tomo_exp.mat',
    -
    -

    2.2.3 Compare with Undamped system

    +
    +

    2.2.2 Simulation with IFF Controller with added High Pass Filter

    +
    +

    +We initialize elements for the tomography experiment. +

    +
    +
    prepareTomographyExperiment();
    +
    +
    + +

    +We set the IFF controller with the High Pass Filter. +

    +
    +
    load('./active_damping/mat/K_iff_hpf.mat', 'K_iff');
    +save('./mat/controllers.mat', 'K_iff', '-append');
    +
    +
    + +

    +We change the simulation stop time. +

    +
    +
    load('mat/conf_simscape.mat');
    +set_param(conf_simscape, 'StopTime', '3');
    +
    +
    + +

    +And we simulate the system. +

    +
    +
    sim('sim_nass_active_damping');
    +
    +
    + +

    +Finally, we save the simulation results for further analysis +

    +
    +
    En_iff_hpf = En;
    +Eg_iff_hpf = Eg;
    +save('./active_damping/mat/tomo_exp.mat', 'En_iff_hpf', 'Eg_iff_hpf', '-append');
    +
    +
    +
    +
    + +
    +

    2.2.3 Compare with Undamped system

    We load the results of tomography experiments.

    -
    load('./active_damping/mat/tomo_exp.mat', 'En', 'En_iff');
    -
    -
    - -
    -
    t = linspace(0, 3, length(En(:,1)));
    +
    load('./active_damping/mat/tomo_exp.mat', 'En', 'En_iff', 'En_iff_hpf');
    +t = linspace(0, 3, length(En(:,1)));
     
    -
    +
    +

    nass_act_damp_iff_sim_tomo_xy.png +

    +

    Figure 9: Position Error during tomography experiment - XY Motion (png, pdf)

    +
    + + +

    nass_act_damp_iff_sim_tomo_trans.png

    -

    Figure 8: Position Error during tomography experiment - Translations (png, pdf)

    +

    Figure 10: Position Error during tomography experiment - Translations (png, pdf)

    -
    +

    nass_act_damp_iff_sim_tomo_rot.png

    -

    Figure 9: Position Error during tomography experiment - Rotations (png, pdf)

    +

    Figure 11: Position Error during tomography experiment - Rotations (png, pdf)

    -
    -

    2.3 Conclusion

    +
    +

    2.3 Conclusion

    @@ -839,11 +927,11 @@ Integral Force Feedback:

    -
    -

    3 Direct Velocity Feedback

    +
    +

    3 Direct Velocity Feedback

    - +

    @@ -857,12 +945,12 @@ The actuator displacement can be measured with a capacitive sensor for instance.

    -
    -

    3.1 Control Design

    +
    +

    3.1 Control Design

    -
    -

    3.1.1 Plant

    +
    +

    3.1.1 Plant

    Let’s load the undamped plant: @@ -873,20 +961,20 @@ Let’s load the undamped plant:

    -Let’s look at the transfer function from actuator forces in the nano-hexapod to the measured displacement of the actuator for all 6 pairs of actuator/sensor (figure 10). +Let’s look at the transfer function from actuator forces in the nano-hexapod to the measured displacement of the actuator for all 6 pairs of actuator/sensor (figure 12).

    -
    +

    dvf_plant.png

    -

    Figure 10: Transfer function from forces applied in the legs to leg displacement sensor (png, pdf)

    +

    Figure 12: Transfer function from forces applied in the legs to leg displacement sensor (png, pdf)

    -
    -

    3.1.2 Control Design

    +
    +

    3.1.2 Control Design

    The Direct Velocity Feedback is defined below. @@ -898,20 +986,20 @@ A Low pass Filter is added to make the controller transfer function proper.

    -The obtained loop gains are shown in figure 11. +The obtained loop gains are shown in figure 13.

    -
    +

    dvf_open_loop.png

    -

    Figure 11: Loop Gain for the Integral Force Feedback (png, pdf)

    +

    Figure 13: Loop Gain for the Integral Force Feedback (png, pdf)

    -
    -

    3.1.3 Diagonal Controller

    +
    +

    3.1.3 Diagonal Controller

    We create the diagonal controller and we add a minus sign as we have a positive feedback architecture. @@ -932,12 +1020,12 @@ We save the controller for further analysis.

    -
    -

    3.2 Tomography Experiment

    +
    +

    3.2 Tomography Experiment

    -
    -

    3.2.1 Initialize the Simulation

    +
    +

    3.2.1 Initialize the Simulation

    We initialize elements for the tomography experiment. @@ -958,8 +1046,8 @@ save('./mat/controllers.mat', -

    3.2.2 Simulation

    +
    +

    3.2.2 Simulation

    We change the simulation stop time. @@ -990,8 +1078,8 @@ save('./active_damping/mat/tomo_exp.mat',

    -
    -

    3.2.3 Compare with Undamped system

    +
    +

    3.2.3 Compare with Undamped system

    We load the results of tomography experiments. @@ -1003,24 +1091,31 @@ t = linspace(0, 3, length(En(:,1)));

    -
    +
    +

    nass_act_damp_dvf_sim_tomo_xy.png +

    +

    Figure 14: Position Error during tomography experiment - XY Motion (png, pdf)

    +
    + + +

    nass_act_damp_dvf_sim_tomo_trans.png

    -

    Figure 12: Position Error during tomography experiment - Translations (png, pdf)

    +

    Figure 15: Position Error during tomography experiment - Translations (png, pdf)

    -
    +

    nass_act_damp_dvf_sim_tomo_rot.png

    -

    Figure 13: Position Error during tomography experiment - Rotations (png, pdf)

    +

    Figure 16: Position Error during tomography experiment - Rotations (png, pdf)

    -
    -

    3.3 Conclusion

    +
    +

    3.3 Conclusion

    @@ -1035,11 +1130,11 @@ Direct Velocity Feedback:

    -
    -

    4 Inertial Control

    +
    +

    4 Inertial Control

    -
    -

    4.1 Control Design

    +
    +

    4.1 Control Design

    -
    -

    4.1.1 Plant

    +
    +

    4.1.1 Plant

    Let’s load the undamped plant: @@ -1068,41 +1163,41 @@ Let’s load the undamped plant:

    -Let’s look at the transfer function from actuator forces in the nano-hexapod to the measured velocity of the nano-hexapod platform in the direction of the corresponding actuator for all 6 pairs of actuator/sensor (figure 14). +Let’s look at the transfer function from actuator forces in the nano-hexapod to the measured velocity of the nano-hexapod platform in the direction of the corresponding actuator for all 6 pairs of actuator/sensor (figure 17).

    -
    +

    ine_plant.png

    -

    Figure 14: Transfer function from forces applied in the legs to leg velocity sensor (png, pdf)

    +

    Figure 17: Transfer function from forces applied in the legs to leg velocity sensor (png, pdf)

    -
    -

    4.1.2 Control Design

    +
    +

    4.1.2 Control Design

    -The controller is defined below and the obtained loop gain is shown in figure 15. +The controller is defined below and the obtained loop gain is shown in figure 18.

    -
    K_ine = 1e3/(1+s/(2*pi*100));
    +
    K_ine = 1e4/(1+s/(2*pi*100));
     
    -
    +

    ine_open_loop_gain.png

    -

    Figure 15: Loop Gain for Inertial Control (png, pdf)

    +

    Figure 18: Loop Gain for Inertial Control (png, pdf)

    -
    -

    4.1.3 Diagonal Controller

    +
    +

    4.1.3 Diagonal Controller

    We create the diagonal controller and we add a minus sign as we have a positive feedback architecture. @@ -1123,12 +1218,12 @@ We save the controller for further analysis.

    -
    -

    4.2 Tomography Experiment

    +
    +

    4.2 Tomography Experiment

    -
    -

    4.2.1 Initialize the Simulation

    +
    +

    4.2.1 Initialize the Simulation

    We initialize elements for the tomography experiment. @@ -1149,8 +1244,8 @@ save('./mat/controllers.mat', -

    4.2.2 Simulation

    +
    +

    4.2.2 Simulation

    We change the simulation stop time. @@ -1181,8 +1276,8 @@ save('./active_damping/mat/tomo_exp.mat',

    -
    -

    4.2.3 Compare with Undamped system

    +
    +

    4.2.3 Compare with Undamped system

    We load the results of tomography experiments. @@ -1194,24 +1289,31 @@ t = linspace(0, 3, length(En_ine(:,1)));

    -
    +
    +

    nass_act_damp_ine_sim_tomo_xy.png +

    +

    Figure 19: Position Error during tomography experiment - XY Motion (png, pdf)

    +
    + + +

    nass_act_damp_ine_sim_tomo_trans.png

    -

    Figure 16: Position Error during tomography experiment - Translations (png, pdf)

    +

    Figure 20: Position Error during tomography experiment - Translations (png, pdf)

    -
    +

    nass_act_damp_ine_sim_tomo_rot.png

    -

    Figure 17: Position Error during tomography experiment - Rotations (png, pdf)

    +

    Figure 21: Position Error during tomography experiment - Rotations (png, pdf)

    -
    -

    4.3 Conclusion

    +
    +

    4.3 Conclusion

    @@ -1223,15 +1325,15 @@ Inertial Control:

    -
    -

    5 Comparison

    +
    +

    5 Comparison

    - +

    -
    -

    5.1 Load the plants

    +
    +

    5.1 Load the plants

    load('./active_damping/mat/plants.mat', 'G', 'G_iff', 'G_ine', 'G_dvf');
    @@ -1240,75 +1342,75 @@ Inertial Control:
     
    -
    -

    5.2 Sensitivity to Disturbance

    +
    +

    5.2 Sensitivity to Disturbance

    -
    +

    sensitivity_comp_ground_motion_z.png

    -

    Figure 18: caption (png, pdf)

    +

    Figure 22: caption (png, pdf)

    -
    +

    sensitivity_comp_direct_forces_z.png

    -

    Figure 19: caption (png, pdf)

    +

    Figure 23: caption (png, pdf)

    -
    +

    sensitivity_comp_spindle_z.png

    -

    Figure 20: caption (png, pdf)

    +

    Figure 24: caption (png, pdf)

    -
    +

    sensitivity_comp_ty_z.png

    -

    Figure 21: caption (png, pdf)

    +

    Figure 25: caption (png, pdf)

    -
    +

    sensitivity_comp_ty_x.png

    -

    Figure 22: caption (png, pdf)

    +

    Figure 26: caption (png, pdf)

    -
    -

    5.3 Damped Plant

    +
    +

    5.3 Damped Plant

    -
    +

    plant_comp_damping_z.png

    -

    Figure 23: Plant for the \(z\) direction for different active damping technique used (png, pdf)

    +

    Figure 27: Plant for the \(z\) direction for different active damping technique used (png, pdf)

    -
    +

    plant_comp_damping_x.png

    -

    Figure 24: Plant for the \(x\) direction for different active damping technique used (png, pdf)

    +

    Figure 28: Plant for the \(x\) direction for different active damping technique used (png, pdf)

    -
    +

    plant_comp_damping_coupling.png

    -

    Figure 25: Comparison of one off-diagonal plant for different damping technique applied (png, pdf)

    +

    Figure 29: Comparison of one off-diagonal plant for different damping technique applied (png, pdf)

    -
    -

    5.4 Tomography Experiment

    +
    +

    5.4 Tomography Experiment

    load('./active_damping/mat/tomo_exp.mat', 'En', 'En_iff', 'En_dvf', 'En_ine');
    @@ -1325,16 +1427,76 @@ rms(sqrt(En_iff(:, 1).^
     
    -
    -

    5.4.1 Frequency Domain

    +
    +

    5.4.1 Frequency Domain

    -
    Ts = t(1); % Sample Time for the Data [s]
    +
    Ts = t(2)-t(1); % Sample Time for the Data [s]
     
     n_av = 8;
     han_win = hanning(ceil(length(En(:, 1))/n_av));
     
    -[pdx, f] = pwelch(Ern(:, 1), han_win, [], [], 1/Ts);
    +[pxx,     f] = pwelch(En(:,     1), han_win, [], [], 1/Ts);
    +[pxx_ine, ~] = pwelch(En_ine(:, 1), han_win, [], [], 1/Ts);
    +[pxx_dvf, ~] = pwelch(En_dvf(:, 1), han_win, [], [], 1/Ts);
    +[pxx_iff, ~] = pwelch(En_iff(:, 1), han_win, [], [], 1/Ts);
    +
    +[pyy,     ~] = pwelch(En(:,     2), han_win, [], [], 1/Ts);
    +[pyy_ine, ~] = pwelch(En_ine(:, 2), han_win, [], [], 1/Ts);
    +[pyy_dvf, ~] = pwelch(En_dvf(:, 2), han_win, [], [], 1/Ts);
    +[pyy_iff, ~] = pwelch(En_iff(:, 2), han_win, [], [], 1/Ts);
    +
    +[pzz,     ~] = pwelch(En(:,     3), han_win, [], [], 1/Ts);
    +[pzz_ine, ~] = pwelch(En_ine(:, 3), han_win, [], [], 1/Ts);
    +[pzz_dvf, ~] = pwelch(En_dvf(:, 3), han_win, [], [], 1/Ts);
    +[pzz_iff, ~] = pwelch(En_iff(:, 3), han_win, [], [], 1/Ts);
    +
    +[prx,     ~] = pwelch(En(:,     4), han_win, [], [], 1/Ts);
    +[prx_ine, ~] = pwelch(En_ine(:, 4), han_win, [], [], 1/Ts);
    +[prx_dvf, ~] = pwelch(En_dvf(:, 4), han_win, [], [], 1/Ts);
    +[prx_iff, ~] = pwelch(En_iff(:, 4), han_win, [], [], 1/Ts);
    +
    +[pry,     ~] = pwelch(En(:,     5), han_win, [], [], 1/Ts);
    +[pry_ine, ~] = pwelch(En_ine(:, 5), han_win, [], [], 1/Ts);
    +[pry_dvf, ~] = pwelch(En_dvf(:, 5), han_win, [], [], 1/Ts);
    +[pry_iff, ~] = pwelch(En_iff(:, 5), han_win, [], [], 1/Ts);
    +
    +[prz,     ~] = pwelch(En(:,     6), han_win, [], [], 1/Ts);
    +[prz_ine, ~] = pwelch(En_ine(:, 6), han_win, [], [], 1/Ts);
    +[prz_dvf, ~] = pwelch(En_dvf(:, 6), han_win, [], [], 1/Ts);
    +[prz_iff, ~] = pwelch(En_iff(:, 6), han_win, [], [], 1/Ts);
    +
    +
    + +
    +
    figure;
    +hold on;
    +plot(f, prx_ine,    'DisplayName', 'Inertial')
    +plot(f, prx_dvf,    'DisplayName', 'DVF')
    +plot(f, prx_iff,    'DisplayName', 'IFF')
    +plot(f, prx, 'k--', 'DisplayName', 'Undamped')
    +hold off;
    +xlabel('Frequency [Hz]');
    +ylabel('Power Spectral Density [$m^2/Hz$]');
    +set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
    +legend('location', 'northeast');
    +xlim([1, 500]);
    +
    +
    + +
    +
    figure;
    +hold on;
    +plot(f, pxx_ine,    'DisplayName', 'Inertial')
    +plot(f, pxx_dvf,    'DisplayName', 'DVF')
    +plot(f, pxx_iff,    'DisplayName', 'IFF')
    +plot(f, pxx, 'k--', 'DisplayName', 'Undamped')
    +hold off;
    +xlabel('Frequency [Hz]');
    +ylabel('Power Spectral Density [$m^2/Hz$]');
    +set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
    +legend('location', 'northeast');
    +xlim([1, 500]);
     
    @@ -1342,15 +1504,15 @@ han_win = hanning(ceil(length(En(:, 1))
    -
    -

    6 Useful Functions

    +
    +

    6 Useful Functions

    -
    -

    6.1 prepareTomographyExperiment

    +
    +

    6.1 prepareTomographyExperiment

    - +

    @@ -1358,9 +1520,9 @@ This Matlab function is accessible h

    -
    -

    6.1.1 Function Description

    -
    +
    +

    Function Description

    +
    -
    -

    6.1.2 Optional Parameters

    -
    +
    +

    Optional Parameters

    +
    -
    -

    6.1.3 Initialize the Simulation

    -
    +
    +

    Initialize the Simulation

    +

    We initialize all the stages with the default parameters.

    @@ -1438,7 +1600,7 @@ save('./mat/controllers.mat',

    Author: Dehaeze Thomas

    -

    Created: 2020-01-15 mer. 16:22

    +

    Created: 2020-01-20 lun. 17:18

    diff --git a/active_damping/index.org b/active_damping/index.org index c027782..10605c9 100644 --- a/active_damping/index.org +++ b/active_damping/index.org @@ -265,7 +265,7 @@ And we save them for further analysis. end hold off; set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); - ylabel('Amplitude [(m/s)/N]'); set(gca, 'XTickLabel',[]); + ylabel('Amplitude [$\frac{m/s}{N}$]'); set(gca, 'XTickLabel',[]); ax2 = subplot(2, 1, 2); hold on; @@ -510,6 +510,63 @@ We save the controller for further analysis. save('./active_damping/mat/K_iff.mat', 'K_iff'); #+end_src +*** IFF with High Pass Filter +#+begin_src matlab + w_hpf = 2*pi*10; % Cut-off frequency for the high pass filter [rad/s] + w_lpf = 2*pi*200; % Cut-off frequency for the low pass filter [rad/s] + + K_iff = 2*pi*200/s * (s/w_hpf)/(s/w_hpf + 1) * 1/(s/w_lpf + 1); +#+end_src + +The corresponding loop gains are shown in figure [[fig:iff_hpf_open_loop]]. +#+begin_src matlab :exports none + freqs = logspace(0, 3, 1000); + + figure; + + ax1 = subplot(2, 1, 1); + hold on; + for i=1:6 + plot(freqs, abs(squeeze(freqresp(K_iff*G_iff(['Fnlm', num2str(i)], ['Fnl', num2str(i)]), freqs, 'Hz')))); + end + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Amplitude [N/N]'); set(gca, 'XTickLabel',[]); + + ax2 = subplot(2, 1, 2); + hold on; + for i=1:6 + plot(freqs, 180/pi*angle(squeeze(freqresp(K_iff*G_iff(['Fnlm', num2str(i)], ['Fnl', num2str(i)]), freqs, 'Hz')))); + end + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); + ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); + ylim([-180, 180]); + yticks([-180, -90, 0, 90, 180]); + + linkaxes([ax1,ax2],'x'); +#+end_src + +#+HEADER: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/iff_hpf_open_loop.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:iff_hpf_open_loop +#+CAPTION: Loop Gain for the Integral Force Feedback with an High pass filter ([[./figs/iff_hpf_open_loop.png][png]], [[./figs/iff_hpf_open_loop.pdf][pdf]]) +[[file:figs/iff_hpf_open_loop.png]] + +We create the diagonal controller and we add a minus sign as we have a positive +feedback architecture. +#+begin_src matlab + K_iff = -K_iff*eye(6); +#+end_src + +We save the controller for further analysis. +#+begin_src matlab + save('./active_damping/mat/K_iff_hpf.mat', 'K_iff'); +#+end_src + ** TODO Identification of the damped plant :noexport: *** Initialize the Simulation We initialize all the stages with the default parameters. @@ -768,7 +825,7 @@ However, it increases coupling at low frequency (figure [[fig:plant_iff_coupling [[file:figs/plant_iff_coupling.png]] ** Tomography Experiment -*** Initialize the Simulation +*** Simulation with IFF Controller We initialize elements for the tomography experiment. #+begin_src matlab prepareTomographyExperiment(); @@ -780,7 +837,6 @@ We set the IFF controller. save('./mat/controllers.mat', 'K_iff', '-append'); #+end_src -*** Simulation We change the simulation stop time. #+begin_src matlab load('mat/conf_simscape.mat'); @@ -799,29 +855,86 @@ Finally, we save the simulation results for further analysis save('./active_damping/mat/tomo_exp.mat', 'En_iff', 'Eg_iff', '-append'); #+end_src +*** Simulation with IFF Controller with added High Pass Filter +We initialize elements for the tomography experiment. +#+begin_src matlab + prepareTomographyExperiment(); +#+end_src + +We set the IFF controller with the High Pass Filter. +#+begin_src matlab + load('./active_damping/mat/K_iff_hpf.mat', 'K_iff'); + save('./mat/controllers.mat', 'K_iff', '-append'); +#+end_src + +We change the simulation stop time. +#+begin_src matlab + load('mat/conf_simscape.mat'); + set_param(conf_simscape, 'StopTime', '3'); +#+end_src + +And we simulate the system. +#+begin_src matlab + sim('sim_nass_active_damping'); +#+end_src + +Finally, we save the simulation results for further analysis +#+begin_src matlab + En_iff_hpf = En; + Eg_iff_hpf = Eg; + save('./active_damping/mat/tomo_exp.mat', 'En_iff_hpf', 'Eg_iff_hpf', '-append'); +#+end_src + *** Compare with Undamped system We load the results of tomography experiments. #+begin_src matlab - load('./active_damping/mat/tomo_exp.mat', 'En', 'En_iff'); -#+end_src - -#+begin_src matlab + load('./active_damping/mat/tomo_exp.mat', 'En', 'En_iff', 'En_iff_hpf'); t = linspace(0, 3, length(En(:,1))); #+end_src #+begin_src matlab :exports none figure; hold on; - plot(t, En(:,1), 'DisplayName', '$\epsilon_{x}$') - plot(t, En(:,2), 'DisplayName', '$\epsilon_{y}$') - plot(t, En(:,3), 'DisplayName', '$\epsilon_{z}$') - set(gca,'ColorOrderIndex',1); - plot(t, En_iff(:,1), '--', 'DisplayName', '$\epsilon_{x}$ - IFF') - plot(t, En_iff(:,2), '--', 'DisplayName', '$\epsilon_{y}$ - IFF') - plot(t, En_iff(:,3), '--', 'DisplayName', '$\epsilon_{z}$ - IFF') - hold off; + plot(En(:,1), En(:,2), 'DisplayName', '$\epsilon_{x,y}$ - OL') + plot(En_iff(:,1), En_iff(:,2), 'DisplayName', '$\epsilon_{x,y}$ - IFF') + plot(En_iff_hpf(:,1), En_iff_hpf(:,2), 'DisplayName', '$\epsilon_{x,y}$ - IFF + HPF') + xlabel('X Motion [m]'); ylabel('Y Motion [m]'); legend('location', 'northwest'); - xlabel('Time [s]'); ylabel('Position Error [m]'); +#+end_src + +#+HEADER: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/nass_act_damp_iff_sim_tomo_xy.pdf" :var figsize="small-normal" :post pdf2svg(file=*this*, ext="png") +<> +#+end_src + +#+NAME: fig:nass_act_damp_iff_sim_tomo_xy +#+CAPTION: Position Error during tomography experiment - XY Motion ([[./figs/nass_act_damp_iff_sim_tomo_xy.png][png]], [[./figs/nass_act_damp_iff_sim_tomo_xy.pdf][pdf]]) +[[file:figs/nass_act_damp_iff_sim_tomo_xy.png]] + +#+begin_src matlab :exports none + figure; + ax1 = subplot(3, 1, 1); + hold on; + plot(t, En(:,1), 'DisplayName', '$\epsilon_{x}$') + plot(t, En_iff(:,1), 'DisplayName', '$\epsilon_{x}$ - IFF') + plot(t, En_iff_hpf(:,1), 'DisplayName', '$\epsilon_{x}$ - IFF + HPF') + legend('location', 'southwest'); + + ax2 = subplot(3, 1, 2); + hold on; + plot(t, En(:,2), 'DisplayName', '$\epsilon_{y}$') + plot(t, En_iff(:,2), 'DisplayName', '$\epsilon_{y}$ - IFF') + plot(t, En_iff_hpf(:,2), 'DisplayName', '$\epsilon_{y}$ - IFF + HPF') + legend('location', 'southwest'); + ylabel('Position Error [m]'); + + ax3 = subplot(3, 1, 3); + hold on; + plot(t, En(:,3), 'DisplayName', '$\epsilon_{z}$') + plot(t, En_iff(:,3), 'DisplayName', '$\epsilon_{z}$ - IFF') + plot(t, En_iff_hpf(:,3), 'DisplayName', '$\epsilon_{z}$ - IFF + HPF') + legend('location', 'northwest'); + xlabel('Time [s]'); #+end_src #+HEADER: :tangle no :exports results :results none :noweb yes @@ -835,18 +948,30 @@ We load the results of tomography experiments. #+begin_src matlab :exports none figure; + ax1 = subplot(3, 1, 1); hold on; plot(t, En(:,4), 'DisplayName', '$\epsilon_{\theta_x}$') + plot(t, En_iff(:,4), 'DisplayName', '$\epsilon_{\theta_x}$ - IFF') + plot(t, En_iff_hpf(:,4), 'DisplayName', '$\epsilon_{\theta_x}$ - IFF + HPF') + legend('location', 'northwest'); + + ax2 = subplot(3, 1, 2); + hold on; plot(t, En(:,5), 'DisplayName', '$\epsilon_{\theta_y}$') + plot(t, En_iff(:,5), 'DisplayName', '$\epsilon_{\theta_y}$ - IFF') + plot(t, En_iff_hpf(:,5), 'DisplayName', '$\epsilon_{\theta_y}$ - IFF + HPF') + legend('location', 'southwest'); + ylabel('Position Error [rad]'); + + ax3 = subplot(3, 1, 3); + hold on; plot(t, En(:,6), 'DisplayName', '$\epsilon_{\theta_z}$') - set(gca,'ColorOrderIndex',1); - plot(t, En_iff(:,4), '--', 'DisplayName', '$\epsilon_{\theta_x}$ - IFF') - plot(t, En_iff(:,5), '--', 'DisplayName', '$\epsilon_{\theta_y}$ - IFF') - plot(t, En_iff(:,6), '--', 'DisplayName', '$\epsilon_{\theta_z}$ - IFF') - hold off; - xlim([0.5,inf]); + plot(t, En_iff(:,6), 'DisplayName', '$\epsilon_{\theta_z}$ - IFF') + plot(t, En_iff_hpf(:,6), 'DisplayName', '$\epsilon_{\theta_z}$ - IFF + HPF') legend(); - xlabel('Time [s]'); ylabel('Position Error [rad]'); + xlabel('Time [s]'); + + linkaxes([ax1,ax2,ax3],'x'); #+end_src #+HEADER: :tangle no :exports results :results none :noweb yes @@ -1261,16 +1386,42 @@ We load the results of tomography experiments. #+begin_src matlab :exports none figure; hold on; - plot(t, En(:,1), 'DisplayName', '$\epsilon_{x}$') - plot(t, En(:,2), 'DisplayName', '$\epsilon_{y}$') - plot(t, En(:,3), 'DisplayName', '$\epsilon_{z}$') - set(gca,'ColorOrderIndex',1); - plot(t, En_dvf(:,1), '--', 'DisplayName', '$\epsilon_{x}$ - DVF') - plot(t, En_dvf(:,2), '--', 'DisplayName', '$\epsilon_{y}$ - DVF') - plot(t, En_dvf(:,3), '--', 'DisplayName', '$\epsilon_{z}$ - DVF') - hold off; + plot(En(:,1), En(:,2), 'DisplayName', '$\epsilon_{x,y}$ - OL') + plot(En_dvf(:,1), En_dvf(:,2), 'DisplayName', '$\epsilon_{x,y}$ - DVF') + xlabel('X Motion [m]'); ylabel('Y Motion [m]'); legend(); - xlabel('Time [s]'); ylabel('Position Error [m]'); +#+end_src + +#+HEADER: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/nass_act_damp_dvf_sim_tomo_xy.pdf" :var figsize="small-normal" :post pdf2svg(file=*this*, ext="png") +<> +#+end_src + +#+NAME: fig:nass_act_damp_dvf_sim_tomo_xy +#+CAPTION: Position Error during tomography experiment - XY Motion ([[./figs/nass_act_damp_dvf_sim_tomo_xy.png][png]], [[./figs/nass_act_damp_dvf_sim_tomo_xy.pdf][pdf]]) +[[file:figs/nass_act_damp_dvf_sim_tomo_xy.png]] + +#+begin_src matlab :exports none + figure; + ax1 = subplot(3, 1, 1); + hold on; + plot(t, En(:,1), 'DisplayName', '$\epsilon_{x}$') + plot(t, En_dvf(:,1), 'DisplayName', '$\epsilon_{x}$ - DVF') + legend(); + + ax2 = subplot(3, 1, 2); + hold on; + plot(t, En(:,2), 'DisplayName', '$\epsilon_{y}$') + plot(t, En_dvf(:,2), 'DisplayName', '$\epsilon_{y}$ - DVF') + legend(); + ylabel('Position Error [m]'); + + ax3 = subplot(3, 1, 3); + hold on; + plot(t, En(:,3), 'DisplayName', '$\epsilon_{z}$') + plot(t, En_dvf(:,3), 'DisplayName', '$\epsilon_{z}$ - DVF') + legend(); + xlabel('Time [s]'); #+end_src #+HEADER: :tangle no :exports results :results none :noweb yes @@ -1284,18 +1435,27 @@ We load the results of tomography experiments. #+begin_src matlab :exports none figure; + ax1 = subplot(3, 1, 1); hold on; plot(t, En(:,4), 'DisplayName', '$\epsilon_{\theta_x}$') - plot(t, En(:,5), 'DisplayName', '$\epsilon_{\theta_y}$') - plot(t, En(:,6), 'DisplayName', '$\epsilon_{\theta_z}$') - set(gca,'ColorOrderIndex',1); - plot(t, En_dvf(:,4), '--', 'DisplayName', '$\epsilon_{\theta_x}$ - DVF') - plot(t, En_dvf(:,5), '--', 'DisplayName', '$\epsilon_{\theta_y}$ - DVF') - plot(t, En_dvf(:,6), '--', 'DisplayName', '$\epsilon_{\theta_z}$ - DVF') - hold off; - xlim([0.5,inf]); + plot(t, En_dvf(:,4), 'DisplayName', '$\epsilon_{\theta_x}$ - DVF') legend(); - xlabel('Time [s]'); ylabel('Position Error [rad]'); + + ax2 = subplot(3, 1, 2); + hold on; + plot(t, En(:,5), 'DisplayName', '$\epsilon_{\theta_y}$') + plot(t, En_dvf(:,5), 'DisplayName', '$\epsilon_{\theta_y}$ - DVF') + legend(); + ylabel('Position Error [rad]'); + + ax3 = subplot(3, 1, 3); + hold on; + plot(t, En(:,6), 'DisplayName', '$\epsilon_{\theta_z}$') + plot(t, En_dvf(:,6), 'DisplayName', '$\epsilon_{\theta_z}$ - DVF') + legend(); + xlabel('Time [s]'); + + linkaxes([ax1,ax2,ax3],'x'); #+end_src #+HEADER: :tangle no :exports results :results none :noweb yes @@ -1336,7 +1496,7 @@ Direct Velocity Feedback: #+end_note ** Introduction :ignore: -In Inertial Control, a feedback is applied between the measured *absolute* velocity of the platform to the actuator force input. +In Inertial Control, a feedback is applied between the measured *absolute* motion (velocity or acceleration) of the platform to the actuator force input. ** Matlab Init :noexport:ignore: #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) @@ -1380,7 +1540,7 @@ Let's look at the transfer function from actuator forces in the nano-hexapod to end hold off; set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); - ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]); + ylabel('Amplitude [$\frac{m/s^2}{N}$]'); set(gca, 'XTickLabel',[]); ax2 = subplot(2, 1, 2); hold on; @@ -1409,7 +1569,7 @@ Let's look at the transfer function from actuator forces in the nano-hexapod to The controller is defined below and the obtained loop gain is shown in figure [[fig:ine_open_loop_gain]]. #+begin_src matlab - K_ine = 1e3/(1+s/(2*pi*100)); + K_ine = 1e4/(1+s/(2*pi*100)); #+end_src #+begin_src matlab :exports none @@ -1688,19 +1848,46 @@ We load the results of tomography experiments. #+begin_src matlab :exports none figure; hold on; - plot(t, En(:,1), 'DisplayName', '$\epsilon_{x}$') - plot(t, En(:,2), 'DisplayName', '$\epsilon_{y}$') - plot(t, En(:,3), 'DisplayName', '$\epsilon_{z}$') - set(gca,'ColorOrderIndex',1); - plot(t, En_ine(:,1), '--', 'DisplayName', '$\epsilon_{x}$ - Inertial') - plot(t, En_ine(:,2), '--', 'DisplayName', '$\epsilon_{y}$ - Inertial') - plot(t, En_ine(:,3), '--', 'DisplayName', '$\epsilon_{z}$ - Inertial') - hold off; + plot(En(:,1), En(:,2), 'DisplayName', '$\epsilon_{x,y}$ - OL') + plot(En_ine(:,1), En_ine(:,2), 'DisplayName', '$\epsilon_{x,y}$ - Inertial') + xlabel('X Motion [m]'); ylabel('Y Motion [m]'); legend(); #+end_src #+HEADER: :tangle no :exports results :results none :noweb yes -#+begin_src matlab :var filepath="figs/nass_act_damp_ine_sim_tomo_trans.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") +#+begin_src matlab :var filepath="figs/nass_act_damp_ine_sim_tomo_xy.pdf" :var figsize="small-normal" :post pdf2svg(file=*this*, ext="png") +<> +#+end_src + +#+NAME: fig:nass_act_damp_ine_sim_tomo_xy +#+CAPTION: Position Error during tomography experiment - XY Motion ([[./figs/nass_act_damp_ine_sim_tomo_xy.png][png]], [[./figs/nass_act_damp_ine_sim_tomo_xy.pdf][pdf]]) +[[file:figs/nass_act_damp_ine_sim_tomo_xy.png]] + +#+begin_src matlab :exports none + figure; + ax1 = subplot(3, 1, 1); + hold on; + plot(t, En(:,1), 'DisplayName', '$\epsilon_{x}$') + plot(t, En_ine(:,1), 'DisplayName', '$\epsilon_{x}$ - Inertial') + legend(); + + ax2 = subplot(3, 1, 2); + hold on; + plot(t, En(:,2), 'DisplayName', '$\epsilon_{y}$') + plot(t, En_ine(:,2), 'DisplayName', '$\epsilon_{y}$ - Inertial') + legend(); + ylabel('Position Error [m]'); + + ax3 = subplot(3, 1, 3); + hold on; + plot(t, En(:,3), 'DisplayName', '$\epsilon_{z}$') + plot(t, En_ine(:,3), 'DisplayName', '$\epsilon_{z}$ - Inertial') + legend(); + xlabel('Time [s]'); +#+end_src + +#+HEADER: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/nass_act_damp_ine_sim_tomo_trans.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -1710,21 +1897,31 @@ We load the results of tomography experiments. #+begin_src matlab :exports none figure; + ax1 = subplot(3, 1, 1); hold on; plot(t, En(:,4), 'DisplayName', '$\epsilon_{\theta_x}$') - plot(t, En(:,5), 'DisplayName', '$\epsilon_{\theta_y}$') - plot(t, En(:,6), 'DisplayName', '$\epsilon_{\theta_z}$') - set(gca,'ColorOrderIndex',1); - plot(t, En_ine(:,4), '--', 'DisplayName', '$\epsilon_{\theta_x}$ - Inertial') - plot(t, En_ine(:,5), '--', 'DisplayName', '$\epsilon_{\theta_y}$ - Inertial') - plot(t, En_ine(:,6), '--', 'DisplayName', '$\epsilon_{\theta_z}$ - Inertial') - hold off; - xlim([0.5,inf]); + plot(t, En_ine(:,4), 'DisplayName', '$\epsilon_{\theta_x}$ - Inertial') legend(); + + ax2 = subplot(3, 1, 2); + hold on; + plot(t, En(:,5), 'DisplayName', '$\epsilon_{\theta_y}$') + plot(t, En_ine(:,5), 'DisplayName', '$\epsilon_{\theta_y}$ - Inertial') + legend(); + ylabel('Position Error [rad]'); + + ax3 = subplot(3, 1, 3); + hold on; + plot(t, En(:,6), 'DisplayName', '$\epsilon_{\theta_z}$') + plot(t, En_ine(:,6), 'DisplayName', '$\epsilon_{\theta_z}$ - Inertial') + legend(); + xlabel('Time [s]'); + + linkaxes([ax1,ax2,ax3],'x'); #+end_src #+HEADER: :tangle no :exports results :results none :noweb yes -#+begin_src matlab :var filepath="figs/nass_act_damp_ine_sim_tomo_rot.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") +#+begin_src matlab :var filepath="figs/nass_act_damp_ine_sim_tomo_rot.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -2017,12 +2214,70 @@ Inertial Control: *** Frequency Domain #+begin_src matlab - Ts = t(1); % Sample Time for the Data [s] + Ts = t(2)-t(1); % Sample Time for the Data [s] n_av = 8; han_win = hanning(ceil(length(En(:, 1))/n_av)); - [pdx, f] = pwelch(Ern(:, 1), han_win, [], [], 1/Ts); + [pxx, f] = pwelch(En(:, 1), han_win, [], [], 1/Ts); + [pxx_ine, ~] = pwelch(En_ine(:, 1), han_win, [], [], 1/Ts); + [pxx_dvf, ~] = pwelch(En_dvf(:, 1), han_win, [], [], 1/Ts); + [pxx_iff, ~] = pwelch(En_iff(:, 1), han_win, [], [], 1/Ts); + + [pyy, ~] = pwelch(En(:, 2), han_win, [], [], 1/Ts); + [pyy_ine, ~] = pwelch(En_ine(:, 2), han_win, [], [], 1/Ts); + [pyy_dvf, ~] = pwelch(En_dvf(:, 2), han_win, [], [], 1/Ts); + [pyy_iff, ~] = pwelch(En_iff(:, 2), han_win, [], [], 1/Ts); + + [pzz, ~] = pwelch(En(:, 3), han_win, [], [], 1/Ts); + [pzz_ine, ~] = pwelch(En_ine(:, 3), han_win, [], [], 1/Ts); + [pzz_dvf, ~] = pwelch(En_dvf(:, 3), han_win, [], [], 1/Ts); + [pzz_iff, ~] = pwelch(En_iff(:, 3), han_win, [], [], 1/Ts); + + [prx, ~] = pwelch(En(:, 4), han_win, [], [], 1/Ts); + [prx_ine, ~] = pwelch(En_ine(:, 4), han_win, [], [], 1/Ts); + [prx_dvf, ~] = pwelch(En_dvf(:, 4), han_win, [], [], 1/Ts); + [prx_iff, ~] = pwelch(En_iff(:, 4), han_win, [], [], 1/Ts); + + [pry, ~] = pwelch(En(:, 5), han_win, [], [], 1/Ts); + [pry_ine, ~] = pwelch(En_ine(:, 5), han_win, [], [], 1/Ts); + [pry_dvf, ~] = pwelch(En_dvf(:, 5), han_win, [], [], 1/Ts); + [pry_iff, ~] = pwelch(En_iff(:, 5), han_win, [], [], 1/Ts); + + [prz, ~] = pwelch(En(:, 6), han_win, [], [], 1/Ts); + [prz_ine, ~] = pwelch(En_ine(:, 6), han_win, [], [], 1/Ts); + [prz_dvf, ~] = pwelch(En_dvf(:, 6), han_win, [], [], 1/Ts); + [prz_iff, ~] = pwelch(En_iff(:, 6), han_win, [], [], 1/Ts); +#+end_src + +#+begin_src matlab + figure; + hold on; + plot(f, prx_ine, 'DisplayName', 'Inertial') + plot(f, prx_dvf, 'DisplayName', 'DVF') + plot(f, prx_iff, 'DisplayName', 'IFF') + plot(f, prx, 'k--', 'DisplayName', 'Undamped') + hold off; + xlabel('Frequency [Hz]'); + ylabel('Power Spectral Density [$m^2/Hz$]'); + set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); + legend('location', 'northeast'); + xlim([1, 500]); +#+end_src + +#+begin_src matlab + figure; + hold on; + plot(f, pxx_ine, 'DisplayName', 'Inertial') + plot(f, pxx_dvf, 'DisplayName', 'DVF') + plot(f, pxx_iff, 'DisplayName', 'IFF') + plot(f, pxx, 'k--', 'DisplayName', 'Undamped') + hold off; + xlabel('Frequency [Hz]'); + ylabel('Power Spectral Density [$m^2/Hz$]'); + set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); + legend('location', 'northeast'); + xlim([1, 500]); #+end_src * Useful Functions @@ -2036,11 +2291,18 @@ Inertial Control: This Matlab function is accessible [[file:src/prepareTomographyExperiment.m][here]]. *** Function Description +:PROPERTIES: +:UNNUMBERED: t +:END: + #+begin_src matlab function [] = prepareTomographyExperiment(args) #+end_src *** Optional Parameters +:PROPERTIES: +:UNNUMBERED: t +:END: #+begin_src matlab arguments args.nass_actuator char {mustBeMember(args.nass_actuator,{'piezo', 'lorentz'})} = 'piezo' @@ -2050,6 +2312,9 @@ This Matlab function is accessible [[file:src/prepareTomographyExperiment.m][her #+end_src *** Initialize the Simulation +:PROPERTIES: +:UNNUMBERED: t +:END: We initialize all the stages with the default parameters. #+begin_src matlab initializeGround(); diff --git a/active_damping/mat/K_dvf.mat b/active_damping/mat/K_dvf.mat new file mode 100644 index 0000000..7435fbd Binary files /dev/null and b/active_damping/mat/K_dvf.mat differ diff --git a/active_damping/mat/K_iff.mat b/active_damping/mat/K_iff.mat new file mode 100644 index 0000000..4d863b1 Binary files /dev/null and b/active_damping/mat/K_iff.mat differ diff --git a/active_damping/mat/K_iff_hpf.mat b/active_damping/mat/K_iff_hpf.mat new file mode 100644 index 0000000..2b3b7fe Binary files /dev/null and b/active_damping/mat/K_iff_hpf.mat differ diff --git a/active_damping/mat/K_ine.mat b/active_damping/mat/K_ine.mat new file mode 100644 index 0000000..94e4a1f Binary files /dev/null and b/active_damping/mat/K_ine.mat differ diff --git a/active_damping/mat/K_rmc.mat b/active_damping/mat/K_rmc.mat new file mode 100644 index 0000000..46d5cb8 Binary files /dev/null and b/active_damping/mat/K_rmc.mat differ diff --git a/active_damping/mat/plants.mat b/active_damping/mat/plants.mat new file mode 100644 index 0000000..8f46dca Binary files /dev/null and b/active_damping/mat/plants.mat differ diff --git a/active_damping/mat/tomo_exp.mat b/active_damping/mat/tomo_exp.mat new file mode 100644 index 0000000..62d073b Binary files /dev/null and b/active_damping/mat/tomo_exp.mat differ diff --git a/active_damping/mat/undamped_plants.mat b/active_damping/mat/undamped_plants.mat new file mode 100644 index 0000000..812b563 Binary files /dev/null and b/active_damping/mat/undamped_plants.mat differ diff --git a/active_damping/matlab/sim_nass_active_damping.slx b/active_damping/matlab/sim_nass_active_damping.slx index f2eaf42..540382c 100644 Binary files a/active_damping/matlab/sim_nass_active_damping.slx and b/active_damping/matlab/sim_nass_active_damping.slx differ diff --git a/figs/iff_hpf_open_loop.png b/figs/iff_hpf_open_loop.png new file mode 100644 index 0000000..53942a1 Binary files /dev/null and b/figs/iff_hpf_open_loop.png differ diff --git a/figs/ine_open_loop_gain.png b/figs/ine_open_loop_gain.png index fef2c82..33e4927 100644 Binary files a/figs/ine_open_loop_gain.png and b/figs/ine_open_loop_gain.png differ diff --git a/figs/ine_plant.png b/figs/ine_plant.png index 9f8fcc8..147fdde 100644 Binary files a/figs/ine_plant.png and b/figs/ine_plant.png differ diff --git a/figs/nass_act_damp_dvf_sim_tomo_rot.png b/figs/nass_act_damp_dvf_sim_tomo_rot.png index e4400a4..f376be7 100644 Binary files a/figs/nass_act_damp_dvf_sim_tomo_rot.png and b/figs/nass_act_damp_dvf_sim_tomo_rot.png differ diff --git a/figs/nass_act_damp_dvf_sim_tomo_trans.png b/figs/nass_act_damp_dvf_sim_tomo_trans.png index b93493e..b4a11cb 100644 Binary files a/figs/nass_act_damp_dvf_sim_tomo_trans.png and b/figs/nass_act_damp_dvf_sim_tomo_trans.png differ diff --git a/figs/nass_act_damp_dvf_sim_tomo_xy.png b/figs/nass_act_damp_dvf_sim_tomo_xy.png new file mode 100644 index 0000000..c2591d5 Binary files /dev/null and b/figs/nass_act_damp_dvf_sim_tomo_xy.png differ diff --git a/figs/nass_act_damp_iff_sim_tomo_rot.png b/figs/nass_act_damp_iff_sim_tomo_rot.png index 336f3f6..a4268b4 100644 Binary files a/figs/nass_act_damp_iff_sim_tomo_rot.png and b/figs/nass_act_damp_iff_sim_tomo_rot.png differ diff --git a/figs/nass_act_damp_iff_sim_tomo_trans.png b/figs/nass_act_damp_iff_sim_tomo_trans.png index 0c524ec..13c3569 100644 Binary files a/figs/nass_act_damp_iff_sim_tomo_trans.png and b/figs/nass_act_damp_iff_sim_tomo_trans.png differ diff --git a/figs/nass_act_damp_iff_sim_tomo_xy.png b/figs/nass_act_damp_iff_sim_tomo_xy.png new file mode 100644 index 0000000..1bcb5fe Binary files /dev/null and b/figs/nass_act_damp_iff_sim_tomo_xy.png differ diff --git a/figs/nass_act_damp_ine_sim_tomo_rot.png b/figs/nass_act_damp_ine_sim_tomo_rot.png index c32e705..fde92f3 100644 Binary files a/figs/nass_act_damp_ine_sim_tomo_rot.png and b/figs/nass_act_damp_ine_sim_tomo_rot.png differ diff --git a/figs/nass_act_damp_ine_sim_tomo_trans.png b/figs/nass_act_damp_ine_sim_tomo_trans.png index 5ed71b4..fb61553 100644 Binary files a/figs/nass_act_damp_ine_sim_tomo_trans.png and b/figs/nass_act_damp_ine_sim_tomo_trans.png differ diff --git a/figs/nass_act_damp_ine_sim_tomo_xy.png b/figs/nass_act_damp_ine_sim_tomo_xy.png new file mode 100644 index 0000000..1ba19b8 Binary files /dev/null and b/figs/nass_act_damp_ine_sim_tomo_xy.png differ diff --git a/figs/nass_active_damping_dvf_plant.png b/figs/nass_active_damping_dvf_plant.png new file mode 100644 index 0000000..8fb858e Binary files /dev/null and b/figs/nass_active_damping_dvf_plant.png differ diff --git a/figs/nass_active_damping_iff_plant.png b/figs/nass_active_damping_iff_plant.png index 9f34324..5595801 100644 Binary files a/figs/nass_active_damping_iff_plant.png and b/figs/nass_active_damping_iff_plant.png differ diff --git a/figs/nass_active_damping_inertial_plant.png b/figs/nass_active_damping_inertial_plant.png index 481d8e9..e32ad7a 100644 Binary files a/figs/nass_active_damping_inertial_plant.png and b/figs/nass_active_damping_inertial_plant.png differ diff --git a/figs/plant_G_cart.png b/figs/plant_G_cart.png new file mode 100644 index 0000000..c2aea36 Binary files /dev/null and b/figs/plant_G_cart.png differ diff --git a/mat/controllers.mat b/mat/controllers.mat index 53615cb..ffcfa92 100644 Binary files a/mat/controllers.mat and b/mat/controllers.mat differ diff --git a/mat/nass_disturbances.mat b/mat/nass_disturbances.mat index 2fbbb4b..28de333 100644 Binary files a/mat/nass_disturbances.mat and b/mat/nass_disturbances.mat differ diff --git a/mat/nass_references.mat b/mat/nass_references.mat index a6c8e1f..cb9a5f8 100644 Binary files a/mat/nass_references.mat and b/mat/nass_references.mat differ diff --git a/mat/stages.mat b/mat/stages.mat index 3a798fa..168163e 100644 Binary files a/mat/stages.mat and b/mat/stages.mat differ