diff --git a/index.html b/index.html new file mode 100644 index 0000000..c9414b2 --- /dev/null +++ b/index.html @@ -0,0 +1,251 @@ + + + + + + +Sensor Fusion - Test Bench + + + + + + + + + + + +
+

Sensor Fusion - Test Bench

+
+

Table of Contents

+ +
+ +
+

1 Experimental Setup

+
+ + + +++ ++ + + + + + + + + + + + + + + + + + +
  
AccelerometerPCB 393B05 - Vertical (link)
GeophoneMark Product L4C - Vertical
+
+
+ +
+

2 Huddle Test

+
+
+
+

2.1 Load Data

+
+
+
load('./mat/huddle_test.mat', 'acc_1', 'acc_2', 'geo_1', 'geo_2', 't');
+dt = t(2) - t(1);
+
+
+
+
+ +
+

2.2 Data

+
+
+
acc_1 = acc_1 - mean(acc_1);
+acc_2 = acc_2 - mean(acc_2);
+geo_1 = geo_1 - mean(geo_1);
+geo_2 = geo_2 - mean(geo_2);
+
+
+
+
+ +
+

2.3 Scale Data

+
+

+From raw data to estimated velocity. +This takes into account the sensibility of the sensor and possible integration to go from acceleration to velocity. +

+ +
+
G0 = 1.02; % [V/(m/s2)]
+
+G_acc = tf(G0);
+
+
+ +
+
T = 276;
+xi = 0.5;
+w = 2*pi;
+
+G_geo = -T*s^2/(s^2 + 2*xi*w*s + w^2);
+
+
+ +
+
acc_1 = lsim(inv(G_acc), acc_1, t);
+acc_2 = lsim(inv(G_acc), acc_2, t);
+geo_1 = lsim(inv(G_geo), geo_1, t);
+geo_2 = lsim(inv(G_geo), geo_2, t);
+
+
+
+
+ +
+

2.4 Compare Time Domain Signals

+
+
+
figure;
+hold on;
+plot(t, acc_1);
+plot(t, acc_2);
+plot(t, geo_1);
+plot(t, geo_2);
+hold off;
+
+
+
+
+ +
+

2.5 Compute PSD

+
+

+We first define the parameters for the frequency domain analysis. +

+
+
Fs = 1/dt; % [Hz]
+
+win = hanning(ceil(1*Fs));
+
+
+ +

+Then we compute the Power Spectral Density using pwelch function. +

+
+
[p_acc_1, f] = pwelch(acc_1, win, [], [], Fs);
+[p_acc_2, ~] = pwelch(acc_2, win, [], [], Fs);
+[p_geo_1, ~] = pwelch(geo_1, win, [], [], Fs);
+[p_geo_2, ~] = pwelch(geo_2, win, [], [], Fs);
+
+
+ +
+
figure;
+hold on;
+plot(f, sqrt(p_acc_1));
+plot(f, sqrt(p_acc_2));
+hold off;
+set(gca, 'xscale', 'log');
+set(gca, 'yscale', 'log');
+xlabel('Frequency [Hz]'); ylabel('ASD Accelerometers $\left[\frac{m/s}{\sqrt{Hz}}\right]$')
+xlim([1, 5000]);
+
+
+ +
+
figure;
+hold on;
+plot(f, sqrt(p_geo_1));
+plot(f, sqrt(p_geo_2));
+hold off;
+set(gca, 'xscale', 'log');
+set(gca, 'yscale', 'log');
+xlabel('Frequency [Hz]'); ylabel('ASD Geophones $\left[\frac{m/s}{\sqrt{Hz}}\right]$')
+xlim([1, 5000]);
+
+
+
+
+ +
+

2.6 Dynamical Uncertainty

+
+
+
[T_acc, ~] = tfestimate(acc_1, acc_2, win, [], [], Fs);
+[T_geo, ~] = tfestimate(geo_1, geo_2, win, [], [], Fs);
+
+
+
+
+ +
+

2.7 Sensor Noise

+
+
+
[coh_acc, ~] = mscohere(acc_1, acc_2, win, [], [], Fs);
+[coh_geo, ~] = mscohere(geo_1, geo_2, win, [], [], Fs);
+
+
+ +
+
pN_acc = p_acc_1.*(1 - coh_acc);
+pN_geo = p_geo_1.*(1 - coh_geo);
+
+
+ +
+
figure;
+hold on;
+plot(f, pN_acc, '-', 'DisplayName', 'Accelerometers');
+plot(f, pN_geo, '-', 'DisplayName', 'Geophones');
+hold off;
+set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
+xlabel('Frequency [Hz]'); ylabel('ASD of the Measurement Noise $\left[\frac{m/s}{\sqrt{Hz}}\right]$');
+xlim([1, 5000]);
+legend('location', 'northeast');
+
+
+
+
+
+
+
+

Author: Dehaeze Thomas

+

Created: 2020-08-31 lun. 16:09

+
+ +