function [] = describeNassSetup() % describeNassSetup - % % Syntax: [] = describeNassSetup() % % Inputs: % - - % % Outputs: % - - load('./mat/conf_simscape.mat', 'conf_simscape'); fprintf('Simscape Configuration:\n'); if conf_simscape.type == 1 fprintf('- Gravity is included\n'); else fprintf('- Gravity is not included\n'); end fprintf('\n'); load('./mat/nass_disturbances.mat', 'args'); fprintf('Disturbances:\n'); if ~args.enable fprintf('- No disturbance is included\n'); else if args.Dwx && args.Dwy && args.Dwz fprintf('- Ground motion\n'); end if args.Fty_x && args.Fty_z fprintf('- Vibrations of the Translation Stage\n'); end if args.Frz_z fprintf('- Vibrations of the Spindle\n'); end end fprintf('\n'); load('./mat/nass_references.mat', 'args'); fprintf('Reference Tracking:\n'); fprintf('- Translation Stage:\n'); switch args.Dy_type case 'constant' fprintf(' - Constant Position\n'); fprintf(' - Dy = %.0f [mm]\n', args.Dy_amplitude*1e3); case 'triangular' fprintf(' - Triangular Path\n'); fprintf(' - Amplitude = %.0f [mm]\n', args.Dy_amplitude*1e3); fprintf(' - Period = %.0f [s]\n', args.Dy_period); case 'sinusoidal' fprintf(' - Sinusoidal Path\n'); fprintf(' - Amplitude = %.0f [mm]\n', args.Dy_amplitude*1e3); fprintf(' - Period = %.0f [s]\n', args.Dy_period); end fprintf('- Tilt Stage:\n'); switch args.Ry_type case 'constant' fprintf(' - Constant Position\n'); fprintf(' - Ry = %.0f [mm]\n', args.Ry_amplitude*1e3); case 'triangular' fprintf(' - Triangular Path\n'); fprintf(' - Amplitude = %.0f [mm]\n', args.Ry_amplitude*1e3); fprintf(' - Period = %.0f [s]\n', args.Ry_period); case 'sinusoidal' fprintf(' - Sinusoidal Path\n'); fprintf(' - Amplitude = %.0f [mm]\n', args.Ry_amplitude*1e3); fprintf(' - Period = %.0f [s]\n', args.Ry_period); end fprintf('- Spindle:\n'); switch args.Rz_type case 'constant' fprintf(' - Constant Position\n'); fprintf(' - Rz = %.0f [deg]\n', 180/pi*args.Rz_amplitude); case { 'rotating', 'rotating-not-filtered' } fprintf(' - Rotating\n'); fprintf(' - Speed = %.0f [rpm]\n', 60/Rz_period); end fprintf('- Micro Hexapod:\n'); switch args.Dh_type case 'constant' fprintf(' - Constant Position\n'); fprintf(' - Dh = %.0f, %.0f, %.0f [mm]\n', args.Dh_pos(1), args.Dh_pos(2), args.Dh_pos(3)); fprintf(' - Rh = %.0f, %.0f, %.0f [deg]\n', args.Dh_pos(4), args.Dh_pos(5), args.Dh_pos(6)); end fprintf('\n'); load('./mat/controller.mat', 'controller'); fprintf('Controller:\n'); fprintf('- %s\n', controller.name); fprintf('\n'); load('./mat/stages.mat', 'ground', 'granite', 'ty', 'ry', 'rz', 'micro_hexapod', 'axisc'); fprintf('Micro Station:\n'); if granite.type == 1 && ... ty.type == 1 && ... ry.type == 1 && ... rz.type == 1 && ... micro_hexapod.type == 1; fprintf('- All stages are rigid\n'); elseif granite.type == 2 && ... ty.type == 2 && ... ry.type == 2 && ... rz.type == 2 && ... micro_hexapod.type == 2; fprintf('- All stages are flexible\n'); else if granite.type == 1 || granite.type == 4 fprintf('- Granite is rigid\n'); else fprintf('- Granite is flexible\n'); end if ty.type == 1 || ty.type == 4 fprintf('- Translation Stage is rigid\n'); else fprintf('- Translation Stage is flexible\n'); end if ry.type == 1 || ry.type == 4 fprintf('- Tilt Stage is rigid\n'); else fprintf('- Tilt Stage is flexible\n'); end if rz.type == 1 || rz.type == 4 fprintf('- Spindle is rigid\n'); else fprintf('- Spindle is flexible\n'); end if micro_hexapod.type == 1 || micro_hexapod.type == 4 fprintf('- Micro Hexapod is rigid\n'); else fprintf('- Micro Hexapod is flexible\n'); end end fprintf('\n'); load('./mat/stages.mat', 'mirror'); fprintf('Reference Mirror:\n'); if mirror.type == 2; fprintf('- flexible fixation\n'); fprintf('- w = %.0f [Hz]\n', mirror.freq(1)); else fprintf('- rigidly attached to the nano-hexapod\n'); end fprintf('- m = %.0f [kg]\n', mirror.mass); fprintf('\n'); load('./mat/stages.mat', 'nano_hexapod'); fprintf('Nano Hexapod:\n'); if nano_hexapod.type == 0; fprintf('- no included\n'); elseif nano_hexapod.type == 1 || nano_hexapod.type == 3; fprintf('- rigid\n'); elseif nano_hexapod.type == 2; fprintf('- flexible\n'); fprintf('- Ki = %.0g [N/m]\n', nano_hexapod.Ki(1)); end fprintf('\n'); load('./mat/stages.mat', 'sample'); fprintf('Sample:\n'); if sample.type == 0; fprintf('- no included\n'); elseif sample.type == 1 || sample.type == 3; fprintf('- rigid\n'); fprintf('- mass = %.0f [kg]\n', sample.mass); fprintf('- moment of inertia = %.2f, %.2f, %.2f [kg m2]\n', sample.inertia(1), sample.inertia(2), sample.inertia(3)); elseif sample.type == 2; fprintf('- flexible\n'); fprintf('- mass = %.0f [kg]\n', sample.mass); fprintf('- moment of inertia = %.2f, %.2f, %.2f [kg m2]\n', sample.inertia(1), sample.inertia(2), sample.inertia(3)); % fprintf('- Kt = %.0g, %.0g, %.0g [N/m]\n', sample.K(1), sample.K(2), sample.K(3)); % fprintf('- Kr = %.0g, %.0g, %.0g [Nm/rad]\n', sample.K(4), sample.K(5), sample.K(6)); fprintf('- wt(x,y,z) = %.0f, %.0f, %.0f [Hz]\n', 1/2/pi*sqrt(sample.K(1)/sample.mass), 1/2/pi*sqrt(sample.K(1)/sample.mass), 1/2/pi*sqrt(sample.K(1)/sample.mass)); fprintf('- wr(x,y,z) = %.0f, %.0f, %.0f [Hz]\n', 1/2/pi*sqrt(sample.K(4)/sample.inertia(1)), 1/2/pi*sqrt(sample.K(5)/sample.inertia(2)), 1/2/pi*sqrt(sample.K(6)/sample.inertia(3))); end fprintf('\n');