diff --git a/docs/amplified_piezoelectric_stack.html b/docs/amplified_piezoelectric_stack.html index 892d882..bbaebc0 100644 --- a/docs/amplified_piezoelectric_stack.html +++ b/docs/amplified_piezoelectric_stack.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Amplified Piezoelectric Stack Actuator @@ -36,25 +36,26 @@ @@ -131,8 +132,8 @@ The parameters are shown in the table below.

1 Simplified Model

-
-

1.1 Parameters

+
+

1.1 Parameters

m = 1; % [kg]
@@ -162,8 +163,8 @@ IFF Controller:
 
-
-

1.2 Identification

+
+

1.2 Identification

Identification in open-loop. @@ -218,8 +219,8 @@ Giff.OutputName = {'Fs', 'x1'};

-
-

1.3 Root Locus

+
+

1.3 Root Locus

@@ -235,8 +236,8 @@ Giff.OutputName = {'Fs', 'x1'};

2 Rotating X-Y platform

-
-

2.1 Parameters

+
+

2.1 Parameters

m = 1; % [kg]
@@ -263,8 +264,8 @@ h = 0.2; % [m]
 
-
-

2.2 Identification

+
+

2.2 Identification

Rotating speed in rad/s: @@ -313,8 +314,8 @@ end

-
-

2.3 Root Locus

+
+

2.3 Root Locus

@@ -412,8 +413,8 @@ We set the stiffness of the payload fixation:
-
-

3.2 Identification

+
+

3.2 Identification

K = tf(zeros(6));
@@ -479,12 +480,57 @@ Finally, we use the following controller for the Decentralized Direct Velocity F
 
 

3.4 Effect of the Low Authority Control on the Primary Plant

+
+ +
+

amplified_piezo_iff_plant_damped_X.png +

+

Figure 10: Primary plant in the task space with (dashed) and without (solid) IFF

+
+ + + +
+

amplified_piezo_iff_damped_plant_L.png +

+

Figure 11: Primary plant in the space of the legs with (dashed) and without (solid) IFF

+
+ +
+

amplified_piezo_iff_damped_coupling_X.png +

+

Figure 12: Coupling in the primary plant in the task with (dashed) and without (solid) IFF

+
+ + + +
+

amplified_piezo_iff_damped_coupling_L.png +

+

Figure 13: Coupling in the primary plant in the space of the legs with (dashed) and without (solid) IFF

+
+
+
+ +
+

3.5 Effect of the Low Authority Control on the Sensibility to Disturbances

+
+ +
+

amplified_piezo_iff_disturbances.png +

+

Figure 14: Norm of the transfer function from vertical disturbances to vertical position error with (dashed) and without (solid) Integral Force Feedback applied

+
+
+ +
+

Author: Dehaeze Thomas

-

Created: 2020-05-20 mer. 16:41

+

Created: 2020-05-20 mer. 16:56

diff --git a/docs/figs/amplified_piezo_iff_damped_coupling_L.pdf b/docs/figs/amplified_piezo_iff_damped_coupling_L.pdf new file mode 100644 index 0000000..56ba2f6 Binary files /dev/null and b/docs/figs/amplified_piezo_iff_damped_coupling_L.pdf differ diff --git a/docs/figs/amplified_piezo_iff_damped_coupling_L.png b/docs/figs/amplified_piezo_iff_damped_coupling_L.png new file mode 100644 index 0000000..bc7867a Binary files /dev/null and b/docs/figs/amplified_piezo_iff_damped_coupling_L.png differ diff --git a/docs/figs/amplified_piezo_iff_damped_coupling_X.pdf b/docs/figs/amplified_piezo_iff_damped_coupling_X.pdf new file mode 100644 index 0000000..5e03915 Binary files /dev/null and b/docs/figs/amplified_piezo_iff_damped_coupling_X.pdf differ diff --git a/docs/figs/amplified_piezo_iff_damped_coupling_X.png b/docs/figs/amplified_piezo_iff_damped_coupling_X.png new file mode 100644 index 0000000..761a07f Binary files /dev/null and b/docs/figs/amplified_piezo_iff_damped_coupling_X.png differ diff --git a/docs/figs/amplified_piezo_iff_disturbances.pdf b/docs/figs/amplified_piezo_iff_disturbances.pdf new file mode 100644 index 0000000..73fc94d Binary files /dev/null and b/docs/figs/amplified_piezo_iff_disturbances.pdf differ diff --git a/docs/figs/amplified_piezo_iff_disturbances.png b/docs/figs/amplified_piezo_iff_disturbances.png new file mode 100644 index 0000000..29930ba Binary files /dev/null and b/docs/figs/amplified_piezo_iff_disturbances.png differ diff --git a/mat/nass_references.mat b/mat/nass_references.mat index c3ff126..674521d 100644 Binary files a/mat/nass_references.mat and b/mat/nass_references.mat differ diff --git a/matlab/nano_hexapod_strut.slx b/matlab/nano_hexapod_strut.slx index d470242..8ce0f10 100644 Binary files a/matlab/nano_hexapod_strut.slx and b/matlab/nano_hexapod_strut.slx differ diff --git a/matlab/nass_model.slx b/matlab/nass_model.slx index 5da2c10..0779b62 100644 Binary files a/matlab/nass_model.slx and b/matlab/nass_model.slx differ diff --git a/org/amplified_piezoelectric_stack.org b/org/amplified_piezoelectric_stack.org index c0ace07..b1c4192 100644 --- a/org/amplified_piezoelectric_stack.org +++ b/org/amplified_piezoelectric_stack.org @@ -657,8 +657,8 @@ Finally, we use the following controller for the Decentralized Direct Velocity F *** Identification of the undamped plant :ignore: #+begin_src matlab :exports none - Kdvf_backup = Kdvf; - Kdvf = tf(zeros(6)); + Kiff_backup = Kiff; + Kiff = tf(zeros(6)); #+end_src #+begin_src matlab :exports none @@ -687,7 +687,7 @@ Finally, we use the following controller for the Decentralized Direct Velocity F #+end_src #+begin_src matlab :exports none - Kdvf = Kdvf_backup; + Kiff = Kiff_backup; #+end_src *** Identification of the damped plant :ignore: @@ -790,6 +790,16 @@ Finally, we use the following controller for the Decentralized Direct Velocity F linkaxes([ax1,ax2,ax3,ax4],'x'); #+end_src +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/amplified_piezo_iff_plant_damped_X.pdf', 'width', 'full', 'height', 'full'); +#+end_src + +#+name: fig:amplified_piezo_iff_plant_damped_X +#+caption: Primary plant in the task space with (dashed) and without (solid) IFF +#+RESULTS: +[[file:figs/amplified_piezo_iff_plant_damped_X.png]] + + #+begin_src matlab :exports none freqs = logspace(0, 3, 5000); @@ -827,6 +837,16 @@ Finally, we use the following controller for the Decentralized Direct Velocity F linkaxes([ax1,ax2],'x'); #+end_src +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/amplified_piezo_iff_damped_plant_L.pdf', 'width', 'full', 'height', 'full'); +#+end_src + +#+name: fig:amplified_piezo_iff_damped_plant_L +#+caption: Primary plant in the space of the legs with (dashed) and without (solid) IFF +#+RESULTS: +[[file:figs/amplified_piezo_iff_damped_plant_L.png]] + + *** Effect of the Damping on the coupling dynamics :ignore: #+begin_src matlab :exports none freqs = logspace(0, 3, 1000); @@ -849,6 +869,16 @@ Finally, we use the following controller for the Decentralized Direct Velocity F ylim([1e-12, inf]); #+end_src +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/amplified_piezo_iff_damped_coupling_X.pdf', 'width', 'full', 'height', 'full'); +#+end_src + +#+name: fig:amplified_piezo_iff_damped_coupling_X +#+caption: Coupling in the primary plant in the task with (dashed) and without (solid) IFF +#+RESULTS: +[[file:figs/amplified_piezo_iff_damped_coupling_X.png]] + + #+begin_src matlab :exports none freqs = logspace(0, 3, 1000); @@ -869,3 +899,145 @@ Finally, we use the following controller for the Decentralized Direct Velocity F ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]); ylim([1e-9, inf]); #+end_src +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/amplified_piezo_iff_damped_coupling_L.pdf', 'width', 'full', 'height', 'full'); +#+end_src + +#+name: fig:amplified_piezo_iff_damped_coupling_L +#+caption: Coupling in the primary plant in the space of the legs with (dashed) and without (solid) IFF +#+RESULTS: +[[file:figs/amplified_piezo_iff_damped_coupling_L.png]] + +** Effect of the Low Authority Control on the Sensibility to Disturbances +*** Introduction :ignore: + +*** Identification :ignore: +#+begin_src matlab :exports none + %% Name of the Simulink File + mdl = 'nass_model'; + + %% Micro-Hexapod + clear io; io_i = 1; + io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'Dwz'); io_i = io_i + 1; % Z Ground motion + io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'Fty_z'); io_i = io_i + 1; % Parasitic force Ty - Z + io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'Frz_z'); io_i = io_i + 1; % Parasitic force Rz - Z + io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'Fd'); io_i = io_i + 1; % Direct forces + + io(io_i) = linio([mdl, '/Tracking Error'], 1, 'output', [], 'En'); io_i = io_i + 1; % Position Errror +#+end_src + +#+begin_src matlab :exports none + Kiff_backup = Kiff; + Kiff = tf(zeros(6)); +#+end_src + +#+begin_src matlab :exports none + Gd = {zeros(length(Ms), 1)}; + + for i = 1:length(Ms) + initializeSample('mass', Ms(i), 'freq', sqrt(Kp/Ms(i))/2/pi*ones(6,1)); + initializeReferences('Rz_type', 'rotating-not-filtered', 'Rz_period', Ms(i)); + + %% Run the linearization + G = linearize(mdl, io); + G.InputName = {'Dwz', 'Fty_z', 'Frz_z', 'Fdx', 'Fdy', 'Fdz', 'Mdx', 'Mdy', 'Mdz'}; + G.OutputName = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'}; + + Gd(i) = {G}; + end +#+end_src + +#+begin_src matlab :exports none + Kiff = Kiff_backup; +#+end_src + +#+begin_src matlab :exports none + Gd_iff = {zeros(length(Ms), 1)}; + + for i = 1:length(Ms) + initializeSample('mass', Ms(i), 'freq', sqrt(Kp/Ms(i))/2/pi*ones(6,1)); + initializeReferences('Rz_type', 'rotating-not-filtered', 'Rz_period', Ms(i)); + + %% Run the linearization + G = linearize(mdl, io); + G.InputName = {'Dwz', 'Fty_z', 'Frz_z', 'Fdx', 'Fdy', 'Fdz', 'Mdx', 'Mdy', 'Mdz'}; + G.OutputName = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'}; + + Gd_iff(i) = {G}; + end +#+end_src + +*** Results :ignore: +#+begin_src matlab :exports none + freqs = logspace(0, 3, 5000); + + figure; + + subplot(2, 2, 1); + title('$D_{w,z}$ to $E_z$'); + hold on; + for i = 1:length(Ms) + set(gca,'ColorOrderIndex',i); + plot(freqs, abs(squeeze(freqresp(Gd{i}('Ez', 'Dwz'), freqs, 'Hz'))), ... + 'DisplayName', sprintf('$m_p = %.0f [kg]$', Ms(i))); + set(gca,'ColorOrderIndex',i); + plot(freqs, abs(squeeze(freqresp(Gd_iff{i}('Ez', 'Dwz'), freqs, 'Hz'))), '--', ... + 'HandleVisibility', 'off'); + end + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Amplitude [m/m]'); set(gca, 'XTickLabel',[]); + legend('location', 'southeast'); + + subplot(2, 2, 2); + title('$F_{dz}$ to $E_z$'); + hold on; + for i = 1:length(Ms) + set(gca,'ColorOrderIndex',i); + plot(freqs, abs(squeeze(freqresp(Gd{i}('Ez', 'Fdz'), freqs, 'Hz')))); + set(gca,'ColorOrderIndex',i); + plot(freqs, abs(squeeze(freqresp(Gd_iff{i}('Ez', 'Fdz'), freqs, 'Hz'))), '--'); + end + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + set(gca, 'XTickLabel',[]); ylabel('Amplitude [m/N]'); + + subplot(2, 2, 3); + title('$F_{T_y,z}$ to $E_z$'); + hold on; + for i = 1:length(Ms) + set(gca,'ColorOrderIndex',i); + plot(freqs, abs(squeeze(freqresp(Gd{i}('Ez', 'Fty_z'), freqs, 'Hz')))); + set(gca,'ColorOrderIndex',i); + plot(freqs, abs(squeeze(freqresp(Gd_iff{i}('Ez', 'Fty_z'), freqs, 'Hz'))), '--'); + end + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + xlabel('Frequency [Hz]'); ylabel('Amplitude [m/N]'); + + subplot(2, 2, 4); + title('$F_{R_z,z}$ to $E_z$'); + hold on; + for i = 1:length(Ms) + set(gca,'ColorOrderIndex',i); + plot(freqs, abs(squeeze(freqresp(Gd{i}('Ez', 'Frz_z'), freqs, 'Hz')))); + set(gca,'ColorOrderIndex',i); + plot(freqs, abs(squeeze(freqresp(Gd_iff{i}('Ez', 'Frz_z'), freqs, 'Hz'))), '--'); + end + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + xlabel('Frequency [Hz]'); ylabel('Amplitude [m/N]'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/amplified_piezo_iff_disturbances.pdf', 'width', 'full', 'height', 'full'); +#+end_src + +#+name: fig:amplified_piezo_iff_disturbances +#+caption: Norm of the transfer function from vertical disturbances to vertical position error with (dashed) and without (solid) Integral Force Feedback applied +#+RESULTS: +[[file:figs/amplified_piezo_iff_disturbances.png]] + +*** Conclusion :ignore: +#+begin_important +#+end_important