Analyze results of strut 1 measurements
BIN
figs/apa_frf_dvf_plant_coh.pdf
Normal file
BIN
figs/apa_frf_dvf_plant_coh.png
Normal file
After Width: | Height: | Size: 95 KiB |
BIN
figs/apa_frf_dvf_plant_tf.pdf
Normal file
BIN
figs/apa_frf_dvf_plant_tf.png
Normal file
After Width: | Height: | Size: 142 KiB |
BIN
figs/apa_frf_dvf_zoom_res_plant_tf.pdf
Normal file
BIN
figs/apa_frf_dvf_zoom_res_plant_tf.png
Normal file
After Width: | Height: | Size: 152 KiB |
BIN
figs/apa_frf_iff_plant_coh.pdf
Normal file
BIN
figs/apa_frf_iff_plant_coh.png
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
figs/apa_frf_iff_plant_tf.pdf
Normal file
BIN
figs/apa_frf_iff_plant_tf.png
Normal file
After Width: | Height: | Size: 115 KiB |
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 67 KiB |
BIN
figs/frf_strut_dvf_comp_effect_enc.pdf
Normal file
BIN
figs/frf_strut_dvf_comp_effect_enc.png
Normal file
After Width: | Height: | Size: 129 KiB |
BIN
figs/strut_1_comp_enc_int.pdf
Normal file
BIN
figs/strut_1_comp_enc_int.png
Normal file
After Width: | Height: | Size: 122 KiB |
BIN
figs/strut_1_enc_frf_dvf_plant_coh.pdf
Normal file
BIN
figs/strut_1_enc_frf_dvf_plant_coh.png
Normal file
After Width: | Height: | Size: 76 KiB |
BIN
figs/strut_1_enc_frf_dvf_plant_tf.pdf
Normal file
BIN
figs/strut_1_enc_frf_dvf_plant_tf.png
Normal file
After Width: | Height: | Size: 100 KiB |
BIN
figs/strut_1_enc_frf_iff_plant_tf.pdf
Normal file
BIN
figs/strut_1_enc_frf_iff_plant_tf.png
Normal file
After Width: | Height: | Size: 93 KiB |
BIN
figs/strut_1_frf_dvf_plant_coh.pdf
Normal file
BIN
figs/strut_1_frf_dvf_plant_coh.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
figs/strut_1_frf_dvf_plant_tf.pdf
Normal file
BIN
figs/strut_1_frf_dvf_plant_tf.png
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
figs/strut_1_frf_iff_effect_enc.pdf
Normal file
BIN
figs/strut_1_frf_iff_effect_enc.png
Normal file
After Width: | Height: | Size: 105 KiB |
BIN
figs/strut_1_frf_iff_plant_coh.pdf
Normal file
BIN
figs/strut_1_frf_iff_plant_coh.png
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
figs/strut_1_frf_iff_plant_tf.pdf
Normal file
BIN
figs/strut_1_frf_iff_plant_tf.png
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
figs/strut_1_spurious_resonances.pdf
Normal file
BIN
figs/strut_1_spurious_resonances.png
Normal file
After Width: | Height: | Size: 86 KiB |
@ -1881,7 +1881,7 @@ for i = 1:length(apa_nums)
|
|||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
The coherence is shown in Figure [[fig:frf_dvf_plant_coh]].
|
The coherence is shown in Figure [[fig:apa_frf_dvf_plant_coh]].
|
||||||
It is clear that the Sweep sine gives good coherence up to 400Hz and that the high frequency noise excitation signal helps increasing a little bit the coherence at high frequency.
|
It is clear that the Sweep sine gives good coherence up to 400Hz and that the high frequency noise excitation signal helps increasing a little bit the coherence at high frequency.
|
||||||
|
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
@ -1905,13 +1905,13 @@ legend('location', 'southeast');
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/frf_dvf_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
|
exportFig('figs/apa_frf_dvf_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:frf_dvf_plant_coh
|
#+name: fig:apa_frf_dvf_plant_coh
|
||||||
#+caption: Obtained coherence for the plant from $V_a$ to $d_e$
|
#+caption: Obtained coherence for the plant from $V_a$ to $d_e$
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/frf_dvf_plant_coh.png]]
|
[[file:figs/apa_frf_dvf_plant_coh.png]]
|
||||||
|
|
||||||
|
|
||||||
Then, the transfer function from the DAC output voltage $V_a$ to the measured displacement by the encoders is computed:
|
Then, the transfer function from the DAC output voltage $V_a$ to the measured displacement by the encoders is computed:
|
||||||
@ -1930,7 +1930,7 @@ for i = 1:length(apa_nums)
|
|||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
The obtained transfer functions are shown in Figure [[fig:frf_dvf_plant_tf]].
|
The obtained transfer functions are shown in Figure [[fig:apa_frf_dvf_plant_tf]].
|
||||||
They are all superimposed except for the APA7.
|
They are all superimposed except for the APA7.
|
||||||
|
|
||||||
#+begin_question
|
#+begin_question
|
||||||
@ -1978,15 +1978,15 @@ xlim([10, 2e3]);
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/frf_dvf_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
|
exportFig('figs/apa_frf_dvf_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:frf_dvf_plant_tf
|
#+name: fig:apa_frf_dvf_plant_tf
|
||||||
#+caption: Estimated FRF for the DVF plant (transfer function from $V_a$ to the encoder $d_e$)
|
#+caption: Estimated FRF for the DVF plant (transfer function from $V_a$ to the encoder $d_e$)
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/frf_dvf_plant_tf.png]]
|
[[file:figs/apa_frf_dvf_plant_tf.png]]
|
||||||
|
|
||||||
A zoom on the main resonance is shown in Figure [[fig:frf_dvf_zoom_res_plant_tf]].
|
A zoom on the main resonance is shown in Figure [[fig:apa_frf_dvf_zoom_res_plant_tf]].
|
||||||
It is clear that expect for the APA 7, the response around the resonances are well matching for all the APA.
|
It is clear that expect for the APA 7, the response around the resonances are well matching for all the APA.
|
||||||
|
|
||||||
It is also clear that there is not a single resonance but two resonances, a first one at 95Hz and a second one at 105Hz.
|
It is also clear that there is not a single resonance but two resonances, a first one at 95Hz and a second one at 105Hz.
|
||||||
@ -2029,18 +2029,18 @@ xlim([80, 120]);
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/frf_dvf_zoom_res_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
|
exportFig('figs/apa_frf_dvf_zoom_res_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:frf_dvf_zoom_res_plant_tf
|
#+name: fig:apa_frf_dvf_zoom_res_plant_tf
|
||||||
#+caption: Estimated FRF for the DVF plant (transfer function from $V_a$ to the encoder $d_e$) - Zoom on the main resonance
|
#+caption: Estimated FRF for the DVF plant (transfer function from $V_a$ to the encoder $d_e$) - Zoom on the main resonance
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/frf_dvf_zoom_res_plant_tf.png]]
|
[[file:figs/apa_frf_dvf_zoom_res_plant_tf.png]]
|
||||||
|
|
||||||
*** FRF Identification - IFF
|
*** FRF Identification - IFF
|
||||||
In this section, the dynamics from $V_a$ to $V_s$ is identified.
|
In this section, the dynamics from $V_a$ to $V_s$ is identified.
|
||||||
|
|
||||||
First the coherence is computed and shown in Figure [[fig:frf_iff_plant_coh]].
|
First the coherence is computed and shown in Figure [[fig:apa_frf_iff_plant_coh]].
|
||||||
The coherence is very nice from 10Hz to 2kHz.
|
The coherence is very nice from 10Hz to 2kHz.
|
||||||
It is only dropping near a zeros at 40Hz, and near the resonance at 95Hz (the excitation amplitude being lowered).
|
It is only dropping near a zeros at 40Hz, and near the resonance at 95Hz (the excitation amplitude being lowered).
|
||||||
|
|
||||||
@ -2080,15 +2080,15 @@ legend('location', 'southeast');
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/frf_iff_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
|
exportFig('figs/apa_frf_iff_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:frf_iff_plant_coh
|
#+name: fig:apa_frf_iff_plant_coh
|
||||||
#+caption: Obtained coherence for the IFF plant
|
#+caption: Obtained coherence for the IFF plant
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/frf_iff_plant_coh.png]]
|
[[file:figs/apa_frf_iff_plant_coh.png]]
|
||||||
|
|
||||||
Then the FRF are estimated and shown in Figure [[fig:frf_iff_plant_tf]]
|
Then the FRF are estimated and shown in Figure [[fig:apa_frf_iff_plant_tf]]
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% FRF estimation of the transfer function from Va to Vs
|
%% FRF estimation of the transfer function from Va to Vs
|
||||||
iff_sweep = zeros(length(f), length(apa_nums));
|
iff_sweep = zeros(length(f), length(apa_nums));
|
||||||
@ -2140,42 +2140,42 @@ xlim([10, 2e3]);
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/frf_iff_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
|
exportFig('figs/apa_frf_iff_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:frf_iff_plant_tf
|
#+name: fig:apa_frf_iff_plant_tf
|
||||||
#+caption:Identified IFF Plant
|
#+caption:Identified IFF Plant
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/frf_iff_plant_tf.png]]
|
[[file:figs/apa_frf_iff_plant_tf.png]]
|
||||||
|
|
||||||
* Dynamical measurements - Struts
|
* Dynamical measurements - Struts
|
||||||
<<sec:dynamical_meas_struts>>
|
<<sec:dynamical_meas_struts>>
|
||||||
** Introduction :ignore:
|
** Introduction :ignore:
|
||||||
|
|
||||||
|
The same bench used in Section [[sec:dynamical_meas_apa]] is here used with the strut instead of only the APA.
|
||||||
|
|
||||||
|
The bench is shown in Figure [[fig:test_bench_leg_overview]].
|
||||||
|
Measurements are performed either when no encoder is fixed to the strut (Figure [[fig:test_bench_leg_front]]) or when one encoder is fixed to the strut (Figure [[fig:test_bench_leg_overview]]).
|
||||||
|
|
||||||
#+name: fig:test_bench_leg_overview
|
#+name: fig:test_bench_leg_overview
|
||||||
#+caption: Test Bench with Strut - Overview
|
#+caption: Test Bench with Strut - Overview
|
||||||
|
#+attr_latex: :width 0.5\linewidth
|
||||||
[[file:figs/test_bench_leg_overview.png]]
|
[[file:figs/test_bench_leg_overview.png]]
|
||||||
|
|
||||||
#+name: fig:test_bench_leg_front
|
#+name: fig:test_bench_leg_front
|
||||||
#+caption: Test Bench with Strut - Zoom on the strut
|
#+caption: Test Bench with Strut - Zoom on the strut
|
||||||
|
#+attr_latex: :width 0.5\linewidth
|
||||||
[[file:figs/test_bench_leg_front.png]]
|
[[file:figs/test_bench_leg_front.png]]
|
||||||
|
|
||||||
#+name: fig:test_bench_leg_overview
|
#+name: fig:test_bench_leg_overview
|
||||||
#+caption: Test Bench with Strut - Zoom on the strut with the encoder
|
#+caption: Test Bench with Strut - Zoom on the strut with the encoder
|
||||||
|
#+attr_latex: :width 0.5\linewidth
|
||||||
[[file:figs/test_bench_leg_coder.png]]
|
[[file:figs/test_bench_leg_coder.png]]
|
||||||
|
|
||||||
|
|
||||||
| Variable | | Unit | Hardware |
|
|
||||||
|----------+------------------------------+------+-------------------------------|
|
|
||||||
| =Va= | Output DAC voltage | [V] | DAC - Ch. 1 => PD200 => APA |
|
|
||||||
| =Vs= | Measured stack voltage (ADC) | [V] | APA => ADC - Ch. 1 |
|
|
||||||
| =de= | Encoder Measurement | [m] | PEPU Ch. 1 - IO318(1) - Ch. 1 |
|
|
||||||
| =da= | Attocube Measurement | [m] | PEPU Ch. 2 - IO318(1) - Ch. 2 |
|
|
||||||
| =t= | Time | [s] | |
|
|
||||||
|
|
||||||
** Measurement on Strut 1
|
** Measurement on Strut 1
|
||||||
|
<<sec:meas_strut_1>>
|
||||||
*** Introduction :ignore:
|
*** Introduction :ignore:
|
||||||
Measurements are first performed on the strut number 1 with:
|
Measurements are first performed on the strut 1 that contains:
|
||||||
- APA 1
|
- APA 1
|
||||||
- flex 1 and flex 2
|
- flex 1 and flex 2
|
||||||
|
|
||||||
@ -2204,6 +2204,7 @@ addpath('./src/');
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Without Encoder
|
*** Without Encoder
|
||||||
|
<<sec:meas_strut_1_no_encoder>>
|
||||||
**** FRF Identification - Setup
|
**** FRF Identification - Setup
|
||||||
The identification is performed in three steps:
|
The identification is performed in three steps:
|
||||||
1. White noise excitation with small amplitude.
|
1. White noise excitation with small amplitude.
|
||||||
@ -2241,8 +2242,8 @@ We get the frequency vector that will be the same for all the frequency domain a
|
|||||||
[~, f] = tfestimate(leg_sweep.Va, leg_sweep.de, win, [], [], 1/Ts);
|
[~, f] = tfestimate(leg_sweep.Va, leg_sweep.de, win, [], [], 1/Ts);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
**** TODO FRF Identification - DVF
|
**** FRF Identification - Displacement
|
||||||
In this section, the dynamics from $V_a$ to $d_e$ is identified.
|
In this section, the dynamics from the excitation voltage $V_a$ to the interferometer $d_a$ is identified.
|
||||||
|
|
||||||
We compute the coherence for 2nd and 3rd identification:
|
We compute the coherence for 2nd and 3rd identification:
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
@ -2253,57 +2254,40 @@ We compute the coherence for 2nd and 3rd identification:
|
|||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
plot(f, coh_noise_hf(:, 1), 'color', [colors(1, :), 0.5], ...
|
plot(f, coh_noise_hf(:, 1), 'color', colors(1, :), ...
|
||||||
'DisplayName', 'HF Noise');
|
'DisplayName', 'HF Noise');
|
||||||
plot(f, coh_sweep(:, 1), 'color', [colors(2, :), 0.5], ...
|
plot(f, coh_sweep(:, 1), 'color', colors(2, :), ...
|
||||||
'DisplayName', 'Sweep');
|
'DisplayName', 'Sweep');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Coherence [-]');
|
xlabel('Frequency [Hz]'); ylabel('Coherence [-]');
|
||||||
% xlim([5, 5e3]); ylim([0, 1]);
|
xlim([5, 5e3]); ylim([0, 1]);
|
||||||
legend('location', 'southeast');
|
legend('location', 'southeast');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/frf_dvf_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
|
exportFig('figs/strut_1_frf_dvf_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:frf_dvf_plant_coh
|
#+name: fig:strut_1_frf_dvf_plant_coh
|
||||||
#+caption: Obtained coherence for the plant from $V_a$ to $d_e$
|
#+caption: Obtained coherence for the plant from $V_a$ to $d_a$
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/frf_dvf_plant_coh.png]]
|
[[file:figs/strut_1_frf_dvf_plant_coh.png]]
|
||||||
|
|
||||||
|
|
||||||
|
The transfer function from $V_a$ to the interferometer measured displacement $d_a$ is estimated and shown in Figure [[fig:strut_1_frf_dvf_plant_tf]].
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
[dvf_sweep, ~] = tfestimate(leg_sweep.Va, leg_sweep.da, win, [], [], 1/Ts);
|
[dvf_sweep, ~] = tfestimate(leg_sweep.Va, leg_sweep.da, win, [], [], 1/Ts);
|
||||||
[dvf_noise_hf, ~] = tfestimate(leg_noise_hf.Va, leg_noise_hf.da, win, [], [], 1/Ts);
|
[dvf_noise_hf, ~] = tfestimate(leg_noise_hf.Va, leg_noise_hf.da, win, [], [], 1/Ts);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
The obtained transfer functions are shown in Figure [[fig:frf_dvf_plant_tf]].
|
|
||||||
|
|
||||||
They are all superimposed except for the APA7.
|
|
||||||
|
|
||||||
#+begin_question
|
|
||||||
Why is the APA7 off?
|
|
||||||
We could think that the APA7 is stiffer, but also the mass line is off.
|
|
||||||
|
|
||||||
It seems that there is a "gain" problem.
|
|
||||||
The encoder seems fine (it measured the same as the Interferometer).
|
|
||||||
Maybe it could be due to the amplifier?
|
|
||||||
#+end_question
|
|
||||||
|
|
||||||
#+begin_question
|
|
||||||
Why is there a double resonance at around 94Hz?
|
|
||||||
#+end_question
|
|
||||||
|
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
figure;
|
figure;
|
||||||
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
||||||
|
|
||||||
ax1 = nexttile;
|
ax1 = nexttile([2,1]);
|
||||||
hold on;
|
hold on;
|
||||||
plot(f(f> 350), abs(dvf_noise_hf(f> 350)), 'color', colors(1, :));
|
plot(f(f> 350), abs(dvf_noise_hf(f> 350)), 'k-');
|
||||||
plot(f(f<=350), abs(dvf_sweep( f<=350)), 'color', colors(1, :));
|
plot(f(f<=350), abs(dvf_sweep( f<=350)), 'k-');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Amplitude $d_e/V_a$ [m/V]'); set(gca, 'XTickLabel',[]);
|
ylabel('Amplitude $d_e/V_a$ [m/V]'); set(gca, 'XTickLabel',[]);
|
||||||
@ -2312,31 +2296,31 @@ ylim([1e-9, 1e-3]);
|
|||||||
|
|
||||||
ax2 = nexttile;
|
ax2 = nexttile;
|
||||||
hold on;
|
hold on;
|
||||||
plot(f(f> 350), 180/pi*angle(dvf_noise_hf(f> 350)), 'color', colors(1, :));
|
plot(f(f> 350), 180/pi*angle(dvf_noise_hf(f> 350)), 'k-');
|
||||||
plot(f(f<=350), 180/pi*angle(dvf_sweep( f<=350)), 'color', colors(1, :));
|
plot(f(f<=350), 180/pi*angle(dvf_sweep( f<=350)), 'k-');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
hold off;
|
hold off;
|
||||||
yticks(-360:90:360);
|
yticks(-360:90:360); ylim([-180, 180]);
|
||||||
|
|
||||||
linkaxes([ax1,ax2],'x');
|
linkaxes([ax1,ax2],'x');
|
||||||
xlim([10, 2e3]);
|
xlim([10, 2e3]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/frf_dvf_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
|
exportFig('figs/strut_1_frf_dvf_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:frf_dvf_plant_tf
|
#+name: fig:strut_1_frf_dvf_plant_tf
|
||||||
#+caption: Estimated FRF for the DVF plant (transfer function from $V_a$ to the encoder $d_e$)
|
#+caption: Estimated FRF for the DVF plant (transfer function from $V_a$ to the interferometer $d_a$)
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/frf_dvf_plant_tf.png]]
|
[[file:figs/strut_1_frf_dvf_plant_tf.png]]
|
||||||
|
|
||||||
**** TODO FRF Identification - IFF
|
**** FRF Identification - IFF
|
||||||
In this section, the dynamics from $V_a$ to $V_s$ is identified.
|
In this section, the dynamics from $V_a$ to $V_s$ is identified.
|
||||||
|
|
||||||
First the coherence is computed and shown in Figure [[fig:frf_iff_plant_coh]].
|
First the coherence is computed and shown in Figure [[fig:strut_1_frf_iff_plant_coh]].
|
||||||
The coherence is very nice from 10Hz to 2kHz.
|
The coherence is very nice from 10Hz to 2kHz.
|
||||||
It is only dropping near a zeros at 40Hz, and near the resonance at 95Hz (the excitation amplitude being lowered).
|
It is only dropping near a zeros at 40Hz, and near the resonance at 95Hz (the excitation amplitude being lowered).
|
||||||
|
|
||||||
@ -2360,15 +2344,15 @@ legend('location', 'southeast');
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/frf_iff_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
|
exportFig('figs/strut_1_frf_iff_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:frf_iff_plant_coh
|
#+name: fig:strut_1_frf_iff_plant_coh
|
||||||
#+caption: Obtained coherence for the IFF plant
|
#+caption: Obtained coherence for the IFF plant
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/frf_iff_plant_coh.png]]
|
[[file:figs/strut_1_frf_iff_plant_coh.png]]
|
||||||
|
|
||||||
Then the FRF are estimated and shown in Figure [[fig:frf_iff_plant_tf]]
|
Then the FRF are estimated and shown in Figure [[fig:strut_1_frf_iff_plant_tf]]
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
[iff_sweep, ~] = tfestimate(leg_sweep.Va, leg_sweep.Vs, win, [], [], 1/Ts);
|
[iff_sweep, ~] = tfestimate(leg_sweep.Va, leg_sweep.Vs, win, [], [], 1/Ts);
|
||||||
[iff_noise_hf, ~] = tfestimate(leg_noise_hf.Va, leg_noise_hf.Vs, win, [], [], 1/Ts);
|
[iff_noise_hf, ~] = tfestimate(leg_noise_hf.Va, leg_noise_hf.Vs, win, [], [], 1/Ts);
|
||||||
@ -2376,60 +2360,50 @@ Then the FRF are estimated and shown in Figure [[fig:frf_iff_plant_tf]]
|
|||||||
|
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
figure;
|
figure;
|
||||||
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
||||||
|
|
||||||
ax1 = nexttile;
|
ax1 = nexttile([2,1]);
|
||||||
hold on;
|
hold on;
|
||||||
plot(f(f> 350), abs(iff_noise_hf(f> 350)), 'color', colors(1, :));
|
plot(f(f> 350), abs(iff_noise_hf(f> 350)), 'k-');
|
||||||
plot(f(f<=350), abs(iff_sweep( f<=350)), 'color', colors(1, :));
|
plot(f(f<=350), abs(iff_sweep( f<=350)), 'k-');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Amplitude $V_s/V_a$ [V/V]'); set(gca, 'XTickLabel',[]);
|
ylabel('Amplitude $V_s/V_a$ [V/V]'); set(gca, 'XTickLabel',[]);
|
||||||
hold off;
|
hold off;
|
||||||
ylim([1e-2, 1e2]);
|
ylim([1e-2, 1e2]);
|
||||||
legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
|
|
||||||
|
|
||||||
ax2 = nexttile;
|
ax2 = nexttile;
|
||||||
hold on;
|
hold on;
|
||||||
plot(f(f> 350), 180/pi*angle(iff_noise_hf(f> 350)), 'color', colors(1, :));
|
plot(f(f> 350), 180/pi*angle(iff_noise_hf(f> 350)), 'k-');
|
||||||
plot(f(f<=350), 180/pi*angle(iff_sweep( f<=350)), 'color', colors(1, :));
|
plot(f(f<=350), 180/pi*angle(iff_sweep( f<=350)), 'k-');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
hold off;
|
hold off;
|
||||||
yticks(-360:90:360);
|
yticks(-360:90:360); ylim([-180, 180]);
|
||||||
|
|
||||||
linkaxes([ax1,ax2],'x');
|
linkaxes([ax1,ax2],'x');
|
||||||
xlim([10, 2e3]);
|
xlim([10, 2e3]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/frf_iff_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
|
exportFig('figs/strut_1_frf_iff_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:frf_iff_plant_tf
|
#+name: fig:strut_1_frf_iff_plant_tf
|
||||||
#+caption:Identified IFF Plant
|
#+caption:Identified IFF Plant for the Strut 1
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/frf_iff_plant_tf.png]]
|
[[file:figs/strut_1_frf_iff_plant_tf.png]]
|
||||||
|
|
||||||
*** With Encoder
|
*** With Encoder
|
||||||
**** FRF Identification - Setup
|
<<sec:meas_strut_1_encoder>>
|
||||||
The identification is performed in three steps:
|
**** Measurement Data
|
||||||
1. White noise excitation with small amplitude.
|
|
||||||
This is used to determine the main resonance of the system.
|
|
||||||
2. Sweep sine excitation with the amplitude lowered around the resonance.
|
|
||||||
The sweep sine is from 10Hz to 400Hz.
|
|
||||||
3. High frequency noise.
|
|
||||||
The noise is band-passed between 300Hz and 2kHz.
|
|
||||||
|
|
||||||
Then, the result of the second identification is used between 10Hz and 350Hz and the result of the third identification if used between 350Hz and 2kHz.
|
|
||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
leg_enc_sweep = load(sprintf('frf_data_leg_coder_badly_align_%i_noise.mat', 1), 't', 'Va', 'Vs', 'de', 'da');
|
leg_enc_sweep = load(sprintf('frf_data_leg_coder_badly_align_%i_noise.mat', 1), 't', 'Va', 'Vs', 'de', 'da');
|
||||||
leg_enc_noise_hf = load(sprintf('frf_data_leg_coder_badly_align_%i_noise_hf.mat', 1), 't', 'Va', 'Vs', 'de', 'da');
|
leg_enc_noise_hf = load(sprintf('frf_data_leg_coder_badly_align_%i_noise_hf.mat', 1), 't', 'Va', 'Vs', 'de', 'da');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
**** TODO FRF Identification - DVF
|
**** FRF Identification - DVF
|
||||||
In this section, the dynamics from $V_a$ to $d_e$ is identified.
|
In this section, the dynamics from $V_a$ to $d_e$ is identified.
|
||||||
|
|
||||||
We compute the coherence for 2nd and 3rd identification:
|
We compute the coherence for 2nd and 3rd identification:
|
||||||
@ -2443,9 +2417,9 @@ colors = get(gca,'colororder');
|
|||||||
|
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
plot(f, coh_enc_noise_hf(:, 1), 'color', [colors(1, :), 0.5], ...
|
plot(f, coh_enc_noise_hf(:, 1), 'color', colors(1, :), ...
|
||||||
'DisplayName', 'HF Noise');
|
'DisplayName', 'HF Noise');
|
||||||
plot(f, coh_enc_sweep(:, 1), 'color', [colors(2, :), 0.5], ...
|
plot(f, coh_enc_sweep(:, 1), 'color', colors(2, :), ...
|
||||||
'DisplayName', 'Sweep');
|
'DisplayName', 'Sweep');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||||
@ -2455,21 +2429,25 @@ legend('location', 'southeast');
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/frf_dvf_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
|
exportFig('figs/strut_1_enc_frf_dvf_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:frf_dvf_plant_coh
|
#+name: fig:strut_1_enc_frf_dvf_plant_coh
|
||||||
#+caption: Obtained coherence for the plant from $V_a$ to $d_e$
|
#+caption: Obtained coherence for the plant from $V_a$ to $d_e$
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/frf_dvf_plant_coh.png]]
|
[[file:figs/strut_1_enc_frf_dvf_plant_coh.png]]
|
||||||
|
|
||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
[dvf_enc_sweep, ~] = tfestimate(leg_enc_sweep.Va, leg_enc_sweep.de, win, [], [], 1/Ts);
|
[dvf_enc_sweep, ~] = tfestimate(leg_enc_sweep.Va, leg_enc_sweep.de, win, [], [], 1/Ts);
|
||||||
[dvf_enc_noise_hf, ~] = tfestimate(leg_enc_noise_hf.Va, leg_enc_noise_hf.de, win, [], [], 1/Ts);
|
[dvf_enc_noise_hf, ~] = tfestimate(leg_enc_noise_hf.Va, leg_enc_noise_hf.de, win, [], [], 1/Ts);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
The obtained transfer functions are shown in Figure [[fig:frf_dvf_plant_tf]].
|
#+begin_src matlab
|
||||||
|
[dvf_int_sweep, ~] = tfestimate(leg_enc_sweep.Va, leg_enc_sweep.da, win, [], [], 1/Ts);
|
||||||
|
[dvf_int_noise_hf, ~] = tfestimate(leg_enc_noise_hf.Va, leg_enc_noise_hf.da, win, [], [], 1/Ts);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
The obtained transfer functions are shown in Figure [[fig:strut_1_enc_frf_dvf_plant_tf]].
|
||||||
|
|
||||||
They are all superimposed except for the APA7.
|
They are all superimposed except for the APA7.
|
||||||
|
|
||||||
@ -2488,53 +2466,51 @@ Why is there a double resonance at around 94Hz?
|
|||||||
|
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
figure;
|
figure;
|
||||||
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
||||||
|
|
||||||
ax1 = nexttile;
|
ax1 = nexttile([2,1]);
|
||||||
hold on;
|
hold on;
|
||||||
plot(f(f> 350), abs(dvf_enc_noise_hf(f> 350)), 'color', colors(1, :));
|
plot(f(f> 350), abs(dvf_enc_noise_hf(f> 350)), 'k-');
|
||||||
plot(f(f<=350), abs(dvf_enc_sweep( f<=350)), 'color', colors(1, :));
|
plot(f(f<=350), abs(dvf_enc_sweep( f<=350)), 'k-');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Amplitude $d_e/V_a$ [m/V]'); set(gca, 'XTickLabel',[]);
|
ylabel('Amplitude $d_e/V_a$ [m/V]'); set(gca, 'XTickLabel',[]);
|
||||||
hold off;
|
hold off;
|
||||||
ylim([1e-9, 1e-3]);
|
ylim([1e-7, 1e-3]);
|
||||||
|
|
||||||
ax2 = nexttile;
|
ax2 = nexttile;
|
||||||
hold on;
|
hold on;
|
||||||
plot(f(f> 350), 180/pi*angle(dvf_enc_noise_hf(f> 350)), 'color', colors(1, :));
|
plot(f(f> 350), 180/pi*angle(dvf_enc_noise_hf(f> 350)), 'k-');
|
||||||
plot(f(f<=350), 180/pi*angle(dvf_enc_sweep( f<=350)), 'color', colors(1, :));
|
plot(f(f<=350), 180/pi*angle(dvf_enc_sweep( f<=350)), 'k-');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
hold off;
|
hold off;
|
||||||
yticks(-360:90:360);
|
yticks(-360:90:360); ylim([-180, 180]);
|
||||||
|
|
||||||
linkaxes([ax1,ax2],'x');
|
linkaxes([ax1,ax2],'x');
|
||||||
xlim([10, 2e3]);
|
xlim([10, 2e3]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/frf_dvf_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
|
exportFig('figs/strut_1_enc_frf_dvf_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:frf_dvf_plant_tf
|
#+name: fig:strut_1_enc_frf_dvf_plant_tf
|
||||||
#+caption: Estimated FRF for the DVF plant (transfer function from $V_a$ to the encoder $d_e$)
|
#+caption: Estimated FRF for the DVF plant (transfer function from $V_a$ to the encoder $d_e$)
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/frf_dvf_plant_tf.png]]
|
[[file:figs/strut_1_enc_frf_dvf_plant_tf.png]]
|
||||||
|
|
||||||
**** Comparison with Interferometer
|
**** Comparison of the Encoder and Interferometer
|
||||||
|
The interferometer could here represent the case where the encoders are fixed to the plates and not the APA.
|
||||||
|
|
||||||
#+begin_src matlab
|
The dynamics from $V_a$ to $d_e$ and from $V_a$ to $d_a$ are compared in Figure [[fig:strut_1_comp_enc_int]].
|
||||||
[dvf_int_sweep, ~] = tfestimate(leg_enc_sweep.Va, leg_enc_sweep.da, win, [], [], 1/Ts);
|
|
||||||
[dvf_int_noise_hf, ~] = tfestimate(leg_enc_noise_hf.Va, leg_enc_noise_hf.da, win, [], [], 1/Ts);
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
figure;
|
figure;
|
||||||
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
||||||
|
|
||||||
ax1 = nexttile;
|
ax1 = nexttile([2,1]);
|
||||||
hold on;
|
hold on;
|
||||||
plot(f(f> 350), abs(dvf_enc_noise_hf(f> 350)), 'color', colors(1, :), ...
|
plot(f(f> 350), abs(dvf_enc_noise_hf(f> 350)), 'color', colors(1, :), ...
|
||||||
'DisplayName', 'Encoder');
|
'DisplayName', 'Encoder');
|
||||||
@ -2546,10 +2522,10 @@ plot(f(f<=350), abs(dvf_int_sweep( f<=350)), 'color', colors(2, :), ...
|
|||||||
'HandleVisibility', 'off');
|
'HandleVisibility', 'off');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Amplitude $d_e/V_a$ [m/V]'); set(gca, 'XTickLabel',[]);
|
ylabel('Amplitude $d/V_a$ [m/V]'); set(gca, 'XTickLabel',[]);
|
||||||
hold off;
|
hold off;
|
||||||
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 2);
|
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 2);
|
||||||
ylim([1e-9, 1e-3]);
|
ylim([1e-8, 1e-3]);
|
||||||
|
|
||||||
ax2 = nexttile;
|
ax2 = nexttile;
|
||||||
hold on;
|
hold on;
|
||||||
@ -2561,19 +2537,27 @@ hold off;
|
|||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
hold off;
|
hold off;
|
||||||
yticks(-360:90:360);
|
yticks(-360:90:360); ylim([-180, 180]);
|
||||||
|
|
||||||
linkaxes([ax1,ax2],'x');
|
linkaxes([ax1,ax2],'x');
|
||||||
xlim([10, 2e3]);
|
xlim([10, 2e3]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_important
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
Clearly using the encoder like this will not be useful.
|
exportFig('figs/strut_1_comp_enc_int.pdf', 'width', 'wide', 'height', 'tall');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
Probably, the encoders will have to be fixed on the plates so that the resonances of the APA are not a problem anymore.
|
#+name: fig:strut_1_comp_enc_int
|
||||||
|
#+caption:
|
||||||
|
#+RESULTS:
|
||||||
|
[[file:figs/strut_1_comp_enc_int.png]]
|
||||||
|
|
||||||
|
#+begin_important
|
||||||
|
It will clearly be difficult to do something (except some low frequency positioning) with the encoders fixed to the APA.
|
||||||
#+end_important
|
#+end_important
|
||||||
|
|
||||||
**** APA Resonances Frequency
|
**** APA Resonances Frequency
|
||||||
|
As shown in Figure [[fig:strut_1_spurious_resonances]], we can clearly see three spurious resonances at 197Hz, 290Hz and 376Hz.
|
||||||
|
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
figure;
|
figure;
|
||||||
@ -2592,19 +2576,33 @@ hold off;
|
|||||||
ylim([1e-7, 1e-3]); xlim([10, 2e3]);
|
ylim([1e-7, 1e-3]); xlim([10, 2e3]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
This is very close to what was estimated using the FEM.
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
|
exportFig('figs/strut_1_spurious_resonances.pdf', 'width', 'wide', 'height', 'tall');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:mode_bending_x
|
#+name: fig:strut_1_spurious_resonances
|
||||||
|
#+caption:
|
||||||
|
#+RESULTS:
|
||||||
|
[[file:figs/strut_1_spurious_resonances.png]]
|
||||||
|
|
||||||
|
|
||||||
|
These resonances correspond to parasitic resonances of the APA itself.
|
||||||
|
They are very close to what was estimated using the FEM:
|
||||||
|
- X-bending mode at ~190Hz (Figure [[fig:mode_bending_x_bis]])
|
||||||
|
- Y-bending mode at ~290Hz (Figure [[fig:mode_bending_y_bis]])
|
||||||
|
- Z-torsion mode at ~400Hz (Figure [[fig:mode_torsion_z_bis]])
|
||||||
|
|
||||||
|
#+name: fig:mode_bending_x_bis
|
||||||
#+caption: X-bending mode (189Hz)
|
#+caption: X-bending mode (189Hz)
|
||||||
#+attr_latex: :width 0.9\linewidth
|
#+attr_latex: :width 0.9\linewidth
|
||||||
[[file:figs/mode_bending_x.gif]]
|
[[file:figs/mode_bending_x.gif]]
|
||||||
|
|
||||||
#+name: fig:mode_bending_y
|
#+name: fig:mode_bending_y_bis
|
||||||
#+caption: Y-bending mode (285Hz)
|
#+caption: Y-bending mode (285Hz)
|
||||||
#+attr_latex: :width 0.9\linewidth
|
#+attr_latex: :width 0.9\linewidth
|
||||||
[[file:figs/mode_bending_y.gif]]
|
[[file:figs/mode_bending_y.gif]]
|
||||||
|
|
||||||
#+name: fig:mode_torsion_z
|
#+name: fig:mode_torsion_z_bis
|
||||||
#+caption: Z-torsion mode (400Hz)
|
#+caption: Z-torsion mode (400Hz)
|
||||||
#+attr_latex: :width 0.9\linewidth
|
#+attr_latex: :width 0.9\linewidth
|
||||||
[[file:figs/mode_torsion_z.gif]]
|
[[file:figs/mode_torsion_z.gif]]
|
||||||
@ -2613,10 +2611,11 @@ This is very close to what was estimated using the FEM.
|
|||||||
The resonances are indeed due to limited stiffness of the APA.
|
The resonances are indeed due to limited stiffness of the APA.
|
||||||
#+end_important
|
#+end_important
|
||||||
|
|
||||||
|
**** TODO Estimated Flexible Joint axial stiffness
|
||||||
**** FRF Identification - IFF
|
**** FRF Identification - IFF
|
||||||
In this section, the dynamics from $V_a$ to $V_s$ is identified.
|
In this section, the dynamics from $V_a$ to $V_s$ is identified.
|
||||||
|
|
||||||
First the coherence is computed and shown in Figure [[fig:frf_iff_plant_coh]].
|
First the coherence is computed and shown in Figure [[fig:strut_1_frf_iff_plant_coh]].
|
||||||
The coherence is very nice from 10Hz to 2kHz.
|
The coherence is very nice from 10Hz to 2kHz.
|
||||||
It is only dropping near a zeros at 40Hz, and near the resonance at 95Hz (the excitation amplitude being lowered).
|
It is only dropping near a zeros at 40Hz, and near the resonance at 95Hz (the excitation amplitude being lowered).
|
||||||
|
|
||||||
@ -2630,8 +2629,8 @@ colors = get(gca,'colororder');
|
|||||||
|
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
plot(f, coh_enc_noise_hf, 'color', [colors(1, :), 0.5], 'DisplayName', 'HF Noise');
|
plot(f, coh_enc_noise_hf, 'color', colors(1, :), 'DisplayName', 'HF Noise');
|
||||||
plot(f, coh_enc_sweep, 'color', [colors(2, :), 0.5], 'DisplayName', 'Sweep');
|
plot(f, coh_enc_sweep, 'color', colors(2, :), 'DisplayName', 'Sweep');
|
||||||
hold off;
|
hold off;
|
||||||
xlabel('Frequency [Hz]'); ylabel('Coherence [-]');
|
xlabel('Frequency [Hz]'); ylabel('Coherence [-]');
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||||
@ -2640,15 +2639,15 @@ legend('location', 'southeast');
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/frf_iff_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
|
exportFig('figs/strut_1_frf_iff_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:frf_iff_plant_coh
|
#+name: fig:strut_1_frf_iff_plant_coh
|
||||||
#+caption: Obtained coherence for the IFF plant
|
#+caption: Obtained coherence for the IFF plant
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/frf_iff_plant_coh.png]]
|
[[file:figs/strut_1_frf_iff_plant_coh.png]]
|
||||||
|
|
||||||
Then the FRF are estimated and shown in Figure [[fig:frf_iff_plant_tf]]
|
Then the FRF are estimated and shown in Figure [[fig:strut_1_enc_frf_iff_plant_tf]]
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
[iff_enc_sweep, ~] = tfestimate(leg_enc_sweep.Va, leg_enc_sweep.Vs, win, [], [], 1/Ts);
|
[iff_enc_sweep, ~] = tfestimate(leg_enc_sweep.Va, leg_enc_sweep.Vs, win, [], [], 1/Ts);
|
||||||
[iff_enc_noise_hf, ~] = tfestimate(leg_enc_noise_hf.Va, leg_enc_noise_hf.Vs, win, [], [], 1/Ts);
|
[iff_enc_noise_hf, ~] = tfestimate(leg_enc_noise_hf.Va, leg_enc_noise_hf.Vs, win, [], [], 1/Ts);
|
||||||
@ -2656,61 +2655,54 @@ Then the FRF are estimated and shown in Figure [[fig:frf_iff_plant_tf]]
|
|||||||
|
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
figure;
|
figure;
|
||||||
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
||||||
|
|
||||||
ax1 = nexttile;
|
ax1 = nexttile([2,1]);
|
||||||
hold on;
|
hold on;
|
||||||
plot(f(f> 350), abs(iff_enc_noise_hf(f> 350)), 'color', colors(1, :));
|
plot(f(f> 350), abs(iff_enc_noise_hf(f> 350)), 'k-');
|
||||||
plot(f(f<=350), abs(iff_enc_sweep( f<=350)), 'color', colors(1, :));
|
plot(f(f<=350), abs(iff_enc_sweep( f<=350)), 'k-');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Amplitude $V_s/V_a$ [V/V]'); set(gca, 'XTickLabel',[]);
|
ylabel('Amplitude $V_s/V_a$ [V/V]'); set(gca, 'XTickLabel',[]);
|
||||||
hold off;
|
hold off;
|
||||||
ylim([1e-2, 1e2]);
|
ylim([1e-2, 1e2]);
|
||||||
legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
|
|
||||||
|
|
||||||
ax2 = nexttile;
|
ax2 = nexttile;
|
||||||
hold on;
|
hold on;
|
||||||
plot(f(f> 350), 180/pi*angle(iff_enc_noise_hf(f> 350)), 'color', colors(1, :));
|
plot(f(f> 350), 180/pi*angle(iff_enc_noise_hf(f> 350)), 'k');
|
||||||
plot(f(f<=350), 180/pi*angle(iff_enc_sweep( f<=350)), 'color', colors(1, :));
|
plot(f(f<=350), 180/pi*angle(iff_enc_sweep( f<=350)), 'k');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
hold off;
|
hold off;
|
||||||
yticks(-360:90:360);
|
yticks(-360:90:360); ylim([-180, 180]);
|
||||||
|
|
||||||
linkaxes([ax1,ax2],'x');
|
linkaxes([ax1,ax2],'x');
|
||||||
xlim([10, 2e3]);
|
xlim([10, 2e3]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/frf_iff_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
|
exportFig('figs/strut_1_enc_frf_iff_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:frf_iff_plant_tf
|
#+name: fig:strut_1_enc_frf_iff_plant_tf
|
||||||
#+caption:Identified IFF Plant
|
#+caption:Identified IFF Plant
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/frf_iff_plant_tf.png]]
|
[[file:figs/strut_1_enc_frf_iff_plant_tf.png]]
|
||||||
|
|
||||||
**** Comparison to when the encoder is not fixed
|
|
||||||
|
|
||||||
#+begin_src matlab
|
|
||||||
[iff_sweep, ~] = tfestimate(leg_sweep.Va, leg_sweep.Vs, win, [], [], 1/Ts);
|
|
||||||
[iff_noise_hf, ~] = tfestimate(leg_noise_hf.Va, leg_noise_hf.Vs, win, [], [], 1/Ts);
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
|
Let's now compare the IFF plants whether the encoders are fixed to the APA or not (Figure [[fig:strut_1_frf_iff_comp_enc]]).
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
figure;
|
figure;
|
||||||
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
|
||||||
|
|
||||||
ax1 = nexttile;
|
ax1 = nexttile([2,1]);
|
||||||
hold on;
|
hold on;
|
||||||
plot(f(f> 350), abs(iff_enc_noise_hf(f> 350)), 'color', colors(1, :), ...
|
plot(f(f> 350), abs(iff_enc_noise_hf(f> 350)), 'color', colors(1, :), ...
|
||||||
'DisplayName', 'Encoder');
|
'DisplayName', 'Encoder');
|
||||||
plot(f(f<=350), abs(iff_enc_sweep( f<=350)), 'color', colors(1, :), ...
|
plot(f(f<=350), abs(iff_enc_sweep( f<=350)), 'color', colors(1, :), ...
|
||||||
'HandleVisibility', 'off');
|
'HandleVisibility', 'off');
|
||||||
plot(f(f> 350), abs(iff_noise_hf(f> 350)), 'color', colors(2, :), ...
|
plot(f(f> 350), abs(iff_noise_hf(f> 350)), 'color', colors(2, :), ...
|
||||||
'DisplayName', 'Withotu Encoder');
|
'DisplayName', 'Without Encoder');
|
||||||
plot(f(f<=350), abs(iff_sweep( f<=350)), 'color', colors(2, :), ...
|
plot(f(f<=350), abs(iff_sweep( f<=350)), 'color', colors(2, :), ...
|
||||||
'HandleVisibility', 'off');
|
'HandleVisibility', 'off');
|
||||||
hold off;
|
hold off;
|
||||||
@ -2730,12 +2722,21 @@ hold off;
|
|||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
hold off;
|
hold off;
|
||||||
yticks(-360:90:360);
|
yticks(-360:90:360); ylim([-180, 180]);
|
||||||
|
|
||||||
linkaxes([ax1,ax2],'x');
|
linkaxes([ax1,ax2],'x');
|
||||||
xlim([10, 2e3]);
|
xlim([10, 2e3]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
|
exportFig('figs/strut_1_frf_iff_effect_enc.pdf', 'width', 'wide', 'height', 'tall');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+name: fig:strut_1_frf_iff_comp_enc
|
||||||
|
#+caption: Effect of the encoder on the IFF plant
|
||||||
|
#+RESULTS:
|
||||||
|
[[file:figs/strut_1_frf_iff_effect_enc.png]]
|
||||||
|
|
||||||
#+begin_important
|
#+begin_important
|
||||||
We can see that the IFF does not change whether of not the encoder are fixed to the struts.
|
We can see that the IFF does not change whether of not the encoder are fixed to the struts.
|
||||||
#+end_important
|
#+end_important
|
||||||
|