nass-simscape/initialize/initializeInputs.m

98 lines
2.6 KiB
Mathematica
Raw Normal View History

2018-06-16 22:57:54 +02:00
function [inputs] = initializeInputs(opts_param)
%% Default values for opts
opts = struct('setpoint', false, ...
'ground_motion', false, ...
'ty', false, ...
'ry', false, ...
'rz', 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
%% Load Sampling Time and Simulation Time
load('./mat/sim_conf.mat', 'sim_conf');
2018-06-16 22:57:54 +02:00
%% Define the time vector
time_vector = 0:sim_conf.Ts:sim_conf.Tsim;
2018-06-16 22:57:54 +02:00
%% Create the input Structure that will contain all the inputs
inputs = struct();
%% Ground motion
if opts.ground_motion
load('./mat/weight_Wxg.mat', 'Wxg');
ground_motion = 1/sqrt(2)*100*random('norm', 0, 1, length(time_vector), 3);
ground_motion(:, 1) = lsim(Wxg, ground_motion(:, 1), time_vector);
ground_motion(:, 2) = lsim(Wxg, ground_motion(:, 2), time_vector);
ground_motion(:, 3) = lsim(Wxg, ground_motion(:, 3), time_vector);
else
ground_motion = zeros(length(time_vector), 3);
end
inputs.ground_motion = timeseries(ground_motion, time_vector);
%% Translation stage [m]
if opts.ty
ty = zeros(length(time_vector), 1);
else
ty = zeros(length(time_vector), 1);
end
inputs.ty = timeseries(ty, time_vector);
%% Tilt Stage [rad]
if opts.ry
2018-06-16 22:57:54 +02:00
ry = 3*(2*pi/360)*sin(2*pi*0.2*time_vector);
else
ry = zeros(length(time_vector), 1);
end
inputs.ry = timeseries(ry, time_vector);
%% Spindle [rad]
if opts.rz
2018-06-16 22:57:54 +02:00
rz = 2*pi*0.5*time_vector;
else
rz = zeros(length(time_vector), 1);
end
inputs.rz = timeseries(rz, time_vector);
%% Micro Hexapod
u_hexa = zeros(length(time_vector), 6);
inputs.micro_hexapod = timeseries(u_hexa, time_vector);
%% Center of gravity compensation
mass = zeros(length(time_vector), 2);
inputs.axisc = timeseries(mass, time_vector);
%% Nano Hexapod
n_hexa = zeros(length(time_vector), 6);
inputs.nano_hexapod = timeseries(n_hexa, time_vector);
%% Set point [m, rad]
if opts.setpoint
setpoint = zeros(length(time_vector), 6);
setpoint(ceil(10/sim_conf.Ts):end, 2) = 1e-6; % Step of 1 micro-meter in y direction
else
setpoint = zeros(length(time_vector), 6);
end
setpoint(:, 6) = rz;
inputs.setpoint = timeseries(setpoint, time_vector);
2018-06-16 22:57:54 +02:00
%% Save if no output argument
if nargout == 0
save('./mat/inputs.mat', 'inputs');
end
end