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">
- +-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:
@@ -433,12 +434,12 @@ The performance of this undamped system will be compared with the damped system
We initialize all the stages with the default parameters.
@@ -489,8 +490,8 @@ save('./mat/controllers.mat',
-
First, we identify the dynamics of the system using the
We initialize elements for the tomography experiment.
@@ -608,8 +609,8 @@ Finally, we save the simulation results for further analysis
We load the results of tomography experiments.
@@ -621,14 +622,14 @@ t = linspace(0, 3, length(En(:,1)));
@@ -655,12 +656,12 @@ Integral Force Feedback is applied on the simscape model.
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).
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.
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.
+The corresponding loop gains are shown in figure 8.
+
+We create the diagonal controller and we add a minus sign as we have a positive
+feedback architecture.
+
+We save the controller for further analysis.
+
We initialize elements for the tomography experiment.
@@ -753,12 +794,7 @@ We set the IFF controller.
save('./mat/controllers.mat', 'K_iff', '-append');
We change the simulation stop time.
+We initialize elements for the tomography experiment.
+
+We set the IFF controller with the High Pass Filter.
+
+We change the simulation stop time.
+
+And we simulate the system.
+
+Finally, we save the simulation results for further analysis
+
We load the results of tomography experiments.
@@ -839,11 +927,11 @@ Integral Force Feedback:
@@ -857,12 +945,12 @@ The actuator displacement can be measured with a capacitive sensor for instance.
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).
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.
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.
We initialize elements for the tomography experiment.
@@ -958,8 +1046,8 @@ save('./mat/controllers.mat',
-
We change the simulation stop time.
@@ -990,8 +1078,8 @@ save('./active_damping/mat/tomo_exp.mat',
We load the results of tomography experiments.
@@ -1003,24 +1091,31 @@ t = linspace(0, 3, length(En(:,1)));
@@ -1035,11 +1130,11 @@ Direct Velocity Feedback:
@@ -1048,16 +1143,16 @@ All the files (data and Matlab scripts) are accessible he
-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.
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).
-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.
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.
We initialize elements for the tomography experiment.
@@ -1149,8 +1244,8 @@ save('./mat/controllers.mat',
-
We change the simulation stop time.
@@ -1181,8 +1276,8 @@ save('./active_damping/mat/tomo_exp.mat',
We load the results of tomography experiments.
@@ -1194,24 +1289,31 @@ t = linspace(0, 3, length(En_ine(:,1)));
@@ -1223,15 +1325,15 @@ Inertial Control:
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)
@@ -1358,9 +1520,9 @@ This Matlab function is accessible h
We initialize all the stages with the default parameters.
Created: 2020-01-15 mer. 16:22 Created: 2020-01-20 lun. 17:181.1.2 Identification
+1.1.2 Identification
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
1.2 Tomography Experiment
+1.2 Tomography Experiment
1.2.1 Simulation
+1.2.1 Simulation
1.2.2 Results
+1.2.2 Results
2 Integral Force Feedback
+2 Integral Force Feedback
2.1 Control Design
+2.1 Control Design
2.1.1 Plant
+2.1.1 Plant
2.1.2 Control Design
+2.1.2 Control Design
2.1.3 Diagonal Controller
+2.1.3 Diagonal Controller
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
+K_iff = -K_iff*eye(6);
+
+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
2.2.2 Simulation
-2.2.3 Compare with Undamped system
+2.2.2 Simulation with IFF Controller with added High Pass Filter
+prepareTomographyExperiment();
+
+load('./active_damping/mat/K_iff_hpf.mat', 'K_iff');
+save('./mat/controllers.mat', 'K_iff', '-append');
+
+load('mat/conf_simscape.mat');
+set_param(conf_simscape, 'StopTime', '3');
+
+sim('sim_nass_active_damping');
+
+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
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)));
2.3 Conclusion
+2.3 Conclusion
3 Direct Velocity Feedback
+3 Direct Velocity Feedback
3.1 Control Design
+3.1 Control Design
3.1.1 Plant
+3.1.1 Plant
3.1.2 Control Design
+3.1.2 Control Design
3.1.3 Diagonal Controller
+3.1.3 Diagonal Controller
3.2 Tomography Experiment
+3.2 Tomography Experiment
3.2.1 Initialize the Simulation
+3.2.1 Initialize the Simulation
3.2.2 Simulation
+3.2.2 Simulation
3.2.3 Compare with Undamped system
+3.2.3 Compare with Undamped system
3.3 Conclusion
+3.3 Conclusion
4 Inertial Control
+4 Inertial Control
4.1 Control Design
+4.1 Control Design
4.1.1 Plant
+4.1.1 Plant
4.1.2 Control Design
+4.1.2 Control Design
K_ine = 1e3/(1+s/(2*pi*100));
+
K_ine = 1e4/(1+s/(2*pi*100));
4.1.3 Diagonal Controller
+4.1.3 Diagonal Controller
4.2 Tomography Experiment
+4.2 Tomography Experiment
4.2.1 Initialize the Simulation
+4.2.1 Initialize the Simulation
4.2.2 Simulation
+4.2.2 Simulation
4.2.3 Compare with Undamped system
+4.2.3 Compare with Undamped system
4.3 Conclusion
+4.3 Conclusion
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
5.3 Damped Plant
+5.3 Damped Plant
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]);
6 Useful Functions
+6 Useful Functions
6.1 prepareTomographyExperiment
+6.1 prepareTomographyExperiment
6.1.1 Function Description
-Function Description
+function [] = prepareTomographyExperiment(args)
@@ -1368,9 +1530,9 @@ This Matlab function is accessible h
6.1.2 Optional Parameters
-Optional Parameters
+arguments
args.nass_actuator char {mustBeMember(args.nass_actuator,{'piezo', 'lorentz'})} = 'piezo'
@@ -1382,9 +1544,9 @@ This Matlab function is accessible h
6.1.3 Initialize the Simulation
-Initialize the Simulation
+