Remove model name

This commit is contained in:
Thomas Dehaeze 2020-02-18 13:58:27 +01:00
parent 87bdd8f0e2
commit 56e8a120fa
4 changed files with 46 additions and 56 deletions

View File

@ -72,9 +72,8 @@ The document in organized as follow:
* Simscape Model * Simscape Model
<<sec:simscape_model>> <<sec:simscape_model>>
The simulink file to do tomography experiments is =sim_nano_station_tomo.slx=.
#+begin_src matlab #+begin_src matlab
open('experiment_tomography/matlab/sim_nano_station_tomo.slx') open('nass_model.slx');
#+end_src #+end_src
We load the shared simulink configuration and we set the =StopTime=. We load the shared simulink configuration and we set the =StopTime=.
@ -122,7 +121,7 @@ And we initialize the disturbances to be equal to zero.
We simulate the model. We simulate the model.
#+begin_src matlab #+begin_src matlab
sim('sim_nano_station_tomo'); sim('nass_model');
#+end_src #+end_src
And we save the obtained data. And we save the obtained data.
@ -232,7 +231,7 @@ We now activate the disturbances.
We simulate the model. We simulate the model.
#+begin_src matlab #+begin_src matlab
sim('sim_nano_station_tomo'); sim('nass_model');
#+end_src #+end_src
And we save the obtained data. And we save the obtained data.
@ -356,7 +355,7 @@ And we initialize the disturbances to zero.
We simulate the model. We simulate the model.
#+begin_src matlab #+begin_src matlab
sim('sim_nano_station_tomo'); sim('nass_model');
#+end_src #+end_src
And we save the obtained data. And we save the obtained data.
@ -484,7 +483,7 @@ And we initialize the disturbances to zero.
We simulate the model. We simulate the model.
#+begin_src matlab #+begin_src matlab
sim('sim_nano_station_tomo'); sim('nass_model');
#+end_src #+end_src
And we save the obtained data. And we save the obtained data.

View File

@ -7,9 +7,8 @@ s = zpk('s');
% Simscape Model % Simscape Model
% <<sec:simscape_model>> % <<sec:simscape_model>>
% The simulink file to do tomography experiments is =sim_nano_station_tomo.slx=.
open('experiment_tomography/matlab/sim_nano_station_tomo.slx') open('nass_model.slx');
@ -30,34 +29,33 @@ initializeRz();
initializeMicroHexapod(); initializeMicroHexapod();
initializeAxisc(); initializeAxisc();
initializeMirror(); initializeMirror();
initializeNanoHexapod(struct('actuator', 'piezo')); initializeNanoHexapod('actuator', 'piezo');
initializeSample(struct('mass', 1)); initializeSample('mass', 1);
% We initialize the reference path for all the stages. % We initialize the reference path for all the stages.
% All stage is set to its zero position except the Spindle which is rotating at 60rpm. % All stage is set to its zero position except the Spindle which is rotating at 60rpm.
initializeReferences(struct('Rz_type', 'rotating', 'Rz_period', 1)); initializeReferences('Rz_type', 'rotating', 'Rz_period', 1);
% Simulation Setup % Simulation Setup
% And we initialize the disturbances to be equal to zero. % And we initialize the disturbances to be equal to zero.
opts = struct(... initializeDisturbances(...
'Dwx', false, ... % Ground Motion - X direction 'Dwx', false, ... % Ground Motion - X direction
'Dwy', false, ... % Ground Motion - Y direction 'Dwy', false, ... % Ground Motion - Y direction
'Dwz', false, ... % Ground Motion - Z direction 'Dwz', false, ... % Ground Motion - Z direction
'Fty_x', false, ... % Translation Stage - X direction 'Fty_x', false, ... % Translation Stage - X direction
'Fty_z', false, ... % Translation Stage - Z direction 'Fty_z', false, ... % Translation Stage - Z direction
'Frz_z', false ... % Spindle - Z direction 'Frz_z', false ... % Spindle - Z direction
); );
initDisturbances(opts);
% We simulate the model. % We simulate the model.
sim('sim_nano_station_tomo'); sim('nass_model');
@ -96,7 +94,7 @@ plot(t, Edz, 'DisplayName', '$\epsilon_{z}$')
legend('location', 'northeast'); legend('location', 'northeast');
linkaxes([ax1,ax2,ax3],'x'); linkaxes([ax1,ax2,ax3],'x');
xlim([1, inf]); xlim([2, inf]);
@ -121,26 +119,25 @@ plot(t, Erz, 'DisplayName', '$\epsilon_{\theta z}$')
legend('location', 'northeast'); legend('location', 'northeast');
linkaxes([ax1,ax2,ax3],'x'); linkaxes([ax1,ax2,ax3],'x');
xlim([1, inf]); xlim([2, inf]);
% Simulation Setup % Simulation Setup
% We now activate the disturbances. % We now activate the disturbances.
opts = struct(... initializeDisturbances(...
'Dwx', true, ... % Ground Motion - X direction 'Dwx', true, ... % Ground Motion - X direction
'Dwy', true, ... % Ground Motion - Y direction 'Dwy', true, ... % Ground Motion - Y direction
'Dwz', true, ... % Ground Motion - Z direction 'Dwz', true, ... % Ground Motion - Z direction
'Fty_x', true, ... % Translation Stage - X direction 'Fty_x', true, ... % Translation Stage - X direction
'Fty_z', true, ... % Translation Stage - Z direction 'Fty_z', true, ... % Translation Stage - Z direction
'Frz_z', true ... % Spindle - Z direction 'Frz_z', true ... % Spindle - Z direction
); );
initDisturbances(opts);
% We simulate the model. % We simulate the model.
sim('sim_nano_station_tomo'); sim('nass_model');
@ -179,7 +176,7 @@ plot(t, Edz, 'DisplayName', '$\epsilon_{z}$')
legend('location', 'northeast'); legend('location', 'northeast');
linkaxes([ax1,ax2,ax3],'x'); linkaxes([ax1,ax2,ax3],'x');
xlim([1, inf]); xlim([2, inf]);
@ -204,7 +201,7 @@ plot(t, Erz, 'DisplayName', '$\epsilon_{\theta z}$')
legend('location', 'northeast'); legend('location', 'northeast');
linkaxes([ax1,ax2,ax3],'x'); linkaxes([ax1,ax2,ax3],'x');
xlim([1, inf]); xlim([2, inf]);
% Simulation Setup % Simulation Setup
% We first set the wanted translation of the Micro Hexapod. % We first set the wanted translation of the Micro Hexapod.
@ -215,33 +212,32 @@ P_micro_hexapod = [0.01; 0; 0]; % [m]
% We initialize the reference path. % We initialize the reference path.
initializeReferences(struct('Dh_pos', [P_micro_hexapod; 0; 0; 0], 'Rz_type', 'rotating', 'Rz_period', 1)); initializeReferences('Dh_pos', [P_micro_hexapod; 0; 0; 0], 'Rz_type', 'rotating', 'Rz_period', 1);
% We initialize the stages. % We initialize the stages.
initializeMicroHexapod(struct('AP', P_micro_hexapod)); initializeMicroHexapod('AP', P_micro_hexapod);
% And we initialize the disturbances to zero. % And we initialize the disturbances to zero.
opts = struct(... initializeDisturbances(...
'Dwx', false, ... % Ground Motion - X direction 'Dwx', false, ... % Ground Motion - X direction
'Dwy', false, ... % Ground Motion - Y direction 'Dwy', false, ... % Ground Motion - Y direction
'Dwz', false, ... % Ground Motion - Z direction 'Dwz', false, ... % Ground Motion - Z direction
'Fty_x', false, ... % Translation Stage - X direction 'Fty_x', false, ... % Translation Stage - X direction
'Fty_z', false, ... % Translation Stage - Z direction 'Fty_z', false, ... % Translation Stage - Z direction
'Frz_z', false ... % Spindle - Z direction 'Frz_z', false ... % Spindle - Z direction
); );
initDisturbances(opts);
% We simulate the model. % We simulate the model.
sim('sim_nano_station_tomo'); sim('nass_model');
@ -280,7 +276,7 @@ plot(t, Edz, 'DisplayName', '$\epsilon_{z}$')
legend('location', 'northeast'); legend('location', 'northeast');
linkaxes([ax1,ax2,ax3],'x'); linkaxes([ax1,ax2,ax3],'x');
xlim([1, inf]); xlim([2, inf]);
@ -305,12 +301,12 @@ plot(t, Erz, 'DisplayName', '$\epsilon_{\theta z}$')
legend('location', 'northeast'); legend('location', 'northeast');
linkaxes([ax1,ax2,ax3],'x'); linkaxes([ax1,ax2,ax3],'x');
xlim([1, inf]); xlim([2, inf]);
% Simulation Setup % Simulation Setup
% We set the reference path. % We set the reference path.
initializeReferences(struct('Dy_type', 'triangular', 'Dy_amplitude', 10e-3, 'Dy_period', 1)); initializeReferences('Dy_type', 'triangular', 'Dy_amplitude', 10e-3, 'Dy_period', 1);
@ -324,28 +320,27 @@ initializeRz();
initializeMicroHexapod(); initializeMicroHexapod();
initializeAxisc(); initializeAxisc();
initializeMirror(); initializeMirror();
initializeNanoHexapod(struct('actuator', 'piezo')); initializeNanoHexapod('actuator', 'piezo');
initializeSample(struct('mass', 1)); initializeSample('mass', 1);
% And we initialize the disturbances to zero. % And we initialize the disturbances to zero.
opts = struct(... initializeDisturbances(...
'Dwx', false, ... % Ground Motion - X direction 'Dwx', false, ... % Ground Motion - X direction
'Dwy', false, ... % Ground Motion - Y direction 'Dwy', false, ... % Ground Motion - Y direction
'Dwz', false, ... % Ground Motion - Z direction 'Dwz', false, ... % Ground Motion - Z direction
'Fty_x', false, ... % Translation Stage - X direction 'Fty_x', false, ... % Translation Stage - X direction
'Fty_z', false, ... % Translation Stage - Z direction 'Fty_z', false, ... % Translation Stage - Z direction
'Frz_z', false ... % Spindle - Z direction 'Frz_z', false ... % Spindle - Z direction
); );
initDisturbances(opts);
% We simulate the model. % We simulate the model.
sim('sim_nano_station_tomo'); sim('nass_model');
@ -384,7 +379,7 @@ plot(t, Edz, 'DisplayName', '$\epsilon_{z}$')
legend('location', 'northeast'); legend('location', 'northeast');
linkaxes([ax1,ax2,ax3],'x'); linkaxes([ax1,ax2,ax3],'x');
xlim([1, inf]); xlim([2, inf]);
@ -409,4 +404,4 @@ plot(t, Erz, 'DisplayName', '$\epsilon_{\theta z}$')
legend('location', 'northeast'); legend('location', 'northeast');
linkaxes([ax1,ax2,ax3],'x'); linkaxes([ax1,ax2,ax3],'x');
xlim([1, inf]); xlim([2, inf]);

View File

@ -60,7 +60,7 @@
#+end_src #+end_src
#+begin_src matlab #+begin_src matlab
open('hac_lac/matlab/sim_nass_hac_lac.slx') open('nass_model.slx')
#+end_src #+end_src
** Identification of the plant ** Identification of the plant
@ -106,12 +106,12 @@ First, we identify the dynamics of the system using the =linearize= function.
options.SampleTime = 0; options.SampleTime = 0;
%% Name of the Simulink File %% Name of the Simulink File
mdl = 'sim_nass_hac_lac'; mdl = 'nass_model';
%% Input/Output definition %% Input/Output definition
clear io; io_i = 1; clear io; io_i = 1;
io(io_i) = linio([mdl, '/HAC'], 1, 'openinput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs
io(io_i) = linio([mdl, '/Compute Error in NASS base'], 2, 'openoutput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/Tracking Error'], 1, 'openoutput', [], 'En'); io_i = io_i + 1; % Metrology Outputs
%% Run the linearization %% Run the linearization
G = linearize(mdl, io, options); G = linearize(mdl, io, options);
@ -130,11 +130,6 @@ First, we identify the dynamics of the system using the =linearize= function.
G_legs.OutputName = {'e1', 'e2', 'e3', 'e4', 'e5', 'e6'}; G_legs.OutputName = {'e1', 'e2', 'e3', 'e4', 'e5', 'e6'};
#+end_src #+end_src
# And we save them for further analysis.
# #+begin_src matlab
# save('./hac_lac/mat/undamped_plant.mat', 'G');
# #+end_src
*** Display TF *** Display TF
#+begin_src matlab :exports none #+begin_src matlab :exports none
freqs = logspace(0, 3, 1000); freqs = logspace(0, 3, 1000);
@ -329,7 +324,7 @@ We change the simulation stop time.
And we simulate the system. And we simulate the system.
#+begin_src matlab #+begin_src matlab
sim('sim_nass_active_damping'); sim('nass_model');
#+end_src #+end_src
Finally, we save the simulation results for further analysis Finally, we save the simulation results for further analysis
@ -384,6 +379,7 @@ We load the results of tomography experiments.
#+NAME: fig:nass_act_damp_undamped_sim_tomo_rot #+NAME: fig:nass_act_damp_undamped_sim_tomo_rot
#+CAPTION: Position Error during tomography experiment - Rotations ([[./figs/nass_act_damp_undamped_sim_tomo_rot.png][png]], [[./figs/nass_act_damp_undamped_sim_tomo_rot.pdf][pdf]]) #+CAPTION: Position Error during tomography experiment - Rotations ([[./figs/nass_act_damp_undamped_sim_tomo_rot.png][png]], [[./figs/nass_act_damp_undamped_sim_tomo_rot.pdf][pdf]])
[[file:figs/nass_act_damp_undamped_sim_tomo_rot.png]] [[file:figs/nass_act_damp_undamped_sim_tomo_rot.png]]
** Verification of the transfer function from nano hexapod to metrology ** Verification of the transfer function from nano hexapod to metrology
*** Initialize the Simulation *** Initialize the Simulation
We initialize all the stages with the default parameters. We initialize all the stages with the default parameters.
@ -427,12 +423,12 @@ First, we identify the dynamics of the system using the =linearize= function.
options.SampleTime = 0; options.SampleTime = 0;
%% Name of the Simulink File %% Name of the Simulink File
mdl = 'sim_nass_hac_lac'; mdl = 'nass_model';
%% Input/Output definition %% Input/Output definition
clear io; io_i = 1; clear io; io_i = 1;
io(io_i) = linio([mdl, '/HAC'], 1, 'openinput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs
io(io_i) = linio([mdl, '/Compute Error in NASS base'], 2, 'openoutput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/Tracking Error'], 1, 'openoutput', [], 'En'); io_i = io_i + 1; % Metrology Outputs
%% Run the linearization %% Run the linearization
G = linearize(mdl, io, options); G = linearize(mdl, io, options);

View File

@ -97,7 +97,7 @@ The three rotations that we define thus corresponds to the Euler U-V-W angles.
We should have the *same behavior* for the Micro-Hexapod on Simscape (same inputs at least). We should have the *same behavior* for the Micro-Hexapod on Simscape (same inputs at least).
However, the Bushing Joint makes rotations around mobiles axes (X, Y' and then Z'') and not fixed axes (X, Y and Z). However, the Bushing Joint makes rotations around mobiles axes (X, Y' and then Z'') and not fixed axes (X, Y and Z).
*** Using Inverse Kinematics and Leg Actuators *** TODO Using Inverse Kinematics and Leg Actuators
Here, we can use the Inverse Kinematic of the Hexapod to determine the length of each leg in order to obtain some defined translation and rotation of the mobile platform. Here, we can use the Inverse Kinematic of the Hexapod to determine the length of each leg in order to obtain some defined translation and rotation of the mobile platform.
The advantages are: The advantages are:
@ -147,7 +147,7 @@ Otherwise, when the limbs' lengths derived yield complex numbers, then the posit
**** Matlab Implementation **** Matlab Implementation
We open the Simulink file. We open the Simulink file.
#+begin_src matlab #+begin_src matlab
open('kinematics/matlab/hexapod_tests.slx')
#+end_src #+end_src
We load the configuration and set a small =StopTime=. We load the configuration and set a small =StopTime=.
@ -182,7 +182,7 @@ We define the wanted position/orientation of the Hexapod under study.
We run the simulation. We run the simulation.
#+begin_src matlab #+begin_src matlab
sim('hexapod_tests') sim()
#+end_src #+end_src
And we verify that we indeed succeed to go to the wanted position. And we verify that we indeed succeed to go to the wanted position.