diff --git a/figs/ustation_dist_source_ground_motion.pdf b/figs/ustation_dist_source_ground_motion.pdf index 1e23f1b..868e3a7 100644 Binary files a/figs/ustation_dist_source_ground_motion.pdf and b/figs/ustation_dist_source_ground_motion.pdf differ diff --git a/figs/ustation_dist_source_ground_motion.png b/figs/ustation_dist_source_ground_motion.png index 3e7c8a3..96c56a0 100644 Binary files a/figs/ustation_dist_source_ground_motion.png and b/figs/ustation_dist_source_ground_motion.png differ diff --git a/figs/ustation_geophone_picture.jpg b/figs/ustation_geophone_picture.jpg new file mode 100644 index 0000000..31a1ef4 Binary files /dev/null and b/figs/ustation_geophone_picture.jpg differ diff --git a/figs/ustation_ground_disturbance.pdf b/figs/ustation_ground_disturbance.pdf index 7fa39b6..a5bbbbd 100644 Binary files a/figs/ustation_ground_disturbance.pdf and b/figs/ustation_ground_disturbance.pdf differ diff --git a/figs/ustation_ground_disturbance.png b/figs/ustation_ground_disturbance.png index fca6fde..808f87e 100644 Binary files a/figs/ustation_ground_disturbance.png and b/figs/ustation_ground_disturbance.png differ diff --git a/matlab/mat/nass_model_conf_log.mat b/matlab/mat/nass_model_conf_log.mat index 4175754..14a67ea 100644 Binary files a/matlab/mat/nass_model_conf_log.mat and b/matlab/mat/nass_model_conf_log.mat differ diff --git a/matlab/mat/nass_model_disturbances.mat b/matlab/mat/nass_model_disturbances.mat index 0e38ecf..049d849 100644 Binary files a/matlab/mat/nass_model_disturbances.mat and b/matlab/mat/nass_model_disturbances.mat differ diff --git a/matlab/mat/ustation_disturbance_psd.mat b/matlab/mat/ustation_disturbance_psd.mat index 4d83415..b5f0d92 100644 Binary files a/matlab/mat/ustation_disturbance_psd.mat and b/matlab/mat/ustation_disturbance_psd.mat differ diff --git a/matlab/mat/ustation_disturbance_sensitivity.mat b/matlab/mat/ustation_disturbance_sensitivity.mat index 0dd3038..3a340b2 100644 Binary files a/matlab/mat/ustation_disturbance_sensitivity.mat and b/matlab/mat/ustation_disturbance_sensitivity.mat differ diff --git a/matlab/mat/ustation_ground_motion.mat b/matlab/mat/ustation_ground_motion.mat index cc2b6f0..2ded497 100644 Binary files a/matlab/mat/ustation_ground_motion.mat and b/matlab/mat/ustation_ground_motion.mat differ diff --git a/simscape-micro-station.org b/simscape-micro-station.org index da88116..ccd99c3 100644 --- a/simscape-micro-station.org +++ b/simscape-micro-station.org @@ -308,6 +308,10 @@ Be able to pass custom =.mat= files (one mat file per disturbance)? - Maybe say that we remove the excentricity (by circle fit: show it in the figure) - Then the rest is modelled by stochastic disturbance +** TODO [#C] Add glossary + +PoI | Point of interest + ** TODO [#C] Add picture of measured ground motion ** TODO [#C] Add screenshot of Simscape model ** WAIT [#B] I have no measurement of horizontal ground motion :@marc: @@ -874,7 +878,25 @@ xlim([2, 500]); * Introduction :ignore: -Introduction... +From the start of this work, it became increasingly clear that an accurate model of the micro-station was necessary. + +First, during the uniaxial study, it became apparent that the micro-station dynamics affects the nano-hexapod dynamics. +Then, using the 3-DoF rotating model, it was discovered that the rotation of the nano-hexapod induces gyroscopic effects that affects the system dynamics, and that it should therefore be modelled. +Finally, performing a modal analysis of the micro-station showed how complex the dynamics of the station is. +It also confirmed that each stage behaves as a rigid body in the frequency range of interest. +Therefore a multi-body model seems a good candidate to accurately represent the micro-station dynamics. + +In this report, the development of such multi-body model is presented. + +First, each stage of the micro-station is described. +The kinematics of the micro-station (i.e. how the motion of the stages are combined) is presented in Section ref:sec:ustation_kinematics. + +Then, the multi-body model is presented and tuned to match the measured dynamics of the micro-station (Section ref:sec:ustation_modeling). + +Disturbances affecting the positioning accuracy also need to be modelled properly. +To do so, the effect of these disturbances are first measured experimental and then injected in the multi-body model (Section ref:sec:ustation_disturbances). + +To validate the accuracy of the micro-station model, "real world" experiments are simulated and compared with measurements in Section ref:sec:ustation_experiments. # #+name: tab:ustation_section_matlab_code # #+caption: Report sections and corresponding Matlab files @@ -1928,65 +1950,70 @@ Therefore, from a control point of view, they are not important. **** Ground Motion -The ground motion is simply measured by using a sensitive 3-axis geophone placed on the ground. +The ground motion is measured by using a sensitive 3-axis geophone[fn:11] placed on the ground. The generated voltages are 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. #+begin_src matlab %% Compute Floor Motion Spectral Density % Load floor motion data -% t: time in [s] -% V: measured voltage genrated by the geophone and amplified by a 60dB gain voltage amplifier [V] -load('ustation_ground_motion.mat', 't', 'V'); +% velocity in [m/s] is measured in X, Y and Z directions +load('ustation_ground_motion.mat', 'Ts', 'Fs', 'vel_x', 'vel_y', 'vel_z', 't'); -% Geophone Transfer Function -Tg = 88; % Sensitivity [V/(m/s)] -w0 = 2*2*pi; % Cut-off frequency [rad/s] -xi = 0.7; % Damping ratio +% Estimate ground displacement from measured velocity +% This is done by integrating the motion +gm_x = lsim(1/(s+0.1*2*pi), vel_x, t); +gm_y = lsim(1/(s+0.1*2*pi), vel_y, t); +gm_z = lsim(1/(s+0.1*2*pi), vel_z, t); -G_geo = Tg*s*s^2/(s^2 + 2*xi*w0*s + w0^2); % Geophone's transfer function [V/m] - -% Voltage amplifier transfer function -g0 = 10^(60/20); % [abs] - -% Compute measured voltage PSD -Ts = (t(2)-t(1)); % Sampling Time [s] Nfft = floor(2/Ts); win = hanning(Nfft); Noverlap = floor(Nfft/2); -[pxx_V, f_gm] = pwelch(V, win, Noverlap, Nfft, 1/Ts); % [V^2/Hz] +[pxx_gm_vx, f_gm] = pwelch(vel_x, win, Noverlap, Nfft, 1/Ts); +[pxx_gm_vy, ~] = pwelch(vel_y, win, Noverlap, Nfft, 1/Ts); +[pxx_gm_vz, ~] = pwelch(vel_z, win, Noverlap, Nfft, 1/Ts); -% Ground Motion ASD -pxx_gm_z = pxx_V./abs(squeeze(freqresp(G_geo*g0, f_gm, 'Hz'))).^2; % [m^2/Hz] -% Assumption here that horizontal ground motion is ~25% smaller -% than vertical one. -pxx_gm_x = (0.7)^2*pxx_gm_z; % [m^2/Hz] -pxx_gm_y = (0.8)^2*pxx_gm_z; % [m^2/Hz] +% Convert PSD in velocity to PSD in displacement +pxx_gm_x = pxx_gm_vx./((2*pi*f_gm).^2); +pxx_gm_y = pxx_gm_vy./((2*pi*f_gm).^2); +pxx_gm_z = pxx_gm_vz./((2*pi*f_gm).^2); #+end_src #+begin_src matlab :exports none :results none -% Estimate ground motion -w0_min = 0.1*2*pi; -gm_z = lsim(inv(g0*G_geo)*((s/w0_min)/(1+s/w0_min))^3, detrend(V, 0), t); - %% Measured ground motion figure; hold on; -plot(t(t>50)-50, 1e6*gm_z(t>50)) +plot(t, 1e6*gm_x, 'DisplayName', '$D_{xf}$') +plot(t, 1e6*gm_y, 'DisplayName', '$D_{yf}$') +plot(t, 1e6*gm_z, 'DisplayName', '$D_{zf}$') hold off; xlabel('Time [s]'); -ylabel('Vertical motion [$\mu$m]') +ylabel('Ground motion [$\mu$m]') +xlim([0, 5]); ylim([-2, 2]) +leg = legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1); +leg.ItemTokenSize(1) = 15; #+end_src -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/ustation_ground_disturbance.pdf', 'width', 'normal', 'height', 'short'); +#+begin_src matlab :tangle no :exports results :results file none +exportFig('figs/ustation_ground_disturbance.pdf', 'width', 'half', 'height', 450); #+end_src +#+attr_latex: :options [b]{0.54\linewidth} +#+begin_minipage #+name: fig:ustation_ground_disturbance #+caption: Measured ground motion -#+RESULTS: +#+attr_latex: :scale 1 :float nil [[file:figs/ustation_ground_disturbance.png]] +#+end_minipage +\hfill +#+attr_latex: :options [b]{0.44\linewidth} +#+begin_minipage +#+name: fig:ustation_geophone_picture +#+caption: (3D) L-4C geophone +#+attr_latex: :width 0.92\linewidth :float nil +[[file:figs/ustation_geophone_picture.jpg]] +#+end_minipage **** Ty Stage @@ -2381,7 +2408,7 @@ pxx_dy_fz = pxx_dy_dz./abs(squeeze(freqresp(Gd('Dz', 'Fdy_z'), f_dy, 'Hz'))).^2; % in the Simscape model % Ground motion -min_f = 1; max_f = 500; +min_f = 1; max_f = 100; gm_dist.f = f_gm(f_gm < max_f & f_gm > min_f); gm_dist.pxx_x = pxx_gm_x(f_gm < max_f & f_gm > min_f); gm_dist.pxx_y = pxx_gm_y(f_gm < max_f & f_gm > min_f); @@ -2573,7 +2600,6 @@ exportFig('figs/ustation_dist_source_ground_motion_time.pdf', 'width', 'third', :HEADER-ARGS:matlab+: :tangle matlab/ustation_4_experiments.m :END: <> - ** Introduction :ignore: In order to fully validate the micro-station multi-body model, two time domain simulations corresponding to typical use cases are performed. @@ -2797,6 +2823,9 @@ exportFig('figs/ustation_errors_model_dy_vertical.pdf', 'width', 'half', 'height [[file:figs/ustation_errors_model_dy_vertical.png]] * Conclusion +:PROPERTIES: +:UNNUMBERED: t +:END: <> In order to have good model: @@ -5350,14 +5379,14 @@ Otherwise, when the limbs' lengths derived yield complex numbers, then the posit #+end_src * Footnotes - -[fn:10]Laser source is manufactured by Agilent (5519b) +[fn:11]A 3-Axis L4C geophone manufactured Sercel was used. +[fn:10]Laser source is manufactured by Agilent (5519b). [fn:9]The special optics (straightness interferometer and reflector) are manufactured by Agilent (10774A). -[fn:8]C8 capacitive sensors and CPL290 capacitive driver electronics from Lion Precision +[fn:8]C8 capacitive sensors and CPL290 capacitive driver electronics from Lion Precision. [fn:7]The Spindle Error Analyzer is made by Lion Precision. [fn:6]The tools presented here are largely taken from [[cite:&taghirad13_paral]]. -[fn:5]Rotations are non commutative in 3D -[fn:4]Ball cage (N501) and guide bush (N550) from Mahr are used -[fn:3]Modified Zonda Hexapod by Symetrie -[fn:2]Made by LAB Motion Systems -[fn:1]HCR 35 A C1, from THK +[fn:5]Rotations are non commutative in 3D. +[fn:4]Ball cage (N501) and guide bush (N550) from Mahr are used. +[fn:3]Modified Zonda Hexapod by Symetrie. +[fn:2]Made by LAB Motion Systems. +[fn:1]HCR 35 A C1, from THK. diff --git a/simscape-micro-station.pdf b/simscape-micro-station.pdf index acd54cb..f05bf3e 100644 Binary files a/simscape-micro-station.pdf and b/simscape-micro-station.pdf differ diff --git a/simscape-micro-station.tex b/simscape-micro-station.tex index b28d16c..db8bfc9 100644 --- a/simscape-micro-station.tex +++ b/simscape-micro-station.tex @@ -1,4 +1,4 @@ -% Created 2024-11-06 Wed 15:31 +% Created 2024-11-06 Wed 16:28 % Intended LaTeX compiler: pdflatex \documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt} @@ -24,7 +24,25 @@ \clearpage -Introduction\ldots{} +From the start of this work, it became increasingly clear that an accurate model of the micro-station was necessary. + +First, during the uniaxial study, it became apparent that the micro-station dynamics affects the nano-hexapod dynamics. +Then, using the 3-DoF rotating model, it was discovered that the rotation of the nano-hexapod induces gyroscopic effects that affects the system dynamics, and that it should therefore be modelled. +Finally, performing a modal analysis of the micro-station showed how complex the dynamics of the station is. +It also confirmed that each stage behaves as a rigid body in the frequency range of interest. +Therefore a multi-body model seems a good candidate to accurately represent the micro-station dynamics. + +In this report, the development of such multi-body model is presented. + +First, each stage of the micro-station is described. +The kinematics of the micro-station (i.e. how the motion of the stages are combined) is presented in Section \ref{sec:ustation_kinematics}. + +Then, the multi-body model is presented and tuned to match the measured dynamics of the micro-station (Section \ref{sec:ustation_modeling}). + +Disturbances affecting the positioning accuracy also need to be modelled properly. +To do so, the effect of these disturbances are first measured experimental and then injected in the multi-body model (Section \ref{sec:ustation_disturbances}). + +To validate the accuracy of the micro-station model, ``real world'' experiments are simulated and compared with measurements in Section \ref{sec:ustation_experiments}. \chapter{Micro-Station Kinematics} @@ -55,11 +73,11 @@ A linear motor was first used to be able to perform fast and accurate scans. It was later replaced with a stepper motor and lead-screw, as the feedback control used for the linear motor was unreliable, probably caused by rust of the linear guides along its stroke. An optical linear encoder is used to measure the stage motion and for PID control of the position. -Four cylindrical bearings\footnote{Ball cage (N501) and guide bush (N550) from Mahr are used} are used to guide the motion (i.e. minimize the parasitic motions) and have high stiffness. +Four cylindrical bearings\footnote{Ball cage (N501) and guide bush (N550) from Mahr are used.} are used to guide the motion (i.e. minimize the parasitic motions) and have high stiffness. \paragraph{Tilt Stage} -The tilt stage is guided by four linear motion guides\footnote{HCR 35 A C1, from THK} which are placed such that the center of rotation coincide with the X-ray beam. +The tilt stage is guided by four linear motion guides\footnote{HCR 35 A C1, from THK.} which are placed such that the center of rotation coincide with the X-ray beam. Each linear guide has high stiffness in radial directions such that the only DoF with low stiffness is in \(R_y\). This stage is mainly used for \emph{reflectivity} experiments where the sample \(R_y\) angle is scanned. @@ -84,13 +102,13 @@ To precisely control the \(R_y\) angle, a stepper motor as well as two optical e \paragraph{Spindle} Then, a rotation stage is used for tomography experiments. -It is composed of an air bearing spindle\footnote{Made by LAB Motion Systems}, whose angular position is controlled with a 3 phase synchronous motor based on the reading of 4 optical encoders. +It is composed of an air bearing spindle\footnote{Made by LAB Motion Systems.}, whose angular position is controlled with a 3 phase synchronous motor based on the reading of 4 optical encoders. Additional rotary unions and slip-rings to be able to pass through the rotation many electrical signals and fluids and gazes. \paragraph{Micro-Hexapod} -Finally, a Stewart platform\footnote{Modified Zonda Hexapod by Symetrie} is used to position the sample. +Finally, a Stewart platform\footnote{Modified Zonda Hexapod by Symetrie.} is used to position the sample. It includes a DC motor and an optical linear encoders in each of the six strut. It is used to position the point of interest of the sample with respect to the spindle rotation axis. @@ -186,7 +204,7 @@ For rotations along \(x\), \(y\) or \(z\) axis, formulas are given in Equation \ \end{subequations} Sometimes, it is useful to express a rotation as a combination of three rotations described by \(\mathbf{R}_x\), \(\mathbf{R}_y\) and \(\mathbf{R}_z\). -As the order of rotation is very important\footnote{Rotations are non commutative in 3D}, in this work we choose to express rotations as three successive rotations about the coordinate axes of the moving frame eqref;eq:ustation\_rotation\_combination. +As the order of rotation is very important\footnote{Rotations are non commutative in 3D.}, in this work we choose to express rotations as three successive rotations about the coordinate axes of the moving frame eqref;eq:ustation\_rotation\_combination. \begin{equation}\label{eq:ustation_rotation_combination} {}^A\mathbf{R}_B(\alpha, \beta, \gamma) = \mathbf{R}_u(\alpha) \mathbf{R}_v(\beta) \mathbf{R}_c(\gamma) @@ -563,20 +581,28 @@ The tilt stage and the micro-hexapod also have positioning errors, they are howe Therefore, from a control point of view, they are not important. \paragraph{Ground Motion} -The ground motion is simply measured by using a sensitive 3-axis geophone placed on the ground. +The ground motion is measured by using a sensitive 3-axis geophone\footnote{A 3-Axis L4C geophone manufactured Sercel was used.} placed on the ground. The generated voltages are 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}. -\begin{figure}[htbp] -\centering -\includegraphics[scale=1]{figs/ustation_ground_disturbance.png} -\caption{\label{fig:ustation_ground_disturbance}Measured ground motion} -\end{figure} +\begin{minipage}[b]{0.54\linewidth} +\begin{center} +\includegraphics[scale=1,scale=1]{figs/ustation_ground_disturbance.png} +\captionof{figure}{\label{fig:ustation_ground_disturbance}Measured ground motion} +\end{center} +\end{minipage} +\hfill +\begin{minipage}[b]{0.44\linewidth} +\begin{center} +\includegraphics[scale=1,width=0.92\linewidth]{figs/ustation_geophone_picture.jpg} +\captionof{figure}{\label{fig:ustation_geophone_picture}(3D) L-4C geophone} +\end{center} +\end{minipage} \paragraph{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''\footnote{The special optics (straightness interferometer and reflector) are manufactured by Agilent (10774A).}) is fixed on top of the micro-station, while a laser source\footnote{Laser source is manufactured by Agilent (5519b)} and a straightness reflector are fixed on the ground. +A special optical element (called a ``straightness interferometer''\footnote{The special optics (straightness interferometer and reflector) are manufactured by Agilent (10774A).}) is fixed on top of the micro-station, while a laser source\footnote{Laser source is manufactured by Agilent (5519b).} and a straightness reflector are fixed on the ground. A similar setup is used to measure the horizontal deviation (i.e. in the \(x\) direction), as well as the pitch and yaw errors of the translation stage. \begin{figure}[htbp] @@ -612,7 +638,7 @@ Similar result is obtain for the \(x\) lateral direction. In order to measure the positioning errors induced by the Spindle, a ``Spindle error analyzer''\footnote{The Spindle Error Analyzer is made by Lion Precision.} 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\footnote{C8 capacitive sensors and CPL290 capacitive driver electronics from Lion Precision} are pointing at the two spheres as shown in Figure \ref{fig:ustation_rz_meas_lion_zoom}. +Five capacitive sensors\footnote{C8 capacitive sensors and CPL290 capacitive driver electronics from Lion Precision.} 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. \begin{figure}[htbp] @@ -751,7 +777,6 @@ In order to fully validate the micro-station multi-body model, two time domain s First, a tomography experiment (i.e. a constant Spindle rotation) is performed and compared with experimental measurements (Section \ref{sec:ustation_experiments_tomography}). Second, a constant velocity scans with the translation stage is performed and also compared with experimental data (Section \ref{sec:ustation_experiments_ty_scans}). - \section{Tomography Experiment} \label{sec:ustation_experiments_tomography} @@ -793,7 +818,7 @@ Similar error amplitude can be observed, thus indicating that the multi-body mod \caption{\label{fig:ustation_errors_model_dy_vertical}Vertical errors during a constant velocity scan of the translation stage. Comparison of the measurements and simulated errors.} \end{figure} -\chapter{Conclusion} +\chapter*{Conclusion} \label{sec:uniaxial_conclusion} In order to have good model: