Simplify even more the Simscape model
This commit is contained in:
parent
67071e033a
commit
f7c5716c04
Binary file not shown.
@ -142,11 +142,11 @@ initializeSimscapeConfiguration('gravity', false);
|
||||
initializeLoggingConfiguration('log', 'none');
|
||||
|
||||
initializeGround( 'type', 'rigid');
|
||||
initializeGranite( 'type', 'modal-analysis');
|
||||
initializeTy( 'type', 'modal-analysis');
|
||||
initializeRy( 'type', 'modal-analysis');
|
||||
initializeRz( 'type', 'modal-analysis');
|
||||
initializeMicroHexapod('type', 'modal-analysis');
|
||||
initializeGranite( 'type', 'flexible');
|
||||
initializeTy( 'type', 'flexible');
|
||||
initializeRy( 'type', 'flexible');
|
||||
initializeRz( 'type', 'flexible');
|
||||
initializeMicroHexapod('type', 'flexible');
|
||||
|
||||
initializeReferences();
|
||||
initializeDisturbances('enable', false);
|
||||
@ -166,14 +166,21 @@ initializeController( 'type', 'open-loop');
|
||||
|
||||
** TODO [#B] Make good "init" for the Simscape model
|
||||
|
||||
** TODO [#A] Verify that we get "correct" compliance
|
||||
SCHEDULED: <2024-10-30 Wed>
|
||||
|
||||
** TODO [#B] Just keep smallest number of variants for each stage
|
||||
|
||||
- [ ] none
|
||||
- [ ] rigid
|
||||
- [ ] flexible
|
||||
- [X] Init => Removed
|
||||
- [X] modal analysis => Removed
|
||||
|
||||
** TODO [#A] Verify that we get "correct" compliance
|
||||
SCHEDULED: <2024-10-30 Wed>
|
||||
|
||||
- [ ] Find the compliance measurements
|
||||
- [ ] See if it matches somehow the current model
|
||||
- [ ] If not, see if model parameters can be tuned to have better match
|
||||
For instance from values here: file:/home/thomas/Cloud/meetings/esrf-meetings/2018-04-24-Simscape-Model/2018-04-24-Simscape-Model.pdf
|
||||
|
||||
* Introduction :ignore:
|
||||
|
||||
@ -741,11 +748,11 @@ set_param(conf_simulink, 'StopTime', '0.5');
|
||||
|
||||
%% We initialize all the stages.
|
||||
initializeGround( 'type', 'rigid');
|
||||
initializeGranite( 'type', 'modal-analysis');
|
||||
initializeTy( 'type', 'modal-analysis');
|
||||
initializeRy( 'type', 'modal-analysis');
|
||||
initializeRz( 'type', 'modal-analysis');
|
||||
initializeMicroHexapod('type', 'modal-analysis');
|
||||
initializeGranite( 'type', 'flexible');
|
||||
initializeTy( 'type', 'flexible');
|
||||
initializeRy( 'type', 'flexible');
|
||||
initializeRz( 'type', 'flexible');
|
||||
initializeMicroHexapod('type', 'flexible');
|
||||
|
||||
initializeLoggingConfiguration('log', 'none');
|
||||
|
||||
@ -760,12 +767,12 @@ We use the =linearize= function in order to estimate the dynamics from forces ap
|
||||
%% Identification
|
||||
% 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/Micro Hexapod/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Translation Stage/Flexible/F_hammer'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Granite/Flexible/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Translation Stage/Flexible/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Tilt Stage/Flexible/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Spindle/Flexible/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Micro Hexapod/Flexible/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
|
||||
% Run the linearization
|
||||
G_ms = linearize(mdl, io, 0);
|
||||
@ -895,7 +902,7 @@ initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod('type', 'compliance');
|
||||
initializeMicroHexapod();
|
||||
|
||||
initializeReferences();
|
||||
initializeDisturbances();
|
||||
@ -909,8 +916,8 @@ And we identify the dynamics from forces/torques applied on the micro-hexapod to
|
||||
%% Identification of the compliance
|
||||
% 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
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Micro Hexapod/Flexible/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/Flexible/Dm'], 1, 'output'); io_i = io_i + 1; % Absolute displacement of the top platform
|
||||
|
||||
% Run the linearization
|
||||
Gm = linearize(mdl, io, 0);
|
||||
@ -1249,7 +1256,7 @@ end
|
||||
:END:
|
||||
#+begin_src matlab
|
||||
arguments
|
||||
args.type char {mustBeMember(args.type,{'rigid', 'flexible', 'none', 'modal-analysis'})} = 'flexible'
|
||||
args.type char {mustBeMember(args.type,{'rigid', 'flexible', 'none'})} = 'flexible'
|
||||
args.density (1,1) double {mustBeNumeric, mustBeNonnegative} = 2800 % Density [kg/m3]
|
||||
args.K (3,1) double {mustBeNumeric, mustBeNonnegative} = [4e9; 3e8; 8e8] % [N/m]
|
||||
args.C (3,1) double {mustBeNumeric, mustBeNonnegative} = [4.0e5; 1.1e5; 9.0e5] % [N/(m/s)]
|
||||
@ -1281,8 +1288,6 @@ First, we initialize the =granite= structure.
|
||||
granite.type = 1;
|
||||
case 'flexible'
|
||||
granite.type = 2;
|
||||
case 'modal-analysis'
|
||||
granite.type = 3;
|
||||
end
|
||||
#+end_src
|
||||
|
||||
@ -1349,7 +1354,7 @@ end
|
||||
:END:
|
||||
#+begin_src matlab
|
||||
arguments
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis'})} = 'flexible'
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible'})} = 'flexible'
|
||||
end
|
||||
#+end_src
|
||||
|
||||
@ -1374,8 +1379,6 @@ First, we initialize the =ty= structure.
|
||||
ty.type = 1;
|
||||
case 'flexible'
|
||||
ty.type = 2;
|
||||
case 'modal-analysis'
|
||||
ty.type = 3;
|
||||
end
|
||||
#+end_src
|
||||
|
||||
@ -1469,7 +1472,7 @@ end
|
||||
:END:
|
||||
#+begin_src matlab
|
||||
arguments
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis'})} = 'flexible'
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible'})} = 'flexible'
|
||||
args.Ry_init (1,1) double {mustBeNumeric} = 0
|
||||
end
|
||||
#+end_src
|
||||
@ -1496,8 +1499,6 @@ First, we initialize the =ry= structure.
|
||||
ry.type = 1;
|
||||
case 'flexible'
|
||||
ry.type = 2;
|
||||
case 'modal-analysis'
|
||||
ry.type = 3;
|
||||
end
|
||||
#+end_src
|
||||
|
||||
@ -1580,7 +1581,7 @@ end
|
||||
:END:
|
||||
#+begin_src matlab
|
||||
arguments
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis'})} = 'flexible'
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible'})} = 'flexible'
|
||||
end
|
||||
#+end_src
|
||||
|
||||
@ -1605,8 +1606,6 @@ First, we initialize the =rz= structure.
|
||||
rz.type = 1;
|
||||
case 'flexible'
|
||||
rz.type = 2;
|
||||
case 'modal-analysis'
|
||||
rz.type = 3;
|
||||
end
|
||||
#+end_src
|
||||
|
||||
@ -1677,7 +1676,7 @@ end
|
||||
:END:
|
||||
#+begin_src matlab
|
||||
arguments
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis', 'compliance'})} = 'flexible'
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible'})} = 'flexible'
|
||||
% initializeFramesPositions
|
||||
args.H (1,1) double {mustBeNumeric, mustBePositive} = 350e-3
|
||||
args.MO_B (1,1) double {mustBeNumeric} = 270e-3
|
||||
@ -1783,10 +1782,6 @@ end
|
||||
stewart.type = 1;
|
||||
case 'flexible'
|
||||
stewart.type = 2;
|
||||
case 'modal-analysis'
|
||||
stewart.type = 3;
|
||||
case 'compliance'
|
||||
stewart.type = 5;
|
||||
end
|
||||
#+end_src
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user