Add compliance analysis of the micro-station
This commit is contained in:
parent
d5ecb2706a
commit
23e7129687
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 200 KiB After Width: | Height: | Size: 119 KiB |
BIN
docs/figs/compliance_micro_station.pdf
Normal file
BIN
docs/figs/compliance_micro_station.pdf
Normal file
Binary file not shown.
BIN
docs/figs/compliance_micro_station.png
Normal file
BIN
docs/figs/compliance_micro_station.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 109 KiB |
Binary file not shown.
@ -80,10 +80,6 @@ Some of the springs and dampers values can be estimated from the joints/stages s
|
||||
#+end_src
|
||||
|
||||
** Prepare the Simulation
|
||||
#+begin_src matlab
|
||||
open('nass_model.slx')
|
||||
#+end_src
|
||||
|
||||
We load the configuration.
|
||||
#+begin_src matlab
|
||||
load('mat/conf_simulink.mat');
|
||||
@ -393,6 +389,96 @@ We then compare the measurements with the identified transfer functions using th
|
||||
[[file:figs/identification_comp_top_stages.png]]
|
||||
|
||||
|
||||
* Obtained Compliance of the Micro-Station
|
||||
** 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
|
||||
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('type', 'compliance');
|
||||
#+end_src
|
||||
|
||||
We put nothing on top of the micro-hexapod.
|
||||
#+begin_src matlab
|
||||
initializeAxisc('type', 'none');
|
||||
initializeMirror('type', 'none');
|
||||
initializeNanoHexapod('type', 'none');
|
||||
initializeSample('type', 'none');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
initializeReferences();
|
||||
initializeDisturbances();
|
||||
initializeController();
|
||||
initializeSimscapeConfiguration();
|
||||
initializeLoggingConfiguration();
|
||||
#+end_src
|
||||
|
||||
And we identify the dynamics from forces/torques applied on the micro-hexapod top platform to the motion of the micro-hexapod top platform at the same point.
|
||||
|
||||
The obtained compliance is shown in Figure [[fig:compliance_micro_station]].
|
||||
#+begin_src matlab
|
||||
%% Name of the Simulink File
|
||||
mdl = 'nass_model';
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Micro Hexapod/Compliance/Fm'], 1, 'openinput'); io_i = io_i + 1; % Direct Forces/Torques applied on the micro-hexapod top platform
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Micro Hexapod/Compliance/Dm'], 1, 'output'); io_i = io_i + 1; % Absolute displacement of the top platform
|
||||
|
||||
%% Run the linearization
|
||||
Gm = linearize(mdl, io, 0);
|
||||
Gm.InputName = {'Fmx', 'Fmy', 'Fmz', 'Mmx', 'Mmy', 'Mmz'};
|
||||
Gm.OutputName = {'Dx', 'Dy', 'Dz', 'Drx', 'Dry', 'Drz'};
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
labels = {'$D_x/F_{x}$', '$D_y/F_{y}$', '$D_z/F_{z}$', '$R_{x}/M_{x}$', '$R_{y}/M_{y}$', '$R_{R}/M_{z}$'};
|
||||
|
||||
freqs = logspace(1, 3, 1000);
|
||||
|
||||
figure;
|
||||
|
||||
hold on;
|
||||
for i = 1:6
|
||||
plot(freqs, abs(squeeze(freqresp(Gm(i, i), freqs, 'Hz'))), 'DisplayName', labels{i});
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Frequency [Hz]');
|
||||
ylabel('Compliance');
|
||||
legend('location', 'northwest');
|
||||
#+end_src
|
||||
|
||||
#+header: :tangle no :exports results :results none :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/compliance_micro_station.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+name: fig:compliance_micro_station
|
||||
#+caption: Obtained compliance of the Micro-Station ([[./figs/compliance_micro_station.png][png]], [[./figs/compliance_micro_station.pdf][pdf]])
|
||||
[[file:figs/compliance_micro_station.png]]
|
||||
|
||||
* Conclusion
|
||||
#+begin_important
|
||||
For such a complex system, we believe that the Simscape Model represents the dynamics of the system with enough fidelity.
|
||||
|
@ -859,7 +859,7 @@ The =rz= structure is saved.
|
||||
:END:
|
||||
#+begin_src matlab
|
||||
arguments
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis', 'init'})} = 'flexible'
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis', 'init', 'compliance'})} = 'flexible'
|
||||
% initializeFramesPositions
|
||||
args.H (1,1) double {mustBeNumeric, mustBePositive} = 350e-3
|
||||
args.MO_B (1,1) double {mustBeNumeric} = 270e-3
|
||||
@ -938,6 +938,8 @@ Equilibrium position of the each joint.
|
||||
micro_hexapod.type = 3;
|
||||
case 'init'
|
||||
micro_hexapod.type = 4;
|
||||
case 'compliance'
|
||||
micro_hexapod.type = 5;
|
||||
end
|
||||
#+end_src
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
function [micro_hexapod] = initializeMicroHexapod(args)
|
||||
|
||||
arguments
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis', 'init'})} = 'flexible'
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis', 'init', 'compliance'})} = 'flexible'
|
||||
% initializeFramesPositions
|
||||
args.H (1,1) double {mustBeNumeric, mustBePositive} = 350e-3
|
||||
args.MO_B (1,1) double {mustBeNumeric} = 270e-3
|
||||
@ -65,6 +65,8 @@ switch args.type
|
||||
micro_hexapod.type = 3;
|
||||
case 'init'
|
||||
micro_hexapod.type = 4;
|
||||
case 'compliance'
|
||||
micro_hexapod.type = 5;
|
||||
end
|
||||
|
||||
save('./mat/stages.mat', 'micro_hexapod', '-append');
|
||||
|
Loading…
Reference in New Issue
Block a user