Finish exporting all the matlab figures
This commit is contained in:
parent
06b8db47f9
commit
741aab6dc7
BIN
figs/test_struts_comp_enc_frf_realign.pdf
Normal file
BIN
figs/test_struts_comp_enc_frf_realign.pdf
Normal file
Binary file not shown.
BIN
figs/test_struts_comp_enc_frf_realign.png
Normal file
BIN
figs/test_struts_comp_enc_frf_realign.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 176 KiB |
BIN
figs/test_struts_effect_flex_axial_stiffness_enc.pdf
Normal file
BIN
figs/test_struts_effect_flex_axial_stiffness_enc.pdf
Normal file
Binary file not shown.
BIN
figs/test_struts_effect_flex_axial_stiffness_enc.png
Normal file
BIN
figs/test_struts_effect_flex_axial_stiffness_enc.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 112 KiB |
BIN
figs/test_struts_effect_flex_bending_stiffness_enc.pdf
Normal file
BIN
figs/test_struts_effect_flex_bending_stiffness_enc.pdf
Normal file
Binary file not shown.
BIN
figs/test_struts_effect_flex_bending_stiffness_enc.png
Normal file
BIN
figs/test_struts_effect_flex_bending_stiffness_enc.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 96 KiB |
@ -11,8 +11,8 @@ addpath('./src/'); % Path for functions
|
||||
%% Colors for the figures
|
||||
colors = colororder;
|
||||
|
||||
% Without Encoder
|
||||
% When the encoder is not fixed to the strut, the obtained FRF are shown in Figure ref:fig:test_struts_spur_res_frf.
|
||||
% Measured results
|
||||
% The obtained frequency response functions are shown in Figure ref:fig:test_struts_spur_res_frf.
|
||||
|
||||
|
||||
%% Load Data (without the encoder)
|
||||
@ -20,6 +20,11 @@ bending_X = load('strut_spur_res_x_bending.mat');
|
||||
bending_Y = load('strut_spur_res_y_bending.mat');
|
||||
torsion_Z = load('strut_spur_res_z_torsion.mat');
|
||||
|
||||
%% Load Data (with the encoder)
|
||||
bending_X_enc = load('strut_spur_res_x_bending_enc.mat');
|
||||
bending_Y_enc = load('strut_spur_res_y_bending_enc.mat');
|
||||
torsion_Z_enc = load('strut_spur_res_z_torsion_enc.mat');
|
||||
|
||||
%% Plot the responses (without the encoder)
|
||||
figure;
|
||||
hold on;
|
||||
@ -30,23 +35,15 @@ plot(bending_Y.FFT1_AvSpc_1_RMS_X_Val, bending_Y.FFT1_AvSpc_1_RMS_Y_Val, ...
|
||||
plot(torsion_Z.FFT1_AvSpc_1_RMS_X_Val, torsion_Z.FFT1_AvSpc_1_RMS_Y_Val, ...
|
||||
'DisplayName', 'Z-torsion');
|
||||
text(226, 1.5e-4,{'226Hz'}, 'VerticalAlignment', 'bottom','HorizontalAlignment','center')
|
||||
text(337, 6e-5,{'337Hz'}, 'VerticalAlignment', 'bottom','HorizontalAlignment','center')
|
||||
text(310, 6e-5,{'337Hz'}, 'VerticalAlignment', 'bottom','HorizontalAlignment','center')
|
||||
text(398, 1.5e-4,{'398Hz'}, 'VerticalAlignment', 'bottom','HorizontalAlignment','center')
|
||||
hold off;
|
||||
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('Amplitude');
|
||||
xlim([50, 8e2]); ylim([5e-7, 3e-4])
|
||||
legend('location', 'northwest');
|
||||
legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1);
|
||||
|
||||
% With Encoder
|
||||
% Then, one encoder is fixed to the strut and the FRF are measured again and shown in Figure ref:fig:test_struts_spur_res_frf_enc.
|
||||
|
||||
%% Load Data (with the encoder)
|
||||
bending_X_enc = load('strut_spur_res_x_bending_enc.mat');
|
||||
bending_Y_enc = load('strut_spur_res_y_bending_enc.mat');
|
||||
torsion_Z_enc = load('strut_spur_res_z_torsion_enc.mat');
|
||||
|
||||
%% Plot the responses (with the encoder)
|
||||
%% Plot the responses (with the encoder)
|
||||
figure;
|
||||
hold on;
|
||||
plot(bending_X_enc.FFT1_AvSpc_1_RMS_X_Val, bending_X_enc.FFT1_AvSpc_1_RMS_Y_Val, ...
|
||||
@ -61,5 +58,5 @@ text(381, 1e-4,{'381Hz'}, 'VerticalAlignment', 'bottom','HorizontalAlignment','c
|
||||
hold off;
|
||||
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('Amplitude');
|
||||
xlim([50, 8e2]); ylim([5e-7, 2e-4])
|
||||
legend('location', 'northwest');
|
||||
xlim([50, 8e2]); ylim([5e-7, 3e-4])
|
||||
legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1);
|
||||
|
@ -12,6 +12,8 @@ addpath('./src/'); % Path for functions
|
||||
colors = colororder;
|
||||
|
||||
% Effect of the Encoder on the measured dynamics
|
||||
% <<ssec:test_struts_effect_encoder>>
|
||||
|
||||
|
||||
%% Parameters for Frequency Analysis
|
||||
Ts = 1e-4; % Sampling Time [s]
|
||||
@ -61,18 +63,18 @@ enc_frf = [frf_sweep(i_lf); frf_noise_hf(i_hf)]; % Combine the FRF
|
||||
|
||||
|
||||
|
||||
% Figure ref:fig:test_struts_effect_encoder_int
|
||||
% Same goes for the transfer function from excitation voltage $u$ to the axial motion of the strut $d_a$ as measured by the interferometer ().
|
||||
|
||||
% #+begin_important
|
||||
% The transfer function from the excitation voltage $u$ to the generated voltage $V_s$ by the sensor stack is not influence by the fixation of the encoder.
|
||||
% The transfer function from the excitation voltage $u$ to the generated voltage $V_s$ by the sensor stack is not influence by the fixation of the encoder (Figure ref:fig:test_struts_effect_encoder_iff).
|
||||
% This means that the IFF control strategy should be as effective whether or not the encoders are fixed to the struts.
|
||||
% #+end_important
|
||||
|
||||
|
||||
%% Plot the FRF from u to da with and without the encoder
|
||||
figure;
|
||||
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
|
||||
|
||||
ax1 = nexttile([2,1]);
|
||||
ax1 = nexttile([]);
|
||||
hold on;
|
||||
plot(f, abs(int_with_enc_frf), '-', 'DisplayName', 'With encoder');
|
||||
plot(f, abs(int_frf), '-', 'DisplayName', 'Without encoder');
|
||||
@ -81,7 +83,7 @@ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude $d_a/u$ [m/V]'); set(gca, 'XTickLabel',[]);
|
||||
hold off;
|
||||
ylim([1e-7, 1e-3]);
|
||||
legend('location', 'northeast')
|
||||
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1);
|
||||
|
||||
ax2 = nexttile;
|
||||
hold on;
|
||||
@ -108,7 +110,7 @@ hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude $V_s/u$ [V/V]'); set(gca, 'XTickLabel',[]);
|
||||
hold off;
|
||||
legend('location', 'northeast', 'FontSize', 8);
|
||||
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1);
|
||||
ylim([1e-2, 1e2]);
|
||||
|
||||
ax2 = nexttile;
|
||||
@ -125,6 +127,21 @@ linkaxes([ax1,ax2],'x');
|
||||
xlim([10, 2e3]);
|
||||
|
||||
% Comparison of the encoder and interferometer
|
||||
% <<ssec:test_struts_comp_enc_int>>
|
||||
|
||||
% The dynamics as measured by the encoder and by the interferometers are compared in Figure ref:fig:test_struts_comp_enc_int.
|
||||
|
||||
% The dynamics from the excitation voltage $u$ to the measured displacement by the encoder $d_e$ presents much more complicated behavior than the transfer function to the displacement as measured by the Interferometer (compared in Figure ref:fig:test_struts_comp_enc_int).
|
||||
% It will be further investigated why the two dynamics as so different and what are causing all these resonances.
|
||||
|
||||
% As shown in Figure ref:fig:test_struts_comp_enc_int, we can clearly see three spurious resonances at 197Hz, 290Hz and 376Hz.
|
||||
% These resonances correspond to parasitic resonances of the strut itself that was estimated using a finite element model of the strut (Figure ref:fig:test_struts_mode_shapes):
|
||||
% - Mode in X-bending at 189Hz
|
||||
% - Mode in Y-bending at 285Hz
|
||||
% - Mode in Z-torsion at 400Hz
|
||||
|
||||
% The good news is that these resonances are not seen on the interferometer (they are therefore not impacting the axial motion of the strut).
|
||||
% But these resonances are making the use of encoder fixed to the strut difficult.
|
||||
|
||||
|
||||
figure;
|
||||
@ -159,7 +176,7 @@ linkaxes([ax1,ax2],'x');
|
||||
xlim([10, 2e3]);
|
||||
|
||||
% Comparison of all the Struts
|
||||
% <<ssec:test_struts_meas_all_struts>>
|
||||
% <<ssec:test_struts_comp_all_struts>>
|
||||
|
||||
|
||||
%% Numbers of the measured legs
|
||||
@ -275,6 +292,7 @@ xlim([10, 2e3]);
|
||||
|
||||
% #+name: fig:test_struts_comp_plants
|
||||
% #+caption: Comparison of the measured plants
|
||||
% #+attr_latex: :options [htbp]
|
||||
% #+begin_figure
|
||||
% #+attr_latex: :caption \subcaption{\label{fig:test_struts_comp_interf_plants}$u$ to $d_a$}
|
||||
% #+attr_latex: :options {0.49\textwidth}
|
||||
@ -290,6 +308,12 @@ xlim([10, 2e3]);
|
||||
% #+end_subfigure
|
||||
% #+end_figure
|
||||
|
||||
% There is a very large variability of the dynamics as measured by the encoder as shown in Figure ref:fig:test_struts_comp_enc_plants.
|
||||
% Even-though the same peaks are seen for all of the struts (95Hz, 200Hz, 300Hz, 400Hz), the amplitude of the peaks are not the same.
|
||||
% Moreover, the location or even the presence of complex conjugate zeros is changing from one strut to the other.
|
||||
|
||||
% All of this will be studied in Section ref:sec:test_struts_simscape using the Simscape model.
|
||||
|
||||
|
||||
%% Bode plot of the FRF from u to de
|
||||
figure;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -591,7 +591,7 @@ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude $d_a/u$ [m/V]'); set(gca, 'XTickLabel',[]);
|
||||
hold off;
|
||||
ylim([1e-7, 1e-3]);
|
||||
legend('location', 'northeast')
|
||||
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1);
|
||||
|
||||
ax2 = nexttile;
|
||||
hold on;
|
||||
@ -624,7 +624,7 @@ hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude $V_s/u$ [V/V]'); set(gca, 'XTickLabel',[]);
|
||||
hold off;
|
||||
legend('location', 'northeast', 'FontSize', 8);
|
||||
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1);
|
||||
ylim([1e-2, 1e2]);
|
||||
|
||||
ax2 = nexttile;
|
||||
@ -1501,7 +1501,7 @@ plot(freqs, abs(squeeze(freqresp(Gs_xy_align{1}('de', 'u'), freqs, 'Hz'))), ...
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('Amplitude [m/V]');
|
||||
leg = legend('location', 'southwest', 'FontSize', 8);
|
||||
leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1);
|
||||
leg.ItemTokenSize(1) = 15;
|
||||
title('Strut 1');
|
||||
xticks([1e1, 1e2, 1e3]);
|
||||
@ -1516,7 +1516,7 @@ plot(freqs, abs(squeeze(freqresp(Gs_xy_align{2}('de', 'u'), freqs, 'Hz'))), ...
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]);
|
||||
leg = legend('location', 'southwest', 'FontSize', 8);
|
||||
leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1);
|
||||
leg.ItemTokenSize(1) = 15;
|
||||
title('Strut 2');
|
||||
xticks([1e1, 1e2, 1e3]);
|
||||
@ -1531,7 +1531,7 @@ plot(freqs, abs(squeeze(freqresp(Gs_xy_align{3}('de', 'u'), freqs, 'Hz'))), ...
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]);
|
||||
leg = legend('location', 'southwest', 'FontSize', 8);
|
||||
leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1);
|
||||
leg.ItemTokenSize(1) = 15;
|
||||
title('Strut 3');
|
||||
xticks([1e1, 1e2, 1e3]);
|
||||
@ -1552,135 +1552,89 @@ exportFig('figs/test_struts_comp_dy_tuned_model_frf_enc.pdf', 'width', 'full', '
|
||||
** Proper struts alignment
|
||||
<<sec:test_struts_meas_all_aligned_struts>>
|
||||
|
||||
The struts are re-aligned and measured using the same test bench.
|
||||
After the positioning pins had been received, the struts were mounted again with the positioning pins.
|
||||
This should make the APA better aligned with the two flexible joints.
|
||||
|
||||
The misalignment between the APA and the flexible joints are measured.
|
||||
|
||||
The results are defined below and summarized in Table ref:tab:meas_misalignment_struts_new_raw.
|
||||
This alignment is then estimated using a length gauge as in the previous sections.
|
||||
Measured $y$ alignments are summarized in Table ref:tab:test_struts_meas_y_misalignment_with_pin and are found to be bellow $55\mu m$ for all the struts which is much better than better (see Table ref:tab:test_struts_meas_y_misalignment).
|
||||
|
||||
#+begin_src matlab
|
||||
% R Top B Top R Bot B Bot
|
||||
%% Measurement of the y misalignment between the APA and the flexible joints after strut better alignment
|
||||
|
||||
% Numbers of the measured legs
|
||||
strut_align_nums = [1 2 3 4 5 6];
|
||||
|
||||
% Measured height differences in [mm]
|
||||
% R ("red" side), B ("black" side)
|
||||
% R Top B Top R Bot B Bot
|
||||
strut_align = [[-0.54, -0.50, -0.50, -0.52] % strut 1
|
||||
[-0.44, -0.55, -0.49, -0.49] % strut 2
|
||||
[-0.48, -0.50, -0.50, -0.46] % strut 3
|
||||
[-0.45, -0.51, -0.51, -0.45] % strut 4
|
||||
[-0.50, -0.50, -0.50, -0.50] % strut 5
|
||||
[-0.50, -0.49, -0.43, -0.54]]; % strut 6
|
||||
|
||||
% Verification that the thickness difference between the APA shell and the flexible joints is 1mm
|
||||
thichness_diff_top = strut_align(:,1) + strut_align(:,2); % [mm]
|
||||
thichness_diff_bot = strut_align(:,1) + strut_align(:,2); % [mm]
|
||||
|
||||
% Estimation of the dy misalignment
|
||||
dy_bot = (strut_align(:,1) - strut_align(:,2))/2; % [mm]
|
||||
dy_top = (strut_align(:,3) - strut_align(:,4))/2; % [mm]
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
|
||||
data2orgtable(strut_align, {'1', '2', '3', '4', '5', '6'}, {'*Strut*', '*R Top*', '*B Top*', '*R Bot*', '*B Bot*'}, ' %.2f ');
|
||||
data2orgtable([dy_bot, dy_top] , {'1', '2', '3', '4', '5', '6'}, {'*Strut*', '*Bot*', '*Top*'}, ' %.3f ');
|
||||
#+end_src
|
||||
|
||||
#+name: tab:meas_misalignment_struts_new_raw
|
||||
#+caption: Measured misalignment of the struts (=R= means "red" side, and =B= means "black side") in [mm]
|
||||
#+attr_latex: :environment tabularx :width 0.45\linewidth :align cllll
|
||||
#+attr_latex: :center t :booktabs t :float t
|
||||
#+name: tab:test_struts_meas_y_misalignment_with_pin
|
||||
#+caption: Measured $y$ misalignment at the top and bottom of the APA after realigning the struts using a positioning pin. Measurements are in $mm$.
|
||||
#+attr_latex: :environment tabularx :width 0.25\linewidth :align ccc
|
||||
#+attr_latex: :center t :booktabs t
|
||||
#+RESULTS:
|
||||
| *Strut* | *R Top* | *B Top* | *R Bot* | *B Bot* |
|
||||
|---------+---------+---------+---------+---------|
|
||||
| 1 | -0.54 | -0.5 | -0.5 | -0.52 |
|
||||
| 2 | -0.44 | -0.55 | -0.49 | -0.49 |
|
||||
| 3 | -0.48 | -0.5 | -0.5 | -0.46 |
|
||||
| 4 | -0.45 | -0.51 | -0.51 | -0.45 |
|
||||
| 5 | -0.5 | -0.5 | -0.5 | -0.5 |
|
||||
| 6 | -0.5 | -0.49 | -0.43 | -0.54 |
|
||||
| *Strut* | *Bot* | *Top* |
|
||||
|---------+--------+-------|
|
||||
| 1 | -0.02 | 0.01 |
|
||||
| 2 | 0.055 | 0.0 |
|
||||
| 3 | 0.01 | -0.02 |
|
||||
| 4 | 0.03 | -0.03 |
|
||||
| 5 | 0.0 | 0.0 |
|
||||
| 6 | -0.005 | 0.055 |
|
||||
|
||||
Also, the sum of the measured distances on each side should be 1mm (equal to the thickness difference between the flexible joint and the APA).
|
||||
This is verified in Table ref:tab:meas_misalignment_struts_new_thickness.
|
||||
The dynamics of the re-aligned struts are then measured using the same test bench (Figure ref:fig:test_struts_bench_leg).
|
||||
The comparison of the initial strut dynamics and the dynamics of the re-aligned struts (i.e. with the positioning pin) is made in Figure ref:fig:test_struts_comp_enc_frf_realign.
|
||||
|
||||
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
|
||||
data2orgtable([strut_align(:,1) + strut_align(:,2), strut_align(:,3) + strut_align(:,4)], {'1', '2', '4', '5', '6', '8'}, {'*APA*', '*Top*', '*Bot*'}, ' %.2f ');
|
||||
#+end_src
|
||||
Even though the struts are now much better aligned, not much improvement can be observed.
|
||||
The dynamics of the six aligned struts are quite different from one another.
|
||||
|
||||
#+name: tab:meas_misalignment_struts_new_thickness
|
||||
#+caption: Measured thickness difference between the flexible joints and the APA in [mm]
|
||||
#+attr_latex: :environment tabularx :width 0.2\linewidth :align cll
|
||||
#+attr_latex: :center t :booktabs t :float t
|
||||
#+RESULTS:
|
||||
| *APA* | *Top* | *Bot* |
|
||||
|-------+-------+-------|
|
||||
| 1 | -1.04 | -1.02 |
|
||||
| 2 | -0.99 | -0.98 |
|
||||
| 4 | -0.98 | -0.96 |
|
||||
| 5 | -0.96 | -0.96 |
|
||||
| 6 | -1.0 | -1.0 |
|
||||
| 8 | -0.99 | -0.97 |
|
||||
|
||||
The differences of the measured distances on each side corresponds to the misalignment on that same side (Table ref:tab:meas_misalignment_struts_new_results).
|
||||
|
||||
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
|
||||
data2orgtable([(strut_align(:,1) - strut_align(:,2))/2, (strut_align(:,3) - strut_align(:,4))/2], {'1', '2', '4', '5', '6', '8'}, {'*APA*', '*Top*', '*Bot*'}, ' %.3f ');
|
||||
#+end_src
|
||||
|
||||
#+name: tab:meas_misalignment_struts_new_results
|
||||
#+caption: Measured thickness difference between the flexible joints and the APA in [mm]
|
||||
#+attr_latex: :environment tabularx :width 0.25\linewidth :align cll
|
||||
#+attr_latex: :center t :booktabs t :float t
|
||||
#+RESULTS:
|
||||
| *APA* | *Top* | *Bot* |
|
||||
|-------+--------+-------|
|
||||
| 1 | -0.02 | 0.01 |
|
||||
| 2 | 0.055 | 0.0 |
|
||||
| 4 | 0.01 | -0.02 |
|
||||
| 5 | 0.03 | -0.03 |
|
||||
| 6 | 0.0 | 0.0 |
|
||||
| 8 | -0.005 | 0.055 |
|
||||
|
||||
#+begin_important
|
||||
After using the alignment pins, the misalignment of the APA and flexible joints are much smaller ($< 50\,\mu m$ for all the struts).
|
||||
#+end_important
|
||||
|
||||
The excitation signal is a low pass filtered white noise.
|
||||
Both the encoder and the force sensor voltage are measured.
|
||||
|
||||
Here are the leg numbers that have been measured.
|
||||
#+begin_src matlab
|
||||
%% Numnbers of the measured legs
|
||||
strut_nums = [1 2 3 4 5 6];
|
||||
#+end_src
|
||||
Having the encoders fixed to the struts may prove to be difficult to use.
|
||||
Therefore, the encoders may be fixed to the nano-hexapod plates instead.
|
||||
|
||||
#+begin_src matlab
|
||||
%% First identification (low frequency noise)
|
||||
%% New dynamical identified with re-aligned struts
|
||||
% Load the identification data
|
||||
leg_noise = {};
|
||||
for i = 1:length(strut_nums)
|
||||
leg_noise(i) = {load(sprintf('frf_struts_align_%i_noise.mat', strut_nums(i)), 'u', 'Vs', 'de')};
|
||||
for i = 1:length(strut_align_nums)
|
||||
leg_noise(i) = {load(sprintf('frf_struts_align_%i_noise.mat', strut_align_nums(i)), 'u', 'Vs', 'de')};
|
||||
end
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
% Parameters for Frequency Analysis
|
||||
Ts = 1e-4; % Sampling Time [s]
|
||||
Nfft = floor(1/Ts);
|
||||
win = hanning(Nfft);
|
||||
Noverlap = floor(Nfft/2);
|
||||
#+end_src
|
||||
Nfft = floor(1/Ts); % Number of points for the FFT computation
|
||||
win = hanning(Nfft); % Hanning window
|
||||
Noverlap = floor(Nfft/2); % Overlap between frequency analysis
|
||||
|
||||
We get the frequency vector that will be the same for all the frequency domain analysis.
|
||||
#+begin_src matlab
|
||||
% Only used to have the frequency vector "f"
|
||||
[~, f] = tfestimate(leg_noise{1}.u, leg_noise{1}.de, win, Noverlap, Nfft, 1/Ts);
|
||||
#+end_src
|
||||
|
||||
In this section, the dynamics from $u$ to $d_e$ (encoder) is identified.
|
||||
% Transfer function from u to de (encoder)
|
||||
enc_frf_aligned = zeros(length(f), length(strut_align_nums));
|
||||
|
||||
Then, the transfer function from the DAC output voltage $u$ to the measured displacement by the encoder $d_e$ is computed:
|
||||
#+begin_src matlab
|
||||
%% Transfer function estimation
|
||||
enc_frf = zeros(length(f), length(strut_nums));
|
||||
|
||||
for i = 1:length(strut_nums)
|
||||
enc_frf(:, i) = tfestimate(leg_noise{i}.u, leg_noise{i}.de, win, Noverlap, Nfft, 1/Ts);
|
||||
end
|
||||
|
||||
%% Transfer function estimation
|
||||
iff_frf = zeros(length(f), length(strut_nums));
|
||||
|
||||
for i = 1:length(strut_nums)
|
||||
iff_frf(:, i) = tfestimate(leg_noise{i}.u, leg_noise{i}.Vs, win, Noverlap, Nfft, 1/Ts);
|
||||
for i = 1:length(strut_align_nums)
|
||||
enc_frf_aligned(:, i) = tfestimate(leg_noise{i}.u, leg_noise{i}.de, win, Noverlap, Nfft, 1/Ts);
|
||||
end
|
||||
#+end_src
|
||||
|
||||
The obtained transfer functions are shown in Figure ref:fig:struts_align_frf_dvf_plant_tf.
|
||||
#+begin_src matlab :exports none
|
||||
%% Bode plot of the FRF from u to de
|
||||
figure;
|
||||
@ -1688,21 +1642,32 @@ tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
|
||||
|
||||
ax1 = nexttile([2,1]);
|
||||
hold on;
|
||||
plot(f, abs(enc_frf(:, 1)), 'color', [colors(1,:), 0.5], ...
|
||||
'DisplayName', 'Initial alignment');
|
||||
for i = 1:length(strut_nums)
|
||||
plot(f, abs(enc_frf(:, i)), ...
|
||||
'DisplayName', sprintf('Leg %i', strut_nums(i)));
|
||||
plot(f, abs(enc_frf(:, i)), 'color', [colors(1,:), 0.5], ...
|
||||
'HandleVisibility', 'off');
|
||||
end
|
||||
plot(f, abs(enc_frf_aligned(:, 1)), 'color', [colors(2,:), 0.5], ...
|
||||
'DisplayName', 'With positioning pin');
|
||||
for i = 1:length(strut_align_nums)
|
||||
plot(f, abs(enc_frf_aligned(:, i)), 'color', [colors(2,:), 0.5], ...
|
||||
'HandleVisibility', 'off');
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude $d_e/u$ [m/V]'); set(gca, 'XTickLabel',[]);
|
||||
hold off;
|
||||
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 2);
|
||||
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1);
|
||||
ylim([1e-8, 1e-3]);
|
||||
|
||||
ax2 = nexttile;
|
||||
hold on;
|
||||
for i = 1:length(strut_nums)
|
||||
plot(f, 180/pi*angle(enc_frf(:, i)));
|
||||
plot(f, 180/pi*angle(enc_frf(:, i)), 'color', [colors(1,:), 0.5]);
|
||||
end
|
||||
for i = 1:length(strut_align_nums)
|
||||
plot(f, 180/pi*angle(enc_frf_aligned(:, i)), 'color', [colors(2,:), 0.5]);
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||
@ -1715,56 +1680,33 @@ xlim([10, 2e3]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/struts_align_frf_dvf_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
|
||||
exportFig('figs/test_struts_comp_enc_frf_realign.pdf', 'width', 'wide', 'height', 'tall');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:struts_align_frf_dvf_plant_tf
|
||||
#+caption: Estimated FRF for the DVF plant (transfer function from $u$ to the encoder $d_e$)
|
||||
#+name: fig:test_struts_comp_enc_frf_realign
|
||||
#+caption:
|
||||
#+RESULTS:
|
||||
[[file:figs/struts_align_frf_dvf_plant_tf.png]]
|
||||
[[file:figs/test_struts_comp_enc_frf_realign.png]]
|
||||
|
||||
#+begin_important
|
||||
Even though the struts are much better aligned, we still observe high variability between the struts for the transfer function from $u$ to $d_e$.
|
||||
#+end_important
|
||||
|
||||
#+begin_important
|
||||
Having the struts well aligned does not change significantly the obtained dynamics.
|
||||
#+end_important
|
||||
|
||||
The measured FRF are now saved for further use.
|
||||
|
||||
** Effect of flexible joint's characteristics
|
||||
** Effect of the flexible joint
|
||||
<<ssec:test_struts_effect_joint_stiffness>>
|
||||
*** Introduction :ignore:
|
||||
|
||||
As the struts are composed of one APA and two flexible joints, it is obvious that the flexible joint characteristics will change the dynamic behavior of the struts.
|
||||
|
||||
Using the Simscape model, the effect of the flexible joint's characteristics on the dynamics as measured on the test bench are studied:
|
||||
- Section ref:sec:struts_effect_bending_stiff_joints: the effects of a change of bending stiffness is studied
|
||||
- Section ref:sec:struts_effect_axial_stiff_joints: the effects of a change of axial stiffness is studied
|
||||
- Section ref:sec:struts_effect_bending_damping_joints: the effects of a change of bending damping is studied
|
||||
As the struts are composed of one APA and two flexible joints, it is expected that the flexible joint characteristics will change the dynamic behavior of the struts.
|
||||
|
||||
Using the Simscape model, the effect of the flexible joint's characteristics on the dynamics as measured on the test bench are studied.
|
||||
The studied dynamics is between $u$ and the encoder displacement $d_e$.
|
||||
|
||||
*** Effect of bending stiffness of the flexible joints
|
||||
<<sec:struts_effect_bending_stiff_joints>>
|
||||
|
||||
Let's initialize an APA which is a little bit misaligned.
|
||||
#+begin_src matlab
|
||||
%% APA Initialization
|
||||
% APA Initialization
|
||||
n_hexapod.actuator = initializeAPA('type', 'flexible', 'd_align_bot', [0.1e-3; 0.5e-3; 0], 'd_align_top', [0.1e-3; 0.5e-3; 0]);
|
||||
#+end_src
|
||||
|
||||
The bending stiffnesses for which the dynamics is identified are defined below.
|
||||
#+begin_src matlab
|
||||
%% Tested bending stiffnesses [Nm/rad]
|
||||
%% Study the effect of the bending stiffness of the Flexible joints
|
||||
% Tested bending stiffnesses [Nm/rad]
|
||||
kRs = [3, 4, 5, 6, 7];
|
||||
#+end_src
|
||||
|
||||
Then the identification is performed for all the values of the bending stiffnesses.
|
||||
#+begin_src matlab
|
||||
%% Idenfity the transfer function from actuator to encoder for all bending stiffnesses
|
||||
Gs = {zeros(length(kRs), 1)};
|
||||
% Idenfity the transfer function from actuator to encoder for all bending stiffnesses
|
||||
Gs_kRs = {zeros(length(kRs), 1)};
|
||||
|
||||
for i = 1:length(kRs)
|
||||
n_hexapod.flex_bot = initializeBotFlexibleJoint(...
|
||||
@ -1780,70 +1722,15 @@ for i = 1:length(kRs)
|
||||
G.InputName = {'u'};
|
||||
G.OutputName = {'Vs', 'de', 'da'};
|
||||
|
||||
Gs(i) = {G};
|
||||
Gs_kRs(i) = {G};
|
||||
end
|
||||
#+end_src
|
||||
|
||||
The obtained dynamics from DAC voltage to encoder measurements are compared in Figure ref:fig:effect_enc_bending_stiff.
|
||||
#+begin_src matlab :exports none
|
||||
%% Plot the obtained transfer functions for all the bending stiffnesses
|
||||
figure;
|
||||
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
|
||||
|
||||
ax1 = nexttile([2,1]);
|
||||
hold on;
|
||||
for i = 1:length(kRs)
|
||||
plot(freqs, abs(squeeze(freqresp(Gs{i}('de', 'u'), freqs, 'Hz'))), ...
|
||||
'DisplayName', sprintf('$k_R = %.0f$ [Nm/rad]', kRs(i)));
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude $d_e/u$ [m/V]'); set(gca, 'XTickLabel',[]);
|
||||
hold off;
|
||||
ylim([1e-8, 1e-3]);
|
||||
legend('location', 'northeast');
|
||||
|
||||
ax2 = nexttile;
|
||||
hold on;
|
||||
for i = 1:length(kRs)
|
||||
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs{i}('de', 'u'), freqs, 'Hz'))));
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||
hold off;
|
||||
yticks(-360:90:360); ylim([-180, 180]);
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([20, 2e3]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/effect_enc_bending_stiff.pdf', 'width', 'wide', 'height', 'tall');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:effect_enc_bending_stiff
|
||||
#+caption: Dynamics from DAC output to encoder for several bending stiffnesses
|
||||
#+RESULTS:
|
||||
[[file:figs/effect_enc_bending_stiff.png]]
|
||||
|
||||
#+begin_important
|
||||
The bending stiffness of the joints has little impact on the transfer function from $u$ to $d_e$.
|
||||
#+end_important
|
||||
|
||||
*** Effect of axial stiffness of the flexible joints
|
||||
<<sec:struts_effect_axial_stiff_joints>>
|
||||
|
||||
The axial stiffnesses for which the dynamics is identified are defined below.
|
||||
#+begin_src matlab
|
||||
%% Tested axial stiffnesses [N/m]
|
||||
%% Study the effect of the axial stiffness of the Flexible joints
|
||||
% Tested axial stiffnesses [N/m]
|
||||
kzs = [5e7 7.5e7 1e8 2.5e8];
|
||||
#+end_src
|
||||
|
||||
Then the identification is performed for all the values of the bending stiffnesses.
|
||||
#+begin_src matlab
|
||||
%% Idenfity the transfer function from actuator to encoder for all bending stiffnesses
|
||||
Gs = {zeros(length(kzs), 1)};
|
||||
% Idenfity the transfer function from actuator to encoder for all bending stiffnesses
|
||||
Gs_kzs = {zeros(length(kzs), 1)};
|
||||
|
||||
for i = 1:length(kzs)
|
||||
n_hexapod.flex_bot = initializeBotFlexibleJoint(...
|
||||
@ -1857,11 +1744,47 @@ for i = 1:length(kzs)
|
||||
G.InputName = {'u'};
|
||||
G.OutputName = {'Vs', 'de', 'da'};
|
||||
|
||||
Gs(i) = {G};
|
||||
Gs_kzs(i) = {G};
|
||||
end
|
||||
#+end_src
|
||||
|
||||
The obtained dynamics from DAC voltage to encoder measurements are compared in Figure ref:fig:effect_enc_axial_stiff.
|
||||
#+begin_src matlab :exports none
|
||||
%% Plot the obtained transfer functions for all the bending stiffnesses
|
||||
figure;
|
||||
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
|
||||
|
||||
ax1 = nexttile([2,1]);
|
||||
hold on;
|
||||
for i = 1:length(kRs)
|
||||
plot(freqs, abs(squeeze(freqresp(Gs_kRs{i}('de', 'u'), freqs, 'Hz'))), ...
|
||||
'DisplayName', sprintf('$k_R = %.0f$ [Nm/rad]', kRs(i)));
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude $d_e/u$ [m/V]'); set(gca, 'XTickLabel',[]);
|
||||
hold off;
|
||||
ylim([1e-8, 1e-3]);
|
||||
legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1);
|
||||
|
||||
ax2 = nexttile;
|
||||
hold on;
|
||||
for i = 1:length(kRs)
|
||||
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_kRs{i}('de', 'u'), freqs, 'Hz'))));
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||
hold off;
|
||||
yticks(-360:90:360); ylim([-180, 180]);
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([20, 2e3]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file none
|
||||
exportFig('figs/test_struts_effect_flex_bending_stiffness_enc.pdf', 'width', 'half', 'height', 'tall');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
%% Plot the obtained transfer functions for all the axial stiffnesses
|
||||
figure;
|
||||
@ -1870,7 +1793,7 @@ tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
|
||||
ax1 = nexttile([2,1]);
|
||||
hold on;
|
||||
for i = 1:length(kzs)
|
||||
plot(freqs, abs(squeeze(freqresp(Gs{i}('de', 'u'), freqs, 'Hz'))), ...
|
||||
plot(freqs, abs(squeeze(freqresp(Gs_kzs{i}('de', 'u'), freqs, 'Hz'))), ...
|
||||
'DisplayName', sprintf('$k_z = %.1e$ [N/m]', kzs(i)));
|
||||
end
|
||||
hold off;
|
||||
@ -1878,12 +1801,12 @@ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude $d_e/u$ [m/V]'); set(gca, 'XTickLabel',[]);
|
||||
hold off;
|
||||
ylim([1e-8, 1e-3]);
|
||||
legend('location', 'northeast');
|
||||
legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1);
|
||||
|
||||
ax2 = nexttile;
|
||||
hold on;
|
||||
for i = 1:length(kzs)
|
||||
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs{i}('de', 'u'), freqs, 'Hz'))));
|
||||
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_kzs{i}('de', 'u'), freqs, 'Hz'))));
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||
@ -1895,99 +1818,36 @@ linkaxes([ax1,ax2],'x');
|
||||
xlim([20, 2e3]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/effect_enc_axial_stiff.pdf', 'width', 'wide', 'height', 'tall');
|
||||
#+begin_src matlab :tangle no :exports results :results file none
|
||||
exportFig('figs/test_struts_effect_flex_axial_stiffness_enc.pdf', 'width', 'half', 'height', 'tall');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:effect_enc_axial_stiff
|
||||
#+caption: Dynamics from DAC output to encoder for several axial stiffnesses
|
||||
#+RESULTS:
|
||||
[[file:figs/effect_enc_axial_stiff.png]]
|
||||
#+name: fig:test_struts_effect_flex_stiffness_enc
|
||||
#+caption: Effect of the flexible joints' bending (\subref{fig:test_struts_effect_flex_bending_stiffness_enc}) and axial (\subref{fig:test_struts_effect_flex_axial_stiffness_enc}) stiffnesses on the strut dynamics from $u$ to $d_e$
|
||||
#+attr_latex: :options [htbp]
|
||||
#+begin_figure
|
||||
#+attr_latex: :caption \subcaption{\label{fig:test_struts_effect_flex_bending_stiffness_enc}Effect of bending stiffness}
|
||||
#+attr_latex: :options {0.49\textwidth}
|
||||
#+begin_subfigure
|
||||
#+attr_latex: :width 0.95\linewidth
|
||||
[[file:figs/test_struts_effect_flex_bending_stiffness_enc.png]]
|
||||
#+end_subfigure
|
||||
#+attr_latex: :caption \subcaption{\label{fig:test_struts_effect_flex_axial_stiffness_enc}Effect of axial stiffness}
|
||||
#+attr_latex: :options {0.49\textwidth}
|
||||
#+begin_subfigure
|
||||
#+attr_latex: :width 0.95\linewidth
|
||||
[[file:figs/test_struts_effect_flex_axial_stiffness_enc.png]]
|
||||
#+end_subfigure
|
||||
#+end_figure
|
||||
|
||||
The bending stiffness of the joints has little impact on the transfer function from $u$ to $d_e$.
|
||||
|
||||
#+begin_important
|
||||
The axial stiffness of the flexible joint has a large impact on the frequency of the complex conjugate zero.
|
||||
Using the measured FRF on the test-bench, if is therefore possible to estimate the axial stiffness of the flexible joints from the location of the zero.
|
||||
|
||||
This method gives nice match between the measured FRF and the one extracted from the simscape model, however it could give not so accurate values of the joint's axial stiffness as other factors are also influencing the location of the zero.
|
||||
|
||||
Using this method, an axial stiffness of $70 N/\mu m$ is found to give good results (and is reasonable based on the finite element models).
|
||||
#+end_important
|
||||
|
||||
*** Effect of bending damping
|
||||
<<sec:struts_effect_bending_damping_joints>>
|
||||
Now let's study the effect of the bending damping of the flexible joints.
|
||||
|
||||
The tested bending damping are defined below:
|
||||
#+begin_src matlab
|
||||
%% Tested bending dampings [Nm/(rad/s)]
|
||||
cRs = [1e-3, 5e-3, 1e-2, 5e-2, 1e-1];
|
||||
#+end_src
|
||||
|
||||
Then the identification is performed for all the values of the bending damping.
|
||||
#+begin_src matlab
|
||||
%% Idenfity the transfer function from actuator to encoder for all bending dampins
|
||||
Gs = {zeros(length(cRs), 1)};
|
||||
|
||||
for i = 1:length(cRs)
|
||||
n_hexapod.flex_bot = initializeBotFlexibleJoint(...
|
||||
'type', '4dof', ...
|
||||
'cRx', cRs(i), ...
|
||||
'cRy', cRs(i));
|
||||
n_hexapod.flex_top = initializeTopFlexibleJoint(...
|
||||
'type', '4dof', ...
|
||||
'cRx', cRs(i), ...
|
||||
'cRy', cRs(i));
|
||||
|
||||
G = exp(-s*1e-4)*linearize(mdl, io, 0.0, opts);
|
||||
G.InputName = {'u'};
|
||||
G.OutputName = {'Vs', 'de', 'da'};
|
||||
|
||||
Gs(i) = {G};
|
||||
end
|
||||
#+end_src
|
||||
|
||||
The results are shown in Figure ref:fig:effect_enc_bending_damp.
|
||||
#+begin_src matlab :exports none
|
||||
%% Plot the obtained transfer functions for all the bending stiffnesses
|
||||
figure;
|
||||
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
|
||||
|
||||
ax1 = nexttile([2,1]);
|
||||
hold on;
|
||||
for i = 1:length(cRs)
|
||||
plot(freqs, abs(squeeze(freqresp(Gs{i}('de', 'u'), freqs, 'Hz'))), ...
|
||||
'DisplayName', sprintf('$c_R = %.3f\\,[\\frac{Nm}{rad/s}]$', cRs(i)));
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude $d_e/u$ [m/V]'); set(gca, 'XTickLabel',[]);
|
||||
hold off;
|
||||
ylim([1e-8, 1e-3]);
|
||||
legend('location', 'southwest');
|
||||
|
||||
ax2 = nexttile;
|
||||
hold on;
|
||||
for i = 1:length(cRs)
|
||||
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs{i}('de', 'u'), freqs, 'Hz'))));
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||
hold off;
|
||||
yticks(-360:90:360); ylim([-180, 180]);
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([20, 2e3]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/effect_enc_bending_damp.pdf', 'width', 'wide', 'height', 'tall');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:effect_enc_bending_damp
|
||||
#+caption: Dynamics from DAC output to encoder for several bending damping
|
||||
#+RESULTS:
|
||||
[[file:figs/effect_enc_bending_damp.png]]
|
||||
|
||||
** Conclusion :ignore:
|
||||
|
||||
|
Binary file not shown.
@ -1,4 +1,4 @@
|
||||
% Created 2024-03-27 Wed 16:59
|
||||
% Created 2024-03-27 Wed 17:52
|
||||
% Intended LaTeX compiler: pdflatex
|
||||
\documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt}
|
||||
|
||||
@ -552,166 +552,81 @@ With a better alignment, the amplitude of the spurious resonances are expected t
|
||||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[scale=1]{figs/test_struts_comp_dy_tuned_model_frf_enc.png}
|
||||
\caption{\label{fig:test_struts_comp_dy_tuned_model_frf_enc}Comparison of the frequency response functions from DAC voltage \(u\) to measured displacement \(d_e\) by the encoders for three struts. The \(y\) misalignment between the APA and the flexible joints have been estimated}
|
||||
\caption{\label{fig:test_struts_comp_dy_tuned_model_frf_enc}Comparison of the frequency response functions from DAC voltage \(u\) to measured displacement \(d_e\) by the encoders for three struts. In blue the measured dynamics, in red the dynamics extracted from the model with the \(y\) misalignment estimated from measurements, in yellow the dynamics extracted from the model when both the \(x\) and \(y\) misalignments are tuned}
|
||||
\end{figure}
|
||||
\section{Comparison of all the (re-aligned) Struts}
|
||||
\section{Proper struts alignment}
|
||||
\label{sec:test_struts_meas_all_aligned_struts}
|
||||
\begin{itemize}
|
||||
\item[{$\square$}] Should this be included here?
|
||||
\end{itemize}
|
||||
|
||||
The struts are re-aligned and measured using the same test bench.
|
||||
\subsection{Measured misalignment of the APA and flexible joints}
|
||||
The misalignment between the APA and the flexible joints are measured.
|
||||
After the positioning pins had been received, the struts were mounted again with the positioning pins.
|
||||
This should make the APA better aligned with the two flexible joints.
|
||||
|
||||
The results are defined below and summarized in Table \ref{tab:meas_misalignment_struts_new_raw}.
|
||||
This alignment is then estimated using a length gauge as in the previous sections.
|
||||
Measured \(y\) alignments are summarized in Table \ref{tab:test_struts_meas_y_misalignment_with_pin} and are found to be bellow \(55\mu m\) for all the struts which is much better than better (see Table \ref{tab:test_struts_meas_y_misalignment}).
|
||||
|
||||
\begin{table}[htbp]
|
||||
\caption{\label{tab:meas_misalignment_struts_new_raw}Measured misalignment of the struts (\texttt{R} means ``red'' side, and \texttt{B} means ``black side'') in [mm]}
|
||||
\caption{\label{tab:test_struts_meas_y_misalignment_with_pin}Measured \(y\) misalignment at the top and bottom of the APA after realigning the struts using a positioning pin. Measurements are in \(mm\).}
|
||||
\centering
|
||||
\begin{tabularx}{0.45\linewidth}{cllll}
|
||||
\begin{tabularx}{0.25\linewidth}{ccc}
|
||||
\toprule
|
||||
\textbf{Strut} & \textbf{R Top} & \textbf{B Top} & \textbf{R Bot} & \textbf{B Bot}\\
|
||||
\midrule
|
||||
1 & -0.54 & -0.5 & -0.5 & -0.52\\
|
||||
2 & -0.44 & -0.55 & -0.49 & -0.49\\
|
||||
3 & -0.48 & -0.5 & -0.5 & -0.46\\
|
||||
4 & -0.45 & -0.51 & -0.51 & -0.45\\
|
||||
5 & -0.5 & -0.5 & -0.5 & -0.5\\
|
||||
6 & -0.5 & -0.49 & -0.43 & -0.54\\
|
||||
\bottomrule
|
||||
\end{tabularx}
|
||||
\end{table}
|
||||
|
||||
Also, the sum of the measured distances on each side should be 1mm (equal to the thickness difference between the flexible joint and the APA).
|
||||
This is verified in Table \ref{tab:meas_misalignment_struts_new_thickness}.
|
||||
|
||||
\begin{table}[htbp]
|
||||
\caption{\label{tab:meas_misalignment_struts_new_thickness}Measured thickness difference between the flexible joints and the APA in [mm]}
|
||||
\centering
|
||||
\begin{tabularx}{0.2\linewidth}{cll}
|
||||
\toprule
|
||||
\textbf{APA} & \textbf{Top} & \textbf{Bot}\\
|
||||
\midrule
|
||||
1 & -1.04 & -1.02\\
|
||||
2 & -0.99 & -0.98\\
|
||||
4 & -0.98 & -0.96\\
|
||||
5 & -0.96 & -0.96\\
|
||||
6 & -1.0 & -1.0\\
|
||||
8 & -0.99 & -0.97\\
|
||||
\bottomrule
|
||||
\end{tabularx}
|
||||
\end{table}
|
||||
|
||||
The differences of the measured distances on each side corresponds to the misalignment on that same side (Table \ref{tab:meas_misalignment_struts_new_results}).
|
||||
|
||||
\begin{table}[htbp]
|
||||
\caption{\label{tab:meas_misalignment_struts_new_results}Measured thickness difference between the flexible joints and the APA in [mm]}
|
||||
\centering
|
||||
\begin{tabularx}{0.25\linewidth}{cll}
|
||||
\toprule
|
||||
\textbf{APA} & \textbf{Top} & \textbf{Bot}\\
|
||||
\textbf{Strut} & \textbf{Bot} & \textbf{Top}\\
|
||||
\midrule
|
||||
1 & -0.02 & 0.01\\
|
||||
2 & 0.055 & 0.0\\
|
||||
4 & 0.01 & -0.02\\
|
||||
5 & 0.03 & -0.03\\
|
||||
6 & 0.0 & 0.0\\
|
||||
8 & -0.005 & 0.055\\
|
||||
3 & 0.01 & -0.02\\
|
||||
4 & 0.03 & -0.03\\
|
||||
5 & 0.0 & 0.0\\
|
||||
6 & -0.005 & 0.055\\
|
||||
\bottomrule
|
||||
\end{tabularx}
|
||||
\end{table}
|
||||
|
||||
\begin{important}
|
||||
After using the alignment pins, the misalignment of the APA and flexible joints are much smaller (\(< 50\,\mu m\) for all the struts).
|
||||
\end{important}
|
||||
\subsection{FRF Identification - Setup}
|
||||
The excitation signal is a low pass filtered white noise.
|
||||
Both the encoder and the force sensor voltage are measured.
|
||||
The dynamics of the re-aligned struts are then measured using the same test bench (Figure \ref{fig:test_struts_bench_leg}).
|
||||
The comparison of the initial strut dynamics and the dynamics of the re-aligned struts (i.e. with the positioning pin) is made in Figure \ref{fig:test_struts_comp_enc_frf_realign}.
|
||||
|
||||
Here are the leg numbers that have been measured.
|
||||
We get the frequency vector that will be the same for all the frequency domain analysis.
|
||||
\subsection{FRF Identification - Encoder}
|
||||
In this section, the dynamics from \(u\) to \(d_e\) (encoder) is identified.
|
||||
Even though the struts are now much better aligned, not much improvement can be observed.
|
||||
The dynamics of the six aligned struts are quite different from one another.
|
||||
|
||||
Having the encoders fixed to the struts may prove to be difficult to use.
|
||||
Therefore, the encoders may be fixed to the nano-hexapod plates instead.
|
||||
|
||||
Then, the transfer function from the DAC output voltage \(u\) to the measured displacement by the encoder \(d_e\) is computed:
|
||||
The obtained transfer functions are shown in Figure \ref{fig:struts_align_frf_dvf_plant_tf}.
|
||||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[scale=1]{figs/struts_align_frf_dvf_plant_tf.png}
|
||||
\caption{\label{fig:struts_align_frf_dvf_plant_tf}Estimated FRF for the DVF plant (transfer function from \(u\) to the encoder \(d_e\))}
|
||||
\includegraphics[scale=1]{figs/test_struts_comp_enc_frf_realign.png}
|
||||
\label{fig:test_struts_comp_enc_frf_realign}
|
||||
\end{figure}
|
||||
|
||||
\begin{important}
|
||||
Even though the struts are much better aligned, we still observe high variability between the struts for the transfer function from \(u\) to \(d_e\).
|
||||
\end{important}
|
||||
\subsection{Conclusion}
|
||||
|
||||
\begin{important}
|
||||
Having the struts well aligned does not change significantly the obtained dynamics.
|
||||
\end{important}
|
||||
|
||||
The measured FRF are now saved for further use.
|
||||
\section{Effect of flexible joint's characteristics}
|
||||
\section{Effect of the flexible joint}
|
||||
\label{ssec:test_struts_effect_joint_stiffness}
|
||||
As the struts are composed of one APA and two flexible joints, it is obvious that the flexible joint characteristics will change the dynamic behavior of the struts.
|
||||
|
||||
Using the Simscape model, the effect of the flexible joint's characteristics on the dynamics as measured on the test bench are studied:
|
||||
\begin{itemize}
|
||||
\item Section \ref{sec:struts_effect_bending_stiff_joints}: the effects of a change of bending stiffness is studied
|
||||
\item Section \ref{sec:struts_effect_axial_stiff_joints}: the effects of a change of axial stiffness is studied
|
||||
\item Section \ref{sec:struts_effect_bending_damping_joints}: the effects of a change of bending damping is studied
|
||||
\end{itemize}
|
||||
As the struts are composed of one APA and two flexible joints, it is expected that the flexible joint characteristics will change the dynamic behavior of the struts.
|
||||
|
||||
Using the Simscape model, the effect of the flexible joint's characteristics on the dynamics as measured on the test bench are studied.
|
||||
The studied dynamics is between \(u\) and the encoder displacement \(d_e\).
|
||||
\subsection{Effect of bending stiffness of the flexible joints}
|
||||
\label{sec:struts_effect_bending_stiff_joints}
|
||||
|
||||
Let's initialize an APA which is a little bit misaligned.
|
||||
The bending stiffnesses for which the dynamics is identified are defined below.
|
||||
Then the identification is performed for all the values of the bending stiffnesses.
|
||||
The obtained dynamics from DAC voltage to encoder measurements are compared in Figure \ref{fig:effect_enc_bending_stiff}.
|
||||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[scale=1]{figs/effect_enc_bending_stiff.png}
|
||||
\caption{\label{fig:effect_enc_bending_stiff}Dynamics from DAC output to encoder for several bending stiffnesses}
|
||||
\begin{subfigure}{0.49\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[scale=1,width=0.95\linewidth]{figs/test_struts_effect_flex_bending_stiffness_enc.png}
|
||||
\end{center}
|
||||
\subcaption{\label{fig:test_struts_effect_flex_bending_stiffness_enc}Effect of bending stiffness}
|
||||
\end{subfigure}
|
||||
\begin{subfigure}{0.49\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[scale=1,width=0.95\linewidth]{figs/test_struts_effect_flex_axial_stiffness_enc.png}
|
||||
\end{center}
|
||||
\subcaption{\label{fig:test_struts_effect_flex_axial_stiffness_enc}Effect of axial stiffness}
|
||||
\end{subfigure}
|
||||
\caption{\label{fig:test_struts_effect_flex_stiffness_enc}Effect of the flexible joints' bending (\subref{fig:test_struts_effect_flex_bending_stiffness_enc}) and axial (\subref{fig:test_struts_effect_flex_axial_stiffness_enc}) stiffnesses on the strut dynamics from \(u\) to \(d_e\)}
|
||||
\end{figure}
|
||||
|
||||
\begin{important}
|
||||
The bending stiffness of the joints has little impact on the transfer function from \(u\) to \(d_e\).
|
||||
\end{important}
|
||||
\subsection{Effect of axial stiffness of the flexible joints}
|
||||
\label{sec:struts_effect_axial_stiff_joints}
|
||||
|
||||
The axial stiffnesses for which the dynamics is identified are defined below.
|
||||
Then the identification is performed for all the values of the bending stiffnesses.
|
||||
The obtained dynamics from DAC voltage to encoder measurements are compared in Figure \ref{fig:effect_enc_axial_stiff}.
|
||||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[scale=1]{figs/effect_enc_axial_stiff.png}
|
||||
\caption{\label{fig:effect_enc_axial_stiff}Dynamics from DAC output to encoder for several axial stiffnesses}
|
||||
\end{figure}
|
||||
|
||||
\begin{important}
|
||||
The axial stiffness of the flexible joint has a large impact on the frequency of the complex conjugate zero.
|
||||
Using the measured FRF on the test-bench, if is therefore possible to estimate the axial stiffness of the flexible joints from the location of the zero.
|
||||
|
||||
This method gives nice match between the measured FRF and the one extracted from the simscape model, however it could give not so accurate values of the joint's axial stiffness as other factors are also influencing the location of the zero.
|
||||
|
||||
Using this method, an axial stiffness of \(70 N/\mu m\) is found to give good results (and is reasonable based on the finite element models).
|
||||
\end{important}
|
||||
\subsection{Effect of bending damping}
|
||||
\label{sec:struts_effect_bending_damping_joints}
|
||||
Now let's study the effect of the bending damping of the flexible joints.
|
||||
|
||||
The tested bending damping are defined below:
|
||||
Then the identification is performed for all the values of the bending damping.
|
||||
The results are shown in Figure \ref{fig:effect_enc_bending_damp}.
|
||||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[scale=1]{figs/effect_enc_bending_damp.png}
|
||||
\caption{\label{fig:effect_enc_bending_damp}Dynamics from DAC output to encoder for several bending damping}
|
||||
\end{figure}
|
||||
\chapter{Conclusion}
|
||||
\label{sec:test_struts_conclusion}
|
||||
\printbibliography[heading=bibintoc,title={Bibliography}]
|
||||
|
Loading…
Reference in New Issue
Block a user