59 lines
2.7 KiB
Mathematica
59 lines
2.7 KiB
Mathematica
|
function [stewart] = initializeCylindricalStruts(stewart, args)
|
||
|
% initializeCylindricalStruts - Define the mass and moment of inertia of cylindrical struts
|
||
|
%
|
||
|
% Syntax: [stewart] = initializeCylindricalStruts(args)
|
||
|
%
|
||
|
% Inputs:
|
||
|
% - args - Structure with the following fields:
|
||
|
% - Fsm [1x1] - Mass of the Fixed part of the struts [kg]
|
||
|
% - Fsh [1x1] - Height of cylinder for the Fixed part of the struts [m]
|
||
|
% - Fsr [1x1] - Radius of cylinder for the Fixed part of the struts [m]
|
||
|
% - Msm [1x1] - Mass of the Mobile part of the struts [kg]
|
||
|
% - Msh [1x1] - Height of cylinder for the Mobile part of the struts [m]
|
||
|
% - Msr [1x1] - Radius of cylinder for the Mobile part of the struts [m]
|
||
|
%
|
||
|
% Outputs:
|
||
|
% - stewart - updated Stewart structure with the added fields:
|
||
|
% - struts [struct] - structure with the following fields:
|
||
|
% - Fsm [6x1] - Mass of the Fixed part of the struts [kg]
|
||
|
% - Fsi [3x3x6] - Moment of Inertia for the Fixed part of the struts [kg*m^2]
|
||
|
% - Msm [6x1] - Mass of the Mobile part of the struts [kg]
|
||
|
% - Msi [3x3x6] - Moment of Inertia for the Mobile part of the struts [kg*m^2]
|
||
|
% - Fsh [6x1] - Height of cylinder for the Fixed part of the struts [m]
|
||
|
% - Fsr [6x1] - Radius of cylinder for the Fixed part of the struts [m]
|
||
|
% - Msh [6x1] - Height of cylinder for the Mobile part of the struts [m]
|
||
|
% - Msr [6x1] - Radius of cylinder for the Mobile part of the struts [m]
|
||
|
|
||
|
arguments
|
||
|
stewart
|
||
|
args.Fsm (1,1) double {mustBeNumeric, mustBePositive} = 0.1
|
||
|
args.Fsh (1,1) double {mustBeNumeric, mustBePositive} = 50e-3
|
||
|
args.Fsr (1,1) double {mustBeNumeric, mustBePositive} = 5e-3
|
||
|
args.Msm (1,1) double {mustBeNumeric, mustBePositive} = 0.1
|
||
|
args.Msh (1,1) double {mustBeNumeric, mustBePositive} = 50e-3
|
||
|
args.Msr (1,1) double {mustBeNumeric, mustBePositive} = 5e-3
|
||
|
end
|
||
|
|
||
|
struts = struct();
|
||
|
|
||
|
struts.Fsm = ones(6,1).*args.Fsm;
|
||
|
struts.Msm = ones(6,1).*args.Msm;
|
||
|
|
||
|
struts.Fsh = ones(6,1).*args.Fsh;
|
||
|
struts.Fsr = ones(6,1).*args.Fsr;
|
||
|
struts.Msh = ones(6,1).*args.Msh;
|
||
|
struts.Msr = ones(6,1).*args.Msr;
|
||
|
|
||
|
struts.Fsi = zeros(3, 3, 6);
|
||
|
struts.Msi = zeros(3, 3, 6);
|
||
|
for i = 1:6
|
||
|
struts.Fsi(:,:,i) = diag([1/12 * struts.Fsm(i) * (3*struts.Fsr(i)^2 + struts.Fsh(i)^2), ...
|
||
|
1/12 * struts.Fsm(i) * (3*struts.Fsr(i)^2 + struts.Fsh(i)^2), ...
|
||
|
1/2 * struts.Fsm(i) * struts.Fsr(i)^2]);
|
||
|
struts.Msi(:,:,i) = diag([1/12 * struts.Msm(i) * (3*struts.Msr(i)^2 + struts.Msh(i)^2), ...
|
||
|
1/12 * struts.Msm(i) * (3*struts.Msr(i)^2 + struts.Msh(i)^2), ...
|
||
|
1/2 * struts.Msm(i) * struts.Msr(i)^2]);
|
||
|
end
|
||
|
|
||
|
stewart.struts = struts;
|