Add analysis on reference mirror's resonances
This commit is contained in:
parent
3665313d14
commit
94eb5e16a7
BIN
docs/figs/effect_mirror_flexibility_fz_dz.pdf
Normal file
BIN
docs/figs/effect_mirror_flexibility_fz_dz.pdf
Normal file
Binary file not shown.
BIN
docs/figs/effect_mirror_flexibility_fz_dz.png
Normal file
BIN
docs/figs/effect_mirror_flexibility_fz_dz.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 105 KiB |
BIN
mat/optimal_stiffness_control.mat
Normal file
BIN
mat/optimal_stiffness_control.mat
Normal file
Binary file not shown.
172
org/metrology_frame.org
Normal file
172
org/metrology_frame.org
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
#+TITLE: Study of the Metrology Frame
|
||||||
|
:DRAWER:
|
||||||
|
#+STARTUP: overview
|
||||||
|
|
||||||
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
|
#+PROPERTY: header-args:matlab+ :results none
|
||||||
|
#+PROPERTY: header-args:matlab+ :exports both
|
||||||
|
#+PROPERTY: header-args:matlab+ :eval no-export
|
||||||
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
#+PROPERTY: header-args:matlab+ :tangle no
|
||||||
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
|
|
||||||
|
#+PROPERTY: header-args:shell :eval no-export
|
||||||
|
|
||||||
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}")
|
||||||
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||||
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||||
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||||
|
#+PROPERTY: header-args:latex+ :results file raw replace
|
||||||
|
#+PROPERTY: header-args:latex+ :buffer no
|
||||||
|
#+PROPERTY: header-args:latex+ :eval no-export
|
||||||
|
#+PROPERTY: header-args:latex+ :exports results
|
||||||
|
#+PROPERTY: header-args:latex+ :mkdirp yes
|
||||||
|
#+PROPERTY: header-args:latex+ :output-dir figs
|
||||||
|
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
|
||||||
|
:END:
|
||||||
|
|
||||||
|
* Flexibility of the reference mirror
|
||||||
|
** Introduction :ignore:
|
||||||
|
In this section we wish to see how a flexibility between the nano-hexapod's top platform and the reference mirror will change the plant dynamics and limits the performance.
|
||||||
|
|
||||||
|
First, we identify the dynamics of the system for an infinitely rigid reference mirror, and then for a reference mirror with a limited resonance frequency.
|
||||||
|
|
||||||
|
We will compare the two dynamics and conclude.
|
||||||
|
|
||||||
|
** Matlab Init :noexport:ignore:
|
||||||
|
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||||
|
<<matlab-dir>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none :results silent :noweb yes
|
||||||
|
<<matlab-init>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :tangle no
|
||||||
|
simulinkproject('../');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
load('mat/conf_simulink.mat');
|
||||||
|
open('nass_model.slx')
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Initialization
|
||||||
|
We initialize all the stages with the default parameters.
|
||||||
|
#+begin_src matlab
|
||||||
|
initializeGround();
|
||||||
|
initializeGranite();
|
||||||
|
initializeTy();
|
||||||
|
initializeRy();
|
||||||
|
initializeRz();
|
||||||
|
initializeMicroHexapod();
|
||||||
|
initializeAxisc();
|
||||||
|
initializeNanoHexapod();
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
We first consider a rigid Sample to simplify the analysis.
|
||||||
|
#+begin_src matlab
|
||||||
|
initializeSample('type', 'rigid');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
initializeReferences();
|
||||||
|
initializeSimscapeConfiguration();
|
||||||
|
initializeDisturbances('enable', false);
|
||||||
|
initializeController('type', 'open-loop');
|
||||||
|
initializeLoggingConfiguration('log', 'none');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
%% Name of the Simulink File
|
||||||
|
mdl = 'nass_model';
|
||||||
|
|
||||||
|
%% Input/Output definition
|
||||||
|
clear io; io_i = 1;
|
||||||
|
io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs
|
||||||
|
io(io_i) = linio([mdl, '/Tracking Error'], 1, 'output', [], 'En'); io_i = io_i + 1; % Position Errror
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Rigid fixation between the metrology frame and the nano-hexapod
|
||||||
|
Let's first consider a rigid reference mirror and we identify the dynamics of the system.
|
||||||
|
#+begin_src matlab
|
||||||
|
initializeMirror('type', 'rigid');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
%% Run the linearization
|
||||||
|
G = linearize(mdl, io);
|
||||||
|
G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'};
|
||||||
|
G.OutputName = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'};
|
||||||
|
|
||||||
|
load('mat/stages.mat', 'nano_hexapod');
|
||||||
|
Gx = -G*inv(nano_hexapod.J');
|
||||||
|
Gx.InputName = {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'};
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Flexible fixation between the metrology frame and the nano-hexapod
|
||||||
|
We now initialize a reference mirror with a main resonance frequency at $200\ [Hz]$.
|
||||||
|
#+begin_src matlab
|
||||||
|
initializeMirror('type', 'flexible', 'freq', 200*ones(6,1));
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And we re identify the plant dynamics.
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
%% Run the linearization
|
||||||
|
G = linearize(mdl, io);
|
||||||
|
G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'};
|
||||||
|
G.OutputName = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'};
|
||||||
|
|
||||||
|
load('mat/stages.mat', 'nano_hexapod');
|
||||||
|
Gxb = -G*inv(nano_hexapod.J');
|
||||||
|
Gxb.InputName = {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'};
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Comparison
|
||||||
|
The obtained transfer functions from $\mathcal{F}_z$ to $\mathcal{X}_z$ when considering a rigid reference mirror and a flexible one are shown in Figure [[fig:effect_mirror_flexibility_fz_dz]].
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
freqs = logspace(0, 3, 1000);
|
||||||
|
|
||||||
|
figure;
|
||||||
|
|
||||||
|
ax1 = subplot(2, 1, 1);
|
||||||
|
hold on;
|
||||||
|
plot(freqs, abs(squeeze(freqresp(Gx( 3, 3), freqs, 'Hz'))), 'k-');
|
||||||
|
plot(freqs, abs(squeeze(freqresp(Gxb(3, 3), freqs, 'Hz'))), 'k--');
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
|
||||||
|
|
||||||
|
ax2 = subplot(2, 1, 2);
|
||||||
|
hold on;
|
||||||
|
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gx( 3, 3), freqs, 'Hz')))), 'k-', 'DisplayName', 'Rigid Mirror');
|
||||||
|
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gxb(3, 3), freqs, 'Hz')))), 'k--', 'DisplayName', 'Flexible Mirror');
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||||
|
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
|
||||||
|
ylim([-360, 0]);
|
||||||
|
yticks([-360:90:360]);
|
||||||
|
legend();
|
||||||
|
|
||||||
|
linkaxes([ax1,ax2],'x');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
|
exportFig('figs/effect_mirror_flexibility_fz_dz.pdf', 'width', 'full', 'height', 'full')
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+name: fig:effect_mirror_flexibility_fz_dz
|
||||||
|
#+caption: Effect of the mirror flexibility on the transfer function from $\mathcal{F}_z$ to $\mathcal{X}_z$
|
||||||
|
#+RESULTS:
|
||||||
|
[[file:figs/effect_mirror_flexibility_fz_dz.png]]
|
||||||
|
|
||||||
|
** Conclusion
|
||||||
|
#+begin_important
|
||||||
|
A flexibility between the nano-hexapod top platform and the reference mirror will appear in the plant as two complex conjugate poles at the frequency of the resonance of the mirror on top of the nano-hexapod.
|
||||||
|
This induces 180 degrees of phase drop on the plant and will limit the attainable controller bandwidth.
|
||||||
|
|
||||||
|
This phase drop appears whatever the nano-hexapod stiffness.
|
||||||
|
Thus, care should be taken when designing the fixation of the reference mirror on top of the nano-hexapod.
|
||||||
|
#+end_important
|
@ -112,6 +112,10 @@ We set the references that corresponds to a tomography experiment.
|
|||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
save('./mat/optimal_stiffness_control.mat', 'Gm_iff');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** Controller Design
|
** Controller Design
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
freqs = logspace(-1, 3, 1000);
|
freqs = logspace(-1, 3, 1000);
|
||||||
|
Loading…
Reference in New Issue
Block a user