UP | HOME

Tomography Experiment

Table of Contents

The goal here is to simulate some scientific experiments with the tuned Simscape model when no control is applied to the nano-hexapod.

This has several goals:

The document in organized as follow:

1 Simscape Model

The simulink file to do tomography experiments is sim_nano_station_tomo.slx.

open('experiment_tomography/matlab/sim_nano_station_tomo.slx')

We load the shared simulink configuration and we set the StopTime.

load('mat/conf_simscape.mat');
set_param(conf_simscape, 'StopTime', '5');

We first initialize all the stages.

initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
initializeNanoHexapod(struct('actuator', 'piezo'));
initializeSample(struct('mass', 1));

We initialize the reference path for all the stages. All stage is set to its zero position except the Spindle which is rotating at 60rpm.

initializeReferences(struct('Rz_type', 'rotating', 'Rz_period', 1));

2 Tomography Experiment with no disturbances

2.1 Simulation Setup

And we initialize the disturbances to be equal to zero.

opts = struct(...
    'Dwx', false, ... % Ground Motion - X direction
    'Dwy', false, ... % Ground Motion - Y direction
    'Dwz', false, ... % Ground Motion - Z direction
    'Fty_x', false, ... % Translation Stage - X direction
    'Fty_z', false, ... % Translation Stage - Z direction
    'Frz_z', false  ... % Spindle - Z direction
);
initDisturbances(opts);

We simulate the model.

sim('sim_nano_station_tomo');

And we save the obtained data.

tomo_align_no_dist = struct('t', t, 'MTr', MTr);
save('experiment_tomography/mat/experiment.mat', 'tomo_align_no_dist', '-append');

2.2 Analysis

load('experiment_tomography/mat/experiment.mat', 'tomo_align_no_dist');
t = tomo_align_no_dist.t;
MTr = tomo_align_no_dist.MTr;
Edx = squeeze(MTr(1, 4, :));
Edy = squeeze(MTr(2, 4, :));
Edz = squeeze(MTr(3, 4, :));
% The angles obtained are u-v-w Euler angles (rotations in the moving frame)
Ery = atan2( squeeze(MTr(1, 3, :)),           squeeze(sqrt(MTr(1, 1, :).^2 + MTr(1, 2, :).^2)));
Erx = atan2(-squeeze(MTr(2, 3, :))./cos(Ery), squeeze(MTr(3, 3, :))./cos(Ery));
Erz = atan2(-squeeze(MTr(1, 2, :))./cos(Ery), squeeze(MTr(1, 1, :))./cos(Ery));

exp_tomo_without_dist_trans.png

Figure 1: X-Y-Z translation of the sample w.r.t. granite when performing tomography experiment with no disturbances (png, pdf)

exp_tomo_without_dist_rot.png

Figure 2: X-Y-Z rotations of the sample w.r.t. granite when performing tomography experiment with no disturbances (png, pdf)

2.3 Conclusion

When everything is aligned, the resulting error motion is very small (nm range) and is quite negligible with respect to the error when disturbances are included. This residual error motion probably comes from a small misalignment somewhere.

3 Tomography Experiment with included perturbations

3.1 Simulation Setup

We now activate the disturbances.

opts = struct(...
    'Dwx', true, ... % Ground Motion - X direction
    'Dwy', true, ... % Ground Motion - Y direction
    'Dwz', true, ... % Ground Motion - Z direction
    'Fty_x', true, ... % Translation Stage - X direction
    'Fty_z', true, ... % Translation Stage - Z direction
    'Frz_z', true  ... % Spindle - Z direction
);
initDisturbances(opts);

We simulate the model.

sim('sim_nano_station_tomo');

And we save the obtained data.

tomo_align_dist = struct('t', t, 'MTr', MTr);
save('experiment_tomography/mat/experiment.mat', 'tomo_align_dist', '-append');

3.2 Analysis

load('experiment_tomography/mat/experiment.mat', 'tomo_align_dist');
t = tomo_align_dist.t;
MTr = tomo_align_dist.MTr;
Edx = squeeze(MTr(1, 4, :));
Edy = squeeze(MTr(2, 4, :));
Edz = squeeze(MTr(3, 4, :));
% The angles obtained are u-v-w Euler angles (rotations in the moving frame)
Ery = atan2( squeeze(MTr(1, 3, :)),           squeeze(sqrt(MTr(1, 1, :).^2 + MTr(1, 2, :).^2)));
Erx = atan2(-squeeze(MTr(2, 3, :))./cos(Ery), squeeze(MTr(3, 3, :))./cos(Ery));
Erz = atan2(-squeeze(MTr(1, 2, :))./cos(Ery), squeeze(MTr(1, 1, :))./cos(Ery));

exp_tomo_dist_trans.png

Figure 3: X-Y-Z translation of the sample w.r.t. the granite when performing tomography experiment with disturbances (png, pdf)

exp_tomo_dist_rot.png

Figure 4: X-Y-Z rotations of the sample w.r.t. the granite when performing tomography experiment with disturbances (png, pdf)

3.3 Conclusion

Error motion is what expected from the disturbance measurements.

4 Tomography when the micro-hexapod is not centered

4.1 Simulation Setup

We first set the wanted translation of the Micro Hexapod.

P_micro_hexapod = [0.01; 0; 0]; % [m]

We initialize the reference path.

initializeReferences(struct('Dh_pos', [P_micro_hexapod; 0; 0; 0], 'Rz_type', 'rotating', 'Rz_period', 1));

We initialize the stages.

initializeMicroHexapod(struct('AP', P_micro_hexapod));

And we initialize the disturbances to zero.

opts = struct(...
    'Dwx', false, ... % Ground Motion - X direction
    'Dwy', false, ... % Ground Motion - Y direction
    'Dwz', false, ... % Ground Motion - Z direction
    'Fty_x', false, ... % Translation Stage - X direction
    'Fty_z', false, ... % Translation Stage - Z direction
    'Frz_z', false  ... % Spindle - Z direction
);
initDisturbances(opts);

We simulate the model.

sim('sim_nano_station_tomo');

And we save the obtained data.

tomo_not_align = struct('t', t, 'MTr', MTr);
save('experiment_tomography/mat/experiment.mat', 'tomo_not_align', '-append');

4.2 Analysis

load('experiment_tomography/mat/experiment.mat', 'tomo_not_align');
t = tomo_not_align.t;
MTr = tomo_not_align.MTr;
Edx = squeeze(MTr(1, 4, :));
Edy = squeeze(MTr(2, 4, :));
Edz = squeeze(MTr(3, 4, :));
% The angles obtained are u-v-w Euler angles (rotations in the moving frame)
Ery = atan2( squeeze(MTr(1, 3, :)),           squeeze(sqrt(MTr(1, 1, :).^2 + MTr(1, 2, :).^2)));
Erx = atan2(-squeeze(MTr(2, 3, :))./cos(Ery), squeeze(MTr(3, 3, :))./cos(Ery));
Erz = atan2(-squeeze(MTr(1, 2, :))./cos(Ery), squeeze(MTr(1, 1, :))./cos(Ery));

exp_tomo_offset_trans.png

Figure 5: X-Y-Z translation of the sample w.r.t. granite when performing tomography experiment with no disturbances (png, pdf)

exp_tomo_offset_rot.png

Figure 6: X-Y-Z rotations of the sample w.r.t. granite when performing tomography experiment with no disturbances (png, pdf)

4.3 Conclusion

The main motions are translations in the X direction of the mobile platform (corresponds to the eccentricity of the micro-hexapod) and rotations along the rotating Y axis.

5 Raster Scans with the translation stage

5.1 Simulation Setup

We set the reference path.

initializeReferences(struct('Dy_type', 'triangular', 'Dy_amplitude', 10e-3, 'Dy_period', 1));

We initialize the stages.

initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
initializeNanoHexapod(struct('actuator', 'piezo'));
initializeSample(struct('mass', 1));

And we initialize the disturbances to zero.

opts = struct(...
    'Dwx', false, ... % Ground Motion - X direction
    'Dwy', false, ... % Ground Motion - Y direction
    'Dwz', false, ... % Ground Motion - Z direction
    'Fty_x', false, ... % Translation Stage - X direction
    'Fty_z', false, ... % Translation Stage - Z direction
    'Frz_z', false  ... % Spindle - Z direction
);
initDisturbances(opts);

We simulate the model.

sim('sim_nano_station_tomo');

And we save the obtained data.

ty_scan = struct('t', t, 'MTr', MTr);
save('experiment_tomography/mat/experiment.mat', 'ty_scan', '-append');

5.2 Analysis

load('experiment_tomography/mat/experiment.mat', 'ty_scan');
t = ty_scan.t;
MTr = ty_scan.MTr;
Edx = squeeze(MTr(1, 4, :));
Edy = squeeze(MTr(2, 4, :));
Edz = squeeze(MTr(3, 4, :));
% The angles obtained are u-v-w Euler angles (rotations in the moving frame)
Ery = atan2( squeeze(MTr(1, 3, :)),           squeeze(sqrt(MTr(1, 1, :).^2 + MTr(1, 2, :).^2)));
Erx = atan2(-squeeze(MTr(2, 3, :))./cos(Ery), squeeze(MTr(3, 3, :))./cos(Ery));
Erz = atan2(-squeeze(MTr(1, 2, :))./cos(Ery), squeeze(MTr(1, 1, :))./cos(Ery));

exp_ty_scan_trans.png

Figure 7: X-Y-Z translation of the sample w.r.t. granite when performing tomography experiment with no disturbances (png, pdf)

exp_ty_scan_rot.png

Figure 8: X-Y-Z rotations of the sample w.r.t. granite when performing tomography experiment with no disturbances (png, pdf)

5.3 Conclusion

This is logic that the main error moving is translation along the Y axis and rotation along the X axis. In order to reduce the errors, we can make a smoother reference path for the translation stage.

Author: Dehaeze Thomas

Created: 2019-12-17 mar. 18:01

Validate