function [nano_hexapod] = initializeSimplifiedNanoHexapod(args) arguments %% initializeFramesPositions args.H (1,1) double {mustBeNumeric, mustBePositive} = 95e-3 % Height of the nano-hexapod [m] args.MO_B (1,1) double {mustBeNumeric} = 150e-3 % Height of {B} w.r.t. {M} [m] %% generateGeneralConfiguration args.FH (1,1) double {mustBeNumeric, mustBePositive} = 15e-3 % Height of fixed joints [m] args.FR (1,1) double {mustBeNumeric, mustBePositive} = 120e-3 % Radius of fixed joints [m] args.FTh (6,1) double {mustBeNumeric} = [220, 320, 340, 80, 100, 200]*(pi/180) % Angles of fixed joints [rad] args.MH (1,1) double {mustBeNumeric, mustBePositive} = 15e-3 % Height of mobile joints [m] args.MR (1,1) double {mustBeNumeric, mustBePositive} = 110e-3 % Radius of mobile joints [m] args.MTh (6,1) double {mustBeNumeric} = [255, 285, 15, 45, 135, 165]*(pi/180) % Angles of fixed joints [rad] %% Actuators args.actuator_type char {mustBeMember(args.actuator_type,{'1dof', '2dof', 'flexible'})} = '1dof' args.actuator_k (1,1) double {mustBeNumeric, mustBePositive} = 1e6 args.actuator_kp (1,1) double {mustBeNumeric, mustBeNonnegative} = 1e4 args.actuator_ke (1,1) double {mustBeNumeric, mustBePositive} = 4952605 args.actuator_ka (1,1) double {mustBeNumeric, mustBePositive} = 2476302 args.actuator_c (1,1) double {mustBeNumeric, mustBePositive} = 50 args.actuator_cp (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 args.actuator_ce (1,1) double {mustBeNumeric, mustBePositive} = 100 args.actuator_ca (1,1) double {mustBeNumeric, mustBePositive} = 50 %% initializeCylindricalPlatforms args.Fpm (1,1) double {mustBeNumeric, mustBePositive} = 5 % Mass of the fixed plate [kg] args.Fph (1,1) double {mustBeNumeric, mustBePositive} = 10e-3 % Thickness of the fixed plate [m] args.Fpr (1,1) double {mustBeNumeric, mustBePositive} = 150e-3 % Radius of the fixed plate [m] args.Mpm (1,1) double {mustBeNumeric, mustBePositive} = 5 % Mass of the mobile plate [kg] args.Mph (1,1) double {mustBeNumeric, mustBePositive} = 10e-3 % Thickness of the mobile plate [m] args.Mpr (1,1) double {mustBeNumeric, mustBePositive} = 150e-3 % Radius of the mobile plate [m] %% initializeCylindricalStruts args.Fsm (1,1) double {mustBeNumeric, mustBePositive} = 1e-3 % Mass of the fixed part of the strut [kg] args.Fsh (1,1) double {mustBeNumeric, mustBePositive} = 60e-3 % Length of the fixed part of the struts [m] args.Fsr (1,1) double {mustBeNumeric, mustBePositive} = 5e-3 % Radius of the fixed part of the struts [m] args.Msm (1,1) double {mustBeNumeric, mustBePositive} = 1e-3 % Mass of the mobile part of the strut [kg] args.Msh (1,1) double {mustBeNumeric, mustBePositive} = 60e-3 % Length of the mobile part of the struts [m] args.Msr (1,1) double {mustBeNumeric, mustBePositive} = 5e-3 % Radius of the fixed part of the struts [m] %% Bottom and Top Flexible Joints args.flex_type_F char {mustBeMember(args.flex_type_F,{'2dof', '3dof', '4dof', '6dof', 'flexible'})} = '2dof' args.flex_type_M char {mustBeMember(args.flex_type_M,{'2dof', '3dof', '4dof', '6dof', 'flexible'})} = '3dof' args.Kf_M (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 args.Cf_M (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 args.Kt_M (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 args.Ct_M (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 args.Kf_F (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 args.Cf_F (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 args.Kt_F (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 args.Ct_F (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 args.Ka_F (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 args.Ca_F (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 args.Kr_F (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 args.Cr_F (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 args.Ka_M (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 args.Ca_M (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 args.Kr_M (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 args.Cr_M (1,1) double {mustBeNumeric, mustBeNonnegative} = 0 %% inverseKinematics args.AP (3,1) double {mustBeNumeric} = zeros(3,1) args.ARB (3,3) double {mustBeNumeric} = eye(3) end stewart = initializeStewartPlatform(); stewart = initializeFramesPositions(stewart, ... 'H', args.H, ... 'MO_B', args.MO_B); stewart = generateGeneralConfiguration(stewart, ... 'FH', args.FH, ... 'FR', args.FR, ... 'FTh', args.FTh, ... 'MH', args.MH, ... 'MR', args.MR, ... 'MTh', args.MTh); stewart = computeJointsPose(stewart); stewart = initializeStrutDynamics(stewart, ... 'type', args.actuator_type, ... 'k', args.actuator_k, ... 'kp', args.actuator_kp, ... 'ke', args.actuator_ke, ... 'ka', args.actuator_ka, ... 'c', args.actuator_c, ... 'cp', args.actuator_cp, ... 'ce', args.actuator_ce, ... 'ca', args.actuator_ca); stewart = initializeJointDynamics(stewart, ... 'type_F', args.flex_type_F, ... 'type_M', args.flex_type_M, ... 'Kf_M', args.Kf_M, ... 'Cf_M', args.Cf_M, ... 'Kt_M', args.Kt_M, ... 'Ct_M', args.Ct_M, ... 'Kf_F', args.Kf_F, ... 'Cf_F', args.Cf_F, ... 'Kt_F', args.Kt_F, ... 'Ct_F', args.Ct_F, ... 'Ka_F', args.Ka_F, ... 'Ca_F', args.Ca_F, ... 'Kr_F', args.Kr_F, ... 'Cr_F', args.Cr_F, ... 'Ka_M', args.Ka_M, ... 'Ca_M', args.Ca_M, ... 'Kr_M', args.Kr_M, ... 'Cr_M', args.Cr_M); stewart = initializeCylindricalPlatforms(stewart, ... 'Fpm', args.Fpm, ... 'Fph', args.Fph, ... 'Fpr', args.Fpr, ... 'Mpm', args.Mpm, ... 'Mph', args.Mph, ... 'Mpr', args.Mpr); stewart = initializeCylindricalStruts(stewart, ... 'Fsm', args.Fsm, ... 'Fsh', args.Fsh, ... 'Fsr', args.Fsr, ... 'Msm', args.Msm, ... 'Msh', args.Msh, ... 'Msr', args.Msr); stewart = computeJacobian(stewart); stewart = initializeStewartPose(stewart, ... 'AP', args.AP, ... 'ARB', args.ARB); nano_hexapod = stewart; if exist('./mat', 'dir') if exist('./mat/nass_model_stages.mat', 'file') save('mat/nass_model_stages.mat', 'nano_hexapod', '-append'); else save('mat/nass_model_stages.mat', 'nano_hexapod'); end elseif exist('./matlab', 'dir') if exist('./matlab/mat/nass_model_stages.mat', 'file') save('matlab/mat/nass_model_stages.mat', 'nano_hexapod', '-append'); else save('matlab/mat/nass_model_stages.mat', 'nano_hexapod'); end end end