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 --- a/2018-10-15 - Marc/index.html +++ b/2018-10-15 - Marc/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Measurement Analysis @@ -245,6 +245,28 @@ for the JavaScript code in this tag. } /*]]>*///--> + +
@@ -253,14 +275,17 @@ for the JavaScript code in this tag.

Table of Contents

@@ -269,22 +294,19 @@ for the JavaScript code in this tag. Back to main page.

-
-

1 Measurement Description

+
+

1 Measurement Description

-
+

setup_picture.png

Figure 1: Picture of the setup for the measurement

-Sensors: +The sensor used are 3 L-4C geophones (Documentation).

-

Each motor are turn off and then on. @@ -296,8 +318,8 @@ The goal is to see what noise is injected in the system due to the regulation lo

-
-

2 Importation of the data

+
+

2 Importation of the data

First, load all the measurement files: @@ -322,10 +344,10 @@ meas{4

-For the measurements 1 to 4, the measurement channels are shown table 1. +For the measurements 1 to 4, the measurement channels are shown table 1.

- +
@@ -378,9 +400,9 @@ For the measurements 1 to 4, the measurement channels are shown table 2. +For the measurement 5, the channels are shown table 2.

-
Table 1: Channels for measurements 1 to 4
+
@@ -413,35 +435,11 @@ For the measurement 5, the channels are shown table 2.
Table 2: Channels for measurement 5
- -

-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: -

-
-
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';
-meas{1}.Track2 = meas1_tilt;
-meas{1}.Track2_Y_Magnitude = 'Rad / second';
-meas{1}.Track2_Name = 'Ry Tilt';
-
-meas2_z    = (meas{2}.Track1+meas{2}.Track2)/2;
-meas2_tilt = (meas{2}.Track1-meas{2}.Track2)/2;
-meas{2}.Track1 = meas2_z;
-meas{2}.Track1_Y_Magnitude = 'Meter / second';
-meas{2}.Track1_Name = 'Ry Z';
-meas{2}.Track2 = meas2_tilt;
-meas{2}.Track2_Y_Magnitude = 'Rad / second';
-meas{2}.Track2_Name = 'Ry Tilt';
-
-
-
-

3 Variables for analysis

+
+

3 Variables for analysis

We define the sampling frequency and the time vectors for the plots. @@ -450,11 +448,11 @@ We define the sampling frequency and the time vectors for the plots.

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)];
+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];
 
@@ -477,41 +475,168 @@ Then we define the windows that will be used to average the results.
-
-

4 Measurement 1 - Effect of Ty stage

+
+

4 Coherence between the two vertical geophones on the Tilt Stage

-The configuration for this measurement is shown table 3. +We first compute the coherence between the two geophones located on the tilt stage. The result is shown on figure 2. +

+
+
[coh, f] = mscohere(meas{1}.Track1(:), meas{1}.Track2(:), psd_window, [], [], Fs);
+
+
+ + +
+

coherence_vertical_tilt_sensors.png +

+

Figure 2: Coherence between the two vertical sensors positionned on the Tilt Stage

+
+ +

+We then compute the transfer function from one sensor to the other (figure 3). +

+
+
[tf23, f] = tfestimate(meas{1}.Track1(:), meas{1}.Track2(:), psd_window, [], [], Fs);
+
+
+ + +
+

tf_vertical_tilt_sensors.png +

+

Figure 3: Transfer function from one vertical geophone on the tilt stage to the other vertical geophone on the tilt stage

+
+ +

+Even though the coherence is not very good, we observe no resonance between the two sensors. +

+
+
+ +
+

5 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:

- +
+
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';
+meas{1}.Track2 = meas1_tilt;
+meas{1}.Track2_Y_Magnitude = 'Rad / second';
+meas{1}.Track2_Name = 'Ry Tilt';
+
+meas2_z    = (meas{2}.Track1+meas{2}.Track2)/2;
+meas2_tilt = (meas{2}.Track1-meas{2}.Track2)/2;
+meas{2}.Track1 = meas2_z;
+meas{2}.Track1_Y_Magnitude = 'Meter / second';
+meas{2}.Track1_Name = 'Ry Z';
+meas{2}.Track2 = meas2_tilt;
+meas{2}.Track2_Y_Magnitude = 'Rad / second';
+meas{2}.Track2_Name = 'Ry Tilt';
+
+
+ + + +
+

6 Normalization

+
+

+Parameters of the geophone are defined below. +The transfer function from geophone velocity to measured voltage is shown on figure 4. +

+ +

+Measurements will be normalized by the inverse of this transfer function in order to go from voltage measurement to velocity measurement. +

+ +
+
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);
+
+
+ + +
+

L4C_bode_plot.png +

+

Figure 4: Bode plot of the L4C Geophone

+
+ +

+Time domain data are just normalized using the sensibility of the sensor (\(276.8 V/m/s\)). +

+
+
+ +
+

7 Measurement 1 - Effect of Ty stage

+
+

+The configuration for this measurement is shown table 3. +

+ +
-+ - + - - + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3: Stages configuration - Measurement 1
Time0-3090-309 309-end
TyOFFONOFFON
RyOFFOFF
SlipRingOFFOFF
SpindleOFFOFF
HexaOFFOFF

-We then plot the measurements in time domain (figure 2). +We then plot the measurements in time domain (figure 5).

@@ -523,10 +648,10 @@ How can we explain that?
-
+

meas1.png

-

Figure 2: Time domain - measurement 1

+

Figure 5: Time domain - measurement 1

@@ -534,58 +659,58 @@ To understand what is going on, instead of looking at the velocity, we can look

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)));
 

-Then we plot the position with respect to time (figure 3). +Then we plot the position with respect to time (figure 6).

-
+

meas1_disp.png

-

Figure 3: Y displacement of the Ty stage

+

Figure 6: Y displacement of the Ty stage

We when compute the power spectral density of each measurement before and after turning on the stage.

-
[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);
 

-We finally plot the power spectral density of each track (figures 4, 5, 6). +We finally plot the power spectral density of each track (figures 7, 8, 9).

-
+

meas1_ry_z_psd.png

-

Figure 4: PSD of the Z velocity of Ry stage - measurement 1

+

Figure 7: PSD of the Z velocity of Ry stage - measurement 1

-
+

meas1_ry_tilt_psd.png

-

Figure 5: PSD of the Rotation of Ry Stage - measurement 1

+

Figure 8: PSD of the Rotation of Ry Stage - measurement 1

-
+

meas1_ty_y_psd.png

-

Figure 6: PSD of the Ty velocity in the Y direction - measurement 1

+

Figure 9: PSD of the Ty velocity in the Y direction - measurement 1

@@ -606,84 +731,108 @@ It does not seems to have any effect on the Z motion of the tilt stage.
-
-

5 Measurement 2 - Effect of Ry stage

-
+
+

8 Measurement 2 - Effect of Ry stage

+

-The tilt stage is turned ON at around 326 seconds (table 4). +The tilt stage is turned ON at around 326 seconds (table 4).

- +
-+ - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4: Stages configuration - Measurement 2
Time0-3260-326 326-end
TiltOFFONTyOFFOFF
RyOFFON
SlipRingOFFOFF
SpindleOFFOFF
HexaOFFOFF

-We plot the time domain (figure 7) and we don't observe anything special in the time domain. +We plot the time domain (figure 10) and we don't observe anything special in the time domain.

-
+

meas2.png

-

Figure 7: Time domain - measurement 2

+

Figure 10: Time domain - measurement 2

-We compute the PSD of each track and we plot them (figures 8, 9 and 10 ). +We compute the PSD of each track and we plot them (figures 11, 12 and 13 ).

-
[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);
 
-
+

meas2_ry_z_psd.png

-

Figure 8: PSD of the Z velocity of Ry Stage - measurement 2

+

Figure 11: PSD of the Z velocity of Ry Stage - measurement 2

-
+

meas2_ry_tilt_psd.png

-

Figure 9: PSD of the Rotation motion of Ry Stage - measurement 2

+

Figure 12: PSD of the Rotation motion of Ry Stage - measurement 2

-
+

meas2_ty_y_psd.png

-

Figure 10: PSD of the Ty velocity in the Y direction - measurement 2

+

Figure 13: PSD of the Ty velocity in the Y direction - measurement 2

@@ -695,14 +844,14 @@ We observe no noticeable difference when the Tilt-stage is turned ON expect a sm
-
-

6 Measurement 3 - Effect of the Hexapod

-
+
+

9 Measurement 3 - Effect of the Hexapod

+

-The hexapod is turned off after 406 seconds (table 5). +The hexapod is turned off after 406 seconds (table 5).

- +
@@ -721,69 +870,87 @@ The hexapod is turned off after 406 seconds (table 5). - - - + + + + + + + + + + + + + + + + + + + + + - +
Table 5: Stages configuration - Measurement 3
TiltONONTyOFFOFF
RyONON
SlipRingOFFOFF
SpindleOFFOFF
HexaONON OFF

-The time domain result is shown figure 11. +The time domain result is shown figure 14.

-
+

meas3.png

-

Figure 11: Time domain - measurement 3

+

Figure 14: Time domain - measurement 3

-We then compute the PSD of each track before and after turning off the hexapod and plot the results in the figures 12, 13 and 14. +We then compute the PSD of each track before and after turning off the hexapod and plot the results in the figures 15, 16 and 17.

-
[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);
 
-
+

meas3_hexa_z_psd.png

-

Figure 12: PSD of the Z velocity of the Hexapod - measurement 3

+

Figure 15: PSD of the Z velocity of the Hexapod - measurement 3

-
+

meas3_ry_z_psd.png

-

Figure 13: PSD of the Z velocity of the Ry stage - measurement 3

+

Figure 16: PSD of the Z velocity of the Ry stage - measurement 3

-
+

meas3_ty_y_psd.png

-

Figure 14: PSD of the Ty velocity in the Y direction - measurement 3

+

Figure 17: PSD of the Ty velocity in the Y direction - measurement 3

-Turning ON induces some motion on the hexapod in the z direction (figure 12), on the tilt stage in the z direction (figure 13) and on the y motion of the Ty stage (figure 14): +Turning ON induces some motion on the hexapod in the z direction (figure 15), on the tilt stage in the z direction (figure 16) and on the y motion of the Ty stage (figure 17):

  • at 17Hz
  • @@ -794,14 +961,14 @@ Turning ON induces some motion on the hexapod in the z direction (figure
-
-

7 Measurement 4 - Effect of the Splip-Ring and Spindle

-
+
+

10 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 6). The time domain signals are shown figure 15. +The slip ring is turned on at 300s, then the spindle is turned on at 620s (table 6). The time domain signals are shown figure 18.

- +
@@ -822,11 +989,32 @@ The slip ring is turned on at 300s, then the spindle is turned on at 620s (table + + + + + + + + + + + + + + - - + + + + + + + + + @@ -835,53 +1023,46 @@ The slip ring is turned on at 300s, then the spindle is turned on at 620s (table - - - - - - -
Table 6: Stages configuration - Measurement 4
TyOFFOFFOFF
RyOFFOFFOFF
SlipRing OFFONONONON
SpindleOFFOFFON
OFF OFF
SpindleOFFOFFON
-
+

meas4.png

-

Figure 15: Time domain - measurement 4

+

Figure 18: Time domain - measurement 4

The PSD of each track are computed using the code below.

-
+

meas4_hexa_z_psd.png

-

Figure 16: PSD of the Z velocity of the Hexapod - measurement 4

+

Figure 19: PSD of the Z velocity of the Hexapod - measurement 4

-
+

meas4_ry_z_psd.png

-

Figure 17: PSD of the Ry rotation in the Y direction - measurement 4

+

Figure 20: PSD of the Ry rotation in the Y direction - measurement 4

-
+

meas4_ty_y_psd.png

-

Figure 18: PSD of the Ty velocity in the Y direction - measurement 4

+

Figure 21: PSD of the Ty velocity in the Y direction - measurement 4

Turning ON the splipring seems to not add motions on the stages measured. -It even seems to lower the motion of the Ty stage (figure 18): does that make any sense? +It even seems to lower the motion of the Ty stage (figure 21): does that make any sense?

@@ -897,26 +1078,26 @@ Turning ON the spindle induces motions:

-
-

8 Measurement 5 - Transmission from ground to marble

-
+
+

11 Measurement 5 - Transmission from ground to marble

+

This measurement just consists of measurement of Y-Z motion of the ground and the marble.

-The time domain signals are shown on figure 19. +The time domain signals are shown on figure 22.

-
+

meas5.png

-

Figure 19: Time domain - measurement 5

+

Figure 22: Time domain - measurement 5

-We compute the PSD of each track and we plot the PSD of the Z motion for the ground and marble on figure 20 and for the Y motion on figure 21. +We compute the PSD of each track and we plot the PSD of the Z motion for the ground and marble on figure 23 and for the Y motion on figure 24.

@@ -928,22 +1109,22 @@ We compute the PSD of each track and we plot the PSD of the Z motion for the gro
-
+

meas5_z_psd.png

-

Figure 20: PSD of the ground and marble in the Z direction

+

Figure 23: PSD of the ground and marble in the Z direction

-
+

meas5_y_psd.png

-

Figure 21: PSD of the ground and marble in the Y direction

+

Figure 24: PSD of the ground and marble in the Y direction

Then, instead of looking at the Power Spectral Density, we can try to estimate the transfer function from a ground motion to the motion of the marble. -The transfer functions are shown on figure 22 and the coherence on figure 23. +The transfer functions are shown on figure 25 and the coherence on figure 26.

@@ -953,10 +1134,10 @@ The transfer functions are shown on figure 22 and the
-
+

meas5_tf.png

-

Figure 22: Transfer function estimation - measurement 5

+

Figure 25: Transfer function estimation - measurement 5

@@ -966,10 +1147,10 @@ The transfer functions are shown on figure 22 and the
-
+

meas5_coh.png

-

Figure 23: Coherence - measurement 5

+

Figure 26: Coherence - measurement 5

@@ -984,7 +1165,7 @@ But the coherence is not good above 20Hz, so it is difficult to estimate resonan

Author: Thomas Dehaeze

-

Created: 2019-03-15 ven. 16:46

+

Created: 2019-03-19 mar. 16:42

Validate

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');