Add modal-analysis type to all stages
This commit is contained in:
@@ -136,7 +136,6 @@ save('./mat/id_micro_station.mat', 'G_ms');
|
||||
|
||||
** Compare with the measurements
|
||||
|
||||
|
||||
* Modal Analysis of the Micro-Station :noexport:
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
@@ -256,7 +255,7 @@ Then, the solid bodies are connected with springs and dampers.
|
||||
Some of the springs and dampers values can be estimated from the joints/stages specifications, however, we here prefer to tune these values based on the measurements.
|
||||
|
||||
* Compare with measurements at the CoM of each element
|
||||
** Introduction :ignore:
|
||||
** Introduction :ignore:
|
||||
[[file:../../meas/modal-analysis/index.org][here]]
|
||||
|
||||
** Matlab Init :noexport:ignore:
|
||||
@@ -274,7 +273,7 @@ Some of the springs and dampers values can be estimated from the joints/stages s
|
||||
|
||||
** Prepare the Simulation
|
||||
#+begin_src matlab
|
||||
open('identification/matlab/sim_micro_station_com.slx')
|
||||
open('nass_model.slx')
|
||||
#+end_src
|
||||
|
||||
We load the configuration.
|
||||
@@ -289,23 +288,31 @@ We set a small =StopTime=.
|
||||
|
||||
We initialize all the stages.
|
||||
#+begin_src matlab
|
||||
initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
initializeNanoHexapod('actuator', 'piezo');
|
||||
initializeSample('mass', 50);
|
||||
initializeGround( 'type', 'rigid');
|
||||
initializeGranite( 'type', 'modal-analysis');
|
||||
initializeTy( 'type', 'modal-analysis');
|
||||
initializeRy( 'type', 'modal-analysis');
|
||||
initializeRz( 'type', 'modal-analysis');
|
||||
initializeMicroHexapod('type', 'flexible');
|
||||
initializeAxisc( 'type', 'modal-analysis');
|
||||
|
||||
initializeMirror( 'type', 'none');
|
||||
initializeNanoHexapod( 'type', 'none');
|
||||
initializeSample( 'type', 'none');
|
||||
|
||||
initializeController( 'type', 'open-loop');
|
||||
|
||||
initializeLoggingConfiguration('log', 'none');
|
||||
|
||||
initializeReferences();
|
||||
initializeDisturbances('enable', false);
|
||||
#+end_src
|
||||
|
||||
** Estimate the position of the CoM of each solid and compare with the one took for the Measurement Analysis
|
||||
Thanks to the [[https://fr.mathworks.com/help/physmod/sm/ref/inertiasensor.html][Inertia Sensor]] simscape block, it is possible to estimate the position of the Center of Mass of a solid body with respect to a defined frame.
|
||||
|
||||
#+begin_src matlab
|
||||
sim('sim_micro_station_com')
|
||||
sim('nass_model')
|
||||
#+end_src
|
||||
|
||||
The results are shown in the table [[tab:com_simscape]].
|
||||
@@ -395,40 +402,38 @@ Then, we use the obtained results to add a =rigidTransform= block in order to cr
|
||||
We now use a new Simscape Model where 6DoF inertial sensors are located at the Center of Mass of each solid body.
|
||||
|
||||
#+begin_src matlab
|
||||
load('mat/solids_com.mat', 'granite_bot_com', 'granite_top_com', 'ty_com', 'ry_com', 'rz_com', 'hexa_com');
|
||||
% load('mat/solids_com.mat', 'granite_bot_com', 'granite_top_com', 'ty_com', 'ry_com', 'rz_com', 'hexa_com');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
open('identification/matlab/sim_micro_station_modal_analysis_com.slx')
|
||||
open('nass_model.slx')
|
||||
#+end_src
|
||||
|
||||
We use the =linearize= function in order to estimate the dynamics from forces applied on the Translation stage at the same position used for the real modal analysis to the inertial sensors.
|
||||
|
||||
#+begin_src matlab
|
||||
%% Options for Linearized
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
|
||||
%% Name of the Simulink File
|
||||
mdl = 'sim_micro_station_modal_analysis_com';
|
||||
#+end_src
|
||||
mdl = 'nass_model';
|
||||
|
||||
#+begin_src matlab
|
||||
%% Micro-Hexapod
|
||||
% Input/Output definition
|
||||
io(1) = linio([mdl, '/F_hammer'],1,'openinput');
|
||||
io(2) = linio([mdl, '/acc_gtop'],1,'output');
|
||||
io(3) = linio([mdl, '/acc_ty'],1,'output');
|
||||
io(4) = linio([mdl, '/acc_ry'],1,'output');
|
||||
io(5) = linio([mdl, '/acc_rz'],1,'output');
|
||||
io(6) = linio([mdl, '/acc_hexa'],1,'output');
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Translation Stage/Modal Analysis/F_hammer'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Granite/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Translation Stage/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Tilt Stage/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Spindle/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/CoM Alignement System/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
% Run the linearization
|
||||
G_ms = linearize(mdl, io, 0);
|
||||
|
||||
% Input/Output names
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
G_ms.InputName = {'Fx', 'Fy', 'Fz'};
|
||||
G_ms.OutputName = {'gtop_x', 'gtop_y', 'gtop_z', 'gtop_rx', 'gtop_ry', 'gtop_rz', ...
|
||||
'ty_x', 'ty_y', 'ty_z', 'ty_rx', 'ty_ry', 'ty_rz', ...
|
||||
|
Reference in New Issue
Block a user