Compliance comparison VC and PZ
This commit is contained in:
parent
ab62eabf1f
commit
d5ecb2706a
BIN
docs/figs/compliance_comp_pz_vc_cascade.pdf
Normal file
BIN
docs/figs/compliance_comp_pz_vc_cascade.pdf
Normal file
Binary file not shown.
BIN
docs/figs/compliance_comp_pz_vc_cascade.png
Normal file
BIN
docs/figs/compliance_comp_pz_vc_cascade.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 200 KiB |
@ -1087,6 +1087,64 @@ Finally with the primary controller
|
|||||||
#+caption: Evolution of the NASS compliance with each control loop added ([[./figs/compliance_evolution_vc_cascade_control.png][png]], [[./figs/compliance_evolution_vc_cascade_control.pdf][pdf]])
|
#+caption: Evolution of the NASS compliance with each control loop added ([[./figs/compliance_evolution_vc_cascade_control.png][png]], [[./figs/compliance_evolution_vc_cascade_control.pdf][pdf]])
|
||||||
[[file:figs/compliance_evolution_vc_cascade_control.png]]
|
[[file:figs/compliance_evolution_vc_cascade_control.png]]
|
||||||
|
|
||||||
|
*** Comparison with Piezo
|
||||||
|
Let's initialize a nano-hexapod with piezoelectric actuators.
|
||||||
|
#+begin_src matlab
|
||||||
|
initializeNanoHexapod('actuator', 'piezo');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
We don't use any controller.
|
||||||
|
#+begin_src matlab
|
||||||
|
Kp = tf(zeros(6));
|
||||||
|
Kl = tf(zeros(6));
|
||||||
|
Kiff = tf(zeros(6));
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
%% Run the linearization
|
||||||
|
Gc_pz = linearize(mdl, io, 0);
|
||||||
|
Gc_pz.InputName = {'Fdx', 'Fdy', 'Fdz', 'Mdx', 'Mdy', 'Mdz'};
|
||||||
|
Gc_pz.OutputName = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'};
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
freqs = logspace(-1, 3, 1000);
|
||||||
|
|
||||||
|
figure;
|
||||||
|
|
||||||
|
ax1 = subplot(1, 2, 1);
|
||||||
|
hold on;
|
||||||
|
plot(freqs, abs(squeeze(freqresp(Gc_pri(1, 1), freqs, 'Hz'))), 'DisplayName', 'PRI');
|
||||||
|
plot(freqs, abs(squeeze(freqresp(Gc_pz( 1, 1), freqs, 'Hz'))), 'DisplayName', 'PZ - OL');
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
ylabel('Compliance [m/N]');
|
||||||
|
xlabel('Frequency [Hz]');
|
||||||
|
legend('location', 'northeast');
|
||||||
|
|
||||||
|
ax2 = subplot(1, 2, 2);
|
||||||
|
hold on;
|
||||||
|
plot(freqs, abs(squeeze(freqresp(Gc_pri(4, 4), freqs, 'Hz'))), 'DisplayName', 'PRI');
|
||||||
|
plot(freqs, abs(squeeze(freqresp(Gc_pz( 4, 4), freqs, 'Hz'))), 'DisplayName', 'PZ - OL');
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
ylabel('Compliance [$\frac{rad}{Nm}$]');
|
||||||
|
xlabel('Frequency [Hz]');
|
||||||
|
legend('location', 'northeast');
|
||||||
|
|
||||||
|
linkaxes([ax1,ax2],'x');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+header: :tangle no :exports results :results none :noweb yes
|
||||||
|
#+begin_src matlab :var filepath="figs/compliance_comp_pz_vc_cascade.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||||
|
<<plt-matlab>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+name: fig:compliance_comp_pz_vc_cascade
|
||||||
|
#+caption: Comparison of the compliance using the open-loop piezo-nano hexapod and the voice coil nano-hexapod with the cascade control topology ([[./figs/compliance_comp_pz_vc_cascade.png][png]], [[./figs/compliance_comp_pz_vc_cascade.pdf][pdf]])
|
||||||
|
[[file:figs/compliance_comp_pz_vc_cascade.png]]
|
||||||
|
|
||||||
|
|
||||||
** Robustness to Payload Variability
|
** Robustness to Payload Variability
|
||||||
*** Initialization
|
*** Initialization
|
||||||
Let's change the payload mass, and see if the controller design for a payload mass of 1 still gives good performance.
|
Let's change the payload mass, and see if the controller design for a payload mass of 1 still gives good performance.
|
||||||
|
Loading…
Reference in New Issue
Block a user