diff --git a/backup.org b/backup.org index 1df0048..9124ad5 100644 --- a/backup.org +++ b/backup.org @@ -1,4 +1,5 @@ -* Identified Open Loop Plant :noexport: +* DONE Identified Open Loop Plant +CLOSED: [2024-11-13 Wed 18:19] <> ** Introduction :ignore: @@ -2228,625 +2229,7 @@ exportFig('figs/id31_coupling_decrease_rz_align_m3.pdf', 'width', 'full', 'heigh - Good match between the model and experiment -* TODO Noise Budget :noexport: -<> -** Introduction :ignore: - -In this section, the noise budget is performed. -The vibrations of the sample is measured in different conditions using the external metrology. - - -** Matlab Init :noexport:ignore: -#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) -<> -#+end_src - -#+begin_src matlab :exports none :results silent :noweb yes -<> -#+end_src - -#+begin_src matlab :tangle no :noweb yes -<> -#+end_src - -#+begin_src matlab :eval no :noweb yes -<> -#+end_src - -#+begin_src matlab :noweb yes -<> -#+end_src - -** Open-Loop Noise Budget -First, the noise is measured while no motion is performed. - -#+begin_src matlab -%% Load measured noise -data_m0 = load(sprintf('%s/freq_analysis/2023-08-11_16-51_m0_lac_off.mat', mat_dir)); -#+end_src - -Noise budget in the cartesian frame -#+begin_src matlab :exports none -%% Coordinate transform -J_int_to_X = [ 0 0 -0.787401574803149 -0.212598425196851 0; - 0.78740157480315 0.21259842519685 0 0 0; - 0 0 0 0 -1; - -13.1233595800525 13.1233595800525 0 0 0; - 0 0 -13.1233595800525 13.1233595800525 0]; - -a = J_int_to_X*[data_m0.d1; data_m0.d2; data_m0.d3; data_m0.d4; data_m0.d5]; -data_m0.t = Ts*[0:length(data_m0.d1)-1]; -data_m0.Dx_int = a(1,:); -data_m0.Dy_int = a(2,:); -data_m0.Dz_int = a(3,:); -data_m0.Rx_int = a(4,:); -data_m0.Ry_int = a(5,:); -#+end_src - -Data in the time domain -#+begin_src matlab :exports none :results none -%% Measured vibration with the interferometers -figure; -tiledlayout(1, 1, 'TileSpacing', 'compact', 'Padding', 'None'); - -ax1 = nexttile(); -hold on; -% plot(data_m0.t, 1e9*data_m0.Dx_int, '-', 'DisplayName', '$D_x$'); -plot(data_m0.t, 1e9*data_m0.Dy_int, '-', 'DisplayName', '$D_y$'); -plot(data_m0.t, 1e9*data_m0.Dz_int, '-', 'DisplayName', '$D_z$'); -% plot(data_m0.t, data_m0.Rx_int, 'DisplayName', '$R_x$'); -plot(data_m0.t, 1e9*data_m0.Ry_int, '-', 'DisplayName', '$R_y$'); -hold off; -set(gca, 'XScale', 'lin'); set(gca, 'YScale', 'lin'); -xlabel('Time [s]'); ylabel('Amplitude [nm]'); -legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1); -xlim([50, 54]) -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/id31_noise_budget_interf_time_domain_m0.pdf', 'width', 'full', 'height', 'normal'); -#+end_src - -#+name: fig:id31_noise_budget_interf_time_domain_m0 -#+caption: Measured vibration with the interferometers -#+RESULTS: -[[file:figs/id31_noise_budget_interf_time_domain_m0.png]] - -In the frequency domain -#+begin_src matlab :exports none -% Hannning Windows -Nfft = floor(2.0/Ts); -win = hanning(Nfft); -Noverlap = floor(Nfft/2); -#+end_src - -#+begin_src matlab :exports none -% And we get the frequency vector -[pxx_Dx, f] = pwelch(detrend(data_m0.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); -[pxx_Dy, ~] = pwelch(detrend(data_m0.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); -[pxx_Dz, ~] = pwelch(detrend(data_m0.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); -[pxx_Rx, ~] = pwelch(detrend(data_m0.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); -[pxx_Ry, ~] = pwelch(detrend(data_m0.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); -#+end_src - -#+begin_src matlab :exports none :results none -%% Obtained transfer function from generated voltages to measured voltages on the piezoelectric force sensor -figure; -tiledlayout(1, 1, 'TileSpacing', 'compact', 'Padding', 'None'); - -ax1 = nexttile(); -hold on; -% plot(f, sqrt(pxx_Dx), 'DisplayName', '$D_x$'); -plot(f, sqrt(pxx_Dy), 'DisplayName', '$D_y$'); -plot(f, sqrt(pxx_Dz), 'DisplayName', '$D_z$'); -% plot(f, sqrt(pxx_Rx), 'DisplayName', '$R_x$'); -plot(f, sqrt(pxx_Ry), 'DisplayName', '$R_y$'); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); ylabel('Amplitude [$V/\sqrt{Hz}$]'); -legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); -xlim([1, 5e3]); -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/id31_noise_budget_interf_freq_domain_m0.pdf', 'width', 'wide', 'height', 'normal'); -#+end_src - -#+name: fig:id31_noise_budget_interf_freq_domain_m0 -#+caption: Measured vibration with the interferometers -#+RESULTS: -[[file:figs/id31_noise_budget_interf_freq_domain_m0.png]] - -#+begin_src matlab :exports none :results none -%% Cumulative Amplitude Spectrum of the measured Dx and Dy motion -figure; -hold on; -% plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_Dx)))), 'DisplayName', '$D_x$'); -plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_Dy)))), 'DisplayName', sprintf('$D_y$ - %.0f nm', rms(1e9*detrend(data_m0.Dy_int, 0)))); -plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_Dz)))), 'DisplayName', sprintf('$D_z$ - %.0f nm', rms(1e9*detrend(data_m0.Dz_int, 0)))); -% plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_Rx)))), 'DisplayName', '$R_x$'); -plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_Ry)))), 'DisplayName', sprintf('$R_y$ - %.0f nrad', rms(1e9*detrend(data_m0.Ry_int, 0)))); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); ylabel('CAS [$m$]'); -legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1); -xlim([1, 5e3]); ylim([1e-10, 1e-7]); -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/id31_noise_budget_open_loop_cas_m0.pdf', 'width', 'wide', 'height', 'normal'); -#+end_src - -#+name: fig:id31_noise_budget_open_loop_cas_m0 -#+caption: Measured vibration with the interferometers -#+RESULTS: -[[file:figs/id31_noise_budget_open_loop_cas_m0.png]] - -** Effect of LAC -#+begin_src matlab -%% Load measured noise -data_ol = load(sprintf('%s/freq_analysis/2023-08-11_16-51_m0_lac_off.mat', mat_dir)); -data_lac = load(sprintf('%s/freq_analysis/2023-08-11_16-46_m0_lac_on.mat', mat_dir)); -#+end_src - -#+begin_src matlab :exports none -%% Coordinate transform -J_int_to_X = [ 0 0 -0.787401574803149 -0.212598425196851 0; - 0.78740157480315 0.21259842519685 0 0 0; - 0 0 0 0 -1; - -13.1233595800525 13.1233595800525 0 0 0; - 0 0 -13.1233595800525 13.1233595800525 0]; - -a = J_int_to_X*[data_ol.d1; data_ol.d2; data_ol.d3; data_ol.d4; data_ol.d5]; -data_ol.Dx_int = a(1,:); -data_ol.Dy_int = a(2,:); -data_ol.Dz_int = a(3,:); -data_ol.Rx_int = a(4,:); -data_ol.Ry_int = a(5,:); - -a = J_int_to_X*[data_lac.d1; data_lac.d2; data_lac.d3; data_lac.d4; data_lac.d5]; -data_lac.Dx_int = a(1,:); -data_lac.Dy_int = a(2,:); -data_lac.Dz_int = a(3,:); -data_lac.Rx_int = a(4,:); -data_lac.Ry_int = a(5,:); -#+end_src - -#+begin_src matlab :exports none -% Hannning Windows -Nfft = floor(2.0/Ts); -win = hanning(Nfft); -Noverlap = floor(Nfft/2); - -[data_ol.pxx_Dx, data_ol.f] = pwelch(detrend(data_ol.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_ol.pxx_Dy, ~ ] = pwelch(detrend(data_ol.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_ol.pxx_Dz, ~ ] = pwelch(detrend(data_ol.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_ol.pxx_Rx, ~ ] = pwelch(detrend(data_ol.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_ol.pxx_Ry, ~ ] = pwelch(detrend(data_ol.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); - -[data_lac.pxx_Dx, data_lac.f] = pwelch(detrend(data_lac.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_lac.pxx_Dy, ~ ] = pwelch(detrend(data_lac.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_lac.pxx_Dz, ~ ] = pwelch(detrend(data_lac.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_lac.pxx_Rx, ~ ] = pwelch(detrend(data_lac.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_lac.pxx_Ry, ~ ] = pwelch(detrend(data_lac.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); -#+end_src - -Effect of LAC (Figure ref:fig:id31_noise_budget_effect_lac_m0): -- reduce amplitude around 80Hz -- Inject some noise between 200 and 700Hz? - -#+begin_src matlab :exports none :results none -%% Obtained transfer function from generated voltages to measured voltages on the piezoelectric force sensor -figure; -tiledlayout(1, 3, 'TileSpacing', 'compact', 'Padding', 'None'); - -ax1 = nexttile(); -hold on; -plot(data_ol.f , sqrt(data_ol.pxx_Dy ), 'DisplayName', '$D_y$ - OL'); -plot(data_lac.f, sqrt(data_lac.pxx_Dy), 'DisplayName', '$D_y$ - LAC'); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); ylabel('Amplitude [$m/\sqrt{Hz}$]'); -legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); -title('$D_y$') - -ax2 = nexttile(); -hold on; -plot(data_ol.f , sqrt(data_ol.pxx_Dz ), 'DisplayName', '$D_z$ - OL'); -plot(data_lac.f, sqrt(data_lac.pxx_Dz), 'DisplayName', '$D_z$ - LAC'); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); -legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); -title('$D_z$') - -ax3 = nexttile(); -hold on; -plot(data_ol.f , sqrt(data_ol.pxx_Ry ), 'DisplayName', '$R_y$ - OL'); -plot(data_lac.f, sqrt(data_lac.pxx_Ry), 'DisplayName', '$R_y$ - LAC'); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); -legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); -title('$R_y$') - -linkaxes([ax1,ax2,ax3],'xy'); -xlim([1, 5e2]); ylim([1e-11, 2e-8]); -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/id31_noise_budget_effect_lac_m0.pdf', 'width', 'full', 'height', 'normal'); -#+end_src - -#+name: fig:id31_noise_budget_effect_lac_m0 -#+caption: Measured vibration with the interferometers -#+RESULTS: -[[file:figs/id31_noise_budget_effect_lac_m0.png]] - -#+begin_src matlab :exports none :results none -%% Cumulative Amplitude Spectrum of the measured Dx and Dy motion -figure; -tiledlayout(1, 3, 'TileSpacing', 'compact', 'Padding', 'None'); - -ax1 = nexttile(); -hold on; -plot(data_ol.f, sqrt(flip(-cumtrapz(flip(data_ol.f), flip(data_ol.pxx_Dy)))), 'DisplayName', 'OL'); -plot(data_lac.f, sqrt(flip(-cumtrapz(flip(data_lac.f), flip(data_lac.pxx_Dy)))), 'DisplayName', 'LAC'); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); ylabel('CAS [$m$]'); -title('$D_y$'); -legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); - -ax2 = nexttile(); -hold on; -plot(data_ol.f, sqrt(flip(-cumtrapz(flip(data_ol.f), flip(data_ol.pxx_Dz)))), 'DisplayName', 'OL'); -plot(data_lac.f, sqrt(flip(-cumtrapz(flip(data_lac.f), flip(data_lac.pxx_Dz)))), 'DisplayName', 'LAC'); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); -title('$D_z$'); -legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); - -ax3 = nexttile(); -hold on; -plot(data_ol.f, sqrt(flip(-cumtrapz(flip(data_ol.f), flip(data_ol.pxx_Ry)))), 'DisplayName', 'OL'); -plot(data_lac.f, sqrt(flip(-cumtrapz(flip(data_lac.f), flip(data_lac.pxx_Ry)))), 'DisplayName', 'LAC'); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); -title('$R_y$'); -legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); - -linkaxes([ax1,ax2,ax3],'xy'); -xlim([1, 1e3]); ylim([1e-10, 1e-7]); -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/id31_cas_effect_lac_m0.pdf', 'width', 'full', 'height', 'normal'); -#+end_src - -#+name: fig:id31_cas_effect_lac_m0 -#+caption: Measured vibration with the interferometers -#+RESULTS: -[[file:figs/id31_cas_effect_lac_m0.png]] - -** Effect of rotation -#+begin_src matlab -data_Wz0 = load(sprintf('%s/freq_analysis/2023-08-11_16-51_m0_lac_off.mat', mat_dir)); -data_Wz1 = load(sprintf('%s/freq_analysis/2023-08-11_17-18_m0_lac_off_1rpm.mat', mat_dir)); -data_Wz2 = load(sprintf('%s/freq_analysis/2023-08-11_17-39_m0_lac_off_30rpm.mat', mat_dir)); -#+end_src - -#+begin_src matlab :exports none -%% Coordinate transform -J_int_to_X = [ 0 0 -0.787401574803149 -0.212598425196851 0; - 0.78740157480315 0.21259842519685 0 0 0; - 0 0 0 0 -1; - -13.1233595800525 13.1233595800525 0 0 0; - 0 0 -13.1233595800525 13.1233595800525 0]; - -a = J_int_to_X*[data_Wz0.d1; data_Wz0.d2; data_Wz0.d3; data_Wz0.d4; data_Wz0.d5]; -data_Wz0.Dx_int = a(1,:); -data_Wz0.Dy_int = a(2,:); -data_Wz0.Dz_int = a(3,:); -data_Wz0.Rx_int = a(4,:); -data_Wz0.Ry_int = a(5,:); - -a = J_int_to_X*[data_Wz1.d1; data_Wz1.d2; data_Wz1.d3; data_Wz1.d4; data_Wz1.d5]; -data_Wz1.Dx_int = a(1,:); -data_Wz1.Dy_int = a(2,:); -data_Wz1.Dz_int = a(3,:); -data_Wz1.Rx_int = a(4,:); -data_Wz1.Ry_int = a(5,:); - -a = J_int_to_X*[data_Wz2.d1; data_Wz2.d2; data_Wz2.d3; data_Wz2.d4; data_Wz2.d5]; -data_Wz2.Dx_int = a(1,:); -data_Wz2.Dy_int = a(2,:); -data_Wz2.Dz_int = a(3,:); -data_Wz2.Rx_int = a(4,:); -data_Wz2.Ry_int = a(5,:); -#+end_src - -#+begin_src matlab :exports none -% Hannning Windows -Nfft = floor(20.0/Ts); -win = hanning(Nfft); -Noverlap = floor(Nfft/2); - -[data_Wz0.pxx_Dx, data_Wz0.f] = pwelch(detrend(data_Wz0.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_Wz0.pxx_Dy, ~ ] = pwelch(detrend(data_Wz0.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_Wz0.pxx_Dz, ~ ] = pwelch(detrend(data_Wz0.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_Wz0.pxx_Rx, ~ ] = pwelch(detrend(data_Wz0.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_Wz0.pxx_Ry, ~ ] = pwelch(detrend(data_Wz0.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); - -[data_Wz1.pxx_Dx, data_Wz1.f] = pwelch(detrend(data_Wz1.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_Wz1.pxx_Dy, ~ ] = pwelch(detrend(data_Wz1.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_Wz1.pxx_Dz, ~ ] = pwelch(detrend(data_Wz1.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_Wz1.pxx_Rx, ~ ] = pwelch(detrend(data_Wz1.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_Wz1.pxx_Ry, ~ ] = pwelch(detrend(data_Wz1.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); - -[data_Wz2.pxx_Dx, data_Wz2.f] = pwelch(detrend(data_Wz2.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_Wz2.pxx_Dy, ~ ] = pwelch(detrend(data_Wz2.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_Wz2.pxx_Dz, ~ ] = pwelch(detrend(data_Wz2.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_Wz2.pxx_Rx, ~ ] = pwelch(detrend(data_Wz2.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_Wz2.pxx_Ry, ~ ] = pwelch(detrend(data_Wz2.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); -#+end_src - -#+begin_src matlab :exports none :results none -%% Obtained transfer function from generated voltages to measured voltages on the piezoelectric force sensor -figure; -tiledlayout(1, 1, 'TileSpacing', 'compact', 'Padding', 'None'); - -ax1 = nexttile(); -hold on; -plot(data_Wz0.f, sqrt(data_Wz0.pxx_Dy), 'DisplayName', '$D_y$ - 0rpm'); -plot(data_Wz1.f, sqrt(data_Wz1.pxx_Dy), 'DisplayName', '$D_y$ - 1rpm'); -plot(data_Wz2.f, sqrt(data_Wz2.pxx_Dy), 'DisplayName', '$D_y$ - 30rpm'); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); ylabel('Amplitude [$V/\sqrt{Hz}$]'); -legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1); -xlim([0.1, 5e3]); -#+end_src - -Rotation induces lots of vibrations, especially at high velocity. - -#+begin_src matlab :exports none :results none -%% description -figure; -tiledlayout(1, 3, 'TileSpacing', 'compact', 'Padding', 'None'); - -ax1 = nexttile(); -hold on; -plot(data_Wz0.f, sqrt(flip(-cumtrapz(flip(data_Wz0.f), flip(data_Wz0.pxx_Dy)))), ... - 'DisplayName', sprintf('0rpm: $%.0f nm$', 1e9*rms(detrend(data_Wz0.Dy_int, 0)))); -plot(data_Wz1.f, sqrt(flip(-cumtrapz(flip(data_Wz1.f), flip(data_Wz1.pxx_Dy)))), ... - 'DisplayName', sprintf('6rpm: $%.0f nm$', 1e9*rms(detrend(data_Wz1.Dy_int, 0)))); -plot(data_Wz2.f, sqrt(flip(-cumtrapz(flip(data_Wz2.f), flip(data_Wz2.pxx_Dy)))), ... - 'DisplayName', sprintf('30rpm: $%.1f \\mu m$', 1e6*rms(detrend(data_Wz2.Dy_int, 0)))); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); ylabel('CAS [m rms, rad RMS]'); -legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1); -xticks([1e0, 1e1, 1e2]); -title('$D_y$') - -ax2 = nexttile(); -hold on; -plot(data_Wz0.f, sqrt(flip(-cumtrapz(flip(data_Wz0.f), flip(data_Wz0.pxx_Dz)))), ... - 'DisplayName', sprintf('0rpm: $%.0f nm$', 1e9*rms(detrend(data_Wz0.Dz_int, 0)))); -plot(data_Wz1.f, sqrt(flip(-cumtrapz(flip(data_Wz1.f), flip(data_Wz1.pxx_Dz)))), ... - 'DisplayName', sprintf('6rpm: $%.0f nm$', 1e9*rms(detrend(data_Wz1.Dz_int, 0)))); -plot(data_Wz2.f, sqrt(flip(-cumtrapz(flip(data_Wz2.f), flip(data_Wz2.pxx_Dz)))), ... - 'DisplayName', sprintf('30rpm: $%.0f nm$', 1e9*rms(detrend(data_Wz2.Dz_int, 0)))); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); -legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1); -xticks([1e0, 1e1, 1e2]); -title('$D_z$') - -ax3 = nexttile(); -hold on; -plot(data_Wz0.f, sqrt(flip(-cumtrapz(flip(data_Wz0.f), flip(data_Wz0.pxx_Ry)))), ... - 'DisplayName', sprintf('0rpm: $%.1f \\mu$rad', 1e6*rms(detrend(data_Wz0.Ry_int, 0)))); -plot(data_Wz1.f, sqrt(flip(-cumtrapz(flip(data_Wz1.f), flip(data_Wz1.pxx_Ry)))), ... - 'DisplayName', sprintf('6rpm: $%.1f \\mu$rad', 1e6*rms(detrend(data_Wz1.Ry_int, 0)))); -plot(data_Wz2.f, sqrt(flip(-cumtrapz(flip(data_Wz2.f), flip(data_Wz2.pxx_Ry)))), ... - 'DisplayName', sprintf('30rpm: $%.0f \\mu$rad', 1e6*rms(detrend(data_Wz2.Ry_int, 0)))); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); -legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1); -xticks([1e0, 1e1, 1e2]); -title('$R_y$') - -linkaxes([ax1,ax2,ax3],'xy'); -xlim([0.1, 5e2]); ylim([1e-10, 3e-5]); -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/id31_noise_budget_effect_rotation.pdf', 'width', 'full', 'height', 'normal'); -#+end_src - -#+name: fig:id31_noise_budget_effect_rotation -#+caption: Cumulative Amplitude Spectrum for the three important directions ($D_y$, $D_z$ and $R_y$). Three rotating velocities are shown. Integrated RMS values are shown in the legend. -#+RESULTS: -[[file:figs/id31_noise_budget_effect_rotation.png]] - -** Effect of HAC -#+begin_src matlab -%% Load measured noise -data_ol = load(sprintf('%s/freq_analysis/2023-08-11_16-51_m0_lac_off.mat', mat_dir)); -data_lac = load(sprintf('%s/freq_analysis/2023-08-11_16-46_m0_lac_on.mat' , mat_dir)); -data_hac = load(sprintf('%s/freq_analysis/2023-08-11_16-49_m0_hac_on.mat' , mat_dir)); -#+end_src - -#+begin_src matlab :exports none -%% Coordinate transform -J_int_to_X = [ 0 0 -0.787401574803149 -0.212598425196851 0; - 0.78740157480315 0.21259842519685 0 0 0; - 0 0 0 0 -1; - -13.1233595800525 13.1233595800525 0 0 0; - 0 0 -13.1233595800525 13.1233595800525 0]; - -a = J_int_to_X*[data_ol.d1; data_ol.d2; data_ol.d3; data_ol.d4; data_ol.d5]; -data_ol.Dx_int = a(1,:); -data_ol.Dy_int = a(2,:); -data_ol.Dz_int = a(3,:); -data_ol.Rx_int = a(4,:); -data_ol.Ry_int = a(5,:); - -a = J_int_to_X*[data_lac.d1; data_lac.d2; data_lac.d3; data_lac.d4; data_lac.d5]; -data_lac.Dx_int = a(1,:); -data_lac.Dy_int = a(2,:); -data_lac.Dz_int = a(3,:); -data_lac.Rx_int = a(4,:); -data_lac.Ry_int = a(5,:); - -a = J_int_to_X*[data_hac.d1; data_hac.d2; data_hac.d3; data_hac.d4; data_hac.d5]; -data_hac.Dx_int = a(1,:); -data_hac.Dy_int = a(2,:); -data_hac.Dz_int = a(3,:); -data_hac.Rx_int = a(4,:); -data_hac.Ry_int = a(5,:); -#+end_src - -#+begin_src matlab :exports none -% Hannning Windows -Nfft = floor(2.0/Ts); -win = hanning(Nfft); -Noverlap = floor(Nfft/2); - -[data_ol.pxx_Dx, data_ol.f] = pwelch(detrend(data_ol.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_ol.pxx_Dy, ~ ] = pwelch(detrend(data_ol.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_ol.pxx_Dz, ~ ] = pwelch(detrend(data_ol.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_ol.pxx_Rx, ~ ] = pwelch(detrend(data_ol.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_ol.pxx_Ry, ~ ] = pwelch(detrend(data_ol.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); - -[data_lac.pxx_Dx, data_lac.f] = pwelch(detrend(data_lac.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_lac.pxx_Dy, ~ ] = pwelch(detrend(data_lac.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_lac.pxx_Dz, ~ ] = pwelch(detrend(data_lac.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_lac.pxx_Rx, ~ ] = pwelch(detrend(data_lac.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_lac.pxx_Ry, ~ ] = pwelch(detrend(data_lac.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); - -[data_hac.pxx_Dx, data_hac.f] = pwelch(detrend(data_hac.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_hac.pxx_Dy, ~ ] = pwelch(detrend(data_hac.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_hac.pxx_Dz, ~ ] = pwelch(detrend(data_hac.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_hac.pxx_Rx, ~ ] = pwelch(detrend(data_hac.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); -[data_hac.pxx_Ry, ~ ] = pwelch(detrend(data_hac.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); -#+end_src - -Bandwidth is approximately 10Hz. - -#+begin_src matlab :exports none :results none -%% Cumulative Amplitude Spectrum of the measured Dx and Dy motion -figure; -tiledlayout(1, 3, 'TileSpacing', 'compact', 'Padding', 'None'); - -ax1 = nexttile(); -hold on; -plot(data_ol.f, sqrt(data_ol.pxx_Dy), 'DisplayName', 'OL'); -plot(data_lac.f, sqrt(data_lac.pxx_Dy), 'DisplayName', 'LAC'); -plot(data_hac.f, sqrt(data_hac.pxx_Dy), 'DisplayName', 'HAC'); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); ylabel('ASD [$m/\sqrt{Hz}$]'); -title('$D_y$'); -legend('location', 'northwest', 'FontSize', 8, 'NumColumns', 1); - -ax2 = nexttile(); -hold on; -plot(data_ol.f, sqrt(data_ol.pxx_Dz), 'DisplayName', 'OL'); -plot(data_lac.f, sqrt(data_lac.pxx_Dz), 'DisplayName', 'LAC'); -plot(data_hac.f, sqrt(data_hac.pxx_Dz), 'DisplayName', 'HAC'); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); -title('$D_z$'); -legend('location', 'northwest', 'FontSize', 8, 'NumColumns', 1); - -ax3 = nexttile(); -hold on; -plot(data_ol.f, sqrt(data_ol.pxx_Ry), 'DisplayName', 'OL'); -plot(data_lac.f, sqrt(data_lac.pxx_Ry), 'DisplayName', 'LAC'); -plot(data_hac.f, sqrt(data_hac.pxx_Ry), 'DisplayName', 'HAC'); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); -title('$R_y$'); -legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); - -linkaxes([ax1,ax2,ax3],'xy'); -xlim([1, 1e3]); ylim([1e-12, 1e-7]); -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/id31_noise_budget_effect_hac_m0.pdf', 'width', 'full', 'height', 'normal'); -#+end_src - -#+name: fig:id31_noise_budget_effect_hac_m0 -#+caption: Measured vibration with the interferometers -#+RESULTS: -[[file:figs/id31_noise_budget_effect_hac_m0.png]] - - - -#+begin_src matlab :exports none :results none -%% Cumulative Amplitude Spectrum of the measured Dx and Dy motion -figure; -tiledlayout(1, 3, 'TileSpacing', 'compact', 'Padding', 'None'); - -ax1 = nexttile(); -hold on; -plot(data_ol.f, sqrt(flip(-cumtrapz(flip(data_ol.f), flip(data_ol.pxx_Dy)))), 'DisplayName', 'OL'); -plot(data_lac.f, sqrt(flip(-cumtrapz(flip(data_lac.f), flip(data_lac.pxx_Dy)))), 'DisplayName', 'LAC'); -plot(data_hac.f, sqrt(flip(-cumtrapz(flip(data_hac.f), flip(data_hac.pxx_Dy)))), 'DisplayName', 'HAC'); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); ylabel('CAS [$m$]'); -title('$D_y$'); -legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); - -ax2 = nexttile(); -hold on; -plot(data_ol.f, sqrt(flip(-cumtrapz(flip(data_ol.f), flip(data_ol.pxx_Dz)))), 'DisplayName', 'OL'); -plot(data_lac.f, sqrt(flip(-cumtrapz(flip(data_lac.f), flip(data_lac.pxx_Dz)))), 'DisplayName', 'LAC'); -plot(data_hac.f, sqrt(flip(-cumtrapz(flip(data_hac.f), flip(data_hac.pxx_Dz)))), 'DisplayName', 'HAC'); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); -title('$D_z$'); -legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); - -ax3 = nexttile(); -hold on; -plot(data_ol.f, sqrt(flip(-cumtrapz(flip(data_ol.f), flip(data_ol.pxx_Ry)))), 'DisplayName', 'OL'); -plot(data_lac.f, sqrt(flip(-cumtrapz(flip(data_lac.f), flip(data_lac.pxx_Ry)))), 'DisplayName', 'LAC'); -plot(data_hac.f, sqrt(flip(-cumtrapz(flip(data_hac.f), flip(data_hac.pxx_Ry)))), 'DisplayName', 'HAC'); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); -title('$R_y$'); -legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); - -linkaxes([ax1,ax2,ax3],'xy'); -xlim([1, 1e3]); ylim([1e-10, 1e-6]); -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/id31_cas_effect_hac_m0.pdf', 'width', 'full', 'height', 'normal'); -#+end_src - -#+name: fig:id31_cas_effect_hac_m0 -#+caption: Measured vibration with the interferometers -#+RESULTS: -[[file:figs/id31_cas_effect_hac_m0.png]] - -** TODO Noise coming from force sensor - -* Integral Force Feedback :noexport: +* DONE Integral Force Feedback <> ** Introduction :ignore: @@ -3656,7 +3039,7 @@ exportFig('figs/id31_hac_damped_plant_estimated_simscape.pdf', 'width', 'wide', [[file:figs/id31_hac_damped_plant_estimated_simscape.png]] -* High Authority Control :noexport: +* High Authority Control <> ** Introduction :ignore: @@ -4366,14 +3749,14 @@ for i = 1:5 end for i = 1:6 plot(f, abs(G_hac_m0(:,i, i)), 'color', colors(i,:), ... - 'DisplayName', sprintf('$\\tau_{m,%i}/u_%i$', i, i)); + 'DisplayName', sprintf('$V_{s,%i}/u_%i$', i, i)); end plot(f, abs(G_hac_m0(:, 1, 2)), 'color', [0, 0, 0, 0.2], ... - 'DisplayName', '$\tau_{m,i}/u_j$'); + 'DisplayName', '$V_{s,i}/u_j$'); plot(freqs, abs(squeeze(freqresp(Gm_hac_m0('eL1', 'u1'), freqs, 'Hz'))), 'k--', ... - 'DisplayName', '$\tau_{m,i}/u_i$ - Model'); + 'DisplayName', '$V_{s,i}/u_i$ - Model'); plot(freqs, abs(squeeze(freqresp(Gm_hac_m0('eL2', 'u1'), freqs, 'Hz'))), 'color', [colors(1,:), 0.2], ... - 'DisplayName', '$\tau_{m,i}/u_j$ - Model'); + 'DisplayName', '$V_{s,i}/u_j$ - Model'); for i = 1:5 for j = i+1:6 plot(freqs, abs(squeeze(freqresp(Gm_hac_m0(sprintf('eL%i', i), sprintf('u%i', j)), freqs, 'Hz'))), 'color', [colors(1,:), 0.2], ... @@ -4672,14 +4055,14 @@ for i = 1:5 end for i = 1:6 plot(f, abs(G_hac_m1(:,i, i)), 'color', colors(i,:), ... - 'DisplayName', sprintf('$\\tau_{m,%i}/u_%i$', i, i)); + 'DisplayName', sprintf('$V_{s,%i}/u_%i$', i, i)); end plot(f, abs(G_hac_m1(:, 1, 2)), 'color', [0, 0, 0, 0.2], ... - 'DisplayName', '$\tau_{m,i}/u_j$'); + 'DisplayName', '$V_{s,i}/u_j$'); plot(freqs, abs(squeeze(freqresp(Gm_hac_m1('eL1', 'u1'), freqs, 'Hz'))), 'k--', ... - 'DisplayName', '$\tau_{m,i}/u_i$ - Model'); + 'DisplayName', '$V_{s,i}/u_i$ - Model'); plot(freqs, abs(squeeze(freqresp(Gm_hac_m1('eL2', 'u1'), freqs, 'Hz'))), 'color', [colors(1,:), 0.2], ... - 'DisplayName', '$\tau_{m,i}/u_j$ - Model'); + 'DisplayName', '$V_{s,i}/u_j$ - Model'); for i = 1:5 for j = i+1:6 plot(freqs, abs(squeeze(freqresp(Gm_hac_m1(sprintf('eL%i', i), sprintf('u%i', j)), freqs, 'Hz'))), 'color', [colors(1,:), 0.2], ... @@ -4945,7 +4328,7 @@ fprintf(fileID, formatSpec, [num; den]'); fclose(fileID); #+end_src -** Tomography - Performances +** DONE Tomography - Performances *** First scan with closed-loop at middle #+begin_src matlab @@ -5280,7 +4663,625 @@ exportFig('figs/id31_cas_m0_30rpm_ol_lac_hac.pdf', 'width', 'full', 'height', 't [[file:figs/id31_cas_m0_30rpm_ol_lac_hac.png]] -* 6DoF Control in Cartesian plane (rotating with the nano-hexapod) :noexport: +* DONE Dynamic Error Budgeting +<> +** Introduction :ignore: + +In this section, the noise budget is performed. +The vibrations of the sample is measured in different conditions using the external metrology. + + +** Matlab Init :noexport:ignore: +#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) +<> +#+end_src + +#+begin_src matlab :exports none :results silent :noweb yes +<> +#+end_src + +#+begin_src matlab :tangle no :noweb yes +<> +#+end_src + +#+begin_src matlab :eval no :noweb yes +<> +#+end_src + +#+begin_src matlab :noweb yes +<> +#+end_src + +** Open-Loop Noise Budget +First, the noise is measured while no motion is performed. + +#+begin_src matlab +%% Load measured noise +data_m0 = load(sprintf('%s/freq_analysis/2023-08-11_16-51_m0_lac_off.mat', mat_dir)); +#+end_src + +Noise budget in the cartesian frame +#+begin_src matlab :exports none +%% Coordinate transform +J_int_to_X = [ 0 0 -0.787401574803149 -0.212598425196851 0; + 0.78740157480315 0.21259842519685 0 0 0; + 0 0 0 0 -1; + -13.1233595800525 13.1233595800525 0 0 0; + 0 0 -13.1233595800525 13.1233595800525 0]; + +a = J_int_to_X*[data_m0.d1; data_m0.d2; data_m0.d3; data_m0.d4; data_m0.d5]; +data_m0.t = Ts*[0:length(data_m0.d1)-1]; +data_m0.Dx_int = a(1,:); +data_m0.Dy_int = a(2,:); +data_m0.Dz_int = a(3,:); +data_m0.Rx_int = a(4,:); +data_m0.Ry_int = a(5,:); +#+end_src + +Data in the time domain +#+begin_src matlab :exports none :results none +%% Measured vibration with the interferometers +figure; +tiledlayout(1, 1, 'TileSpacing', 'compact', 'Padding', 'None'); + +ax1 = nexttile(); +hold on; +% plot(data_m0.t, 1e9*data_m0.Dx_int, '-', 'DisplayName', '$D_x$'); +plot(data_m0.t, 1e9*data_m0.Dy_int, '-', 'DisplayName', '$D_y$'); +plot(data_m0.t, 1e9*data_m0.Dz_int, '-', 'DisplayName', '$D_z$'); +% plot(data_m0.t, data_m0.Rx_int, 'DisplayName', '$R_x$'); +plot(data_m0.t, 1e9*data_m0.Ry_int, '-', 'DisplayName', '$R_y$'); +hold off; +set(gca, 'XScale', 'lin'); set(gca, 'YScale', 'lin'); +xlabel('Time [s]'); ylabel('Amplitude [nm]'); +legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1); +xlim([50, 54]) +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/id31_noise_budget_interf_time_domain_m0.pdf', 'width', 'full', 'height', 'normal'); +#+end_src + +#+name: fig:id31_noise_budget_interf_time_domain_m0 +#+caption: Measured vibration with the interferometers +#+RESULTS: +[[file:figs/id31_noise_budget_interf_time_domain_m0.png]] + +In the frequency domain +#+begin_src matlab :exports none +% Hannning Windows +Nfft = floor(2.0/Ts); +win = hanning(Nfft); +Noverlap = floor(Nfft/2); +#+end_src + +#+begin_src matlab :exports none +% And we get the frequency vector +[pxx_Dx, f] = pwelch(detrend(data_m0.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); +[pxx_Dy, ~] = pwelch(detrend(data_m0.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); +[pxx_Dz, ~] = pwelch(detrend(data_m0.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); +[pxx_Rx, ~] = pwelch(detrend(data_m0.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); +[pxx_Ry, ~] = pwelch(detrend(data_m0.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); +#+end_src + +#+begin_src matlab :exports none :results none +%% Obtained transfer function from generated voltages to measured voltages on the piezoelectric force sensor +figure; +tiledlayout(1, 1, 'TileSpacing', 'compact', 'Padding', 'None'); + +ax1 = nexttile(); +hold on; +% plot(f, sqrt(pxx_Dx), 'DisplayName', '$D_x$'); +plot(f, sqrt(pxx_Dy), 'DisplayName', '$D_y$'); +plot(f, sqrt(pxx_Dz), 'DisplayName', '$D_z$'); +% plot(f, sqrt(pxx_Rx), 'DisplayName', '$R_x$'); +plot(f, sqrt(pxx_Ry), 'DisplayName', '$R_y$'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); ylabel('Amplitude [$V/\sqrt{Hz}$]'); +legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); +xlim([1, 5e3]); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/id31_noise_budget_interf_freq_domain_m0.pdf', 'width', 'wide', 'height', 'normal'); +#+end_src + +#+name: fig:id31_noise_budget_interf_freq_domain_m0 +#+caption: Measured vibration with the interferometers +#+RESULTS: +[[file:figs/id31_noise_budget_interf_freq_domain_m0.png]] + +#+begin_src matlab :exports none :results none +%% Cumulative Amplitude Spectrum of the measured Dx and Dy motion +figure; +hold on; +% plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_Dx)))), 'DisplayName', '$D_x$'); +plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_Dy)))), 'DisplayName', sprintf('$D_y$ - %.0f nm', rms(1e9*detrend(data_m0.Dy_int, 0)))); +plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_Dz)))), 'DisplayName', sprintf('$D_z$ - %.0f nm', rms(1e9*detrend(data_m0.Dz_int, 0)))); +% plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_Rx)))), 'DisplayName', '$R_x$'); +plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_Ry)))), 'DisplayName', sprintf('$R_y$ - %.0f nrad', rms(1e9*detrend(data_m0.Ry_int, 0)))); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); ylabel('CAS [$m$]'); +legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1); +xlim([1, 5e3]); ylim([1e-10, 1e-7]); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/id31_noise_budget_open_loop_cas_m0.pdf', 'width', 'wide', 'height', 'normal'); +#+end_src + +#+name: fig:id31_noise_budget_open_loop_cas_m0 +#+caption: Measured vibration with the interferometers +#+RESULTS: +[[file:figs/id31_noise_budget_open_loop_cas_m0.png]] + +** Effect of rotation +#+begin_src matlab +data_Wz0 = load(sprintf('%s/freq_analysis/2023-08-11_16-51_m0_lac_off.mat', mat_dir)); +data_Wz1 = load(sprintf('%s/freq_analysis/2023-08-11_17-18_m0_lac_off_1rpm.mat', mat_dir)); +data_Wz2 = load(sprintf('%s/freq_analysis/2023-08-11_17-39_m0_lac_off_30rpm.mat', mat_dir)); +#+end_src + +#+begin_src matlab :exports none +%% Coordinate transform +J_int_to_X = [ 0 0 -0.787401574803149 -0.212598425196851 0; + 0.78740157480315 0.21259842519685 0 0 0; + 0 0 0 0 -1; + -13.1233595800525 13.1233595800525 0 0 0; + 0 0 -13.1233595800525 13.1233595800525 0]; + +a = J_int_to_X*[data_Wz0.d1; data_Wz0.d2; data_Wz0.d3; data_Wz0.d4; data_Wz0.d5]; +data_Wz0.Dx_int = a(1,:); +data_Wz0.Dy_int = a(2,:); +data_Wz0.Dz_int = a(3,:); +data_Wz0.Rx_int = a(4,:); +data_Wz0.Ry_int = a(5,:); + +a = J_int_to_X*[data_Wz1.d1; data_Wz1.d2; data_Wz1.d3; data_Wz1.d4; data_Wz1.d5]; +data_Wz1.Dx_int = a(1,:); +data_Wz1.Dy_int = a(2,:); +data_Wz1.Dz_int = a(3,:); +data_Wz1.Rx_int = a(4,:); +data_Wz1.Ry_int = a(5,:); + +a = J_int_to_X*[data_Wz2.d1; data_Wz2.d2; data_Wz2.d3; data_Wz2.d4; data_Wz2.d5]; +data_Wz2.Dx_int = a(1,:); +data_Wz2.Dy_int = a(2,:); +data_Wz2.Dz_int = a(3,:); +data_Wz2.Rx_int = a(4,:); +data_Wz2.Ry_int = a(5,:); +#+end_src + +#+begin_src matlab :exports none +% Hannning Windows +Nfft = floor(20.0/Ts); +win = hanning(Nfft); +Noverlap = floor(Nfft/2); + +[data_Wz0.pxx_Dx, data_Wz0.f] = pwelch(detrend(data_Wz0.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_Wz0.pxx_Dy, ~ ] = pwelch(detrend(data_Wz0.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_Wz0.pxx_Dz, ~ ] = pwelch(detrend(data_Wz0.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_Wz0.pxx_Rx, ~ ] = pwelch(detrend(data_Wz0.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_Wz0.pxx_Ry, ~ ] = pwelch(detrend(data_Wz0.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); + +[data_Wz1.pxx_Dx, data_Wz1.f] = pwelch(detrend(data_Wz1.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_Wz1.pxx_Dy, ~ ] = pwelch(detrend(data_Wz1.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_Wz1.pxx_Dz, ~ ] = pwelch(detrend(data_Wz1.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_Wz1.pxx_Rx, ~ ] = pwelch(detrend(data_Wz1.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_Wz1.pxx_Ry, ~ ] = pwelch(detrend(data_Wz1.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); + +[data_Wz2.pxx_Dx, data_Wz2.f] = pwelch(detrend(data_Wz2.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_Wz2.pxx_Dy, ~ ] = pwelch(detrend(data_Wz2.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_Wz2.pxx_Dz, ~ ] = pwelch(detrend(data_Wz2.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_Wz2.pxx_Rx, ~ ] = pwelch(detrend(data_Wz2.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_Wz2.pxx_Ry, ~ ] = pwelch(detrend(data_Wz2.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); +#+end_src + +#+begin_src matlab :exports none :results none +%% Obtained transfer function from generated voltages to measured voltages on the piezoelectric force sensor +figure; +tiledlayout(1, 1, 'TileSpacing', 'compact', 'Padding', 'None'); + +ax1 = nexttile(); +hold on; +plot(data_Wz0.f, sqrt(data_Wz0.pxx_Dy), 'DisplayName', '$D_y$ - 0rpm'); +plot(data_Wz1.f, sqrt(data_Wz1.pxx_Dy), 'DisplayName', '$D_y$ - 1rpm'); +plot(data_Wz2.f, sqrt(data_Wz2.pxx_Dy), 'DisplayName', '$D_y$ - 30rpm'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); ylabel('Amplitude [$V/\sqrt{Hz}$]'); +legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1); +xlim([0.1, 5e3]); +#+end_src + +Rotation induces lots of vibrations, especially at high velocity. + +#+begin_src matlab :exports none :results none +%% description +figure; +tiledlayout(1, 3, 'TileSpacing', 'compact', 'Padding', 'None'); + +ax1 = nexttile(); +hold on; +plot(data_Wz0.f, sqrt(flip(-cumtrapz(flip(data_Wz0.f), flip(data_Wz0.pxx_Dy)))), ... + 'DisplayName', sprintf('0rpm: $%.0f nm$', 1e9*rms(detrend(data_Wz0.Dy_int, 0)))); +plot(data_Wz1.f, sqrt(flip(-cumtrapz(flip(data_Wz1.f), flip(data_Wz1.pxx_Dy)))), ... + 'DisplayName', sprintf('6rpm: $%.0f nm$', 1e9*rms(detrend(data_Wz1.Dy_int, 0)))); +plot(data_Wz2.f, sqrt(flip(-cumtrapz(flip(data_Wz2.f), flip(data_Wz2.pxx_Dy)))), ... + 'DisplayName', sprintf('30rpm: $%.1f \\mu m$', 1e6*rms(detrend(data_Wz2.Dy_int, 0)))); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); ylabel('CAS [m rms, rad RMS]'); +legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1); +xticks([1e0, 1e1, 1e2]); +title('$D_y$') + +ax2 = nexttile(); +hold on; +plot(data_Wz0.f, sqrt(flip(-cumtrapz(flip(data_Wz0.f), flip(data_Wz0.pxx_Dz)))), ... + 'DisplayName', sprintf('0rpm: $%.0f nm$', 1e9*rms(detrend(data_Wz0.Dz_int, 0)))); +plot(data_Wz1.f, sqrt(flip(-cumtrapz(flip(data_Wz1.f), flip(data_Wz1.pxx_Dz)))), ... + 'DisplayName', sprintf('6rpm: $%.0f nm$', 1e9*rms(detrend(data_Wz1.Dz_int, 0)))); +plot(data_Wz2.f, sqrt(flip(-cumtrapz(flip(data_Wz2.f), flip(data_Wz2.pxx_Dz)))), ... + 'DisplayName', sprintf('30rpm: $%.0f nm$', 1e9*rms(detrend(data_Wz2.Dz_int, 0)))); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); +legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1); +xticks([1e0, 1e1, 1e2]); +title('$D_z$') + +ax3 = nexttile(); +hold on; +plot(data_Wz0.f, sqrt(flip(-cumtrapz(flip(data_Wz0.f), flip(data_Wz0.pxx_Ry)))), ... + 'DisplayName', sprintf('0rpm: $%.1f \\mu$rad', 1e6*rms(detrend(data_Wz0.Ry_int, 0)))); +plot(data_Wz1.f, sqrt(flip(-cumtrapz(flip(data_Wz1.f), flip(data_Wz1.pxx_Ry)))), ... + 'DisplayName', sprintf('6rpm: $%.1f \\mu$rad', 1e6*rms(detrend(data_Wz1.Ry_int, 0)))); +plot(data_Wz2.f, sqrt(flip(-cumtrapz(flip(data_Wz2.f), flip(data_Wz2.pxx_Ry)))), ... + 'DisplayName', sprintf('30rpm: $%.0f \\mu$rad', 1e6*rms(detrend(data_Wz2.Ry_int, 0)))); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); +legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1); +xticks([1e0, 1e1, 1e2]); +title('$R_y$') + +linkaxes([ax1,ax2,ax3],'xy'); +xlim([0.1, 5e2]); ylim([1e-10, 3e-5]); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/id31_noise_budget_effect_rotation.pdf', 'width', 'full', 'height', 'normal'); +#+end_src + +#+name: fig:id31_noise_budget_effect_rotation +#+caption: Cumulative Amplitude Spectrum for the three important directions ($D_y$, $D_z$ and $R_y$). Three rotating velocities are shown. Integrated RMS values are shown in the legend. +#+RESULTS: +[[file:figs/id31_noise_budget_effect_rotation.png]] + +** Effect of LAC +#+begin_src matlab +%% Load measured noise +data_ol = load(sprintf('%s/freq_analysis/2023-08-11_16-51_m0_lac_off.mat', mat_dir)); +data_lac = load(sprintf('%s/freq_analysis/2023-08-11_16-46_m0_lac_on.mat', mat_dir)); +#+end_src + +#+begin_src matlab :exports none +%% Coordinate transform +J_int_to_X = [ 0 0 -0.787401574803149 -0.212598425196851 0; + 0.78740157480315 0.21259842519685 0 0 0; + 0 0 0 0 -1; + -13.1233595800525 13.1233595800525 0 0 0; + 0 0 -13.1233595800525 13.1233595800525 0]; + +a = J_int_to_X*[data_ol.d1; data_ol.d2; data_ol.d3; data_ol.d4; data_ol.d5]; +data_ol.Dx_int = a(1,:); +data_ol.Dy_int = a(2,:); +data_ol.Dz_int = a(3,:); +data_ol.Rx_int = a(4,:); +data_ol.Ry_int = a(5,:); + +a = J_int_to_X*[data_lac.d1; data_lac.d2; data_lac.d3; data_lac.d4; data_lac.d5]; +data_lac.Dx_int = a(1,:); +data_lac.Dy_int = a(2,:); +data_lac.Dz_int = a(3,:); +data_lac.Rx_int = a(4,:); +data_lac.Ry_int = a(5,:); +#+end_src + +#+begin_src matlab :exports none +% Hannning Windows +Nfft = floor(2.0/Ts); +win = hanning(Nfft); +Noverlap = floor(Nfft/2); + +[data_ol.pxx_Dx, data_ol.f] = pwelch(detrend(data_ol.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_ol.pxx_Dy, ~ ] = pwelch(detrend(data_ol.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_ol.pxx_Dz, ~ ] = pwelch(detrend(data_ol.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_ol.pxx_Rx, ~ ] = pwelch(detrend(data_ol.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_ol.pxx_Ry, ~ ] = pwelch(detrend(data_ol.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); + +[data_lac.pxx_Dx, data_lac.f] = pwelch(detrend(data_lac.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_lac.pxx_Dy, ~ ] = pwelch(detrend(data_lac.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_lac.pxx_Dz, ~ ] = pwelch(detrend(data_lac.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_lac.pxx_Rx, ~ ] = pwelch(detrend(data_lac.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_lac.pxx_Ry, ~ ] = pwelch(detrend(data_lac.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); +#+end_src + +Effect of LAC (Figure ref:fig:id31_noise_budget_effect_lac_m0): +- reduce amplitude around 80Hz +- Inject some noise between 200 and 700Hz? + +#+begin_src matlab :exports none :results none +%% Obtained transfer function from generated voltages to measured voltages on the piezoelectric force sensor +figure; +tiledlayout(1, 3, 'TileSpacing', 'compact', 'Padding', 'None'); + +ax1 = nexttile(); +hold on; +plot(data_ol.f , sqrt(data_ol.pxx_Dy ), 'DisplayName', '$D_y$ - OL'); +plot(data_lac.f, sqrt(data_lac.pxx_Dy), 'DisplayName', '$D_y$ - LAC'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); ylabel('Amplitude [$m/\sqrt{Hz}$]'); +legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); +title('$D_y$') + +ax2 = nexttile(); +hold on; +plot(data_ol.f , sqrt(data_ol.pxx_Dz ), 'DisplayName', '$D_z$ - OL'); +plot(data_lac.f, sqrt(data_lac.pxx_Dz), 'DisplayName', '$D_z$ - LAC'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); +legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); +title('$D_z$') + +ax3 = nexttile(); +hold on; +plot(data_ol.f , sqrt(data_ol.pxx_Ry ), 'DisplayName', '$R_y$ - OL'); +plot(data_lac.f, sqrt(data_lac.pxx_Ry), 'DisplayName', '$R_y$ - LAC'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); +legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); +title('$R_y$') + +linkaxes([ax1,ax2,ax3],'xy'); +xlim([1, 5e2]); ylim([1e-11, 2e-8]); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/id31_noise_budget_effect_lac_m0.pdf', 'width', 'full', 'height', 'normal'); +#+end_src + +#+name: fig:id31_noise_budget_effect_lac_m0 +#+caption: Measured vibration with the interferometers +#+RESULTS: +[[file:figs/id31_noise_budget_effect_lac_m0.png]] + +#+begin_src matlab :exports none :results none +%% Cumulative Amplitude Spectrum of the measured Dx and Dy motion +figure; +tiledlayout(1, 3, 'TileSpacing', 'compact', 'Padding', 'None'); + +ax1 = nexttile(); +hold on; +plot(data_ol.f, sqrt(flip(-cumtrapz(flip(data_ol.f), flip(data_ol.pxx_Dy)))), 'DisplayName', 'OL'); +plot(data_lac.f, sqrt(flip(-cumtrapz(flip(data_lac.f), flip(data_lac.pxx_Dy)))), 'DisplayName', 'LAC'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); ylabel('CAS [$m$]'); +title('$D_y$'); +legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); + +ax2 = nexttile(); +hold on; +plot(data_ol.f, sqrt(flip(-cumtrapz(flip(data_ol.f), flip(data_ol.pxx_Dz)))), 'DisplayName', 'OL'); +plot(data_lac.f, sqrt(flip(-cumtrapz(flip(data_lac.f), flip(data_lac.pxx_Dz)))), 'DisplayName', 'LAC'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); +title('$D_z$'); +legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); + +ax3 = nexttile(); +hold on; +plot(data_ol.f, sqrt(flip(-cumtrapz(flip(data_ol.f), flip(data_ol.pxx_Ry)))), 'DisplayName', 'OL'); +plot(data_lac.f, sqrt(flip(-cumtrapz(flip(data_lac.f), flip(data_lac.pxx_Ry)))), 'DisplayName', 'LAC'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); +title('$R_y$'); +legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); + +linkaxes([ax1,ax2,ax3],'xy'); +xlim([1, 1e3]); ylim([1e-10, 1e-7]); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/id31_cas_effect_lac_m0.pdf', 'width', 'full', 'height', 'normal'); +#+end_src + +#+name: fig:id31_cas_effect_lac_m0 +#+caption: Measured vibration with the interferometers +#+RESULTS: +[[file:figs/id31_cas_effect_lac_m0.png]] + +** Effect of HAC +#+begin_src matlab +%% Load measured noise +data_ol = load(sprintf('%s/freq_analysis/2023-08-11_16-51_m0_lac_off.mat', mat_dir)); +data_lac = load(sprintf('%s/freq_analysis/2023-08-11_16-46_m0_lac_on.mat' , mat_dir)); +data_hac = load(sprintf('%s/freq_analysis/2023-08-11_16-49_m0_hac_on.mat' , mat_dir)); +#+end_src + +#+begin_src matlab :exports none +%% Coordinate transform +J_int_to_X = [ 0 0 -0.787401574803149 -0.212598425196851 0; + 0.78740157480315 0.21259842519685 0 0 0; + 0 0 0 0 -1; + -13.1233595800525 13.1233595800525 0 0 0; + 0 0 -13.1233595800525 13.1233595800525 0]; + +a = J_int_to_X*[data_ol.d1; data_ol.d2; data_ol.d3; data_ol.d4; data_ol.d5]; +data_ol.Dx_int = a(1,:); +data_ol.Dy_int = a(2,:); +data_ol.Dz_int = a(3,:); +data_ol.Rx_int = a(4,:); +data_ol.Ry_int = a(5,:); + +a = J_int_to_X*[data_lac.d1; data_lac.d2; data_lac.d3; data_lac.d4; data_lac.d5]; +data_lac.Dx_int = a(1,:); +data_lac.Dy_int = a(2,:); +data_lac.Dz_int = a(3,:); +data_lac.Rx_int = a(4,:); +data_lac.Ry_int = a(5,:); + +a = J_int_to_X*[data_hac.d1; data_hac.d2; data_hac.d3; data_hac.d4; data_hac.d5]; +data_hac.Dx_int = a(1,:); +data_hac.Dy_int = a(2,:); +data_hac.Dz_int = a(3,:); +data_hac.Rx_int = a(4,:); +data_hac.Ry_int = a(5,:); +#+end_src + +#+begin_src matlab :exports none +% Hannning Windows +Nfft = floor(2.0/Ts); +win = hanning(Nfft); +Noverlap = floor(Nfft/2); + +[data_ol.pxx_Dx, data_ol.f] = pwelch(detrend(data_ol.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_ol.pxx_Dy, ~ ] = pwelch(detrend(data_ol.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_ol.pxx_Dz, ~ ] = pwelch(detrend(data_ol.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_ol.pxx_Rx, ~ ] = pwelch(detrend(data_ol.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_ol.pxx_Ry, ~ ] = pwelch(detrend(data_ol.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); + +[data_lac.pxx_Dx, data_lac.f] = pwelch(detrend(data_lac.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_lac.pxx_Dy, ~ ] = pwelch(detrend(data_lac.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_lac.pxx_Dz, ~ ] = pwelch(detrend(data_lac.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_lac.pxx_Rx, ~ ] = pwelch(detrend(data_lac.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_lac.pxx_Ry, ~ ] = pwelch(detrend(data_lac.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); + +[data_hac.pxx_Dx, data_hac.f] = pwelch(detrend(data_hac.Dx_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_hac.pxx_Dy, ~ ] = pwelch(detrend(data_hac.Dy_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_hac.pxx_Dz, ~ ] = pwelch(detrend(data_hac.Dz_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_hac.pxx_Rx, ~ ] = pwelch(detrend(data_hac.Rx_int, 0), win, Noverlap, Nfft, 1/Ts); +[data_hac.pxx_Ry, ~ ] = pwelch(detrend(data_hac.Ry_int, 0), win, Noverlap, Nfft, 1/Ts); +#+end_src + +Bandwidth is approximately 10Hz. + +#+begin_src matlab :exports none :results none +%% Cumulative Amplitude Spectrum of the measured Dx and Dy motion +figure; +tiledlayout(1, 3, 'TileSpacing', 'compact', 'Padding', 'None'); + +ax1 = nexttile(); +hold on; +plot(data_ol.f, sqrt(data_ol.pxx_Dy), 'DisplayName', 'OL'); +plot(data_lac.f, sqrt(data_lac.pxx_Dy), 'DisplayName', 'LAC'); +plot(data_hac.f, sqrt(data_hac.pxx_Dy), 'DisplayName', 'HAC'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); ylabel('ASD [$m/\sqrt{Hz}$]'); +title('$D_y$'); +legend('location', 'northwest', 'FontSize', 8, 'NumColumns', 1); + +ax2 = nexttile(); +hold on; +plot(data_ol.f, sqrt(data_ol.pxx_Dz), 'DisplayName', 'OL'); +plot(data_lac.f, sqrt(data_lac.pxx_Dz), 'DisplayName', 'LAC'); +plot(data_hac.f, sqrt(data_hac.pxx_Dz), 'DisplayName', 'HAC'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); +title('$D_z$'); +legend('location', 'northwest', 'FontSize', 8, 'NumColumns', 1); + +ax3 = nexttile(); +hold on; +plot(data_ol.f, sqrt(data_ol.pxx_Ry), 'DisplayName', 'OL'); +plot(data_lac.f, sqrt(data_lac.pxx_Ry), 'DisplayName', 'LAC'); +plot(data_hac.f, sqrt(data_hac.pxx_Ry), 'DisplayName', 'HAC'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); +title('$R_y$'); +legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); + +linkaxes([ax1,ax2,ax3],'xy'); +xlim([1, 1e3]); ylim([1e-12, 1e-7]); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/id31_noise_budget_effect_hac_m0.pdf', 'width', 'full', 'height', 'normal'); +#+end_src + +#+name: fig:id31_noise_budget_effect_hac_m0 +#+caption: Measured vibration with the interferometers +#+RESULTS: +[[file:figs/id31_noise_budget_effect_hac_m0.png]] + + + +#+begin_src matlab :exports none :results none +%% Cumulative Amplitude Spectrum of the measured Dx and Dy motion +figure; +tiledlayout(1, 3, 'TileSpacing', 'compact', 'Padding', 'None'); + +ax1 = nexttile(); +hold on; +plot(data_ol.f, sqrt(flip(-cumtrapz(flip(data_ol.f), flip(data_ol.pxx_Dy)))), 'DisplayName', 'OL'); +plot(data_lac.f, sqrt(flip(-cumtrapz(flip(data_lac.f), flip(data_lac.pxx_Dy)))), 'DisplayName', 'LAC'); +plot(data_hac.f, sqrt(flip(-cumtrapz(flip(data_hac.f), flip(data_hac.pxx_Dy)))), 'DisplayName', 'HAC'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); ylabel('CAS [$m$]'); +title('$D_y$'); +legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); + +ax2 = nexttile(); +hold on; +plot(data_ol.f, sqrt(flip(-cumtrapz(flip(data_ol.f), flip(data_ol.pxx_Dz)))), 'DisplayName', 'OL'); +plot(data_lac.f, sqrt(flip(-cumtrapz(flip(data_lac.f), flip(data_lac.pxx_Dz)))), 'DisplayName', 'LAC'); +plot(data_hac.f, sqrt(flip(-cumtrapz(flip(data_hac.f), flip(data_hac.pxx_Dz)))), 'DisplayName', 'HAC'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); +title('$D_z$'); +legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); + +ax3 = nexttile(); +hold on; +plot(data_ol.f, sqrt(flip(-cumtrapz(flip(data_ol.f), flip(data_ol.pxx_Ry)))), 'DisplayName', 'OL'); +plot(data_lac.f, sqrt(flip(-cumtrapz(flip(data_lac.f), flip(data_lac.pxx_Ry)))), 'DisplayName', 'LAC'); +plot(data_hac.f, sqrt(flip(-cumtrapz(flip(data_hac.f), flip(data_hac.pxx_Ry)))), 'DisplayName', 'HAC'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); +title('$R_y$'); +legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); + +linkaxes([ax1,ax2,ax3],'xy'); +xlim([1, 1e3]); ylim([1e-10, 1e-6]); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/id31_cas_effect_hac_m0.pdf', 'width', 'full', 'height', 'normal'); +#+end_src + +#+name: fig:id31_cas_effect_hac_m0 +#+caption: Measured vibration with the interferometers +#+RESULTS: +[[file:figs/id31_cas_effect_hac_m0.png]] + +** TODO Noise coming from force sensor + +* 6DoF Control in Cartesian plane (rotating with the nano-hexapod) <> ** Matlab Init :noexport:ignore: #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) @@ -5304,8 +5305,6 @@ exportFig('figs/id31_cas_m0_30rpm_ol_lac_hac.pdf', 'width', 'full', 'height', 't #+end_src ** Introduction :ignore: -As only Dy, Dz and Ry directions are important, we could only control them. -This lead to a 3x3 plant that may be more decoupled than the 6x6 plant. ** 5x5 plant in Cartesian plane #+begin_src matlab :exports none @@ -5718,7 +5717,7 @@ fclose(fileID); ** Performances 2023-08-18_18-33_m0_1rpm_K_cart.mat -* 3DoF Control in Cartesian plane (fixed) :noexport: +* 3DoF Control in Cartesian plane (fixed) <> ** Matlab Init :noexport:ignore: #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) @@ -6522,7 +6521,7 @@ legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 3); xlim([1, 1e3]); #+end_src -* Complementary Filter Control :noexport: +* Complementary Filter Control <> ** Matlab Init :noexport:ignore: #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) @@ -6545,6 +6544,249 @@ xlim([1, 1e3]); <> #+end_src +** Tomography +*** TODO Slow Tomography Scans Comparison of control performances :noexport: +- [ ] Comparison of different control strategies + *Maybe not so important here* + +#+begin_src matlab +% Decentralized in the frame of the struts +data = load("2023-08-18_10-43_m0_1rpm.mat"); +data.time = Ts*[0:length(data.Rz)-1]; + +% Rotating cartesian frame +data_cart = load("2023-08-18_18-33_m0_1rpm_K_cart.mat"); +data_cart.time = Ts*[0:length(data_cart.Rz)-1]; + +% Fixed cartesian frame +data_cart_fixed = load("2023-08-18_19-08_m0_1rpm_K_cart_fixed.mat"); +data_cart_fixed.time = Ts*[0:length(data_cart_fixed.Rz)-1]; + +% Fixed cartesian frame with Complementary Filters +data_cf = load("2023-08-21_14-28_m0_1rpm_K_cf.mat"); +data_cf.time = Ts*[0:length(data_cf.Rz)-1]; +#+end_src + +#+begin_src matlab +1e9*rms(data.Dx_int(data.time<45)) +1e9*rms(data_cart.Dx_int(data_cart.time<45)) +1e9*rms(data_cart_fixed.Dx_int(data_cart_fixed.time<45)) +1e9*rms(data_cf.Dx_int(data_cf.time<45)) +#+end_src + +#+begin_src matlab +1e9*rms(data.Dy_int(data.time<45)) +1e9*rms(data_cart.Dy_int(data_cart.time<45)) +1e9*rms(data_cart_fixed.Dy_int(data_cart_fixed.time<45)) +1e9*rms(data_cf.Dy_int(data_cf.time<45)) +#+end_src + +#+begin_src matlab +1e9*rms(data.Dz_int(data.time<45)) +1e9*rms(data_cart.Dz_int(data_cart.time<45)) +1e9*rms(data_cart_fixed.Dz_int(data_cart_fixed.time<45)) +1e9*rms(data_cf.Dz_int(data_cf.time<45)) +#+end_src + +#+begin_src matlab +1e9*rms(data.Rx_int(data.time<45)) +1e9*rms(data_cart.Rx_int(data_cart.time<45)) +1e9*rms(data_cart_fixed.Rx_int(data_cart_fixed.time<45)) +1e9*rms(data_cf.Rx_int(data_cf.time<45)) +#+end_src + +#+begin_src matlab +1e9*rms(data.Ry_int(data.time<45)) +1e9*rms(data_cart.Ry_int(data_cart.time<45)) +1e9*rms(data_cart_fixed.Ry_int(data_cart_fixed.time<45)) +1e9*rms(data_cf.Ry_int(data_cf.time<45)) +#+end_src + +#+begin_src matlab +figure; + +hold on; +plot(data.time, data.Dy_int) +plot(data_cart.time, data_cart.Dy_int) +plot(data_cart_fixed.time, data_cart_fixed.Dy_int) +plot(data_cf.time, data_cf.Dy_int) +hold off; +#+end_src + +#+begin_src matlab :exports none +% Hannning Windows +Nfft = floor(10.0/Ts); +win = hanning(Nfft); +Noverlap = floor(Nfft/2); + +[data.pxx_Dx, data.f] = pwelch(detrend(data.Dx_int(data.time<45), 0), win, Noverlap, Nfft, 1/Ts); +[data.pxx_Dy, ~ ] = pwelch(detrend(data.Dy_int(data.time<45), 0), win, Noverlap, Nfft, 1/Ts); +[data.pxx_Dz, ~ ] = pwelch(detrend(data.Dz_int(data.time<45), 0), win, Noverlap, Nfft, 1/Ts); +[data.pxx_Rx, ~ ] = pwelch(detrend(data.Rx_int(data.time<45), 0), win, Noverlap, Nfft, 1/Ts); +[data.pxx_Ry, ~ ] = pwelch(detrend(data.Ry_int(data.time<45), 0), win, Noverlap, Nfft, 1/Ts); + +[data_cart.pxx_Dx, data_cart.f] = pwelch(detrend(data_cart.Dx_int(data_cart.time<45), 0), win, Noverlap, Nfft, 1/Ts); +[data_cart.pxx_Dy, ~ ] = pwelch(detrend(data_cart.Dy_int(data_cart.time<45), 0), win, Noverlap, Nfft, 1/Ts); +[data_cart.pxx_Dz, ~ ] = pwelch(detrend(data_cart.Dz_int(data_cart.time<45), 0), win, Noverlap, Nfft, 1/Ts); +[data_cart.pxx_Rx, ~ ] = pwelch(detrend(data_cart.Rx_int(data_cart.time<45), 0), win, Noverlap, Nfft, 1/Ts); +[data_cart.pxx_Ry, ~ ] = pwelch(detrend(data_cart.Ry_int(data_cart.time<45), 0), win, Noverlap, Nfft, 1/Ts); + +[data_cart_fixed.pxx_Dx, data_cart_fixed.f] = pwelch(detrend(data_cart_fixed.Dx_int(data_cart_fixed.time<45), 0), win, Noverlap, Nfft, 1/Ts); +[data_cart_fixed.pxx_Dy, ~ ] = pwelch(detrend(data_cart_fixed.Dy_int(data_cart_fixed.time<45), 0), win, Noverlap, Nfft, 1/Ts); +[data_cart_fixed.pxx_Dz, ~ ] = pwelch(detrend(data_cart_fixed.Dz_int(data_cart_fixed.time<45), 0), win, Noverlap, Nfft, 1/Ts); +[data_cart_fixed.pxx_Rx, ~ ] = pwelch(detrend(data_cart_fixed.Rx_int(data_cart_fixed.time<45), 0), win, Noverlap, Nfft, 1/Ts); +[data_cart_fixed.pxx_Ry, ~ ] = pwelch(detrend(data_cart_fixed.Ry_int(data_cart_fixed.time<45), 0), win, Noverlap, Nfft, 1/Ts); + +[data_cf.pxx_Dx, data_cf.f] = pwelch(detrend(data_cf.Dx_int(data_cf.time<45), 0), win, Noverlap, Nfft, 1/Ts); +[data_cf.pxx_Dy, ~ ] = pwelch(detrend(data_cf.Dy_int(data_cf.time<45), 0), win, Noverlap, Nfft, 1/Ts); +[data_cf.pxx_Dz, ~ ] = pwelch(detrend(data_cf.Dz_int(data_cf.time<45), 0), win, Noverlap, Nfft, 1/Ts); +[data_cf.pxx_Rx, ~ ] = pwelch(detrend(data_cf.Rx_int(data_cf.time<45), 0), win, Noverlap, Nfft, 1/Ts); +[data_cf.pxx_Ry, ~ ] = pwelch(detrend(data_cf.Ry_int(data_cf.time<45), 0), win, Noverlap, Nfft, 1/Ts); +#+end_src + +#+begin_src matlab +figure; + +hold on; +plot(data.f, data.pxx_Dy) +plot(data_cart.f, data_cart.pxx_Dy) +plot(data_cart_fixed.f, data_cart_fixed.pxx_Dy) +plot(data_cf.f, data_cf.pxx_Dy) +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); +% legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); +xlim([0.1, 5e2]); +#+end_src + +#+begin_src matlab +figure; + +hold on; +plot(data.f, sqrt(flip(-cumtrapz(flip(data.f), flip(data.pxx_Dy))))) +plot(data_cart.f, sqrt(flip(-cumtrapz(flip(data_cart.f), flip(data_cart.pxx_Dy))))) +plot(data_cart_fixed.f, sqrt(flip(-cumtrapz(flip(data_cart_fixed.f), flip(data_cart_fixed.pxx_Dy))))) +plot(data_cf.f, sqrt(flip(-cumtrapz(flip(data_cf.f), flip(data_cf.pxx_Dy))))) +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); +% legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); +xlim([0.1, 5e2]); +#+end_src + +*** TODO Medium velocity tomography scans with CF control :noexport: +#+begin_src matlab +data_m1_cf = load("/home/thomas/Cloud/work-projects/ID31-NASS/phd-thesis-chapters/C5-test-bench-id31/matlab/mat/nass/scans/2023-08-21_19-18_m1_6rpm_cf_control.mat"); +data_m1_cf.time = Ts*[0:length(data_m1_cf.Rz)-1]; +#+end_src + +#+begin_src matlab +data_m2_cf = load("/home/thomas/Cloud/work-projects/ID31-NASS/phd-thesis-chapters/C5-test-bench-id31/matlab/mat/nass/scans/2023-08-21_18-07_m2_6rpm_cf_control.mat"); +data_m2_cf.time = Ts*[0:length(data_m2_cf.Rz)-1]; +#+end_src + +And higher bandwidth: +#+begin_src matlab +data_m1_cf_high_fb = load("/home/thomas/Cloud/work-projects/ID31-NASS/phd-thesis-chapters/C5-test-bench-id31/matlab/mat/nass/scans/2023-08-21_19-24_m1_6rpm_cf_control_60Hz.mat"); +data_m1_cf_high_fb.time = Ts*[0:length(data_m1_cf_high_fb.Rz)-1]; +#+end_src + +#+begin_src matlab +figure; +hold on; +plot(data_m1_cf.Dy_int, detrend(data_m1_cf.Dz_int, 0), 'DisplayName', 'm1') +plot(data_m2_cf.Dy_int, detrend(data_m2_cf.Dz_int, 0), 'DisplayName', 'm2') +plot(data_m1_cf_high_fb.Dy_int, detrend(data_m1_cf_high_fb.Dz_int, 0), 'DisplayName', 'm1, high BW') +axis equal +legend +#+end_src + +#+begin_src matlab +1e9*rms(detrend(data_m1.Dz_int(i_m1+50000:end), 0)) +1e9*rms(detrend(data_m1.Dy_int(i_m1+50000:end), 0)) +1e9*rms(detrend(data_m1.Ry_int(i_m1+50000:end), 0)) +#+end_src + +#+begin_src matlab +1e9*rms(detrend(data_m1_cf.Dz_int, 0)) +1e9*rms(detrend(data_m1_cf.Dy_int, 0)) +1e9*rms(detrend(data_m1_cf.Ry_int, 0)) +#+end_src + +#+begin_src matlab +1e9*rms(detrend(data_m2.Dz_int, 0)) +1e9*rms(detrend(data_m2.Dy_int, 0)) +1e9*rms(detrend(data_m2.Ry_int, 0)) +#+end_src + +#+begin_src matlab +1e9*rms(detrend(data_m1_cf_high_fb.Dz_int, 0)) +1e9*rms(detrend(data_m1_cf_high_fb.Dy_int, 0)) +1e9*rms(detrend(data_m1_cf_high_fb.Ry_int, 0)) +#+end_src + +*** TODO Fast Tomography Scan with Complementary Filter Controller :noexport: +#+begin_src matlab +data_cf = load("/home/thomas/Cloud/work-projects/ID31-NASS/phd-thesis-chapters/C5-test-bench-id31/matlab/mat/nass/scans/2023-08-21_14-33_m0_30rpm_cf_control.mat"); +data_cf.time = Ts*[0:length(data_cf.Rz)-1]; +#+end_src + +#+begin_src matlab +[~, i0] = find(data.hac_status == 1); +1e9*rms(data.Dy_int(i0(1)+5000:end)) +1e9*rms(data.Dz_int(i0(1)+5000:end)) + +1e9*rms(data_cf.Dy_int) +1e9*rms(data_cf.Dz_int) +#+end_src + +Same performance than the robust controller in terms of RMS residual motion. + +#+begin_src matlab +figure; plot3(data.Dx_int, data.Dy_int, data.Dz_int) +#+end_src + +*** Tomography - Effect of the scanning velocity :noexport: +- [ ] What are the controller used here? Why worst results than with the robust controller? + +#+begin_src matlab +data_1rpm = load("2023-08-18_10-43_m0_1rpm.mat"); +data_1rpm.time = Ts*[0:length(data_1rpm.Rz)-1]; +#+end_src + +#+begin_src matlab +data_30rpm = load("2023-08-18_10-45_m0_30rpm.mat"); +data_30rpm.time = Ts*[0:length(data_30rpm.Rz)-1]; +#+end_src + +#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*) +data2orgtable([1e9*rms(detrend(data_1rpm.Dy_int, 0)), 1e9*rms(detrend(data_30rpm.Dy_int, 0)); 1e9*rms(detrend(data_1rpm.Dz_int, 0)), 1e9*rms(detrend(data_30rpm.Dz_int, 0)); 1e9*rms(detrend(data_1rpm.Ry_int, 0)), 1e9*rms(detrend(data_30rpm.Ry_int, 0))]', {'1RPM', '30RPM'}, {'$D_y$', '$D_z$', '$R_y$'}, ' %.1f '); +#+end_src + +#+name: tab:id31_tomography_effect_velocity_rms +#+caption: RMS values of the errors during tomography scan - Effect of $R_z$ velocity +#+attr_latex: :environment tabularx :width 0.5\linewidth :align lXXX +#+attr_latex: :center t :booktabs t +#+RESULTS: +| | $D_y$ | $D_z$ | $R_y$ | +|-------+-------+-------+-------| +| 1RPM | 30.9 | 5.9 | 92.4 | +| 30RPM | 71.7 | 12.5 | 301.3 | + +#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*) +data2orgtable([1e9*data_tomo_1rpm_m0.Dx_rms_cl, 1e9*data_tomo_1rpm_m0.Dy_rms_cl, 1e9*data_tomo_1rpm_m0.Dz_rms_cl, 1e9*data_tomo_1rpm_m0.Rx_rms_cl, 1e9*data_tomo_1rpm_m0.Ry_rms_cl; ... + 1e9*data_tomo_6rpm_m0.Dx_rms_cl, 1e9*data_tomo_6rpm_m0.Dy_rms_cl, 1e9*data_tomo_6rpm_m0.Dz_rms_cl, 1e9*data_tomo_6rpm_m0.Rx_rms_cl, 1e9*data_tomo_6rpm_m0.Ry_rms_cl; ... + 1e9*data_tomo_30rpm_m0.Dx_rms_cl, 1e9*data_tomo_30rpm_m0.Dy_rms_cl, 1e9*data_tomo_30rpm_m0.Dz_rms_cl, 1e9*data_tomo_30rpm_m0.Rx_rms_cl, 1e9*data_tomo_30rpm_m0.Ry_rms_cl], ... + {'1rpm', '6rpm', '30rpm'}, {'$D_x$ [$\mu m$]', '$D_y$ [$\mu m$]', '$D_z$ [$nm$]', '$R_x$ [$\mu\text{rad}$]', '$R_y$ [$\mu\text{rad}$]'}, ' %.0f '); +#+end_src + +#+RESULTS: +| | $D_x$ [$\mu m$] | $D_y$ [$\mu m$] | $D_z$ [$nm$] | $R_x$ [$\mu\text{rad}$] | $R_y$ [$\mu\text{rad}$] | +|-------+-----------------+-----------------+--------------+-------------------------+-------------------------| +| 1rpm | 13 | 15 | 5 | 57 | 55 | +| 6rpm | 17 | 19 | 5 | 70 | 73 | +| 30rpm | 34 | 38 | 10 | 127 | 129 | + ** m0 *** 3x3 plant in Cartesian plane #+begin_src matlab :exports none @@ -9600,7 +9842,7 @@ xlabel("Y motion [$nm$]"); ylabel("Z motion [$nm$]"); #+end_src -* Scans :noexport: +* DONE Scans <> ** Introduction :ignore: @@ -10809,7 +11051,7 @@ data2orgtable(data_results, {'Tomography ($R_z$ 1rpm)', 'Tomography ($R_z$ 6rpm) | Diffraction Tomography ($R_z$ 1rpm, $D_y$ 0.1mm/s) | 75 | 9 | 118 | | Diffraction Tomography ($R_z$ 1rpm, $D_y$ 1mm/s) | 428 | 11 | 169 | -* TODO SRI Figures :noexport: +* SRI Figures :noexport: ** Open Loop Figure / Effect of mass #+begin_src matlab :exports none %% Save Identified Plants diff --git a/matlab/mat/align_int_enc_Rz/align_int_enc_Rz_tx_first_scan/align_int_enc_Rz_tx_first_scan.h5 b/matlab/mat/align_int_enc_Rz/align_int_enc_Rz_tx_first_scan/align_int_enc_Rz_tx_first_scan.h5 deleted file mode 100644 index 17fd420..0000000 Binary files a/matlab/mat/align_int_enc_Rz/align_int_enc_Rz_tx_first_scan/align_int_enc_Rz_tx_first_scan.h5 and /dev/null differ diff --git a/matlab/mat/align_int_enc_Rz/align_int_enc_Rz_verif-after-correct-offset/align_int_enc_Rz_verif-after-correct-offset.h5 b/matlab/mat/align_int_enc_Rz/align_int_enc_Rz_verif-after-correct-offset/align_int_enc_Rz_verif-after-correct-offset.h5 deleted file mode 100644 index 078aae5..0000000 Binary files a/matlab/mat/align_int_enc_Rz/align_int_enc_Rz_verif-after-correct-offset/align_int_enc_Rz_verif-after-correct-offset.h5 and /dev/null differ diff --git a/matlab/mat/align_int_enc_Rz/align_int_enc_Rz_verif-after-offset/align_int_enc_Rz_verif-after-offset.h5 b/matlab/mat/align_int_enc_Rz/align_int_enc_Rz_verif-after-offset/align_int_enc_Rz_verif-after-offset.h5 deleted file mode 100644 index 7248fbd..0000000 Binary files a/matlab/mat/align_int_enc_Rz/align_int_enc_Rz_verif-after-offset/align_int_enc_Rz_verif-after-offset.h5 and /dev/null differ diff --git a/matlab/mat/align_int_enc_Rz/id31nass_align_int_enc_Rz.h5 b/matlab/mat/align_int_enc_Rz/id31nass_align_int_enc_Rz.h5 deleted file mode 100644 index e912d80..0000000 Binary files a/matlab/mat/align_int_enc_Rz/id31nass_align_int_enc_Rz.h5 and /dev/null differ diff --git a/matlab/mat/alignment/alignment_h1dx_h1dy/alignment_h1dx_h1dy.h5 b/matlab/mat/alignment/alignment_h1dx_h1dy/alignment_h1dx_h1dy.h5 deleted file mode 100644 index 32b7b37..0000000 Binary files a/matlab/mat/alignment/alignment_h1dx_h1dy/alignment_h1dx_h1dy.h5 and /dev/null differ diff --git a/matlab/mat/alignment/alignment_h1rx_h1ry/alignment_h1rx_h1ry.h5 b/matlab/mat/alignment/alignment_h1rx_h1ry/alignment_h1rx_h1ry.h5 deleted file mode 100644 index 3330102..0000000 Binary files a/matlab/mat/alignment/alignment_h1rx_h1ry/alignment_h1rx_h1ry.h5 and /dev/null differ diff --git a/matlab/mat/alignment/alignment_h1rx_h1ry_0002/alignment_h1rx_h1ry_0002.h5 b/matlab/mat/alignment/alignment_h1rx_h1ry_0002/alignment_h1rx_h1ry_0002.h5 deleted file mode 100644 index 2d7f8af..0000000 Binary files a/matlab/mat/alignment/alignment_h1rx_h1ry_0002/alignment_h1rx_h1ry_0002.h5 and /dev/null differ diff --git a/matlab/mat/alignment/alignment_verify_metrology_using_h1/alignment_verify_metrology_using_h1.h5 b/matlab/mat/alignment/alignment_verify_metrology_using_h1/alignment_verify_metrology_using_h1.h5 deleted file mode 100644 index d76cf9c..0000000 Binary files a/matlab/mat/alignment/alignment_verify_metrology_using_h1/alignment_verify_metrology_using_h1.h5 and /dev/null differ diff --git a/matlab/mat/alignment/id31nass_alignment.h5 b/matlab/mat/alignment/id31nass_alignment.h5 deleted file mode 100644 index 3ee90ed..0000000 Binary files a/matlab/mat/alignment/id31nass_alignment.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/id31nass_metrology_acceptance.h5 b/matlab/mat/metrology_acceptance/id31nass_metrology_acceptance.h5 deleted file mode 100644 index 62447c6..0000000 Binary files a/matlab/mat/metrology_acceptance/id31nass_metrology_acceptance.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_after_int_align_meshXY/metrology_acceptance_after_int_align_meshXY.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_after_int_align_meshXY/metrology_acceptance_after_int_align_meshXY.h5 deleted file mode 100644 index 9a87127..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_after_int_align_meshXY/metrology_acceptance_after_int_align_meshXY.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_after_int_align_meshXZ/metrology_acceptance_after_int_align_meshXZ.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_after_int_align_meshXZ/metrology_acceptance_after_int_align_meshXZ.h5 deleted file mode 100644 index 84bb03e..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_after_int_align_meshXZ/metrology_acceptance_after_int_align_meshXZ.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_after_int_align_meshYZ/metrology_acceptance_after_int_align_meshYZ.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_after_int_align_meshYZ/metrology_acceptance_after_int_align_meshYZ.h5 deleted file mode 100644 index c88bbe5..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_after_int_align_meshYZ/metrology_acceptance_after_int_align_meshYZ.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_after_int_align_meshYZ_larger/metrology_acceptance_after_int_align_meshYZ_larger.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_after_int_align_meshYZ_larger/metrology_acceptance_after_int_align_meshYZ_larger.h5 deleted file mode 100644 index c93de1b..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_after_int_align_meshYZ_larger/metrology_acceptance_after_int_align_meshYZ_larger.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_align_ny_sphere_center/metrology_acceptance_align_ny_sphere_center.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_align_ny_sphere_center/metrology_acceptance_align_ny_sphere_center.h5 deleted file mode 100644 index 93eeea3..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_align_ny_sphere_center/metrology_acceptance_align_ny_sphere_center.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dx/metrology_acceptance_dx.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dx/metrology_acceptance_dx.h5 deleted file mode 100644 index dcca022..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dx/metrology_acceptance_dx.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0002/metrology_acceptance_dx_0002.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0002/metrology_acceptance_dx_0002.h5 deleted file mode 100644 index 49e0e34..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0002/metrology_acceptance_dx_0002.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0003/metrology_acceptance_dx_0003.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0003/metrology_acceptance_dx_0003.h5 deleted file mode 100644 index bcb3b33..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0003/metrology_acceptance_dx_0003.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0004/metrology_acceptance_dx_0004.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0004/metrology_acceptance_dx_0004.h5 deleted file mode 100644 index c4f5fdf..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0004/metrology_acceptance_dx_0004.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0005/metrology_acceptance_dx_0005.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0005/metrology_acceptance_dx_0005.h5 deleted file mode 100644 index f4364f4..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0005/metrology_acceptance_dx_0005.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0006/metrology_acceptance_dx_0006.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0006/metrology_acceptance_dx_0006.h5 deleted file mode 100644 index e244ec5..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0006/metrology_acceptance_dx_0006.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0007/metrology_acceptance_dx_0007.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0007/metrology_acceptance_dx_0007.h5 deleted file mode 100644 index 9516b9a..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0007/metrology_acceptance_dx_0007.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0008/metrology_acceptance_dx_0008.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0008/metrology_acceptance_dx_0008.h5 deleted file mode 100644 index 714875d..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0008/metrology_acceptance_dx_0008.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0009/metrology_acceptance_dx_0009.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0009/metrology_acceptance_dx_0009.h5 deleted file mode 100644 index 66b3afc..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dx_0009/metrology_acceptance_dx_0009.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dy/metrology_acceptance_dy.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dy/metrology_acceptance_dy.h5 deleted file mode 100644 index d636a3a..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dy/metrology_acceptance_dy.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0002/metrology_acceptance_dy_0002.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0002/metrology_acceptance_dy_0002.h5 deleted file mode 100644 index 5e36668..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0002/metrology_acceptance_dy_0002.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0003/metrology_acceptance_dy_0003.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0003/metrology_acceptance_dy_0003.h5 deleted file mode 100644 index c62d954..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0003/metrology_acceptance_dy_0003.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0004/metrology_acceptance_dy_0004.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0004/metrology_acceptance_dy_0004.h5 deleted file mode 100644 index bc12314..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0004/metrology_acceptance_dy_0004.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0005/metrology_acceptance_dy_0005.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0005/metrology_acceptance_dy_0005.h5 deleted file mode 100644 index b8ff96b..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0005/metrology_acceptance_dy_0005.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0006/metrology_acceptance_dy_0006.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0006/metrology_acceptance_dy_0006.h5 deleted file mode 100644 index addc031..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0006/metrology_acceptance_dy_0006.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0007/metrology_acceptance_dy_0007.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0007/metrology_acceptance_dy_0007.h5 deleted file mode 100644 index b78d997..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0007/metrology_acceptance_dy_0007.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0008/metrology_acceptance_dy_0008.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0008/metrology_acceptance_dy_0008.h5 deleted file mode 100644 index b401f3f..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0008/metrology_acceptance_dy_0008.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0009/metrology_acceptance_dy_0009.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0009/metrology_acceptance_dy_0009.h5 deleted file mode 100644 index 798c64d..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0009/metrology_acceptance_dy_0009.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0010/metrology_acceptance_dy_0010.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0010/metrology_acceptance_dy_0010.h5 deleted file mode 100644 index 178b38d..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dy_0010/metrology_acceptance_dy_0010.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_dz/metrology_acceptance_dz.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_dz/metrology_acceptance_dz.h5 deleted file mode 100644 index 40b8ffb..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_dz/metrology_acceptance_dz.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_meshXY/metrology_acceptance_meshXY.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_meshXY/metrology_acceptance_meshXY.h5 deleted file mode 100644 index 91cf2cc..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_meshXY/metrology_acceptance_meshXY.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_meshXZ/metrology_acceptance_meshXZ.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_meshXZ/metrology_acceptance_meshXZ.h5 deleted file mode 100644 index 7869d26..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_meshXZ/metrology_acceptance_meshXZ.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance/metrology_acceptance_meshYZ/metrology_acceptance_meshYZ.h5 b/matlab/mat/metrology_acceptance/metrology_acceptance_meshYZ/metrology_acceptance_meshYZ.h5 deleted file mode 100644 index 8a51535..0000000 Binary files a/matlab/mat/metrology_acceptance/metrology_acceptance_meshYZ/metrology_acceptance_meshYZ.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance_new_align/id31nass_metrology_acceptance_new_align.h5 b/matlab/mat/metrology_acceptance_new_align/id31nass_metrology_acceptance_new_align.h5 deleted file mode 100644 index 120861e..0000000 Binary files a/matlab/mat/metrology_acceptance_new_align/id31nass_metrology_acceptance_new_align.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance_new_align/metrology_acceptance_new_align_dx/metrology_acceptance_new_align_dx.h5 b/matlab/mat/metrology_acceptance_new_align/metrology_acceptance_new_align_dx/metrology_acceptance_new_align_dx.h5 deleted file mode 100644 index b28ffc5..0000000 Binary files a/matlab/mat/metrology_acceptance_new_align/metrology_acceptance_new_align_dx/metrology_acceptance_new_align_dx.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance_new_align/metrology_acceptance_new_align_dy/metrology_acceptance_new_align_dy.h5 b/matlab/mat/metrology_acceptance_new_align/metrology_acceptance_new_align_dy/metrology_acceptance_new_align_dy.h5 deleted file mode 100644 index dea9f1a..0000000 Binary files a/matlab/mat/metrology_acceptance_new_align/metrology_acceptance_new_align_dy/metrology_acceptance_new_align_dy.h5 and /dev/null differ diff --git a/matlab/mat/metrology_acceptance_new_align/metrology_acceptance_new_align_dz/metrology_acceptance_new_align_dz.h5 b/matlab/mat/metrology_acceptance_new_align/metrology_acceptance_new_align_dz/metrology_acceptance_new_align_dz.h5 deleted file mode 100644 index 4bf4f5b..0000000 Binary files a/matlab/mat/metrology_acceptance_new_align/metrology_acceptance_new_align_dz/metrology_acceptance_new_align_dz.h5 and /dev/null differ