Update all the functions
This commit is contained in:
parent
7032f05ef5
commit
f73becd5c9
BIN
mat/K_fb.mat
BIN
mat/K_fb.mat
Binary file not shown.
BIN
mat/config.mat
BIN
mat/config.mat
Binary file not shown.
Binary file not shown.
BIN
mat/inputs.mat
BIN
mat/inputs.mat
Binary file not shown.
Binary file not shown.
BIN
mat/stages.mat
BIN
mat/stages.mat
Binary file not shown.
@ -1,12 +1,12 @@
|
||||
% computePsdDispl
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle src/computePsdDispl.m
|
||||
% :header-args:matlab+: :tangle ../src/computePsdDispl.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:computePsdDispl>>
|
||||
|
||||
% This Matlab function is accessible [[file:src/computePsdDispl.m][here]].
|
||||
% This Matlab function is accessible [[file:../src/computePsdDispl.m][here]].
|
||||
|
||||
|
||||
function [psd_object] = computePsdDispl(sys_data, t_init, n_av)
|
||||
|
@ -1,12 +1,12 @@
|
||||
% computeSetpoint
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle src/computeSetpoint.m
|
||||
% :header-args:matlab+: :tangle ../src/computeSetpoint.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:computeSetpoint>>
|
||||
|
||||
% This Matlab function is accessible [[file:src/computeSetpoint.m][here]].
|
||||
% This Matlab function is accessible [[file:../src/computeSetpoint.m][here]].
|
||||
|
||||
|
||||
function setpoint = computeSetpoint(ty, ry, rz)
|
||||
|
@ -1,12 +1,12 @@
|
||||
% converErrorBasis
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle src/converErrorBasis.m
|
||||
% :header-args:matlab+: :tangle ../src/converErrorBasis.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:converErrorBasis>>
|
||||
|
||||
% This Matlab function is accessible [[file:src/converErrorBasis.m][here]].
|
||||
% This Matlab function is accessible [[file:../src/converErrorBasis.m][here]].
|
||||
|
||||
|
||||
function error_nass = convertErrorBasis(pos, setpoint, ty, ry, rz)
|
||||
|
@ -1,12 +1,12 @@
|
||||
% generateDiagPidControl
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle src/generateDiagPidControl.m
|
||||
% :header-args:matlab+: :tangle ../src/generateDiagPidControl.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:generateDiagPidControl>>
|
||||
|
||||
% This Matlab function is accessible [[file:src/generateDiagPidControl.m][here]].
|
||||
% This Matlab function is accessible [[file:../src/generateDiagPidControl.m][here]].
|
||||
|
||||
|
||||
function [K] = generateDiagPidControl(G, fs)
|
||||
|
@ -1,19 +0,0 @@
|
||||
% Simulation Initialization
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/init_simulation.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:init_simulation>>
|
||||
|
||||
% This Matlab script is accessible [[file:../src/init_simulation.m][here]].
|
||||
|
||||
% This script runs just before the simulation is started.
|
||||
% It is used to load the simulation configuration and the controllers used for the simulation.
|
||||
|
||||
|
||||
%% Load all the data used for the simulation
|
||||
load('sim_conf.mat');
|
||||
|
||||
%% Load Controller
|
||||
load('controllers.mat');
|
@ -1,10 +1,10 @@
|
||||
% Center of gravity compensation
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeAxisc.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeAxisc>>
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeAxisc.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeAxisc>>
|
||||
|
||||
% This Matlab function is accessible [[file:../src/initializeAxisc.m][here]].
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
% Cedrat Actuator
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeCedratPiezo.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeCedratPiezo>>
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeCedratPiezo.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeCedratPiezo>>
|
||||
|
||||
% This Matlab function is accessible [[file:../src/initializeCedratPiezo.m][here]].
|
||||
|
||||
@ -25,8 +25,8 @@ function [cedrat] = initializeCedratPiezo(opts_param)
|
||||
cedrat.k = 10e7; % Linear Stiffness of each "blade" [N/m]
|
||||
cedrat.ka = 10e7; % Linear Stiffness of the stack [N/m]
|
||||
|
||||
cedrat.c = 0.1*sqrt(50*cedrat.k); % [N/(m/s)]
|
||||
cedrat.ca = 0.1*sqrt(50*cedrat.ka); % [N/(m/s)]
|
||||
cedrat.c = 0.1*sqrt(1*cedrat.k); % [N/(m/s)]
|
||||
cedrat.ca = 0.1*sqrt(1*cedrat.ka); % [N/(m/s)]
|
||||
|
||||
cedrat.L = 80; % Total Width of the Actuator[mm]
|
||||
cedrat.H = 45; % Total Height of the Actuator [mm]
|
||||
|
@ -1,22 +1,16 @@
|
||||
% Experiment
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeExperiment.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeExperiment>>
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeExperiment.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeExperiment>>
|
||||
|
||||
% This Matlab function is accessible [[file:../src/initializeExperiment.m][here]].
|
||||
|
||||
|
||||
function [] = initializeExperiment(exp_name, sys_mass)
|
||||
if strcmp(exp_name, 'tomography')
|
||||
opts_sim = struct(...
|
||||
'Tsim', 5, ...
|
||||
'cl_time', 5 ...
|
||||
);
|
||||
initializeSimConf(opts_sim);
|
||||
|
||||
if strcmp(sys_mass, 'light')
|
||||
opts_inputs = struct(...
|
||||
'Dw', true, ...
|
||||
|
@ -1,10 +1,10 @@
|
||||
% Granite
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeGranite.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeGranite>>
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeGranite.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeGranite>>
|
||||
|
||||
% This Matlab function is accessible [[file:../src/initializeGranite.m][here]].
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
% Ground
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeGround.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeGround>>
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeGround.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeGround>>
|
||||
|
||||
% This Matlab function is accessible [[file:../src/initializeGround.m][here]].
|
||||
|
||||
|
@ -1,10 +1,12 @@
|
||||
% Inputs
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeInputs.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeInputs>>
|
||||
% TODO Inputs
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeInputs.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeInputs>>
|
||||
|
||||
% - [ ] *This function should not be used anymore*. Now there are two functions to initialize disturbances and references.
|
||||
|
||||
% This Matlab function is accessible [[file:../src/initializeInputs.m][here]].
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
% Micro Hexapod
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeMicroHexapod.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeMicroHexapod>>
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeMicroHexapod.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeMicroHexapod>>
|
||||
|
||||
% This Matlab function is accessible [[file:../src/initializeMicroHexapod.m][here]].
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
% Mirror
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeMirror.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeMirror>>
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeMirror.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeMirror>>
|
||||
|
||||
% This Matlab function is accessible [[file:../src/initializeMirror.m][here]].
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
% Nano Hexapod
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeNanoHexapod.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeNanoHexapod>>
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeNanoHexapod.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeNanoHexapod>>
|
||||
|
||||
% This Matlab function is accessible [[file:../src/initializeNanoHexapod.m][here]].
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
% Tilt Stage
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeRy.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeRy>>
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeRy.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeRy>>
|
||||
|
||||
% This Matlab function is accessible [[file:../src/initializeRy.m][here]].
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
% Spindle
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeRz.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeRz>>
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeRz.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeRz>>
|
||||
|
||||
% This Matlab function is accessible [[file:../src/initializeRz.m][here]].
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
% Sample
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeSample.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeSample>>
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeSample.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeSample>>
|
||||
|
||||
% This Matlab function is accessible [[file:../src/initializeSample.m][here]].
|
||||
|
||||
|
@ -1,44 +0,0 @@
|
||||
% Simulation Configuration
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeSimConf.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeSimConf>>
|
||||
|
||||
% This Matlab function is accessible [[file:../src/initializeSimConf.m][here]].
|
||||
|
||||
|
||||
function [] = initializeSimConf(opts_param)
|
||||
%% Default values for opts
|
||||
opts = struct('Ts', 1e-4, ... % Sampling time [s]
|
||||
'Tsim', 10, ... % Simulation time [s]
|
||||
'cl_time', 0, ... % Close Loop time [s]
|
||||
'gravity', false ... % Gravity along the z axis
|
||||
);
|
||||
|
||||
%% Populate opts with input parameters
|
||||
if exist('opts_param','var')
|
||||
for opt = fieldnames(opts_param)'
|
||||
opts.(opt{1}) = opts_param.(opt{1});
|
||||
end
|
||||
end
|
||||
|
||||
%%
|
||||
sim_conf = struct();
|
||||
|
||||
%%
|
||||
sim_conf.Ts = opts.Ts;
|
||||
sim_conf.Tsim = opts.Tsim;
|
||||
sim_conf.cl_time = opts.cl_time;
|
||||
|
||||
%% Gravity
|
||||
if opts.gravity
|
||||
sim_conf.g = -9.8; %#ok
|
||||
else
|
||||
sim_conf.g = 0; %#ok
|
||||
end
|
||||
|
||||
%% Save
|
||||
save('./mat/sim_conf.mat', 'sim_conf');
|
||||
end
|
@ -1,10 +1,10 @@
|
||||
% Translation Stage
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeTy.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeTy>>
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle ../src/initializeTy.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:initializeTy>>
|
||||
|
||||
% This Matlab function is accessible [[file:../src/initializeTy.m][here]].
|
||||
|
||||
|
@ -3,12 +3,6 @@
|
||||
% When the project opens, a startup script is ran.
|
||||
% The startup script is defined below and is exported to the =project_startup.m= script.
|
||||
|
||||
%%
|
||||
freqs = logspace(-1, 3, 1000);
|
||||
save_fig = false;
|
||||
save('./mat/config.mat', 'freqs', 'save_fig');
|
||||
|
||||
%%
|
||||
project = simulinkproject;
|
||||
projectRoot = project.RootFolder;
|
||||
|
||||
|
@ -1,56 +1,56 @@
|
||||
% runSimulation
|
||||
% :PROPERTIES:
|
||||
% :header-args:matlab+: :tangle src/runSimulation.m
|
||||
% :header-args:matlab+: :tangle ../src/runSimulation.m
|
||||
% :header-args:matlab+: :comments org :mkdirp yes
|
||||
% :header-args:matlab+: :eval no :results none
|
||||
% :END:
|
||||
% <<sec:runSimulation>>
|
||||
|
||||
% This Matlab function is accessible [[file:src/runSimulation.m][here]].
|
||||
% This Matlab function is accessible [[file:../src/runSimulation.m][here]].
|
||||
|
||||
|
||||
function [] = runSimulation(sys_name, sys_mass, ctrl_type, act_damp)
|
||||
%% Load the controller and save it for the simulation
|
||||
if strcmp(ctrl_type, 'cl') && strcmp(act_damp, 'none')
|
||||
K_obj = load('./mat/K_fb.mat');
|
||||
K = K_obj.(sprintf('K_%s_%s', sys_mass, sys_name)); %#ok
|
||||
save('./mat/controllers.mat', 'K');
|
||||
K_obj = load('./mat/K_fb.mat');
|
||||
K = K_obj.(sprintf('K_%s_%s', sys_mass, sys_name)); %#ok
|
||||
save('./mat/controllers.mat', 'K');
|
||||
elseif strcmp(ctrl_type, 'cl') && strcmp(act_damp, 'iff')
|
||||
K_obj = load('./mat/K_fb_iff.mat');
|
||||
K = K_obj.(sprintf('K_%s_%s_iff', sys_mass, sys_name)); %#ok
|
||||
save('./mat/controllers.mat', 'K');
|
||||
K_obj = load('./mat/K_fb_iff.mat');
|
||||
K = K_obj.(sprintf('K_%s_%s_iff', sys_mass, sys_name)); %#ok
|
||||
save('./mat/controllers.mat', 'K');
|
||||
elseif strcmp(ctrl_type, 'ol')
|
||||
K = tf(zeros(6)); %#ok
|
||||
save('./mat/controllers.mat', 'K');
|
||||
K = tf(zeros(6)); %#ok
|
||||
save('./mat/controllers.mat', 'K');
|
||||
else
|
||||
error('ctrl_type should be cl or ol');
|
||||
error('ctrl_type should be cl or ol');
|
||||
end
|
||||
|
||||
%% Active Damping
|
||||
if strcmp(act_damp, 'iff')
|
||||
K_iff_crit = load('./mat/K_iff_crit.mat');
|
||||
K_iff = K_iff_crit.(sprintf('K_iff_%s_%s', sys_mass, sys_name)); %#ok
|
||||
save('./mat/controllers.mat', 'K_iff', '-append');
|
||||
K_iff_crit = load('./mat/K_iff_crit.mat');
|
||||
K_iff = K_iff_crit.(sprintf('K_iff_%s_%s', sys_mass, sys_name)); %#ok
|
||||
save('./mat/controllers.mat', 'K_iff', '-append');
|
||||
elseif strcmp(act_damp, 'none')
|
||||
K_iff = tf(zeros(6)); %#ok
|
||||
save('./mat/controllers.mat', 'K_iff', '-append');
|
||||
K_iff = tf(zeros(6)); %#ok
|
||||
save('./mat/controllers.mat', 'K_iff', '-append');
|
||||
end
|
||||
|
||||
%%
|
||||
if strcmp(sys_name, 'pz')
|
||||
initializeNanoHexapod(struct('actuator', 'piezo'));
|
||||
elseif strcmp(sys_name, 'vc')
|
||||
initializeNanoHexapod(struct('actuator', 'lorentz'));
|
||||
initializeNanoHexapod(struct('actuator', 'lorentz'));
|
||||
else
|
||||
error('sys_name should be pz or vc');
|
||||
error('sys_name should be pz or vc');
|
||||
end
|
||||
|
||||
if strcmp(sys_mass, 'light')
|
||||
initializeSample(struct('mass', 1));
|
||||
elseif strcmp(sys_mass, 'heavy')
|
||||
initializeSample(struct('mass', 50));
|
||||
initializeSample(struct('mass', 50));
|
||||
else
|
||||
error('sys_mass should be light or heavy');
|
||||
error('sys_mass should be light or heavy');
|
||||
end
|
||||
|
||||
%% Run the simulation
|
||||
|
Loading…
Reference in New Issue
Block a user