Axis Compensator has been added
This commit is contained in:
parent
3745bbebee
commit
b5353745e0
@ -238,6 +238,9 @@ initializeRz();
|
|||||||
|
|
||||||
%% Initialize Hexapod Symétrie
|
%% Initialize Hexapod Symétrie
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
|
|
||||||
|
%% Initialize Center of gravity compensation
|
||||||
|
initializeAxisc();
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Center of Mass of each solid body
|
** Center of Mass of each solid body
|
||||||
@ -381,15 +384,16 @@ initializeMicroHexapod();
|
|||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
** Bis
|
||||||
For Granite Fx to Tx/Ty/Tz/Rx/Ry/Rz
|
For Granite Fx to Tx/Ty/Tz/Rx/Ry/Rz
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
dirs = {'x', 'y', 'z', 'rx', 'ry', 'rz'};
|
dirs = {'x', 'y', 'z', 'rx', 'ry', 'rz'};
|
||||||
stages = {'gtop', 'ty', 'ry', 'rz', 'hexa'}
|
stages = {'gtop', 'ty', 'ry', 'rz', 'hexa'}
|
||||||
|
|
||||||
n_stg = 2;
|
n_stg = 5;
|
||||||
n_exc = 2;
|
n_exc = 3;
|
||||||
|
|
||||||
f = logspace(1, 3, 1000);
|
f = logspace(0, 3, 1000);
|
||||||
|
|
||||||
figure;
|
figure;
|
||||||
for n_dir = 1:6
|
for n_dir = 1:6
|
||||||
|
@ -1070,6 +1070,16 @@ This Matlab function is accessible [[file:../src/initializeGranite.m][here]].
|
|||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
function [granite] = initializeGranite()
|
function [granite] = initializeGranite()
|
||||||
|
%% Default values for opts
|
||||||
|
opts = struct('rigid', false);
|
||||||
|
|
||||||
|
%% Populate opts with input parameters
|
||||||
|
if exist('opts_param','var')
|
||||||
|
for opt = fieldnames(opts_param)'
|
||||||
|
opts.(opt{1}) = opts_param.(opt{1});
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
%%
|
%%
|
||||||
granite = struct();
|
granite = struct();
|
||||||
|
|
||||||
@ -1083,22 +1093,27 @@ This Matlab function is accessible [[file:../src/initializeGranite.m][here]].
|
|||||||
granite.mass_top = 4000; % [kg] TODO
|
granite.mass_top = 4000; % [kg] TODO
|
||||||
|
|
||||||
%% Dynamical Properties
|
%% Dynamical Properties
|
||||||
granite.k.x = 4e9; % [N/m]
|
if opts.rigid
|
||||||
|
granite.k.x = 1e12; % [N/m]
|
||||||
|
granite.k.y = 1e12; % [N/m]
|
||||||
|
granite.k.z = 1e12; % [N/m]
|
||||||
|
granite.k.rx = 1e10; % [N*m/deg]
|
||||||
|
granite.k.ry = 1e10; % [N*m/deg]
|
||||||
|
granite.k.rz = 1e10; % [N*m/deg]
|
||||||
|
else
|
||||||
|
granite.k.x = 4e9; % [N/m]
|
||||||
|
granite.k.y = 3e8; % [N/m]
|
||||||
|
granite.k.z = 8e8; % [N/m]
|
||||||
|
granite.k.rx = 1e4; % [N*m/deg]
|
||||||
|
granite.k.ry = 1e4; % [N*m/deg]
|
||||||
|
granite.k.rz = 1e6; % [N*m/deg]
|
||||||
|
end
|
||||||
|
|
||||||
granite.c.x = 0.1*sqrt(granite.mass_top*granite.k.x); % [N/(m/s)]
|
granite.c.x = 0.1*sqrt(granite.mass_top*granite.k.x); % [N/(m/s)]
|
||||||
|
|
||||||
granite.k.y = 3e8; % [N/m]
|
|
||||||
granite.c.y = 0.1*sqrt(granite.mass_top*granite.k.y); % [N/(m/s)]
|
granite.c.y = 0.1*sqrt(granite.mass_top*granite.k.y); % [N/(m/s)]
|
||||||
|
|
||||||
granite.k.z = 8e8; % [N/m]
|
|
||||||
granite.c.z = 0.5*sqrt(granite.mass_top*granite.k.z); % [N/(m/s)]
|
granite.c.z = 0.5*sqrt(granite.mass_top*granite.k.z); % [N/(m/s)]
|
||||||
|
|
||||||
granite.k.rx = 1e4; % [N*m/deg]
|
|
||||||
granite.c.rx = 0.1*sqrt(granite.mass_top*granite.k.rx); % [N*m/(deg/s)]
|
granite.c.rx = 0.1*sqrt(granite.mass_top*granite.k.rx); % [N*m/(deg/s)]
|
||||||
|
|
||||||
granite.k.ry = 1e4; % [N*m/deg]
|
|
||||||
granite.c.ry = 0.1*sqrt(granite.mass_top*granite.k.ry); % [N*m/(deg/s)]
|
granite.c.ry = 0.1*sqrt(granite.mass_top*granite.k.ry); % [N*m/(deg/s)]
|
||||||
|
|
||||||
granite.k.rz = 1e6; % [N*m/deg]
|
|
||||||
granite.c.rz = 0.1*sqrt(granite.mass_top*granite.k.rz); % [N*m/(deg/s)]
|
granite.c.rz = 0.1*sqrt(granite.mass_top*granite.k.rz); % [N*m/(deg/s)]
|
||||||
|
|
||||||
%% Positioning parameters
|
%% Positioning parameters
|
||||||
@ -1126,9 +1141,9 @@ This Matlab function is accessible [[file:../src/initializeTy.m][here]].
|
|||||||
|
|
||||||
%% Populate opts with input parameters
|
%% Populate opts with input parameters
|
||||||
if exist('opts_param','var')
|
if exist('opts_param','var')
|
||||||
for opt = fieldnames(opts_param)'
|
for opt = fieldnames(opts_param)'
|
||||||
opts.(opt{1}) = opts_param.(opt{1});
|
opts.(opt{1}) = opts_param.(opt{1});
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
%%
|
%%
|
||||||
@ -1176,11 +1191,12 @@ This Matlab function is accessible [[file:../src/initializeTy.m][here]].
|
|||||||
|
|
||||||
%% Y-Translation - Dynamicals Properties
|
%% Y-Translation - Dynamicals Properties
|
||||||
if opts.rigid
|
if opts.rigid
|
||||||
ty.k.ax = 1e10; % Axial Stiffness for each of the 4 guidance (y) [N/m]
|
ty.k.ax = 1e12; % Axial Stiffness for each of the 4 guidance (y) [N/m]
|
||||||
|
ty.k.rad = 1e12; % Radial Stiffness for each of the 4 guidance (x-z) [N/m]
|
||||||
else
|
else
|
||||||
ty.k.ax = 1e7; % Axial Stiffness for each of the 4 guidance (y) [N/m]
|
ty.k.ax = 5e7; % Axial Stiffness for each of the 4 guidance (y) [N/m]
|
||||||
|
ty.k.rad = 5e7; % Radial Stiffness for each of the 4 guidance (x-z) [N/m]
|
||||||
end
|
end
|
||||||
ty.k.rad = 1e8; % Radial Stiffness for each of the 4 guidance (x-z) [N/m]
|
|
||||||
|
|
||||||
ty.c.ax = 0.1*sqrt(ty.k.ax*ty.m);
|
ty.c.ax = 0.1*sqrt(ty.k.ax*ty.m);
|
||||||
ty.c.rad = 0.1*sqrt(ty.k.rad*ty.m);
|
ty.c.rad = 0.1*sqrt(ty.k.rad*ty.m);
|
||||||
@ -1207,9 +1223,9 @@ This Matlab function is accessible [[file:../src/initializeRy.m][here]].
|
|||||||
|
|
||||||
%% Populate opts with input parameters
|
%% Populate opts with input parameters
|
||||||
if exist('opts_param','var')
|
if exist('opts_param','var')
|
||||||
for opt = fieldnames(opts_param)'
|
for opt = fieldnames(opts_param)'
|
||||||
opts.(opt{1}) = opts_param.(opt{1});
|
opts.(opt{1}) = opts_param.(opt{1});
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
%%
|
%%
|
||||||
@ -1237,15 +1253,17 @@ This Matlab function is accessible [[file:../src/initializeRy.m][here]].
|
|||||||
|
|
||||||
%% Tilt Stage - Dynamical Properties
|
%% Tilt Stage - Dynamical Properties
|
||||||
if opts.rigid
|
if opts.rigid
|
||||||
ry.k.tilt = 1e10; % Rotation stiffness around y [N*m/deg]
|
ry.k.tilt = 1e10; % Rotation stiffness around y [N*m/deg]
|
||||||
|
ry.k.h = 1e12; % Stiffness in the direction of the guidance [N/m]
|
||||||
|
ry.k.rad = 1e12; % Stiffness in the top direction [N/m]
|
||||||
|
ry.k.rrad = 1e12; % Stiffness in the side direction [N/m]
|
||||||
else
|
else
|
||||||
ry.k.tilt = 1e3; % Rotation stiffness around y [N*m/deg]
|
ry.k.tilt = 1e4; % Rotation stiffness around y [N*m/deg]
|
||||||
|
ry.k.h = 1e8; % Stiffness in the direction of the guidance [N/m]
|
||||||
|
ry.k.rad = 1e8; % Stiffness in the top direction [N/m]
|
||||||
|
ry.k.rrad = 1e8; % Stiffness in the side direction [N/m]
|
||||||
end
|
end
|
||||||
|
|
||||||
ry.k.h = 357e6/4; % Stiffness in the direction of the guidance [N/m]
|
|
||||||
ry.k.rad = 555e6/4; % Stiffness in the top direction [N/m]
|
|
||||||
ry.k.rrad = 238e6/4; % Stiffness in the side direction [N/m]
|
|
||||||
|
|
||||||
ry.c.h = 0.1*sqrt(ry.k.h*ry.m);
|
ry.c.h = 0.1*sqrt(ry.k.h*ry.m);
|
||||||
ry.c.rad = 0.1*sqrt(ry.k.rad*ry.m);
|
ry.c.rad = 0.1*sqrt(ry.k.rad*ry.m);
|
||||||
ry.c.rrad = 0.1*sqrt(ry.k.rrad*ry.m);
|
ry.c.rrad = 0.1*sqrt(ry.k.rrad*ry.m);
|
||||||
@ -1276,9 +1294,9 @@ This Matlab function is accessible [[file:../src/initializeRz.m][here]].
|
|||||||
|
|
||||||
%% Populate opts with input parameters
|
%% Populate opts with input parameters
|
||||||
if exist('opts_param','var')
|
if exist('opts_param','var')
|
||||||
for opt = fieldnames(opts_param)'
|
for opt = fieldnames(opts_param)'
|
||||||
opts.(opt{1}) = opts_param.(opt{1});
|
opts.(opt{1}) = opts_param.(opt{1});
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
%%
|
%%
|
||||||
@ -1302,15 +1320,17 @@ This Matlab function is accessible [[file:../src/initializeRz.m][here]].
|
|||||||
rz.m = 250; % [kg]
|
rz.m = 250; % [kg]
|
||||||
|
|
||||||
%% Spindle - Dynamical Properties
|
%% Spindle - Dynamical Properties
|
||||||
% Estimated stiffnesses
|
|
||||||
rz.k.ax = 2e9; % Axial Stiffness [N/m]
|
|
||||||
rz.k.rad = 7e8; % Radial Stiffness [N/m]
|
|
||||||
rz.k.tilt = 1e8*(2*pi/360); % Rotational Stiffness [N*m/deg]
|
|
||||||
|
|
||||||
if opts.rigid
|
if opts.rigid
|
||||||
rz.k.rot = 1e10; % Rotational Stiffness [N*m/deg]
|
rz.k.rot = 1e10; % Rotational Stiffness (Rz) [N*m/deg]
|
||||||
|
rz.k.tilt = 1e10; % Rotational Stiffness (Rx, Ry) [N*m/deg]
|
||||||
|
rz.k.ax = 1e12; % Axial Stiffness (Z) [N/m]
|
||||||
|
rz.k.rad = 1e12; % Radial Stiffness (X, Y) [N/m]
|
||||||
else
|
else
|
||||||
rz.k.rot = 1e6; % TODO what value should I put? [N*m/deg]
|
rz.k.rot = 1e6; % TODO - Rotational Stiffness (Rz) [N*m/deg]
|
||||||
|
rz.k.tilt = 1e6; % Rotational Stiffness (Rx, Ry) [N*m/deg]
|
||||||
|
rz.k.ax = 2e9; % Axial Stiffness (Z) [N/m]
|
||||||
|
rz.k.rad = 7e8; % Radial Stiffness (X, Y) [N/m]
|
||||||
end
|
end
|
||||||
|
|
||||||
% Damping
|
% Damping
|
||||||
@ -1337,13 +1357,13 @@ This Matlab function is accessible [[file:../src/initializeMicroHexapod.m][here]
|
|||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
function [micro_hexapod] = initializeMicroHexapod(opts_param)
|
function [micro_hexapod] = initializeMicroHexapod(opts_param)
|
||||||
%% Default values for opts
|
%% Default values for opts
|
||||||
opts = struct();
|
opts = struct('rigid', false);
|
||||||
|
|
||||||
%% Populate opts with input parameters
|
%% Populate opts with input parameters
|
||||||
if exist('opts_param','var')
|
if exist('opts_param','var')
|
||||||
for opt = fieldnames(opts_param)'
|
for opt = fieldnames(opts_param)'
|
||||||
opts.(opt{1}) = opts_param.(opt{1});
|
opts.(opt{1}) = opts_param.(opt{1});
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
%% Stewart Object
|
%% Stewart Object
|
||||||
@ -1380,7 +1400,7 @@ This Matlab function is accessible [[file:../src/initializeMicroHexapod.m][here]
|
|||||||
|
|
||||||
Leg.stroke = 10e-3; % Maximum Stroke of each leg [m]
|
Leg.stroke = 10e-3; % Maximum Stroke of each leg [m]
|
||||||
Leg.k.ax = 5e7; % Stiffness of each leg [N/m]
|
Leg.k.ax = 5e7; % Stiffness of each leg [N/m]
|
||||||
Leg.ksi.ax = 3; % Maximum amplification at resonance []
|
Leg.ksi.ax = 0.1; % Modal damping ksi = 1/2*c/sqrt(km) []
|
||||||
Leg.rad.bottom = 25; % Radius of the cylinder of the bottom part [mm]
|
Leg.rad.bottom = 25; % Radius of the cylinder of the bottom part [mm]
|
||||||
Leg.rad.top = 17; % Radius of the cylinder of the top part [mm]
|
Leg.rad.top = 17; % Radius of the cylinder of the top part [mm]
|
||||||
Leg.density = 8000; % Density of the material [kg/m^3]
|
Leg.density = 8000; % Density of the material [kg/m^3]
|
||||||
@ -1431,10 +1451,10 @@ This Matlab function is accessible [[file:../src/initializeMicroHexapod.m][here]
|
|||||||
|
|
||||||
%%
|
%%
|
||||||
function [element] = updateDamping(element)
|
function [element] = updateDamping(element)
|
||||||
field = fieldnames(element.k);
|
field = fieldnames(element.k);
|
||||||
for i = 1:length(field)
|
for i = 1:length(field)
|
||||||
element.c.(field{i}) = 1/element.ksi.(field{i})*sqrt(element.k.(field{i})/element.m);
|
element.c.(field{i}) = 2*element.ksi.(field{i})*sqrt(element.k.(field{i})*element.m);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user