Change one curve color
This commit is contained in:
@@ -42,50 +42,50 @@ freqs = logspace(log10(10), log10(2e3), 1000);
|
||||
% As any motion stage induces parasitic motion in all 6 DoF, the transformation matrix representing its induced motion can be written as in eqref:eq:ustation_translation_stage_errors.
|
||||
|
||||
% \begin{equation}\label{eq:ustation_translation_stage_errors}
|
||||
% {}^A\mathbf{T}_B(D_x, D_y, D_z, \theta_x, \theta_y, \theta_z) =
|
||||
% {}^A\bm{T}_B(D_x, D_y, D_z, \theta_x, \theta_y, \theta_z) =
|
||||
% \left[ \begin{array}{ccc|c}
|
||||
% & & & D_x \\
|
||||
% & \mathbf{R}_x(\theta_x) \mathbf{R}_y(\theta_y) \mathbf{R}_z(\theta_z) & & D_y \\
|
||||
% & \bm{R}_x(\theta_x) \bm{R}_y(\theta_y) \bm{R}_z(\theta_z) & & D_y \\
|
||||
% & & & D_z \cr
|
||||
% \hline
|
||||
% 0 & 0 & 0 & 1
|
||||
% \end{array} \right]
|
||||
% \end{equation}
|
||||
|
||||
% The homogeneous transformation matrix corresponding to the micro-station $\mathbf{T}_{\mu\text{-station}}$ is simply equal to the matrix multiplication of the homogeneous transformation matrices of the individual stages as shown in Equation eqref:eq:ustation_transformation_station.
|
||||
% The homogeneous transformation matrix corresponding to the micro-station $\bm{T}_{\mu\text{-station}}$ is simply equal to the matrix multiplication of the homogeneous transformation matrices of the individual stages as shown in Equation eqref:eq:ustation_transformation_station.
|
||||
|
||||
% \begin{equation}\label{eq:ustation_transformation_station}
|
||||
% \mathbf{T}_{\mu\text{-station}} = \mathbf{T}_{D_y} \cdot \mathbf{T}_{R_y} \cdot \mathbf{T}_{R_z} \cdot \mathbf{T}_{\mu\text{-hexapod}}
|
||||
% \bm{T}_{\mu\text{-station}} = \bm{T}_{D_y} \cdot \bm{T}_{R_y} \cdot \bm{T}_{R_z} \cdot \bm{T}_{\mu\text{-hexapod}}
|
||||
% \end{equation}
|
||||
|
||||
% $\mathbf{T}_{\mu\text{-station}}$ represents the pose of the sample (supposed to be rigidly fixed on top of the positioning-hexapod) with respect to the granite.
|
||||
% $\bm{T}_{\mu\text{-station}}$ represents the pose of the sample (supposed to be rigidly fixed on top of the positioning-hexapod) with respect to the granite.
|
||||
|
||||
% If the transformation matrices of the individual stages are each representing a perfect motion (i.e. the stages are supposed to have no parasitic motion), $\mathbf{T}_{\mu\text{-station}}$ then represent the pose setpoint of the sample with respect to the granite.
|
||||
% If the transformation matrices of the individual stages are each representing a perfect motion (i.e. the stages are supposed to have no parasitic motion), $\bm{T}_{\mu\text{-station}}$ then represent the pose setpoint of the sample with respect to the granite.
|
||||
% The transformation matrices for the translation stage, tilt stage, spindle, and positioning hexapod can be written as shown in Equation eqref:eq:ustation_transformation_matrices_stages.
|
||||
|
||||
% \begin{equation}\label{eq:ustation_transformation_matrices_stages}
|
||||
% \begin{align}
|
||||
% \mathbf{T}_{D_y} &= \begin{bmatrix}
|
||||
% \bm{T}_{D_y} &= \begin{bmatrix}
|
||||
% 1 & 0 & 0 & 0 \\
|
||||
% 0 & 1 & 0 & D_y \\
|
||||
% 0 & 0 & 1 & 0 \\
|
||||
% 0 & 0 & 0 & 1
|
||||
% \end{bmatrix} \quad
|
||||
% \mathbf{T}_{\mu\text{-hexapod}} =
|
||||
% \bm{T}_{\mu\text{-hexapod}} =
|
||||
% \left[ \begin{array}{ccc|c}
|
||||
% & & & D_{\mu x} \\
|
||||
% & \mathbf{R}_x(\theta_{\mu x}) \mathbf{R}_y(\theta_{\mu y}) \mathbf{R}_{z}(\theta_{\mu z}) & & D_{\mu y} \\
|
||||
% & \bm{R}_x(\theta_{\mu x}) \bm{R}_y(\theta_{\mu y}) \bm{R}_{z}(\theta_{\mu z}) & & D_{\mu y} \\
|
||||
% & & & D_{\mu z} \cr
|
||||
% \hline
|
||||
% 0 & 0 & 0 & 1
|
||||
% \end{array} \right] \\
|
||||
% \mathbf{T}_{R_z} &= \begin{bmatrix}
|
||||
% \bm{T}_{R_z} &= \begin{bmatrix}
|
||||
% \cos(\theta_z) & -\sin(\theta_z) & 0 & 0 \\
|
||||
% \sin(\theta_z) & \cos(\theta_z) & 0 & 0 \\
|
||||
% 0 & 0 & 1 & 0 \\
|
||||
% 0 & 0 & 0 & 1
|
||||
% \end{bmatrix} \quad
|
||||
% \mathbf{T}_{R_y} = \begin{bmatrix}
|
||||
% \bm{T}_{R_y} = \begin{bmatrix}
|
||||
% \cos(\theta_y) & 0 & \sin(\theta_y) & 0 \\
|
||||
% 0 & 1 & 0 & 0 \\
|
||||
% -\sin(\theta_y) & 0 & \cos(\theta_y) & 0 \\
|
||||
|
@@ -31,9 +31,9 @@ freqs = logspace(log10(10), log10(2e3), 1000);
|
||||
% The dynamics of the micro-station was measured by placing accelerometers on each stage and by impacting the translation stage with an instrumented hammer in three directions.
|
||||
% The obtained FRFs were then projected at the CoM of each stage.
|
||||
|
||||
% To gain a first insight into the accuracy of the obtained model, the FRFs from the hammer impacts to the acceleration of each stage were extracted from the Simscape model and compared with the measurements in Figure ref:fig:ustation_comp_com_response.
|
||||
% To gain a first insight into the accuracy of the obtained model, the FRFs from the hammer impacts to the acceleration of each stage were extracted from the multi-body model and compared with the measurements in Figure ref:fig:ustation_comp_com_response.
|
||||
|
||||
% Even though there is some similarity between the model and the measurements (similar overall shapes and amplitudes), it is clear that the Simscape model does not accurately represent the complex micro-station dynamics.
|
||||
% Even though there is some similarity between the model and the measurements (similar overall shapes and amplitudes), it is clear that the multi-body model does not accurately represent the complex micro-station dynamics.
|
||||
% Tuning the numerous model parameters to better match the measurements is a highly non-linear optimization problem that is difficult to solve in practice.
|
||||
|
||||
|
||||
@@ -151,10 +151,10 @@ ylim([1e-6, 1e-1])
|
||||
% #+caption: Schematic of the measurement setup used to estimate the compliance of the micro-station. The top platform of the positioning hexapod is shown with four 3-axis accelerometers (shown in red) are on top. 10 hammer impacts are performed at different locations (shown in blue).
|
||||
% [[file:figs/ustation_compliance_meas.png]]
|
||||
|
||||
% To convert the 12 acceleration signals $a_{\mathcal{L}} = [a_{1x}\ a_{1y}\ a_{1z}\ a_{2x}\ \dots\ a_{4z}]$ to the acceleration expressed in the frame $\{\mathcal{X}\}$ $a_{\mathcal{X}} = [a_{dx}\ a_{dy}\ a_{dz}\ a_{rx}\ a_{ry}\ a_{rz}]$, a Jacobian matrix $\mathbf{J}_a$ is written based on the positions and orientations of the accelerometers eqref:eq:ustation_compliance_acc_jacobian.
|
||||
% To convert the 12 acceleration signals $a_{\mathcal{L}} = [a_{1x}\ a_{1y}\ a_{1z}\ a_{2x}\ \dots\ a_{4z}]$ to the acceleration expressed in the frame $\{\mathcal{X}\}$ $a_{\mathcal{X}} = [a_{dx}\ a_{dy}\ a_{dz}\ a_{rx}\ a_{ry}\ a_{rz}]$, a Jacobian matrix $\bm{J}_a$ is written based on the positions and orientations of the accelerometers eqref:eq:ustation_compliance_acc_jacobian.
|
||||
|
||||
% \begin{equation}\label{eq:ustation_compliance_acc_jacobian}
|
||||
% \mathbf{J}_a = \begin{bmatrix}
|
||||
% \bm{J}_a = \begin{bmatrix}
|
||||
% 1 & 0 & 0 & 0 & 0 &-d \\
|
||||
% 0 & 1 & 0 & 0 & 0 & 0 \\
|
||||
% 0 & 0 & 1 & d & 0 & 0 \\
|
||||
@@ -173,13 +173,13 @@ ylim([1e-6, 1e-1])
|
||||
% Then, the acceleration in the cartesian frame can be computed using eqref:eq:ustation_compute_cart_acc.
|
||||
|
||||
% \begin{equation}\label{eq:ustation_compute_cart_acc}
|
||||
% a_{\mathcal{X}} = \mathbf{J}_a^\dagger \cdot a_{\mathcal{L}}
|
||||
% a_{\mathcal{X}} = \bm{J}_a^\dagger \cdot a_{\mathcal{L}}
|
||||
% \end{equation}
|
||||
|
||||
% Similar to what is done for the accelerometers, a Jacobian matrix $\mathbf{J}_F$ is computed eqref:eq:ustation_compliance_force_jacobian and used to convert the individual hammer forces $F_{\mathcal{L}}$ to force and torques $F_{\mathcal{X}}$ applied at the center of the micro-hexapod top plate (defined by frame $\{\mathcal{X}\}$ in Figure ref:fig:ustation_compliance_meas).
|
||||
% Similar to what is done for the accelerometers, a Jacobian matrix $\bm{J}_F$ is computed eqref:eq:ustation_compliance_force_jacobian and used to convert the individual hammer forces $F_{\mathcal{L}}$ to force and torques $F_{\mathcal{X}}$ applied at the center of the micro-hexapod top plate (defined by frame $\{\mathcal{X}\}$ in Figure ref:fig:ustation_compliance_meas).
|
||||
|
||||
% \begin{equation}\label{eq:ustation_compliance_force_jacobian}
|
||||
% \mathbf{J}_F = \begin{bmatrix}
|
||||
% \bm{J}_F = \begin{bmatrix}
|
||||
% 0 & -1 & 0 & 0 & 0 & 0\\
|
||||
% 0 & 0 & -1 & -d & 0 & 0\\
|
||||
% 1 & 0 & 0 & 0 & 0 & 0\\
|
||||
@@ -196,11 +196,11 @@ ylim([1e-6, 1e-1])
|
||||
% The equivalent forces and torques applied at center of $\{\mathcal{X}\}$ are then computed using eqref:eq:ustation_compute_cart_force.
|
||||
|
||||
% \begin{equation}\label{eq:ustation_compute_cart_force}
|
||||
% F_{\mathcal{X}} = \mathbf{J}_F^t \cdot F_{\mathcal{L}}
|
||||
% F_{\mathcal{X}} = \bm{J}_F^t \cdot F_{\mathcal{L}}
|
||||
% \end{equation}
|
||||
|
||||
% Using the two Jacobian matrices, the FRF from the 10 hammer impacts to the 12 accelerometer outputs can be converted to the FRF from 6 forces/torques applied at the origin of frame $\{\mathcal{X}\}$ to the 6 linear/angular accelerations of the top platform expressed with respect to $\{\mathcal{X}\}$.
|
||||
% These FRFs were then used for comparison with the Simscape model.
|
||||
% These FRFs were then used for comparison with the multi-body model.
|
||||
|
||||
|
||||
% Positions and orientation of accelerometers
|
||||
@@ -379,12 +379,12 @@ Gm.OutputName = {'Dx', 'Dy', 'Dz', 'Drx', 'Dry', 'Drz'};
|
||||
%% Extracted FRF of the compliance of the micro-station in the Cartesian frame from the Simscape model
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, abs(squeeze(FRF_cartesian(1,1,:))), '-', 'color', [colors(1,:), 0.5], 'DisplayName', '$D_x/F_x$ - Measured')
|
||||
plot(f, abs(squeeze(FRF_cartesian(2,2,:))), '-', 'color', [colors(2,:), 0.5], 'DisplayName', '$D_y/F_y$ - Measured')
|
||||
plot(f, abs(squeeze(FRF_cartesian(3,3,:))), '-', 'color', [colors(3,:), 0.5], 'DisplayName', '$D_z/F_z$ - Measured')
|
||||
plot(f, abs(squeeze(freqresp(Gm(1,1), f, 'Hz'))), '--', 'color', colors(1,:), 'DisplayName', '$D_x/F_x$ - Model')
|
||||
plot(f, abs(squeeze(freqresp(Gm(2,2), f, 'Hz'))), '--', 'color', colors(2,:), 'DisplayName', '$D_y/F_y$ - Model')
|
||||
plot(f, abs(squeeze(freqresp(Gm(3,3), f, 'Hz'))), '--', 'color', colors(3,:), 'DisplayName', '$D_z/F_z$ - Model')
|
||||
plot(f, abs(squeeze(FRF_cartesian(1,1,:))), '-', 'color', [colors(1,:), 0.5], 'linewidth', 2.5, 'DisplayName', '$D_x/F_x$ - Measured')
|
||||
plot(f, abs(squeeze(FRF_cartesian(2,2,:))), '-', 'color', [colors(2,:), 0.5], 'linewidth', 2.5, 'DisplayName', '$D_y/F_y$ - Measured')
|
||||
plot(f, abs(squeeze(FRF_cartesian(3,3,:))), '-', 'color', [colors(3,:), 0.5], 'linewidth', 2.5, 'DisplayName', '$D_z/F_z$ - Measured')
|
||||
plot(f, abs(squeeze(freqresp(Gm(1,1), f, 'Hz'))), '-', 'color', colors(1,:), 'DisplayName', '$D_x/F_x$ - Model')
|
||||
plot(f, abs(squeeze(freqresp(Gm(2,2), f, 'Hz'))), '-', 'color', colors(2,:), 'DisplayName', '$D_y/F_y$ - Model')
|
||||
plot(f, abs(squeeze(freqresp(Gm(3,3), f, 'Hz'))), '-', 'color', colors(3,:), 'DisplayName', '$D_z/F_z$ - Model')
|
||||
hold off;
|
||||
leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 2);
|
||||
leg.ItemTokenSize(1) = 15;
|
||||
@@ -396,12 +396,12 @@ xticks([20, 50, 100, 200, 500])
|
||||
%% Extracted FRF of the compliance of the micro-station in the Cartesian frame from the Simscape model
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, abs(squeeze(FRF_cartesian(4,4,:))), '-', 'color', [colors(1,:), 0.5], 'DisplayName', '$R_x/M_x$ - Measured')
|
||||
plot(f, abs(squeeze(FRF_cartesian(5,5,:))), '-', 'color', [colors(2,:), 0.5], 'DisplayName', '$R_y/M_y$ - Measured')
|
||||
plot(f, abs(squeeze(FRF_cartesian(6,6,:))), '-', 'color', [colors(3,:), 0.5], 'DisplayName', '$R_z/M_z$ - Measured')
|
||||
plot(f, abs(squeeze(freqresp(Gm(4,4), f, 'Hz'))), '--', 'color', colors(1,:), 'DisplayName', '$R_x/M_x$ - Model')
|
||||
plot(f, abs(squeeze(freqresp(Gm(5,5), f, 'Hz'))), '--', 'color', colors(2,:), 'DisplayName', '$R_y/M_y$ - Model')
|
||||
plot(f, abs(squeeze(freqresp(Gm(6,6), f, 'Hz'))), '--', 'color', colors(3,:), 'DisplayName', '$R_z/M_z$ - Model')
|
||||
plot(f, abs(squeeze(FRF_cartesian(4,4,:))), '-', 'color', [colors(1,:), 0.5], 'linewidth', 2.5, 'DisplayName', '$R_x/M_x$ - Measured')
|
||||
plot(f, abs(squeeze(FRF_cartesian(5,5,:))), '-', 'color', [colors(2,:), 0.5], 'linewidth', 2.5, 'DisplayName', '$R_y/M_y$ - Measured')
|
||||
plot(f, abs(squeeze(FRF_cartesian(6,6,:))), '-', 'color', [colors(3,:), 0.5], 'linewidth', 2.5, 'DisplayName', '$R_z/M_z$ - Measured')
|
||||
plot(f, abs(squeeze(freqresp(Gm(4,4), f, 'Hz'))), '-', 'color', colors(1,:), 'DisplayName', '$R_x/M_x$ - Model')
|
||||
plot(f, abs(squeeze(freqresp(Gm(5,5), f, 'Hz'))), '-', 'color', colors(2,:), 'DisplayName', '$R_y/M_y$ - Model')
|
||||
plot(f, abs(squeeze(freqresp(Gm(6,6), f, 'Hz'))), '-', 'color', colors(3,:), 'DisplayName', '$R_z/M_z$ - Model')
|
||||
hold off;
|
||||
leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 2);
|
||||
leg.ItemTokenSize(1) = 15;
|
||||
|
@@ -27,7 +27,7 @@ freqs = logspace(log10(10), log10(2e3), 1000);
|
||||
|
||||
% Ground Motion
|
||||
|
||||
% The ground motion was measured by using a sensitive 3-axis geophone[fn:11] placed on the ground.
|
||||
% The ground motion was measured by using a sensitive 3-axis geophone[fn:ustation_11] placed on the ground.
|
||||
% The generated voltages were recorded with a high resolution DAC, and converted to displacement using the Geophone sensitivity transfer function.
|
||||
% The obtained ground motion displacement is shown in Figure ref:fig:ustation_ground_disturbance.
|
||||
|
||||
@@ -72,7 +72,7 @@ leg.ItemTokenSize(1) = 15;
|
||||
% Ty Stage
|
||||
|
||||
% To measure the positioning errors of the translation stage, the setup shown in Figure ref:fig:ustation_errors_ty_setup is used.
|
||||
% A special optical element (called a "straightness interferometer"[fn:9]) is fixed on top of the micro-station, while a laser source[fn:10] and a straightness reflector are fixed on the ground.
|
||||
% A special optical element (called a "straightness interferometer"[fn:ustation_9]) is fixed on top of the micro-station, while a laser source[fn:ustation_10] and a straightness reflector are fixed on the ground.
|
||||
% A similar setup was used to measure the horizontal deviation (i.e. in the $x$ direction), as well as the pitch and yaw errors of the translation stage.
|
||||
|
||||
% #+name: fig:ustation_errors_ty_setup
|
||||
@@ -156,9 +156,9 @@ pxx_dy_dx = pxx_dy_dz;
|
||||
|
||||
% Spindle
|
||||
|
||||
% To measure the positioning errors induced by the Spindle, a "Spindle error analyzer"[fn:7] is used as shown in Figure ref:fig:ustation_rz_meas_lion_setup.
|
||||
% To measure the positioning errors induced by the Spindle, a "Spindle error analyzer"[fn:ustation_7] is used as shown in Figure ref:fig:ustation_rz_meas_lion_setup.
|
||||
% A specific target is fixed on top of the micro-station, which consists of two sphere with 1 inch diameter precisely aligned with the spindle rotation axis.
|
||||
% Five capacitive sensors[fn:8] are pointing at the two spheres, as shown in Figure ref:fig:ustation_rz_meas_lion_zoom.
|
||||
% Five capacitive sensors[fn:ustation_8] are pointing at the two spheres, as shown in Figure ref:fig:ustation_rz_meas_lion_zoom.
|
||||
% From the 5 measured displacements $[d_1,\,d_2,\,d_3,\,d_4,\,d_5]$, the translations and rotations $[D_x,\,D_y,\,D_z,\,R_x,\,R_y]$ of the target can be estimated.
|
||||
|
||||
% #+name: fig:ustation_rz_meas_lion_setup
|
||||
@@ -364,7 +364,7 @@ leg.ItemTokenSize(1) = 15;
|
||||
% Obtained disturbance sources
|
||||
% <<ssec:ustation_disturbances_results>>
|
||||
|
||||
% From the measured effect of disturbances in Section ref:ssec:ustation_disturbances_meas and the sensitivity to disturbances extracted from the Simscape model in Section ref:ssec:ustation_disturbances_sensitivity, the power spectral density of the disturbance sources (i.e. forces applied in the stage's joint) can be estimated.
|
||||
% From the measured effect of disturbances in Section ref:ssec:ustation_disturbances_meas and the sensitivity to disturbances extracted from the multi-body model in Section ref:ssec:ustation_disturbances_sensitivity, the power spectral density of the disturbance sources (i.e. forces applied in the stage's joint) can be estimated.
|
||||
% The obtained power spectral density of the disturbances are shown in Figure ref:fig:ustation_dist_sources.
|
||||
|
||||
|
||||
@@ -497,5 +497,5 @@ plot(Dw.t, 1e6*Dw.y, 'DisplayName', '$D_{yf}$');
|
||||
plot(Dw.t, 1e6*Dw.z, 'DisplayName', '$D_{zf}$');
|
||||
xlabel('Time [s]'); ylabel('Amplitude [$\mu$m]')
|
||||
xlim([0, 1]); ylim([-0.6, 0.6])
|
||||
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1);
|
||||
leg = legend('location', 'northwest', 'FontSize', 8, 'NumColumns', 1);
|
||||
leg.ItemTokenSize(1) = 15;
|
||||
|
Reference in New Issue
Block a user