102 lines
2.9 KiB
Matlab
102 lines
2.9 KiB
Matlab
function [actuator] = initializeAPA(args)
|
|
% initializeAPA -
|
|
%
|
|
% Syntax: [actuator] = initializeAPA(args)
|
|
%
|
|
% Inputs:
|
|
% - args -
|
|
%
|
|
% Outputs:
|
|
% - actuator -
|
|
|
|
arguments
|
|
args.type char {mustBeMember(args.type,{'2dof', 'flexible frame', 'flexible'})} = '2dof'
|
|
|
|
% Actuator and Sensor constants
|
|
args.Ga (1,1) double {mustBeNumeric} = 0
|
|
args.Gs (1,1) double {mustBeNumeric} = 0
|
|
|
|
% For 2DoF
|
|
args.k (6,1) double {mustBeNumeric, mustBePositive} = ones(6,1)*380000
|
|
args.ke (6,1) double {mustBeNumeric, mustBePositive} = ones(6,1)*4952605
|
|
args.ka (6,1) double {mustBeNumeric, mustBePositive} = ones(6,1)*2476302
|
|
|
|
args.c (6,1) double {mustBeNumeric, mustBePositive} = ones(6,1)*20
|
|
args.ce (6,1) double {mustBeNumeric, mustBePositive} = ones(6,1)*200
|
|
args.ca (6,1) double {mustBeNumeric, mustBePositive} = ones(6,1)*100
|
|
|
|
args.Leq (6,1) double {mustBeNumeric} = ones(6,1)*0.056
|
|
|
|
% Force Flexible APA
|
|
args.xi (1,1) double {mustBeNumeric, mustBePositive} = 0.01
|
|
args.d_align (3,1) double {mustBeNumeric} = zeros(3,1) % [m]
|
|
args.d_align_bot (3,1) double {mustBeNumeric} = zeros(3,1) % [m]
|
|
args.d_align_top (3,1) double {mustBeNumeric} = zeros(3,1) % [m]
|
|
|
|
% For Flexible Frame
|
|
args.ks (1,1) double {mustBeNumeric, mustBePositive} = 235e6
|
|
args.cs (1,1) double {mustBeNumeric, mustBePositive} = 1e1
|
|
end
|
|
|
|
actuator = struct();
|
|
|
|
switch args.type
|
|
case '2dof'
|
|
actuator.type = 1;
|
|
case 'flexible frame'
|
|
actuator.type = 2;
|
|
case 'flexible'
|
|
actuator.type = 3;
|
|
end
|
|
|
|
if args.Ga == 0
|
|
switch args.type
|
|
case '2dof'
|
|
actuator.Ga = -2.5796;
|
|
case 'flexible'
|
|
actuator.Ga = 23.2;
|
|
end
|
|
else
|
|
actuator.Ga = args.Ga; % Actuator sensitivity [N/V]
|
|
end
|
|
|
|
if args.Gs == 0
|
|
switch args.type
|
|
case '2dof'
|
|
actuator.Gs = 466664;
|
|
case 'flexible'
|
|
actuator.Gs = -4898341;
|
|
end
|
|
else
|
|
actuator.Gs = args.Gs; % Sensor sensitivity [V/m]
|
|
end
|
|
|
|
actuator.k = args.k; % [N/m]
|
|
actuator.ke = args.ke; % [N/m]
|
|
actuator.ka = args.ka; % [N/m]
|
|
|
|
actuator.c = args.c; % [N/(m/s)]
|
|
actuator.ce = args.ce; % [N/(m/s)]
|
|
actuator.ca = args.ca; % [N/(m/s)]
|
|
|
|
actuator.Leq = args.Leq; % [m]
|
|
|
|
switch args.type
|
|
case 'flexible frame'
|
|
actuator.K = readmatrix('APA300ML_b_mat_K.CSV'); % Stiffness Matrix
|
|
actuator.M = readmatrix('APA300ML_b_mat_M.CSV'); % Mass Matrix
|
|
actuator.P = extractNodes('APA300ML_b_out_nodes_3D.txt'); % Node coordinates [m]
|
|
case 'flexible'
|
|
actuator.K = readmatrix('full_APA300ML_K.CSV'); % Stiffness Matrix
|
|
actuator.M = readmatrix('full_APA300ML_M.CSV'); % Mass Matrix
|
|
actuator.P = extractNodes('full_APA300ML_out_nodes_3D.txt'); % Node coordiantes [m]
|
|
actuator.d_align = args.d_align;
|
|
actuator.d_align_bot = args.d_align_bot;
|
|
actuator.d_align_top = args.d_align_top;
|
|
end
|
|
|
|
actuator.xi = args.xi; % Damping ratio
|
|
|
|
actuator.ks = args.ks; % Stiffness of one stack [N/m]
|
|
actuator.cs = args.cs; % Damping of one stack [N/m]
|