diff --git a/.gitignore b/.gitignore index 1415e77..86c0039 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ octave-workspace Assemblage_grt_rtw/ Figures/ data/ +Videos/ diff --git a/Assemblage.slx b/Assemblage.slx index 5c7a7a1..8e8cc6f 100644 Binary files a/Assemblage.slx and b/Assemblage.slx differ diff --git a/init_data.m b/init_data.m index 6dc74a2..c5fe32e 100644 --- a/init_data.m +++ b/init_data.m @@ -11,7 +11,7 @@ initializeSimConf(opts_sim); %% Initialize Inputs opts_inputs = struct(... 'ground_motion', false, ... - 'rz', true ... + 'rz', false ... ); initializeInputs(opts_inputs); @@ -45,6 +45,9 @@ opts_nano_hexapod = struct('actuator', 'lorentz'); initializeNanoHexapod(opts_nano_hexapod); +%% Initialize the Mirror +initializeMirror(); + %% Initialize Sample opts_sample = struct('mass', 20); diff --git a/init_simulation.m b/init_simulation.m index 0ed59f2..fcdcb06 100644 --- a/init_simulation.m +++ b/init_simulation.m @@ -13,6 +13,7 @@ load('./mat/rz.mat', 'rz'); load('./mat/micro_hexapod.mat', 'micro_hexapod'); load('./mat/axisc.mat', 'axisc'); load('./mat/nano_hexapod.mat', 'nano_hexapod'); +load('./mat/mirror.mat', 'mirror'); load('./mat/sample.mat', 'sample'); %% Load Signals Applied to the system diff --git a/initialize/initializeMicroHexapod.m b/initialize/initializeMicroHexapod.m index 0751184..0c09274 100644 --- a/initialize/initializeMicroHexapod.m +++ b/initialize/initializeMicroHexapod.m @@ -12,7 +12,7 @@ function [micro_hexapod] = initializeMicroHexapod(opts_param) %% Stewart Object micro_hexapod = struct(); micro_hexapod.h = 350; % Total height of the platform [mm] - micro_hexapod.jacobian = 435; % Point where the Jacobian is computed => Center of rotation [mm] + micro_hexapod.jacobian = 265; % Point where the Jacobian is computed => Center of rotation [mm] %% Bottom Plate BP = struct(); diff --git a/initialize/initializeMirror.m b/initialize/initializeMirror.m new file mode 100644 index 0000000..ee075d7 --- /dev/null +++ b/initialize/initializeMirror.m @@ -0,0 +1,55 @@ +function [mirror] = initializeMirror(opts_param) + %% Default values for opts + opts = struct(... + 'shape', 'spherical', ... % spherical or conical + 'angle', 45 ... + ); + + %% Populate opts with input parameters + if exist('opts_param','var') + for opt = fieldnames(opts_param)' + opts.(opt{1}) = opts_param.(opt{1}); + end + end + + %% + mirror = struct(); + mirror.h = 50; % height of the mirror [mm] + mirror.thickness = 25; % Thickness of the plate supporting the sample [mm] + mirror.hole_rad = 120; % radius of the hole in the mirror [mm] + mirror.support_rad = 100; % radius of the support plate [mm] + mirror.jacobian = 150; % point of interest offset in z (above the top surfave) [mm] + mirror.rad = 180; % radius of the mirror (at the bottom surface) [mm] + + mirror.density = 2400; % Density of the mirror [kg/m3] + + mirror.cone_length = mirror.rad*tand(opts.angle)+mirror.h+mirror.jacobian; % Distance from Apex point of the cone to jacobian point + + %% Shape + mirror.shape = [... + 0 mirror.h-mirror.thickness + mirror.hole_rad mirror.h-mirror.thickness; ... + mirror.hole_rad 0; ... + mirror.rad 0 ... + ]; + + if strcmp(opts.shape, 'spherical') + mirror.sphere_radius = sqrt((mirror.jacobian+mirror.h)^2+mirror.rad^2); % Radius of the sphere [mm] + + for z = linspace(0, mirror.h, 101) + mirror.shape = [mirror.shape; sqrt(mirror.sphere_radius^2-(z-mirror.jacobian-mirror.h)^2) z]; + end + elseif strcmp(opts.shape, 'conical') + mirror.shape = [mirror.shape; mirror.rad+mirror.h/tand(opts.ang) mirror.h]; + else + error('Shape should be either conical or spherical'); + end + + mirror.shape = [mirror.shape; 0 mirror.h]; + + %% + if nargout == 0 + save('./mat/mirror.mat', 'mirror') + end +end + diff --git a/initialize/initializeNanoHexapod.m b/initialize/initializeNanoHexapod.m index 28b7a62..4b30953 100644 --- a/initialize/initializeNanoHexapod.m +++ b/initialize/initializeNanoHexapod.m @@ -11,8 +11,8 @@ function [nano_hexapod] = initializeNanoHexapod(opts_param) %% Stewart Object nano_hexapod = struct(); - nano_hexapod.h = 90; % Total height of the platform [mm] - nano_hexapod.jacobian = 174.5; % Point where the Jacobian is computed => Center of rotation [mm] + nano_hexapod.h = 90; % Total height of the platform [mm] + nano_hexapod.jacobian = 175; % Point where the Jacobian is computed => Center of rotation [mm] %% Bottom Plate BP = struct(); diff --git a/mat/mirror.mat b/mat/mirror.mat new file mode 100644 index 0000000..643192a Binary files /dev/null and b/mat/mirror.mat differ diff --git a/readme.org b/readme.org index 12542eb..87d16b7 100644 --- a/readme.org +++ b/readme.org @@ -3,5 +3,8 @@ * Description of the files * List of things to do -** TODO Apply some MIMO control +** SOMEDAY Apply some MIMO control ** TODO Create multiple folder inside the ~mat~ folder. +** DONE Add the mirror instead of the interface piece + CLOSED: [2018-07-11 Wed 15:42] +- Be carefull abouth the height of the mirror so that the interested point is still the same.