From 40540d40eeec692883aa12c212c2536818125d59 Mon Sep 17 00:00:00 2001 From: Thomas Dehaeze Date: Tue, 29 Oct 2024 19:18:00 +0100 Subject: [PATCH] Grammar check --- test-bench-nano-hexapod.org | 380 ++++++++++++++++++------------------ test-bench-nano-hexapod.pdf | Bin 17309021 -> 17309096 bytes test-bench-nano-hexapod.tex | 261 ++++++++++++------------- 3 files changed, 320 insertions(+), 321 deletions(-) diff --git a/test-bench-nano-hexapod.org b/test-bench-nano-hexapod.org index 5a5dd7a..bcbcbca 100644 --- a/test-bench-nano-hexapod.org +++ b/test-bench-nano-hexapod.org @@ -226,19 +226,19 @@ CLOSED: [2024-10-26 Sat 15:26] * Introduction :ignore: -In the previous section, all the struts were mounted and individually characterized. -Now the nano-hexapod is assembled using a mounting procedure described in Section ref:sec:test_nhexa_mounting. +Prior to the nano-hexapod assembly, all the struts were mounted and individually characterized. +In Section ref:sec:test_nhexa_mounting, the assembly procedure of the nano-hexapod is presented. -In order to identify the dynamics of the nano-hexapod, a special suspended table is developed which consists of a stiff "optical breadboard" suspended on top of four soft springs. -The Nano-Hexapod is then fixed on top of the suspended table, such that its dynamics is not affected by complex dynamics except from the suspension modes of the table that can be well characterized and modelled (Section ref:sec:test_nhexa_table). +To identify the dynamics of the nano-hexapod, a special suspended table was developed, which consisted of a stiff "optical breadboard" suspended on top of four soft springs. +The Nano-Hexapod was then fixed on top of the suspended table such that its dynamics is not affected by complex dynamics except from the suspension modes of the table that can be well characterized and modeled (Section ref:sec:test_nhexa_table). The obtained nano-hexapod dynamics is analyzed in Section ref:sec:test_nhexa_dynamics, and compared with the Simscape model in Section ref:sec:test_nhexa_model. * Nano-Hexapod Assembly Procedure <> -The assembly of the nano-hexapod is quite critical to both avoid additional stress in the flexible joints (that would result in a loss of stroke) and for the precise determination of the Jacobian matrix. -The goal is to fix the six struts to the two nano-hexapod plates (shown in Figure ref:fig:test_nhexa_nano_hexapod_plates) while the two plates are parallel, aligned vertically, and such that all the flexible joints do not experience any stress. -Do to so, a precisely machined mounting tool (Figure ref:fig:test_nhexa_center_part_hexapod_mounting) is used to position the two nano-hexapod plates during the assembly procedure. +The assembly of the nano-hexapod is critical for both avoiding additional stress in the flexible joints (that would result in a loss of stroke) and for the precisely determining the Jacobian matrix. +The goal was to fix the six struts to the two nano-hexapod plates (shown in Figure ref:fig:test_nhexa_nano_hexapod_plates) while the two plates were parallel and aligned vertically so that all the flexible joints did not experience any stress. +To do so, a precisely machined mounting tool (Figure ref:fig:test_nhexa_center_part_hexapod_mounting) is used to position the two nano-hexapod plates during the assembly procedure. #+name: fig:test_nhexa_received_parts #+caption: Received Nano-Hexapod plates (\subref{fig:test_nhexa_nano_hexapod_plates}) and mounting tool used to position the two plates during assembly (\subref{fig:test_nhexa_center_part_hexapod_mounting}) @@ -260,10 +260,10 @@ Do to so, a precisely machined mounting tool (Figure ref:fig:test_nhexa_center_p #+end_subfigure #+end_figure -The mechanical tolerances of the received plates are checked using a FARO arm[fn:1] (Figure ref:fig:test_nhexa_plates_tolerances) and are found to comply with the requirements[fn:2]. +The mechanical tolerances of the received plates were checked using a FARO arm[fn:1] (Figure ref:fig:test_nhexa_plates_tolerances) and were found to comply with the requirements[fn:2]. The same is done for the mounting tool[fn:3] -The two plates are then fixed to the mounting tool as shown in Figure ref:fig:test_nhexa_mounting_tool_hexapod_top_view. -The main goal of this "mounting tool" is to position the flexible joint interfaces (the "V" shapes) of both plates such that a cylinder can rest on the 4 flat interfaces at the same time. +The two plates were then fixed to the mounting tool, as shown in Figure ref:fig:test_nhexa_mounting_tool_hexapod_top_view. +The main goal of this "mounting tool" is to position the flexible joint interfaces (the "V" shapes) of both plates so that a cylinder can rest on the 4 flat interfaces at the same time. #+name: fig:test_nhexa_dimensional_check #+caption: A Faro arm is used to dimensionally check the received parts (\subref{fig:test_nhexa_plates_tolerances}) and after mounting the two plates with the mounting part (\subref{fig:test_nhexa_mounting_tool_hexapod_top_view}) @@ -286,12 +286,12 @@ The main goal of this "mounting tool" is to position the flexible joint interfac #+end_figure The quality of the positioning can be estimated by measuring the "straightness" of the top and bottom "V" interfaces. -This corresponds to the diameter of the smallest cylinder that contains all points of the measured axis. -This is again done using the FARO arm, and the results for all the six struts are summarized in Table ref:tab:measured_straightness. -The straightness is found to be better than $15\,\mu m$ for all the struts[fn:4], which is sufficiently good to not induce significant stress of the flexible joint during the assembly. +This corresponds to the diameter of the smallest cylinder which contains all points along the measured axis. +This was again done using the FARO arm, and the results for all six struts are summarized in Table ref:tab:measured_straightness. +The straightness was found to be better than $15\,\mu m$ for all struts[fn:4], which is sufficiently good to not induce significant stress of the flexible joint during assembly. #+name: tab:measured_straightness -#+caption: Measured straightness between the two "V" for the six struts. These measurements are performed two times for each strut. +#+caption: Measured straightness between the two "V" shapes for the six struts. These measurements were performed twice for each strut. #+attr_latex: :environment tabularx :width 0.35\linewidth :align Xcc #+attr_latex: :center t :booktabs t | *Strut* | *Meas 1* | *Meas 2* | @@ -303,22 +303,10 @@ The straightness is found to be better than $15\,\mu m$ for all the struts[fn:4] | 5 | $7\, \mu m$ | $5\, \mu m$ | | 6 | $6\, \mu m$ | $7\, \mu m$ | -The encoder rulers and heads are then fixed to the top and bottom plates respectively (Figure ref:fig:test_nhexa_mount_encoder). -The encoder heads are then aligned to maximize the received contrast. - -# 1. Fix the bottom plate with the cylindrical tool -# 2. Put the top plate on the granite -# 3. Put the cylindrical tool and bottom plate on top of the top plate (Figure ref:fig:test_nhexa_mounting_tool_hexapod_bot_view). -# This position the bottom plate with respect to the top plate in X, Y, Z, Rx, Ry -# 4. Put the pin to position/fix the Rz. -# Now the two plates should be position and clamped together -# 5. Verify the coaxiality between the flexible joint interfaces -# 6. Fix the 6 encoder heads and rulers -# 7. Fix the 6 struts -# 8. Remove the pin and the mounting spacer +The encoder rulers and heads were then fixed to the top and bottom plates, respectively (Figure ref:fig:test_nhexa_mount_encoder), and the encoder heads were aligned to maximize the received contrast. #+name: fig:test_nhexa_mount_encoder -#+caption: Mounting of the encoders to the Nano-hexapod. The rulers are fixed to the top plate (\subref{fig:test_nhexa_mount_encoder_rulers}) while the encoders heads are fixed to the botom plate (\subref{fig:test_nhexa_mount_encoder_heads}) +#+caption: Mounting of the encoders to the Nano-hexapod. The rulers are fixed to the top plate (\subref{fig:test_nhexa_mount_encoder_rulers}) while encoders heads are fixed to the bottom plate (\subref{fig:test_nhexa_mount_encoder_heads}) #+attr_latex: :options [htbp] #+begin_figure #+attr_latex: :caption \subcaption{\label{fig:test_nhexa_mount_encoder_rulers}Encoder rulers} @@ -337,11 +325,11 @@ The encoder heads are then aligned to maximize the received contrast. #+end_subfigure #+end_figure -The six struts are then fixed to the bottom and top plates one by one. -First the top flexible joint is fixed such that its flat reference surface is in contact with the top plate. -This is to precisely known the position of the flexible joint with respect to the top plate. -Then the bottom flexible joint is fixed. -After all six struts are mounted, the mounting tool (Figure ref:fig:test_nhexa_center_part_hexapod_mounting) can be disassembled, and the fully mounted nano-hexapod as shown in Figure ref:fig:test_nhexa_nano_hexapod_mounted is obtained. +The six struts were then fixed to the bottom and top plates one by one. +First, the top flexible joint is fixed so that its flat reference surface is in contact with the top plate. +This step precisely determines the position of the flexible joint with respect to the top plate. +The bottom flexible joint is then fixed. +After mounting all six struts, the mounting tool (Figure ref:fig:test_nhexa_center_part_hexapod_mounting) can be disassembled, and the nano-hexapod as shown in Figure ref:fig:test_nhexa_nano_hexapod_mounted is fully assembled. #+name: fig:test_nhexa_nano_hexapod_mounted #+caption: Mounted Nano-Hexapod @@ -358,20 +346,20 @@ After all six struts are mounted, the mounting tool (Figure ref:fig:test_nhexa_c When a dynamical system is fixed to a support (such as a granite or an optical table), its dynamics will couple to the support dynamics. This may results in additional modes appearing in the system dynamics, which are difficult to predict and model. -Two prevent this issue, strategy adopted here is to mount the nano-hexapod on top a suspended table with low frequency suspension modes. +To prevent this issue, the strategy adopted here is to mount the nano-hexapod on top a suspended table with low frequency suspension modes. -In such a case, the modes of the suspended table are chosen to be at much lower frequency than those of the nano-hexapod such that they are well decoupled. -An other key advantage is that the suspension modes of the suspended table can be easily modelled using Simscape. -Therefore, the measured dynamics of the nano-hexapod on top of the suspended table can be compared to a simscape model representing the same experimental conditions. +In this case, the modes of the suspended table were chosen to be at much lower frequency than those of the nano-hexapod such that good decoupling is obtained. +Another key advantage is that the suspension modes of the table can be easily modeled using Simscape. +Therefore, the measured dynamics of the nano-hexapod on top of the suspended table can be compared to a Simscape model representing the same experimental conditions. The model of the Nano-Hexapod can thus be precisely tuned to match the measured dynamics. -The developed suspended table is presented in Section ref:ssec:test_nhexa_table_setup. +The developed suspended table is described in Section ref:ssec:test_nhexa_table_setup. The modal analysis of the table is done in ref:ssec:test_nhexa_table_identification. -Finally, the Simscape model representing the suspended table is tuned to match the measured modes (Section ref:ssec:test_nhexa_table_model). +Finally, the Simscape model representing the suspended table was tuned to match the measured modes (Section ref:ssec:test_nhexa_table_model). ** Matlab Init :noexport:ignore: #+begin_src matlab -%% test_nhexa_table.m +%% test_nhexa_1_suspended_table.m #+end_src #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) @@ -403,11 +391,11 @@ Finally, the Simscape model representing the suspended table is tuned to match t The design of the suspended table is quite straightforward. First, an optical table with high frequency flexible mode was selected[fn:5]. -Then, four springs[fn:6] were selected with low enough spring rate such that the suspension modes are below 10Hz. +Then, four springs[fn:6] were selected with low spring rate such that the suspension modes are below 10Hz. Finally, some interface elements were designed, and mechanical lateral mechanical stops were added (Figure ref:fig:test_nhexa_suspended_table_cad). #+name: fig:test_nhexa_suspended_table_cad -#+caption: CAD View of the vibration table. Purple cylinders are representing the soft springs. +#+caption: CAD View of the vibration table. The purple cylinders are representing the soft springs. #+attr_latex: :width 0.7\linewidth [[file:figs/test_nhexa_suspended_table_cad.jpg]] @@ -417,7 +405,7 @@ Finally, some interface elements were designed, and mechanical lateral mechanica In order to perform a modal analysis of the suspended table, a total of 15 3-axis accelerometers[fn:7] were fixed to the breadboard. Using an instrumented hammer, the first 9 modes could be identified and are summarized in Table ref:tab:test_nhexa_suspended_table_modes. The first 6 modes are suspension modes (i.e. rigid body mode of the breadboard) and are located below 10Hz. -The next modes are flexible modes of the breadboard as shown in Figure ref:fig:test_nhexa_table_flexible_modes, and located above 700Hz. +The next modes are the flexible modes of the breadboard as shown in Figure ref:fig:test_nhexa_table_flexible_modes, and are located above 700Hz. #+attr_latex: :options [t]{0.45\linewidth} #+begin_minipage @@ -476,20 +464,20 @@ The next modes are flexible modes of the breadboard as shown in Figure ref:fig:t ** Simscape Model of the suspended table <> -The Simscape model of the suspended table simply consists of two solid bodies connected by 4 springs. -The 4 springs are here modelled with "bushing joints" that have stiffness and damping properties in x, y and z directions. -The 3D representation of the model is displayed in Figure ref:fig:test_nhexa_suspended_table_simscape where the 4 "bushing joints" are represented by the blue cylinders. +The Simscape model of the suspended table consists simply of two solid bodies connected by 4 springs. +The 4 springs are here modeled with "bushing joints" that have stiffness and damping properties in x, y, and z directions. +The 3D representation of the model is shown in Figure ref:fig:test_nhexa_suspended_table_simscape where the 4 "bushing joints" are represented by blue cylinders. #+name: fig:test_nhexa_suspended_table_simscape #+caption: 3D representation of the simscape model #+attr_latex: :width 0.8\linewidth [[file:figs/test_nhexa_suspended_table_simscape.png]] -The model order is 12, and it represents the 6 suspension modes. -The inertia properties of the parts are set from the geometry and material densities. +The model order is 12, which corresponds to the 6 suspension modes. +The inertia properties of the parts were determined from the geometry and material densities. The stiffness of the springs was initially set from the datasheet nominal value of $17.8\,N/mm$ and then reduced down to $14\,N/mm$ to better match the measured suspension modes. The stiffness of the springs in the horizontal plane is set at $0.5\,N/mm$. -The obtained suspension modes of the simscape model are compared with the measured ones in Table ref:tab:test_nhexa_suspended_table_simscape_modes. +The obtained suspension modes of the Simscape model are compared with the measured modes in Table ref:tab:test_nhexa_suspended_table_simscape_modes. #+begin_src matlab %% Configure Simscape Model @@ -527,12 +515,12 @@ ws = ws(imag(ws) > 0); :END: In this section, a suspended table with low frequency suspension modes and high frequency flexible modes was presented. -This suspended table will be used in Section ref:sec:test_nhexa_dynamics for dynamical identification of the Nano-Hexapod. -The objective is to be able to accurately identify the dynamics of the nano-hexapod, isolated from complex support dynamics. -The key point of this strategy is to be able to accurately model the suspended table. +This suspended table is used in Section ref:sec:test_nhexa_dynamics for dynamical identification of the Nano-Hexapod. +The objective is to accurately identify the dynamics of the nano-hexapod, isolated from complex support dynamics. +The key point of this strategy was the ability to accurately model the suspended table. To do so, a modal analysis of the suspended table was performed in Section ref:ssec:test_nhexa_table_identification, validating the low frequency suspension modes and high frequency flexible modes. -Then, a multi-body model of this suspended table was tuned to match with the measurements (Section ref:ssec:test_nhexa_table_model). +Then, a multi-body model of this suspended table was tuned to match the measurements (Section ref:ssec:test_nhexa_table_model). * Nano-Hexapod Measured Dynamics :PROPERTIES: @@ -542,8 +530,8 @@ Then, a multi-body model of this suspended table was tuned to match with the mea ** Introduction :ignore: -The Nano-Hexapod is then mounted on top of the suspended table as shown in Figure ref:fig:test_nhexa_hexa_suspended_table. -All the instrumentation (Speedgoat with ADC, DAC, piezoelectric voltage amplifiers and digital interfaces for the encoder) are setup and connected to the nano-hexapod using many cables. +The Nano-Hexapod was then mounted on top of the suspended table, as shown in Figure ref:fig:test_nhexa_hexa_suspended_table. +All instrumentation (Speedgoat with ADC, DAC, piezoelectric voltage amplifiers and digital interfaces for the encoder) were configured and connected to the nano-hexapod using many cables. #+name: fig:test_nhexa_hexa_suspended_table #+caption: Mounted Nano-Hexapod on top of the suspended table @@ -551,11 +539,11 @@ All the instrumentation (Speedgoat with ADC, DAC, piezoelectric voltage amplifie [[file:figs/test_nhexa_hexa_suspended_table.jpg]] A modal analysis of the nano-hexapod is first performed in Section ref:ssec:test_nhexa_enc_struts_modal_analysis. -It will be used to better understand the measured dynamics from actuators to sensors. +The results of the modal analysis will be useful to better understand the measured dynamics from actuators to sensors. -A block diagram schematic of the (open-loop) system is shown in Figure ref:fig:test_nhexa_nano_hexapod_signals. -The transfer function from controlled signals $\mathbf{u}$ to the force sensors voltages $\mathbf{V}_s$ and to the encoders measured displacements $\mathbf{d}_e$ are identified in Section ref:ssec:test_nhexa_identification. -The effect of the payload mass on the dynamics is studied in Section ref:ssec:test_nhexa_added_mass. +A block diagram of the (open-loop) system is shown in Figure ref:fig:test_nhexa_nano_hexapod_signals. +The frequency response functions from controlled signals $\mathbf{u}$ to the force sensors voltages $\mathbf{V}_s$ and to the encoders measured displacements $\mathbf{d}_e$ are experimentally identified in Section ref:ssec:test_nhexa_identification. +The effect of the payload mass on the dynamics is discussed in Section ref:ssec:test_nhexa_added_mass. #+begin_src latex :file test_nhexa_nano_hexapod_signals.pdf \definecolor{instrumentation}{rgb}{0, 0.447, 0.741} @@ -597,15 +585,15 @@ The effect of the payload mass on the dynamics is studied in Section ref:ssec:te #+end_src #+name: fig:test_nhexa_nano_hexapod_signals -#+caption: Block diagram of the system. Command signal generated by the speedgoat is $\mathbf{u}$, the measured dignals are $\mathbf{d}_{e}$ and $\mathbf{V}_s$. Units are indicated in square brackets. +#+caption: Block diagram of the studied system. The command signal generated by the speedgoat is $\mathbf{u}$, and the measured dignals are $\mathbf{d}_{e}$ and $\mathbf{V}_s$. Units are indicated in square brackets. #+attr_latex: :scale 1 #+RESULTS: [[file:figs/test_nhexa_nano_hexapod_signals.png]] ** Matlab Init :noexport:ignore: #+begin_src matlab -%% test_nhexa_dynamics.m -% Identification of the nano-hexapod dynamics from u to dL and to Vs +%% test_nhexa_2_dynamics.m +% Identification of the nano-hexapod dynamics from u to de and to Vs % Encoders are fixed to the plates #+end_src @@ -632,16 +620,16 @@ The effect of the payload mass on the dynamics is studied in Section ref:ssec:te ** Modal analysis <> -In order to ease the future analysis of the measured plant dynamics, a basic modal analysis of the nano-hexapod is performed. -Five 3-axis accelerometers are fixed on the top platform of the nano-hexapod (Figure ref:fig:test_nhexa_modal_analysis) and the top platform is excited using an instrumented hammer. +To facilitate the future analysis of the measured plant dynamics, a basic modal analysis of the nano-hexapod is performed. +Five 3-axis accelerometers were fixed on the top platform of the nano-hexapod (Figure ref:fig:test_nhexa_modal_analysis) and the top platform was excited using an instrumented hammer. #+name: fig:test_nhexa_modal_analysis #+caption: Five accelerometers fixed on top of the nano-hexapod to perform a modal analysis #+attr_latex: :width 0.7\linewidth [[file:figs/test_nhexa_modal_analysis.jpg]] -Between 100Hz and 200Hz, 6 suspension modes (i.e. rigid body modes of the top platform) are identified. -At around 700Hz, two flexible modes of the top plate are observed (see Figure ref:fig:test_nhexa_hexa_flexible_modes). +Between 100Hz and 200Hz, 6 suspension modes (i.e. rigid body modes of the top platform) were identified. +At around 700Hz, two flexible modes of the top plate were observed (see Figure ref:fig:test_nhexa_hexa_flexible_modes). These modes are summarized in Table ref:tab:test_nhexa_hexa_modal_modes_list. #+name: tab:test_nhexa_hexa_modal_modes_list @@ -680,29 +668,30 @@ These modes are summarized in Table ref:tab:test_nhexa_hexa_modal_modes_list. ** Identification of the dynamics <> -The dynamics of the nano-hexapod from the six command signals ($u_1$ to $u_6$) the six measured displacement by the encoders ($d_{e1}$ to $d_{e6}$) and to the six force sensors ($V_{s1}$ to $V_{s6}$) are identified by generating a low pass filtered white noise for each of the command signals, one by one. +The dynamics of the nano-hexapod from the six command signals ($u_1$ to $u_6$) to the six measured displacement by the encoders ($d_{e1}$ to $d_{e6}$) and to the six force sensors ($V_{s1}$ to $V_{s6}$) were identified by generating low-pass filtered white noise for each command signal, one by one. The $6 \times 6$ FRF matrix from $\mathbf{u}$ ot $\mathbf{d}_e$ is shown in Figure ref:fig:test_nhexa_identified_frf_de. -The diagonal terms are displayed using colorful lines, and all the 30 off-diagonal terms are displayed by grey lines. +The diagonal terms are displayed using colored lines, and all the 30 off-diagonal terms are displayed by gray lines. -All the six diagonal terms are well superimposed up to at least $1\,kHz$, indicating good manufacturing and mounting uniformity. -Below the first suspension mode, good decoupling can be observed (the amplitude of the all of off-diagonal terms are $\approx 20$ times smaller than the diagonal terms). +All six diagonal terms are well superimposed up to at least $1\,kHz$, indicating good manufacturing and mounting uniformity. +Below the first suspension mode, good decoupling can be observed (the amplitude of all off-diagonal terms are $\approx 20$ times smaller than the diagonal terms). From 10Hz up to 1kHz, around 10 resonance frequencies can be observed. The first 4 are suspension modes (at 122Hz, 143Hz, 165Hz and 191Hz) which correlate the modes measured during the modal analysis in Section ref:ssec:test_nhexa_enc_struts_modal_analysis. -Then, three modes at 237Hz, 349Hz and 395Hz are attributed to the internal strut resonances (this will be checked in Section ref:ssec:test_nhexa_comp_model_coupling). -Except the mode at 237Hz, their amplitude is rather low. -Two modes at 665Hz and 695Hz are attributed to the flexible modes of the top platform. +Three modes at 237Hz, 349Hz and 395Hz are attributed to the internal strut resonances (this will be checked in Section ref:ssec:test_nhexa_comp_model_coupling). +Except for the mode at 237Hz, their impact on the dynamics is small. +The two modes at 665Hz and 695Hz are attributed to the flexible modes of the top platform. Other modes can be observed above 1kHz, which can be attributed to flexible modes of the encoder supports or to flexible modes of the top platform. -Up to at least 1kHz, an alternating pole/zero pattern is observed, which renders the control easier to tune. -This would not have been the case if the encoders were fixed to the struts. +Up to at least 1kHz, an alternating pole/zero pattern is observed, which makes the control easier to tune. +This would not have occurred if the encoders were fixed to the struts. #+begin_src matlab -%% Load identification data +%% Identification of the transfer function from u to de and from u to Vs without payload +% Load identification data load('test_nhexa_identification_data_mass_0.mat', 'data'); -%% Setup useful variables +% Setup useful variables Ts = 1e-4; % Sampling Time [s] Nfft = floor(1/Ts); % Number of points for the FFT computation win = hanning(Nfft); % Hanning window @@ -711,14 +700,14 @@ Noverlap = floor(Nfft/2); % Overlap between frequency analysis % And we get the frequency vector [~, f] = tfestimate(data{1}.u, data{1}.de, win, Noverlap, Nfft, 1/Ts); -%% Transfer function from u to dLm +% Transfer function from u to de G_de = zeros(length(f), 6, 6); for i = 1:6 G_de(:,:,i) = tfestimate(data{i}.u, data{i}.de, win, Noverlap, Nfft, 1/Ts); end -%% Transfer function from u to Vs +% Transfer function from u to Vs G_Vs = zeros(length(f), 6, 6); for i = 1:6 @@ -727,7 +716,7 @@ end #+end_src #+begin_src matlab :exports none -%% Bode plot for the transfer function from u to dLm +%% Bode plot for the transfer function from u to de figure; tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None'); @@ -774,15 +763,15 @@ exportFig('figs/test_nhexa_identified_frf_de.pdf', 'width', 'wide', 'height', 60 #+end_src #+name: fig:test_nhexa_identified_frf_de -#+caption: Measured FRF for the transfer function from $\mathbf{u}$ to $\mathbf{d}_e$. The 6 diagonal terms are the colorfull lines (all superimposed), and the 30 off-diagonal terms are the shaded black lines. +#+caption: Measured FRF for the transfer function from $\mathbf{u}$ to $\mathbf{d}_e$. The 6 diagonal terms are the colored lines (all superimposed), and the 30 off-diagonal terms are the gray lines. #+RESULTS: [[file:figs/test_nhexa_identified_frf_de.png]] Similarly, the $6 \times 6$ FRF matrix from $\mathbf{u}$ to $\mathbf{V}_s$ is shown in Figure ref:fig:test_nhexa_identified_frf_Vs. -Alternating poles and zeros is observed up to at least 2kHz, which is a necessary characteristics in order to apply decentralized IFF. -Similar to what was observed for the encoder outputs, all the "diagonal" terms are well superimposed, indicating that the same controller can be applied for all the struts. -The first flexible mode of the struts as 235Hz is appearing, and therefore is should be possible to add some damping to this mode using IFF. +Alternating poles and zeros can be observed up to at least 2kHz, which is a necessary characteristics for applying decentralized IFF. +Similar to what was observed for the encoder outputs, all the "diagonal" terms are well superimposed, indicating that the same controller can be applied to all the struts. +The first flexible mode of the struts as 235Hz has large amplitude, and therefore, it should be possible to add some damping to this mode using IFF. #+begin_src matlab :exports none %% Bode plot of the IFF Plant (transfer function from u to Vs) @@ -832,16 +821,16 @@ exportFig('figs/test_nhexa_identified_frf_Vs.pdf', 'width', 'wide', 'height', 60 #+end_src #+name: fig:test_nhexa_identified_frf_Vs -#+caption: Measured FRF for the transfer function from $\mathbf{u}$ to $\mathbf{V}_s$. The 6 diagonal terms are the colorfull lines (all superimposed), and the 30 off-diagonal terms are the shaded black lines. +#+caption: Measured FRF for the transfer function from $\mathbf{u}$ to $\mathbf{V}_s$. The 6 diagonal terms are the colored lines (all superimposed), and the 30 off-diagonal terms are the shaded black lines. #+RESULTS: [[file:figs/test_nhexa_identified_frf_Vs.png]] ** Effect of payload mass on the dynamics <> -As one major challenge in the control of the NASS is the wanted robustness to change of payload mass, it is necessary to understand how the dynamics of the nano-hexapod changes with a change of payload mass. +One major challenge in the control of the NASS is the wanted robustness to a change of payload mass; therefore, it is necessary to understand how the dynamics of the nano-hexapod changes with a change in payload mass. -In order to study this change of dynamics with the payload mass, up to three "cylindrical masses" of $13\,kg$ each can be added for a total of $\approx 40\,kg$. +To study how the dynamics changes with the payload mass, up to three "cylindrical masses" of $13\,kg$ each can be added for a total of $\approx 40\,kg$. These three cylindrical masses on top of the nano-hexapod are shown in Figure ref:fig:test_nhexa_table_mass_3. #+name: fig:test_nhexa_table_mass_3 @@ -851,49 +840,63 @@ These three cylindrical masses on top of the nano-hexapod are shown in Figure re [[file:figs/test_nhexa_table_mass_3.jpg]] #+begin_src matlab -%% Load identification Data -meas_added_mass = {... - load('test_nhexa_identification_data_mass_0.mat', 'data'), .... - load('test_nhexa_identification_data_mass_1.mat', 'data'), .... - load('test_nhexa_identification_data_mass_2.mat', 'data'), .... - load('test_nhexa_identification_data_mass_3.mat', 'data')}; - -%% Setup useful variables -Ts = 1e-4; % Sampling Time [s] -Nfft = floor(1/Ts); % Number of points for the FFT computation -win = hanning(Nfft); % Hanning window -Noverlap = floor(Nfft/2); % Overlap between frequency analysis - -% And we get the frequency vector -[~, f] = tfestimate(meas_added_mass{1}.data{1}.u, meas_added_mass{1}.data{1}.de, win, Noverlap, Nfft, 1/Ts); - -G_de = {}; - -for i_mass = [0:3] - G_de(i_mass+1) = {zeros(length(f), 6, 6)}; - for i_strut = 1:6 - G_de{i_mass+1}(:,:,i_strut) = tfestimate(meas_added_mass{i_mass+1}.data{i_strut}.u, meas_added_mass{i_mass+1}.data{i_strut}.de, win, Noverlap, Nfft, 1/Ts); - end -end - -%% IFF Plant (transfer function from u to Vs) -G_Vs = {}; - -for i_mass = [0:3] - G_Vs(i_mass+1) = {zeros(length(f), 6, 6)}; - for i_strut = 1:6 - G_Vs{i_mass+1}(:,:,i_strut) = tfestimate(meas_added_mass{i_mass+1}.data{i_strut}.u, meas_added_mass{i_mass+1}.data{i_strut}.Vs, win, Noverlap, Nfft, 1/Ts); - end -end +%% Set to true only if all the FRF matrices should again computed +% from the experimental data +compute_frf = false; +if compute_frf +#+end_src + +#+begin_src matlab + %% Identification of the FRF matrices from u to de and to Vs + % Load identification Data + meas_added_mass = {... + load('test_nhexa_identification_data_mass_0.mat', 'data'), .... + load('test_nhexa_identification_data_mass_1.mat', 'data'), .... + load('test_nhexa_identification_data_mass_2.mat', 'data'), .... + load('test_nhexa_identification_data_mass_3.mat', 'data')}; + + % Setup useful variables + Ts = 1e-4; % Sampling Time [s] + Nfft = floor(1/Ts); % Number of points for the FFT computation + win = hanning(Nfft); % Hanning window + Noverlap = floor(Nfft/2); % Overlap between frequency analysis + + % And we get the frequency vector + [~, f] = tfestimate(meas_added_mass{1}.data{1}.u, meas_added_mass{1}.data{1}.de, win, Noverlap, Nfft, 1/Ts); + + % FRF from u to de + G_de = {}; + + for i_mass = [0:3] + G_de(i_mass+1) = {zeros(length(f), 6, 6)}; + for i_strut = 1:6 + G_de{i_mass+1}(:,:,i_strut) = tfestimate(meas_added_mass{i_mass+1}.data{i_strut}.u, meas_added_mass{i_mass+1}.data{i_strut}.de, win, Noverlap, Nfft, 1/Ts); + end + end + + % FRF from u to Vs + G_Vs = {}; + + for i_mass = [0:3] + G_Vs(i_mass+1) = {zeros(length(f), 6, 6)}; + for i_strut = 1:6 + G_Vs{i_mass+1}(:,:,i_strut) = tfestimate(meas_added_mass{i_mass+1}.data{i_strut}.u, meas_added_mass{i_mass+1}.data{i_strut}.Vs, win, Noverlap, Nfft, 1/Ts); + end + end #+end_src -The identified dynamics are then saved for further use. #+begin_src matlab :exports none :tangle no -save('matlab/mat/test_nhexa_identified_frf_masses.mat', 'f', 'G_Vs', 'G_de') + % The identified dynamics are then saved for further use. + save('matlab/mat/test_nhexa_identified_frf_masses.mat', 'f', 'G_Vs', 'G_de') #+end_src #+begin_src matlab :eval no -save('./mat/test_nhexa_identified_frf_masses.mat', 'f', 'G_Vs', 'G_de') + % The identified dynamics are then saved for further use. + save('./mat/test_nhexa_identified_frf_masses.mat', 'f', 'G_Vs', 'G_de') +#+end_src + +#+begin_src matlab +end #+end_src #+begin_src matlab :exports none @@ -902,22 +905,22 @@ frf_ol = load('test_nhexa_identified_frf_masses.mat', 'f', 'G_Vs', 'G_de'); #+end_src The obtained frequency response functions from actuator signal $u_i$ to the associated encoder $d_{ei}$ for the four payload conditions (no mass, 13kg, 26kg and 39kg) are shown in Figure ref:fig:test_nhexa_identified_frf_de_masses. -As expected, the frequency of the suspension modes are decreasing with an increase of the payload mass. -The low frequency gain does not change as it is linked to the stiffness property of the nano-hexapod, and not to its mass property. +As expected, the frequency of the suspension modes decreased with increasing payload mass. +The low frequency gain does not change because it is linked to the stiffness property of the nano-hexapod and not to its mass property. -The frequencies of the two flexible modes of the top plate are first decreased a lot when the first mass is added (from $\approx 700\,Hz$ to $\approx 400\,Hz$). -This is due to the fact that the added mass is composed of two half cylinders which are not fixed together. -It therefore adds a lot of mass to the top plate without adding stiffness in one direction. -When more than one "mass layer" is added, the half cylinders are added with some angles such that rigidity are added in all directions (see how the three mass "layers" are positioned in Figure ref:fig:test_nhexa_table_mass_3). -In that case, the frequency of these flexible modes are increased. -In practice, the payload should be one solid body, and no decrease of the frequency of this flexible mode should be observed. -The apparent amplitude of the flexible mode of the strut at 237Hz becomes smaller as the payload mass is increased. +The frequencies of the two flexible modes of the top plate first decreased significantly when the first mass was added (from $\approx 700\,Hz$ to $\approx 400\,Hz$). +This is because the added mass is composed of two half cylinders that are not fixed together. +Therefore, it adds a lot of mass to the top plate without increasing stiffness in one direction. +When more than one "mass layer" is added, the half cylinders are added at some angles such that rigidity is added in all directions (see how the three mass "layers" are positioned in Figure ref:fig:test_nhexa_table_mass_3). +In this case, the frequency of these flexible modes is increased. +In practice, the payload should be one solid body, and no decrease in the frequency of this flexible mode should be observed. +The apparent amplitude of the flexible mode of the strut at 237Hz becomes smaller as the payload mass increased. -The measured FRF from $u_i$ to $V_{si}$ are shown in Figure ref:fig:test_nhexa_identified_frf_Vs_masses. -For all the tested payloads, the measured FRF always have alternating poles and zeros, indicating that IFF can be applied in a robust way. +The measured FRFs from $u_i$ to $V_{si}$ are shown in Figure ref:fig:test_nhexa_identified_frf_Vs_masses. +For all tested payloads, the measured FRF always have alternating poles and zeros, indicating that IFF can be applied in a robust manner. #+begin_src matlab :exports none -%% Bode plot for the transfer function from u to dLm - Several payloads +%% Bode plot for the transfer function from u to de - Several payloads masses = [0, 13, 26, 39]; figure; tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None'); @@ -970,7 +973,7 @@ exportFig('figs/test_nhexa_identified_frf_de_masses.pdf', 'width', 'half', 'heig #+end_src #+begin_src matlab :exports none -%% Bode plot for the transfer function from u to dLm +%% Bode plot for the transfer function from u to de figure; tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None'); @@ -1046,15 +1049,14 @@ exportFig('figs/test_nhexa_identified_frf_Vs_masses.pdf', 'width', 'half', 'heig After the Nano-Hexapod was fixed on top of the suspended table, its dynamics was identified. The frequency response functions from the six DAC voltages $\mathbf{u}$ to the six encoders measured displacements $\mathbf{d}_e$ displays alternating complex conjugate poles and complex conjugate zeros up to at least 1kHz. -At low frequency, the coupling is small, indicating correct assembly of all parts. -This should enables the design of a decentralized positioning controller based on the encoder for relative positioning purposes. -The suspension modes and flexible modes measured during the modal analysis (Section ref:ssec:test_nhexa_enc_struts_modal_analysis) are also observed in the dynamics. -Lot's of other modes are present above 700Hz, which will inevitably limit the achievable bandwidth. -The observed effect of the payload's mass on the dynamics is quite large, which also represent a complex control challenge. +At low frequencies, the coupling is small, indicating the correct assembly of all parts. +This should enable the design of a decentralized positioning controller based on the encoders for relative positioning purposes. +The suspension and flexible modes measured during the modal analysis (Section ref:ssec:test_nhexa_enc_struts_modal_analysis) are also observed in the dynamics. +Many other modes are present above 700Hz, which will inevitably limit the achievable bandwidth. +The observed effect of the payload's mass on the dynamics was quite large, which also represents a complex control challenge. -The frequency response functions from the six DAC voltages $\mathbf{u}$ to the six force sensors voltages $\mathbf{V}_s$ all have alternating complex conjugate poles and complex conjugate zeros. -This indicates that it should be possible to implement decentralized Integral Force Feedback in a robust way. -This alternating property holds for all the tested payloads. +The frequency response functions from the six DAC voltages $\mathbf{u}$ to the six force sensors voltages $\mathbf{V}_s$ all have alternating complex conjugate poles and complex conjugate zeros for all the tested payloads. +This indicates that it is possible to implement decentralized Integral Force Feedback in a robust manner. * Nano-Hexapod Model Dynamics :PROPERTIES: @@ -1064,8 +1066,8 @@ This alternating property holds for all the tested payloads. ** Introduction :ignore: -In this section, the measured dynamics done in Section ref:sec:test_nhexa_dynamics is compared with the dynamics estimated from the Simscape model. -The nano-hexapod simscape model is therefore added on top of the vibration table Simscape model as shown in Figure ref:fig:test_nhexa_hexa_simscape. +In this section, the dynamics measured in Section ref:sec:test_nhexa_dynamics is compared with those estimated from the Simscape model. +The nano-hexapod simscape model was therefore added on top of the vibration table Simscape model, as shown in Figure ref:fig:test_nhexa_hexa_simscape. #+name: fig:test_nhexa_hexa_simscape #+caption: 3D representation of the simscape model with the nano-hexapod on top of the suspended table. Three mass "layers" are here added @@ -1073,7 +1075,7 @@ The nano-hexapod simscape model is therefore added on top of the vibration table [[file:figs/test_nhexa_hexa_simscape.png]] The model should exhibit certain characteristics that are verified in this section. -First, it should match the measured system dynamics from actuators to sensors that were presented in Section ref:sec:test_nhexa_dynamics. +First, it should match the measured system dynamics from actuators to sensors presented in Section ref:sec:test_nhexa_dynamics. Both the "direct" terms (Section ref:ssec:test_nhexa_comp_model) and "coupling" terms (Section ref:ssec:test_nhexa_comp_model_coupling) of the Simscape model are compared with the measured dynamics. Second, it should also represents how the system dynamics changes when a payload is fixed to the top platform. This is checked in Section ref:ssec:test_nhexa_comp_model_masses. @@ -1207,16 +1209,16 @@ sim_ol = load('test_nhexa_simscape_masses.mat', 'G_Vs', 'G_de'); frf_ol = load('test_nhexa_identified_frf_masses.mat', 'f', 'G_Vs', 'G_de'); #+end_src -The Simscape model of the nano-hexapod is first configured with 4-DoF flexible joints, 2-DoF APA and rigid top and bottom platforms. -The stiffness of the flexible joints are chosen based on the values estimated using the test bench and based on FEM. -The parameters of the APA model are the ones determined from the test bench of the APA. -The $6 \times 6$ transfer function matrices from $\mathbf{u}$ to $\mathbf{d}_e$ and from $\mathbf{u}$ to $\mathbf{V}_s$ are extracted then from the Simscape model. +The Simscape model of the nano-hexapod was first configured with 4-DoF flexible joints, 2-DoF APA, and rigid top and bottom plates. +The stiffness values of the flexible joints were chosen based on the values estimated using the test bench and on the FEM. +The parameters of the APA model were determined from the test bench of the APA. +The $6 \times 6$ transfer function matrices from $\mathbf{u}$ to $\mathbf{d}_e$ and from $\mathbf{u}$ to $\mathbf{V}_s$ are then extracted from the Simscape model. -A first feature that should be checked is that the model well represents the "direct" terms of the measured FRF matrix. +First, is it evaluated how well the models matches the "direct" terms of the measured FRF matrix. To do so, the diagonal terms of the extracted transfer function matrices are compared with the measured FRF in Figure ref:fig:test_nhexa_comp_simscape_diag. -It can be seen that the 4 suspension modes of the nano-hexapod (at 122Hz, 143Hz, 165Hz and 191Hz) are well modelled. -The three resonances that were attributed to "internal" flexible modes of the struts (at 237Hz, 349Hz and 395Hz) cannot be seen in the model, which is reasonable as the APA are here modelled as a simple uniaxial 2-DoF system. -At higher frequencies, no resonances can be seen in the model, as the as the top plate and the encoder supports are modelled as rigid bodies. +It can be seen that the 4 suspension modes of the nano-hexapod (at 122Hz, 143Hz, 165Hz and 191Hz) are well modeled. +The three resonances that were attributed to "internal" flexible modes of the struts (at 237Hz, 349Hz and 395Hz) cannot be seen in the model, which is reasonable because the APAs are here modeled as a simple uniaxial 2-DoF system. +At higher frequencies, no resonances can be observed in the model, as the top plate and the encoder supports are modeled as rigid bodies. #+begin_src matlab :exports none %% Diagonal elements of the FRF matrix from u to de @@ -1305,7 +1307,7 @@ exportFig('figs/test_nhexa_comp_simscape_Vs_diag.pdf', 'width', 'half', 'height' #+end_src #+name: fig:test_nhexa_comp_simscape_diag -#+caption: Comparison of the diagonal elements (i.e. "direct" terms) of the measured FRF matrix and the identified dynamics from the Simscape model. Both for the dynamics from $u$ to $d_e$ (\subref{fig:test_nhexa_comp_simscape_de_diag}) and from $u$ to $V_s$ (\subref{fig:test_nhexa_comp_simscape_Vs_diag}) +#+caption: Comparison of the diagonal elements (i.e. "direct" terms) of the measured FRF matrix and the dynamics identified from the Simscape model. Both for the dynamics from $u$ to $d_e$ (\subref{fig:test_nhexa_comp_simscape_de_diag}) and from $u$ to $V_s$ (\subref{fig:test_nhexa_comp_simscape_Vs_diag}) #+attr_latex: :options [htbp] #+begin_figure #+attr_latex: :caption \subcaption{\label{fig:test_nhexa_comp_simscape_de_diag}from $u$ to $d_e$} @@ -1322,13 +1324,13 @@ exportFig('figs/test_nhexa_comp_simscape_Vs_diag.pdf', 'width', 'half', 'height' #+end_subfigure #+end_figure -** Modelling dynamical coupling +** Modeling dynamical coupling <> -Another wanted feature of the model is that it well represents the coupling in the system as this is often the limiting factor for the control of MIMO systems. +Another desired feature of the model is that it effectively represents coupling in the system, as this is often the limiting factor for the control of MIMO systems. Instead of comparing the full 36 elements of the $6 \times 6$ FFR matrix from $\mathbf{u}$ to $\mathbf{d}_e$, only the first "column" is compared (Figure ref:fig:test_nhexa_comp_simscape_de_all), which corresponds to the transfer function from the command $u_1$ to the six measured encoder displacements $d_{e1}$ to $d_{e6}$. -It can be seen that the coupling in the model is well matching the measurements up to the first un-modelled flexible mode at 237Hz. -Similar results are observed for all the other coupling terms, as well as for the transfer function from $\mathbf{u}$ to $\mathbf{V}_s$. +It can be seen that the coupling in the model matches the measurements well up to the first un-modeled flexible mode at 237Hz. +Similar results are observed for all other coupling terms and for the transfer function from $\mathbf{u}$ to $\mathbf{V}_s$. #+begin_src matlab :exports none %% Comparison of the plants (encoder output) when tuning the misalignment @@ -1407,15 +1409,15 @@ exportFig('figs/test_nhexa_comp_simscape_de_all.pdf', 'width', 'full', 'height', #+end_src #+name: fig:test_nhexa_comp_simscape_de_all -#+caption: Comparison of the measured (in blue) and modelled (in red) frequency transfer functions from the first control signal $u_1$ to the six encoders $d_{e1}$ to $d_{e6}$ +#+caption: Comparison of the measured (in blue) and modeled (in red) frequency transfer functions from the first control signal $u_1$ to the six encoders $d_{e1}$ to $d_{e6}$ #+RESULTS: [[file:figs/test_nhexa_comp_simscape_de_all.png]] -The APA300ML are then modelled with a /super-element/ extracted from a FE-software. +The APA300ML was then modeled with a /super-element/ extracted from a FE-software. The obtained transfer functions from $u_1$ to the six measured encoder displacements $d_{e1}$ to $d_{e6}$ are compared with the measured FRF in Figure ref:fig:test_nhexa_comp_simscape_de_all_flex. -While the damping of the suspension modes for the /super-element/ is underestimated (which could be solved by properly tuning the proportional damping coefficients), the flexible modes of the struts at 237Hz and 349Hz are well modelled. +While the damping of the suspension modes for the /super-element/ is underestimated (which could be solved by properly tuning the proportional damping coefficients), the flexible modes of the struts at 237Hz and 349Hz are well modeled. Even the mode 395Hz can be observed in the model. -Therefore, if the modes of the struts are to be modelled, the /super-element/ of the APA300ML may be used, at the cost of obtaining a much higher order model. +Therefore, if the modes of the struts are to be modeled, the /super-element/ of the APA300ML can be used at the cost of obtaining a much higher order model. #+begin_src matlab %% Load the plant model with Flexible APA @@ -1499,21 +1501,21 @@ exportFig('figs/test_nhexa_comp_simscape_de_all_flex.pdf', 'width', 'full', 'hei #+end_src #+name: fig:test_nhexa_comp_simscape_de_all_flex -#+caption: Comparison of the measured (in blue) and modelled (in red) frequency transfer functions from the first control signal $u_1$ to the six encoders $d_{e1}$ to $d_{e6}$ +#+caption: Comparison of the measured (in blue) and modeled (in red) frequency transfer functions from the first control signal $u_1$ to the six encoders $d_{e1}$ to $d_{e6}$ #+RESULTS: [[file:figs/test_nhexa_comp_simscape_de_all_flex.png]] -** Modelling the effect of payload mass +** Modeling the effect of payload mass <> -Another important characteristics of the model is that it should well represents the dynamics of the system for all considered payloads. +Another important characteristic of the model is that it should represents the dynamics of the system well for all considered payloads. The model dynamics is therefore compared with the measured dynamics for 4 payloads (no payload, 13kg, 26kg and 39kg) in Figure ref:fig:test_nhexa_comp_simscape_diag_masses. -The observed shift to lower frequency of the suspension modes with an increased payload mass is well represented by the Simscape model. -The complex conjugate zeros are also well matching with the experiments both for the encoder outputs (Figure ref:fig:test_nhexa_comp_simscape_de_diag_masses) and the force sensor outputs (Figure ref:fig:test_nhexa_comp_simscape_Vs_diag_masses). +The observed shift of the suspension modes to lower frequencies with increased payload mass is well represented by the Simscape model. +The complex conjugate zeros also well match the experiments both for the encoder outputs (Figure ref:fig:test_nhexa_comp_simscape_de_diag_masses) and the force sensor outputs (Figure ref:fig:test_nhexa_comp_simscape_Vs_diag_masses). -Note that the model displays smaller damping that what is observed experimentally for high values of the payload mass. +Note that the model displays smaller damping than that observed experimentally for high values of the payload mass. One option could be to tune the damping as a function of the mass (similar to what is done with the Rayleigh damping). -However, as decentralized IFF will be applied, the damping will be brought actively, and the open-loop damping value should have very little impact on the obtained plant. +However, as decentralized IFF will be applied, the damping is actively brought, and the open-loop damping value should have very little impact on the obtained plant dynamics. #+begin_src matlab :exports none %% Bode plot for the transfer function from u to de @@ -1615,7 +1617,7 @@ exportFig('figs/test_nhexa_comp_simscape_Vs_diag_masses.pdf', 'width', 'half', ' #+end_src #+name: fig:test_nhexa_comp_simscape_diag_masses -#+caption: Comparison of the diagonal elements (i.e. "direct" terms) of the measured FRF matrix and the identified dynamics from the Simscape model. Both for the dynamics from $u$ to $d_e$ (\subref{fig:test_nhexa_comp_simscape_de_diag}) and from $u$ to $V_s$ (\subref{fig:test_nhexa_comp_simscape_Vs_diag}) +#+caption: Comparison of the diagonal elements (i.e. "direct" terms) of the measured FRF matrix and the dynamics identified from the Simscape model. Both for the dynamics from $u$ to $d_e$ (\subref{fig:test_nhexa_comp_simscape_de_diag}) and from $u$ to $V_s$ (\subref{fig:test_nhexa_comp_simscape_Vs_diag}) #+attr_latex: :options [htbp] #+begin_figure #+attr_latex: :caption \subcaption{\label{fig:test_nhexa_comp_simscape_de_diag_masses}from $u$ to $d_e$} @@ -1633,8 +1635,8 @@ exportFig('figs/test_nhexa_comp_simscape_Vs_diag_masses.pdf', 'width', 'half', ' #+end_figure In order to also check if the model well represents the coupling when high payload masses are used, the transfer functions from $u_1$ to $d_{e1}$ to $d_{e6}$ are compared in the case of the 39kg payload in Figure ref:fig:test_nhexa_comp_simscape_de_all_high_mass. -Excellent match between the experimental coupling and the model coupling is observed. -The model therefore well represents the system dynamical coupling for different considered payloads. +Excellent match between experimental and model coupling is observed. +Therefore, the model effectively represents the system coupling for different payloads. #+begin_src matlab :exports none %% Comparison of the plants (encoder output) when tuning the misalignment @@ -1713,7 +1715,7 @@ exportFig('figs/test_nhexa_comp_simscape_de_all_high_mass.pdf', 'width', 'full', #+end_src #+name: fig:test_nhexa_comp_simscape_de_all_high_mass -#+caption: Comparison of the measured (in blue) and modelled (in red) frequency transfer functions from the first control signal $u_1$ to the six encoders $d_{e1}$ to $d_{e6}$ +#+caption: Comparison of the measured (in blue) and modeled (in red) frequency transfer functions from the first control signal $u_1$ to the six encoders $d_{e1}$ to $d_{e6}$ #+RESULTS: [[file:figs/test_nhexa_comp_simscape_de_all_high_mass.png]] @@ -1725,23 +1727,23 @@ exportFig('figs/test_nhexa_comp_simscape_de_all_high_mass.pdf', 'width', 'full', As illustrated in this section, the developed Simscape model accurately represents the suspension modes of the Nano-Hexapod. Both FRF matrices from $\mathbf{u}$ to $\mathbf{V}_s$ and from $\mathbf{u}$ to $\mathbf{d}_e$ are well matching with the measurements, even when considering coupling (i.e. off-diagonal) terms, which are very important from a control perspective. -At frequency above the suspension modes, the Nano-Hexapod model becomes inaccurate as the flexible modes are not modelled. -It was shown that modelling the APA300ML using a "super-element" allows to model the internal resonances of the struts. -The same could be done with the top platform and the encoder supports, but the model order would be higher and may become unpractical for simulation purposes. +At frequencies above the suspension modes, the Nano-Hexapod model became inaccurate because the flexible modes were not modeled. +It was found that modeling the APA300ML using a "super-element" allows to model the internal resonances of the struts. +The same can be done with the top platform and the encoder supports; however, the model order would be higher and may become unpractical for simulation. * Conclusion -The goal of this test bench was to obtain an accurate model of the nano-hexapod that can then be included on top of the micro-station model. +The goal of this test bench was to obtain an accurate model of the nano-hexapod that could then be included on top of the micro-station model. -This strategy was to measure the nano-hexapod in conditions where all factors that could have impacted the nano-hexapod dynamics were taken into account. -This was done by developing a suspended table with low frequency suspension modes which can be accurately modelled. +This strategy was to identify the nano-hexapod dynamics under conditions in which all factors that could have affected the nano-hexapod dynamics were considered. +This was achieved by developing a suspended table with low frequency suspension modes that can be accurately modeled. -While the dynamics of the nano-hexapod was indeed impacted by the dynamics of the suspended platform, this impact was also taken into account in the Simscape model, and a good match was obtained. +Although the dynamics of the nano-hexapod was indeed impacted by the dynamics of the suspended platform, this impact was also considered in the Simscape model, and a good match was obtained. -Obtaining a model accurately representing the complex dynamics of the Nano-Hexapod was made possible by the modelling approach used during this work. -This approach consisted of tuning and validating models of individual components (such as the APA and flexible joints) using dedicated test benches. -Only then, the different models could be combined to form the Nano-Hexapod dynamical model. -If a model of the nano-hexapod was developed in one time, it would be difficult to tune all model parameters to match the measured dynamics, or even to know if the model "structure" would be adequate to represents the system dynamics. +Obtaining a model that accurately represents the complex dynamics of the Nano-Hexapod was made possible by the modeling approach used in this study. +This approach involved tuning and validating models of individual components (such as the APA and flexible joints) using dedicated test benches. +The different models could then be combined to form the Nano-Hexapod dynamical model. +If a model of the nano-hexapod was developed in one time, it would be difficult to tune all the model parameters to match the measured dynamics, or even to know if the model "structure" would be adequate to represent the system dynamics. * Bibliography :ignore: #+latex: \printbibliography[heading=bibintoc,title={Bibliography}] @@ -2191,6 +2193,6 @@ end [fn:6]"SZ8005 20 x 044" from Steinel. The spring rate is specified at $17.8\,N/mm$ [fn:5]The 450 mm x 450 mm x 60 mm Nexus B4545A from Thorlabs. [fn:4]As the accuracy of the FARO arm is $\pm 13\,\mu m$, the true straightness is probably better than the values indicated. The limitation of the instrument is here reached. -[fn:3]The height dimension is better than $40\,\mu m$. The diameter fit of 182g6 and 24g6 with the two plates is verified. -[fn:2]Location of all the interface surfaces with the flexible joints are checked. The fits (182H7 and 24H8) with the interface element are checked. +[fn:3]The height dimension is better than $40\,\mu m$. The diameter fitting of 182g6 and 24g6 with the two plates is verified. +[fn:2]Location of all the interface surfaces with the flexible joints were checked. The fittings (182H7 and 24H8) with the interface element were also checked. [fn:1]Faro Arm Platinum 4ft, specified accuracy of $\pm 13\mu m$ diff --git a/test-bench-nano-hexapod.pdf b/test-bench-nano-hexapod.pdf index 621773fbf8c6f7ed7287eb1c37c062d6f0f44b8e..1d113f28d2f1db5bde62cb9f547c32c5b8884dea 100644 GIT binary patch delta 79619 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 diff --git a/test-bench-nano-hexapod.tex b/test-bench-nano-hexapod.tex index fb0e560..8d2d09a 100644 --- a/test-bench-nano-hexapod.tex +++ b/test-bench-nano-hexapod.tex @@ -1,4 +1,4 @@ -% Created 2024-10-29 Tue 15:32 +% Created 2024-10-29 Tue 19:17 % Intended LaTeX compiler: pdflatex \documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt} @@ -24,19 +24,19 @@ \clearpage -In the previous section, all the struts were mounted and individually characterized. -Now the nano-hexapod is assembled using a mounting procedure described in Section \ref{sec:test_nhexa_mounting}. +Prior to the nano-hexapod assembly, all the struts were mounted and individually characterized. +In Section \ref{sec:test_nhexa_mounting}, the assembly procedure of the nano-hexapod is presented. -In order to identify the dynamics of the nano-hexapod, a special suspended table is developed which consists of a stiff ``optical breadboard'' suspended on top of four soft springs. -The Nano-Hexapod is then fixed on top of the suspended table, such that its dynamics is not affected by complex dynamics except from the suspension modes of the table that can be well characterized and modelled (Section \ref{sec:test_nhexa_table}). +To identify the dynamics of the nano-hexapod, a special suspended table was developed, which consisted of a stiff ``optical breadboard'' suspended on top of four soft springs. +The Nano-Hexapod was then fixed on top of the suspended table such that its dynamics is not affected by complex dynamics except from the suspension modes of the table that can be well characterized and modeled (Section \ref{sec:test_nhexa_table}). The obtained nano-hexapod dynamics is analyzed in Section \ref{sec:test_nhexa_dynamics}, and compared with the Simscape model in Section \ref{sec:test_nhexa_model}. \chapter{Nano-Hexapod Assembly Procedure} \label{sec:test_nhexa_mounting} -The assembly of the nano-hexapod is quite critical to both avoid additional stress in the flexible joints (that would result in a loss of stroke) and for the precise determination of the Jacobian matrix. -The goal is to fix the six struts to the two nano-hexapod plates (shown in Figure \ref{fig:test_nhexa_nano_hexapod_plates}) while the two plates are parallel, aligned vertically, and such that all the flexible joints do not experience any stress. -Do to so, a precisely machined mounting tool (Figure \ref{fig:test_nhexa_center_part_hexapod_mounting}) is used to position the two nano-hexapod plates during the assembly procedure. +The assembly of the nano-hexapod is critical for both avoiding additional stress in the flexible joints (that would result in a loss of stroke) and for the precisely determining the Jacobian matrix. +The goal was to fix the six struts to the two nano-hexapod plates (shown in Figure \ref{fig:test_nhexa_nano_hexapod_plates}) while the two plates were parallel and aligned vertically so that all the flexible joints did not experience any stress. +To do so, a precisely machined mounting tool (Figure \ref{fig:test_nhexa_center_part_hexapod_mounting}) is used to position the two nano-hexapod plates during the assembly procedure. \begin{figure}[htbp] \begin{subfigure}{0.59\textwidth} @@ -54,10 +54,10 @@ Do to so, a precisely machined mounting tool (Figure \ref{fig:test_nhexa_center_ \caption{\label{fig:test_nhexa_received_parts}Received Nano-Hexapod plates (\subref{fig:test_nhexa_nano_hexapod_plates}) and mounting tool used to position the two plates during assembly (\subref{fig:test_nhexa_center_part_hexapod_mounting})} \end{figure} -The mechanical tolerances of the received plates are checked using a FARO arm\footnote{Faro Arm Platinum 4ft, specified accuracy of \(\pm 13\mu m\)} (Figure \ref{fig:test_nhexa_plates_tolerances}) and are found to comply with the requirements\footnote{Location of all the interface surfaces with the flexible joints are checked. The fits (182H7 and 24H8) with the interface element are checked.}. -The same is done for the mounting tool\footnote{The height dimension is better than \(40\,\mu m\). The diameter fit of 182g6 and 24g6 with the two plates is verified.} -The two plates are then fixed to the mounting tool as shown in Figure \ref{fig:test_nhexa_mounting_tool_hexapod_top_view}. -The main goal of this ``mounting tool'' is to position the flexible joint interfaces (the ``V'' shapes) of both plates such that a cylinder can rest on the 4 flat interfaces at the same time. +The mechanical tolerances of the received plates were checked using a FARO arm\footnote{Faro Arm Platinum 4ft, specified accuracy of \(\pm 13\mu m\)} (Figure \ref{fig:test_nhexa_plates_tolerances}) and were found to comply with the requirements\footnote{Location of all the interface surfaces with the flexible joints were checked. The fittings (182H7 and 24H8) with the interface element were also checked.}. +The same is done for the mounting tool\footnote{The height dimension is better than \(40\,\mu m\). The diameter fitting of 182g6 and 24g6 with the two plates is verified.} +The two plates were then fixed to the mounting tool, as shown in Figure \ref{fig:test_nhexa_mounting_tool_hexapod_top_view}. +The main goal of this ``mounting tool'' is to position the flexible joint interfaces (the ``V'' shapes) of both plates so that a cylinder can rest on the 4 flat interfaces at the same time. \begin{figure}[htbp] \begin{subfigure}{0.49\textwidth} @@ -76,9 +76,9 @@ The main goal of this ``mounting tool'' is to position the flexible joint interf \end{figure} The quality of the positioning can be estimated by measuring the ``straightness'' of the top and bottom ``V'' interfaces. -This corresponds to the diameter of the smallest cylinder that contains all points of the measured axis. -This is again done using the FARO arm, and the results for all the six struts are summarized in Table \ref{tab:measured_straightness}. -The straightness is found to be better than \(15\,\mu m\) for all the struts\footnote{As the accuracy of the FARO arm is \(\pm 13\,\mu m\), the true straightness is probably better than the values indicated. The limitation of the instrument is here reached.}, which is sufficiently good to not induce significant stress of the flexible joint during the assembly. +This corresponds to the diameter of the smallest cylinder which contains all points along the measured axis. +This was again done using the FARO arm, and the results for all six struts are summarized in Table \ref{tab:measured_straightness}. +The straightness was found to be better than \(15\,\mu m\) for all struts\footnote{As the accuracy of the FARO arm is \(\pm 13\,\mu m\), the true straightness is probably better than the values indicated. The limitation of the instrument is here reached.}, which is sufficiently good to not induce significant stress of the flexible joint during assembly. \begin{table}[htbp] \centering @@ -94,12 +94,11 @@ The straightness is found to be better than \(15\,\mu m\) for all the struts\foo 6 & \(6\, \mu m\) & \(7\, \mu m\)\\ \bottomrule \end{tabularx} -\caption{\label{tab:measured_straightness}Measured straightness between the two ``V'' for the six struts. These measurements are performed two times for each strut.} +\caption{\label{tab:measured_straightness}Measured straightness between the two ``V'' shapes for the six struts. These measurements were performed twice for each strut.} \end{table} -The encoder rulers and heads are then fixed to the top and bottom plates respectively (Figure \ref{fig:test_nhexa_mount_encoder}). -The encoder heads are then aligned to maximize the received contrast. +The encoder rulers and heads were then fixed to the top and bottom plates, respectively (Figure \ref{fig:test_nhexa_mount_encoder}), and the encoder heads were aligned to maximize the received contrast. \begin{figure}[htbp] \begin{subfigure}{0.49\textwidth} @@ -114,14 +113,14 @@ The encoder heads are then aligned to maximize the received contrast. \end{center} \subcaption{\label{fig:test_nhexa_mount_encoder_heads}Encoder heads} \end{subfigure} -\caption{\label{fig:test_nhexa_mount_encoder}Mounting of the encoders to the Nano-hexapod. The rulers are fixed to the top plate (\subref{fig:test_nhexa_mount_encoder_rulers}) while the encoders heads are fixed to the botom plate (\subref{fig:test_nhexa_mount_encoder_heads})} +\caption{\label{fig:test_nhexa_mount_encoder}Mounting of the encoders to the Nano-hexapod. The rulers are fixed to the top plate (\subref{fig:test_nhexa_mount_encoder_rulers}) while encoders heads are fixed to the bottom plate (\subref{fig:test_nhexa_mount_encoder_heads})} \end{figure} -The six struts are then fixed to the bottom and top plates one by one. -First the top flexible joint is fixed such that its flat reference surface is in contact with the top plate. -This is to precisely known the position of the flexible joint with respect to the top plate. -Then the bottom flexible joint is fixed. -After all six struts are mounted, the mounting tool (Figure \ref{fig:test_nhexa_center_part_hexapod_mounting}) can be disassembled, and the fully mounted nano-hexapod as shown in Figure \ref{fig:test_nhexa_nano_hexapod_mounted} is obtained. +The six struts were then fixed to the bottom and top plates one by one. +First, the top flexible joint is fixed so that its flat reference surface is in contact with the top plate. +This step precisely determines the position of the flexible joint with respect to the top plate. +The bottom flexible joint is then fixed. +After mounting all six struts, the mounting tool (Figure \ref{fig:test_nhexa_center_part_hexapod_mounting}) can be disassembled, and the nano-hexapod as shown in Figure \ref{fig:test_nhexa_nano_hexapod_mounted} is fully assembled. \begin{figure}[htbp] \centering @@ -135,29 +134,29 @@ After all six struts are mounted, the mounting tool (Figure \ref{fig:test_nhexa_ When a dynamical system is fixed to a support (such as a granite or an optical table), its dynamics will couple to the support dynamics. This may results in additional modes appearing in the system dynamics, which are difficult to predict and model. -Two prevent this issue, strategy adopted here is to mount the nano-hexapod on top a suspended table with low frequency suspension modes. +To prevent this issue, the strategy adopted here is to mount the nano-hexapod on top a suspended table with low frequency suspension modes. -In such a case, the modes of the suspended table are chosen to be at much lower frequency than those of the nano-hexapod such that they are well decoupled. -An other key advantage is that the suspension modes of the suspended table can be easily modelled using Simscape. -Therefore, the measured dynamics of the nano-hexapod on top of the suspended table can be compared to a simscape model representing the same experimental conditions. +In this case, the modes of the suspended table were chosen to be at much lower frequency than those of the nano-hexapod such that good decoupling is obtained. +Another key advantage is that the suspension modes of the table can be easily modeled using Simscape. +Therefore, the measured dynamics of the nano-hexapod on top of the suspended table can be compared to a Simscape model representing the same experimental conditions. The model of the Nano-Hexapod can thus be precisely tuned to match the measured dynamics. -The developed suspended table is presented in Section \ref{ssec:test_nhexa_table_setup}. +The developed suspended table is described in Section \ref{ssec:test_nhexa_table_setup}. The modal analysis of the table is done in \ref{ssec:test_nhexa_table_identification}. -Finally, the Simscape model representing the suspended table is tuned to match the measured modes (Section \ref{ssec:test_nhexa_table_model}). +Finally, the Simscape model representing the suspended table was tuned to match the measured modes (Section \ref{ssec:test_nhexa_table_model}). \section{Experimental Setup} \label{ssec:test_nhexa_table_setup} The design of the suspended table is quite straightforward. First, an optical table with high frequency flexible mode was selected\footnote{The 450 mm x 450 mm x 60 mm Nexus B4545A from Thorlabs.}. -Then, four springs\footnote{``SZ8005 20 x 044'' from Steinel. The spring rate is specified at \(17.8\,N/mm\)} were selected with low enough spring rate such that the suspension modes are below 10Hz. +Then, four springs\footnote{``SZ8005 20 x 044'' from Steinel. The spring rate is specified at \(17.8\,N/mm\)} were selected with low spring rate such that the suspension modes are below 10Hz. Finally, some interface elements were designed, and mechanical lateral mechanical stops were added (Figure \ref{fig:test_nhexa_suspended_table_cad}). \begin{figure}[htbp] \centering \includegraphics[scale=1,width=0.7\linewidth]{figs/test_nhexa_suspended_table_cad.jpg} -\caption{\label{fig:test_nhexa_suspended_table_cad}CAD View of the vibration table. Purple cylinders are representing the soft springs.} +\caption{\label{fig:test_nhexa_suspended_table_cad}CAD View of the vibration table. The purple cylinders are representing the soft springs.} \end{figure} \section{Modal analysis of the suspended table} @@ -166,7 +165,7 @@ Finally, some interface elements were designed, and mechanical lateral mechanica In order to perform a modal analysis of the suspended table, a total of 15 3-axis accelerometers\footnote{PCB 356B18. Sensitivity is \(1\,V/g\), measurement range is \(\pm 5\,g\) and bandwidth is \(0.5\) to \(5\,\text{kHz}\).} were fixed to the breadboard. Using an instrumented hammer, the first 9 modes could be identified and are summarized in Table \ref{tab:test_nhexa_suspended_table_modes}. The first 6 modes are suspension modes (i.e. rigid body mode of the breadboard) and are located below 10Hz. -The next modes are flexible modes of the breadboard as shown in Figure \ref{fig:test_nhexa_table_flexible_modes}, and located above 700Hz. +The next modes are the flexible modes of the breadboard as shown in Figure \ref{fig:test_nhexa_table_flexible_modes}, and are located above 700Hz. \begin{minipage}[t]{0.45\linewidth} \begin{center} @@ -224,9 +223,9 @@ The next modes are flexible modes of the breadboard as shown in Figure \ref{fig: \section{Simscape Model of the suspended table} \label{ssec:test_nhexa_table_model} -The Simscape model of the suspended table simply consists of two solid bodies connected by 4 springs. -The 4 springs are here modelled with ``bushing joints'' that have stiffness and damping properties in x, y and z directions. -The 3D representation of the model is displayed in Figure \ref{fig:test_nhexa_suspended_table_simscape} where the 4 ``bushing joints'' are represented by the blue cylinders. +The Simscape model of the suspended table consists simply of two solid bodies connected by 4 springs. +The 4 springs are here modeled with ``bushing joints'' that have stiffness and damping properties in x, y, and z directions. +The 3D representation of the model is shown in Figure \ref{fig:test_nhexa_suspended_table_simscape} where the 4 ``bushing joints'' are represented by blue cylinders. \begin{figure}[htbp] \centering @@ -234,11 +233,11 @@ The 3D representation of the model is displayed in Figure \ref{fig:test_nhexa_su \caption{\label{fig:test_nhexa_suspended_table_simscape}3D representation of the simscape model} \end{figure} -The model order is 12, and it represents the 6 suspension modes. -The inertia properties of the parts are set from the geometry and material densities. +The model order is 12, which corresponds to the 6 suspension modes. +The inertia properties of the parts were determined from the geometry and material densities. The stiffness of the springs was initially set from the datasheet nominal value of \(17.8\,N/mm\) and then reduced down to \(14\,N/mm\) to better match the measured suspension modes. The stiffness of the springs in the horizontal plane is set at \(0.5\,N/mm\). -The obtained suspension modes of the simscape model are compared with the measured ones in Table \ref{tab:test_nhexa_suspended_table_simscape_modes}. +The obtained suspension modes of the Simscape model are compared with the measured modes in Table \ref{tab:test_nhexa_suspended_table_simscape_modes}. \begin{table}[htbp] \centering @@ -256,17 +255,17 @@ Simscape & 1.3 Hz & 1.8 Hz & 6.8 Hz & 9.5 Hz\\ \section*{Conclusion} In this section, a suspended table with low frequency suspension modes and high frequency flexible modes was presented. -This suspended table will be used in Section \ref{sec:test_nhexa_dynamics} for dynamical identification of the Nano-Hexapod. -The objective is to be able to accurately identify the dynamics of the nano-hexapod, isolated from complex support dynamics. -The key point of this strategy is to be able to accurately model the suspended table. +This suspended table is used in Section \ref{sec:test_nhexa_dynamics} for dynamical identification of the Nano-Hexapod. +The objective is to accurately identify the dynamics of the nano-hexapod, isolated from complex support dynamics. +The key point of this strategy was the ability to accurately model the suspended table. To do so, a modal analysis of the suspended table was performed in Section \ref{ssec:test_nhexa_table_identification}, validating the low frequency suspension modes and high frequency flexible modes. -Then, a multi-body model of this suspended table was tuned to match with the measurements (Section \ref{ssec:test_nhexa_table_model}). +Then, a multi-body model of this suspended table was tuned to match the measurements (Section \ref{ssec:test_nhexa_table_model}). \chapter{Nano-Hexapod Measured Dynamics} \label{sec:test_nhexa_dynamics} -The Nano-Hexapod is then mounted on top of the suspended table as shown in Figure \ref{fig:test_nhexa_hexa_suspended_table}. -All the instrumentation (Speedgoat with ADC, DAC, piezoelectric voltage amplifiers and digital interfaces for the encoder) are setup and connected to the nano-hexapod using many cables. +The Nano-Hexapod was then mounted on top of the suspended table, as shown in Figure \ref{fig:test_nhexa_hexa_suspended_table}. +All instrumentation (Speedgoat with ADC, DAC, piezoelectric voltage amplifiers and digital interfaces for the encoder) were configured and connected to the nano-hexapod using many cables. \begin{figure}[htbp] \centering @@ -275,23 +274,23 @@ All the instrumentation (Speedgoat with ADC, DAC, piezoelectric voltage amplifie \end{figure} A modal analysis of the nano-hexapod is first performed in Section \ref{ssec:test_nhexa_enc_struts_modal_analysis}. -It will be used to better understand the measured dynamics from actuators to sensors. +The results of the modal analysis will be useful to better understand the measured dynamics from actuators to sensors. -A block diagram schematic of the (open-loop) system is shown in Figure \ref{fig:test_nhexa_nano_hexapod_signals}. -The transfer function from controlled signals \(\mathbf{u}\) to the force sensors voltages \(\mathbf{V}_s\) and to the encoders measured displacements \(\mathbf{d}_e\) are identified in Section \ref{ssec:test_nhexa_identification}. -The effect of the payload mass on the dynamics is studied in Section \ref{ssec:test_nhexa_added_mass}. +A block diagram of the (open-loop) system is shown in Figure \ref{fig:test_nhexa_nano_hexapod_signals}. +The frequency response functions from controlled signals \(\mathbf{u}\) to the force sensors voltages \(\mathbf{V}_s\) and to the encoders measured displacements \(\mathbf{d}_e\) are experimentally identified in Section \ref{ssec:test_nhexa_identification}. +The effect of the payload mass on the dynamics is discussed in Section \ref{ssec:test_nhexa_added_mass}. \begin{figure}[htbp] \centering \includegraphics[scale=1,scale=1]{figs/test_nhexa_nano_hexapod_signals.png} -\caption{\label{fig:test_nhexa_nano_hexapod_signals}Block diagram of the system. Command signal generated by the speedgoat is \(\mathbf{u}\), the measured dignals are \(\mathbf{d}_{e}\) and \(\mathbf{V}_s\). Units are indicated in square brackets.} +\caption{\label{fig:test_nhexa_nano_hexapod_signals}Block diagram of the studied system. The command signal generated by the speedgoat is \(\mathbf{u}\), and the measured dignals are \(\mathbf{d}_{e}\) and \(\mathbf{V}_s\). Units are indicated in square brackets.} \end{figure} \section{Modal analysis} \label{ssec:test_nhexa_enc_struts_modal_analysis} -In order to ease the future analysis of the measured plant dynamics, a basic modal analysis of the nano-hexapod is performed. -Five 3-axis accelerometers are fixed on the top platform of the nano-hexapod (Figure \ref{fig:test_nhexa_modal_analysis}) and the top platform is excited using an instrumented hammer. +To facilitate the future analysis of the measured plant dynamics, a basic modal analysis of the nano-hexapod is performed. +Five 3-axis accelerometers were fixed on the top platform of the nano-hexapod (Figure \ref{fig:test_nhexa_modal_analysis}) and the top platform was excited using an instrumented hammer. \begin{figure}[htbp] \centering @@ -299,8 +298,8 @@ Five 3-axis accelerometers are fixed on the top platform of the nano-hexapod (Fi \caption{\label{fig:test_nhexa_modal_analysis}Five accelerometers fixed on top of the nano-hexapod to perform a modal analysis} \end{figure} -Between 100Hz and 200Hz, 6 suspension modes (i.e. rigid body modes of the top platform) are identified. -At around 700Hz, two flexible modes of the top plate are observed (see Figure \ref{fig:test_nhexa_hexa_flexible_modes}). +Between 100Hz and 200Hz, 6 suspension modes (i.e. rigid body modes of the top platform) were identified. +At around 700Hz, two flexible modes of the top plate were observed (see Figure \ref{fig:test_nhexa_hexa_flexible_modes}). These modes are summarized in Table \ref{tab:test_nhexa_hexa_modal_modes_list}. \begin{table}[htbp] @@ -342,48 +341,48 @@ These modes are summarized in Table \ref{tab:test_nhexa_hexa_modal_modes_list}. \section{Identification of the dynamics} \label{ssec:test_nhexa_identification} -The dynamics of the nano-hexapod from the six command signals (\(u_1\) to \(u_6\)) the six measured displacement by the encoders (\(d_{e1}\) to \(d_{e6}\)) and to the six force sensors (\(V_{s1}\) to \(V_{s6}\)) are identified by generating a low pass filtered white noise for each of the command signals, one by one. +The dynamics of the nano-hexapod from the six command signals (\(u_1\) to \(u_6\)) to the six measured displacement by the encoders (\(d_{e1}\) to \(d_{e6}\)) and to the six force sensors (\(V_{s1}\) to \(V_{s6}\)) were identified by generating low-pass filtered white noise for each command signal, one by one. The \(6 \times 6\) FRF matrix from \(\mathbf{u}\) ot \(\mathbf{d}_e\) is shown in Figure \ref{fig:test_nhexa_identified_frf_de}. -The diagonal terms are displayed using colorful lines, and all the 30 off-diagonal terms are displayed by grey lines. +The diagonal terms are displayed using colored lines, and all the 30 off-diagonal terms are displayed by gray lines. -All the six diagonal terms are well superimposed up to at least \(1\,kHz\), indicating good manufacturing and mounting uniformity. -Below the first suspension mode, good decoupling can be observed (the amplitude of the all of off-diagonal terms are \(\approx 20\) times smaller than the diagonal terms). +All six diagonal terms are well superimposed up to at least \(1\,kHz\), indicating good manufacturing and mounting uniformity. +Below the first suspension mode, good decoupling can be observed (the amplitude of all off-diagonal terms are \(\approx 20\) times smaller than the diagonal terms). From 10Hz up to 1kHz, around 10 resonance frequencies can be observed. The first 4 are suspension modes (at 122Hz, 143Hz, 165Hz and 191Hz) which correlate the modes measured during the modal analysis in Section \ref{ssec:test_nhexa_enc_struts_modal_analysis}. -Then, three modes at 237Hz, 349Hz and 395Hz are attributed to the internal strut resonances (this will be checked in Section \ref{ssec:test_nhexa_comp_model_coupling}). -Except the mode at 237Hz, their amplitude is rather low. -Two modes at 665Hz and 695Hz are attributed to the flexible modes of the top platform. +Three modes at 237Hz, 349Hz and 395Hz are attributed to the internal strut resonances (this will be checked in Section \ref{ssec:test_nhexa_comp_model_coupling}). +Except for the mode at 237Hz, their impact on the dynamics is small. +The two modes at 665Hz and 695Hz are attributed to the flexible modes of the top platform. Other modes can be observed above 1kHz, which can be attributed to flexible modes of the encoder supports or to flexible modes of the top platform. -Up to at least 1kHz, an alternating pole/zero pattern is observed, which renders the control easier to tune. -This would not have been the case if the encoders were fixed to the struts. +Up to at least 1kHz, an alternating pole/zero pattern is observed, which makes the control easier to tune. +This would not have occurred if the encoders were fixed to the struts. \begin{figure}[htbp] \centering \includegraphics[scale=1]{figs/test_nhexa_identified_frf_de.png} -\caption{\label{fig:test_nhexa_identified_frf_de}Measured FRF for the transfer function from \(\mathbf{u}\) to \(\mathbf{d}_e\). The 6 diagonal terms are the colorfull lines (all superimposed), and the 30 off-diagonal terms are the shaded black lines.} +\caption{\label{fig:test_nhexa_identified_frf_de}Measured FRF for the transfer function from \(\mathbf{u}\) to \(\mathbf{d}_e\). The 6 diagonal terms are the colored lines (all superimposed), and the 30 off-diagonal terms are the gray lines.} \end{figure} Similarly, the \(6 \times 6\) FRF matrix from \(\mathbf{u}\) to \(\mathbf{V}_s\) is shown in Figure \ref{fig:test_nhexa_identified_frf_Vs}. -Alternating poles and zeros is observed up to at least 2kHz, which is a necessary characteristics in order to apply decentralized IFF. -Similar to what was observed for the encoder outputs, all the ``diagonal'' terms are well superimposed, indicating that the same controller can be applied for all the struts. -The first flexible mode of the struts as 235Hz is appearing, and therefore is should be possible to add some damping to this mode using IFF. +Alternating poles and zeros can be observed up to at least 2kHz, which is a necessary characteristics for applying decentralized IFF. +Similar to what was observed for the encoder outputs, all the ``diagonal'' terms are well superimposed, indicating that the same controller can be applied to all the struts. +The first flexible mode of the struts as 235Hz has large amplitude, and therefore, it should be possible to add some damping to this mode using IFF. \begin{figure}[htbp] \centering \includegraphics[scale=1]{figs/test_nhexa_identified_frf_Vs.png} -\caption{\label{fig:test_nhexa_identified_frf_Vs}Measured FRF for the transfer function from \(\mathbf{u}\) to \(\mathbf{V}_s\). The 6 diagonal terms are the colorfull lines (all superimposed), and the 30 off-diagonal terms are the shaded black lines.} +\caption{\label{fig:test_nhexa_identified_frf_Vs}Measured FRF for the transfer function from \(\mathbf{u}\) to \(\mathbf{V}_s\). The 6 diagonal terms are the colored lines (all superimposed), and the 30 off-diagonal terms are the shaded black lines.} \end{figure} \section{Effect of payload mass on the dynamics} \label{ssec:test_nhexa_added_mass} -As one major challenge in the control of the NASS is the wanted robustness to change of payload mass, it is necessary to understand how the dynamics of the nano-hexapod changes with a change of payload mass. +One major challenge in the control of the NASS is the wanted robustness to a change of payload mass; therefore, it is necessary to understand how the dynamics of the nano-hexapod changes with a change in payload mass. -In order to study this change of dynamics with the payload mass, up to three ``cylindrical masses'' of \(13\,kg\) each can be added for a total of \(\approx 40\,kg\). +To study how the dynamics changes with the payload mass, up to three ``cylindrical masses'' of \(13\,kg\) each can be added for a total of \(\approx 40\,kg\). These three cylindrical masses on top of the nano-hexapod are shown in Figure \ref{fig:test_nhexa_table_mass_3}. \begin{figure}[htbp] @@ -392,21 +391,20 @@ These three cylindrical masses on top of the nano-hexapod are shown in Figure \r \caption{\label{fig:test_nhexa_table_mass_3}Picture of the nano-hexapod with the added three cylindrical masses for a total of \(\approx 40\,kg\)} \end{figure} -The identified dynamics are then saved for further use. The obtained frequency response functions from actuator signal \(u_i\) to the associated encoder \(d_{ei}\) for the four payload conditions (no mass, 13kg, 26kg and 39kg) are shown in Figure \ref{fig:test_nhexa_identified_frf_de_masses}. -As expected, the frequency of the suspension modes are decreasing with an increase of the payload mass. -The low frequency gain does not change as it is linked to the stiffness property of the nano-hexapod, and not to its mass property. +As expected, the frequency of the suspension modes decreased with increasing payload mass. +The low frequency gain does not change because it is linked to the stiffness property of the nano-hexapod and not to its mass property. -The frequencies of the two flexible modes of the top plate are first decreased a lot when the first mass is added (from \(\approx 700\,Hz\) to \(\approx 400\,Hz\)). -This is due to the fact that the added mass is composed of two half cylinders which are not fixed together. -It therefore adds a lot of mass to the top plate without adding stiffness in one direction. -When more than one ``mass layer'' is added, the half cylinders are added with some angles such that rigidity are added in all directions (see how the three mass ``layers'' are positioned in Figure \ref{fig:test_nhexa_table_mass_3}). -In that case, the frequency of these flexible modes are increased. -In practice, the payload should be one solid body, and no decrease of the frequency of this flexible mode should be observed. -The apparent amplitude of the flexible mode of the strut at 237Hz becomes smaller as the payload mass is increased. +The frequencies of the two flexible modes of the top plate first decreased significantly when the first mass was added (from \(\approx 700\,Hz\) to \(\approx 400\,Hz\)). +This is because the added mass is composed of two half cylinders that are not fixed together. +Therefore, it adds a lot of mass to the top plate without increasing stiffness in one direction. +When more than one ``mass layer'' is added, the half cylinders are added at some angles such that rigidity is added in all directions (see how the three mass ``layers'' are positioned in Figure \ref{fig:test_nhexa_table_mass_3}). +In this case, the frequency of these flexible modes is increased. +In practice, the payload should be one solid body, and no decrease in the frequency of this flexible mode should be observed. +The apparent amplitude of the flexible mode of the strut at 237Hz becomes smaller as the payload mass increased. -The measured FRF from \(u_i\) to \(V_{si}\) are shown in Figure \ref{fig:test_nhexa_identified_frf_Vs_masses}. -For all the tested payloads, the measured FRF always have alternating poles and zeros, indicating that IFF can be applied in a robust way. +The measured FRFs from \(u_i\) to \(V_{si}\) are shown in Figure \ref{fig:test_nhexa_identified_frf_Vs_masses}. +For all tested payloads, the measured FRF always have alternating poles and zeros, indicating that IFF can be applied in a robust manner. \begin{figure}[htbp] \begin{subfigure}{0.49\textwidth} @@ -428,20 +426,19 @@ For all the tested payloads, the measured FRF always have alternating poles and After the Nano-Hexapod was fixed on top of the suspended table, its dynamics was identified. The frequency response functions from the six DAC voltages \(\mathbf{u}\) to the six encoders measured displacements \(\mathbf{d}_e\) displays alternating complex conjugate poles and complex conjugate zeros up to at least 1kHz. -At low frequency, the coupling is small, indicating correct assembly of all parts. -This should enables the design of a decentralized positioning controller based on the encoder for relative positioning purposes. -The suspension modes and flexible modes measured during the modal analysis (Section \ref{ssec:test_nhexa_enc_struts_modal_analysis}) are also observed in the dynamics. -Lot's of other modes are present above 700Hz, which will inevitably limit the achievable bandwidth. -The observed effect of the payload's mass on the dynamics is quite large, which also represent a complex control challenge. +At low frequencies, the coupling is small, indicating the correct assembly of all parts. +This should enable the design of a decentralized positioning controller based on the encoders for relative positioning purposes. +The suspension and flexible modes measured during the modal analysis (Section \ref{ssec:test_nhexa_enc_struts_modal_analysis}) are also observed in the dynamics. +Many other modes are present above 700Hz, which will inevitably limit the achievable bandwidth. +The observed effect of the payload's mass on the dynamics was quite large, which also represents a complex control challenge. -The frequency response functions from the six DAC voltages \(\mathbf{u}\) to the six force sensors voltages \(\mathbf{V}_s\) all have alternating complex conjugate poles and complex conjugate zeros. -This indicates that it should be possible to implement decentralized Integral Force Feedback in a robust way. -This alternating property holds for all the tested payloads. +The frequency response functions from the six DAC voltages \(\mathbf{u}\) to the six force sensors voltages \(\mathbf{V}_s\) all have alternating complex conjugate poles and complex conjugate zeros for all the tested payloads. +This indicates that it is possible to implement decentralized Integral Force Feedback in a robust manner. \chapter{Nano-Hexapod Model Dynamics} \label{sec:test_nhexa_model} -In this section, the measured dynamics done in Section \ref{sec:test_nhexa_dynamics} is compared with the dynamics estimated from the Simscape model. -The nano-hexapod simscape model is therefore added on top of the vibration table Simscape model as shown in Figure \ref{fig:test_nhexa_hexa_simscape}. +In this section, the dynamics measured in Section \ref{sec:test_nhexa_dynamics} is compared with those estimated from the Simscape model. +The nano-hexapod simscape model was therefore added on top of the vibration table Simscape model, as shown in Figure \ref{fig:test_nhexa_hexa_simscape}. \begin{figure}[htbp] \centering @@ -450,7 +447,7 @@ The nano-hexapod simscape model is therefore added on top of the vibration table \end{figure} The model should exhibit certain characteristics that are verified in this section. -First, it should match the measured system dynamics from actuators to sensors that were presented in Section \ref{sec:test_nhexa_dynamics}. +First, it should match the measured system dynamics from actuators to sensors presented in Section \ref{sec:test_nhexa_dynamics}. Both the ``direct'' terms (Section \ref{ssec:test_nhexa_comp_model}) and ``coupling'' terms (Section \ref{ssec:test_nhexa_comp_model_coupling}) of the Simscape model are compared with the measured dynamics. Second, it should also represents how the system dynamics changes when a payload is fixed to the top platform. This is checked in Section \ref{ssec:test_nhexa_comp_model_masses}. @@ -458,16 +455,16 @@ This is checked in Section \ref{ssec:test_nhexa_comp_model_masses}. \section{Nano-Hexapod model dynamics} \label{ssec:test_nhexa_comp_model} -The Simscape model of the nano-hexapod is first configured with 4-DoF flexible joints, 2-DoF APA and rigid top and bottom platforms. -The stiffness of the flexible joints are chosen based on the values estimated using the test bench and based on FEM. -The parameters of the APA model are the ones determined from the test bench of the APA. -The \(6 \times 6\) transfer function matrices from \(\mathbf{u}\) to \(\mathbf{d}_e\) and from \(\mathbf{u}\) to \(\mathbf{V}_s\) are extracted then from the Simscape model. +The Simscape model of the nano-hexapod was first configured with 4-DoF flexible joints, 2-DoF APA, and rigid top and bottom plates. +The stiffness values of the flexible joints were chosen based on the values estimated using the test bench and on the FEM. +The parameters of the APA model were determined from the test bench of the APA. +The \(6 \times 6\) transfer function matrices from \(\mathbf{u}\) to \(\mathbf{d}_e\) and from \(\mathbf{u}\) to \(\mathbf{V}_s\) are then extracted from the Simscape model. -A first feature that should be checked is that the model well represents the ``direct'' terms of the measured FRF matrix. +First, is it evaluated how well the models matches the ``direct'' terms of the measured FRF matrix. To do so, the diagonal terms of the extracted transfer function matrices are compared with the measured FRF in Figure \ref{fig:test_nhexa_comp_simscape_diag}. -It can be seen that the 4 suspension modes of the nano-hexapod (at 122Hz, 143Hz, 165Hz and 191Hz) are well modelled. -The three resonances that were attributed to ``internal'' flexible modes of the struts (at 237Hz, 349Hz and 395Hz) cannot be seen in the model, which is reasonable as the APA are here modelled as a simple uniaxial 2-DoF system. -At higher frequencies, no resonances can be seen in the model, as the as the top plate and the encoder supports are modelled as rigid bodies. +It can be seen that the 4 suspension modes of the nano-hexapod (at 122Hz, 143Hz, 165Hz and 191Hz) are well modeled. +The three resonances that were attributed to ``internal'' flexible modes of the struts (at 237Hz, 349Hz and 395Hz) cannot be seen in the model, which is reasonable because the APAs are here modeled as a simple uniaxial 2-DoF system. +At higher frequencies, no resonances can be observed in the model, as the top plate and the encoder supports are modeled as rigid bodies. \begin{figure}[htbp] \begin{subfigure}{0.49\textwidth} @@ -482,46 +479,46 @@ At higher frequencies, no resonances can be seen in the model, as the as the top \end{center} \subcaption{\label{fig:test_nhexa_comp_simscape_Vs_diag}from $u$ to $V_s$} \end{subfigure} -\caption{\label{fig:test_nhexa_comp_simscape_diag}Comparison of the diagonal elements (i.e. ``direct'' terms) of the measured FRF matrix and the identified dynamics from the Simscape model. Both for the dynamics from \(u\) to \(d_e\) (\subref{fig:test_nhexa_comp_simscape_de_diag}) and from \(u\) to \(V_s\) (\subref{fig:test_nhexa_comp_simscape_Vs_diag})} +\caption{\label{fig:test_nhexa_comp_simscape_diag}Comparison of the diagonal elements (i.e. ``direct'' terms) of the measured FRF matrix and the dynamics identified from the Simscape model. Both for the dynamics from \(u\) to \(d_e\) (\subref{fig:test_nhexa_comp_simscape_de_diag}) and from \(u\) to \(V_s\) (\subref{fig:test_nhexa_comp_simscape_Vs_diag})} \end{figure} -\section{Modelling dynamical coupling} +\section{Modeling dynamical coupling} \label{ssec:test_nhexa_comp_model_coupling} -Another wanted feature of the model is that it well represents the coupling in the system as this is often the limiting factor for the control of MIMO systems. +Another desired feature of the model is that it effectively represents coupling in the system, as this is often the limiting factor for the control of MIMO systems. Instead of comparing the full 36 elements of the \(6 \times 6\) FFR matrix from \(\mathbf{u}\) to \(\mathbf{d}_e\), only the first ``column'' is compared (Figure \ref{fig:test_nhexa_comp_simscape_de_all}), which corresponds to the transfer function from the command \(u_1\) to the six measured encoder displacements \(d_{e1}\) to \(d_{e6}\). -It can be seen that the coupling in the model is well matching the measurements up to the first un-modelled flexible mode at 237Hz. -Similar results are observed for all the other coupling terms, as well as for the transfer function from \(\mathbf{u}\) to \(\mathbf{V}_s\). +It can be seen that the coupling in the model matches the measurements well up to the first un-modeled flexible mode at 237Hz. +Similar results are observed for all other coupling terms and for the transfer function from \(\mathbf{u}\) to \(\mathbf{V}_s\). \begin{figure}[htbp] \centering \includegraphics[scale=1]{figs/test_nhexa_comp_simscape_de_all.png} -\caption{\label{fig:test_nhexa_comp_simscape_de_all}Comparison of the measured (in blue) and modelled (in red) frequency transfer functions from the first control signal \(u_1\) to the six encoders \(d_{e1}\) to \(d_{e6}\)} +\caption{\label{fig:test_nhexa_comp_simscape_de_all}Comparison of the measured (in blue) and modeled (in red) frequency transfer functions from the first control signal \(u_1\) to the six encoders \(d_{e1}\) to \(d_{e6}\)} \end{figure} -The APA300ML are then modelled with a \emph{super-element} extracted from a FE-software. +The APA300ML was then modeled with a \emph{super-element} extracted from a FE-software. The obtained transfer functions from \(u_1\) to the six measured encoder displacements \(d_{e1}\) to \(d_{e6}\) are compared with the measured FRF in Figure \ref{fig:test_nhexa_comp_simscape_de_all_flex}. -While the damping of the suspension modes for the \emph{super-element} is underestimated (which could be solved by properly tuning the proportional damping coefficients), the flexible modes of the struts at 237Hz and 349Hz are well modelled. +While the damping of the suspension modes for the \emph{super-element} is underestimated (which could be solved by properly tuning the proportional damping coefficients), the flexible modes of the struts at 237Hz and 349Hz are well modeled. Even the mode 395Hz can be observed in the model. -Therefore, if the modes of the struts are to be modelled, the \emph{super-element} of the APA300ML may be used, at the cost of obtaining a much higher order model. +Therefore, if the modes of the struts are to be modeled, the \emph{super-element} of the APA300ML can be used at the cost of obtaining a much higher order model. \begin{figure}[htbp] \centering \includegraphics[scale=1]{figs/test_nhexa_comp_simscape_de_all_flex.png} -\caption{\label{fig:test_nhexa_comp_simscape_de_all_flex}Comparison of the measured (in blue) and modelled (in red) frequency transfer functions from the first control signal \(u_1\) to the six encoders \(d_{e1}\) to \(d_{e6}\)} +\caption{\label{fig:test_nhexa_comp_simscape_de_all_flex}Comparison of the measured (in blue) and modeled (in red) frequency transfer functions from the first control signal \(u_1\) to the six encoders \(d_{e1}\) to \(d_{e6}\)} \end{figure} -\section{Modelling the effect of payload mass} +\section{Modeling the effect of payload mass} \label{ssec:test_nhexa_comp_model_masses} -Another important characteristics of the model is that it should well represents the dynamics of the system for all considered payloads. +Another important characteristic of the model is that it should represents the dynamics of the system well for all considered payloads. The model dynamics is therefore compared with the measured dynamics for 4 payloads (no payload, 13kg, 26kg and 39kg) in Figure \ref{fig:test_nhexa_comp_simscape_diag_masses}. -The observed shift to lower frequency of the suspension modes with an increased payload mass is well represented by the Simscape model. -The complex conjugate zeros are also well matching with the experiments both for the encoder outputs (Figure \ref{fig:test_nhexa_comp_simscape_de_diag_masses}) and the force sensor outputs (Figure \ref{fig:test_nhexa_comp_simscape_Vs_diag_masses}). +The observed shift of the suspension modes to lower frequencies with increased payload mass is well represented by the Simscape model. +The complex conjugate zeros also well match the experiments both for the encoder outputs (Figure \ref{fig:test_nhexa_comp_simscape_de_diag_masses}) and the force sensor outputs (Figure \ref{fig:test_nhexa_comp_simscape_Vs_diag_masses}). -Note that the model displays smaller damping that what is observed experimentally for high values of the payload mass. +Note that the model displays smaller damping than that observed experimentally for high values of the payload mass. One option could be to tune the damping as a function of the mass (similar to what is done with the Rayleigh damping). -However, as decentralized IFF will be applied, the damping will be brought actively, and the open-loop damping value should have very little impact on the obtained plant. +However, as decentralized IFF will be applied, the damping is actively brought, and the open-loop damping value should have very little impact on the obtained plant dynamics. \begin{figure}[htbp] \begin{subfigure}{0.49\textwidth} @@ -536,40 +533,40 @@ However, as decentralized IFF will be applied, the damping will be brought activ \end{center} \subcaption{\label{fig:test_nhexa_comp_simscape_Vs_diag_masses}from $u$ to $V_s$} \end{subfigure} -\caption{\label{fig:test_nhexa_comp_simscape_diag_masses}Comparison of the diagonal elements (i.e. ``direct'' terms) of the measured FRF matrix and the identified dynamics from the Simscape model. Both for the dynamics from \(u\) to \(d_e\) (\subref{fig:test_nhexa_comp_simscape_de_diag}) and from \(u\) to \(V_s\) (\subref{fig:test_nhexa_comp_simscape_Vs_diag})} +\caption{\label{fig:test_nhexa_comp_simscape_diag_masses}Comparison of the diagonal elements (i.e. ``direct'' terms) of the measured FRF matrix and the dynamics identified from the Simscape model. Both for the dynamics from \(u\) to \(d_e\) (\subref{fig:test_nhexa_comp_simscape_de_diag}) and from \(u\) to \(V_s\) (\subref{fig:test_nhexa_comp_simscape_Vs_diag})} \end{figure} In order to also check if the model well represents the coupling when high payload masses are used, the transfer functions from \(u_1\) to \(d_{e1}\) to \(d_{e6}\) are compared in the case of the 39kg payload in Figure \ref{fig:test_nhexa_comp_simscape_de_all_high_mass}. -Excellent match between the experimental coupling and the model coupling is observed. -The model therefore well represents the system dynamical coupling for different considered payloads. +Excellent match between experimental and model coupling is observed. +Therefore, the model effectively represents the system coupling for different payloads. \begin{figure}[htbp] \centering \includegraphics[scale=1]{figs/test_nhexa_comp_simscape_de_all_high_mass.png} -\caption{\label{fig:test_nhexa_comp_simscape_de_all_high_mass}Comparison of the measured (in blue) and modelled (in red) frequency transfer functions from the first control signal \(u_1\) to the six encoders \(d_{e1}\) to \(d_{e6}\)} +\caption{\label{fig:test_nhexa_comp_simscape_de_all_high_mass}Comparison of the measured (in blue) and modeled (in red) frequency transfer functions from the first control signal \(u_1\) to the six encoders \(d_{e1}\) to \(d_{e6}\)} \end{figure} \section*{Conclusion} As illustrated in this section, the developed Simscape model accurately represents the suspension modes of the Nano-Hexapod. Both FRF matrices from \(\mathbf{u}\) to \(\mathbf{V}_s\) and from \(\mathbf{u}\) to \(\mathbf{d}_e\) are well matching with the measurements, even when considering coupling (i.e. off-diagonal) terms, which are very important from a control perspective. -At frequency above the suspension modes, the Nano-Hexapod model becomes inaccurate as the flexible modes are not modelled. -It was shown that modelling the APA300ML using a ``super-element'' allows to model the internal resonances of the struts. -The same could be done with the top platform and the encoder supports, but the model order would be higher and may become unpractical for simulation purposes. +At frequencies above the suspension modes, the Nano-Hexapod model became inaccurate because the flexible modes were not modeled. +It was found that modeling the APA300ML using a ``super-element'' allows to model the internal resonances of the struts. +The same can be done with the top platform and the encoder supports; however, the model order would be higher and may become unpractical for simulation. \chapter{Conclusion} -The goal of this test bench was to obtain an accurate model of the nano-hexapod that can then be included on top of the micro-station model. +The goal of this test bench was to obtain an accurate model of the nano-hexapod that could then be included on top of the micro-station model. -This strategy was to measure the nano-hexapod in conditions where all factors that could have impacted the nano-hexapod dynamics were taken into account. -This was done by developing a suspended table with low frequency suspension modes which can be accurately modelled. +This strategy was to identify the nano-hexapod dynamics under conditions in which all factors that could have affected the nano-hexapod dynamics were considered. +This was achieved by developing a suspended table with low frequency suspension modes that can be accurately modeled. -While the dynamics of the nano-hexapod was indeed impacted by the dynamics of the suspended platform, this impact was also taken into account in the Simscape model, and a good match was obtained. +Although the dynamics of the nano-hexapod was indeed impacted by the dynamics of the suspended platform, this impact was also considered in the Simscape model, and a good match was obtained. -Obtaining a model accurately representing the complex dynamics of the Nano-Hexapod was made possible by the modelling approach used during this work. -This approach consisted of tuning and validating models of individual components (such as the APA and flexible joints) using dedicated test benches. -Only then, the different models could be combined to form the Nano-Hexapod dynamical model. -If a model of the nano-hexapod was developed in one time, it would be difficult to tune all model parameters to match the measured dynamics, or even to know if the model ``structure'' would be adequate to represents the system dynamics. +Obtaining a model that accurately represents the complex dynamics of the Nano-Hexapod was made possible by the modeling approach used in this study. +This approach involved tuning and validating models of individual components (such as the APA and flexible joints) using dedicated test benches. +The different models could then be combined to form the Nano-Hexapod dynamical model. +If a model of the nano-hexapod was developed in one time, it would be difficult to tune all the model parameters to match the measured dynamics, or even to know if the model ``structure'' would be adequate to represent the system dynamics. \printbibliography[heading=bibintoc,title={Bibliography}]