diff --git a/figs/modal_comp_acc_frf_modal.pdf b/figs/modal_comp_acc_frf_modal.pdf deleted file mode 100644 index 38fdf59..0000000 Binary files a/figs/modal_comp_acc_frf_modal.pdf and /dev/null differ diff --git a/figs/modal_comp_acc_frf_modal.png b/figs/modal_comp_acc_frf_modal.png deleted file mode 100644 index bfa603e..0000000 Binary files a/figs/modal_comp_acc_frf_modal.png and /dev/null differ diff --git a/figs/modal_comp_acc_frf_modal_1.pdf b/figs/modal_comp_acc_frf_modal_1.pdf new file mode 100644 index 0000000..aeed207 Binary files /dev/null and b/figs/modal_comp_acc_frf_modal_1.pdf differ diff --git a/figs/modal_comp_acc_frf_modal_1.png b/figs/modal_comp_acc_frf_modal_1.png new file mode 100644 index 0000000..cd8977e Binary files /dev/null and b/figs/modal_comp_acc_frf_modal_1.png differ diff --git a/figs/modal_comp_acc_frf_modal_2.pdf b/figs/modal_comp_acc_frf_modal_2.pdf new file mode 100644 index 0000000..5e0aaf6 Binary files /dev/null and b/figs/modal_comp_acc_frf_modal_2.pdf differ diff --git a/figs/modal_comp_acc_frf_modal_2.png b/figs/modal_comp_acc_frf_modal_2.png new file mode 100644 index 0000000..8a0de67 Binary files /dev/null and b/figs/modal_comp_acc_frf_modal_2.png differ diff --git a/figs/modal_comp_acc_frf_modal_3.pdf b/figs/modal_comp_acc_frf_modal_3.pdf new file mode 100644 index 0000000..93de86c Binary files /dev/null and b/figs/modal_comp_acc_frf_modal_3.pdf differ diff --git a/figs/modal_comp_acc_frf_modal_3.png b/figs/modal_comp_acc_frf_modal_3.png new file mode 100644 index 0000000..eb3b2e5 Binary files /dev/null and b/figs/modal_comp_acc_frf_modal_3.png differ diff --git a/figs/modal_indication_function.pdf b/figs/modal_indication_function.pdf index 2a13b6e..9e667a7 100644 Binary files a/figs/modal_indication_function.pdf and b/figs/modal_indication_function.pdf differ diff --git a/figs/modal_synthesized_frf.pdf b/figs/modal_synthesized_frf.pdf index a53c170..8b9c928 100644 Binary files a/figs/modal_synthesized_frf.pdf and b/figs/modal_synthesized_frf.pdf differ diff --git a/figs/modal_synthesized_frf.png b/figs/modal_synthesized_frf.png index 390794a..bd764dc 100644 Binary files a/figs/modal_synthesized_frf.png and b/figs/modal_synthesized_frf.png differ diff --git a/modal-analysis.org b/modal-analysis.org index 05d7123..c92e35d 100644 --- a/modal-analysis.org +++ b/modal-analysis.org @@ -17,7 +17,7 @@ #+LATEX_CLASS_OPTIONS: [a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc] #+LATEX_HEADER: \input{preamble.tex} #+LATEX_HEADER_EXTRA: \input{preamble_extra.tex} -#+LATEX_HEADER_EXTRA: \bibliography{nass-uniaxial-model.bib} +#+LATEX_HEADER_EXTRA: \bibliography{modal-analysis.bib} #+BIND: org-latex-bib-compiler "biber" @@ -98,9 +98,21 @@ * Notes :noexport: Prefix is =modal= -** TODO [#C] Section ref:ssec:modal_solid_body_first_check can probably be removed +** DONE [#C] Section ref:ssec:modal_solid_body_first_check can probably be removed +CLOSED: [2024-10-24 Thu 10:08] As the solid body assumption is already verified in section ref:ssec:modal_solid_body_assumption. +** TODO [#A] Make sure the synthesis of FRF from modal model is working as expected +** TODO [#B] Add all notation + +| | | +|-----+----------------------------------| +| n | number of measured DoF (69) | +| p | number of force excitation (3) | +| q | number of frequency points (801) | +| m | number of considered modes (16) | +| ... | | + * Glossary and Acronyms - Tables :ignore: #+name: glossary @@ -119,6 +131,8 @@ As the solid body assumption is already verified in section ref:ssec:modal_solid | psd | PSD | Power Spectral Density | | frf | FRF | Frequency Response Function | | dof | DoF | Degree of freedom | +| svd | SVD | Singular Value Decomposition | +| mif | MIF | Mode Indicator Functions | * Introduction :ignore: @@ -279,20 +293,21 @@ Pictures of the accelerometers fixed to the translation stage and to the micro-h As all key stages of the micro-station are foreseen to behave as solid bodies, only 6 acrshort:dof can be considered per solid body. However, it was chosen to use four 3-axis accelerometers (i.e. 12 measured acrshort:dof) for each considered solid body to have some redundancy and to be able to verify the solid body assumption (see Section ref:ssec:modal_solid_body_assumption). -#+attr_latex: :options [b]{0.68\linewidth} +#+attr_latex: :options [t]{0.60\linewidth} #+begin_minipage #+name: fig:modal_location_accelerometers -#+caption: Position of the accelerometers using SolidWorks in mm -#+attr_latex: :width 0.9\linewidth :float nil +#+caption: Position of the accelerometers +#+attr_latex: :width 0.99\linewidth :float nil [[file:figs/modal_location_accelerometers.png]] #+end_minipage \hfill -#+attr_latex: :options [b]{0.31\linewidth} +#+attr_latex: :options [b]{0.38\linewidth} #+begin_minipage +#+begin_scriptsize #+name: tab:modal_position_accelerometers -#+caption: Accelerometer positions -#+attr_latex: :environment tabularx :width \linewidth :align Xcccc -#+attr_latex: :center t :booktabs t :font \scriptsize :float nil +#+caption: Positions in mm +#+attr_latex: :environment tabularx :width \linewidth :placement [b] :align Xccc +#+attr_latex: :booktabs t :float nil :center nil #+RESULTS: | | $x$ | $y$ | $z$ | |--------------+------+------+------| @@ -319,10 +334,9 @@ However, it was chosen to use four 3-axis accelerometers (i.e. 12 measured acrsh | Hexapod | -64 | 64 | -270 | | Hexapod | 64 | 64 | -270 | | Hexapod | 64 | -64 | -270 | +#+end_scriptsize #+end_minipage - - #+name: fig:modal_accelerometer_pictures #+caption: Accelerometers fixed on the micro-station stages #+attr_latex: :options [htbp] @@ -490,7 +504,7 @@ Good coherence is obtained from $20\,\text{Hz}$ to $200\,\text{Hz}$ which corres %% Frequency Response Function between the force and the acceleration figure; plot(f, abs(G1)); -xlabel('Frequency [Hz]'); ylabel('acrshort:frf [$m/s^2/N$]') +xlabel('Frequency [Hz]'); ylabel('FRF [$m/s^2/N$]') set(gca, 'XScale', 'lin'); set(gca, 'YScale', 'log'); xlim([0, 200]); xticks([0:20:200]); @@ -561,12 +575,10 @@ However, for the multi-body model being developed, only 6 solid bodies are consi Therefore, only $6 \times 6 = 36$ degrees of freedom are of interest. The objective in this section is therefore to process the Frequency Response Matrix to reduce the number of measured acrshort:dof from 69 to 36. -In order to be able to perform this reduction of measured acrshort:dof, the rigid body assumption first needs to be verified (Section ref:ssec:modal_solid_body_first_check). - The coordinate transformation from accelerometers acrshort:dof to the solid body 6 acrshortpl:dof (three translations and three rotations) is performed in Section ref:ssec:modal_acc_to_solid_dof. The $69 \times 3 \times 801$ frequency response matrix is then reduced to a $36 \times 3 \times 801$ frequency response matrix where the motion of each solid body is expressed with respect to its center of mass. -To further validate this reduction of acrshort:dof and the solid body assumption, the frequency response function at the accelerometer location are synthesized from the reduced frequency response matrix and are compared with the initial measurements in Section ref:ssec:modal_solid_body_assumption. +To validate this reduction of acrshort:dof and the solid body assumption, the frequency response function at the accelerometer location are recomputed from the reduced frequency response matrix and are compared with the initial measurements in Section ref:ssec:modal_solid_body_assumption. ** Matlab Init :noexport:ignore: #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) @@ -589,186 +601,6 @@ To further validate this reduction of acrshort:dof and the solid body assumption <> #+end_src -** First verification of the solid body assumption -<> - -In this section, it is shown that two accelerometers fixed to a /rigid body/ at positions $\vec{p}_1$ and $\vec{p}_2 = \vec{p}_1 + \alpha \vec{x}$ measure the same acceleration in the $\vec{x}$ direction. -Such situation is illustrated in Figure ref:fig:modal_aligned_accelerometers. - -#+begin_src latex :file modal_aligned_accelerometers.pdf :results file raw silent - \newcommand\irregularcircle[2]{% radius, irregularity - \pgfextra {\pgfmathsetmacro\len{(#1)+rand*(#2)}} - +(0:\len pt) - \foreach \a in {10,20,...,350}{ - \pgfextra {\pgfmathsetmacro\len{(#1)+rand*(#2)}} - -- +(\a:\len pt) - } -- cycle - } - \begin{tikzpicture} - \draw[rounded corners=1mm, fill=blue!30!white] (0, 0) \irregularcircle{3cm}{1mm}; - - \node[] (origin) at (4, -1) {$\bullet$}; - \begin{scope}[shift={(origin)}] - \def\axissize{0.8cm} - \draw[->] (0, 0) -- ++(\axissize, 0) node[above left]{$x$}; - \draw[->] (0, 0) -- ++(0, \axissize) node[below right]{$y$}; - \draw[fill, color=black] (0, 0) circle (0.05*\axissize); - \node[draw, circle, inner sep=0pt, minimum size=0.4*\axissize, label=left:$z$] (yaxis) at (0, 0){}; - \node[below right] at (0, 0){$\{O\}$}; - \end{scope} - - \coordinate[] (p1) at (-1.5, 1.5); - \coordinate[] (p2) at ( 1.5, 1.5); - - \draw[->] (p1)node[]{$\bullet$}node[above]{$\vec{p}_1$} -- ++(1, 0)node[above]{$\delta p_{x1}$}; - \draw[->] (p2)node[]{$\bullet$}node[above]{$\vec{p}_2$} -- ++(1, 0)node[above]{$\delta p_{x2}$}; - - \draw[dashed] ($(p1)+(-1, 0)$) -- ($(p2)+(2, 0)$); - \end{tikzpicture} -#+end_src - -#+name: fig:modal_aligned_accelerometers -#+caption: Aligned measurement of the motion of a solid body -#+RESULTS: -[[file:figs/modal_aligned_accelerometers.png]] - -The motion of the rigid body of figure ref:fig:modal_aligned_accelerometers is here described by its displacement $\vec{\delta}p = [\delta p_x,\ \delta p_y,\ \delta p_z]$ and (small) rotations $[\delta \Omega_x,\ \delta \Omega_y,\ \delta \Omega_z]$ with respect to a reference frame $\{O\}$. - -The motion of points $p_1$ and $p_2$ can be computed from $\vec{\delta} p$ and $\bm{\delta \Omega}$ eqref:eq:modal_p1_p2_motion, with $\bm{\delta\Omega}$ defined in equation eqref:eq:modal_rotation_matrix. - -\begin{subequations}\label{eq:modal_p1_p2_motion} -\begin{align} - \vec{\delta} p_{1} &= \vec{\delta} p + \bm{\delta \Omega} \cdot \vec{p}_{1} \\ - \vec{\delta} p_{2} &= \vec{\delta} p + \bm{\delta \Omega} \cdot \vec{p}_{2} -\end{align} -\end{subequations} - -\begin{equation}\label{eq:modal_rotation_matrix} - \bm{\delta\Omega} = \begin{bmatrix} - 0 & -\delta\Omega_z & \delta\Omega_y \\ - \delta\Omega_z & 0 & -\delta\Omega_x \\ - -\delta\Omega_y & \delta\Omega_x & 0 -\end{bmatrix} -\end{equation} - -Considering only the $x$ direction, equation eqref:eq:modal_p1_p2_x_motion is obtained. - -\begin{subequations}\label{eq:modal_p1_p2_x_motion} -\begin{align} - \delta p_{x1} &= \delta p_x + \delta \Omega_y p_{z1} - \delta \Omega_z p_{y1} \\ - \delta p_{x2} &= \delta p_x + \delta \Omega_y p_{z2} - \delta \Omega_z p_{y2} -\end{align} -\end{subequations} - -Because the two sensors are aligned in the $x$ direction, $p_{1y} = p_{2y}$ and $p_{1z} = p_{2z}$, and eqref:eq:modal_colinear_sensors_equal is obtained. - -\begin{equation}\label{eq:modal_colinear_sensors_equal} - \boxed{\delta p_{x1} = \delta p_{x2}} -\end{equation} - -It is therefore concluded that two position sensors fixed to a rigid body will measure the same quantity in the direction "in line" the two sensors. - - -Such property can be used to check if the considered stages are having non rigid body behavior in the frequency band of interest. -From Table ref:tab:modal_position_accelerometers, the accelerometer pairs that are aligned in the X and Y directions can be identified. -The response in the X direction of pairs of sensors aligned in the X direction are compared in Figure ref:fig:modal_solid_body_comp_x_dir. -A good match is observed up to 200Hz. -Similar result is obtained for the Y direction. -This provides a first indication that the considered bodies are behaving as solid bodes in the frequency range of interest. - -#+begin_src matlab -%% Load frequency response matrix -load('frf_matrix.mat', 'freqs', 'frf'); - -%% Load Accelerometer positions -acc_pos = readtable('mat/acc_pos.txt', 'ReadVariableNames', false); -acc_pos = table2array(acc_pos(:, 1:4)); -[~, i] = sort(acc_pos(:, 1)); -acc_pos = acc_pos(i, 2:4); -#+end_src - -#+begin_src matlab -%% Accelerometers ID connected to each solid body -solids = {}; -solids.gbot = [17, 18, 19, 20]; % bottom granite -solids.gtop = [13, 14, 15, 16]; % top granite -solids.ty = [9, 10, 11, 12]; % Ty stage -solids.ry = [5, 6, 7, 8]; % Ry stage -solids.rz = [21, 22, 23]; % Rz stage -solids.hexa = [1, 2, 3, 4]; % Hexapod - -% Names of the solid bodies -solid_names = fields(solids); -#+end_src - -#+begin_src matlab :eval no -%% Save the acceleromter positions are well as the solid bodies -save('mat/geometry.mat', 'solids', 'solid_names', 'acc_pos'); -#+end_src - -#+begin_src matlab :tangle no -%% Save the acceleromter positions are well as the solid bodies -save('matlab/mat/geometry.mat', 'solids', 'solid_names', 'acc_pos'); -#+end_src - -#+begin_src matlab :exports none -meas_dir = 1; % X -exc_dir = 1; % X - -% Pair of accelerometers aligned in the X direction -acc_i = [1 , 4 ; - 2 , 3 ; - 5 , 8 ; - 6 , 7 ; - 9 , 12; - 10, 11; - 14, 15; - 18, 19; - 21, 23]; -#+end_src - -#+begin_src matlab :exports none :results none -%% Comparaison of measured frequency response function for in the X directions for accelerometers aligned along X -figure; -tiledlayout(3, 3, 'TileSpacing', 'Compact', 'Padding', 'None'); -for i = 1:size(acc_i, 1) - nexttile(); - hold on; - plot(freqs, abs(squeeze(frf(meas_dir+3*(acc_i(i, 1)-1), exc_dir, :))), ... - 'DisplayName', sprintf('%i', acc_i(i, 1))) - plot(freqs, abs(squeeze(frf(meas_dir+3*(acc_i(i, 2)-1), exc_dir, :))), ... - 'DisplayName', sprintf('%i', acc_i(i, 2))) - hold off; - set(gca, 'XScale', 'lin'); set(gca, 'YScale', 'log'); - if i > 6 - xlabel('Frequency [Hz]'); - legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1); - else - set(gca, 'XTickLabel',[]); - legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1); - end - - if rem(i, 3) == 1 - ylabel('Amplitude'); - else - set(gca, 'YTickLabel',[]); - end - - xlim([0, 200]); ylim([1e-5, 2e-2]); - xticks([0:50:200]); - yticks([1e-5, 1e-4, 1e-3, 1e-2]); -end -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/modal_solid_body_comp_x_dir.pdf', 'width', 'full', 'height', 'tall'); -#+end_src - -#+name: fig:modal_solid_body_comp_x_dir -#+caption: Comparaison of measured frequency response function for in the X directions for accelerometers aligned along X. Amplitude is in $\frac{m/s^2}{N}$. Accelerometer number is shown in the legend. -#+RESULTS: -[[file:figs/modal_solid_body_comp_x_dir.png]] - ** From accelerometer DOFs to solid body DOFs <> @@ -859,6 +691,41 @@ Therefore, having more accelerometers permits to have a better approximation of From the CAD model, the position of the center of mass of each considered solid body is computed (see Table ref:tab:modal_com_solid_bodies). Then, the position of each accelerometer with respect to the center of mass of the corresponding solid body can easily be derived. +#+begin_src matlab +%% Load frequency response matrix +load('frf_matrix.mat', 'freqs', 'frf'); + +%% Load Accelerometer positions +acc_pos = readtable('mat/acc_pos.txt', 'ReadVariableNames', false); +acc_pos = table2array(acc_pos(:, 1:4)); +[~, i] = sort(acc_pos(:, 1)); +acc_pos = acc_pos(i, 2:4); +#+end_src + +#+begin_src matlab +%% Accelerometers ID connected to each solid body +solids = {}; +solids.gbot = [17, 18, 19, 20]; % bottom granite +solids.gtop = [13, 14, 15, 16]; % top granite +solids.ty = [9, 10, 11, 12]; % Ty stage +solids.ry = [5, 6, 7, 8]; % Ry stage +solids.rz = [21, 22, 23]; % Rz stage +solids.hexa = [1, 2, 3, 4]; % Hexapod + +% Names of the solid bodies +solid_names = fields(solids); +#+end_src + +#+begin_src matlab :eval no +%% Save the acceleromter positions are well as the solid bodies +save('mat/geometry.mat', 'solids', 'solid_names', 'acc_pos'); +#+end_src + +#+begin_src matlab :tangle no +%% Save the acceleromter positions are well as the solid bodies +save('matlab/mat/geometry.mat', 'solids', 'solid_names', 'acc_pos'); +#+end_src + #+begin_src matlab %% Extract the CoM of considered solid bodies model_com = reshape(table2array(readtable('mat/model_solidworks_com.txt', 'ReadVariableNames', false)), [3, 6]); @@ -882,10 +749,10 @@ data2orgtable(1000*model_com', {'Bottom Granite', 'Top granite', 'Translation st | Spindle | 0 | 0 | -580 | | Hexapod | -4 | 6 | -319 | -Using eqref:eq:modal_determine_global_disp, the frequency response matrix $\bm{H}_\text{CoM}$ eqref:eq:modal_frf_matrix_com expressing the response at the center of mass of each solid body $D_i$ ($i$ from $1$ to $6$ for the $6$ considered solid bodies) can be computed from the initial acrshort:frf matrix $\bm{H}$. +Using eqref:eq:modal_determine_global_disp, the frequency response matrix $\mathbf{H}_\text{CoM}$ eqref:eq:modal_frf_matrix_com expressing the response at the center of mass of each solid body $D_i$ ($i$ from $1$ to $6$ for the $6$ considered solid bodies) can be computed from the initial acrshort:frf matrix $\mathbf{H}$. \begin{equation}\label{eq:modal_frf_matrix_com} - \bm{H}_\text{CoM}(\omega_i) = \begin{bmatrix} + \mathbf{H}_\text{CoM}(\omega_i) = \begin{bmatrix} \frac{D_{1,T_x}}{F_x}(\omega_i) & \frac{D_{1,T_x}}{F_y}(\omega_i) & \frac{D_{1,T_x}}{F_z}(\omega_i) \\ \frac{D_{1,T_y}}{F_x}(\omega_i) & \frac{D_{1,T_y}}{F_y}(\omega_i) & \frac{D_{1,T_y}}{F_z}(\omega_i) \\ \frac{D_{1,T_z}}{F_x}(\omega_i) & \frac{D_{1,T_z}}{F_y}(\omega_i) & \frac{D_{1,T_z}}{F_z}(\omega_i) \\ @@ -900,7 +767,7 @@ Using eqref:eq:modal_determine_global_disp, the frequency response matrix $\bm{H #+begin_src matlab %% Frequency Response Matrix - Response expressed at the CoM of the solid bodies -acrshort:frfs_CoM = zeros(length(solid_names)*6, 3, 801); +frfs_CoM = zeros(length(solid_names)*6, 3, 801); for solid_i = 1:length(solid_names) % Number of accelerometers fixed to this solid body @@ -920,37 +787,37 @@ for solid_i = 1:length(solid_names) end for exc_dir = 1:3 - acrshort:frfs_CoM((solid_i-1)*6+1:solid_i*6, exc_dir, :) = A\squeeze(frf((solids_i(1)-1)*3+1:solids_i(end)*3, exc_dir, :)); + frfs_CoM((solid_i-1)*6+1:solid_i*6, exc_dir, :) = A\squeeze(frf((solids_i(1)-1)*3+1:solids_i(end)*3, exc_dir, :)); end end #+end_src #+begin_src matlab :eval no -%% Save the computed acrshort:frf at the CoM -save('mat/frf_com.mat', 'acrshort:frfs_CoM'); +%% Save the computed FRF at the CoM +save('mat/frf_com.mat', 'frfs_CoM'); #+end_src #+begin_src matlab :tangle no -%% Save the computed acrshort:frf at the CoM -save('matlab/mat/frf_com.mat', 'acrshort:frfs_CoM'); +%% Save the computed FRF at the CoM +save('matlab/mat/frf_com.mat', 'frfs_CoM'); #+end_src ** Verification of solid body assumption <> -From the response of one solid body along its 6 acrshortpl:dof (i.e. from $\bm{H}_{\text{CoM}}$), and using equation eqref:eq:modal_cart_to_acc, it is possible to compute the response of the same solid body at any location, in particular at the location of the four accelerometers fixed to this solid body (i.e. estimation of the initial $\bm{H}$ matrix). - -Comparing the computed response of a particular accelerometer from $\bm{H}_{\text{CoM}}$ with the original measurements $\bm{H}$ is useful to check if the change of coordinate eqref:eq:modal_determine_global_disp works as expected, and if the solid body assumption is correct in the frequency band of interest. +From the response of one solid body along its 6 acrshortpl:dof (i.e. from $\mathbf{H}_{\text{CoM}}$), and using equation eqref:eq:modal_cart_to_acc, it is possible to compute the response of the same solid body at any considered position. +In particular, the response at the location of the four accelerometers can be computed. +Comparing the computed response of a particular accelerometer from $\mathbf{H}_{\text{CoM}}$ with the original measurements $\mathbf{H}$ is use to check if solid body assumption is correct in the frequency band of interest. #+begin_src matlab -acrshort:frfs_A = zeros(size(frf)); +frfs_A = zeros(size(frf)); % For each excitation direction for exc_dir = 1:3 % For each solid for solid_i = 1:length(solid_names) - v0 = squeeze(acrshort:frfs_CoM((solid_i-1)*6+1:(solid_i-1)*6+3, exc_dir, :)); - W0 = squeeze(acrshort:frfs_CoM((solid_i-1)*6+4:(solid_i-1)*6+6, exc_dir, :)); + v0 = squeeze(frfs_CoM((solid_i-1)*6+1:(solid_i-1)*6+3, exc_dir, :)); + W0 = squeeze(frfs_CoM((solid_i-1)*6+4:(solid_i-1)*6+6, exc_dir, :)); % For each accelerometer attached to the current solid for acc_i = solids.(solid_names{solid_i}) @@ -959,16 +826,16 @@ for exc_dir = 1:3 % pos = acc_pos(acc_i, :).'; posX = [0 pos(3) -pos(2); -pos(3) 0 pos(1) ; pos(2) -pos(1) 0]; - acrshort:frfs_A(3*(acc_i-1)+1:3*(acc_i-1)+3, exc_dir, :) = v0 + posX*W0; + frfs_A(3*(acc_i-1)+1:3*(acc_i-1)+3, exc_dir, :) = v0 + posX*W0; end end end #+end_src -The comparison is made for the 4 accelerometers fixed to the micro-hexapod in Figure ref:fig:modal_comp_acc_solid_body_frf. +The comparison is made for the 4 accelerometers fixed to the micro-hexapod (Figure ref:fig:modal_comp_acc_solid_body_frf). The original frequency response functions and the ones computed from the CoM responses are well matching in the frequency range of interested. Similar results are obtained for the other solid bodies, indicating that the solid body assumption is valid, and that a multi-body model can be used to represent the dynamics of the micro-station. -This also validates the reduction of the number of degrees of freedom from 69 (23 accelerometers with each 3acrshort:dof) to 36 (6 solid bodies with 6 acrshort:dof). +This also validates the reduction of the number of degrees of freedom from 69 (23 accelerometers with each 3 acrshort:dof) to 36 (6 solid bodies with 6 acrshort:dof). #+begin_src matlab :exports none :results none %% Comparaison of the original accelerometer response and reconstructed response from the solid body response @@ -993,7 +860,7 @@ for i = 1:length(accs_i) end set(gca,'ColorOrderIndex',1) for dir_i = 1:3 - plot(freqs, abs(squeeze(acrshort:frfs_A(3*(acc_i-1)+dir_i, exc_dir, :))), '--', 'HandleVisibility', 'off'); + plot(freqs, abs(squeeze(frfs_A(3*(acc_i-1)+dir_i, exc_dir, :))), '--', 'HandleVisibility', 'off'); end hold off; @@ -1031,31 +898,16 @@ exportFig('figs/modal_comp_acc_solid_body_frf.pdf', 'width', 'full', 'height', ' :END: <> ** Introduction :ignore: -The goal here is to extract the modal parameters describing the modes of station being studied, namely: -- the eigen frequencies and the modal damping (eigen values) -- the mode shapes (eigen vectors) +The goal here is to extract the modal parameters describing the modes of station being studied, namely the natural frequencies and the modal damping (i.e. the eigenvalues) and the mode shapes (.i.e. the eigenvectors). This is done from the acrshort:frf matrix previously extracted from the measurements. +In order to perform the modal parameter extraction, the order of the modal model needs to be estimated (i.e. the number of modes in the frequency band of interest). +This is done using the acrfull:mif in section ref:ssec:modal_number_of_modes. -In order to do the modal parameter extraction, we first have to estimate the order of the modal model we want to obtain. -This corresponds to how many modes are present in the frequency band of interest. -In section ref:ssec:modal_number_of_modes, we will use the Singular Value Decomposition and the Modal Indication Function to estimate the number of modes. +In section ref:ssec:modal_parameter_extraction, the modal parameter extraction is performed. +Graphical display of the mode shapes can be computed from the modal model, which is quite quite useful to have a physical interpretation of the modes. - -The modal parameter extraction methods generally consists of *curve-fitting a theoretical expression for an individual acrshort:frf to the actual measured data*. -However, there are multiple level of complexity: -- works on a part of a single acrshort:frf curve -- works on a complete curve encompassing several resonances -- works on a set of many acrshort:frf plots all obtained from the same structure -The third method is the most complex but gives better results. This is the one we will use in section ref:ssec:modal_parameter_extraction. - -From the modal model, it is possible to obtain a graphic display of the mode shapes (section ref:ssec:modal_mode_shapes). - - -In order to validate the quality of the modal model, we will synthesize the acrshort:frf matrix from the modal model and compare it with the acrshort:frf measured (section ref:ssec:modal_model_validity). - - -The modes of the structure are expected to be complex, however real modes are easier to work with when it comes to obtain a spatial model from the modal parameters. +To validate the quality of the modal model, the full acrshort:frf matrix is computed from the modal model and compared with the initial measured acrshort:frf (section ref:ssec:modal_model_validity). ** Matlab Init :noexport:ignore: #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) @@ -1080,33 +932,28 @@ The modes of the structure are expected to be complex, however real modes are ea ** Determine the number of modes <> -**** Singular Value Decomposition - Modal Indication Function -The Mode Indicator Functions are usually used on $n\times p$ acrshort:frf matrix where $n$ is a relatively large number of measurement DOFs and $p$ is the number of excitation DOFs, typically 3 or 4. +The acrshort:mif is here applied to the $n\times p$ acrshort:frf matrix where $n$ is a relatively large number of measurement DOFs (here $n=69$) and $p$ is the number of excitation DOFs (here $p=3$). -In these methods, the frequency dependent acrshort:frf matrix is subjected to a singular value decomposition analysis which thus yields a small number (3 or 4) of singular values, these also being frequency dependent. +The complex modal indication function is defined in equation eqref:eq:modal_cmif where $\Sigma$ is obtained from a acrshort:svd of the acrshort:frf matrix eqref:eq:modal_svd. +\begin{equation} \label{eq:modal_cmif} + [CMIF(\omega)]_{p\times p} = [\Sigma(\omega)]_{p\times n}^T [\Sigma(\omega)]_{n\times p} +\end{equation} -These methods are used to *determine the number of modes* present in a given frequency range, to *identify repeated natural frequencies* and to pre-process the acrshort:frf data prior to modal analysis. +\begin{equation} \label{eq:modal_svd} +[H(\omega)]_{n\times p} = [U(\omega)]_{n\times n} [\Sigma(\omega)]_{n\times p} [V(\omega)]_{p\times p}^H +\end{equation} -From the documentation of the modal software: -#+begin_quote -The MIF consist of the singular values of the Frequency response function matrix. The number of MIFs equals the number of excitations. -By the powerful singular value decomposition, the real signal space is separated from the noise space. Therefore, the MIFs exhibit the modes effectively. -A peak in the MIFs plot usually indicate the existence of a structural mode, and two peaks at the same frequency point means the existence of two repeated modes. -Moreover, the magnitude of the MIFs implies the strength of the a mode. -#+end_quote - -#+begin_important -The *Complex Mode Indicator Function* is defined simply by the SVD of the acrshort:frf (sub) matrix: -\begin{align*} - [H(\omega)]_{n\times p} &= [U(\omega)]_{n\times n} [\Sigma(\omega)]_{n\times p} [V(\omega)]_{p\times p}^H\\ - [CMIF(\omega)]_{p\times p} &= [\Sigma(\omega)]_{p\times n}^T [\Sigma(\omega)]_{n\times p} -\end{align*} -#+end_important - -We compute the Complex Mode Indicator Function. -The result is shown on Figure ref:fig:modal_indication_function. +The acrshort:mif therefore yields to $p$ values that are also frequency dependent. +A peak in the acrshort:mif plot indicates the presence of a mode. +Repeated modes can also be detected by multiple singular values are having peaks at the same frequency. +The obtained acrshort:mif is shown on Figure ref:fig:modal_indication_function. +A total of 16 modes are found between 0 and $200\,\text{Hz}$. +The obtained natural frequencies and associated modal damping are summarized in Table ref:tab:modal_obtained_modes_freqs_damps. #+begin_src matlab +%% Load frequency response matrix +load('frf_matrix.mat', 'freqs', 'frf'); + %% Computation of the modal indication function MIF = zeros(size(frf, 2), size(frf, 2), size(frf, 3)); @@ -1131,76 +978,130 @@ xlim([0, 200]); ylim([1e-6, 2e-2]); #+end_src -#+begin_src matlab :tangle no :exports results :results file replace +#+begin_src matlab :tangle no :exports results :results file none exportFig('figs/modal_indication_function.pdf', 'width', 'wide', 'height', 'normal'); #+end_src +#+attr_latex: :options [t]{0.70\linewidth} +#+begin_minipage #+name: fig:modal_indication_function #+caption: Modal Indication Function -#+RESULTS: +#+attr_latex: :float nil :width 0.95\linewidth [[file:figs/modal_indication_function.png]] - -**** Composite Response Function -An alternative is the Composite Response Function $HH(\omega)$ defined as the sum of all the measured acrshort:frf: -\begin{equation} - HH(\omega) = \sum_j\sum_kH_{jk}(\omega) -\end{equation} - -Instead, we choose here to use the sum of the norms of the measured frf: -\begin{equation} - HH(\omega) = \sum_j\sum_k \left|H_{jk}(\omega) \right| -\end{equation} - -The result is shown on figure ref:fig:modal_composite_reponse_function. - -#+begin_src matlab :exports none :results none -%% Composite Response Function -figure; -hold on; -plot(freqs, squeeze(sum(sum(abs(frf)))), '-k'); -hold off; -xlabel('Frequency [Hz]'); ylabel('Amplitude'); -xlim([0, 200]); -xticks([0:20:200]); -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/modal_composite_reponse_function.pdf', 'width', 'wide', 'height', 'normal'); -#+end_src - -#+name: fig:modal_composite_reponse_function -#+caption: Composite Response Function -#+RESULTS: -[[file:figs/modal_composite_reponse_function.png]] +#+end_minipage +\hfill +#+attr_latex: :options [b]{0.28\linewidth} +#+begin_minipage +#+begin_scriptsize +#+name: tab:modal_obtained_modes_freqs_damps +#+caption: Natural frequencies and modal damping +#+attr_latex: :environment tabularx :width \linewidth :placement [b] :align ccc +#+attr_latex: :booktabs t :float nil :center nil +| Mode | Freq. [Hz] | Damp. [%] | +|------+------------+-----------| +| 1 | 11.9 | 12.2 | +| 2 | 18.6 | 11.7 | +| 3 | 37.8 | 6.2 | +| 4 | 39.1 | 2.8 | +| 5 | 56.3 | 2.8 | +| 6 | 69.8 | 4.3 | +| 7 | 72.5 | 1.3 | +| 8 | 84.8 | 3.7 | +| 9 | 91.3 | 2.9 | +| 10 | 105.5 | 3.2 | +| 11 | 106.6 | 1.6 | +| 12 | 112.7 | 3.1 | +| 13 | 124.2 | 2.8 | +| 14 | 145.3 | 1.3 | +| 15 | 150.5 | 2.4 | +| 16 | 165.4 | 1.4 | +#+end_scriptsize +#+end_minipage ** Modal parameter extraction <> -**** OROS - Modal software -Modal identification are done within the Modal software of OROS. -Several modal parameter extraction methods are available. -We choose to use the "broad band" method as it permits to identify the modal parameters using all the acrshort:frf curves at the same time. -It takes into account the fact the the properties of all the individual curves are related by being from the same structure: all acrshort:frf plots on a given structure should indicate the same values for the natural frequencies and damping factor of each mode. +The modal identification generally consists of curve-fitting a theoretical expression for an individual acrshort:frf to the actual measured data. +However, there are multiple level of complexity, from fitting of a single resonance, a complete curve encompassing several resonances and working on a set of many acrshort:frf plots all obtained from the same structure. -Such method also have the advantage of producing a *unique and consistent model* as direct output. +Here, the last method is used as it gives a unique and consistent model as direct output. +It takes into account the fact the the properties of all the individual curves are related by being from the same structure: all FRF plots on a given structure should indicate the same values for the natural frequencies and damping factor of each mode. -In order to apply this method, we select the frequency range of interest and we give an estimate of how many modes are present. +From the obtained modal parameters, the mode shapes are computed and can be displayed in the form of animations. +Three mode shapes are shown in Figure ref:fig:modal_mode_animations. -Then, it shows a stabilization charts, such as the one shown on figure ref:fig:modal_stabilization_chart, where we have to manually select which modes to take into account in the modal model. +These animations are quite useful to easily get a better understanding of the system. +For instance, the mode shape of the first mode at 11Hz (figure ref:fig:modal_mode1_animation) indicates that there is an issue with the lower granite. +It turns out that four /Airloc Levelers/ are used to level the lower granite (figure ref:fig:modal_airloc). +These are difficult to tune so that the granite is well supported by four of them and not "wobbly" on just two of them. -#+name: fig:modal_stabilization_chart -#+caption: Stabilization Chart +#+name: fig:modal_mode_animations +#+caption: Three obtained mode shape animations +#+begin_figure +#+attr_latex: :caption \subcaption{\label{fig:modal_mode1_animation}$1^{st}$ mode at 11.9 Hz: tilt suspension mode of the granite} +#+attr_latex: :options {\textwidth} +#+begin_subfigure #+attr_latex: :width \linewidth -[[file:img/modal_software/stabilisation_chart.jpg]] +[[file:figs/modal_mode1_animation.jpg]] +#+end_subfigure +#+attr_latex: :caption \subcaption{\label{fig:modal_mode6_animation}$6^{th}$ mode at 69.8 Hz: vertical resonance of the spindle} +#+attr_latex: :options {\textwidth} +#+begin_subfigure +#+attr_latex: :width \linewidth +[[file:figs/modal_mode6_animation.jpg]] +#+end_subfigure +#+attr_latex: :caption \subcaption{\label{fig:modal_mode13_animation}$13^{th}$ mode at 124.2 Hz: lateral micro-hexapod resonance} +#+attr_latex: :options {\textwidth} +#+begin_subfigure +#+attr_latex: :width \linewidth +[[file:figs/modal_mode13_animation.jpg]] +#+end_subfigure +#+end_figure -We can then run the modal analysis, and the software will identify the modal damping and mode shapes at the selected frequency modes. +#+name: fig:modal_airloc +#+caption: AirLoc used for the granite (2120-KSKC) +#+attr_latex: :width 0.6\linewidth +[[file:figs/modal_airlock_picture.jpg]] -**** Importation of the modal parameters on Matlab -The obtained modal parameters are: -- Resonance frequencies in Hertz -- Modal damping ratio in percentage -- (complex) Modes shapes for each measured acrshort:dof -- Modal A and modal B which are parameters important for further normalization +The modal parameter extraction is made using a proprietary software[fn:4]. +For each mode $r$ (from $1$ to the number of considered modes $m=16$), it outputs the frequency $\omega_r$, the damping ratio $\xi_r$, the eigenvectors $\{\phi_{r}\}$ (vector of complex numbers with a size equal to the number of measured acrshort:dof $n=69$, see equation eqref:eq:modal_eigenvector) and a scaling factor $a_r$. + +\begin{equation}\label{eq:modal_eigenvector} +\{\phi_i\} = \begin{Bmatrix} \phi_{i, 1_x} & \phi_{i, 1_y} & \phi_{i, 1_z} & \phi_{i, 2_x} & \dots & \phi_{i, 23_z} \end{Bmatrix}^T +\end{equation} + +The eigenvalues $s_r$ and $s_r^*$ can then be computed from eqref:eq:modal_eigenvalues. + +\begin{equation}\label{eq:modal_eigenvalues} + s_r = \omega_r (-\xi_r + i \sqrt{1 - \xi_r^2}), \quad s_r^* = \omega_r (-\xi_r - i \sqrt{1 - \xi_r^2}) +\end{equation} + +** Verify the validity of the Modal Model +<> + +In order to check the validity of the modal model, the complete $n \times n$ acrshort:frf matrix $\mathbf{H}_{\text{syn}}$ is first synthesized from the modal parameters. +Then, the elements of this acrshort:frf matrix $\mathbf{H}_{\text{syn}}$ that were already measured can be compared with the measured elements $\mathbf{H}$. +New measurements may be performed to compare with elements of the synthesized acrshort:frf matrix that were not initialized measured to build the modal model. + +In order to synthesize the full acrshort:frf matrix, the eigenvectors $\phi_r$ are first reorganized in a matrix from as shown in equation eqref:eq:modal_eigvector_matrix. +\begin{equation}\label{eq:modal_eigvector_matrix} +\Phi = \begin{bmatrix} + & & & & &\\ + \phi_1 & \dots & \phi_N & \phi_1^* & \dots & \phi_N^* \\ + & & & & & +\end{bmatrix}_{n \times 2m} +\end{equation} + +The full acrshort:frf matrix $\mathbf{H}_{\text{syn}}$ can be synthesize using eqref:eq:modal_synthesized_frf. + +\begin{equation}\label{eq:modal_synthesized_frf} + [\mathbf{H}_{\text{syn}}(\omega)]_{n\times n} = [\Phi]_{n\times2m} [\mathbf{H}_{\text{mod}}(\omega)]_{2m\times2m} [\Phi]_{2m\times n}^T +\end{equation} + +With $\mathbf{H}_{\text{mod}}(\omega)$ a diagonal matrix representing the response of the different modes eqref:eq:modal_modal_resp. +\begin{equation}\label{eq:modal_modal_resp} +\mathbf{H}_{\text{mod}}(\omega) = \text{diag}\left(\frac{1}{a_1 (j\omega - s_1)},\ \dots,\ \frac{1}{a_m (j\omega - s_m)}, \frac{1}{a_1^* (j\omega - s_1^*)},\ \dots,\ \frac{1}{a_m^* (j\omega - s_m^*)} \right)_{2m\times 2m} +\end{equation} #+begin_src matlab %% Load modal parameters @@ -1209,18 +1110,14 @@ freqs_m = table2array(readtable('mat/mode_freqs.txt', 'ReadVariableNames', fa damps_m = table2array(readtable('mat/mode_damps.txt', 'ReadVariableNames', false)); % in [%] modal_a = table2array(readtable('mat/mode_modal_a.txt', 'ReadVariableNames', false)); % [Real / Imag] modal_b = table2array(readtable('mat/mode_modal_b.txt', 'ReadVariableNames', false)); % [Real / Imag] -#+end_src -#+begin_src matlab %% Guess the number of modes identified from the length of the imported data. acc_n = 23; % Number of accelerometers dir_n = 3; % Number of directions dirs = 'XYZ'; mod_n = size(shapes_m,1)/acc_n/dir_n; % Number of modes -#+end_src -#+begin_src matlab %% Mode shapes are split into 3 parts (direction plus sign, real part and imaginary part) % we aggregate them into one array of complex numbers T_sign = table2array(shapes_m(:, 1)); @@ -1240,218 +1137,27 @@ for mod_i = 1:mod_n end end end -#+end_src -The obtained mode frequencies and damping are shown in Table ref:tab:modal_obtained_modes_freqs_damps. +%% Create the eigenvalue and eigenvector matrices +eigen_val_M = diag(2*pi*freqs_m.*(-damps_m/100 + j*sqrt(1 - (damps_m/100).^2))); % Lambda = diagonal matrix +eigen_vec_M = reshape(mode_shapes, [mod_n, acc_n*dir_n]).'; % Phi, vecnorm(eigen_vec_M) = 1 -#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*) -data2orgtable([(1:length(freqs_m))', freqs_m, damps_m], {}, {'Mode', 'Frequency [Hz]', 'Damping [%]'}, ' %.1f '); -#+end_src - -#+name: tab:modal_obtained_modes_freqs_damps -#+caption: Obtained eigen frequencies and modal damping -#+attr_latex: :environment tabularx :width 0.35\linewidth :align ccc -#+attr_latex: :center t :booktabs t :font \scriptsize -#+RESULTS: -| Mode | Frequency [Hz] | Damping [%] | -|------+----------------+-------------| -| 1 | 11.9 | 12.2 | -| 2 | 18.6 | 11.7 | -| 3 | 37.8 | 6.2 | -| 4 | 39.1 | 2.8 | -| 5 | 56.3 | 2.8 | -| 6 | 69.8 | 4.3 | -| 7 | 72.5 | 1.3 | -| 8 | 84.8 | 3.7 | -| 9 | 91.3 | 2.9 | -| 10 | 105.5 | 3.2 | -| 11 | 106.6 | 1.6 | -| 12 | 112.7 | 3.1 | -| 13 | 124.2 | 2.8 | -| 14 | 145.3 | 1.3 | -| 15 | 150.5 | 2.4 | -| 16 | 165.4 | 1.4 | - -**** Theory -It seems that the modal analysis software makes the *assumption* of viscous damping for the model with which it tries to fit the acrshort:frf measurements. - -If we note $N$ the number of modes identified, then there are $2N$ eigenvalues and eigenvectors given by the software: -\begin{align} - s_r &= \omega_r (-\xi_r + i \sqrt{1 - \xi_r^2}),\quad s_r^* \\ - \{\psi_r\} &= \begin{Bmatrix} \psi_{1_x} & \psi_{2_x} & \dots & \psi_{23_x} & \psi_{1_y} & \dots & \psi_{1_z} & \dots & \psi_{23_z} \end{Bmatrix}^T, \quad \{\psi_r\}^* -\end{align} -for $r = 1, \dots, N$ where $\omega_r$ is the natural frequency and $\xi_r$ is the critical damping ratio for that mode. - -**** Modal Matrices -We would like to arrange the obtained modal parameters into two modal matrices: -\[ \Lambda = \begin{bmatrix} - s_1 & & 0 \\ - & \ddots & \\ - 0 & & s_N -\end{bmatrix}_{N \times N}; \quad \Psi = \begin{bmatrix} - & & \\ - \{\psi_1\} & \dots & \{\psi_N\} \\ - & & -\end{bmatrix}_{M \times N} \] -\[ \{\psi_i\} = \begin{Bmatrix} \psi_{i, 1_x} & \psi_{i, 1_y} & \psi_{i, 1_z} & \psi_{i, 2_x} & \dots & \psi_{i, 23_z} \end{Bmatrix}^T \] - -$M$ is the number of acrshort:dof: here it is $23 \times 3 = 69$. -$N$ is the number of mode - -#+begin_src matlab -eigen_val_M = diag(2*pi*freqs_m.*(-damps_m/100 + j*sqrt(1 - (damps_m/100).^2))); -eigen_vec_M = reshape(mode_shapes, [mod_n, acc_n*dir_n]).'; -#+end_src - -Each eigen vector is normalized: $\| \{\psi_i\} \|_2 = 1$ - - -However, the eigen values and eigen vectors appears as complex conjugates: -\[ s_r, s_r^*, \{\psi\}_r, \{\psi\}_r^*, \quad r = 1, N \] - -In the end, they are $2N$ eigen values. -We then build two extended eigen matrices as follow: -\[ \mathcal{S} = \begin{bmatrix} - s_1 & & & & & \\ - & \ddots & & & 0 & \\ - & & s_N & & & \\ - & & & s_1^* & & \\ - & 0 & & & \ddots & \\ - & & & & & s_N^* -\end{bmatrix}_{2N \times 2N}; \quad \Phi = \begin{bmatrix} - & & & & &\\ - \{\psi_1\} & \dots & \{\psi_N\} & \{\psi_1^*\} & \dots & \{\psi_N^*\} \\ - & & & & & -\end{bmatrix}_{M \times 2N} \] - -#+begin_src matlab +% Add complex conjugate eigenvalues and eigenvectors eigen_val_ext_M = blkdiag(eigen_val_M, conj(eigen_val_M)); eigen_vec_ext_M = [eigen_vec_M, conj(eigen_vec_M)]; -#+end_src -We also build the Modal A and Modal B matrices: -\begin{equation} - A = \begin{bmatrix} - a_1 & & 0 \\ - & \ddots & \\ - 0 & & a_N - \end{bmatrix}_{N \times N}; \quad B = \begin{bmatrix} - b_1 & & 0 \\ - & \ddots & \\ - 0 & & b_N - \end{bmatrix}_{N \times N} -\end{equation} -With $a_i$ is the "Modal A" parameter linked to mode i. - -#+begin_src matlab +%% "Modal A" and "Modal B" matrices modal_a_M = diag(complex(modal_a(:, 1), modal_a(:, 2))); modal_b_M = diag(complex(modal_b(:, 1), modal_b(:, 2))); modal_a_ext_M = blkdiag(modal_a_M, conj(modal_a_M)); modal_b_ext_M = blkdiag(modal_b_M, conj(modal_b_M)); -#+end_src -"Modal A" and "modal B" are linked through the following formula: -\[ B = - A \Lambda \] - -** Obtained Mode Shapes animations -<> -From the modal parameters, it is possible to show the modal shapes with an animation. - -Examples are shown in Figures ref:fig:modal_mode_animations. - -#+name: fig:modal_mode_animations -#+caption: Instrumentation used for the modal analysis -#+begin_figure -#+attr_latex: :caption \subcaption{\label{fig:modal_mode1_animation}Mode 1} -#+attr_latex: :options {\textwidth} -#+begin_subfigure -#+attr_latex: :width \linewidth -[[file:figs/modal_mode1_animation.jpg]] -#+end_subfigure -#+attr_latex: :caption \subcaption{\label{fig:modal_mode6_animation}Mode 6} -#+attr_latex: :options {\textwidth} -#+begin_subfigure -#+attr_latex: :width \linewidth -[[file:figs/modal_mode6_animation.jpg]] -#+end_subfigure -#+attr_latex: :caption \subcaption{\label{fig:modal_mode13_animation}Mode 13} -#+attr_latex: :options {\textwidth} -#+begin_subfigure -#+attr_latex: :width \linewidth -[[file:figs/modal_mode13_animation.jpg]] -#+end_subfigure -#+end_figure - -We can learn quite a lot from these mode shape animations. - -For instance, the mode shape of the first mode at 11Hz (figure ref:fig:modal_mode1_animation) seems to indicate that this corresponds to a suspension mode. - -This could be due to the 4 Airloc Levelers that are used for the granite (figure ref:fig:modal_airloc). - -#+name: fig:modal_airloc -#+caption: AirLoc used for the granite (2120-KSKC) -#+attr_latex: :width 0.6\linewidth -[[file:figs/modal_airlock_picture.jpg]] - -They are probably *not well leveled*, so the granite is supported only by two Airloc. - -** Verify the validity of the Modal Model -<> - -There are two main ways to verify the validity of the modal model -- Synthesize acrshort:frf measurements that has been used to generate the modal model and compare -- Synthesize acrshort:frf that has not yet been measured. Then measure that acrshort:frf and compare - -From the modal model, we want to synthesize the Frequency Response Functions that has been used to build the modal model. - -Let's recall that: -- $M$ is the number of measured DOFs ($3 \times n_\text{acc}$) -- $N$ is the number of modes identified - -We then have that the acrshort:frf matrix $[H_{\text{syn}}]$ can be synthesize using the following formula: -#+begin_important -\begin{equation} - [H_{\text{syn}}(\omega)]_{M\times M} = [\Phi]_{M\times2N} \left[\frac{Q_r}{j\omega - s_r}\right]_{2N\times2N} [\Phi]_{2N\times M}^T -\end{equation} -with $Q_r = 1/M_{A_r}$ -#+end_important - -An alternative formulation is: -\[ H_{pq}(s_i) = \sum_{r=1}^N \frac{A_{pqr}}{s_i - \lambda_r} + \frac{A_{pqr}^*}{s_i - \lambda_r^*} \] -with: -- $A_{pqr} = \frac{\psi_{pr}\psi_{qr}}{M_{A_r}}$, $M_{A_r}$ is called "Modal A" -- $\psi_{pr}$: scaled modal coefficient for output DOF $p$, mode $r$ -- $\lambda_r$: complex modal frequency - -From the modal software documentation: -#+begin_quote -*Modal A* -Scaling constant for a complex mode. It has the same properties as modal mass for normal modes (undamped or proportionally damped cases). Assuming -- $\psi_{pr}$ = Modal coefficient for measured degree of freedom p and mode r -- $\psi_{qr}$ = Modal coefficient for measured degree of freedom q and mode r -- $A_{pqr}$ = Residue for measured degree of freedom p, measured degree of q and mode r -- $M_{Ar}$ = Modal A of mode r - -Then -\[ A_{pqr} = \frac{\psi_{pr}\psi_{qr}}{M_{Ar}} \] - - -*Modal B* -Scaling constant for a complex mode. It has the same properties as modal stiffness for normal modes (undamped or proportionally damped cases). Assuming -- $M_{Ar}$ = Modal A of mode r -- $\lambda_r$ = System pole of mode r - -Then -\[ M_{Br} = - \lambda_r M_{Ar} \] -#+end_quote - -#+begin_src matlab -%% Synthesize acrshort:frf from the modal model +%% Synthesize the full FRF matrix from the modal model Hsyn = zeros(acc_n*dir_n, acc_n*dir_n, length(freqs)); for i = 1:length(freqs) - Hsyn(:, :, i) = eigen_vec_ext_M*((j*2*pi*freqs(i)).^2*inv(modal_a_ext_M)/(diag(j*2*pi*freqs(i) - diag(eigen_val_ext_M))))*eigen_vec_ext_M.'; + Hsyn(:, :, i) = eigen_vec_ext_M*diag(1./(diag(modal_a_ext_M).*(j*2*pi*freqs(i) - diag(eigen_val_ext_M))))*eigen_vec_ext_M.'; end %% Derivate two times to to have the acceleration response @@ -1461,116 +1167,128 @@ end #+end_src The comparison between the original measured frequency response function and the synthesized one from the modal model is done in Figure ref:fig:modal_comp_acc_frf_modal. - -# Check if I have the compliance of the micro-station, could be useful to compare and verify the quality of the model -# TODO - say it will be useful when validating the multi-body model +The match is rather good considering the complex dynamics and the different directions considered. #+begin_src matlab :exports none -acc_o = 1; dir_o = 1; dir_i = 1; +acc_o = 11; dir_o = 3; +acc_i = 11; dir_i = 3; figure; -ax1 = subplot(2, 1, 1); hold on; -plot(freqs, abs(squeeze(frf(3*(acc_o-1)+dir_o, dir_i, :))), 'DisplayName', 'Original'); -plot(freqs, abs(squeeze(Hsyn(3*(acc_o-1)+dir_o, 3*(11-1)+dir_i, :))), 'DisplayName', 'Synthesize'); +plot(freqs, abs(squeeze(frf( 3*(acc_o-1)+dir_o, dir_i, :))), 'DisplayName', 'Measured'); +plot(freqs, abs(squeeze(Hsyn(3*(acc_o-1)+dir_o, 3*(acc_i-1)+dir_i, :))), 'DisplayName', 'Synthesized'); hold off; +set(gca, 'xscale', 'lin'); set(gca, 'yscale', 'log'); -set(gca, 'XTickLabel',[]); +xlabel('Frequency [Hz]'); ylabel('Magnitude [$\frac{m/s^2}{N}$]'); -title(sprintf('From acc %i %s to acc %i %s', 11, dirs(dir_i), acc_o, dirs(dir_o))) -legend('location', 'northwest'); - -ax2 = subplot(2, 1, 2); -hold on; -plot(freqs, mod(180/pi*phase(squeeze(frf(3*(acc_o-1)+dir_o, dir_i, :)))+180, 360)-180); -plot(freqs, mod(180/pi*phase(squeeze(Hsyn(3*(acc_o-1)+dir_o, 3*(11-1)+dir_i, :)))+180, 360)-180); -hold off; -yticks(-360:90:360); ylim([-180, 180]); -xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); - -linkaxes([ax1,ax2],'x'); +ldg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1); +ldg.ItemTokenSize = [10, 1]; +xticks([0:40:200]); xlim([1, 200]); +ylim([1e-6, 1e-1]); #+end_src #+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/modal_comp_acc_frf_modal.pdf', 'width', 'wide', 'height', 'tall'); +exportFig('figs/modal_comp_acc_frf_modal_1.pdf', 'width', 'third', 'height', 'normal'); +#+end_src + +#+begin_src matlab :exports none +acc_o = 15; dir_o = 3; +acc_i = 11; dir_i = 3; + +figure; +hold on; +plot(freqs, abs(squeeze(frf( 3*(acc_o-1)+dir_o, dir_i, :))), 'DisplayName', 'Measured'); +plot(freqs, abs(squeeze(Hsyn(3*(acc_o-1)+dir_o, 3*(acc_i-1)+dir_i, :))), 'DisplayName', 'Synthesized'); +hold off; +set(gca, 'xscale', 'lin'); +set(gca, 'yscale', 'log'); +xlabel('Frequency [Hz]'); +ylabel('Magnitude [$\frac{m/s^2}{N}$]'); +ldg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1); +ldg.ItemTokenSize = [10, 1]; +xticks([0:40:200]); +xlim([1, 200]); +ylim([1e-6, 1e-1]); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/modal_comp_acc_frf_modal_2.pdf', 'width', 'third', 'height', 'normal'); +#+end_src + +#+begin_src matlab :exports none +acc_o = 2; dir_o = 1; +acc_i = 11; dir_i = 2; + +figure; +hold on; +plot(freqs, abs(squeeze(frf( 3*(acc_o-1)+dir_o, dir_i, :))), 'DisplayName', 'Measured'); +plot(freqs, abs(squeeze(Hsyn(3*(acc_o-1)+dir_o, 3*(acc_i-1)+dir_i, :))), 'DisplayName', 'Synthesized'); +hold off; +set(gca, 'xscale', 'lin'); +set(gca, 'yscale', 'log'); +xlabel('Frequency [Hz]'); +ylabel('Magnitude [$\frac{m/s^2}{N}$]'); +ldg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1); +ldg.ItemTokenSize = [10, 1]; +xticks([0:40:200]); +xlim([1, 200]); +ylim([1e-6, 1e-1]); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/modal_comp_acc_frf_modal_3.pdf', 'width', 'third', 'height', 'normal'); #+end_src #+name: fig:modal_comp_acc_frf_modal -#+caption: description -#+RESULTS: -[[file:figs/modal_comp_acc_frf_modal.png]] - -# #+name: fig:from11xto1x -# #+caption: Original acrshort:frf and synthesize acrshort:frf using the modal software. From force applied in the X direction to the acceleration of accelerometer 11 in the X direction -# #+attr_latex: :width \linewidth -# [[file:img/modal_software/from11xto1x.jpg]] - -# #+begin_warning -# The synthesize frf from the modal software do not match the synthesize frf computed here. -# It is possible that it uses residues that are not exported? Nothing is said about that in the documentation. -# #+end_warning - -Frequency response functions that has not been measured can be synthesized as shown in Figure ref:fig:modal_synthesized_frf. - -#+begin_src matlab :exports none :results none -%% description -accs = [1]; dirs = [1:3]; - -figure; -ax1 = subplot(2, 1, 1); -hold on; -for acc_i = accs - for dir_i = dirs - plot(freqs, abs((1./(j*2*pi*freqs').^2).*squeeze(Hsyn(3*(acc_i-1)+dir_i, 3*(acc_i-1)+dir_i, :))), 'DisplayName', sprintf('Acc %i - %s', acc_i, dirs(dir_i))); - end -end -hold off; -set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); -set(gca, 'XTickLabel',[]); -ylabel('Magnitude [$\frac{m}{N}$]'); -legend('location', 'southwest'); - -ax2 = subplot(2, 1, 2); -hold on; -for acc_i = accs - for dir_i = dirs - plot(freqs, mod(180/pi*phase((1./(j*2*pi*freqs').^2).*squeeze(Hsyn(3*(acc_i-1)+dir_i, 3*(acc_i-1)+dir_i, :)))+180, 360)-180); - end -end -hold off; -yticks(-360:90:360); ylim([-180, 180]); -set(gca, 'xscale', 'log'); -xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); - -linkaxes([ax1,ax2],'x'); -xlim([1, 200]); -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/modal_synthesized_frf.pdf', 'width', 'wide', 'height', 'tall'); -#+end_src - -#+name: fig:modal_synthesized_frf -#+caption: description -#+RESULTS: -[[file:figs/modal_synthesized_frf.png]] +#+caption: Comparison of the measured FRF with the synthesized FRF from the modal model. +#+attr_latex: :options [htbp] +#+begin_figure +#+attr_latex: :caption \subcaption{\label{fig:modal_comp_acc_frf_modal_1}From $F_{11,z}$ to $a_{11,z}$} +#+attr_latex: :options {0.33\textwidth} +#+begin_subfigure +#+attr_latex: :width 0.99\linewidth +[[file:figs/modal_comp_acc_frf_modal_1.png]] +#+end_subfigure +#+attr_latex: :caption \subcaption{\label{fig:modal_comp_acc_frf_modal_2}From $F_{11,z}$ to $a_{15,z}$} +#+attr_latex: :options {0.33\textwidth} +#+begin_subfigure +#+attr_latex: :width 0.99\linewidth +[[file:figs/modal_comp_acc_frf_modal_2.png]] +#+end_subfigure +#+attr_latex: :caption \subcaption{\label{fig:modal_comp_acc_frf_modal_3}From $F_{11,y}$ to $a_{2,x}$} +#+attr_latex: :options {0.33\textwidth} +#+begin_subfigure +#+attr_latex: :width 0.99\linewidth +[[file:figs/modal_comp_acc_frf_modal_3.png]] +#+end_subfigure +#+end_figure * Conclusion <> -Validation of solid body model. +In this study, a modal analysis of the micro-station was performed. +Thanks to adequate choice of instrumentation and proper set of measurements, high quality frequency response functions could be obtained. +As could be expected from a heavy stacked stages architecture, the obtained frequency response functions indicate that the dynamics of the micro-station is complex. +It shows lots of coupling between stages and different directions, as well as many modes with various damping properties. -Further step: go from modal model to parameters of the solid body model. +By measuring 12 degrees of freedom on each "stage", it could be verified that in the frequency range of interest, each stage is behaving as a rigid body. +This confirms that a solid-body model can be used to properly model the micro-station. -# Conclusion: -# - Validation of rigid body assumption -# - Explain how this helps tuning the multi-body model -# - complex dynamics: need multi-body model of the micro-station to represent the limited compliance... +Even though lots of efforts were put in the proper modal analysis of the micro-station, it was stiff very difficult to obtain an accurate modal model. +Yet, the measurements will be quite useful when tuning the parameters of the multi-body model. * Bibliography :ignore: #+latex: \printbibliography[heading=bibintoc,title={Bibliography}] +* Glossary :ignore: +[[printglossaries:]] + +# #+latex: \printglossary[type=\acronymtype] +# #+latex: \printglossary[type=\glossarytype] +# #+latex: \printglossary + * Helping Functions :noexport: ** Initialize Path #+NAME: m-init-path @@ -1595,6 +1313,7 @@ colors = colororder; * Footnotes +[fn:4]NVGate software from OROS company [fn:3]OROS OR36. 24bits signal-delta ADC. [fn:2]Kistler 9722A2000. Sensitivity of $2.3\,mV/N$ and measurement range of $2\,kN$ [fn:1]PCB 356B18. Sensitivity is $1\,V/g$, measurement range is $\pm 5\,g$ and bandwidth is $0.5$ to $5\,\text{kHz}$. diff --git a/modal-analysis.pdf b/modal-analysis.pdf index e343503..dba8980 100644 Binary files a/modal-analysis.pdf and b/modal-analysis.pdf differ diff --git a/modal-analysis.tex b/modal-analysis.tex index aa059da..1de1c0a 100644 --- a/modal-analysis.tex +++ b/modal-analysis.tex @@ -1,4 +1,4 @@ -% Created 2024-10-24 Thu 09:36 +% Created 2024-10-24 Thu 17:41 % Intended LaTeX compiler: pdflatex \documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt} @@ -8,12 +8,14 @@ \newacronym{psd}{PSD}{Power Spectral Density} \newacronym{frf}{FRF}{Frequency Response Function} \newacronym{dof}{DoF}{Degree of freedom} +\newacronym{svd}{SVD}{Singular Value Decomposition} +\newacronym{mif}{MIF}{Mode Indicator Functions} \newglossaryentry{psdx}{name=\ensuremath{\Phi_{x}},description={{Power spectral density of signal $x$}}} \newglossaryentry{asdx}{name=\ensuremath{\Gamma_{x}},description={{Amplitude spectral density of signal $x$}}} \newglossaryentry{cpsx}{name=\ensuremath{\Phi_{x}},description={{Cumulative Power Spectrum of signal $x$}}} \newglossaryentry{casx}{name=\ensuremath{\Gamma_{x}},description={{Cumulative Amplitude Spectrum of signal $x$}}} \input{preamble_extra.tex} -\bibliography{nass-uniaxial-model.bib} +\bibliography{modal-analysis.bib} \author{Dehaeze Thomas} \date{\today} \title{Micro-Station - Modal Analysis} @@ -134,18 +136,17 @@ Pictures of the accelerometers fixed to the translation stage and to the micro-h As all key stages of the micro-station are foreseen to behave as solid bodies, only 6 \acrshort{dof} can be considered per solid body. However, it was chosen to use four 3-axis accelerometers (i.e. 12 measured \acrshort{dof}) for each considered solid body to have some redundancy and to be able to verify the solid body assumption (see Section \ref{ssec:modal_solid_body_assumption}). -\begin{minipage}[b]{0.68\linewidth} +\begin{minipage}[t]{0.60\linewidth} \begin{center} -\includegraphics[scale=1,width=0.9\linewidth]{figs/modal_location_accelerometers.png} -\captionof{figure}{\label{fig:modal_location_accelerometers}Position of the accelerometers using SolidWorks in mm} +\includegraphics[scale=1,width=0.99\linewidth]{figs/modal_location_accelerometers.png} +\captionof{figure}{\label{fig:modal_location_accelerometers}Position of the accelerometers} \end{center} \end{minipage} \hfill -\begin{minipage}[b]{0.31\linewidth} -\begin{center} -\captionof{table}{\label{tab:modal_position_accelerometers}Accelerometer positions} -\scriptsize -\begin{tabularx}{\linewidth}{Xcccc} +\begin{minipage}[b]{0.38\linewidth} +\begin{scriptsize} +\captionof{table}{\label{tab:modal_position_accelerometers}Positions in mm} +\begin{tabularx}{\linewidth}{Xccc} \toprule & \(x\) & \(y\) & \(z\)\\ \midrule @@ -174,11 +175,9 @@ Hexapod & 64 & 64 & -270\\ Hexapod & 64 & -64 & -270\\ \bottomrule \end{tabularx} -\end{center} +\end{scriptsize} \end{minipage} - - \begin{figure}[htbp] \begin{subfigure}{0.49\textwidth} \begin{center} @@ -298,79 +297,15 @@ However, for the multi-body model being developed, only 6 solid bodies are consi Therefore, only \(6 \times 6 = 36\) degrees of freedom are of interest. The objective in this section is therefore to process the Frequency Response Matrix to reduce the number of measured \acrshort{dof} from 69 to 36. -In order to be able to perform this reduction of measured \acrshort{dof}, the rigid body assumption first needs to be verified (Section \ref{ssec:modal_solid_body_first_check}). - The coordinate transformation from accelerometers \acrshort{dof} to the solid body 6 \acrshortpl{dof} (three translations and three rotations) is performed in Section \ref{ssec:modal_acc_to_solid_dof}. The \(69 \times 3 \times 801\) frequency response matrix is then reduced to a \(36 \times 3 \times 801\) frequency response matrix where the motion of each solid body is expressed with respect to its center of mass. -To further validate this reduction of \acrshort{dof} and the solid body assumption, the frequency response function at the accelerometer location are synthesized from the reduced frequency response matrix and are compared with the initial measurements in Section \ref{ssec:modal_solid_body_assumption}. -\section{First verification of the solid body assumption} -\label{ssec:modal_solid_body_first_check} - -In this section, it is shown that two accelerometers fixed to a \emph{rigid body} at positions \(\vec{p}_1\) and \(\vec{p}_2\) such that \(\vec{p}_2 = \vec{p}_1 + \alpha \vec{x}\) will measure the same acceleration in the \(\vec{x}\) direction. -Such situation is illustrated in Figure \ref{fig:modal_aligned_accelerometers}. - -\begin{figure}[htbp] -\centering -\includegraphics[scale=1]{figs/modal_aligned_accelerometers.png} -\caption{\label{fig:modal_aligned_accelerometers}Aligned measurement of the motion of a solid body} -\end{figure} - -The motion of the rigid body of figure \ref{fig:modal_aligned_accelerometers} is here described by its displacement \(\vec{\delta}p = [\delta p_x,\ \delta p_y,\ \delta p_z]\) and (small) rotations \([\delta \Omega_x,\ \delta \Omega_y,\ \delta \Omega_z]\) with respect to a reference frame \(\{O\}\). - -The motion of points \(p_1\) and \(p_2\) can be computed from \(\vec{\delta} p\) and \(\bm{\delta \Omega}\) \eqref{eq:modal_p1_p2_motion}, with \(\bm{\delta\Omega}\) defined in \eqref{eq:modal_rotation_matrix}. - -\begin{subequations}\label{eq:modal_p1_p2_motion} -\begin{align} - \vec{\delta} p_{1} &= \vec{\delta} p + \bm{\delta \Omega} \cdot \vec{p}_{1} \\ - \vec{\delta} p_{2} &= \vec{\delta} p + \bm{\delta \Omega} \cdot \vec{p}_{2} -\end{align} -\end{subequations} - -\begin{equation}\label{eq:modal_rotation_matrix} - \bm{\delta\Omega} = \begin{bmatrix} - 0 & -\delta\Omega_z & \delta\Omega_y \\ - \delta\Omega_z & 0 & -\delta\Omega_x \\ - -\delta\Omega_y & \delta\Omega_x & 0 -\end{bmatrix} -\end{equation} - -Considering only the \(x\) direction, equation \eqref{eq:modal_p1_p2_x_motion} is obtained. - -\begin{subequations}\label{eq:modal_p1_p2_x_motion} -\begin{align} - \delta p_{x1} &= \delta p_x + \delta \Omega_y p_{z1} - \delta \Omega_z p_{y1} \\ - \delta p_{x2} &= \delta p_x + \delta \Omega_y p_{z2} - \delta \Omega_z p_{y2} -\end{align} -\end{subequations} - -Because the two sensors are co-linearity in the \(x\) direction, \(p_{1y} = p_{2y}\) and \(p_{1z} = p_{2z}\), and \eqref{eq:modal_colinear_sensors_equal} is obtained. - -\begin{equation}\label{eq:modal_colinear_sensors_equal} - \boxed{\delta p_{x1} = \delta p_{x2}} -\end{equation} - -It is therefore concluded that two position sensors fixed to a rigid body will measure the same quantity in the direction ``in line'' the two sensors. - - -Such property can be used to verify that the considered stages are indeed behaving as rigid body in the frequency band of interest. -From Table \ref{tab:modal_position_accelerometers}, the pairs of accelerometers that aligned in the X and Y directions can be identified. -The response in the X direction of pairs of sensors aligned in the X direction are compared in Figure \ref{fig:modal_solid_body_comp_x_dir}. -A good match is observed up to 200Hz. -Similar result is obtained for the Y direction. -This therefore indicates that the considered bodies are behaving as solid bodes in the frequency range of interest. - -\begin{figure}[htbp] -\centering -\includegraphics[scale=1]{figs/modal_solid_body_comp_x_dir.png} -\caption{\label{fig:modal_solid_body_comp_x_dir}Comparaison of measured frequency response function for in the X directions for accelerometers aligned along X. Amplitude is in \(\frac{m/s^2}{N}\). Accelerometer number is shown in the legend.} -\end{figure} - +To validate this reduction of \acrshort{dof} and the solid body assumption, the frequency response function at the accelerometer location are recomputed from the reduced frequency response matrix and are compared with the initial measurements in Section \ref{ssec:modal_solid_body_assumption}. \section{From accelerometer DOFs to solid body DOFs} \label{ssec:modal_acc_to_solid_dof} Let's consider the schematic shown in Figure \ref{fig:modal_local_to_global_coordinates} where the motion of a solid body is measured at 4 distinct locations (in \(x\), \(y\) and \(z\) directions). -The goal here is to link these \(4 \times 3 = 12\) measurements to the 6 \acrshort{dofs} of the solid body expressed in the frame \(\{O\}\). +The goal here is to link these \(4 \times 3 = 12\) measurements to the 6 \acrshort{dof} of the solid body expressed in the frame \(\{O\}\). \begin{figure}[htbp] \centering @@ -396,8 +331,9 @@ Writing Eq. \eqref{eq:modal_p1_p2_motion} for the four displacement sensors in a \end{array}\right] \end{equation} -Supposing that the four sensors are properly located such that the system of equation \eqref{eq:modal_cart_to_acc} can be solved, the motion of the solid body expressed in a chosen frame \(\{O\}\) using the accelerometers attached to it can be determined using equation \eqref{eq:modal_determine_global_disp}. -Note that this inversion is equivalent to resolving a mean square problem. +Provided that the four sensors are properly located, the system of equation \eqref{eq:modal_cart_to_acc} can be solved by matrix inversion. +The motion of the solid body expressed in a chosen frame \(\{O\}\) can be determined using equation \eqref{eq:modal_determine_global_disp}. +Note that this matrix inversion is equivalent to resolving a mean square problem. Therefore, having more accelerometers permits to have a better approximation of the motion of the solid body. @@ -439,10 +375,10 @@ Hexapod & -4 & 6 & -319\\ \end{tabularx} \end{table} -Using \eqref{eq:modal_determine_global_disp}, the frequency response matrix \(\bm{H}_\text{CoM}\) \eqref{eq:modal_frf_matrix_com} expressing the response \(D_i\) (\(i\) from \(1\) to \(6\) for the \(6\) considered solid bodies) at the center of mass of each solid body can be computed from the initial \acrshort{frf} matrix \(\bm{H}\). +Using \eqref{eq:modal_determine_global_disp}, the frequency response matrix \(\mathbf{H}_\text{CoM}\) \eqref{eq:modal_frf_matrix_com} expressing the response at the center of mass of each solid body \(D_i\) (\(i\) from \(1\) to \(6\) for the \(6\) considered solid bodies) can be computed from the initial \acrshort{frf} matrix \(\mathbf{H}\). \begin{equation}\label{eq:modal_frf_matrix_com} - \bm{H}_\text{CoM}(\omega_i) = \begin{bmatrix} + \mathbf{H}_\text{CoM}(\omega_i) = \begin{bmatrix} \frac{D_{1,T_x}}{F_x}(\omega_i) & \frac{D_{1,T_x}}{F_y}(\omega_i) & \frac{D_{1,T_x}}{F_z}(\omega_i) \\ \frac{D_{1,T_y}}{F_x}(\omega_i) & \frac{D_{1,T_y}}{F_y}(\omega_i) & \frac{D_{1,T_y}}{F_z}(\omega_i) \\ \frac{D_{1,T_z}}{F_x}(\omega_i) & \frac{D_{1,T_z}}{F_y}(\omega_i) & \frac{D_{1,T_z}}{F_z}(\omega_i) \\ @@ -458,14 +394,14 @@ Using \eqref{eq:modal_determine_global_disp}, the frequency response matrix \(\b \section{Verification of solid body assumption} \label{ssec:modal_solid_body_assumption} -From the response of one solid body along its 6 \acrshort{dofs} (from \(\bm{H}_{\text{CoM}}\)), and using \eqref{eq:modal_cart_to_acc}, it is possible to compute the response of the same solid body at any location, in particular at the location of the accelerometers fixed to this solid body. +From the response of one solid body along its 6 \acrshortpl{dof} (i.e. from \(\mathbf{H}_{\text{CoM}}\)), and using equation \eqref{eq:modal_cart_to_acc}, it is possible to compute the response of the same solid body at any considered position. +In particular, the response at the location of the four accelerometers can be computed. +Comparing the computed response of a particular accelerometer from \(\mathbf{H}_{\text{CoM}}\) with the original measurements \(\mathbf{H}\) is use to check if solid body assumption is correct in the frequency band of interest. -Comparing the computed response of a particular accelerometer from \(\bm{H}_{\text{CoM}}\) with the original measurements \(\bm{H}\) is useful to check if the change of coordinate \eqref{eq:modal_determine_global_disp} works as expected, and if the solid body assumption is correct in the frequency band of interest. - -The comparison is made for the 4 accelerometers fixed to the micro-hexapod in Figure \ref{fig:modal_comp_acc_solid_body_frf}. +The comparison is made for the 4 accelerometers fixed to the micro-hexapod (Figure \ref{fig:modal_comp_acc_solid_body_frf}). The original frequency response functions and the ones computed from the CoM responses are well matching in the frequency range of interested. Similar results are obtained for the other solid bodies, indicating that the solid body assumption is valid, and that a multi-body model can be used to represent the dynamics of the micro-station. -This also validates the reduction of the number of degrees of freedom from 69 (23 accelerometers with each 3acrshort:dof) to 36 (6 solid bodies with 6 \acrshort{dof}). +This also validates the reduction of the number of degrees of freedom from 69 (23 accelerometers with each 3 \acrshort{dof}) to 36 (6 solid bodies with 6 \acrshort{dof}). \begin{figure}[htbp] \centering @@ -475,129 +411,49 @@ This also validates the reduction of the number of degrees of freedom from 69 (2 \chapter{Modal Analysis} \label{sec:modal_analysis} -The goal here is to extract the modal parameters describing the modes of station being studied, namely: -\begin{itemize} -\item the eigen frequencies and the modal damping (eigen values) -\item the mode shapes (eigen vectors) -\end{itemize} +The goal here is to extract the modal parameters describing the modes of station being studied, namely the natural frequencies and the modal damping (i.e. the eigenvalues) and the mode shapes (.i.e. the eigenvectors). This is done from the \acrshort{frf} matrix previously extracted from the measurements. +In order to perform the modal parameter extraction, the order of the modal model needs to be estimated (i.e. the number of modes in the frequency band of interest). +This is done using the \acrfull{mif} in section \ref{ssec:modal_number_of_modes}. -In order to do the modal parameter extraction, we first have to estimate the order of the modal model we want to obtain. -This corresponds to how many modes are present in the frequency band of interest. -In section \ref{ssec:modal_number_of_modes}, we will use the Singular Value Decomposition and the Modal Indication Function to estimate the number of modes. +In section \ref{ssec:modal_parameter_extraction}, the modal parameter extraction is performed. +Graphical display of the mode shapes can be computed from the modal model, which is quite quite useful to have a physical interpretation of the modes. - -The modal parameter extraction methods generally consists of \textbf{curve-fitting a theoretical expression for an individual \acrshort{frf} to the actual measured data}. -However, there are multiple level of complexity: -\begin{itemize} -\item works on a part of a single \acrshort{frf} curve -\item works on a complete curve encompassing several resonances -\item works on a set of many \acrshort{frf} plots all obtained from the same structure -\end{itemize} -The third method is the most complex but gives better results. This is the one we will use in section \ref{ssec:modal_parameter_extraction}. - -From the modal model, it is possible to obtain a graphic display of the mode shapes (section \ref{ssec:modal_mode_shapes}). - - -In order to validate the quality of the modal model, we will synthesize the \acrshort{frf} matrix from the modal model and compare it with the \acrshort{frf} measured (section \ref{ssec:modal_model_validity}). - - -The modes of the structure are expected to be complex, however real modes are easier to work with when it comes to obtain a spatial model from the modal parameters. +To validate the quality of the modal model, the full \acrshort{frf} matrix is computed from the modal model and compared with the initial measured \acrshort{frf} (section \ref{ssec:modal_model_validity}). \section{Determine the number of modes} \label{ssec:modal_number_of_modes} -\paragraph{Singular Value Decomposition - Modal Indication Function} -The Mode Indicator Functions are usually used on \(n\times p\) \acrshort{frf} matrix where \(n\) is a relatively large number of measurement DOFs and \(p\) is the number of excitation DOFs, typically 3 or 4. +The \acrshort{mif} is here applied to the \(n\times p\) \acrshort{frf} matrix where \(n\) is a relatively large number of measurement DOFs (here \(n=69\)) and \(p\) is the number of excitation DOFs (here \(p=3\)). -In these methods, the frequency dependent \acrshort{frf} matrix is subjected to a singular value decomposition analysis which thus yields a small number (3 or 4) of singular values, these also being frequency dependent. - -These methods are used to \textbf{determine the number of modes} present in a given frequency range, to \textbf{identify repeated natural frequencies} and to pre-process the \acrshort{frf} data prior to modal analysis. - -From the documentation of the modal software: -\begin{quote} -The MIF consist of the singular values of the Frequency response function matrix. The number of MIFs equals the number of excitations. -By the powerful singular value decomposition, the real signal space is separated from the noise space. Therefore, the MIFs exhibit the modes effectively. -A peak in the MIFs plot usually indicate the existence of a structural mode, and two peaks at the same frequency point means the existence of two repeated modes. -Moreover, the magnitude of the MIFs implies the strength of the a mode. -\end{quote} - -\begin{important} -The \textbf{Complex Mode Indicator Function} is defined simply by the SVD of the \acrshort{frf} (sub) matrix: -\begin{align*} - [H(\omega)]_{n\times p} &= [U(\omega)]_{n\times n} [\Sigma(\omega)]_{n\times p} [V(\omega)]_{p\times p}^H\\ - [CMIF(\omega)]_{p\times p} &= [\Sigma(\omega)]_{p\times n}^T [\Sigma(\omega)]_{n\times p} -\end{align*} -\end{important} - -We compute the Complex Mode Indicator Function. -The result is shown on Figure \ref{fig:modal_indication_function}. - -\begin{figure}[htbp] -\centering -\includegraphics[scale=1]{figs/modal_indication_function.png} -\caption{\label{fig:modal_indication_function}Modal Indication Function} -\end{figure} - -\paragraph{Composite Response Function} -An alternative is the Composite Response Function \(HH(\omega)\) defined as the sum of all the measured \acrshort{frf}: -\begin{equation} - HH(\omega) = \sum_j\sum_kH_{jk}(\omega) +The complex modal indication function is defined in equation \eqref{eq:modal_cmif} where \(\Sigma\) is obtained from a \acrshort{svd} of the \acrshort{frf} matrix \eqref{eq:modal_svd}. +\begin{equation} \label{eq:modal_cmif} + [CMIF(\omega)]_{p\times p} = [\Sigma(\omega)]_{p\times n}^T [\Sigma(\omega)]_{n\times p} \end{equation} -Instead, we choose here to use the sum of the norms of the measured frf: -\begin{equation} - HH(\omega) = \sum_j\sum_k \left|H_{jk}(\omega) \right| +\begin{equation} \label{eq:modal_svd} +[H(\omega)]_{n\times p} = [U(\omega)]_{n\times n} [\Sigma(\omega)]_{n\times p} [V(\omega)]_{p\times p}^H \end{equation} -The result is shown on figure \ref{fig:modal_composite_reponse_function}. +The \acrshort{mif} therefore yields to \(p\) values that are also frequency dependent. +A peak in the \acrshort{mif} plot indicates the presence of a mode. +Repeated modes can also be detected by multiple singular values are having peaks at the same frequency. +The obtained \acrshort{mif} is shown on Figure \ref{fig:modal_indication_function}. +A total of 16 modes are found between 0 and \(200\,\text{Hz}\). +The obtained natural frequencies and associated modal damping are summarized in Table \ref{tab:modal_obtained_modes_freqs_damps}. -\begin{figure}[htbp] -\centering -\includegraphics[scale=1]{figs/modal_composite_reponse_function.png} -\caption{\label{fig:modal_composite_reponse_function}Composite Response Function} -\end{figure} - -\section{Modal parameter extraction} -\label{ssec:modal_parameter_extraction} -\paragraph{OROS - Modal software} -Modal identification are done within the Modal software of OROS. - -Several modal parameter extraction methods are available. -We choose to use the ``broad band'' method as it permits to identify the modal parameters using all the \acrshort{frf} curves at the same time. -It takes into account the fact the the properties of all the individual curves are related by being from the same structure: all \acrshort{frf} plots on a given structure should indicate the same values for the natural frequencies and damping factor of each mode. - -Such method also have the advantage of producing a \textbf{unique and consistent model} as direct output. - -In order to apply this method, we select the frequency range of interest and we give an estimate of how many modes are present. - -Then, it shows a stabilization charts, such as the one shown on figure \ref{fig:modal_stabilization_chart}, where we have to manually select which modes to take into account in the modal model. - -\begin{figure}[htbp] -\centering -\includegraphics[scale=1,width=\linewidth]{img/modal_software/stabilisation_chart.jpg} -\caption{\label{fig:modal_stabilization_chart}Stabilization Chart} -\end{figure} - -We can then run the modal analysis, and the software will identify the modal damping and mode shapes at the selected frequency modes. - -\paragraph{Importation of the modal parameters on Matlab} -The obtained modal parameters are: -\begin{itemize} -\item Resonance frequencies in Hertz -\item Modal damping ratio in percentage -\item (complex) Modes shapes for each measured \acrshort{dof} -\item Modal A and modal B which are parameters important for further normalization -\end{itemize} - -The obtained mode frequencies and damping are shown in Table \ref{tab:modal_obtained_modes_freqs_damps}. - -\begin{table}[htbp] -\caption{\label{tab:modal_obtained_modes_freqs_damps}Obtained eigen frequencies and modal damping} -\centering -\scriptsize -\begin{tabularx}{0.35\linewidth}{ccc} +\begin{minipage}[t]{0.70\linewidth} +\begin{center} +\includegraphics[scale=1,width=0.95\linewidth]{figs/modal_indication_function.png} +\captionof{figure}{\label{fig:modal_indication_function}Modal Indication Function} +\end{center} +\end{minipage} +\hfill +\begin{minipage}[b]{0.28\linewidth} +\begin{scriptsize} +\captionof{table}{\label{tab:modal_obtained_modes_freqs_damps}Natural frequencies and modal damping} +\begin{tabularx}{\linewidth}{ccc} \toprule -Mode & Frequency [Hz] & Damping [\%]\\ +Mode & Freq. [Hz] & Damp. [\%]\\ \midrule 1 & 11.9 & 12.2\\ 2 & 18.6 & 11.7\\ @@ -617,197 +473,134 @@ Mode & Frequency [Hz] & Damping [\%]\\ 16 & 165.4 & 1.4\\ \bottomrule \end{tabularx} -\end{table} +\end{scriptsize} +\end{minipage} -\paragraph{Theory} -It seems that the modal analysis software makes the \textbf{assumption} of viscous damping for the model with which it tries to fit the \acrshort{frf} measurements. +\section{Modal parameter extraction} +\label{ssec:modal_parameter_extraction} -If we note \(N\) the number of modes identified, then there are \(2N\) eigenvalues and eigenvectors given by the software: -\begin{align} - s_r &= \omega_r (-\xi_r + i \sqrt{1 - \xi_r^2}),\quad s_r^* \\ - \{\psi_r\} &= \begin{Bmatrix} \psi_{1_x} & \psi_{2_x} & \dots & \psi_{23_x} & \psi_{1_y} & \dots & \psi_{1_z} & \dots & \psi_{23_z} \end{Bmatrix}^T, \quad \{\psi_r\}^* -\end{align} -for \(r = 1, \dots, N\) where \(\omega_r\) is the natural frequency and \(\xi_r\) is the critical damping ratio for that mode. +The modal identification generally consists of curve-fitting a theoretical expression for an individual \acrshort{frf} to the actual measured data. +However, there are multiple level of complexity, from fitting of a single resonance, a complete curve encompassing several resonances and working on a set of many \acrshort{frf} plots all obtained from the same structure. -\paragraph{Modal Matrices} -We would like to arrange the obtained modal parameters into two modal matrices: -\[ \Lambda = \begin{bmatrix} - s_1 & & 0 \\ - & \ddots & \\ - 0 & & s_N -\end{bmatrix}_{N \times N}; \quad \Psi = \begin{bmatrix} - & & \\ - \{\psi_1\} & \dots & \{\psi_N\} \\ - & & -\end{bmatrix}_{M \times N} \] -\[ \{\psi_i\} = \begin{Bmatrix} \psi_{i, 1_x} & \psi_{i, 1_y} & \psi_{i, 1_z} & \psi_{i, 2_x} & \dots & \psi_{i, 23_z} \end{Bmatrix}^T \] +Here, the last method is used as it gives a unique and consistent model as direct output. +It takes into account the fact the the properties of all the individual curves are related by being from the same structure: all FRF plots on a given structure should indicate the same values for the natural frequencies and damping factor of each mode. -\(M\) is the number of \acrshort{dof}: here it is \(23 \times 3 = 69\). -\(N\) is the number of mode +From the obtained modal parameters, the mode shapes are computed and can be displayed in the form of animations. +Three mode shapes are shown in Figure \ref{fig:modal_mode_animations}. -Each eigen vector is normalized: \(\| \{\psi_i\} \|_2 = 1\) - - -However, the eigen values and eigen vectors appears as complex conjugates: -\[ s_r, s_r^*, \{\psi\}_r, \{\psi\}_r^*, \quad r = 1, N \] - -In the end, they are \(2N\) eigen values. -We then build two extended eigen matrices as follow: -\[ \mathcal{S} = \begin{bmatrix} - s_1 & & & & & \\ - & \ddots & & & 0 & \\ - & & s_N & & & \\ - & & & s_1^* & & \\ - & 0 & & & \ddots & \\ - & & & & & s_N^* -\end{bmatrix}_{2N \times 2N}; \quad \Phi = \begin{bmatrix} - & & & & &\\ - \{\psi_1\} & \dots & \{\psi_N\} & \{\psi_1^*\} & \dots & \{\psi_N^*\} \\ - & & & & & -\end{bmatrix}_{M \times 2N} \] - -We also build the Modal A and Modal B matrices: -\begin{equation} - A = \begin{bmatrix} - a_1 & & 0 \\ - & \ddots & \\ - 0 & & a_N - \end{bmatrix}_{N \times N}; \quad B = \begin{bmatrix} - b_1 & & 0 \\ - & \ddots & \\ - 0 & & b_N - \end{bmatrix}_{N \times N} -\end{equation} -With \(a_i\) is the ``Modal A'' parameter linked to mode i. - -``Modal A'' and ``modal B'' are linked through the following formula: -\[ B = - A \Lambda \] - -\section{Obtained Mode Shapes animations} -\label{ssec:modal_mode_shapes} -From the modal parameters, it is possible to show the modal shapes with an animation. - -Examples are shown in Figures \ref{fig:modal_mode_animations}. +These animations are quite useful to easily get a better understanding of the system. +For instance, the mode shape of the first mode at 11Hz (figure \ref{fig:modal_mode1_animation}) indicates that there is an issue with the lower granite. +It turns out that four \emph{Airloc Levelers} are used to level the lower granite (figure \ref{fig:modal_airloc}). +These are difficult to tune so that the granite is well supported by four of them and not ``wobbly'' on just two of them. \begin{figure} \begin{subfigure}{\textwidth} \begin{center} \includegraphics[scale=1,width=\linewidth]{figs/modal_mode1_animation.jpg} \end{center} -\subcaption{\label{fig:modal_mode1_animation}Mode 1} +\subcaption{\label{fig:modal_mode1_animation}$1^{st}$ mode at 11.9 Hz: tilt suspension mode of the granite} \end{subfigure} \begin{subfigure}{\textwidth} \begin{center} \includegraphics[scale=1,width=\linewidth]{figs/modal_mode6_animation.jpg} \end{center} -\subcaption{\label{fig:modal_mode6_animation}Mode 6} +\subcaption{\label{fig:modal_mode6_animation}$6^{th}$ mode at 69.8 Hz: vertical resonance of the spindle} \end{subfigure} \begin{subfigure}{\textwidth} \begin{center} \includegraphics[scale=1,width=\linewidth]{figs/modal_mode13_animation.jpg} \end{center} -\subcaption{\label{fig:modal_mode13_animation}Mode 13} +\subcaption{\label{fig:modal_mode13_animation}$13^{th}$ mode at 124.2 Hz: lateral micro-hexapod resonance} \end{subfigure} -\caption{\label{fig:modal_mode_animations}Instrumentation used for the modal analysis} +\caption{\label{fig:modal_mode_animations}Three obtained mode shape animations} \end{figure} -We can learn quite a lot from these mode shape animations. - -For instance, the mode shape of the first mode at 11Hz (figure \ref{fig:modal_mode1_animation}) seems to indicate that this corresponds to a suspension mode. - -This could be due to the 4 Airloc Levelers that are used for the granite (figure \ref{fig:modal_airloc}). - \begin{figure}[htbp] \centering \includegraphics[scale=1,width=0.6\linewidth]{figs/modal_airlock_picture.jpg} \caption{\label{fig:modal_airloc}AirLoc used for the granite (2120-KSKC)} \end{figure} -They are probably \textbf{not well leveled}, so the granite is supported only by two Airloc. +The modal parameter extraction is made using a proprietary software\footnote{NVGate software from OROS company}. +For each mode \(r\) (from \(1\) to the number of considered modes \(m=16\)), it outputs the frequency \(\omega_r\), the damping ratio \(\xi_r\), the eigenvectors \(\{\phi_{r}\}\) (vector of complex numbers with a size equal to the number of measured \acrshort{dof} \(n=69\), see equation \eqref{eq:modal_eigenvector}) and a scaling factor \(a_r\). + +\begin{equation}\label{eq:modal_eigenvector} +\{\phi_i\} = \begin{Bmatrix} \phi_{i, 1_x} & \phi_{i, 1_y} & \phi_{i, 1_z} & \phi_{i, 2_x} & \dots & \phi_{i, 23_z} \end{Bmatrix}^T +\end{equation} + +The eigenvalues \(s_r\) and \(s_r^*\) can then be computed from \eqref{eq:modal_eigenvalues}. + +\begin{equation}\label{eq:modal_eigenvalues} + s_r = \omega_r (-\xi_r + i \sqrt{1 - \xi_r^2}), \quad s_r^* = \omega_r (-\xi_r - i \sqrt{1 - \xi_r^2}) +\end{equation} \section{Verify the validity of the Modal Model} \label{ssec:modal_model_validity} -There are two main ways to verify the validity of the modal model -\begin{itemize} -\item Synthesize \acrshort{frf} measurements that has been used to generate the modal model and compare -\item Synthesize \acrshort{frf} that has not yet been measured. Then measure that \acrshort{frf} and compare -\end{itemize} +In order to check the validity of the modal model, the complete \(n \times n\) \acrshort{frf} matrix \(\mathbf{H}_{\text{syn}}\) is first synthesized from the modal parameters. +Then, the elements of this \acrshort{frf} matrix \(\mathbf{H}_{\text{syn}}\) that were already measured can be compared with the measured elements \(\mathbf{H}\). +New measurements may be performed to compare with elements of the synthesized \acrshort{frf} matrix that were not initialized measured to build the modal model. -From the modal model, we want to synthesize the Frequency Response Functions that has been used to build the modal model. - -Let's recall that: -\begin{itemize} -\item \(M\) is the number of measured DOFs (\(3 \times n_\text{acc}\)) -\item \(N\) is the number of modes identified -\end{itemize} - -We then have that the \acrshort{frf} matrix \([H_{\text{syn}}]\) can be synthesize using the following formula: -\begin{important} -\begin{equation} - [H_{\text{syn}}(\omega)]_{M\times M} = [\Phi]_{M\times2N} \left[\frac{Q_r}{j\omega - s_r}\right]_{2N\times2N} [\Phi]_{2N\times M}^T +In order to synthesize the full \acrshort{frf} matrix, the eigenvectors \(\phi_r\) are first reorganized in a matrix from as shown in equation \eqref{eq:modal_eigvector_matrix}. +\begin{equation}\label{eq:modal_eigvector_matrix} +\Phi = \begin{bmatrix} + & & & & &\\ + \phi_1 & \dots & \phi_N & \phi_1^* & \dots & \phi_N^* \\ + & & & & & +\end{bmatrix}_{n \times 2m} \end{equation} -with \(Q_r = 1/M_{A_r}\) -\end{important} -An alternative formulation is: -\[ H_{pq}(s_i) = \sum_{r=1}^N \frac{A_{pqr}}{s_i - \lambda_r} + \frac{A_{pqr}^*}{s_i - \lambda_r^*} \] -with: -\begin{itemize} -\item \(A_{pqr} = \frac{\psi_{pr}\psi_{qr}}{M_{A_r}}\), \(M_{A_r}\) is called ``Modal A'' -\item \(\psi_{pr}\): scaled modal coefficient for output DOF \(p\), mode \(r\) -\item \(\lambda_r\): complex modal frequency -\end{itemize} +The full \acrshort{frf} matrix \(\mathbf{H}_{\text{syn}}\) can be synthesize using \eqref{eq:modal_synthesized_frf}. -From the modal software documentation: -\begin{quote} -\textbf{Modal A} -Scaling constant for a complex mode. It has the same properties as modal mass for normal modes (undamped or proportionally damped cases). Assuming -\begin{itemize} -\item \(\psi_{pr}\) = Modal coefficient for measured degree of freedom p and mode r -\item \(\psi_{qr}\) = Modal coefficient for measured degree of freedom q and mode r -\item \(A_{pqr}\) = Residue for measured degree of freedom p, measured degree of q and mode r -\item \(M_{Ar}\) = Modal A of mode r -\end{itemize} +\begin{equation}\label{eq:modal_synthesized_frf} + [\mathbf{H}_{\text{syn}}(\omega)]_{n\times n} = [\Phi]_{n\times2m} [\mathbf{H}_{\text{mod}}(\omega)]_{2m\times2m} [\Phi]_{2m\times n}^T +\end{equation} -Then -\[ A_{pqr} = \frac{\psi_{pr}\psi_{qr}}{M_{Ar}} \] - - -\textbf{Modal B} -Scaling constant for a complex mode. It has the same properties as modal stiffness for normal modes (undamped or proportionally damped cases). Assuming -\begin{itemize} -\item \(M_{Ar}\) = Modal A of mode r -\item \(\lambda_r\) = System pole of mode r -\end{itemize} - -Then -\[ M_{Br} = - \lambda_r M_{Ar} \] -\end{quote} +With \(\mathbf{H}_{\text{mod}}(\omega)\) a diagonal matrix representing the response of the different modes \eqref{eq:modal_modal_resp}. +\begin{equation}\label{eq:modal_modal_resp} +\mathbf{H}_{\text{mod}}(\omega) = \text{diag}\left(\frac{1}{a_1 (j\omega - s_1)},\ \dots,\ \frac{1}{a_m (j\omega - s_m)}, \frac{1}{a_1^* (j\omega - s_1^*)},\ \dots,\ \frac{1}{a_m^* (j\omega - s_m^*)} \right)_{2m\times 2m} +\end{equation} The comparison between the original measured frequency response function and the synthesized one from the modal model is done in Figure \ref{fig:modal_comp_acc_frf_modal}. +The match is rather good considering the complex dynamics and the different directions considered. \begin{figure}[htbp] -\centering -\includegraphics[scale=1]{figs/modal_comp_acc_frf_modal.png} -\caption{\label{fig:modal_comp_acc_frf_modal}description} -\end{figure} - -Frequency response functions that has not been measured can be synthesized as shown in Figure \ref{fig:modal_synthesized_frf}. - -\begin{figure}[htbp] -\centering -\includegraphics[scale=1]{figs/modal_synthesized_frf.png} -\caption{\label{fig:modal_synthesized_frf}description} +\begin{subfigure}{0.33\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.99\linewidth]{figs/modal_comp_acc_frf_modal_1.png} +\end{center} +\subcaption{\label{fig:modal_comp_acc_frf_modal_1}From $F_{11,z}$ to $a_{11,z}$} +\end{subfigure} +\begin{subfigure}{0.33\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.99\linewidth]{figs/modal_comp_acc_frf_modal_2.png} +\end{center} +\subcaption{\label{fig:modal_comp_acc_frf_modal_2}From $F_{11,z}$ to $a_{15,z}$} +\end{subfigure} +\begin{subfigure}{0.33\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.99\linewidth]{figs/modal_comp_acc_frf_modal_3.png} +\end{center} +\subcaption{\label{fig:modal_comp_acc_frf_modal_3}From $F_{11,y}$ to $a_{2,x}$} +\end{subfigure} +\caption{\label{fig:modal_comp_acc_frf_modal}Comparison of the measured FRF with the synthesized FRF from the modal model.} \end{figure} \chapter{Conclusion} \label{sec:modal_conclusion} -Validation of solid body model. +In this study, a modal analysis of the micro-station was performed. +Thanks to adequate choice of instrumentation and proper set of measurements, high quality frequency response functions could be obtained. +As could be expected from a heavy stacked stages architecture, the obtained frequency response functions indicate that the dynamics of the micro-station is complex. +It shows lots of coupling between stages and different directions, as well as many modes with various damping properties. -Further step: go from modal model to parameters of the solid body model. +By measuring 12 degrees of freedom on each ``stage'', it could be verified that in the frequency range of interest, each stage is behaving as a rigid body. +This confirms that a solid-body model can be used to properly model the micro-station. +Even though lots of efforts were put in the proper modal analysis of the micro-station, it was stiff very difficult to obtain an accurate modal model. +Yet, the measurements will be quite useful when tuning the parameters of the multi-body model. \printbibliography[heading=bibintoc,title={Bibliography}] + +\printglossaries \end{document}