Update few experimental figures

This commit is contained in:
Thomas Dehaeze 2025-01-31 16:33:25 +01:00
parent f04f2b56b5
commit 6526acaa9e
52 changed files with 1801 additions and 812 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 29 KiB

21
matlab/src/circlefit.m Normal file
View File

@ -0,0 +1,21 @@
function [xc,yc,R,a] = circlefit(x,y)
%
% [xc yx R] = circfit(x,y)
%
% fits a circle in x,y plane in a more accurate
% (less prone to ill condition )
% procedure than circfit2 but using more memory
% x,y are column vector where (x(i),y(i)) is a measured point
%
% result is center point (yc,xc) and radius R
% an optional output is the vector of coeficient a
% describing the circle's equation
%
% x^2+y^2+a(1)*x+a(2)*y+a(3)=0
%
% By: Izhak bucher 25/oct /1991,
x=x(:); y=y(:);
a=[x y ones(size(x))]\[-(x.^2+y.^2)];
xc = -.5*a(1);
yc = -.5*a(2);
R = sqrt((a(1)^2+a(2)^2)/4-a(3));

11
matlab/src/unwrapphase.m Normal file
View File

@ -0,0 +1,11 @@
function [unwraped_phase] = unwrapphase(frf, f, args)
arguments
frf
f
args.f0 (1,1) double {mustBeNumeric} = 1
end
unwraped_phase = unwrap(frf);
[~,i] = min(abs(f - args.f0));
unwraped_phase = unwraped_phase - 2*pi*round(unwraped_phase(i)./(2*pi));

View File

@ -11,6 +11,27 @@
@inproceedings{dehaeze22_fastj_uhv,
author = {Thomas Dehaeze and Ludovic Ducott{\'e}},
title = {The Fastjack - A robust, UHV compatible and high
performance linear actuator},
year = 2022,
organization = {EUSPEN},
}
@article{janvier13_icepap,
author = {Janvier, N and Clement, JM and Fajardo, P and Cun{\'\i}, G},
title = {Icepap: an Advanced Motor Controller for Scientific
Applications in Large User Facilities},
journal = {TUPPC081, ICALEPCS2013, San Francisco},
volume = 2016,
year = 2013,
keywords = {esrf},
}
@article{hino18_posit_encod_proces_unit, @article{hino18_posit_encod_proces_unit,
author = {Ricardo Hino and Pablo Fajardo and Nicolas Janvier and author = {Ricardo Hino and Pablo Fajardo and Nicolas Janvier and
Thierry Le Ca{\"e}r and Fabien Le Mentec}, Thierry Le Ca{\"e}r and Fabien Le Mentec},
@ -25,3 +46,5 @@
url = url =
{http://jacow.org/icalepcs2017/doi/JACoW-ICALEPCS2017-THPHA072.html}, {http://jacow.org/icalepcs2017/doi/JACoW-ICALEPCS2017-THPHA072.html},
} }

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -1,4 +1,4 @@
% Created 2024-11-15 Fri 18:44 % Created 2025-01-31 Fri 14:50
% Intended LaTeX compiler: pdflatex % Intended LaTeX compiler: pdflatex
\documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt} \documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt}
@ -205,7 +205,6 @@ Results are summarized in Table \ref{tab:test_id31_metrology_acceptance}.
The obtained lateral acceptance for pure displacements in any direction is estimated to be around \(+/-0.5\,mm\), which is enough for the current application as it is well above the micro-station errors to be actively corrected. The obtained lateral acceptance for pure displacements in any direction is estimated to be around \(+/-0.5\,mm\), which is enough for the current application as it is well above the micro-station errors to be actively corrected.
\begin{table}[htbp] \begin{table}[htbp]
\caption{\label{tab:test_id31_metrology_acceptance}Estimated measurement range for each interferometer, and for three different directions.}
\centering \centering
\begin{tabularx}{0.45\linewidth}{Xccc} \begin{tabularx}{0.45\linewidth}{Xccc}
\toprule \toprule
@ -218,6 +217,8 @@ The obtained lateral acceptance for pure displacements in any direction is estim
\(d_5\) (z) & \(1.33\, mm\) & \(1.06\,mm\) & \(>2\,mm\)\\ \(d_5\) (z) & \(1.33\, mm\) & \(1.06\,mm\) & \(>2\,mm\)\\
\bottomrule \bottomrule
\end{tabularx} \end{tabularx}
\caption{\label{tab:test_id31_metrology_acceptance}Estimated measurement range for each interferometer, and for three different directions.}
\end{table} \end{table}
@ -345,6 +346,8 @@ Results shown in Figure \ref{fig:test_id31_Rz_align_correct} are indeed indicati
The plant dynamics is identified after the fine alignment and is compared with the model dynamics in Figure \ref{fig:test_id31_first_id_int_better_rz_align}. The plant dynamics is identified after the fine alignment and is compared with the model dynamics in Figure \ref{fig:test_id31_first_id_int_better_rz_align}.
Compared to the initial identification shown in Figure \ref{fig:test_id31_first_id_int}, the obtained coupling has decreased and is now close to the coupling obtained with the multi-body model. Compared to the initial identification shown in Figure \ref{fig:test_id31_first_id_int}, the obtained coupling has decreased and is now close to the coupling obtained with the multi-body model.
At low frequency (below \(10\,\text{Hz}\)) all the off-diagonal elements have an amplitude \(\approx 100\) times lower compared to the diagonal elements, indicating that a low bandwidth feedback controller can be implemented in a decentralized way (i.e. \(6\) SISO controllers). At low frequency (below \(10\,\text{Hz}\)) all the off-diagonal elements have an amplitude \(\approx 100\) times lower compared to the diagonal elements, indicating that a low bandwidth feedback controller can be implemented in a decentralized way (i.e. \(6\) SISO controllers).
Between \(650\,\text{Hz}\) and \(1000\,\text{Hz}\), several modes can be observed that are due to flexible modes of the top platform and modes of the two spheres adjustment mechanism.
The flexible modes of the top platform can be passively damped while the modes of the two reference spheres should not be present in the final application.
\begin{figure}[htbp] \begin{figure}[htbp]
\centering \centering
@ -401,7 +404,7 @@ It is interesting to note that the anti-resonances in the force sensor plant are
\end{center} \end{center}
\subcaption{\label{fig:test_id31_comp_simscape_iff_diag_masses}from $u$ to $V_s$} \subcaption{\label{fig:test_id31_comp_simscape_iff_diag_masses}from $u$ to $V_s$}
\end{subfigure} \end{subfigure}
\caption{\label{fig:test_nhexa_comp_simscape_diag_masses}Comparison of the diagonal elements (i.e. ``direct'' terms) of the measured FRF matrix and the dynamics identified from the Simscape model. Both for the dynamics from \(u\) to \(e\mathcal{L}\) (\subref{fig:test_id31_comp_simscape_int_diag_masses}) and from \(u\) to \(V_s\) (\subref{fig:test_id31_comp_simscape_iff_diag_masses})} \caption{\label{fig:test_nhexa_comp_simscape_diag_masses}Comparison of the diagonal elements (i.e. ``direct'' terms) of the measured FRF matrix and the dynamics identified from the multi-body model. Both for the dynamics from \(u\) to \(e\mathcal{L}\) (\subref{fig:test_id31_comp_simscape_int_diag_masses}) and from \(u\) to \(V_s\) (\subref{fig:test_id31_comp_simscape_iff_diag_masses})}
\end{figure} \end{figure}
\section{Effect of Spindle Rotation} \section{Effect of Spindle Rotation}
@ -432,13 +435,6 @@ This also indicates that the metrology kinematics is correct and is working in r
\caption{\label{fig:test_id31_effect_rotation}Effect of the spindle rotation on the plant dynamics from \(u\) to \(e\mathcal{L}\). Three rotational velocities are tested (\(0\,\text{deg}/s\), \(36\,\text{deg}/s\) and \(180\,\text{deg}/s\)). Both direct terms (\subref{fig:test_id31_effect_rotation_direct}) and coupling terms (\subref{fig:test_id31_effect_rotation_coupling}) are displayed.} \caption{\label{fig:test_id31_effect_rotation}Effect of the spindle rotation on the plant dynamics from \(u\) to \(e\mathcal{L}\). Three rotational velocities are tested (\(0\,\text{deg}/s\), \(36\,\text{deg}/s\) and \(180\,\text{deg}/s\)). Both direct terms (\subref{fig:test_id31_effect_rotation_direct}) and coupling terms (\subref{fig:test_id31_effect_rotation_coupling}) are displayed.}
\end{figure} \end{figure}
\section{Identification of Spurious modes}
\begin{itemize}
\item[{$\square$}] These are made to identify the modes of the spheres
\item[{$\square$}] Also discuss other observed modes
\end{itemize}
\section*{Conclusion} \section*{Conclusion}
Thanks to the model, poor alignment between the nano-hexapod axes and the external metrology axes could be identified. Thanks to the model, poor alignment between the nano-hexapod axes and the external metrology axes could be identified.
After alignment, the identified dynamics is well matching with the multi-body model. After alignment, the identified dynamics is well matching with the multi-body model.
@ -609,6 +605,10 @@ This is one of the key benefit of using the HAC-LAC strategy.
\caption{\label{fig:test_id31_hac_plant_effect_mass_comp_model}Comparison of the measured damped plants and modeled plants for all considered payloads, only ``direct'' terms (\(\epsilon\mathcal{L}_i/u_i^\prime\)) are displayed (\subref{fig:test_id31_hac_plant_effect_mass}). Comparison of all undamped \(\epsilon\mathcal{L}_i/u_i\) and damped \(\epsilon\mathcal{L}_i/u_i^\prime\) measured frequency response functions for all payloads is done in (\subref{fig:test_id31_comp_all_undamped_damped_plants}).} \caption{\label{fig:test_id31_hac_plant_effect_mass_comp_model}Comparison of the measured damped plants and modeled plants for all considered payloads, only ``direct'' terms (\(\epsilon\mathcal{L}_i/u_i^\prime\)) are displayed (\subref{fig:test_id31_hac_plant_effect_mass}). Comparison of all undamped \(\epsilon\mathcal{L}_i/u_i\) and damped \(\epsilon\mathcal{L}_i/u_i^\prime\) measured frequency response functions for all payloads is done in (\subref{fig:test_id31_comp_all_undamped_damped_plants}).}
\end{figure} \end{figure}
\section{Interaction Analysis}
Decoupled system up to 10Hz
Higher coupling for higher masses (when considering control in the frame of the struts)
\section{Robust Controller Design} \section{Robust Controller Design}
\label{ssec:test_id31_iff_hac_controller} \label{ssec:test_id31_iff_hac_controller}
@ -639,7 +639,7 @@ The closed-loop stability is verified by computing the characteristic Loci (Figu
\caption{\label{fig:test_id31_hac_loop_gain_loci}Robust High Authority Controller. ``Decentralized loop-gains'' are shown in (\subref{fig:test_id31_hac_loop_gain}) and characteristic loci are shown in (\subref{fig:test_id31_hac_characteristic_loci})} \caption{\label{fig:test_id31_hac_loop_gain_loci}Robust High Authority Controller. ``Decentralized loop-gains'' are shown in (\subref{fig:test_id31_hac_loop_gain}) and characteristic loci are shown in (\subref{fig:test_id31_hac_characteristic_loci})}
\end{figure} \end{figure}
\section{Estimation of performances} \section{Estimation of performances with Tomography scans}
\label{ssec:test_id31_iff_hac_perf} \label{ssec:test_id31_iff_hac_perf}
To estimate the performances that can be expected with this HAC-LAC architecture and the designed controllers, two simulations of tomography experiments were performed\footnote{Note that the eccentricity of the ``point of interest'' with respect to the Spindle rotation axis has been tuned from the measurements.}. To estimate the performances that can be expected with this HAC-LAC architecture and the designed controllers, two simulations of tomography experiments were performed\footnote{Note that the eccentricity of the ``point of interest'' with respect to the Spindle rotation axis has been tuned from the measurements.}.
@ -665,6 +665,10 @@ An open-loop simulation and a closed-loop simulation were performed and compared
Then the same tomography experiment (i.e. constant spindle rotation at 30rpm, and no payload) was performed experimentally. Then the same tomography experiment (i.e. constant spindle rotation at 30rpm, and no payload) was performed experimentally.
The measured position of the ``point of interest'' during the experiment are shown in Figure \ref{fig:test_id31_tomo_m0_30rpm_robust_hac_iff_exp}. The measured position of the ``point of interest'' during the experiment are shown in Figure \ref{fig:test_id31_tomo_m0_30rpm_robust_hac_iff_exp}.
\begin{itemize}
\item[{$\square$}] Add beam size (200x100nm)
\end{itemize}
\begin{figure}[htbp] \begin{figure}[htbp]
\begin{subfigure}{0.49\textwidth} \begin{subfigure}{0.49\textwidth}
\begin{center} \begin{center}
@ -688,7 +692,6 @@ The lateral and vertical errors are similar, however the tilt (\(R_y\)) errors a
Results obtained with this conservative HAC are already close to the specifications. Results obtained with this conservative HAC are already close to the specifications.
\begin{table}[htbp] \begin{table}[htbp]
\caption{\label{tab:test_id31_tomo_m0_30rpm_robust_hac_iff_rms}RMS values of the errors for a tomography experiment at 30RPM and without payload. Experimental results and simulation are compared.}
\centering \centering
\begin{tabularx}{0.7\linewidth}{Xccc} \begin{tabularx}{0.7\linewidth}{Xccc}
\toprule \toprule
@ -699,9 +702,11 @@ Experiment (OL) & \(1.8\,\mu\text{mRMS}\) & \(24\,\text{nmRMS}\) & \(10\,\mu\tex
Simulation (CL) & \(30\,\text{nmRMS}\) & \(8\,\text{nmRMS}\) & \(73\,\text{nradRMS}\)\\ Simulation (CL) & \(30\,\text{nmRMS}\) & \(8\,\text{nmRMS}\) & \(73\,\text{nradRMS}\)\\
Experiment (CL) & \(39\,\text{nmRMS}\) & \(11\,\text{nmRMS}\) & \(130\,\text{nradRMS}\)\\ Experiment (CL) & \(39\,\text{nmRMS}\) & \(11\,\text{nmRMS}\) & \(130\,\text{nradRMS}\)\\
\midrule \midrule
Specifications (CL) & \(30\,\text{nmRMS}\) & \(15\,\text{nmRMS}\) & \(250\,\text{nradRMS}\)\\ Specifications & \(30\,\text{nmRMS}\) & \(15\,\text{nmRMS}\) & \(250\,\text{nradRMS}\)\\
\bottomrule \bottomrule
\end{tabularx} \end{tabularx}
\caption{\label{tab:test_id31_tomo_m0_30rpm_robust_hac_iff_rms}RMS values of the errors for a tomography experiment at 30RPM and without payload. Experimental results and simulation are compared.}
\end{table} \end{table}
\section{Robustness to change of payload} \section{Robustness to change of payload}
@ -719,6 +724,11 @@ To estimate the open-loop errors, it is supposed that the ``point of interest''
Therefore, the eccentricity is first estimated by performing a circular fit (dashed black circle in Figure \ref{fig:test_id31_tomo_m2_1rpm_robust_hac_iff_fit}), and then subtracted from the data in Figure \ref{fig:test_id31_tomo_m2_1rpm_robust_hac_iff_fit_removed}. Therefore, the eccentricity is first estimated by performing a circular fit (dashed black circle in Figure \ref{fig:test_id31_tomo_m2_1rpm_robust_hac_iff_fit}), and then subtracted from the data in Figure \ref{fig:test_id31_tomo_m2_1rpm_robust_hac_iff_fit_removed}.
This underestimate the real condition open-loop errors as it is difficult to obtain a perfect alignment in practice. This underestimate the real condition open-loop errors as it is difficult to obtain a perfect alignment in practice.
\begin{itemize}
\item[{$\square$}] Maybe show in the YZ plane?
\item[{$\square$}] Add the beam size?
\end{itemize}
\begin{figure}[htbp] \begin{figure}[htbp]
\begin{subfigure}{0.49\textwidth} \begin{subfigure}{0.49\textwidth}
\begin{center} \begin{center}
@ -739,7 +749,6 @@ The RMS values of the open-loop and closed-loop errors for all masses are summar
The obtained closed-loop errors are fulfilling the requirements, except for the \(39\,\text{kg}\) payload in the lateral (\(D_y\)) direction. The obtained closed-loop errors are fulfilling the requirements, except for the \(39\,\text{kg}\) payload in the lateral (\(D_y\)) direction.
\begin{table}[htbp] \begin{table}[htbp]
\caption{\label{tab:test_id31_tomo_1rpm_robust_ol_cl_errors}RMS values of the measured errors during open-loop and closed-loop tomography scans (1rpm) for all considered payloads. Measured closed-Loop errors are indicated by ``bold'' font.}
\centering \centering
\begin{tabularx}{0.9\linewidth}{Xccc} \begin{tabularx}{0.9\linewidth}{Xccc}
\toprule \toprule
@ -753,9 +762,423 @@ The obtained closed-loop errors are fulfilling the requirements, except for the
\textbf{Specifications} & \(30\,\text{nmRMS}\) & \(15\,\text{nmRMS}\) & \(250\,\text{nradRMS}\)\\ \textbf{Specifications} & \(30\,\text{nmRMS}\) & \(15\,\text{nmRMS}\) & \(250\,\text{nradRMS}\)\\
\bottomrule \bottomrule
\end{tabularx} \end{tabularx}
\caption{\label{tab:test_id31_tomo_1rpm_robust_ol_cl_errors}RMS values of the measured errors during open-loop and closed-loop tomography scans (1rpm) for all considered payloads. Measured closed-Loop errors are indicated by ``bold'' font.}
\end{table} \end{table}
\section*{Conclusion} \section*{Conclusion}
\chapter{Dynamic Error Budgeting}
\label{sec:test_id31_error_budget}
In this section, the noise budget is performed.
The vibrations of the sample is measured in different conditions using the external metrology.
\textbf{Tomography}:
\begin{itemize}
\item Beam size: 200nm x 100nm
\item Keep the PoI in the beam: peak to peak errors of 200nm in Dy and 100nm in Dz
\item RMS errors (/ by 6.6) gives 30nmRMS in Dy and 15nmRMS in Dz.
\item Ry error <1.7urad, 250nrad RMS
\end{itemize}
\begin{center}
\begin{tabular}{lllllll}
& Dx & Dy & Dz & Rx & Ry & Rz\\
\hline
peak 2 peak & & 200nm & 100nm & & 1.7 urad & \\
RMS & & 30nm & 15nm & & 250 nrad & \\
\end{tabular}
\end{center}
\section{Open-Loop Noise Budget}
\begin{itemize}
\item Effect of rotation.
\item Comparison with measurement noise: should be higher
\item Maybe say that we then focus on the high rotation velocity
\item Also say that for the RMS errors, we don't take into account drifts (so we NASS we can correct drifts)
\end{itemize}
\section{Effect of LAC}
\begin{itemize}
\item[{$\square$}] Maybe merge this with the HAC-LAC
\end{itemize}
Effect of LAC:
\begin{itemize}
\item reduce amplitude around 80Hz
\item Inject some noise between 200 and 700Hz?
\end{itemize}
\section{Effect of HAC}
Bandwidth is approximately 10Hz.
\chapter{Validation with Scientific experiments}
The online metrology prototype does not allow samples to be placed on top of the nano-hexapod and to be illuminated by the x-ray beam.
However, in order to fully validate the NASS, typical motion performed during scientific experiments can be mimicked, and the positioning performances can be evaluated.
Performances were already evaluated with tomography scans (Section \ref{ssec:test_id31_iff_hac_perf}).
Here, other typical experiments are performed:
\begin{itemize}
\item Lateral scans: the translations stage performs \(D_y\) scans, and the errors are corrected by the NASS in real time (Section \ref{ssec:test_id31_scans_dy})
\item Vertical layer scans: the nano-hexapod is used to perform \(D_z\) steps or ramp scans (Section \ref{ssec:test_id31_scans_dz})
\item Reflectivity scans: the tilt stage is doing \(R_y\) rotations and the errors are corrected by the NASS in real time (Section \ref{ssec:test_id31_scans_reflectivity})
\item Diffraction Tomography: the Spindle is performing continuous \(R_z\) rotation while the translation stage is performing lateral \(D_y\) scans at the same time. This is the experiment with the most stringent requirements (Section \ref{ssec:test_id31_scans_diffraction_tomo})
\end{itemize}
\section{\(D_y\) - Lateral Scans}
\label{ssec:test_id31_scans_dy}
Lateral scans are performed with the \(T_y\) stage.
The stepper motor controller\footnote{The ``IcePAP'' \cite{janvier13_icepap} which is developed at the ESRF} outputs the setpoint which is received by the Speedgoat.
Therefore, the Nano-Hexapod can be used to correct positioning errors induced by the scanning of the \(T_y\) stage.
\paragraph{Slow scan}
The \(T_y\) stage is first scanned at \(10\,\mu m/s\) which is typical for such experiments.
The errors in open-loop (i.e. without using the NASS) and in closed-loop are compared in Figure \ref{fig:test_id31_dy_10ums}.
In the direction of motion, periodic errors can be observed in the open-loop case (Figure \ref{fig:test_id31_dy_10ums_dy}).
These are due to the stepper motor being used in the \(T_y\) stage.
Indeed, stepper motors inherently have ``micro-stepping'' errors which are periodic errors happening 200 times per motor rotation with an amplitude approximately equal to \(1\,\text{mrad}\).
As the lead screw for the \(T_y\) stage has a pitch of \(2\,mm\), this means that the micro-stepping errors have a period of \(10\,\mu m\) and an amplitude of \(\approx 300\,nm\) which can indeed be seen in open-loop.
In the vertical direction (Figure \ref{fig:test_id31_dy_10ums_dz}), open-loop errors are most likely due to measurement errors of the metrology itself (see Figure \ref{fig:test_id31_xy_map_sphere}).
\begin{figure}[htbp]
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_dy_10ums_dy.png}
\end{center}
\subcaption{\label{fig:test_id31_dy_10ums_dy} $D_y$}
\end{subfigure}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_dy_10ums_dz.png}
\end{center}
\subcaption{\label{fig:test_id31_dy_10ums_dz} $D_z$}
\end{subfigure}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_dy_10ums_ry.png}
\end{center}
\subcaption{\label{fig:test_id31_dy_10ums_ry} $R_y$}
\end{subfigure}
\caption{\label{fig:test_id31_dy_10ums}Open-Loop (in blue) and Closed-loop (i.e. using the NASS, in red) during a \(10\,\mu m/s\) scan with the \(T_y\) stage. Errors in \(D_y\) is shown in (\subref{fig:test_id31_dy_10ums_dy}).}
\end{figure}
\paragraph{Faster Scan}
The performance of the NASS is then tested for a scanning velocity of \(100\,\mu m/s\) and the results are shown in Figure \ref{fig:test_id31_dy_100ums}.
At this velocity, the micro-stepping errors have a frequency of \(10\,\text{Hz}\) and are inducing lot's of vibrations which are amplified by some resonances of the micro-station.
These vibrations are outside the bandwidth of the NASS feedback controller and therefore not well reduced in closed-loop.
This is the main reason why stepper motors should be not be used for ``long-stroke / short-stroke'' systems when good scanning performances are wanted \cite{dehaeze22_fastj_uhv}.
In order to improve the scanning performances at high velocity, the stepper motor of the \(T_y\) stage could be replaced by a three-phase torque motor for instance.
As the closed-loop errors in \(D_z\) and \(R_y\) directions are within specifications (see Figures \ref{fig:test_id31_dy_100ums_dz} and \ref{fig:test_id31_dy_100ums_ry}), the detectors could be triggered based on the measured \(D_y\) position and therefore the experiment would be much less sensitive to \(D_y\) vibrations.
\begin{figure}[htbp]
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_dy_100ums_dy.png}
\end{center}
\subcaption{\label{fig:test_id31_dy_100ums_dy} $D_y$}
\end{subfigure}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_dy_100ums_dz.png}
\end{center}
\subcaption{\label{fig:test_id31_dy_100ums_dz} $D_z$}
\end{subfigure}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_dy_100ums_ry.png}
\end{center}
\subcaption{\label{fig:test_id31_dy_100ums_ry} $R_y$}
\end{subfigure}
\caption{\label{fig:test_id31_dy_100ums}Open-Loop (in blue) and Closed-loop (i.e. using the NASS, in red) during a \(100\,\mu m/s\) scan with the \(T_y\) stage. Errors in \(D_y\) is shown in (\subref{fig:test_id31_dy_100ums_dy}).}
\end{figure}
\paragraph{Conclusion}
\begin{center}
\begin{tabular}{lrrr}
& \(D_y\) & \(D_z\) & \(R_y\)\\
\hline
Specs & 30.0 & 15.0 & 0.25\\
\hline
10um/s (OL) & 585.43 & 154.51 & 6.3\\
10um/s (CL) & 20.64 & 9.67 & 0.06\\
\hline
100um/s (OL) & 1063.58 & 166.85 & 6.44\\
100um/s (CL) & 731.63 & 19.91 & 0.36\\
\end{tabular}
\end{center}
\begin{center}
\begin{tabular}{lrrr}
& \(D_y\) & \(D_z\) & \(R_y\)\\
\hline
Specs & 100.0 & 50.0 & 0.85\\
10um/s (OL) & 1167.8 & 308.35 & 11.06\\
10um/s (CL) & 86.36 & 41.6 & 0.28\\
100um/s (OL) & 2687.67 & 328.45 & 11.26\\
100um/s (CL) & 1339.31 & 69.5 & 0.91\\
\end{tabular}
\end{center}
\section{\(D_z\) scans: Dirty Layer Scans}
\label{ssec:test_id31_scans_dz}
In some cases, samples are composed of several atomic ``layers'' that are first aligned in the horizontal plane with precise \(R_y\) positioning and then scanned vertically with precise \(D_z\) motion.
The vertical scan can be performed step-by-step or continuously.
\paragraph{Step by Step \(D_z\) motion}
Vertical steps are here performed using the nano-hexapod.
Step sizes from \(10\,nm\) to \(1\,\mu m\) are tested, and the results are shown in Figure \ref{fig:test_id31_dz_mim_steps}.
10nm steps can be resolved if detectors are integrating over 50ms (see red curve in Figure \ref{fig:test_id31_dz_mim_10nm_steps}), which is very typical.
When doing step-by-step scans, the time to reach the next value is quite critical as long settling time can render the total experiment excessively long.
The response time to reach the wanted value (to within \(\pm 20\,nm\)) is around \(70\,ms\) as shown with the \(1\,\mu m\) step response in Figure \ref{fig:test_id31_dz_mim_1000nm_steps}.
\begin{figure}[htbp]
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_dz_mim_10nm_steps.png}
\end{center}
\subcaption{\label{fig:test_id31_dz_mim_10nm_steps}10nm steps}
\end{subfigure}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_dz_mim_100nm_steps.png}
\end{center}
\subcaption{\label{fig:test_id31_dz_mim_100nm_steps}100nm steps}
\end{subfigure}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_dz_mim_1000nm_steps.png}
\end{center}
\subcaption{\label{fig:test_id31_dz_mim_1000nm_steps}$1\,\mu$m step}
\end{subfigure}
\caption{\label{fig:test_id31_dz_mim_steps}Vertical steps performed with the nano-hexapod. 10nm steps are shown in (\subref{fig:test_id31_dz_mim_10nm_steps}) with the low pass filtered data corresponding to an integration time of \(50\,ms\). 100nm steps are shown in (\subref{fig:test_id31_dz_mim_100nm_steps}). The response time to reach a peak to peak error of \(\pm 20\,nm\) is \(\approx 70\,ms\) as shown in (\subref{fig:test_id31_dz_mim_1000nm_steps}) for a \(1\,\mu m\) step.}
\end{figure}
\paragraph{Continuous \(D_z\) motion: Dirty Layer Scans}
Instead of performing ``step-by-step'' scans, continuous scans can also be performed in the vertical direction.
At \(10\,\mu m/s\), the errors are well within the specifications (see Figure \ref{fig:test_id31_dz_scan_10ums}).
The second tested velocity is \(100\,\mu m/s\), which is typically the fastest velocity for \(D_z\) scans when the ultimate performances is wanted (1ms integration time and 100nm ``resolution'').
At this velocity, the positioning errors are also within the specifications except for the very start and very end of the motion (i.e. during acceleration/deceleration phases, see Figure \ref{fig:test_id31_dz_scan_100ums}).
However, the detectors are usually triggered only during the constant velocity phase, so this should not be an issue.
The performances during acceleration phase may also be improved by using a feedforward controller.
\begin{figure}[htbp]
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_dz_scan_10ums_dy.png}
\end{center}
\subcaption{\label{fig:test_id31_dz_scan_10ums_dy}$D_y$}
\end{subfigure}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_dz_scan_10ums_dz.png}
\end{center}
\subcaption{\label{fig:test_id31_dz_scan_10ums_dz}$D_z$}
\end{subfigure}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_dz_scan_10ums_ry.png}
\end{center}
\subcaption{\label{fig:test_id31_dz_scan_10ums_ry}$R_y$}
\end{subfigure}
\caption{\label{fig:test_id31_dz_scan_10ums}\(D_z\) scan with a velocity of \(10\,\mu m/s\). \(D_z\) setpoint, measured position and error are shown in (\subref{fig:test_id31_dz_scan_10ums_dz}). Errors in \(D_y\) and \(R_y\) are respectively shown in (\subref{fig:test_id31_dz_scan_10ums_dy}) and (\subref{fig:test_id31_dz_scan_10ums_ry})}
\end{figure}
\begin{figure}[htbp]
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_dz_scan_100ums_dy.png}
\end{center}
\subcaption{\label{fig:test_id31_dz_scan_100ums_dy}$D_y$}
\end{subfigure}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_dz_scan_100ums_dz.png}
\end{center}
\subcaption{\label{fig:test_id31_dz_scan_100ums_dz}$D_z$}
\end{subfigure}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_dz_scan_100ums_ry.png}
\end{center}
\subcaption{\label{fig:test_id31_dz_scan_100ums_ry}$R_y$}
\end{subfigure}
\caption{\label{fig:test_id31_dz_scan_100ums}\(D_z\) scan with a velocity of \(100\,\mu m/s\). \(D_z\) setpoint, measured position and error are shown in (\subref{fig:test_id31_dz_scan_100ums_dz}). Errors in \(D_y\) and \(R_y\) are respectively shown in (\subref{fig:test_id31_dz_scan_100ums_dy}) and (\subref{fig:test_id31_dz_scan_100ums_ry})}
\end{figure}
\paragraph{Summary}
\begin{center}
\begin{tabular}{lrrr}
& \(D_y\) & \(D_z\) & \(R_y\)\\
\hline
Specs & 100.0 & 50.0 & 0.85\\
10um/s & 82.35 & 17.94 & 0.41\\
100um/s & 98.72 & 41.45 & 0.48\\
\end{tabular}
\end{center}
\begin{center}
\begin{tabular}{lrrr}
& \(D_y\) & \(D_z\) & \(R_y\)\\
\hline
Specs & 30.0 & 15.0 & 0.25\\
10um/s & 25.11 & 5.04 & 0.11\\
100um/s & 34.84 & 9.08 & 0.13\\
\end{tabular}
\end{center}
\section{\(R_y\) scans: Reflectivity}
\label{ssec:test_id31_scans_reflectivity}
X-ray reflectivity consists of scanning the \(R_y\) angle of thin structures (typically solid/liquid interfaces) through the beam.
Here, a \(R_y\) scan is performed at \(100\,\mu rad/s\) velocity and the positioning errors are recorded (Figure \ref{fig:test_id31_reflectivity}).
It is shown that the NASS is able to keep the point of interest in the beam.
\begin{figure}[htbp]
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_reflectivity_dy.png}
\end{center}
\subcaption{\label{fig:test_id31_reflectivity_dy}$D_y$}
\end{subfigure}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_reflectivity_dz.png}
\end{center}
\subcaption{\label{fig:test_id31_reflectivity_dz}$D_z$}
\end{subfigure}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_reflectivity_ry.png}
\end{center}
\subcaption{\label{fig:test_id31_reflectivity_ry}$R_y$}
\end{subfigure}
\caption{\label{fig:test_id31_reflectivity}Reflectivity scan (\(R_y\)) with a rotational velocity of \(100\,\mu \text{rad}/s\).}
\end{figure}
\section{Combined \(R_z\) and \(D_y\): Diffraction Tomography}
\label{ssec:test_id31_scans_diffraction_tomo}
The goal of this experiment is to perform combined \(R_z\) rotation and \(D_z\) lateral scans.
Here the spindle is performing a continuous 1rpm rotation while the nano-hexapod is used to perform fast \(D_z\) scans.
The \(T_y\) stage is here not used as the stepper motor would induce high frequency vibrations, therefore the stroke is here limited to \(\approx \pm 100\,\mu m/s\).
Several \(D_y\) velocities are tested: \(0.1\,mm/s\), \(0.5\,mm/s\) and \(1\,mm/s\).
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/test_id31_diffraction_tomo_setpoint.png}
\caption{\label{fig:test_id31_diffraction_tomo_setpoint}Dy motion for several configured velocities}
\end{figure}
\begin{figure}[htbp]
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_diffraction_tomo_dy.png}
\end{center}
\subcaption{\label{fig:test_id31_diffraction_tomo_dy}$D_y$}
\end{subfigure}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_diffraction_tomo_dz.png}
\end{center}
\subcaption{\label{fig:test_id31_diffraction_tomo_dz}$D_z$}
\end{subfigure}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/test_id31_diffraction_tomo_ry.png}
\end{center}
\subcaption{\label{fig:test_id31_diffraction_tomo_ry}$R_y$}
\end{subfigure}
\caption{\label{fig:test_id31_diffraction_tomo}Diffraction tomography scans (combined \(R_z\) and \(D_y\) motions) at several \(D_y\) velocities (\(R_z\) rotational velocity is 1rpm).}
\end{figure}
The corresponding ``repetition rate'' and \(D_y\) scan per spindle turn are shown in Table \ref{tab:diffraction_tomo_velocities}.
The main issue here is the ``waiting'' time between two scans that is in the order of 50ms.
By removing this waiting time (fairly easily), we can double the repetition rate at 10mm/s.
\begin{table}[htbp]
\centering
\begin{tabularx}{0.6\linewidth}{lXX}
\toprule
\(D_y\) Velocity & Repetition rate & Scans per turn (at 1RPM)\\
\midrule
0.1 mm/s & 4 s & 15\\
0.5 mm/s & 0.9 s & 65\\
1 mm/s & 0.5 s & 120\\
\bottomrule
\end{tabularx}
\caption{\label{tab:diffraction_tomo_velocities}\(D_y\) scaning repetition rate}
\end{table}
The scan results for a velocity of 1mm/s is shown in Figure \ref{fig:id31_diffraction_tomo_1mms}.
The \(D_z\) and \(R_y\) errors are quite small during the scan.
The \(D_y\) errors are quite large as the velocity is increased.
This type of scan can probably be massively improved by using feed-forward and optimizing the trajectory.
Also, if the detectors are triggered in position (the Speedgoat could generate an encoder signal for instance), we don't care about the \(D_y\) errors.
\begin{table}[htbp]
\centering
\begin{tabularx}{\linewidth}{lXX}
\toprule
Velocity & \(D_y\) [nmRMS] & \(D_z\) [nmRMS] & \(R_y\) [\(\mu\text{radRMS}\)]\\
\midrule
0.1 mm/s & 75.45 & 9.13 & 0.12\\
0.5 mm/s & 190.47 & 9.97 & 0.1\\
1 mm/s & 428.0 & 11.24 & 0.17\\
\bottomrule
\end{tabularx}
\caption{\label{tab:id31_diffraction_tomo_results}Obtained errors for several \(D_y\) velocities}
\end{table}
\section*{Conclusion}
\label{ssec:test_id31_scans_conclusion}
For each conducted experiments, the \(D_y\), \(D_z\) and \(R_y\) errors are computed and summarized in Table \ref{tab:id31_experiments_results_summary}.
\begin{table}[htbp]
\centering
\begin{tabularx}{\linewidth}{Xccc}
\toprule
& \(D_y\) [nmRMS] & \(D_z\) [nmRMS] & \(R_y\) [nradRMS]\\
\midrule
Tomography (\(R_z\) 1rpm) & 15 & 5 & 55\\
Tomography (\(R_z\) 6rpm) & 19 & 5 & 73\\
Tomography (\(R_z\) 30rpm) & 38 & 10 & 129\\
Dirty Layer (\(D_z\) \(10\,\mu m/s\)) & 25 & 5 & 114\\
Dirty Layer (\(D_z\) \(100\,\mu m/s\)) & 34 & 15 & 130\\
Reflectivity (\(R_y\) \(100\,\mu\text{rad}/s\)) & 28 & 6 & 118\\
Lateral Scan (\(D_y\) \(10\,\mu m/s\)) & 21 & 10 & 37\\
Diffraction Tomography (\(R_z\) 1rpm, \(D_y\) 0.1mm/s) & 75 & 9 & 118\\
Diffraction Tomography (\(R_z\) 1rpm, \(D_y\) 1mm/s) & 428 & 11 & 169\\
\bottomrule
\end{tabularx}
\caption{\label{tab:id31_experiments_results_summary}Table caption}
\end{table}
\printbibliography[heading=bibintoc,title={Bibliography}] \printbibliography[heading=bibintoc,title={Bibliography}]
\end{document} \end{document}