diff --git a/2018-10-15 - Marc/figs/L4C_bode_plot.png b/2018-10-15 - Marc/figs/L4C_bode_plot.png new file mode 100644 index 0000000..8f0466f Binary files /dev/null and b/2018-10-15 - Marc/figs/L4C_bode_plot.png differ diff --git a/2018-10-15 - Marc/figs/coherence_vertical_tilt_sensors.png b/2018-10-15 - Marc/figs/coherence_vertical_tilt_sensors.png new file mode 100644 index 0000000..2ef615e Binary files /dev/null and b/2018-10-15 - Marc/figs/coherence_vertical_tilt_sensors.png differ diff --git a/2018-10-15 - Marc/figs/meas1.png b/2018-10-15 - Marc/figs/meas1.png index a83cacc..14b6aa4 100644 Binary files a/2018-10-15 - Marc/figs/meas1.png and b/2018-10-15 - Marc/figs/meas1.png differ diff --git a/2018-10-15 - Marc/figs/meas1_disp.png b/2018-10-15 - Marc/figs/meas1_disp.png index 02cb15d..a07a8da 100644 Binary files a/2018-10-15 - Marc/figs/meas1_disp.png and b/2018-10-15 - Marc/figs/meas1_disp.png differ diff --git a/2018-10-15 - Marc/figs/meas1_ry_tilt_psd.png b/2018-10-15 - Marc/figs/meas1_ry_tilt_psd.png index d77a666..1443b46 100644 Binary files a/2018-10-15 - Marc/figs/meas1_ry_tilt_psd.png and b/2018-10-15 - Marc/figs/meas1_ry_tilt_psd.png differ diff --git a/2018-10-15 - Marc/figs/meas1_ry_z_psd.png b/2018-10-15 - Marc/figs/meas1_ry_z_psd.png index 450bd34..80b54b1 100644 Binary files a/2018-10-15 - Marc/figs/meas1_ry_z_psd.png and b/2018-10-15 - Marc/figs/meas1_ry_z_psd.png differ diff --git a/2018-10-15 - Marc/figs/meas1_ty_y_psd.png b/2018-10-15 - Marc/figs/meas1_ty_y_psd.png index 068de63..7c8e644 100644 Binary files a/2018-10-15 - Marc/figs/meas1_ty_y_psd.png and b/2018-10-15 - Marc/figs/meas1_ty_y_psd.png differ diff --git a/2018-10-15 - Marc/figs/meas2.png b/2018-10-15 - Marc/figs/meas2.png index 6cce602..cb4a2ba 100644 Binary files a/2018-10-15 - Marc/figs/meas2.png and b/2018-10-15 - Marc/figs/meas2.png differ diff --git a/2018-10-15 - Marc/figs/meas2_ry_tilt_psd.png b/2018-10-15 - Marc/figs/meas2_ry_tilt_psd.png index 50920af..1d9bb9a 100644 Binary files a/2018-10-15 - Marc/figs/meas2_ry_tilt_psd.png and b/2018-10-15 - Marc/figs/meas2_ry_tilt_psd.png differ diff --git a/2018-10-15 - Marc/figs/meas2_ry_z_psd.png b/2018-10-15 - Marc/figs/meas2_ry_z_psd.png index c1e7b07..678da64 100644 Binary files a/2018-10-15 - Marc/figs/meas2_ry_z_psd.png and b/2018-10-15 - Marc/figs/meas2_ry_z_psd.png differ diff --git a/2018-10-15 - Marc/figs/meas2_ty_y_psd.png b/2018-10-15 - Marc/figs/meas2_ty_y_psd.png index 2efa411..e2c43db 100644 Binary files a/2018-10-15 - Marc/figs/meas2_ty_y_psd.png and b/2018-10-15 - Marc/figs/meas2_ty_y_psd.png differ diff --git a/2018-10-15 - Marc/figs/meas3.png b/2018-10-15 - Marc/figs/meas3.png index 480abb3..bea2bc7 100644 Binary files a/2018-10-15 - Marc/figs/meas3.png and b/2018-10-15 - Marc/figs/meas3.png differ diff --git a/2018-10-15 - Marc/figs/meas3_hexa_z_psd.png b/2018-10-15 - Marc/figs/meas3_hexa_z_psd.png index 61b67c9..407ed7e 100644 Binary files a/2018-10-15 - Marc/figs/meas3_hexa_z_psd.png and b/2018-10-15 - Marc/figs/meas3_hexa_z_psd.png differ diff --git a/2018-10-15 - Marc/figs/meas3_ry_z_psd.png b/2018-10-15 - Marc/figs/meas3_ry_z_psd.png index 0033094..b025d3b 100644 Binary files a/2018-10-15 - Marc/figs/meas3_ry_z_psd.png and b/2018-10-15 - Marc/figs/meas3_ry_z_psd.png differ diff --git a/2018-10-15 - Marc/figs/meas3_ty_y_psd.png b/2018-10-15 - Marc/figs/meas3_ty_y_psd.png index 3f00961..dd48bcd 100644 Binary files a/2018-10-15 - Marc/figs/meas3_ty_y_psd.png and b/2018-10-15 - Marc/figs/meas3_ty_y_psd.png differ diff --git a/2018-10-15 - Marc/figs/meas4.png b/2018-10-15 - Marc/figs/meas4.png index b5d69b0..20579e5 100644 Binary files a/2018-10-15 - Marc/figs/meas4.png and b/2018-10-15 - Marc/figs/meas4.png differ diff --git a/2018-10-15 - Marc/figs/meas4_hexa_z_psd.png b/2018-10-15 - Marc/figs/meas4_hexa_z_psd.png index c960c79..32ef48b 100644 Binary files a/2018-10-15 - Marc/figs/meas4_hexa_z_psd.png and b/2018-10-15 - Marc/figs/meas4_hexa_z_psd.png differ diff --git a/2018-10-15 - Marc/figs/meas4_ry_z_psd.png b/2018-10-15 - Marc/figs/meas4_ry_z_psd.png index 49b45e5..910692a 100644 Binary files a/2018-10-15 - Marc/figs/meas4_ry_z_psd.png and b/2018-10-15 - Marc/figs/meas4_ry_z_psd.png differ diff --git a/2018-10-15 - Marc/figs/meas4_ty_y_psd.png b/2018-10-15 - Marc/figs/meas4_ty_y_psd.png index bbe596e..f0d286c 100644 Binary files a/2018-10-15 - Marc/figs/meas4_ty_y_psd.png and b/2018-10-15 - Marc/figs/meas4_ty_y_psd.png differ diff --git a/2018-10-15 - Marc/figs/meas5.png b/2018-10-15 - Marc/figs/meas5.png index 0600583..e4bfd83 100644 Binary files a/2018-10-15 - Marc/figs/meas5.png and b/2018-10-15 - Marc/figs/meas5.png differ diff --git a/2018-10-15 - Marc/figs/meas5_coh.png b/2018-10-15 - Marc/figs/meas5_coh.png index 077427a..bb4255b 100644 Binary files a/2018-10-15 - Marc/figs/meas5_coh.png and b/2018-10-15 - Marc/figs/meas5_coh.png differ diff --git a/2018-10-15 - Marc/figs/meas5_tf.png b/2018-10-15 - Marc/figs/meas5_tf.png index d2aa3b7..e00fb38 100644 Binary files a/2018-10-15 - Marc/figs/meas5_tf.png and b/2018-10-15 - Marc/figs/meas5_tf.png differ diff --git a/2018-10-15 - Marc/figs/meas5_y_psd.png b/2018-10-15 - Marc/figs/meas5_y_psd.png index 1967c27..723ea63 100644 Binary files a/2018-10-15 - Marc/figs/meas5_y_psd.png and b/2018-10-15 - Marc/figs/meas5_y_psd.png differ diff --git a/2018-10-15 - Marc/figs/meas5_z_psd.png b/2018-10-15 - Marc/figs/meas5_z_psd.png index 0b009cd..babeb6a 100644 Binary files a/2018-10-15 - Marc/figs/meas5_z_psd.png and b/2018-10-15 - Marc/figs/meas5_z_psd.png differ diff --git a/2018-10-15 - Marc/figs/tf_vertical_tilt_sensors.png b/2018-10-15 - Marc/figs/tf_vertical_tilt_sensors.png new file mode 100644 index 0000000..741b916 Binary files /dev/null and b/2018-10-15 - Marc/figs/tf_vertical_tilt_sensors.png differ diff --git a/2018-10-15 - Marc/index.html b/2018-10-15 - Marc/index.html index 0aec146..fc93539 100644 Binary files a/2018-10-15 - Marc/index.html and b/2018-10-15 - Marc/index.html differ diff --git a/2018-10-15 - Marc/index.org b/2018-10-15 - Marc/index.org index 8fa8225..9e91e09 100644 --- a/2018-10-15 - Marc/index.org +++ b/2018-10-15 - Marc/index.org @@ -23,25 +23,22 @@ [[../index.org][Back to main page]]. -* Measurement Description +#+begin_src matlab :exports none :results silent + <> +#+end_src +* Measurement Description #+name: fig:setup_picture #+caption: Picture of the setup for the measurement -#+attr_latex: :scale 1 [[file:./figs/setup_picture.png]] -Sensors: -- 3 L-4C ([[file:../actuators-sensors/index.org::*L-4C][Documentation]]) [[file:~/MEGA/These/Measurements/actuators-sensors/index.org::tab:L4C][table]] +The sensor used are 3 L-4C geophones ([[file:../actuators-sensors/index.org::*L-4C][Documentation]]). Each motor are turn off and then on. The goal is to see what noise is injected in the system due to the regulation loop of each stage. * Importation of the data -#+begin_src matlab :exports none :results silent - <> -#+end_src - First, load all the measurement files: #+begin_src matlab :exports code :results silent meas = {}; @@ -94,10 +91,97 @@ For the measurement 5, the channels are shown table [[tab:meas_5]]. |---------+------------------+-------------------+------------------+-------------------| | Meas. 5 | Input 1: Floor Z | Input 2: Marble Z | Input 3: Floor Y | Input 4: Marble Y | +* Variables for analysis +We define the sampling frequency and the time vectors for the plots. + +#+begin_src matlab :exports code :results silent + Fs = 256; % [Hz] + dt = 1/(Fs); + t1 = dt*[0:length(meas{1}.Track1)-1]; + t2 = dt*[0:length(meas{2}.Track1)-1]; + t3 = dt*[0:length(meas{3}.Track1)-1]; + t4 = dt*[0:length(meas{4}.Track1)-1]; + t5 = dt*[0:length(meas{5}.Track1)-1]; +#+end_src + +For the frequency analysis, we define the frequency limits for the plot. +#+begin_src matlab :exports code :results silent + fmin = 1; % [Hz] + fmax = 100; % [Hz] +#+end_src + +Then we define the windows that will be used to average the results. +#+begin_src matlab :exports code :results silent + psd_window = hanning(2*fmin/dt); +#+end_src + +* Coherence between the two vertical geophones on the Tilt Stage +We first compute the coherence between the two geophones located on the tilt stage. The result is shown on figure [[fig:coherence_vertical_tilt_sensors]]. +#+begin_src matlab :results none + [coh, f] = mscohere(meas{1}.Track1(:), meas{1}.Track2(:), psd_window, [], [], Fs); +#+end_src + +#+begin_src matlab :results none :exports none + figure; + plot(f, coh); + set(gca, 'xscale', 'log'); + ylim([0, 1]); + xlabel('Frequency [Hz]'); ylabel('Coherence'); +#+end_src + +#+NAME: fig:coherence_vertical_tilt_sensors +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="figs/coherence_vertical_tilt_sensors.pdf" :var figsize="normal-normal" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:coherence_vertical_tilt_sensors +#+CAPTION: Coherence between the two vertical sensors positionned on the Tilt Stage +#+RESULTS: fig:coherence_vertical_tilt_sensors +[[file:figs/coherence_vertical_tilt_sensors.png]] + +We then compute the transfer function from one sensor to the other (figure [[fig:tf_vertical_tilt_sensors]]). +#+begin_src matlab :results none + [tf23, f] = tfestimate(meas{1}.Track1(:), meas{1}.Track2(:), psd_window, [], [], Fs); +#+end_src + +#+begin_src matlab :results none :exports none + figure; + ax1 = subaxis(2,1,1); + plot(f, abs(tf23)); + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + set(gca, 'XTickLabel',[]); + ylabel('Magnitude [V/(m/s)]'); + + ax2 = subaxis(2,1,2); + plot(f, 180/pi*angle(tf23)); + set(gca,'xscale','log'); + yticks(-180:90:180); + ylim([-180 180]); + xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); + linkaxes([ax1,ax2],'x'); +#+end_src + +#+NAME: fig:tf_vertical_tilt_sensors +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="figs/tf_vertical_tilt_sensors.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:tf_vertical_tilt_sensors +#+CAPTION: Transfer function from one vertical geophone on the tilt stage to the other vertical geophone on the tilt stage +#+RESULTS: fig:tf_vertical_tilt_sensors +[[file:figs/tf_vertical_tilt_sensors.png]] + +Even though the coherence is not very good, we observe no resonance between the two sensors. + +* Data Post Processing When using two geophone sensors on the same tilt stage (measurements 1 and 2), we post-process the data to obtain the z displacement and the rotation of the tilt stage: + #+begin_src matlab :results silent meas1_z = (meas{1}.Track1+meas{1}.Track2)/2; meas1_tilt = (meas{1}.Track1-meas{1}.Track2)/2; + meas{1}.Track1 = meas1_z; meas{1}.Track1_Y_Magnitude = 'Meter / second'; meas{1}.Track1_Name = 'Ry Z'; @@ -115,39 +199,63 @@ When using two geophone sensors on the same tilt stage (measurements 1 and 2), w meas{2}.Track2_Name = 'Ry Tilt'; #+end_src -* Variables for analysis -We define the sampling frequency and the time vectors for the plots. +* Normalization +Parameters of the geophone are defined below. +The transfer function from geophone velocity to measured voltage is shown on figure [[fig:L4C_bode_plot]]. -#+begin_src matlab :exports code :results silent - Fs = 256; % [Hz] - dt = 1/(Fs); - t1 = dt*[1:length(meas{1}.Track1)]; - t2 = dt*[1:length(meas{2}.Track1)]; - t3 = dt*[1:length(meas{3}.Track1)]; - t4 = dt*[1:length(meas{4}.Track1)]; - t5 = dt*[1:length(meas{5}.Track1)]; +Measurements will be normalized by the inverse of this transfer function in order to go from voltage measurement to velocity measurement. + +#+begin_src matlab :results none + L4C_w0 = 2*pi; % [rad/s] + L4C_ksi = 0.28; + L4C_G0 = 276.8; % [V/(m/s)] + L4C_G = L4C_G0*(s/L4C_w0)^2/((s/L4C_w0)^2 + 2*L4C_ksi*(s/L4C_w0) + 1); #+end_src -For the frequency analysis, we define the frequency limits for the plot. -#+begin_src matlab :exports code :results silent - fmin = 1; % [Hz] - fmax = 100; % [Hz] +#+begin_src matlab :results none :exports none + freqs = logspace(-2, 2, 1000); + + figure; + ax1 = subaxis(2,1,1); + plot(freqs, abs(squeeze(freqresp(L4C_G, freqs, 'Hz')))); + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + set(gca, 'XTickLabel',[]); + ylabel('Magnitude [V/(m/s)]'); + + ax2 = subaxis(2,1,2); + plot(freqs, 180/pi*angle(squeeze(freqresp(L4C_G, freqs, 'Hz')))); + set(gca,'xscale','log'); + yticks(-180:90:180); + ylim([-180 180]); + xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); + linkaxes([ax1,ax2],'x'); #+end_src -Then we define the windows that will be used to average the results. -#+begin_src matlab :exports code :results silent - psd_window = hanning(2*fmin/dt); +#+NAME: fig:L4C_bode_plot +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="figs/L4C_bode_plot.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") + <> #+end_src +#+NAME: fig:L4C_bode_plot +#+CAPTION: Bode plot of the L4C Geophone +#+RESULTS: fig:L4C_bode_plot +[[file:figs/L4C_bode_plot.png]] + +Time domain data are just normalized using the sensibility of the sensor ($276.8 V/m/s$). + * Measurement 1 - Effect of Ty stage - The configuration for this measurement is shown table [[tab:conf_meas1]]. #+CAPTION: Stages configuration - Measurement 1 #+NAME: tab:conf_meas1 -| Time | 0-309 | 309-end | -|------+-------+---------| -| Ty | OFF | ON | +| Time | 0-309 | 309-end | +|----------+-------+---------| +| Ty | OFF | *ON* | +| Ry | OFF | OFF | +| SlipRing | OFF | OFF | +| Spindle | OFF | OFF | +| Hexa | OFF | OFF | We then plot the measurements in time domain (figure [[fig:meas1]]). @@ -159,9 +267,9 @@ We then plot the measurements in time domain (figure [[fig:meas1]]). #+begin_src matlab :exports none :results silent figure; hold on; - plot(t1(ceil(300/dt):ceil(340/dt)), meas{1}.Track1(ceil(300/dt):ceil(340/dt))); - plot(t1(ceil(300/dt):ceil(340/dt)), meas{1}.Track2(ceil(300/dt):ceil(340/dt))); - plot(t1(ceil(300/dt):ceil(340/dt)), meas{1}.Track3(ceil(300/dt):ceil(340/dt))); + plot(t1(ceil(300/dt):ceil(340/dt)), (1/276.8).*meas{1}.Track1(ceil(300/dt):ceil(340/dt))); + plot(t1(ceil(300/dt):ceil(340/dt)), (1/276.8).*meas{1}.Track2(ceil(300/dt):ceil(340/dt))); + plot(t1(ceil(300/dt):ceil(340/dt)), (1/276.8).*meas{1}.Track3(ceil(300/dt):ceil(340/dt))); hold off; xlabel('Time [s]'); ylabel('Velocity [m/s]'); legend({meas{1}.Track1_Name, meas{1}.Track2_Name, meas{1}.Track3_Name}, 'Location', 'northeast') @@ -181,7 +289,7 @@ We then plot the measurements in time domain (figure [[fig:meas1]]). To understand what is going on, instead of looking at the velocity, we can look at the displacement by integrating the data. The displacement is computed by integrating the velocity using =cumtrapz= function. #+begin_src matlab :exports code :results silent tdisp = t1(ceil(300/dt):ceil(340/dt)); - xdisp = cumtrapz(tdisp, meas{1}.Track3(ceil(300/dt):ceil(340/dt))); + xdisp = cumtrapz(tdisp, (1/276.8).*meas{1}.Track3(ceil(300/dt):ceil(340/dt))); #+end_src Then we plot the position with respect to time (figure [[fig:meas1_disp]]). @@ -206,14 +314,14 @@ Then we plot the position with respect to time (figure [[fig:meas1_disp]]). We when compute the power spectral density of each measurement before and after turning on the stage. #+begin_src matlab :exports code :results silent - [pxx111, f111] = pwelch(meas{1}.Track1(1:ceil(300/dt)), psd_window, [], [], Fs); - [pxx112, f112] = pwelch(meas{1}.Track1(ceil(350/dt):end), psd_window, [], [], Fs); + [pxx111, f11] = pwelch(meas{1}.Track1(1:ceil(300/dt)), psd_window, [], [], Fs); + [pxx112, f12] = pwelch(meas{1}.Track1(ceil(350/dt):end), psd_window, [], [], Fs); - [pxx121, f121] = pwelch(meas{1}.Track2(1:ceil(300/dt)), psd_window, [], [], Fs); - [pxx122, f122] = pwelch(meas{1}.Track2(ceil(350/dt):end), psd_window, [], [], Fs); + [pxx121, ~] = pwelch(meas{1}.Track2(1:ceil(300/dt)), psd_window, [], [], Fs); + [pxx122, ~] = pwelch(meas{1}.Track2(ceil(350/dt):end), psd_window, [], [], Fs); - [pxx131, f131] = pwelch(meas{1}.Track3(1:ceil(300/dt)), psd_window, [], [], Fs); - [pxx132, f132] = pwelch(meas{1}.Track3(ceil(350/dt):end), psd_window, [], [], Fs); + [pxx131, ~] = pwelch(meas{1}.Track3(1:ceil(300/dt)), psd_window, [], [], Fs); + [pxx132, ~] = pwelch(meas{1}.Track3(ceil(350/dt):end), psd_window, [], [], Fs); #+end_src We finally plot the power spectral density of each track (figures [[fig:meas1_ry_z_psd]], [[fig:meas1_ry_tilt_psd]], [[fig:meas1_ty_y_psd]]). @@ -221,8 +329,8 @@ We finally plot the power spectral density of each track (figures [[fig:meas1_ry #+begin_src matlab :exports none :results silent figure; hold on; - plot(f111, sqrt(pxx111)); - plot(f112, sqrt(pxx112)); + plot(f11, sqrt(pxx111)./abs(squeeze(freqresp(L4C_G, f11, 'Hz')))); + plot(f12, sqrt(pxx112)./abs(squeeze(freqresp(L4C_G, f12, 'Hz')))); xlim([fmin, fmax]); xticks([1, 10, 100]); set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); @@ -246,8 +354,8 @@ We finally plot the power spectral density of each track (figures [[fig:meas1_ry #+begin_src matlab :exports none :results silent figure; hold on; - plot(f121, sqrt(pxx121)); - plot(f122, sqrt(pxx122)); + plot(f11, sqrt(pxx121)./abs(squeeze(freqresp(L4C_G, f11, 'Hz')))); + plot(f12, sqrt(pxx122)./abs(squeeze(freqresp(L4C_G, f12, 'Hz')))); xlim([fmin, fmax]); xticks([1, 10, 100]); set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); @@ -271,8 +379,8 @@ We finally plot the power spectral density of each track (figures [[fig:meas1_ry #+begin_src matlab :exports none :results silent figure; hold on; - plot(f131, sqrt(pxx131)); - plot(f132, sqrt(pxx132)); + plot(f11, sqrt(pxx131)./abs(squeeze(freqresp(L4C_G, f11, 'Hz')))); + plot(f12, sqrt(pxx132)./abs(squeeze(freqresp(L4C_G, f12, 'Hz')))); xlim([fmin, fmax]); xticks([1, 10, 100]); set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); @@ -303,26 +411,30 @@ It does not seems to have any effect on the Z motion of the tilt stage. #+end_important * Measurement 2 - Effect of Ry stage - The tilt stage is turned ON at around 326 seconds (table [[tab:conf_meas2]]). #+CAPTION: Stages configuration - Measurement 2 #+NAME: tab:conf_meas2 -| Time | 0-326 | 326-end | -|------+-------+---------| -| Tilt | OFF | ON | +| Time | 0-326 | 326-end | +|----------+-------+---------| +| Ty | OFF | OFF | +| Ry | OFF | *ON* | +| SlipRing | OFF | OFF | +| Spindle | OFF | OFF | +| Hexa | OFF | OFF | We plot the time domain (figure [[fig:meas2]]) and we don't observe anything special in the time domain. #+begin_src matlab :exports results :results silent figure; hold on; - plot(t2(ceil(300/dt):ceil(350/dt)), meas{2}.Track1(ceil(300/dt):ceil(350/dt))); - plot(t2(ceil(300/dt):ceil(350/dt)), meas{2}.Track3(ceil(300/dt):ceil(350/dt))); - plot(t2(ceil(300/dt):ceil(350/dt)), meas{2}.Track2(ceil(300/dt):ceil(350/dt))); + plot(t2(ceil(300/dt):ceil(350/dt)), (1/276.8).*meas{2}.Track1(ceil(300/dt):ceil(350/dt))); + plot(t2(ceil(300/dt):ceil(350/dt)), (1/276.8).*meas{2}.Track3(ceil(300/dt):ceil(350/dt))); + plot(t2(ceil(300/dt):ceil(350/dt)), (1/276.8).*meas{2}.Track2(ceil(300/dt):ceil(350/dt))); hold off; xlabel('Time [s]'); ylabel('Velocity [m/s]'); legend({meas{2}.Track1_Name, meas{2}.Track2_Name, meas{2}.Track3_Name}, 'Location', 'northeast') + xlim([300, 350]); #+end_src #+NAME: fig:meas2 @@ -338,21 +450,21 @@ We plot the time domain (figure [[fig:meas2]]) and we don't observe anything spe We compute the PSD of each track and we plot them (figures [[fig:meas2_ry_z_psd]], [[fig:meas2_ry_tilt_psd]] and [[fig:meas2_ty_y_psd]] ). #+begin_src matlab :exports code :results silent - [pxx211, f211] = pwelch(meas{2}.Track1(1:ceil(326/dt)), psd_window, [], [], Fs); - [pxx212, f212] = pwelch(meas{2}.Track1(ceil(326/dt):end), psd_window, [], [], Fs); + [pxx211, f21] = pwelch(meas{2}.Track1(1:ceil(326/dt)), psd_window, [], [], Fs); + [pxx212, f22] = pwelch(meas{2}.Track1(ceil(326/dt):end), psd_window, [], [], Fs); - [pxx221, f221] = pwelch(meas{2}.Track2(1:ceil(326/dt)), psd_window, [], [], Fs); - [pxx222, f222] = pwelch(meas{2}.Track2(ceil(326/dt):end), psd_window, [], [], Fs); + [pxx221, ~] = pwelch(meas{2}.Track2(1:ceil(326/dt)), psd_window, [], [], Fs); + [pxx222, ~] = pwelch(meas{2}.Track2(ceil(326/dt):end), psd_window, [], [], Fs); - [pxx231, f231] = pwelch(meas{2}.Track3(1:ceil(326/dt)), psd_window, [], [], Fs); - [pxx232, f232] = pwelch(meas{2}.Track3(ceil(326/dt):end), psd_window, [], [], Fs); + [pxx231, ~] = pwelch(meas{2}.Track3(1:ceil(326/dt)), psd_window, [], [], Fs); + [pxx232, ~] = pwelch(meas{2}.Track3(ceil(326/dt):end), psd_window, [], [], Fs); #+end_src #+begin_src matlab :exports none :results silent figure; hold on; - plot(f211, sqrt(pxx211)); - plot(f212, sqrt(pxx212)); + plot(f21, sqrt(pxx211)./abs(squeeze(freqresp(L4C_G, f21, 'Hz')))); + plot(f22, sqrt(pxx212)./abs(squeeze(freqresp(L4C_G, f22, 'Hz')))); xlim([fmin, fmax]); xticks([1, 10, 100]); set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); @@ -376,8 +488,8 @@ We compute the PSD of each track and we plot them (figures [[fig:meas2_ry_z_psd] #+begin_src matlab :exports none :results silent figure; hold on; - plot(f221, sqrt(pxx221)); - plot(f222, sqrt(pxx222)); + plot(f21, sqrt(pxx221)./abs(squeeze(freqresp(L4C_G, f21, 'Hz')))); + plot(f22, sqrt(pxx222)./abs(squeeze(freqresp(L4C_G, f22, 'Hz')))); xlim([fmin, fmax]); xticks([1, 10, 100]); set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); @@ -401,8 +513,8 @@ We compute the PSD of each track and we plot them (figures [[fig:meas2_ry_z_psd] #+begin_src matlab :exports none :results silent figure; hold on; - plot(f231, sqrt(pxx231)); - plot(f232, sqrt(pxx232)); + plot(f21, sqrt(pxx231)./abs(squeeze(freqresp(L4C_G, f21, 'Hz')))); + plot(f22, sqrt(pxx232)./abs(squeeze(freqresp(L4C_G, f22, 'Hz')))); xlim([fmin, fmax]); xticks([1, 10, 100]); set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); @@ -428,24 +540,26 @@ We compute the PSD of each track and we plot them (figures [[fig:meas2_ry_z_psd] #+end_important * Measurement 3 - Effect of the Hexapod - The hexapod is turned off after 406 seconds (table [[tab:conf_meas3]]). #+CAPTION: Stages configuration - Measurement 3 #+NAME: tab:conf_meas3 -| Time | 0-406 | 406-end | -|------+-------+---------| -| Tilt | ON | ON | -| Hexa | ON | OFF | +| Time | 0-406 | 406-end | +|----------+-------+---------| +| Ty | OFF | OFF | +| Ry | *ON* | *ON* | +| SlipRing | OFF | OFF | +| Spindle | OFF | OFF | +| Hexa | *ON* | OFF | The time domain result is shown figure [[fig:meas3]]. #+begin_src matlab :exports results :results silent figure; hold on; - plot(t3(ceil(380/dt):ceil(420/dt)), meas{3}.Track1(ceil(380/dt):ceil(420/dt))); - plot(t3(ceil(380/dt):ceil(420/dt)), meas{3}.Track2(ceil(380/dt):ceil(420/dt))); - plot(t3(ceil(380/dt):ceil(420/dt)), meas{3}.Track3(ceil(380/dt):ceil(420/dt))); + plot(t3(ceil(380/dt):ceil(420/dt)), (1/276.8).*meas{3}.Track1(ceil(380/dt):ceil(420/dt))); + plot(t3(ceil(380/dt):ceil(420/dt)), (1/276.8).*meas{3}.Track2(ceil(380/dt):ceil(420/dt))); + plot(t3(ceil(380/dt):ceil(420/dt)), (1/276.8).*meas{3}.Track3(ceil(380/dt):ceil(420/dt))); hold off; xlabel('Time [s]'); ylabel('Velocity [m/s]'); legend({meas{3}.Track1_Name, meas{3}.Track2_Name, meas{3}.Track3_Name}, 'Location', 'northeast') @@ -464,21 +578,21 @@ The time domain result is shown figure [[fig:meas3]]. We then compute the PSD of each track before and after turning off the hexapod and plot the results in the figures [[fig:meas3_hexa_z_psd]], [[fig:meas3_ry_z_psd]] and [[fig:meas3_ty_y_psd]]. #+begin_src matlab :exports code :results silent - [pxx311, f311] = pwelch(meas{3}.Track1(1:ceil(400/dt)), psd_window, [], [], Fs); - [pxx312, f312] = pwelch(meas{3}.Track1(ceil(420/dt):end), psd_window, [], [], Fs); + [pxx311, f31] = pwelch(meas{3}.Track1(1:ceil(400/dt)), psd_window, [], [], Fs); + [pxx312, f32] = pwelch(meas{3}.Track1(ceil(420/dt):end), psd_window, [], [], Fs); - [pxx321, f321] = pwelch(meas{3}.Track2(1:ceil(400/dt)), psd_window, [], [], Fs); - [pxx322, f322] = pwelch(meas{3}.Track2(ceil(420/dt):end), psd_window, [], [], Fs); + [pxx321, ~] = pwelch(meas{3}.Track2(1:ceil(400/dt)), psd_window, [], [], Fs); + [pxx322, ~] = pwelch(meas{3}.Track2(ceil(420/dt):end), psd_window, [], [], Fs); - [pxx331, f331] = pwelch(meas{3}.Track3(1:ceil(400/dt)), psd_window, [], [], Fs); - [pxx332, f332] = pwelch(meas{3}.Track3(ceil(420/dt):end), psd_window, [], [], Fs); + [pxx331, ~] = pwelch(meas{3}.Track3(1:ceil(400/dt)), psd_window, [], [], Fs); + [pxx332, ~] = pwelch(meas{3}.Track3(ceil(420/dt):end), psd_window, [], [], Fs); #+end_src #+begin_src matlab :exports none :results silent figure; hold on; - plot(f311, sqrt(pxx311)); - plot(f312, sqrt(pxx312)); + plot(f31, sqrt(pxx311)./abs(squeeze(freqresp(L4C_G, f31, 'Hz')))); + plot(f32, sqrt(pxx312)./abs(squeeze(freqresp(L4C_G, f32, 'Hz')))); xlim([fmin, fmax]); xticks([1, 10, 100]); set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); @@ -502,8 +616,8 @@ We then compute the PSD of each track before and after turning off the hexapod a #+begin_src matlab :exports none :results silent figure; hold on; - plot(f321, sqrt(pxx321)); - plot(f322, sqrt(pxx322)); + plot(f31, sqrt(pxx321)./abs(squeeze(freqresp(L4C_G, f31, 'Hz')))); + plot(f32, sqrt(pxx322)./abs(squeeze(freqresp(L4C_G, f32, 'Hz')))); xlim([fmin, fmax]); xticks([1, 10, 100]); set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); @@ -527,8 +641,8 @@ We then compute the PSD of each track before and after turning off the hexapod a #+begin_src matlab :exports none :results silent figure; hold on; - plot(f331, sqrt(pxx331)); - plot(f332, sqrt(pxx332)); + plot(f31, sqrt(pxx331)./abs(squeeze(freqresp(L4C_G, f31, 'Hz')))); + plot(f32, sqrt(pxx332)./abs(squeeze(freqresp(L4C_G, f32, 'Hz')))); xlim([fmin, fmax]); xticks([1, 10, 100]); set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); @@ -556,23 +670,24 @@ Turning ON induces some motion on the hexapod in the z direction (figure [[fig:m #+end_important * Measurement 4 - Effect of the Splip-Ring and Spindle - The slip ring is turned on at 300s, then the spindle is turned on at 620s (table [[tab:conf_meas4]]). The time domain signals are shown figure [[fig:meas4]]. #+CAPTION: Stages configuration - Measurement 4 #+NAME: tab:conf_meas4 | Time | 0-300 | 300-620 | 620-end | |----------+-------+---------+---------| -| SlipRing | OFF | ON | ON | +| Ty | OFF | OFF | OFF | +| Ry | OFF | OFF | OFF | +| SlipRing | OFF | *ON* | *ON* | +| Spindle | OFF | OFF | *ON* | | Hexa | OFF | OFF | OFF | -| Spindle | OFF | OFF | ON | #+begin_src matlab :exports results :results silent figure; hold on; - plot(t4, meas{4}.Track1); - plot(t4, meas{4}.Track2); - plot(t4, meas{4}.Track3); + plot(t4, (1/276.8).*meas{4}.Track1); + plot(t4, (1/276.8).*meas{4}.Track2); + plot(t4, (1/276.8).*meas{4}.Track3); hold off; xlabel('Time [s]'); ylabel('Velocity [m/s]'); legend({meas{4}.Track1_Name, meas{4}.Track2_Name, meas{4}.Track3_Name}, 'Location', 'southwest') @@ -591,25 +706,25 @@ The slip ring is turned on at 300s, then the spindle is turned on at 620s (table The PSD of each track are computed using the code below. #+begin_src matlab :exports none :results silent - [pxx411, f411] = pwelch(meas{4}.Track1(1:ceil(280/dt)), psd_window, [], [], Fs); - [pxx412, f412] = pwelch(meas{4}.Track1(ceil(280/dt):ceil(600/dt)), psd_window, [], [], Fs); - [pxx413, f413] = pwelch(meas{4}.Track1(ceil(640/dt):end), psd_window, [], [], Fs); + [pxx411, f41] = pwelch(meas{4}.Track1(1:ceil(280/dt)), psd_window, [], [], Fs); + [pxx412, f42] = pwelch(meas{4}.Track1(ceil(280/dt):ceil(600/dt)), psd_window, [], [], Fs); + [pxx413, f43] = pwelch(meas{4}.Track1(ceil(640/dt):end), psd_window, [], [], Fs); - [pxx421, f421] = pwelch(meas{4}.Track2(1:ceil(280/dt)), psd_window, [], [], Fs); - [pxx422, f422] = pwelch(meas{4}.Track2(ceil(280/dt):ceil(600/dt)), psd_window, [], [], Fs); - [pxx423, f423] = pwelch(meas{4}.Track2(ceil(640/dt):end), psd_window, [], [], Fs); + [pxx421, ~] = pwelch(meas{4}.Track2(1:ceil(280/dt)), psd_window, [], [], Fs); + [pxx422, ~] = pwelch(meas{4}.Track2(ceil(280/dt):ceil(600/dt)), psd_window, [], [], Fs); + [pxx423, ~] = pwelch(meas{4}.Track2(ceil(640/dt):end), psd_window, [], [], Fs); - [pxx431, f431] = pwelch(meas{4}.Track3(1:ceil(280/dt)), psd_window, [], [], Fs); - [pxx432, f432] = pwelch(meas{4}.Track3(ceil(280/dt):ceil(600/dt)), psd_window, [], [], Fs); - [pxx433, f433] = pwelch(meas{4}.Track3(ceil(640/dt):end), psd_window, [], [], Fs); + [pxx431, ~] = pwelch(meas{4}.Track3(1:ceil(280/dt)), psd_window, [], [], Fs); + [pxx432, ~] = pwelch(meas{4}.Track3(ceil(280/dt):ceil(600/dt)), psd_window, [], [], Fs); + [pxx433, ~] = pwelch(meas{4}.Track3(ceil(640/dt):end), psd_window, [], [], Fs); #+end_src #+begin_src matlab :exports none :results silent figure; hold on; - plot(f411, sqrt(pxx411)); - plot(f412, sqrt(pxx412)); - plot(f413, sqrt(pxx413)); + plot(f41, sqrt(pxx411)./abs(squeeze(freqresp(L4C_G, f41, 'Hz')))); + plot(f42, sqrt(pxx412)./abs(squeeze(freqresp(L4C_G, f42, 'Hz')))); + plot(f43, sqrt(pxx413)./abs(squeeze(freqresp(L4C_G, f43, 'Hz')))); xlim([fmin, fmax]); xticks([1, 10, 100]); set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); @@ -633,9 +748,9 @@ The PSD of each track are computed using the code below. #+begin_src matlab :exports none :results silent figure; hold on; - plot(f421, sqrt(pxx421)); - plot(f422, sqrt(pxx422)); - plot(f423, sqrt(pxx423)); + plot(f41, sqrt(pxx421)./abs(squeeze(freqresp(L4C_G, f41, 'Hz')))); + plot(f42, sqrt(pxx422)./abs(squeeze(freqresp(L4C_G, f42, 'Hz')))); + plot(f43, sqrt(pxx423)./abs(squeeze(freqresp(L4C_G, f43, 'Hz')))); xlim([fmin, fmax]); xticks([1, 10, 100]); set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); @@ -660,9 +775,9 @@ The PSD of each track are computed using the code below. #+begin_src matlab :exports none :results silent figure; hold on; - plot(f431, sqrt(pxx431)); - plot(f432, sqrt(pxx432)); - plot(f433, sqrt(pxx433)); + plot(f41, sqrt(pxx431)./abs(squeeze(freqresp(L4C_G, f41, 'Hz')))); + plot(f42, sqrt(pxx432)./abs(squeeze(freqresp(L4C_G, f42, 'Hz')))); + plot(f43, sqrt(pxx433)./abs(squeeze(freqresp(L4C_G, f43, 'Hz')))); xlim([fmin, fmax]); xticks([1, 10, 100]); set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); @@ -703,10 +818,10 @@ The time domain signals are shown on figure [[fig:meas5]]. #+begin_src matlab :exports results :results silent figure; hold on; - plot(t5, meas{5}.Track1); - plot(t5, meas{5}.Track2); - plot(t5, meas{5}.Track3); - plot(t5, meas{5}.Track4); + plot(t5, (1/276.8).*meas{5}.Track1); + plot(t5, (1/276.8).*meas{5}.Track2); + plot(t5, (1/276.8).*meas{5}.Track3); + plot(t5, (1/276.8).*meas{5}.Track4); hold off; xlabel('Time [s]'); ylabel('Velocity [m/s]'); legend({meas{5}.Track1_Name, meas{5}.Track2_Name, meas{5}.Track3_Name, meas{5}.Track4_Name}, 'Location', 'northeast') @@ -735,8 +850,8 @@ We compute the PSD of each track and we plot the PSD of the Z motion for the gro #+begin_src matlab :exports none :results silent figure; hold on; - plot(f51, sqrt(pxx51)); - plot(f52, sqrt(pxx52)); + plot(f51, sqrt(pxx51)./abs(squeeze(freqresp(L4C_G, f51, 'Hz')))); + plot(f52, sqrt(pxx52)./abs(squeeze(freqresp(L4C_G, f52, 'Hz')))); xlim([fmin, fmax]); xticks([1, 10, 100]); set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); @@ -759,8 +874,8 @@ We compute the PSD of each track and we plot the PSD of the Z motion for the gro #+begin_src matlab :exports none :results silent figure; hold on; - plot(f53, sqrt(pxx53)); - plot(f54, sqrt(pxx54)); + plot(f53, sqrt(pxx53)./abs(squeeze(freqresp(L4C_G, f53, 'Hz')))); + plot(f54, sqrt(pxx54)./abs(squeeze(freqresp(L4C_G, f54, 'Hz')))); xlim([fmin, fmax]); xticks([1, 10, 100]); set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');