Update nano-hexapod parameters
This commit is contained in:
		
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -3436,28 +3436,32 @@ function [nano_hexapod] = initializeNanoHexapodFinal(args) | ||||
| arguments | ||||
|     %% Bottom Flexible Joints | ||||
|     args.flex_bot_type      char {mustBeMember(args.flex_bot_type,{'2dof', '3dof', '4dof', 'flexible'})} = '4dof' | ||||
|     args.flex_bot_kRx (6,1) double {mustBeNumeric} = ones(6,1)*3.5 % X bending stiffness [Nm/rad] | ||||
|     args.flex_bot_kRy (6,1) double {mustBeNumeric} = ones(6,1)*3.5 % Y bending stiffness [Nm/rad] | ||||
|     args.flex_bot_kRx (6,1) double {mustBeNumeric} = ones(6,1)*5 % X bending stiffness [Nm/rad] | ||||
|     args.flex_bot_kRy (6,1) double {mustBeNumeric} = ones(6,1)*5 % Y bending stiffness [Nm/rad] | ||||
|     args.flex_bot_kRz (6,1) double {mustBeNumeric} = ones(6,1)*260 % Torsionnal stiffness [Nm/rad] | ||||
|     args.flex_bot_kz  (6,1) double {mustBeNumeric} = ones(6,1)*8e7 % Axial Stiffness [N/m] | ||||
|     args.flex_bot_cRx (6,1) double {mustBeNumeric} = ones(6,1)*0 % X bending Damping [Nm/(rad/s)] | ||||
|     args.flex_bot_cRy (6,1) double {mustBeNumeric} = ones(6,1)*0 % Y bending Damping [Nm/(rad/s)] | ||||
|     args.flex_bot_cRz (6,1) double {mustBeNumeric} = ones(6,1)*0 % Torsionnal Damping [Nm/(rad/s)] | ||||
|     args.flex_bot_cz  (6,1) double {mustBeNumeric} = ones(6,1)*0 % Axial Damping [N/(m/s)] | ||||
|     args.flex_bot_kz  (6,1) double {mustBeNumeric} = ones(6,1)*7e7 % Axial Stiffness [N/m] | ||||
|     args.flex_bot_cRx (6,1) double {mustBeNumeric} = ones(6,1)*0.001 % X bending Damping [Nm/(rad/s)] | ||||
|     args.flex_bot_cRy (6,1) double {mustBeNumeric} = ones(6,1)*0.001 % Y bending Damping [Nm/(rad/s)] | ||||
|     args.flex_bot_cRz (6,1) double {mustBeNumeric} = ones(6,1)*0.001 % Torsionnal Damping [Nm/(rad/s)] | ||||
|     args.flex_bot_cz  (6,1) double {mustBeNumeric} = ones(6,1)*0.001 % Axial Damping [N/(m/s)] | ||||
|  | ||||
|     %% Top Flexible Joints | ||||
|     args.flex_top_type      char {mustBeMember(args.flex_top_type,{'2dof', '3dof', '4dof', 'flexible'})} = '4dof' | ||||
|     args.flex_top_kRx (6,1) double {mustBeNumeric} = ones(6,1)*3.5 % X bending stiffness [Nm/rad] | ||||
|     args.flex_top_kRy (6,1) double {mustBeNumeric} = ones(6,1)*3.5 % Y bending stiffness [Nm/rad] | ||||
|     args.flex_top_kRx (6,1) double {mustBeNumeric} = ones(6,1)*5 % X bending stiffness [Nm/rad] | ||||
|     args.flex_top_kRy (6,1) double {mustBeNumeric} = ones(6,1)*5 % Y bending stiffness [Nm/rad] | ||||
|     args.flex_top_kRz (6,1) double {mustBeNumeric} = ones(6,1)*260 % Torsionnal stiffness [Nm/rad] | ||||
|     args.flex_top_kz  (6,1) double {mustBeNumeric} = ones(6,1)*8e7 % Axial Stiffness [N/m] | ||||
|     args.flex_top_cRx (6,1) double {mustBeNumeric} = ones(6,1)*0 % X bending Damping [Nm/(rad/s)] | ||||
|     args.flex_top_cRy (6,1) double {mustBeNumeric} = ones(6,1)*0 % Y bending Damping [Nm/(rad/s)] | ||||
|     args.flex_top_cRz (6,1) double {mustBeNumeric} = ones(6,1)*0 % Torsionnal Damping [Nm/(rad/s)] | ||||
|     args.flex_top_cz  (6,1) double {mustBeNumeric} = ones(6,1)*0 % Axial Damping [N/(m/s)] | ||||
|     args.flex_top_kz  (6,1) double {mustBeNumeric} = ones(6,1)*7e7 % Axial Stiffness [N/m] | ||||
|     args.flex_top_cRx (6,1) double {mustBeNumeric} = ones(6,1)*0.001 % X bending Damping [Nm/(rad/s)] | ||||
|     args.flex_top_cRy (6,1) double {mustBeNumeric} = ones(6,1)*0.001 % Y bending Damping [Nm/(rad/s)] | ||||
|     args.flex_top_cRz (6,1) double {mustBeNumeric} = ones(6,1)*0.001 % Torsionnal Damping [Nm/(rad/s)] | ||||
|     args.flex_top_cz  (6,1) double {mustBeNumeric} = ones(6,1)*0.001 % Axial Damping [N/(m/s)] | ||||
|  | ||||
|     %% Jacobian - Location of frame {A} and {B} | ||||
|     args.MO_B (1,1) double {mustBeNumeric} = 150e-3 % Height of {B} w.r.t. {M} [m] | ||||
|  | ||||
|     %% Relative Motion Sensor | ||||
|     args.motion_sensor_type char {mustBeMember(args.motion_sensor_type,{'struts', 'plates'})} = 'struts' | ||||
|  | ||||
|     %% Actuators | ||||
|     args.actuator_type char {mustBeMember(args.actuator_type,{'2dof', 'flexible frame', 'flexible'})} = 'flexible' | ||||
|     args.actuator_Ga  (6,1) double {mustBeNumeric} = zeros(6,1) % Actuator gain [N/V] | ||||
| @@ -3473,10 +3477,13 @@ arguments | ||||
|     % For Flexible Frame | ||||
|     args.actuator_ks (6,1) double {mustBeNumeric} = ones(6,1)*235e6 % Stiffness of one stack [N/m] | ||||
|     args.actuator_cs (6,1) double {mustBeNumeric} = ones(6,1)*1e1 % Stiffness of one stack [N/m] | ||||
|     % Misalignment | ||||
|     args.actuator_d_align (6,3) double {mustBeNumeric} = zeros(6,3) % [m] | ||||
|  | ||||
|     args.actuator_xi  (1,1) double {mustBeNumeric} = 0.01 % Damping Ratio | ||||
|  | ||||
|     %% Controller | ||||
|     args.controller_type char {mustBeMember(args.controller_type,{'none', 'iff', 'dvf'})} = 'none' | ||||
|     args.controller_type char {mustBeMember(args.controller_type,{'none', 'iff', 'dvf', 'hac-iff-struts'})} = 'none' | ||||
| end | ||||
| #+end_src | ||||
|  | ||||
| @@ -3613,8 +3620,10 @@ else | ||||
| end | ||||
| #+end_src | ||||
|  | ||||
| 2dof | ||||
| Mechanical characteristics: | ||||
| #+begin_src matlab | ||||
| switch args.actuator_type | ||||
|   case '2dof' | ||||
|     nano_hexapod.actuator.k  = args.actuator_k;  % [N/m] | ||||
|     nano_hexapod.actuator.ke = args.actuator_ke; % [N/m] | ||||
|     nano_hexapod.actuator.ka = args.actuator_ka; % [N/m] | ||||
| @@ -3624,25 +3633,26 @@ nano_hexapod.actuator.ce = args.actuator_ce; % [N/(m/s)] | ||||
|     nano_hexapod.actuator.ca = args.actuator_ca; % [N/(m/s)] | ||||
|  | ||||
|     nano_hexapod.actuator.Leq = args.actuator_Leq; % [m] | ||||
| #+end_src | ||||
|  | ||||
| Flexible frame and fully flexible | ||||
| #+begin_src matlab | ||||
| switch args.actuator_type | ||||
|   case 'flexible frame' | ||||
|     nano_hexapod.actuator.K = readmatrix('APA300ML_b_mat_K.CSV'); % Stiffness Matrix | ||||
|     nano_hexapod.actuator.M = readmatrix('APA300ML_b_mat_M.CSV'); % Mass Matrix | ||||
|     nano_hexapod.actuator.P = extractNodes('APA300ML_b_out_nodes_3D.txt'); % Node coordinates [m] | ||||
|  | ||||
|     nano_hexapod.actuator.ks = args.actuator_ks; % Stiffness of one stack [N/m] | ||||
|     nano_hexapod.actuator.cs = args.actuator_cs; % Damping of one stack [N/m] | ||||
|     nano_hexapod.actuator.xi = args.actuator_xi; % Damping ratio | ||||
|  | ||||
|   case 'flexible' | ||||
|     nano_hexapod.actuator.K = readmatrix('full_APA300ML_K.CSV'); % Stiffness Matrix | ||||
|     nano_hexapod.actuator.M = readmatrix('full_APA300ML_M.CSV'); % Mass Matrix | ||||
|     nano_hexapod.actuator.P = extractNodes('full_APA300ML_out_nodes_3D.txt'); % Node coordiantes [m] | ||||
| end | ||||
|  | ||||
|     nano_hexapod.actuator.d_align = args.actuator_d_align; % Misalignment | ||||
|     nano_hexapod.actuator.xi = args.actuator_xi; % Damping ratio | ||||
|  | ||||
| nano_hexapod.actuator.ks = args.actuator_ks; % Stiffness of one stack [N/m] | ||||
| nano_hexapod.actuator.cs = args.actuator_cs; % Damping of one stack [N/m] | ||||
| end | ||||
|  | ||||
| #+end_src | ||||
|  | ||||
| ** Geometry | ||||
| @@ -3744,6 +3754,8 @@ switch args.controller_type | ||||
|     nano_hexapod.controller.type = 2; | ||||
|   case 'dvf' | ||||
|     nano_hexapod.controller.type = 3; | ||||
|   case 'hac-iff-struts' | ||||
|     nano_hexapod.controller.type = 4; | ||||
| end | ||||
| #+end_src | ||||
|  | ||||
|   | ||||
| @@ -3,28 +3,32 @@ function [nano_hexapod] = initializeNanoHexapodFinal(args) | ||||
| arguments | ||||
|     %% Bottom Flexible Joints | ||||
|     args.flex_bot_type      char {mustBeMember(args.flex_bot_type,{'2dof', '3dof', '4dof', 'flexible'})} = '4dof' | ||||
|     args.flex_bot_kRx (6,1) double {mustBeNumeric} = ones(6,1)*3.5 % X bending stiffness [Nm/rad] | ||||
|     args.flex_bot_kRy (6,1) double {mustBeNumeric} = ones(6,1)*3.5 % Y bending stiffness [Nm/rad] | ||||
|     args.flex_bot_kRx (6,1) double {mustBeNumeric} = ones(6,1)*5 % X bending stiffness [Nm/rad] | ||||
|     args.flex_bot_kRy (6,1) double {mustBeNumeric} = ones(6,1)*5 % Y bending stiffness [Nm/rad] | ||||
|     args.flex_bot_kRz (6,1) double {mustBeNumeric} = ones(6,1)*260 % Torsionnal stiffness [Nm/rad] | ||||
|     args.flex_bot_kz  (6,1) double {mustBeNumeric} = ones(6,1)*8e7 % Axial Stiffness [N/m] | ||||
|     args.flex_bot_cRx (6,1) double {mustBeNumeric} = ones(6,1)*0 % X bending Damping [Nm/(rad/s)] | ||||
|     args.flex_bot_cRy (6,1) double {mustBeNumeric} = ones(6,1)*0 % Y bending Damping [Nm/(rad/s)] | ||||
|     args.flex_bot_cRz (6,1) double {mustBeNumeric} = ones(6,1)*0 % Torsionnal Damping [Nm/(rad/s)] | ||||
|     args.flex_bot_cz  (6,1) double {mustBeNumeric} = ones(6,1)*0 % Axial Damping [N/(m/s)] | ||||
|     args.flex_bot_kz  (6,1) double {mustBeNumeric} = ones(6,1)*7e7 % Axial Stiffness [N/m] | ||||
|     args.flex_bot_cRx (6,1) double {mustBeNumeric} = ones(6,1)*0.001 % X bending Damping [Nm/(rad/s)] | ||||
|     args.flex_bot_cRy (6,1) double {mustBeNumeric} = ones(6,1)*0.001 % Y bending Damping [Nm/(rad/s)] | ||||
|     args.flex_bot_cRz (6,1) double {mustBeNumeric} = ones(6,1)*0.001 % Torsionnal Damping [Nm/(rad/s)] | ||||
|     args.flex_bot_cz  (6,1) double {mustBeNumeric} = ones(6,1)*0.001 % Axial Damping [N/(m/s)] | ||||
|  | ||||
|     %% Top Flexible Joints | ||||
|     args.flex_top_type      char {mustBeMember(args.flex_top_type,{'2dof', '3dof', '4dof', 'flexible'})} = '4dof' | ||||
|     args.flex_top_kRx (6,1) double {mustBeNumeric} = ones(6,1)*3.5 % X bending stiffness [Nm/rad] | ||||
|     args.flex_top_kRy (6,1) double {mustBeNumeric} = ones(6,1)*3.5 % Y bending stiffness [Nm/rad] | ||||
|     args.flex_top_kRx (6,1) double {mustBeNumeric} = ones(6,1)*5 % X bending stiffness [Nm/rad] | ||||
|     args.flex_top_kRy (6,1) double {mustBeNumeric} = ones(6,1)*5 % Y bending stiffness [Nm/rad] | ||||
|     args.flex_top_kRz (6,1) double {mustBeNumeric} = ones(6,1)*260 % Torsionnal stiffness [Nm/rad] | ||||
|     args.flex_top_kz  (6,1) double {mustBeNumeric} = ones(6,1)*8e7 % Axial Stiffness [N/m] | ||||
|     args.flex_top_cRx (6,1) double {mustBeNumeric} = ones(6,1)*0 % X bending Damping [Nm/(rad/s)] | ||||
|     args.flex_top_cRy (6,1) double {mustBeNumeric} = ones(6,1)*0 % Y bending Damping [Nm/(rad/s)] | ||||
|     args.flex_top_cRz (6,1) double {mustBeNumeric} = ones(6,1)*0 % Torsionnal Damping [Nm/(rad/s)] | ||||
|     args.flex_top_cz  (6,1) double {mustBeNumeric} = ones(6,1)*0 % Axial Damping [N/(m/s)] | ||||
|     args.flex_top_kz  (6,1) double {mustBeNumeric} = ones(6,1)*7e7 % Axial Stiffness [N/m] | ||||
|     args.flex_top_cRx (6,1) double {mustBeNumeric} = ones(6,1)*0.001 % X bending Damping [Nm/(rad/s)] | ||||
|     args.flex_top_cRy (6,1) double {mustBeNumeric} = ones(6,1)*0.001 % Y bending Damping [Nm/(rad/s)] | ||||
|     args.flex_top_cRz (6,1) double {mustBeNumeric} = ones(6,1)*0.001 % Torsionnal Damping [Nm/(rad/s)] | ||||
|     args.flex_top_cz  (6,1) double {mustBeNumeric} = ones(6,1)*0.001 % Axial Damping [N/(m/s)] | ||||
|  | ||||
|     %% Jacobian - Location of frame {A} and {B} | ||||
|     args.MO_B (1,1) double {mustBeNumeric} = 150e-3 % Height of {B} w.r.t. {M} [m] | ||||
|  | ||||
|     %% Relative Motion Sensor | ||||
|     args.motion_sensor_type char {mustBeMember(args.motion_sensor_type,{'struts', 'plates'})} = 'struts' | ||||
|  | ||||
|     %% Actuators | ||||
|     args.actuator_type char {mustBeMember(args.actuator_type,{'2dof', 'flexible frame', 'flexible'})} = 'flexible' | ||||
|     args.actuator_Ga  (6,1) double {mustBeNumeric} = zeros(6,1) % Actuator gain [N/V] | ||||
| @@ -40,10 +44,13 @@ arguments | ||||
|     % For Flexible Frame | ||||
|     args.actuator_ks (6,1) double {mustBeNumeric} = ones(6,1)*235e6 % Stiffness of one stack [N/m] | ||||
|     args.actuator_cs (6,1) double {mustBeNumeric} = ones(6,1)*1e1 % Stiffness of one stack [N/m] | ||||
|     % Misalignment | ||||
|     args.actuator_d_align (6,3) double {mustBeNumeric} = zeros(6,3) % [m] | ||||
|  | ||||
|     args.actuator_xi  (1,1) double {mustBeNumeric} = 0.01 % Damping Ratio | ||||
|  | ||||
|     %% Controller | ||||
|     args.controller_type char {mustBeMember(args.controller_type,{'none', 'iff', 'dvf'})} = 'none' | ||||
|     args.controller_type char {mustBeMember(args.controller_type,{'none', 'iff', 'dvf', 'hac-iff-struts'})} = 'none' | ||||
| end | ||||
|  | ||||
| nano_hexapod = struct(); | ||||
| @@ -142,6 +149,8 @@ else | ||||
|     nano_hexapod.actuator.Gs = args.actuator_Gs; % Sensor gain [V/m] | ||||
| end | ||||
|  | ||||
| switch args.actuator_type | ||||
|   case '2dof' | ||||
|     nano_hexapod.actuator.k  = args.actuator_k;  % [N/m] | ||||
|     nano_hexapod.actuator.ke = args.actuator_ke; % [N/m] | ||||
|     nano_hexapod.actuator.ka = args.actuator_ka; % [N/m] | ||||
| @@ -152,21 +161,24 @@ nano_hexapod.actuator.ca = args.actuator_ca; % [N/(m/s)] | ||||
|  | ||||
|     nano_hexapod.actuator.Leq = args.actuator_Leq; % [m] | ||||
|  | ||||
| switch args.actuator_type | ||||
|   case 'flexible frame' | ||||
|     nano_hexapod.actuator.K = readmatrix('APA300ML_b_mat_K.CSV'); % Stiffness Matrix | ||||
|     nano_hexapod.actuator.M = readmatrix('APA300ML_b_mat_M.CSV'); % Mass Matrix | ||||
|     nano_hexapod.actuator.P = extractNodes('APA300ML_b_out_nodes_3D.txt'); % Node coordinates [m] | ||||
|  | ||||
|     nano_hexapod.actuator.ks = args.actuator_ks; % Stiffness of one stack [N/m] | ||||
|     nano_hexapod.actuator.cs = args.actuator_cs; % Damping of one stack [N/m] | ||||
|     nano_hexapod.actuator.xi = args.actuator_xi; % Damping ratio | ||||
|  | ||||
|   case 'flexible' | ||||
|     nano_hexapod.actuator.K = readmatrix('full_APA300ML_K.CSV'); % Stiffness Matrix | ||||
|     nano_hexapod.actuator.M = readmatrix('full_APA300ML_M.CSV'); % Mass Matrix | ||||
|     nano_hexapod.actuator.P = extractNodes('full_APA300ML_out_nodes_3D.txt'); % Node coordiantes [m] | ||||
| end | ||||
|  | ||||
|     nano_hexapod.actuator.d_align = args.actuator_d_align; % Misalignment | ||||
|     nano_hexapod.actuator.xi = args.actuator_xi; % Damping ratio | ||||
|  | ||||
| nano_hexapod.actuator.ks = args.actuator_ks; % Stiffness of one stack [N/m] | ||||
| nano_hexapod.actuator.cs = args.actuator_cs; % Damping of one stack [N/m] | ||||
| end | ||||
|  | ||||
| nano_hexapod.geometry = struct(); | ||||
|  | ||||
| @@ -224,6 +236,8 @@ switch args.controller_type | ||||
|     nano_hexapod.controller.type = 2; | ||||
|   case 'dvf' | ||||
|     nano_hexapod.controller.type = 3; | ||||
|   case 'hac-iff-struts' | ||||
|     nano_hexapod.controller.type = 4; | ||||
| end | ||||
|  | ||||
| if nargout == 0 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user