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');
|
initializeLoggingConfiguration('log', 'none');
|
||||||
|
|
||||||
initializeGround( 'type', 'rigid');
|
initializeGround( 'type', 'rigid');
|
||||||
initializeGranite( 'type', 'modal-analysis');
|
initializeGranite( 'type', 'flexible');
|
||||||
initializeTy( 'type', 'modal-analysis');
|
initializeTy( 'type', 'flexible');
|
||||||
initializeRy( 'type', 'modal-analysis');
|
initializeRy( 'type', 'flexible');
|
||||||
initializeRz( 'type', 'modal-analysis');
|
initializeRz( 'type', 'flexible');
|
||||||
initializeMicroHexapod('type', 'modal-analysis');
|
initializeMicroHexapod('type', 'flexible');
|
||||||
|
|
||||||
initializeReferences();
|
initializeReferences();
|
||||||
initializeDisturbances('enable', false);
|
initializeDisturbances('enable', false);
|
||||||
@ -166,14 +166,21 @@ initializeController( 'type', 'open-loop');
|
|||||||
|
|
||||||
** TODO [#B] Make good "init" for the Simscape model
|
** 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
|
** TODO [#B] Just keep smallest number of variants for each stage
|
||||||
|
|
||||||
|
- [ ] none
|
||||||
- [ ] rigid
|
- [ ] rigid
|
||||||
- [ ] flexible
|
- [ ] flexible
|
||||||
- [X] Init => Removed
|
- [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:
|
* Introduction :ignore:
|
||||||
|
|
||||||
@ -741,11 +748,11 @@ set_param(conf_simulink, 'StopTime', '0.5');
|
|||||||
|
|
||||||
%% We initialize all the stages.
|
%% We initialize all the stages.
|
||||||
initializeGround( 'type', 'rigid');
|
initializeGround( 'type', 'rigid');
|
||||||
initializeGranite( 'type', 'modal-analysis');
|
initializeGranite( 'type', 'flexible');
|
||||||
initializeTy( 'type', 'modal-analysis');
|
initializeTy( 'type', 'flexible');
|
||||||
initializeRy( 'type', 'modal-analysis');
|
initializeRy( 'type', 'flexible');
|
||||||
initializeRz( 'type', 'modal-analysis');
|
initializeRz( 'type', 'flexible');
|
||||||
initializeMicroHexapod('type', 'modal-analysis');
|
initializeMicroHexapod('type', 'flexible');
|
||||||
|
|
||||||
initializeLoggingConfiguration('log', 'none');
|
initializeLoggingConfiguration('log', 'none');
|
||||||
|
|
||||||
@ -760,12 +767,12 @@ We use the =linearize= function in order to estimate the dynamics from forces ap
|
|||||||
%% Identification
|
%% Identification
|
||||||
% Input/Output definition
|
% Input/Output definition
|
||||||
clear io; io_i = 1;
|
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/Translation Stage/Flexible/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/Granite/Flexible/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/Translation Stage/Flexible/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/Tilt Stage/Flexible/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/Spindle/Flexible/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/Micro Hexapod/Flexible/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||||
|
|
||||||
% Run the linearization
|
% Run the linearization
|
||||||
G_ms = linearize(mdl, io, 0);
|
G_ms = linearize(mdl, io, 0);
|
||||||
@ -895,7 +902,7 @@ initializeGranite();
|
|||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod('type', 'compliance');
|
initializeMicroHexapod();
|
||||||
|
|
||||||
initializeReferences();
|
initializeReferences();
|
||||||
initializeDisturbances();
|
initializeDisturbances();
|
||||||
@ -909,8 +916,8 @@ And we identify the dynamics from forces/torques applied on the micro-hexapod to
|
|||||||
%% Identification of the compliance
|
%% Identification of the compliance
|
||||||
% Input/Output definition
|
% Input/Output definition
|
||||||
clear io; io_i = 1;
|
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/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/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/Dm'], 1, 'output'); io_i = io_i + 1; % Absolute displacement of the top platform
|
||||||
|
|
||||||
% Run the linearization
|
% Run the linearization
|
||||||
Gm = linearize(mdl, io, 0);
|
Gm = linearize(mdl, io, 0);
|
||||||
@ -1249,7 +1256,7 @@ end
|
|||||||
:END:
|
:END:
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
arguments
|
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.density (1,1) double {mustBeNumeric, mustBeNonnegative} = 2800 % Density [kg/m3]
|
||||||
args.K (3,1) double {mustBeNumeric, mustBeNonnegative} = [4e9; 3e8; 8e8] % [N/m]
|
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)]
|
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;
|
granite.type = 1;
|
||||||
case 'flexible'
|
case 'flexible'
|
||||||
granite.type = 2;
|
granite.type = 2;
|
||||||
case 'modal-analysis'
|
|
||||||
granite.type = 3;
|
|
||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -1349,7 +1354,7 @@ end
|
|||||||
:END:
|
:END:
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
arguments
|
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
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -1374,8 +1379,6 @@ First, we initialize the =ty= structure.
|
|||||||
ty.type = 1;
|
ty.type = 1;
|
||||||
case 'flexible'
|
case 'flexible'
|
||||||
ty.type = 2;
|
ty.type = 2;
|
||||||
case 'modal-analysis'
|
|
||||||
ty.type = 3;
|
|
||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -1469,7 +1472,7 @@ end
|
|||||||
:END:
|
:END:
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
arguments
|
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
|
args.Ry_init (1,1) double {mustBeNumeric} = 0
|
||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
@ -1496,8 +1499,6 @@ First, we initialize the =ry= structure.
|
|||||||
ry.type = 1;
|
ry.type = 1;
|
||||||
case 'flexible'
|
case 'flexible'
|
||||||
ry.type = 2;
|
ry.type = 2;
|
||||||
case 'modal-analysis'
|
|
||||||
ry.type = 3;
|
|
||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -1580,7 +1581,7 @@ end
|
|||||||
:END:
|
:END:
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
arguments
|
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
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -1605,8 +1606,6 @@ First, we initialize the =rz= structure.
|
|||||||
rz.type = 1;
|
rz.type = 1;
|
||||||
case 'flexible'
|
case 'flexible'
|
||||||
rz.type = 2;
|
rz.type = 2;
|
||||||
case 'modal-analysis'
|
|
||||||
rz.type = 3;
|
|
||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -1677,7 +1676,7 @@ end
|
|||||||
:END:
|
:END:
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
arguments
|
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
|
% initializeFramesPositions
|
||||||
args.H (1,1) double {mustBeNumeric, mustBePositive} = 350e-3
|
args.H (1,1) double {mustBeNumeric, mustBePositive} = 350e-3
|
||||||
args.MO_B (1,1) double {mustBeNumeric} = 270e-3
|
args.MO_B (1,1) double {mustBeNumeric} = 270e-3
|
||||||
@ -1783,10 +1782,6 @@ end
|
|||||||
stewart.type = 1;
|
stewart.type = 1;
|
||||||
case 'flexible'
|
case 'flexible'
|
||||||
stewart.type = 2;
|
stewart.type = 2;
|
||||||
case 'modal-analysis'
|
|
||||||
stewart.type = 3;
|
|
||||||
case 'compliance'
|
|
||||||
stewart.type = 5;
|
|
||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user