diff --git a/matlab/index.html b/matlab/index.html index c1d9c29..cbf7471 100644 --- a/matlab/index.html +++ b/matlab/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Robust and Optimal Sensor Fusion - Matlab Computation @@ -245,28 +245,9 @@ for the JavaScript code in this tag. } /*]]>*///--> - - + + +
@@ -279,122 +260,122 @@ for the JavaScript code in this tag.

Table of Contents

@@ -410,20 +391,20 @@ Two sensors are considered with both different noise characteristics and dynamic

-
-

1 Optimal Sensor Fusion - Minimize the Super Sensor Noise

+
+

1 Optimal Sensor Fusion - Minimize the Super Sensor Noise

- +

The idea is to combine sensors that works in different frequency range using complementary filters. @@ -444,23 +425,23 @@ The Matlab scripts is accessible here

-
-

1.1 Architecture

+
+

1.1 Architecture

-Let's consider the sensor fusion architecture shown on figure 1 where two sensors (sensor 1 and sensor 2) are measuring the same quantity \(x\) with different noise characteristics determined by \(N_1(s)\) and \(N_2(s)\). +Let's consider the sensor fusion architecture shown on figure 1 where two sensors (sensor 1 and sensor 2) are measuring the same quantity \(x\) with different noise characteristics determined by \(N_1(s)\) and \(N_2(s)\).

\(\tilde{n}_1\) and \(\tilde{n}_2\) are normalized white noise:

\begin{equation} -\label{orgecfbe8a} +\label{orge64e355} \Phi_{\tilde{n}_1}(\omega) = \Phi_{\tilde{n}_1}(\omega) = 1 \end{equation} -
+

fusion_two_noisy_sensors_weights.png

Figure 1: Fusion of two sensors

@@ -470,16 +451,16 @@ Let's consider the sensor fusion architecture shown on figure 2. +We obtain the architecture of figure 2.

-
+

sensor_fusion_noisy_perfect_dyn.png

Figure 2: Fusion of two sensors with ideal dynamics

@@ -489,7 +470,7 @@ We obtain the architecture of figure 2. \(H_1(s)\) and \(H_2(s)\) are complementary filters:

\begin{equation} -\label{orgc62aef9} +\label{org9f8097b} H_1(s) + H_2(s) = 1 \end{equation} @@ -506,14 +487,14 @@ We have that the Power Spectral Density (PSD) of \(\hat{x}\) is: And the goal is the minimize the Root Mean Square (RMS) value of \(\hat{x}\):

\begin{equation} -\label{orgb11ad80} +\label{orgc722a2b} \sigma_{\hat{x}} = \sqrt{\int_0^\infty \Phi_{\hat{x}}(\omega) d\omega} \end{equation}
-
-

1.2 Noise of the sensors

+
+

1.2 Noise of the sensors

Let's define the noise characteristics of the two sensors by choosing \(N_1\) and \(N_2\): @@ -533,7 +514,7 @@ N2 = ( +

noise_characteristics_sensors.png

Figure 3: Noise Characteristics of the two sensors (png, pdf)

@@ -541,8 +522,8 @@ N2 = ( -

1.3 H-Two Synthesis

+
+

1.3 H-Two Synthesis

As \(\tilde{n}_1\) and \(\tilde{n}_2\) are normalized white noise: \(\Phi_{\tilde{n}_1}(\omega) = \Phi_{\tilde{n}_2}(\omega) = 1\) and we have: @@ -555,11 +536,11 @@ For that, we use the \(\mathcal{H}_2\) Synthesis.

-We use the generalized plant architecture shown on figure 4. +We use the generalized plant architecture shown on figure 4.

-
+

h_infinity_optimal_comp_filters.png

Figure 4: \(\mathcal{H}_2\) Synthesis - Generalized plant used for the optimal generation of complementary filters

@@ -588,7 +569,7 @@ Thus, if we minimize the \(\mathcal{H}_2\) norm of this transfer function, we mi

-We define the generalized plant \(P\) on matlab as shown on figure 4. +We define the generalized plant \(P\) on matlab as shown on figure 4.

P = [0   N2  1;
@@ -613,15 +594,15 @@ Finally, we define \(H_2(s) = 1 - H_1(s)\).
 

-The complementary filters obtained are shown on figure 5. +The complementary filters obtained are shown on figure 5.

-The PSD of the noise of the individual sensor and of the super sensor are shown in Fig. 6. +The PSD of the noise of the individual sensor and of the super sensor are shown in Fig. 6.

-The Cumulative Power Spectrum (CPS) is shown on Fig. 7. +The Cumulative Power Spectrum (CPS) is shown on Fig. 7.

@@ -629,7 +610,7 @@ The obtained RMS value of the super sensor is lower than the RMS value of the in

-
+

htwo_comp_filters.png

Figure 5: Obtained complementary filters using the \(\mathcal{H}_2\) Synthesis (png, pdf)

@@ -643,7 +624,7 @@ PSD_H2 = abs(squeeze -
+

psd_sensors_htwo_synthesis.png

Figure 6: Power Spectral Density of the estimated \(\hat{x}\) using the two sensors alone and using the optimally fused signal (png, pdf)

@@ -657,7 +638,7 @@ CPS_H2 = 1 +

cps_h2_synthesis.png

Figure 7: Cumulative Power Spectrum of individual sensors and super sensor using the \(\mathcal{H}_2\) synthesis (png, pdf)

@@ -665,15 +646,15 @@ CPS_H2 = 1 -

1.4 Alternative H-Two Synthesis

+
+

1.4 Alternative H-Two Synthesis

-An alternative Alternative formulation of the \(\mathcal{H}_2\) synthesis is shown in Fig. 8. +An alternative Alternative formulation of the \(\mathcal{H}_2\) synthesis is shown in Fig. 8.

-
+

h_infinity_optimal_comp_filters_bis.png

Figure 8: Alternative formulation of the \(\mathcal{H}_2\) synthesis

@@ -694,8 +675,8 @@ An alternative Alternative formulation of the \(\mathcal{H}_2\) synthesis is sho
-
-

1.5 H-Infinity Synthesis - method A

+
+

1.5 H-Infinity Synthesis - method A

Another objective that we may have is that the noise of the super sensor \(n_{SS}\) is following the minimum of the noise of the two sensors \(n_1\) and \(n_2\): @@ -719,12 +700,12 @@ We could try to approach that with the \(\mathcal{H}_\infty\) synthesis by using

-As shown on Fig. 3, the frequency where the two sensors have the same noise level is around 9Hz. +As shown on Fig. 3, the frequency where the two sensors have the same noise level is around 9Hz. We will thus choose weighting functions such that the merging frequency is around 9Hz.

-The weighting functions used as well as the obtained complementary filters are shown in Fig. 9. +The weighting functions used as well as the obtained complementary filters are shown in Fig. 9.

@@ -793,7 +774,7 @@ Test bounds: 0.1000 < gamma <= 10500.0000
-
+

weights_comp_filters_Hinfa.png

Figure 9: Weights and Complementary Fitlers obtained (png, pdf)

@@ -811,8 +792,8 @@ CPS_Ha = 1 -

1.6 H-Infinity Synthesis - method B

+
+

1.6 H-Infinity Synthesis - method B

We have that: @@ -857,7 +838,7 @@ We use this as the weighting functions for the \(\mathcal{H}_\infty\) synthesis

-The weighting function and the obtained complementary filters are shown in Fig. 10. +The weighting function and the obtained complementary filters are shown in Fig. 10.

@@ -917,7 +898,7 @@ Test bounds: 0.0000 < gamma <= 32.8125
-
+

weights_comp_filters_Hinfb.png

Figure 10: Weights and Complementary Fitlers obtained (png, pdf)

@@ -931,8 +912,8 @@ CPS_Hb = 1 -

1.7 H-Infinity Synthesis - method C

+
+

1.7 H-Infinity Synthesis - method C

Wp = 0.56*(inv(N1)+inv(N2))/(1 + s/2/pi/1000);
@@ -989,7 +970,7 @@ Test bounds:      0.0000 <  gamma  <=     36.7543
 
-
+

weights_comp_filters_Hinfc.png

Figure 11: Weights and Complementary Fitlers obtained (png, pdf)

@@ -1003,26 +984,26 @@ CPS_Hc = 1 -

1.8 Comparison of the methods

+
+

1.8 Comparison of the methods

The three methods are now compared.

-The Power Spectral Density of the super sensors obtained with the complementary filters designed using the three methods are shown in Fig. 12. +The Power Spectral Density of the super sensors obtained with the complementary filters designed using the three methods are shown in Fig. 12.

-The Cumulative Power Spectrum for the same sensors are shown on Fig. 13. +The Cumulative Power Spectrum for the same sensors are shown on Fig. 13.

-The RMS value of the obtained super sensors are shown on table 1. +The RMS value of the obtained super sensors are shown on table 1.

- +
@@ -1071,14 +1052,14 @@ The RMS value of the obtained super sensors are shown on table + -
+

comparison_cps_noise.png

Figure 13: Comparison of the obtained Cumulative Power Spectrum using the three methods (png, pdf)

@@ -1086,8 +1067,8 @@ The RMS value of the obtained super sensors are shown on table -

1.9 Obtained Super Sensor's noise uncertainty

+
+

1.9 Obtained Super Sensor's noise uncertainty

We would like to verify if the obtained sensor fusion architecture is robust to change in the sensor dynamics. @@ -1120,7 +1101,7 @@ G2 = 1

The super sensor uncertain model is defined below using the complementary filters obtained with the \(\mathcal{H}_2\) synthesis. -The dynamical uncertainty bounds of the super sensor is shown in Fig. 14. +The dynamical uncertainty bounds of the super sensor is shown in Fig. 14. Right Half Plane zero might be introduced in the super sensor dynamics which will render the feedback system unstable.

@@ -1130,7 +1111,7 @@ Right Half Plane zero might be introduced in the super sensor dynamics which wil
-
+

uncertainty_super_sensor_H2_syn.png

Figure 14: Uncertianty regions of both individual sensors and of the super sensor when using the \(\mathcal{H}_2\) synthesis (png, pdf)

@@ -1138,8 +1119,8 @@ Right Half Plane zero might be introduced in the super sensor dynamics which wil
-
-

1.10 Conclusion

+
+

1.10 Conclusion

From the above complementary filter design with the \(\mathcal{H}_2\) and \(\mathcal{H}_\infty\) synthesis, it still seems that the \(\mathcal{H}_2\) synthesis gives the complementary filters that permits to obtain the minimal super sensor noise (when measuring with the \(\mathcal{H}_2\) norm). @@ -1152,11 +1133,11 @@ However, the synthesis does not take into account the robustness of the sensor f

-
-

2 Optimal Sensor Fusion - Minimize the Super Sensor Dynamical Uncertainty

+
+

2 Optimal Sensor Fusion - Minimize the Super Sensor Dynamical Uncertainty

- +

We initially considered perfectly known sensor dynamics so that it can be perfectly inverted. @@ -1164,11 +1145,11 @@ We initially considered perfectly known sensor dynamics so that it can be perfec

We now take into account the fact that the sensor dynamics is only partially known. -To do so, we model the uncertainty that we have on the sensor dynamics by multiplicative input uncertainty as shown in Fig. 15. +To do so, we model the uncertainty that we have on the sensor dynamics by multiplicative input uncertainty as shown in Fig. 15.

-
+

sensor_fusion_dynamic_uncertainty.png

Figure 15: Sensor fusion architecture with sensor dynamics uncertainty

@@ -1185,16 +1166,16 @@ The Matlab scripts is accessible here<
-
-

2.1 Super Sensor Dynamical Uncertainty

+
+

2.1 Super Sensor Dynamical Uncertainty

In practical systems, the sensor dynamics has always some level of uncertainty. -Let's represent that with multiplicative input uncertainty as shown on figure 15. +Let's represent that with multiplicative input uncertainty as shown on figure 15.

-
+

sensor_fusion_dynamic_uncertainty.png

Figure 16: Fusion of two sensors with input multiplicative uncertainty

@@ -1216,7 +1197,7 @@ We see that as soon as we have some uncertainty in the sensor dynamics, we have

-The uncertainty set of the transfer function from \(\hat{x}\) to \(x\) at frequency \(\omega\) is bounded in the complex plane by a circle centered on 1 and with a radius equal to \(|w_1(j\omega) H_1(j\omega)| + |w_2(j\omega) H_2(j\omega)|\) (figure 17). +The uncertainty set of the transfer function from \(\hat{x}\) to \(x\) at frequency \(\omega\) is bounded in the complex plane by a circle centered on 1 and with a radius equal to \(|w_1(j\omega) H_1(j\omega)| + |w_2(j\omega) H_2(j\omega)|\) (figure 17).

@@ -1225,7 +1206,7 @@ We then have that the angle introduced by the super sensor is bounded by \(\arcs

-
+

uncertainty_gain_phase_variation.png

Figure 17: Maximum phase variation

@@ -1233,8 +1214,8 @@ We then have that the angle introduced by the super sensor is bounded by \(\arcs
-
-

2.2 Dynamical uncertainty of the individual sensors

+
+

2.2 Dynamical uncertainty of the individual sensors

Let say we want to merge two sensors: @@ -1260,7 +1241,7 @@ w2 = w2*18 with the upper and lower bounds on the magnitude and on the phase. +From the weights, we define the uncertain transfer functions of the sensors. Some of the uncertain dynamics of both sensors are shown on Fig. 18 with the upper and lower bounds on the magnitude and on the phase.

G1 = 1 + w1*ultidyn('Delta',[1 1]);
@@ -1269,7 +1250,7 @@ G2 = 1 
 
-
+

uncertainty_dynamics_sensors.png

Figure 18: Dynamic uncertainty of the two sensors (png, pdf)

@@ -1277,11 +1258,11 @@ G2 = 1
-
-

2.3 Synthesis objective

+
+

2.3 Synthesis objective

-The uncertainty region of the super sensor dynamics is represented by a circle in the complex plane as shown in Fig. 17. +The uncertainty region of the super sensor dynamics is represented by a circle in the complex plane as shown in Fig. 17.

@@ -1310,8 +1291,8 @@ The maximum phase shift due to dynamic uncertainty at frequency \(\omega\) will

-
-

2.4 Requirements as an \(\mathcal{H}_\infty\) norm

+
+

2.4 Requirements as an \(\mathcal{H}_\infty\) norm

We know try to express this requirement in terms of an \(\mathcal{H}_\infty\) norm. @@ -1335,7 +1316,7 @@ Then: Which is approximately equivalent to (with an error of maximum \(\sqrt{2}\)):

\begin{equation} -\label{org03fb6ef} +\label{org58312d5} \left\| \begin{matrix} w_1(s) w_\phi(s) H_1(s) \\ w_2(s) w_\phi(s) H_2(s) \end{matrix} \right\|_\infty < 1 \end{equation} @@ -1346,12 +1327,12 @@ Thus, at these frequencies, \(|w_\phi|\) should be smaller than \(1\).
-
-

2.5 Weighting Function used to bound the super sensor uncertainty

+
+

2.5 Weighting Function used to bound the super sensor uncertainty

Let's define \(w_\phi(s)\) in order to bound the maximum allowed phase uncertainty \(\Delta\phi_\text{max}\) of the super sensor dynamics. -The magnitude \(|w_\phi(j\omega)|\) is shown in Fig. 19 and the corresponding maximum allowed phase uncertainty of the super sensor dynamics of shown in Fig. 20. +The magnitude \(|w_\phi(j\omega)|\) is shown in Fig. 19 and the corresponding maximum allowed phase uncertainty of the super sensor dynamics of shown in Fig. 20.

@@ -1366,25 +1347,25 @@ W2 = w2*wphi;
-
+

magnitude_wphi.png

Figure 19: Magnitude of the weght \(w_\phi(s)\) that is used to bound the uncertainty of the super sensor (png, pdf)

-
+

maximum_wanted_phase_uncertainty.png

Figure 20: Maximum wanted phase uncertainty using this weight (png, pdf)

-The obtained upper bounds on the complementary filters in order to limit the phase uncertainty of the super sensor are represented in Fig. 21. +The obtained upper bounds on the complementary filters in order to limit the phase uncertainty of the super sensor are represented in Fig. 21.

-
+

upper_bounds_comp_filter_max_phase_uncertainty.png

Figure 21: Upper bounds on the complementary filters set in order to limit the maximum phase uncertainty of the super sensor to 30 degrees until 500Hz (png, pdf)

@@ -1392,15 +1373,15 @@ The obtained upper bounds on the complementary filters in order to limit the pha
-
-

2.6 \(\mathcal{H}_\infty\) Synthesis

+
+

2.6 \(\mathcal{H}_\infty\) Synthesis

-The \(\mathcal{H}_\infty\) synthesis architecture used for the complementary filters is shown in Fig. 22. +The \(\mathcal{H}_\infty\) synthesis architecture used for the complementary filters is shown in Fig. 22.

-
+

h_infinity_robust_fusion.png

Figure 22: Architecture used for \(\mathcal{H}_\infty\) synthesis of complementary filters

@@ -1456,10 +1437,10 @@ And \(H_1(s)\) is defined as the complementary of \(H_2(s)\).

-The obtained complementary filters are shown in Fig. 23. +The obtained complementary filters are shown in Fig. 23.

-
+

comp_filter_hinf_uncertainty.png

Figure 23: Obtained complementary filters (png, pdf)

@@ -1467,11 +1448,11 @@ The obtained complementary filters are shown in Fig. 23
-
-

2.7 Super sensor uncertainty

+
+

2.7 Super sensor uncertainty

-We can now compute the uncertainty of the super sensor. The result is shown in Fig. 24. +We can now compute the uncertainty of the super sensor. The result is shown in Fig. 24.

@@ -1480,7 +1461,7 @@ We can now compute the uncertainty of the super sensor. The result is shown in F
-
+

super_sensor_uncertainty_bode_plot.png

Figure 24: Uncertainty on the dynamics of the super sensor (png, pdf)

@@ -1497,8 +1478,8 @@ For instance, we could improve the dynamical uncertainty of the super sensor by
-
-

2.8 Super sensor noise

+
+

2.8 Super sensor noise

We now compute the obtain Power Spectral Density of the super sensor's noise. @@ -1515,19 +1496,19 @@ N2 = (25. -The CPS of both sensor and of the super sensor is shown in Fig. 26. +The PSD of both sensor and of the super sensor is shown in Fig. 25. +The CPS of both sensor and of the super sensor is shown in Fig. 26.

-
+

psd_sensors_hinf_synthesis.png

Figure 25: Power Spectral Density of the obtained super sensor using the \(\mathcal{H}_\infty\) synthesis (png, pdf)

-
+

cps_sensors_hinf_synthesis.png

Figure 26: Cumulative Power Spectrum of the obtained super sensor using the \(\mathcal{H}_\infty\) synthesis (png, cps)

@@ -1535,8 +1516,8 @@ The CPS of both sensor and of the super sensor is shown in Fig. -

2.9 Conclusion

+
+

2.9 Conclusion

Using the \(\mathcal{H}_\infty\) synthesis, the dynamical uncertainty of the super sensor can be bounded to acceptable values. @@ -1549,11 +1530,11 @@ However, the RMS of the super sensor noise is not optimized as it was the case w

-
-

3 Optimal Sensor Fusion - Mixed Synthesis

+
+

3 Optimal Sensor Fusion - Mixed Synthesis

- +

@@ -1562,8 +1543,8 @@ The Matlab scripts is accessible -

3.1 Mixed \(\mathcal{H}_2\) / \(\mathcal{H}_\infty\) Synthesis - Introduction

+
+

3.1 Mixed \(\mathcal{H}_2\) / \(\mathcal{H}_\infty\) Synthesis - Introduction

The goal is to design complementary filters such that: @@ -1583,8 +1564,8 @@ The Matlab function for that is h2hinfsyn ( -

3.2 Noise characteristics and Uncertainty of the individual sensors

+
+

3.2 Noise characteristics and Uncertainty of the individual sensors

We define the weights that are used to characterize the dynamic uncertainty of the sensors. This will be used for the \(\mathcal{H}_\infty\) part of the synthesis. @@ -1613,11 +1594,11 @@ N2 = (27. +Both dynamical uncertainty and noise characteristics of the individual sensors are shown in Fig. 27.

-
+

mixed_synthesis_noise_uncertainty_sensors.png

Figure 27: Noise characteristsics and Dynamical uncertainty of the individual sensors (png, pdf)

@@ -1625,12 +1606,12 @@ Both dynamical uncertainty and noise characteristics of the individual sensors a
-
-

3.3 Weighting Functions on the uncertainty of the super sensor

+
+

3.3 Weighting Functions on the uncertainty of the super sensor

We design weights for the \(\mathcal{H}_\infty\) part of the synthesis in order to limit the dynamical uncertainty of the super sensor. -The maximum wanted multiplicative uncertainty is shown in Fig. 28. The idea here is that we don't really need low uncertainty at low frequency but only near the crossover frequency that is suppose to be around 300Hz here. +The maximum wanted multiplicative uncertainty is shown in Fig. 28. The idea here is that we don't really need low uncertainty at low frequency but only near the crossover frequency that is suppose to be around 300Hz here.

@@ -1641,18 +1622,18 @@ wphi = 0. +

mixed_syn_hinf_weight.png

Figure 28: Wanted maximum module uncertainty of the super sensor (png, pdf)

-The equivalent Magnitude and Phase uncertainties are shown in Fig. 29. +The equivalent Magnitude and Phase uncertainties are shown in Fig. 29.

-
+

mixed_syn_objective_hinf.png

Figure 29: \(\mathcal{H}_\infty\) synthesis objective part of the mixed-synthesis (png, pdf)

@@ -1660,11 +1641,11 @@ The equivalent Magnitude and Phase uncertainties are shown in Fig. -

3.4 Mixed Synthesis Architecture

+
+

3.4 Mixed Synthesis Architecture

-The synthesis architecture that is used here is shown in Fig. 30. +The synthesis architecture that is used here is shown in Fig. 30.

@@ -1677,7 +1658,7 @@ The controller \(K\) is synthesized such that it: -

+

mixed_h2_hinf_synthesis.png

Figure 30: Mixed H2/H-Infinity Synthesis

@@ -1725,8 +1706,8 @@ P = [W1u -

3.5 Mixed \(\mathcal{H}_2\) / \(\mathcal{H}_\infty\) Synthesis

+
+

3.5 Mixed \(\mathcal{H}_2\) / \(\mathcal{H}_\infty\) Synthesis

The mixed $\mathcal{H}2$/\(\mathcal{H}_\infty\) synthesis is performed below. @@ -1741,11 +1722,11 @@ H1 = 1

-The obtained complementary filters are shown in Fig. 31. +The obtained complementary filters are shown in Fig. 31.

-
+

comp_filters_mixed_synthesis.png

Figure 31: Obtained complementary filters after mixed $\mathcal{H}2$/\(\mathcal{H}_\infty\) synthesis (png, pdf)

@@ -1753,15 +1734,15 @@ The obtained complementary filters are shown in Fig. 31
-
-

3.6 Obtained Super Sensor's noise

+
+

3.6 Obtained Super Sensor's noise

-The PSD and CPS of the super sensor's noise are shown in Fig. 32 and Fig. 33 respectively. +The PSD and CPS of the super sensor's noise are shown in Fig. 32 and Fig. 33 respectively.

-
+

psd_super_sensor_mixed_syn.png

Figure 32: Power Spectral Density of the Super Sensor obtained with the mixed $\mathcal{H}2$/\(\mathcal{H}_\infty\) synthesis (png, pdf)

@@ -1769,7 +1750,7 @@ The PSD and CPS of the super sensor's noise are shown in Fig. +

cps_super_sensor_mixed_syn.png

Figure 33: Cumulative Power Spectrum of the Super Sensor obtained with the mixed $\mathcal{H}2$/\(\mathcal{H}_\infty\) synthesis (png, pdf)

@@ -1777,15 +1758,15 @@ The PSD and CPS of the super sensor's noise are shown in Fig. -

3.7 Obtained Super Sensor's Uncertainty

+
+

3.7 Obtained Super Sensor's Uncertainty

-The uncertainty on the super sensor's dynamics is shown in Fig. 34. +The uncertainty on the super sensor's dynamics is shown in Fig. 34.

-
+

super_sensor_dyn_uncertainty_mixed_syn.png

Figure 34: Super Sensor Dynamical Uncertainty obtained with the mixed synthesis (png, pdf)

@@ -1793,8 +1774,8 @@ The uncertainty on the super sensor's dynamics is shown in Fig. -

3.8 Conclusion

+
+

3.8 Conclusion

This synthesis methods allows both to: @@ -1807,12 +1788,12 @@ This synthesis methods allows both to:

-
-

4 Mixed Synthesis - LMI Optimization

+
+

4 Mixed Synthesis - LMI Optimization

-
-

4.1 Introduction

+
+

4.1 Introduction

The following matlab scripts was written by Mohit. @@ -1820,8 +1801,8 @@ The following matlab scripts was written by Mohit.

-
-

4.2 Noise characteristics and Uncertainty of the individual sensors

+
+

4.2 Noise characteristics and Uncertainty of the individual sensors

We define the weights that are used to characterize the dynamic uncertainty of the sensors. This will be used for the \(\mathcal{H}_\infty\) part of the synthesis. @@ -1851,8 +1832,8 @@ N2 = ( -

4.3 Weights

+
+

4.3 Weights

The weights for the \(\mathcal{H}_2\) and \(\mathcal{H}_\infty\) part are defined below. @@ -1879,8 +1860,8 @@ W1n = ss(N1 -

4.4 LMI Optimization

+
+

4.4 LMI Optimization

We are using the CVX toolbox to solve the optimization problem. @@ -1997,15 +1978,15 @@ H1 = 1

-
-

4.5 Result

+
+

4.5 Result

-The obtained complementary filters are compared with the required upper bounds on Fig. 35. +The obtained complementary filters are compared with the required upper bounds on Fig. 35.

-
+

LMI_obtained_comp_filters.png

Figure 35: Obtained complementary filters using the LMI optimization (png, pdf)

@@ -2013,8 +1994,8 @@ The obtained complementary filters are compared with the required upper bounds o
-
-

4.6 Comparison with the matlab Mixed Synthesis

+
+

4.6 Comparison with the matlab Mixed Synthesis

The Mixed \(\mathcal{H}_2\) / \(\mathcal{H}_\infty\) Synthesis is performed below. @@ -2033,7 +2014,7 @@ The obtained filters are compare with the one obtained using the CVX toolbox in

-
+

compare_cvx_h2hinf_comp_filters.png

Figure 36: Comparison between the complementary filters obtained with the CVX toolbox and with the h2hinfsyn command (png, pdf)

@@ -2041,15 +2022,15 @@ The obtained filters are compare with the one obtained using the CVX toolbox in
-
-

4.7 H-Infinity Objective

+
+

4.7 H-Infinity Objective

-In terms of the \(\mathcal{H}_\infty\) objective, both synthesis method are satisfying the requirements as shown in Fig. 37. +In terms of the \(\mathcal{H}_\infty\) objective, both synthesis method are satisfying the requirements as shown in Fig. 37.

-
+

comp_cvx_h2i_hinf_norm.png

Figure 37: H-Infinity norm requirement and results (png, pdf)

@@ -2057,15 +2038,15 @@ In terms of the \(\mathcal{H}_\infty\) objective, both synthesis method are sati
-
-

4.8 Obtained Super Sensor's noise

+
+

4.8 Obtained Super Sensor's noise

-The PSD and CPS of the super sensor's noise obtained with the CVX toolbox and h2hinfsyn command are compared in Fig. 38 and 39. +The PSD and CPS of the super sensor's noise obtained with the CVX toolbox and h2hinfsyn command are compared in Fig. 38 and 39.

-
+

psd_compare_cvx_h2i.png

Figure 38: Power Spectral Density of the Super Sensor obtained with the mixed $\mathcal{H}2$/\(\mathcal{H}_\infty\) synthesis (png, pdf)

@@ -2073,7 +2054,7 @@ The PSD and CPS of the super sensor's noise obtained with the CVX toolbox and +

cps_compare_cvx_h2i.png

Figure 39: Cumulative Power Spectrum of the Super Sensor obtained with the mixed $\mathcal{H}2$/\(\mathcal{H}_\infty\) synthesis (png, pdf)

@@ -2081,15 +2062,15 @@ The PSD and CPS of the super sensor's noise obtained with the CVX toolbox and
-
-

4.9 Obtained Super Sensor's Uncertainty

+
+

4.9 Obtained Super Sensor's Uncertainty

The uncertainty on the super sensor's dynamics is shown in Fig. [[]].

-
+

super_sensor_uncertainty_compare_cvx_h2i.png

Figure 40: Super Sensor Dynamical Uncertainty obtained with the mixed synthesis (png, pdf)

@@ -2098,11 +2079,11 @@ The uncertainty on the super sensor's dynamics is shown in Fig. [[]].
-
-

5 H-Infinity synthesis to ensure both performance and robustness

+
+

5 H-Infinity synthesis to ensure both performance and robustness

- +

@@ -2112,8 +2093,8 @@ The Matlab scripts is accessible here

-
-

5.1 Introduction

+
+

5.1 Introduction

The idea is to use only the \(\mathcal{H}_\infty\) norm to express both the maximum wanted super sensor uncertainty and the fact that we want to minimize the super sensor's noise. @@ -2180,8 +2161,8 @@ We may not want to follow the minimum uncertainty.

-
-

5.2 Dynamical uncertainty and Noise level of the individual sensors

+
+

5.2 Dynamical uncertainty and Noise level of the individual sensors

Uncertainty on the individual sensors: @@ -2210,7 +2191,7 @@ N2 = ( +

noise_uncertainty_sensors_hinf.png

Figure 41: Noise and Uncertainty characteristics of the sensors (png, pdf)

@@ -2218,8 +2199,8 @@ N2 = ( -

5.3 Weights for uncertainty and performance

+
+

5.3 Weights for uncertainty and performance

We design weights that are used to describe the wanted upper bound on the super sensor's noise and super sensor's uncertainty. @@ -2252,10 +2233,10 @@ Wp = inv(G242. +The noise and uncertainty weights of the individual sensors and the asked noise/uncertainty of the super sensor are displayed in Fig. 42.

-
+

charac_sensors_weights.png

Figure 42: Upper bounds on the super sensor's noise and super sensor's uncertainty (png, pdf)

@@ -2263,10 +2244,10 @@ The noise and uncertainty weights of the individual sensors and the asked noise/

-The corresponding maximum norms of the filters to have the perf/robust asked are shown in Fig. 43. +The corresponding maximum norms of the filters to have the perf/robust asked are shown in Fig. 43.

-
+

upper_bound_complementary_filters_perf_robust.png

Figure 43: Upper bounds on the complementary filters (png, pdf)

@@ -2274,8 +2255,8 @@ The corresponding maximum norms of the filters to have the perf/robust asked are
-
-

5.4 H-infinity synthesis with 4 outputs corresponding to the 4 weights

+
+

5.4 H-infinity synthesis with 4 outputs corresponding to the 4 weights

We do the \(\mathcal{H}_\infty\) synthesis with 4 weights and 4 outputs. @@ -2350,10 +2331,10 @@ Test bounds: 1.4139 < gamma <= 65.6899

-The obtained complementary filters with the upper bounds are shown in Fig. 44. +The obtained complementary filters with the upper bounds are shown in Fig. 44.

-
+

hinf_result_comp_filters_4_outputs.png

Figure 44: caption (png, pdf)

@@ -2362,14 +2343,14 @@ The obtained complementary filters with the upper bounds are shown in Fig. + -
+

4outputs_hinf_psd_cps2svg.png

Figure 46: PSD and CPS (png, pdf)

@@ -2377,7 +2358,7 @@ The obtained complementary filters with the upper bounds are shown in Fig. +

4outputs_uncertainty.png

Figure 47: Dynamical uncertainty (png, pdf)

@@ -2385,8 +2366,8 @@ The obtained complementary filters with the upper bounds are shown in Fig.
-
-

5.5 Conclusion

+
+

5.5 Conclusion

The \(\mathcal{H}_\infty\) synthesis has been used to design complementary filters that permits to robustly merge sensors while ensuring a maximum noise level. @@ -2396,27 +2377,27 @@ However, no guarantee is made that the RMS value of the super sensor's noise is

-
-

6 Equivalent Super Sensor

+
+

6 Equivalent Super Sensor

- +

The goal here is to find the parameters of a single sensor that would best represent a super sensor.

-
-

6.1 Sensor Fusion Architecture

+
+

6.1 Sensor Fusion Architecture

-Let consider figure 48 where two sensors are merged. +Let consider figure 48 where two sensors are merged. The dynamic uncertainty of each sensor is represented by a weight \(w_i(s)\), the frequency characteristics each of the sensor noise is represented by the weights \(N_i(s)\). The noise sources \(\tilde{n}_i\) are considered to be white noise: \(\Phi_{\tilde{n}_i}(\omega) = 1, \ \forall\omega\).

-
+

sensor_fusion_full.png

Figure 48: Sensor fusion architecture (png, pdf).

@@ -2446,15 +2427,15 @@ And the noise of the super sensor is:
-
-

6.2 Equivalent Configuration

+
+

6.2 Equivalent Configuration

-We try to determine \(w_{ss}(s)\) and \(N_{ss}(s)\) such that the sensor on figure 49 is equivalent to the super sensor of figure 48. +We try to determine \(w_{ss}(s)\) and \(N_{ss}(s)\) such that the sensor on figure 49 is equivalent to the super sensor of figure 48.

-
+

sensor_fusion_equivalent.png

Figure 49: Equivalent Super Sensor (png, pdf).

@@ -2462,12 +2443,12 @@ We try to determine \(w_{ss}(s)\) and \(N_{ss}(s)\) such that the sensor on figu
-
-

6.3 Model the uncertainty of the super sensor

+
+

6.3 Model the uncertainty of the super sensor

-At each frequency \(\omega\), the uncertainty set of the super sensor shown on figure 48 is a circle centered on \(1\) with a radius equal to \(|H_1(j\omega) w_1(j\omega)| + |H_2(j\omega) w_2(j\omega)|\) on the complex plane. -The uncertainty set of the sensor shown on figure 49 is a circle centered on \(1\) with a radius equal to \(|w_{ss}(j\omega)|\) on the complex plane. +At each frequency \(\omega\), the uncertainty set of the super sensor shown on figure 48 is a circle centered on \(1\) with a radius equal to \(|H_1(j\omega) w_1(j\omega)| + |H_2(j\omega) w_2(j\omega)|\) on the complex plane. +The uncertainty set of the sensor shown on figure 49 is a circle centered on \(1\) with a radius equal to \(|w_{ss}(j\omega)|\) on the complex plane.

@@ -2482,11 +2463,11 @@ Ideally, we want to find a weight \(w_{ss}(s)\) so that:

-
-

6.4 Model the noise of the super sensor

+
+

6.4 Model the noise of the super sensor

-The PSD of the estimation \(\hat{x}\) when \(x = 0\) of the configuration shown on figure 48 is: +The PSD of the estimation \(\hat{x}\) when \(x = 0\) of the configuration shown on figure 48 is:

\begin{align*} \Phi_{\hat{x}}(\omega) &= | H_1(j\omega) N_1(j\omega) |^2 \Phi_{\tilde{n}_1} + | H_2(j\omega) N_2(j\omega) |^2 \Phi_{\tilde{n}_2} \\ @@ -2494,7 +2475,7 @@ The PSD of the estimation \(\hat{x}\) when \(x = 0\) of the configuration shown \end{align*}

-The PSD of the estimation \(\hat{x}\) when \(x = 0\) of the configuration shown on figure 49 is: +The PSD of the estimation \(\hat{x}\) when \(x = 0\) of the configuration shown on figure 49 is:

\begin{align*} \Phi_{\hat{x}}(\omega) &= | N_{ss}(j\omega) |^2 \Phi_{\tilde{n}} \\ @@ -2513,8 +2494,8 @@ Ideally, we want to find a weight \(N_{ss}(s)\) such that:
-
-

6.5 First guess

+
+

6.5 First guess

We could choose @@ -2542,11 +2523,11 @@ and

-
-

7 Optimal And Robust Sensor Fusion in Practice

+
+

7 Optimal And Robust Sensor Fusion in Practice

- +

Here are the steps in order to apply optimal and robust sensor fusion: @@ -2558,23 +2539,23 @@ Here are the steps in order to apply optimal and robust sensor fusion:

  • Apply H2/H-infinity synthesis of the complementary filters
  • -
    -

    7.1 Measurement of the noise characteristics of the sensors

    +
    +

    7.1 Measurement of the noise characteristics of the sensors

    -
    -

    7.1.1 Huddle Test

    +
    +

    7.1.1 Huddle Test

    The technique to estimate the sensor noise is taken from barzilai98_techn_measur_noise_sensor_presen.

    -Let's consider two sensors (sensor 1 and sensor 2) that are measuring the same quantity \(x\) as shown in figure 50. +Let's consider two sensors (sensor 1 and sensor 2) that are measuring the same quantity \(x\) as shown in figure 50.

    -
    +

    huddle_test.png

    Figure 50: Huddle test block diagram

    @@ -2593,7 +2574,7 @@ We also assume that their dynamics is ideal: \(G_1(s) = G_2(s) = 1\). We then have:

    \begin{equation} -\label{org5197e00} +\label{orgac9254d} \gamma_{\hat{x}_1\hat{x}_2}^2(\omega) = \frac{1}{1 + 2 \left( \frac{|\Phi_n(\omega)|}{|\Phi_{\hat{x}}(\omega)|} \right) + \left( \frac{|\Phi_n(\omega)|}{|\Phi_{\hat{x}}(\omega)|} \right)^2} \end{equation} @@ -2601,16 +2582,16 @@ We then have: Since the input signal \(x\) and the instrumental noise \(n\) are incoherent:

    \begin{equation} -\label{org7504a36} +\label{org86d1282} |\Phi_{\hat{x}}(\omega)| = |\Phi_n(\omega)| + |\Phi_x(\omega)| \end{equation}

    -From equations \eqref{org5197e00} and \eqref{org7504a36}, we finally obtain +From equations \eqref{orgac9254d} and \eqref{org86d1282}, we finally obtain

    \begin{equation} -\label{orgb46a810} +\label{org8797474} |\Phi_n(\omega)| = |\Phi_{\hat{x}}(\omega)| \left( 1 - \sqrt{\gamma_{\hat{x}_1\hat{x}_2}^2(\omega)} \right) \end{equation} @@ -2618,8 +2599,8 @@ From equations \eqref{org5197e00} and \eqref{org7504a36}, we finally obtain
    -
    -

    7.1.2 Weights that represents the noises' PSD

    +
    +

    7.1.2 Weights that represents the noises' PSD

    For further complementary filter synthesis, it is preferred to consider a normalized noise source \(\tilde{n}\) that has a PSD equal to one (\(\Phi_{\tilde{n}}(\omega) = 1\)) and to use a weighting filter \(N(s)\) in order to represent the frequency dependence of the noise. @@ -2638,11 +2619,11 @@ These weighting filters can then be used to compare the noise level of sensors f

    -The sensor with a normalized noise input is shown in figure 51. +The sensor with a normalized noise input is shown in figure 51.

    -
    +

    one_sensor_normalized_noise.png

    Figure 51: One sensor with normalized noise

    @@ -2650,8 +2631,8 @@ The sensor with a normalized noise input is shown in figure -

    7.1.3 Comparison of the noises' PSD

    +
    +

    7.1.3 Comparison of the noises' PSD

    Once the noise of the sensors to be merged have been characterized, the power spectral density of both sensors have to be compared. @@ -2667,8 +2648,8 @@ Ideally, the PSD of the noise are such that:

    -
    -

    7.1.4 Computation of the coherence, power spectral density and cross spectral density of signals

    +
    +

    7.1.4 Computation of the coherence, power spectral density and cross spectral density of signals

    The coherence between signals \(x\) and \(y\) is defined as follow @@ -2696,11 +2677,11 @@ where:

    -
    -

    7.2 Estimate the dynamic uncertainty of the sensors

    +
    +

    7.2 Estimate the dynamic uncertainty of the sensors

    -Let's consider one sensor represented on figure 52. +Let's consider one sensor represented on figure 52.

    @@ -2712,7 +2693,7 @@ The goal is to accurately determine \(w(s)\) for the sensors that have to be mer

    -
    +

    one_sensor_dyn_uncertainty.png

    Figure 52: Sensor with dynamic uncertainty

    @@ -2720,8 +2701,8 @@ The goal is to accurately determine \(w(s)\) for the sensors that have to be mer
    -
    -

    7.3 Optimal and Robust synthesis of the complementary filters

    +
    +

    7.3 Optimal and Robust synthesis of the complementary filters

    Once the noise characteristics and dynamic uncertainty of both sensors have been determined and we have determined the following weighting functions: @@ -2732,7 +2713,7 @@ Once the noise characteristics and dynamic uncertainty of both sensors have been

    -The goal is to design complementary filters \(H_1(s)\) and \(H_2(s)\) shown in figure 48 such that: +The goal is to design complementary filters \(H_1(s)\) and \(H_2(s)\) shown in figure 48 such that:

    • the uncertainty on the super sensor dynamics is minimized
    • @@ -2740,7 +2721,7 @@ The goal is to design complementary filters \(H_1(s)\) and \(H_2(s)\) shown in f
    -
    +

    sensor_fusion_full.png

    Figure 53: Sensor fusion architecture with sensor dynamics uncertainty

    @@ -2749,18 +2730,18 @@ The goal is to design complementary filters \(H_1(s)\) and \(H_2(s)\) shown in f
    -
    -

    8 Methods of complementary filter synthesis

    +
    +

    8 Methods of complementary filter synthesis

    - +

    -
    -

    8.1 Complementary filters using analytical formula

    +
    +

    8.1 Complementary filters using analytical formula

    - +

    @@ -2770,8 +2751,8 @@ All the files (data and Matlab scripts) are accessible -

    8.1.1 Analytical 1st order complementary filters

    +
    +

    8.1.1 Analytical 1st order complementary filters

    First order complementary filters are defined with following equations: @@ -2782,7 +2763,7 @@ First order complementary filters are defined with following equations: \end{align}

    -Their bode plot is shown figure 54. +Their bode plot is shown figure 54.

    @@ -2794,7 +2775,7 @@ Hl1 = 1
    -
    +

    comp_filter_1st_order.png

    Figure 54: Bode plot of first order complementary filter (png, pdf)

    @@ -2802,8 +2783,8 @@ Hl1 = 1
    -
    -

    8.1.2 Second Order Complementary Filters

    +
    +

    8.1.2 Second Order Complementary Filters

    We here use analytical formula for the complementary filters \(H_L\) and \(H_H\). @@ -2829,12 +2810,12 @@ where:

    -This is illustrated on figure 55. +This is illustrated on figure 55. The slope of those filters at high and low frequencies is \(-2\) and \(2\) respectively for \(H_L\) and \(H_H\).

    -
    +

    comp_filters_param_alpha.png

    Figure 55: Effect of the parameter \(\alpha\) on the shape of the generated second order complementary filters (png, pdf)

    @@ -2852,7 +2833,7 @@ xlabel('$ +

    param_alpha_hinf_norm.png

    Figure 56: Evolution of the H-Infinity norm of the complementary filters with the parameter \(\alpha\) (png, pdf)

    @@ -2860,8 +2841,8 @@ xlabel('$ -

    8.1.3 Third Order Complementary Filters

    +
    +

    8.1.3 Third Order Complementary Filters

    The following formula gives complementary filters with slopes of \(-3\) and \(3\): @@ -2880,7 +2861,7 @@ The parameters are:

    -The filters are defined below and the result is shown on figure 57. +The filters are defined below and the result is shown on figure 57.

    @@ -2894,7 +2875,7 @@ Hl3_ana = ( +

    complementary_filters_third_order.png

    Figure 57: Third order complementary filters using the analytical formula (png, pdf)

    @@ -2903,11 +2884,11 @@ Hl3_ana = ( -

    8.2 H-Infinity synthesis of complementary filters

    +
    +

    8.2 H-Infinity synthesis of complementary filters

    - +

    @@ -2917,8 +2898,8 @@ All the files (data and Matlab scripts) are accessible -

    8.2.1 Synthesis Architecture

    +
    +

    8.2.1 Synthesis Architecture

    We here synthesize the complementary filters using the \(\mathcal{H}_\infty\) synthesis. @@ -2926,18 +2907,18 @@ The goal is to specify upper bounds on the norms of \(H_L\) and \(H_H\) while en

    -In order to do so, we use the generalized plant shown on figure 58 where \(w_L\) and \(w_H\) weighting transfer functions that will be used to shape \(H_L\) and \(H_H\) respectively. +In order to do so, we use the generalized plant shown on figure 58 where \(w_L\) and \(w_H\) weighting transfer functions that will be used to shape \(H_L\) and \(H_H\) respectively.

    -
    +

    sf_hinf_filters_plant_b.png

    Figure 58: Generalized plant used for the \(\mathcal{H}_\infty\) synthesis of the complementary filters

    -The \(\mathcal{H}_\infty\) synthesis applied on this generalized plant will give a transfer function \(H_L\) (figure 59) such that the \(\mathcal{H}_\infty\) norm of the transfer function from \(w\) to \([z_H,\ z_L]\) is less than one: +The \(\mathcal{H}_\infty\) synthesis applied on this generalized plant will give a transfer function \(H_L\) (figure 59) such that the \(\mathcal{H}_\infty\) norm of the transfer function from \(w\) to \([z_H,\ z_L]\) is less than one: \[ \left\| \begin{array}{c} H_L w_L \\ (1 - H_L) w_H \end{array} \right\|_\infty < 1 \]

    @@ -2956,7 +2937,7 @@ We then see that \(w_L\) and \(w_H\) can be used to shape both \(H_L\) and \(H_H

    -
    +

    sf_hinf_filters_b.png

    Figure 59: \(\mathcal{H}_\infty\) synthesis of the complementary filters

    @@ -2964,8 +2945,8 @@ We then see that \(w_L\) and \(w_H\) can be used to shape both \(H_L\) and \(H_H
    -
    -

    8.2.2 Weights

    +
    +

    8.2.2 Weights

    omegab = 2*pi*9;
    @@ -2976,7 +2957,7 @@ wL = (s 
    +

    weights_wl_wh.png

    Figure 60: Weights on the complementary filters \(w_L\) and \(w_H\) and the associated performance weights (png, pdf)

    @@ -2984,8 +2965,8 @@ wL = (s -

    8.2.3 H-Infinity Synthesis

    +
    +

    8.2.3 H-Infinity Synthesis

    We define the generalized plant \(P\) on matlab. @@ -3027,7 +3008,7 @@ Test bounds: 0.0000 < gamma <= 1.7285

    -We then define the high pass filter \(H_H = 1 - H_L\). The bode plot of both \(H_L\) and \(H_H\) is shown on figure 61. +We then define the high pass filter \(H_H = 1 - H_L\). The bode plot of both \(H_L\) and \(H_H\) is shown on figure 61.

    Hh_hinf = 1 - Hl_hinf;
    @@ -3036,15 +3017,15 @@ We then define the high pass filter \(H_H = 1 - H_L\). The bode plot of both \(H
     
    -
    -

    8.2.4 Obtained Complementary Filters

    +
    +

    8.2.4 Obtained Complementary Filters

    -The obtained complementary filters are shown on figure 61. +The obtained complementary filters are shown on figure 61.

    -
    +

    hinf_filters_results.png

    Figure 61: Obtained complementary filters using \(\mathcal{H}_\infty\) synthesis (png, pdf)

    @@ -3053,11 +3034,11 @@ The obtained complementary filters are shown on figure 61<
    -
    -

    8.3 Feedback Control Architecture to generate Complementary Filters

    +
    +

    8.3 Feedback Control Architecture to generate Complementary Filters

    - +

    The idea is here to use the fact that in a classical feedback architecture, \(S + T = 1\), in order to design complementary filters. @@ -3074,11 +3055,11 @@ All the files (data and Matlab scripts) are accessible -

    8.3.1 Architecture

    +
    +

    8.3.1 Architecture

    -
    +

    complementary_filters_feedback_architecture.png

    Figure 62: Architecture used to generate the complementary filters

    @@ -3105,8 +3086,8 @@ Which contains two integrator and a lead. \(\omega_c\) is used to tune the cross
    -
    -

    8.3.2 Loop Gain Design

    +
    +

    8.3.2 Loop Gain Design

    Let's first define the loop gain \(L\). @@ -3120,7 +3101,7 @@ L = (wc +

    loop_gain_bode_plot.png

    Figure 63: Bode plot of the loop gain \(L\) (png, pdf)

    @@ -3128,8 +3109,8 @@ L = (wc -

    8.3.3 Complementary Filters Obtained

    +
    +

    8.3.3 Complementary Filters Obtained

    We then compute the resulting low pass and high pass filters. @@ -3141,7 +3122,7 @@ Hh = 1/

    -
    +

    low_pass_high_pass_filters.png

    Figure 64: Low pass and High pass filters \(H_L\) and \(H_H\) for different values of \(\alpha\) (png, pdf)

    @@ -3150,16 +3131,16 @@ Hh = 1/
    -
    -

    8.4 Analytical Formula found in the literature

    +
    +

    8.4 Analytical Formula found in the literature

    - +

    -
    -

    8.4.1 Analytical Formula

    +
    +

    8.4.1 Analytical Formula

    min15_compl_filter_desig_angle_estim @@ -3208,8 +3189,8 @@ Hh = 1/

    -
    -

    8.4.2 Matlab

    +
    +

    8.4.2 Matlab

    omega0 = 1*2*pi; % [rad/s]
    @@ -3227,7 +3208,7 @@ HL3 = (
    +

    comp_filters_literature.png

    Figure 65: Comparison of some complementary filters found in the literature (png, pdf)

    @@ -3235,8 +3216,8 @@ HL3 = ( -

    8.4.3 Discussion

    +
    +

    8.4.3 Discussion

    Analytical Formula found in the literature provides either no parameter for tuning the robustness / performance trade-off. @@ -3245,11 +3226,11 @@ Analytical Formula found in the literature provides either no parameter for tuni

    -
    -

    8.5 Comparison of the different methods of synthesis

    +
    +

    8.5 Comparison of the different methods of synthesis

    - + The generated complementary filters using \(\mathcal{H}_\infty\) and the analytical formulas are very close to each other. However there is some difference to note here:

      @@ -3275,7 +3256,7 @@ The generated complementary filters using \(\mathcal{H}_\infty\) and the analyti

    Author: Thomas Dehaeze

    -

    Created: 2019-09-11 mer. 17:56

    +

    Created: 2019-10-02 mer. 22:48

    Validate

    diff --git a/matlab/index.org b/matlab/index.org index 22c1489..3eb5ff7 100644 --- a/matlab/index.org +++ b/matlab/index.org @@ -75,7 +75,7 @@ Let's consider the sensor fusion architecture shown on figure [[fig:fusion_two_n $\tilde{n}_1$ and $\tilde{n}_2$ are normalized white noise: #+name: eq:normalized_noise \begin{equation} - \Phi_{\tilde{n}_1}(\omega) = \Phi_{\tilde{n}_1}(\omega) = 1 + \Phi_{\tilde{n}_1}(\omega) = \Phi_{\tilde{n}_2}(\omega) = 1 \end{equation} #+name: fig:fusion_two_noisy_sensors_weights @@ -1027,7 +1027,7 @@ If $H_1(s)$ and $H_2(s)$ are designed such that The maximum phase shift due to dynamic uncertainty at frequency $\omega$ will be $\Delta\phi_\text{max}(\omega)$. ** Requirements as an $\mathcal{H}_\infty$ norm -We know try to express this requirement in terms of an $\mathcal{H}_\infty$ norm. +We now try to express this requirement in terms of an $\mathcal{H}_\infty$ norm. Let's define one weight $w_\phi(s)$ that represents the maximum wanted phase uncertainty: \[ |w_{\phi}(j\omega)|^{-1} \approx \sin(\Delta\phi_{\text{max}}(\omega)), \quad \forall\omega \] @@ -1738,7 +1738,7 @@ We define the generalized plant that will be used for the mixed synthesis. #+end_src ** Mixed $\mathcal{H}_2$ / $\mathcal{H}_\infty$ Synthesis -The mixed $\mathcal{H}_2$/$\mathcal{H}_\infty$ synthesis is performed below. +The mixed $\mathcal{H}_2/\mathcal{H}_\infty$ synthesis is performed below. #+begin_src matlab Nmeas = 1; Ncon = 1; Nz2 = 2; @@ -1793,7 +1793,7 @@ The obtained complementary filters are shown in Fig. [[fig:comp_filters_mixed_sy #+end_src #+NAME: fig:comp_filters_mixed_synthesis -#+CAPTION: Obtained complementary filters after mixed $\mathcal{H}_2$/$\mathcal{H}_\infty$ synthesis ([[./figs/comp_filters_mixed_synthesis.png][png]], [[./figs/comp_filters_mixed_synthesis.pdf][pdf]]) +#+CAPTION: Obtained complementary filters after mixed $\mathcal{H}_2/\mathcal{H}_\infty$ synthesis ([[./figs/comp_filters_mixed_synthesis.png][png]], [[./figs/comp_filters_mixed_synthesis.pdf][pdf]]) [[file:figs/comp_filters_mixed_synthesis.png]] ** Obtained Super Sensor's noise @@ -1824,7 +1824,7 @@ The PSD and CPS of the super sensor's noise are shown in Fig. [[fig:psd_super_se #+end_src #+NAME: fig:psd_super_sensor_mixed_syn -#+CAPTION: Power Spectral Density of the Super Sensor obtained with the mixed $\mathcal{H}_2$/$\mathcal{H}_\infty$ synthesis ([[./figs/psd_super_sensor_mixed_syn.png][png]], [[./figs/psd_super_sensor_mixed_syn.pdf][pdf]]) +#+CAPTION: Power Spectral Density of the Super Sensor obtained with the mixed $\mathcal{H}_2/\mathcal{H}_\infty$ synthesis ([[./figs/psd_super_sensor_mixed_syn.png][png]], [[./figs/psd_super_sensor_mixed_syn.pdf][pdf]]) [[file:figs/psd_super_sensor_mixed_syn.png]] @@ -1854,7 +1854,7 @@ The PSD and CPS of the super sensor's noise are shown in Fig. [[fig:psd_super_se #+end_src #+NAME: fig:cps_super_sensor_mixed_syn -#+CAPTION: Cumulative Power Spectrum of the Super Sensor obtained with the mixed $\mathcal{H}_2$/$\mathcal{H}_\infty$ synthesis ([[./figs/cps_super_sensor_mixed_syn.png][png]], [[./figs/cps_super_sensor_mixed_syn.pdf][pdf]]) +#+CAPTION: Cumulative Power Spectrum of the Super Sensor obtained with the mixed $\mathcal{H}_2/\mathcal{H}_\infty$ synthesis ([[./figs/cps_super_sensor_mixed_syn.png][png]], [[./figs/cps_super_sensor_mixed_syn.pdf][pdf]]) [[file:figs/cps_super_sensor_mixed_syn.png]] ** Obtained Super Sensor's Uncertainty @@ -2285,7 +2285,7 @@ The PSD and CPS of the super sensor's noise obtained with the CVX toolbox and =h #+end_src #+NAME: fig:psd_compare_cvx_h2i -#+CAPTION: Power Spectral Density of the Super Sensor obtained with the mixed $\mathcal{H}_2$/$\mathcal{H}_\infty$ synthesis ([[./figs/psd_compare_cvx_h2i.png][png]], [[./figs/psd_compare_cvx_h2i.pdf][pdf]]) +#+CAPTION: Power Spectral Density of the Super Sensor obtained with the mixed $\mathcal{H}_2/\mathcal{H}_\infty$ synthesis ([[./figs/psd_compare_cvx_h2i.png][png]], [[./figs/psd_compare_cvx_h2i.pdf][pdf]]) [[file:figs/psd_compare_cvx_h2i.png]] @@ -2317,7 +2317,7 @@ The PSD and CPS of the super sensor's noise obtained with the CVX toolbox and =h #+end_src #+NAME: fig:cps_compare_cvx_h2i -#+CAPTION: Cumulative Power Spectrum of the Super Sensor obtained with the mixed $\mathcal{H}_2$/$\mathcal{H}_\infty$ synthesis ([[./figs/cps_compare_cvx_h2i.png][png]], [[./figs/cps_compare_cvx_h2i.pdf][pdf]]) +#+CAPTION: Cumulative Power Spectrum of the Super Sensor obtained with the mixed $\mathcal{H}_2/\mathcal{H}_\infty$ synthesis ([[./figs/cps_compare_cvx_h2i.png][png]], [[./figs/cps_compare_cvx_h2i.pdf][pdf]]) [[file:figs/cps_compare_cvx_h2i.png]] ** Obtained Super Sensor's Uncertainty @@ -3509,7 +3509,7 @@ Since the input signal $x$ and the instrumental noise $n$ are incoherent: |\Phi_{\hat{x}}(\omega)| = |\Phi_n(\omega)| + |\Phi_x(\omega)| \end{equation} -From equations [[eq:coh_bis]] and [[eq:incoherent_noise]], we finally obtain +From equations eqref:eq:coh_bis and eqref:eq:incoherent_noise, we finally obtain #+begin_important #+NAME: eq:noise_psd \begin{equation} @@ -4238,6 +4238,254 @@ The generated complementary filters using $\mathcal{H}_\infty$ and the analytica - the analytical formula provides a very simple way to generate the complementary filters (and thus the controller), they could even be used to tune the controller online using the parameters $\alpha$ and $\omega_0$. However, these formula have the property that $|H_H|$ and $|H_L|$ are symmetrical with the frequency $\omega_0$ which may not be desirable. - while the $\mathcal{H}_\infty$ synthesis of the complementary filters is not as straightforward as using the analytical formula, it provides a more optimized procedure to obtain the complementary filters -* Bibliography :ignore: +* Real World Example of optimal sensor fusion +** Introduction :ignore: +cite:moore19_capac_instr_sensor_fusion_high_bandw_nanop + + +** 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 + +** Sensor Noise :noexport: +#+begin_src matlab + A1 = 19.13; % [uV2/Hz] + A2 = 0.1632; % [uV2/Hz] + A3 = 6.847; % [uV2/Hz] + wnc = 3057; % [rad] + wx = 7929; % [rad/s] + + Fx = 1/(1 - s/wx)/(1 - s/wx); + [A B C D] = butter(2, 0.5, 'low'); + Fx = ss(A, B, C, D); + + Sq = A3*wnc/s + A3; + Sx = A1*Fx + A2; +#+end_src + +#+begin_src matlab :exports none + freqs = logspace(1, 5, 1000); + + figure; + hold on; + plot(freqs, abs(squeeze(freqresp(Sq, freqs, 'Hz')))); + plot(freqs, abs(squeeze(freqresp(Sx, freqs, 'Hz')))); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + xlabel('Frequency [Hz]'); ylabel('Magnitude'); +#+end_src + +** Matlab Code +Take an Accelerometer and a Geophone both measuring the absolute motion of a structure. + +Parameters of the inertial sensors. +#+begin_src matlab + m_acc = 0.01; + k_acc = 1e6; + c_acc = 20; + + m_geo = 1; + k_geo = 1e3; + c_geo = 10; +#+end_src + +Transfer function from motion to measurement + +For the accelerometer. +The measurement is the relative motion structure/inertial mass: +\[ \frac{d}{\ddot{w}} = \frac{-m}{ms^2 + cs + k} \] + +For the geophone. +The measurement is the relative velocity structure/inertial mass: +\[ \frac{\dot{d}}{\dot{w}} = \frac{-ms^2}{ms^2 + cs + k} \] + +#+begin_src matlab + G_acc = -m_acc/(m_acc*s^2 + c_acc*s + k_acc); % [m/(m/s^2)] + G_geo = -m_geo*s^2/(m_geo*s^2 + c_geo*s + k_geo); % [m/s/m/s] +#+end_src + +Suppose the measure of the relative motion for the accelerometer (capacitive sensor for instance) has a white noise characteristic: +Suppose the measure of the relative velocity (current flowing through the coil) has a white noise characteristic: + +Define the noise characteristics +#+begin_src matlab + n = 1; w0 = 2*pi*5e3; G0 = 5e-12; G1 = 1e-15; Gc = G0/2; + L_acc = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n; + + n = 1; w0 = 2*pi*5e3; G0 = 1e-6; G1 = 1e-8; Gc = G0/2; + L_geo = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n; +#+end_src + +Transfer function of the conversion to obtain the velocity: +#+begin_src matlab + C_acc = (-k_acc/m_acc/(2*pi + s)); + C_geo = tf(-1); +#+end_src + +Let's plot the noise of both sensors: +#+begin_src matlab :exports none + freqs = logspace(-1, 4, 1000); + + figure; + hold on; + plot(freqs, abs(squeeze(freqresp(L_acc*C_acc, freqs, 'Hz'))), 'DisplayName', 'Acc'); + plot(freqs, abs(squeeze(freqresp(L_geo*C_geo, freqs, 'Hz'))), 'DisplayName', 'Geo'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + xlabel('Frequency [Hz]'); ylabel('Noise ASD [$m/s/\sqrt{Hz}$]'); + legend('location', 'northeast') +#+end_src + +Dynamics of both sensors +#+begin_src matlab :exports none + freqs = logspace(-1, 4, 1000); + + figure; + hold on; + plot(freqs, abs(squeeze(freqresp(s*G_acc*C_acc, freqs, 'Hz'))), 'DisplayName', 'Acc'); + plot(freqs, abs(squeeze(freqresp(G_geo*C_geo, freqs, 'Hz'))), 'DisplayName', 'Geo'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + xlabel('Frequency [Hz]'); ylabel('Magnitude'); + legend('location', 'northeast') +#+end_src + +** Time domain signals +#+begin_src matlab + Fs = 1e4; % Sampling Frequency [Hz] + Ts = 1/Fs; % Sampling Time [s] + + t = 0:Ts:10; % Time Vector [s] +#+end_src + +#+begin_src matlab + n_acc = lsim(L_acc*C_acc, sqrt(Fs/2)*randn(length(t), 1), t); % [m/s] + n_geo = lsim(L_geo*C_geo, sqrt(Fs/2)*randn(length(t), 1), t); % [m/s] +#+end_src + +#+begin_src matlab + figure; + hold on; + plot(t, n_geo) + plot(t, n_acc) + hold off; +#+end_src + +** H2 Synthesis +#+begin_src matlab + N1 = L_acc*C_acc; + N2 = L_geo*C_geo; +#+end_src + +#+begin_src matlab + bodeFig({N1, N2}, logspace(-1, 5, 1000)) +#+end_src + +#+begin_src matlab + P = [0 N2 1; + N1 -N2 0]; +#+end_src + +And we do the $\mathcal{H}_2$ synthesis using the =h2syn= command. +#+begin_src matlab + [H1, ~, gamma] = h2syn(P, 1, 1); +#+end_src + +Finally, we define $H_2(s) = 1 - H_1(s)$. +#+begin_src matlab + H2 = 1 - H1; +#+end_src + +#+begin_src matlab + bodeFig({H1, H2}, struct('phase', true)) +#+end_src + +#+begin_src matlab + n_acc_filt = lsim(H1, n_acc, t); + n_geo_filt = lsim(H2, n_geo, t); +#+end_src + +#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*) + data2orgtable([rms(n_acc), rms(n_geo), rms(n_acc_filt + n_geo_filt)]', {'Accelerometer', 'Geophone', 'Super Sensor'}, {'RMS'}, ' %.1e '); +#+end_src + +#+RESULTS: +| | RMS | +|---------------+---------| +| Accelerometer | 9.7e-05 | +| Geophone | 5.9e-05 | +| Super Sensor | 1.5e-05 | + +#+begin_src matlab + figure; + hold on; + plot(t, n_geo) + plot(t, n_acc) + plot(t, n_acc_filt + n_geo_filt) + hold off; +#+end_src + +** Signal and Noise +Velocity Signal: +#+begin_src matlab + v = lsim(1/(1 + s/2/pi/2), 1e-4*sqrt(Fs/2)*randn(length(t), 1), t); + v = 1e-4 * sin(2*pi*100*t); +#+end_src + +#+begin_src matlab + v_acc = lsim(s*G_acc*C_acc, v, t) + n_acc; + v_geo = lsim(G_geo*C_geo, v, t) + n_geo; +#+end_src + +#+begin_src matlab + v_ss = lsim(H1, v_acc, t) + lsim(H2, v_geo, t); +#+end_src + +#+begin_src matlab + figure; + hold on; + plot(t, v_geo) + plot(t, v_acc) + plot(t, v_ss) + plot(t, v, 'k--') + hold off; + xlim([1, 1+0.1]) +#+end_src + +** PSD and CPS +#+begin_src matlab + nx = length(n_acc); + na = 16; + win = hanning(floor(nx/na)); + + [p_acc, f] = pwelch(n_acc, win, 0, [], Fs); + [p_geo, ~] = pwelch(n_geo, win, 0, [], Fs); + [p_ss, ~] = pwelch(n_acc_filt + n_geo_filt, win, 0, [], Fs); +#+end_src + +#+begin_src matlab :exports none + figure; + hold on; + plot(f, p_acc, 'DisplayName', 'Accelerometer'); + plot(f, p_geo, 'DisplayName', 'Geophone'); + plot(f, p_ss, 'DisplayName', 'Super Sensor'); + hold off; + set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); + xlabel('Frequency [Hz]'); + ylabel('Power Spectral Density $\left[\frac{(m/s)^2}{Hz}\right]$'); + legend('location', 'southwest'); +#+end_src + +** Transfer function of the super sensor +#+begin_src matlab + bodeFig({s*C_acc*G_acc, C_geo*G_geo, s*C_acc*G_acc*H1+C_geo*G_geo*H2}, struct('phase', true)) +#+end_src + +* Bibliography :ignore: bibliographystyle:unsrt bibliography:ref.bib diff --git a/matlab/ref.bib b/matlab/ref.bib index 681b617..8883de7 100644 --- a/matlab/ref.bib +++ b/matlab/ref.bib @@ -181,4 +181,19 @@ year = 1998, doi = {10.1063/1.1149013}, url = {https://doi.org/10.1063/1.1149013}, -} \ No newline at end of file +} + + +@article{moore19_capac_instr_sensor_fusion_high_bandw_nanop, + author = {Steven Ian Moore and Andrew J. Fleming and Yuen Kuan Yong}, + title = {Capacitive Instrumentation and Sensor Fusion for + High-Bandwidth Nanopositioning}, + journal = {IEEE Sensors Letters}, + volume = 3, + number = 8, + pages = {1-3}, + year = 2019, + doi = {10.1109/lsens.2019.2933065}, + url = {https://doi.org/10.1109/lsens.2019.2933065}, + tags = {complementary filters}, +} diff --git a/paper/paper.org b/paper/paper.org index 450b622..f237e61 100644 --- a/paper/paper.org +++ b/paper/paper.org @@ -143,22 +143,21 @@ The goal is to design $H_1(s)$ and $H_2(s)$ such that the effect of the noise so And the goal is the minimize the Root Mean Square (RMS) value of $n$: #+name: eq:rms_value_estimation \begin{equation} - \sigma_{n} = \sqrt{\int_0^\infty \Phi_{\hat{n}}(\omega) d\omega} + \sigma_{n} = \sqrt{\int_0^\infty \Phi_{\hat{n}}(\omega) d\omega} = \left\| \begin{matrix} \hat{G}_1^{-1} N_1 H_1 \\ \hat{G}_2^{-1} N_2 H_2 \end{matrix} \right\|_2 \end{equation} - -The goal is to minimize the $\mathcal{H}_2$ norm between $w$ and $[z_1\ z_2]$: -\begin{equation} - \left\| \begin{matrix} w/z_1 \\ w/z_2 \end{matrix} \right\|_2 = \left\| \begin{matrix} \hat{G}_1^{-1} N_1 (1 - H_2) \\ \hat{G}_2^{-1} N_2 H_2 \end{matrix} \right\|_2 -\end{equation} - -By defining: -\begin{equation} - H_1 = 1 - H_2 -\end{equation} +Thus, the goal is to design $H_1(s)$ and $H_2(s)$ such that $H_1(s) + H_2(s) = 1$ and such that $\left\| \begin{matrix} \hat{G}_1^{-1} N_1 H_1 \\ \hat{G}_2^{-1} N_2 H_2 \end{matrix} \right\|_2$ is minimized. \begin{equation} - \left\| \begin{matrix} w/z_1 \\ w/z_2 \end{matrix} \right\|_2 = \left\| \begin{matrix} \hat{G}_1^{-1} N_1 H_1 \\ \hat{G}_2^{-1} N_2 H_2 \end{matrix} \right\|_2 = \sqrt{\int_0^\infty \left| H_1 \hat{G}_1^{-1} N_1 \right|^2 + \left| H_2 \hat{G}_2^{-1} N_2 \right|^2 d\omega} = \sigma_n +\begin{pmatrix} + z_1 \\ z_2 \\ v +\end{pmatrix} = \begin{bmatrix} + \hat{G}_1^{-1} N_1 & -\hat{G}_1^{-1} N_1 \\ + 0 & \hat{G}_2^{-1} N_2 \\ + 1 & 0 +\end{bmatrix} \begin{pmatrix} + w \\ u +\end{pmatrix} \end{equation} The $\mathcal{H}_2$ synthesis of the complementary filters thus minimized the RMS value of the super sensor noise. @@ -177,6 +176,21 @@ The $\mathcal{H}_2$ synthesis of the complementary filters thus minimized the RM ** Representation of Sensor Dynamical Uncertainty +** Sensor Fusion Architecture +\begin{equation} + \hat{x} = \left( H_1 \hat{G}_1^{-1} (1 + w_1 \Delta_1) G_1 + H_2 \hat{G}_2^{-1} (1 + w_2 \Delta_2) G_2 \right) x +\end{equation} +with $\Delta_i$ is any transfer function satisfying $\| \Delta_i \|_\infty < 1$. + +Suppose the model inversion is equal to the nominal model: +\begin{equation} + \hat{G}_i = G_i +\end{equation} + +\begin{equation} + \hat{x} = \left( 1 + H_1 w_1 \Delta_1 + H_2 w_2 \Delta_2 \right) x +\end{equation} + #+name: fig:sensor_fusion_arch_uncertainty #+caption: Figure caption #+attr_latex: :scale 1 @@ -184,6 +198,8 @@ The $\mathcal{H}_2$ synthesis of the complementary filters thus minimized the RM ** Super Sensor Dynamical Uncertainty +The uncertainty set of the transfer function from $\hat{x}$ to $x$ at frequency $\omega$ is bounded in the complex plane by a circle centered on 1 and with a radius equal to $|w_1(j\omega) H_1(j\omega)| + |w_2(j\omega) H_2(j\omega)|$. + #+name: fig:uncertainty_set_super_sensor #+caption: Figure caption #+attr_latex: :scale 1 @@ -191,6 +207,8 @@ The $\mathcal{H}_2$ synthesis of the complementary filters thus minimized the RM ** $\mathcal{H_\infty}$ Synthesis of Complementary Filters +In order to minimize the super sensor dynamical uncertainty + #+name: fig:h_infinity_robust_fusion #+caption: Figure caption #+attr_latex: :scale 1 diff --git a/paper/paper.pdf b/paper/paper.pdf index 1fa7d19..15d7ccb 100644 Binary files a/paper/paper.pdf and b/paper/paper.pdf differ diff --git a/paper/paper.tex b/paper/paper.tex index 8505906..a450953 100644 --- a/paper/paper.tex +++ b/paper/paper.tex @@ -1,4 +1,4 @@ -% Created 2020-08-17 lun. 18:06 +% Created 2020-09-22 mar. 09:51 % Intended LaTeX compiler: pdflatex \documentclass[conference]{IEEEtran} \usepackage[utf8]{inputenc} @@ -22,7 +22,6 @@ \usepackage{siunitx} \IEEEoverridecommandlockouts \usepackage{cite} -\usepackage{showframe} \usepackage{amsmath,amssymb,amsfonts} \usepackage{algorithmic} \usepackage{graphicx} @@ -34,8 +33,9 @@ \usepackage{import, hyperref} \renewcommand{\citedash}{--} \def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} +\usepackage{showframe} \author{\IEEEauthorblockN{Dehaeze Thomas} \IEEEauthorblockA{\textit{European Synchrotron Radiation Facility} \\ Grenoble, France\\ \textit{Precision Mechatronics Laboratory} \\ \textit{University of Liege}, Belgium \\ thomas.dehaeze@esrf.fr }\and \IEEEauthorblockN{Collette Christophe} \IEEEauthorblockA{\textit{BEAMS Department}\\ \textit{Free University of Brussels}, Belgium\\ \textit{Precision Mechatronics Laboratory} \\ \textit{University of Liege}, Belgium \\ ccollett@ulb.ac.be }} -\date{2020-08-17} +\date{2020-09-22} \title{Robust and Optimal Sensor Fusion} \begin{document} @@ -50,15 +50,18 @@ Complementary Filters, Sensor Fusion, H-Infinity Synthesis \end{IEEEkeywords} \section{Introduction} -\label{sec:orgc7e68f1} +\label{sec:org2c6d9ef} \label{sec:introduction} \section{Optimal Super Sensor Noise: \(\mathcal{H}_2\) Synthesis} -\label{sec:org9dea05a} +\label{sec:org5aa0717} \label{sec:optimal_fusion} +\subsection{Sensor Model} +\label{sec:org8f1053d} + \subsection{Sensor Fusion Architecture} -\label{sec:org02189c8} +\label{sec:orgc40deb4} \begin{figure}[htbp] \centering @@ -66,11 +69,70 @@ Complementary Filters, Sensor Fusion, H-Infinity Synthesis \caption{\label{fig:sensor_fusion_noise_arch}Figure caption} \end{figure} +Let note \(\Phi\) the PSD. +\(\tilde{n}_1\) and \(\tilde{n}_2\) are white noise with unitary power spectral density: +\begin{equation} + \Phi_{\tilde{n}_i}(\omega) = 1 +\end{equation} + +\begin{equation} + \hat{x} = \left( H_1 \hat{G}_1^{-1} G_1 + H_2 \hat{G}_2^{-1} G_2 \right) x + \left( H_1 \hat{G}_1^{-1} N_1 \right) \tilde{n}_1 + \left( H_2 \hat{G}_2^{-1} N_2 \right) \tilde{n}_2 +\end{equation} + +Suppose the sensor dynamical model \(\hat{G}_i\) is perfect: +\begin{equation} + \hat{G}_i = G_i +\end{equation} + +Complementary Filters +\begin{equation} + H_1(s) + H_2(s) = 1 +\end{equation} + + +\begin{equation} + \hat{x} = x + \left( H_1 \hat{G}_1^{-1} N_1 \right) \tilde{n}_1 + \left( H_2 \hat{G}_2^{-1} N_2 \right) \tilde{n}_2 +\end{equation} + +Perfect dynamics + filter noise + + \subsection{Super Sensor Noise} -\label{sec:org75bf123} +\label{sec:orgf4b6ca9} + +Let's note \(n\) the super sensor noise. + +Its PSD is determined by: +\begin{equation} + \Phi_n(\omega) = \left| H_1 \hat{G}_1^{-1} N_1 \right|^2 + \left| H_2 \hat{G}_2^{-1} N_2 \right|^2 +\end{equation} \subsection{\(\mathcal{H}_2\) Synthesis of Complementary Filters} -\label{sec:org2372e4d} +\label{sec:org5773772} + +The goal is to design \(H_1(s)\) and \(H_2(s)\) such that the effect of the noise sources \(\tilde{n}_1\) and \(\tilde{n}_2\) has the smallest possible effect on the noise \(n\) of the estimation \(\hat{x}\). + +And the goal is the minimize the Root Mean Square (RMS) value of \(n\): +\begin{equation} +\label{eq:rms_value_estimation} + \sigma_{n} = \sqrt{\int_0^\infty \Phi_{\hat{n}}(\omega) d\omega} = \left\| \begin{matrix} \hat{G}_1^{-1} N_1 H_1 \\ \hat{G}_2^{-1} N_2 H_2 \end{matrix} \right\|_2 +\end{equation} + +Thus, the goal is to design \(H_1(s)\) and \(H_2(s)\) such that \(H_1(s) + H_2(s) = 1\) and such that \(\left\| \begin{matrix} \hat{G}_1^{-1} N_1 H_1 \\ \hat{G}_2^{-1} N_2 H_2 \end{matrix} \right\|_2\) is minimized. + +\begin{equation} +\begin{pmatrix} + z_1 \\ z_2 \\ v +\end{pmatrix} = \begin{bmatrix} + \hat{G}_1^{-1} N_1 & -\hat{G}_1^{-1} N_1 \\ + 0 & \hat{G}_2^{-1} N_2 \\ + 1 & 0 +\end{bmatrix} \begin{pmatrix} + w \\ u +\end{pmatrix} +\end{equation} + +The \(\mathcal{H}_2\) synthesis of the complementary filters thus minimized the RMS value of the super sensor noise. \begin{figure}[htbp] \centering @@ -79,17 +141,33 @@ Complementary Filters, Sensor Fusion, H-Infinity Synthesis \end{figure} \subsection{Example} -\label{sec:orgf58d3c3} +\label{sec:orged06a27} \subsection{Robustness Problem} -\label{sec:org25143ef} +\label{sec:org62b375f} \section{Robust Sensor Fusion: \(\mathcal{H}_\infty\) Synthesis} -\label{sec:orge0ab922} +\label{sec:orgef03e7c} \label{sec:robust_fusion} \subsection{Representation of Sensor Dynamical Uncertainty} -\label{sec:orgde1ca0e} +\label{sec:org9c9762b} + +\subsection{Sensor Fusion Architecture} +\label{sec:org9572e70} +\begin{equation} + \hat{x} = \left( H_1 \hat{G}_1^{-1} (1 + w_1 \Delta_1) G_1 + H_2 \hat{G}_2^{-1} (1 + w_2 \Delta_2) G_2 \right) x +\end{equation} +with \(\Delta_i\) is any transfer function satisfying \(\| \Delta_i \|_\infty < 1\). + +Suppose the model inversion is equal to the nominal model: +\begin{equation} + \hat{G}_i = G_i +\end{equation} + +\begin{equation} + \hat{x} = \left( 1 + H_1 w_1 \Delta_1 + H_2 w_2 \Delta_2 \right) x +\end{equation} \begin{figure}[htbp] \centering @@ -98,7 +176,9 @@ Complementary Filters, Sensor Fusion, H-Infinity Synthesis \end{figure} \subsection{Super Sensor Dynamical Uncertainty} -\label{sec:org7f51f8d} +\label{sec:orgb9ee83e} + +The uncertainty set of the transfer function from \(\hat{x}\) to \(x\) at frequency \(\omega\) is bounded in the complex plane by a circle centered on 1 and with a radius equal to \(|w_1(j\omega) H_1(j\omega)| + |w_2(j\omega) H_2(j\omega)|\). \begin{figure}[htbp] \centering @@ -107,7 +187,9 @@ Complementary Filters, Sensor Fusion, H-Infinity Synthesis \end{figure} \subsection{\(\mathcal{H_\infty}\) Synthesis of Complementary Filters} -\label{sec:org04f04f3} +\label{sec:orgf4e3c8e} + +In order to minimize the super sensor dynamical uncertainty \begin{figure}[htbp] \centering @@ -116,14 +198,14 @@ Complementary Filters, Sensor Fusion, H-Infinity Synthesis \end{figure} \subsection{Example} -\label{sec:orgbeb8891} +\label{sec:org4f663bc} \section{Optimal and Robust Sensor Fusion: Mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) Synthesis} -\label{sec:orgf739e93} +\label{sec:org150b612} \label{sec:optimal_robust_fusion} \subsection{Sensor Fusion Architecture} -\label{sec:org8fde0b7} +\label{sec:org9bc69b7} \begin{figure}[htbp] \centering @@ -132,10 +214,10 @@ Complementary Filters, Sensor Fusion, H-Infinity Synthesis \end{figure} \subsection{Synthesis Objective} -\label{sec:org91a1cb3} +\label{sec:orgbc5ac30} \subsection{Mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) Synthesis} -\label{sec:orgcd9ab73} +\label{sec:org541ef02} \begin{figure}[htbp] \centering @@ -144,30 +226,30 @@ Complementary Filters, Sensor Fusion, H-Infinity Synthesis \end{figure} \subsection{Example} -\label{sec:orgc2f161d} +\label{sec:org046c2e2} \section{Experimental Validation} -\label{sec:org9c8a2db} +\label{sec:org1bb9cff} \label{sec:experimental_validation} \subsection{Experimental Setup} -\label{sec:orga1abc9b} +\label{sec:org2c63393} \subsection{Sensor Noise and Dynamical Uncertainty} -\label{sec:org9d92c2b} +\label{sec:orgb0c6496} \subsection{Mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) Synthesis} -\label{sec:orgbda5f50} +\label{sec:orgfb3986f} \subsection{Super Sensor Noise and Dynamical Uncertainty} -\label{sec:orgb1aa4c9} +\label{sec:orgfd5c11e} \section{Conclusion} -\label{sec:org468c862} +\label{sec:orgda418fa} \label{sec:conclusion} \section{Acknowledgment} -\label{sec:org07d8818} +\label{sec:orgabdae67} \bibliography{ref} \end{document} diff --git a/tikz/figs/h_infinity_robust_fusion.pdf b/tikz/figs/h_infinity_robust_fusion.pdf index 3d0f3e0..d1403fc 100644 Binary files a/tikz/figs/h_infinity_robust_fusion.pdf and b/tikz/figs/h_infinity_robust_fusion.pdf differ diff --git a/tikz/figs/h_infinity_robust_fusion.png b/tikz/figs/h_infinity_robust_fusion.png index 3b034a8..e1c0c71 100644 Binary files a/tikz/figs/h_infinity_robust_fusion.png and b/tikz/figs/h_infinity_robust_fusion.png differ diff --git a/tikz/figs/h_infinity_robust_fusion.svg b/tikz/figs/h_infinity_robust_fusion.svg index 960f602..9022a63 100644 --- a/tikz/figs/h_infinity_robust_fusion.svg +++ b/tikz/figs/h_infinity_robust_fusion.svg @@ -1,5 +1,5 @@ - + @@ -9,187 +9,144 @@ - - - - + - + - + - + - + - + - + - - - - + - - - - - - - + - + - + - + + + + - + - + + + + + - + + + + + - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - + + + + + + + + + + + + - + + - + - - - - - + + - + - + - + + + + + + + + + + + + diff --git a/tikz/figs/h_two_optimal_fusion.pdf b/tikz/figs/h_two_optimal_fusion.pdf index 85268ca..31e1282 100644 Binary files a/tikz/figs/h_two_optimal_fusion.pdf and b/tikz/figs/h_two_optimal_fusion.pdf differ diff --git a/tikz/figs/h_two_optimal_fusion.png b/tikz/figs/h_two_optimal_fusion.png index c2ac826..d92d16b 100644 Binary files a/tikz/figs/h_two_optimal_fusion.png and b/tikz/figs/h_two_optimal_fusion.png differ diff --git a/tikz/figs/h_two_optimal_fusion.svg b/tikz/figs/h_two_optimal_fusion.svg index 088bfe6..e0ff01e 100644 --- a/tikz/figs/h_two_optimal_fusion.svg +++ b/tikz/figs/h_two_optimal_fusion.svg @@ -1,5 +1,5 @@ - + @@ -9,187 +9,144 @@ - - - - + - + - + - + - + - + - + - - - - + - - - - - - - + - + - + - + + + + - + - + + + + + - + + + + + - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - + + + + + + + + + + + + - + + - + - - - - - + + - + - + - + + + + + + + + + + + + diff --git a/tikz/figs/mixed_h2_hinf_synthesis.pdf b/tikz/figs/mixed_h2_hinf_synthesis.pdf index 5cf816b..b16364c 100644 Binary files a/tikz/figs/mixed_h2_hinf_synthesis.pdf and b/tikz/figs/mixed_h2_hinf_synthesis.pdf differ diff --git a/tikz/figs/mixed_h2_hinf_synthesis.png b/tikz/figs/mixed_h2_hinf_synthesis.png index 30ed62e..4688762 100644 Binary files a/tikz/figs/mixed_h2_hinf_synthesis.png and b/tikz/figs/mixed_h2_hinf_synthesis.png differ diff --git a/tikz/figs/mixed_h2_hinf_synthesis.svg b/tikz/figs/mixed_h2_hinf_synthesis.svg index f80cb3e..06485f7 100644 --- a/tikz/figs/mixed_h2_hinf_synthesis.svg +++ b/tikz/figs/mixed_h2_hinf_synthesis.svg @@ -1,287 +1,235 @@ - + - + - + - + - + - + - + - + - - - - + - + - + + + + + + + - - - - - - - - - - + - + - + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - + - + - + + + + + - + + + + + - + + + + + - + - + - + - + + + + + - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - - - - - - - - - + - + - + - + - - + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - + - + - - - - - - - + + + + + + + - + + + + + + - + - - - - + + + + - + + + + + + - + - - - - + + + - + - + - - - - + + + - + - + diff --git a/tikz/figs/sensor_fusion_arch_full.pdf b/tikz/figs/sensor_fusion_arch_full.pdf index 6a8d0d6..a4a0aa7 100644 Binary files a/tikz/figs/sensor_fusion_arch_full.pdf and b/tikz/figs/sensor_fusion_arch_full.pdf differ diff --git a/tikz/figs/sensor_fusion_arch_full.png b/tikz/figs/sensor_fusion_arch_full.png index 5760149..d13f803 100644 Binary files a/tikz/figs/sensor_fusion_arch_full.png and b/tikz/figs/sensor_fusion_arch_full.png differ diff --git a/tikz/figs/sensor_fusion_arch_full.svg b/tikz/figs/sensor_fusion_arch_full.svg index a3b9bb1..c4004d3 100644 --- a/tikz/figs/sensor_fusion_arch_full.svg +++ b/tikz/figs/sensor_fusion_arch_full.svg @@ -1,405 +1,324 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - + - + - + - + - + - + - + - + - - - - + - + - + - + - + - + - - - + + + - - + + - - - - - - + + + + + + - + - - - - - - + + + + + + - + - + - - - - - - + + + + + + - + - - + + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + + + + + - + + + + + - + + + + + - + - + - + - + + + + + - + + + + + - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + - + - + - + - - + + - + - + - + - - + + - + - + - + - - + + - + - + - - + + - + - + - - - - - - + + + + + + - + - + - + diff --git a/tikz/figs/sensor_fusion_arch_uncertainty.pdf b/tikz/figs/sensor_fusion_arch_uncertainty.pdf index fcdfa18..840456c 100644 Binary files a/tikz/figs/sensor_fusion_arch_uncertainty.pdf and b/tikz/figs/sensor_fusion_arch_uncertainty.pdf differ diff --git a/tikz/figs/sensor_fusion_arch_uncertainty.png b/tikz/figs/sensor_fusion_arch_uncertainty.png index 760b39f..395aca7 100644 Binary files a/tikz/figs/sensor_fusion_arch_uncertainty.png and b/tikz/figs/sensor_fusion_arch_uncertainty.png differ diff --git a/tikz/figs/sensor_fusion_arch_uncertainty.svg b/tikz/figs/sensor_fusion_arch_uncertainty.svg index ab543f3..22a3504 100644 --- a/tikz/figs/sensor_fusion_arch_uncertainty.svg +++ b/tikz/figs/sensor_fusion_arch_uncertainty.svg @@ -1,290 +1,311 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - + - + + + + + + + + + + + + + - + - + - + - - + + - - - - - + + - + - + - + - + - - - + + + - - + + - - - - - - + + + + + + - + - - - - - - + + + + + + - + - + - - - - - - + + + + + + - + - - + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + diff --git a/tikz/figs/sensor_fusion_noise_arch.pdf b/tikz/figs/sensor_fusion_noise_arch.pdf index 4d786b4..39e2bcf 100644 Binary files a/tikz/figs/sensor_fusion_noise_arch.pdf and b/tikz/figs/sensor_fusion_noise_arch.pdf differ diff --git a/tikz/figs/sensor_fusion_noise_arch.png b/tikz/figs/sensor_fusion_noise_arch.png index f0f2959..2cdcb26 100644 Binary files a/tikz/figs/sensor_fusion_noise_arch.png and b/tikz/figs/sensor_fusion_noise_arch.png differ diff --git a/tikz/figs/sensor_fusion_noise_arch.svg b/tikz/figs/sensor_fusion_noise_arch.svg index c5f27a4..8999150 100644 --- a/tikz/figs/sensor_fusion_noise_arch.svg +++ b/tikz/figs/sensor_fusion_noise_arch.svg @@ -1,343 +1,337 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - + - - - - - - - - - - - - - - - - + - + - + + + + + + + + + + + + + - + + + + + + + + + + - + - + - + - + - + - - - + + + - - + + - - - - - - + + + + + + - + - - - - - - + + + + + + - + - + - - - - - - + + + + + + - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + + + + + - + + + + + - + - - - - - + - + - + + + + + - + - - - - - + - + - + + + + + - + + + + + - + - + - + - + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + + + + + + - + - + + - - - - - - - - - - - - - - - - - - + - - - - - - + - + - - + + - + - + - + - - + + - + - + + + + + + - + - - + + - + - + - + - - + + - + - + - + - - - - - - + + + + + + - + - + - + diff --git a/tikz/figs/uncertainty_set_super_sensor.pdf b/tikz/figs/uncertainty_set_super_sensor.pdf index d01de34..064bf63 100644 Binary files a/tikz/figs/uncertainty_set_super_sensor.pdf and b/tikz/figs/uncertainty_set_super_sensor.pdf differ diff --git a/tikz/index.org b/tikz/index.org index 78ef5cf..2934ae2 100644 --- a/tikz/index.org +++ b/tikz/index.org @@ -30,39 +30,44 @@ Configuration file is accessible [[file:config.org][here]]. #+begin_src latex :file sensor_fusion_noise_arch.pdf \begin{tikzpicture} \node[branch] (x) at (0, 0); - \node[block, above right=1.0 and 0.5 of x](G1){$G_1(s)$}; - \node[block, below right=1.0 and 0.5 of x](G2){$G_2(s)$}; - \node[addb, right=0.4 of G1](add1){}; - \node[addb, right=0.4 of G2](add2){}; - \node[block, right=1.1 of add1](H1){$H_1(s)$}; - \node[block, right=1.1 of add2](H2){$H_2(s)$}; - \node[block, above=0.5 of add1](N1){$N_1(s)$}; - \node[block, above=0.5 of add2](N2){$N_2(s)$}; - \node[addb, right=4.8 of x](add){}; + \node[addb, above right=1.0 and 0.5 of x](add1){}; + \node[addb, below right=1.0 and 0.5 of x](add2){}; + \node[block, right=0.4 of add1](G1){$G_1$}; + \node[block, right=0.4 of add2](G2){$G_2$}; + \node[block, right=0.7 of G1](Ginv1){$\hat{G}_1^{-1}$}; + \node[block, right=0.7 of G2](Ginv2){$\hat{G}_2^{-1}$}; + \node[block, right=0.6 of Ginv1](H1){$H_1$}; + \node[block, right=0.6 of Ginv2](H2){$H_2$}; + \node[block, above=0.5 of add1](N1){$N_1$}; + \node[block, above=0.5 of add2](N2){$N_2$}; + \node[addb, right=5.2 of x](add){}; \draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center); - \draw[->] (x.center) |- (G1.west); - \draw[->] (x.center) |- (G2.west); - \draw[->] (G1.east) -- (add1.west); - \draw[->] (G2.east) -- (add2.west); - \draw[->] (N1.south) -- (add1.north)node[above right]{$n_1$}; - \draw[->] (N2.south) -- (add2.north)node[above right]{$n_2$}; - \draw[<-] (N1.north) -- ++(0, 0.6)node[below right](n1){$\tilde{n}_1$}; - \draw[<-] (N2.north) -- ++(0, 0.6)node[below right](n2){$\tilde{n}_2$}; - \draw[->] (add1.east) -- (H1.west)node[above left]{$\hat{x}_1$}; - \draw[->] (add2.east) -- (H2.west)node[above left]{$\hat{x}_2$}; + \draw[->] (x.center) |- (add1.west); + \draw[->] (x.center) |- (add2.west); + \draw[->] (add1.east) -- (G1.west); + \draw[->] (add2.east) -- (G2.west); + \draw[->] (N1.south) -- (add1.north)node[above left]{$n_1$}; + \draw[->] (N2.south) -- (add2.north)node[above left]{$n_2$}; + \draw[<-] (N1.north)node[above left](n1){$\tilde{n}_1$} -- ++(0, 0.4); + \draw[<-] (N2.north)node[above left](n2){$\tilde{n}_2$} -- ++(0, 0.4); + \draw[->] (G1.east) -- (Ginv1.west)node[above left]{$v_1$}; + \draw[->] (G2.east) -- (Ginv2.west)node[above left]{$v_2$}; + \draw[->] (Ginv1.east) -- (H1.west)node[above left]{$\hat{x}_1$}; + \draw[->] (Ginv2.east) -- (H2.west)node[above left]{$\hat{x}_2$}; \draw[->] (H1) -| (add.north); \draw[->] (H2) -| (add.south); \draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$}; \begin{scope}[on background layer] - \node[fit={($(G2.south-|x)+(-0.2, -0.3)$) ($(n1.north east-|add.east)+(0.2, 0.3)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {}; + \node[fit={($(G2.south-|x)+(-0.2, -0.3)$) ($(n1.north east-|add.east)+(0.2, 0.2)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {}; \node[below left] at (supersensor.north east) {Super Sensor}; - \node[fit={($(G1.south west)+(-0.3, -0.1)$) ($(n1.north east)+(0.1, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {}; - \node[below right] at (sensor1.north west) {Sensor 1}; - \node[fit={($(G2.south west)+(-0.3, -0.1)$) ($(n2.north east)+(0.1, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor2) {}; - \node[below right] at (sensor2.north west) {Sensor 2}; + \node[fit={($(G1.south east)+(0.15, -0.15)$) ($(n1.north west)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {}; + \node[below left] at (sensor1.north east) {Sensor 1}; + + \node[fit={($(G2.south east)+(0.15, -0.15)$) ($(n2.north west)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor2) {}; + \node[below left] at (sensor2.north east) {Sensor 2}; \end{scope} \end{tikzpicture} #+end_src @@ -75,8 +80,8 @@ Configuration file is accessible [[file:config.org][here]]. * Architecture used for $\mathcal{H}_2$ synthesis of complementary filters #+begin_src latex :file h_two_optimal_fusion.pdf \begin{tikzpicture} - \node[block={4.0cm}{2.5cm}, fill=black!20!white, dashed] (P) {}; - \node[above] at (P.north) {$P(s)$}; + \node[block={3.5cm}{2.5cm}, fill=black!20!white, dashed] (P) {}; + \node[above] at (P.north) {$P$}; \coordinate[] (inputw) at ($(P.south west)!0.75!(P.north west) + (-0.7, 0)$); \coordinate[] (inputu) at ($(P.south west)!0.35!(P.north west) + (-0.7, 0)$); @@ -85,11 +90,11 @@ Configuration file is accessible [[file:config.org][here]]. \coordinate[] (output2) at ($(P.south east)!0.35!(P.north east) + ( 0.7, 0)$); \coordinate[] (outputv) at ($(P.south east)!0.1!(P.north east) + ( 0.7, 0)$); - \node[block, left=1.4 of output1] (N1){$N_1(s)$}; - \node[block, left=1.4 of output2] (N2){$N_2(s)$}; + \node[block, left=0.9 of output1] (N1){$N_1$}; + \node[block, left=0.9 of output2] (N2){$N_2$}; \node[addb={+}{}{}{}{-}, left=of N1] (sub) {}; - \node[block, below=0.3 of P] (H2) {$H_2(s)$}; + \node[block, below=0.3 of P] (H2) {$H_2$}; \draw[->] (inputw) node[above right]{$w$} -- (sub.west); \draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (N2.west); @@ -110,27 +115,37 @@ Configuration file is accessible [[file:config.org][here]]. #+begin_src latex :file sensor_fusion_arch_uncertainty.pdf \begin{tikzpicture} \node[branch] (x) at (0, 0); - \node[addb, above right=0.8 and 4 of x](add1){}; - \node[addb, below right=0.8 and 4 of x](add2){}; - \node[block, above left=0.2 and 0.1 of add1](delta1){$\Delta_1(s)$}; - \node[block, above left=0.2 and 0.1 of add2](delta2){$\Delta_2(s)$}; - \node[block, left=0.5 of delta1](W1){$w_1(s)$}; - \node[block, left=0.5 of delta2](W2){$w_2(s)$}; - \node[block, right=0.5 of add1](H1){$H_1(s)$}; - \node[block, right=0.5 of add2](H2){$H_2(s)$}; - \node[addb, right=6 of x](add){}; + \node[branch, above right=0.8 and 0.2 of x](b1){}; + \node[branch, below right=0.8 and 0.2 of x](b2){}; + \node[block, above right=0.3 and 0.3 of b1](W1){$w_1$}; + \node[block, above right=0.3 and 0.3 of b2](W2){$w_2$}; + \node[block, right=0.3 of W1](delta1){$\Delta_1$}; + \node[block, right=0.3 of W2](delta2){$\Delta_2$}; + \node[addb, right=0.3 of b1-|delta1](add1){}; + \node[addb, right=0.3 of b2-|delta2](add2){}; + \node[block, right=0.3 of add1](G1){$\hat{G}_1$}; + \node[block, right=0.3 of add2](G2){$\hat{G}_2$}; + \node[block, right=0.7 of G1](Ginv1){$\hat{G}_1^{-1}$}; + \node[block, right=0.7 of G2](Ginv2){$\hat{G}_2^{-1}$}; + \node[block, right=0.4 of Ginv1](H1){$H_1$}; + \node[block, right=0.4 of Ginv2](H2){$H_2$}; + \node[addb, right=7 of x](add){}; \draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center); \draw[->] (x.center) |- (add1.west); \draw[->] (x.center) |- (add2.west); - \draw[->] ($(add1-|W1.west)+(-0.5, 0)$)node[branch](S1){} |- (W1.west); - \draw[->] ($(add2-|W2.west)+(-0.5, 0)$)node[branch](S1){} |- (W2.west); + \draw[->] (add1.east) -- (G1.west); + \draw[->] (add2.east) -- (G2.west); + \draw[->] (b1) |- (W1.west); + \draw[->] (b2) |- (W2.west); \draw[->] (W1.east) -- (delta1.west); \draw[->] (W2.east) -- (delta2.west); \draw[->] (delta1.east) -| (add1.north); \draw[->] (delta2.east) -| (add2.north); - \draw[->] (add1.east) -- (H1.west); - \draw[->] (add2.east) -- (H2.west); + \draw[->] (G1.east) -- (Ginv1.west)node[above left]{$v_1$}; + \draw[->] (G2.east) -- (Ginv2.west)node[above left]{$v_2$}; + \draw[->] (Ginv1.east) -- (H1.west); + \draw[->] (Ginv2.east) -- (H2.west); \draw[->] (H1.east) -| (add.north); \draw[->] (H2.east) -| (add.south); \draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$}; @@ -139,10 +154,10 @@ Configuration file is accessible [[file:config.org][here]]. \node[fit={($(H2.south-|x)+(-0.2, -0.3)$) ($(delta1.north east-|add.east)+(0.2, 0.4)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {}; \node[below left] at (supersensor.north east) {Super Sensor}; - \node[block, fit={($(W1.north-|S1)+(-0.2, 0.2)$) ($(add1.south east)+(0.2, -0.3)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor1) {}; - \node[above right] at (sensor1.south west) {Sensor 1}; - \node[block, fit={($(W2.north-|S1)+(-0.2, 0.2)$) ($(add2.south east)+(0.2, -0.3)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor2) {}; - \node[above right] at (sensor2.south west) {Sensor 2}; + \node[block, fit={($(b1|-W1.north) + (-0.15, 0.15)$) ($(G1.south east)+(0.15, -0.15)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor1) {}; + \node[below left] at (sensor1.north east) {Sensor 1}; + \node[block, fit={($(b2|-W2.north) + (-0.15, 0.15)$) ($(G2.south east)+(0.15, -0.15)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor2) {}; + \node[below left] at (sensor2.north east) {Sensor 2}; \end{scope} \end{tikzpicture} #+end_src @@ -196,8 +211,8 @@ Configuration file is accessible [[file:config.org][here]]. * Architecture used for $\mathcal{H}_\infty$ synthesis of complementary filters #+begin_src latex :file h_infinity_robust_fusion.pdf \begin{tikzpicture} - \node[block={4.0cm}{2.5cm}, fill=black!20!white, dashed] (P) {}; - \node[above] at (P.north) {$P(s)$}; + \node[block={3.5cm}{2.5cm}, fill=black!20!white, dashed] (P) {}; + \node[above] at (P.north) {$P$}; \coordinate[] (inputw) at ($(P.south west)!0.75!(P.north west) + (-0.7, 0)$); \coordinate[] (inputu) at ($(P.south west)!0.35!(P.north west) + (-0.7, 0)$); @@ -206,11 +221,11 @@ Configuration file is accessible [[file:config.org][here]]. \coordinate[] (output2) at ($(P.south east)!0.35!(P.north east) + ( 0.7, 0)$); \coordinate[] (outputv) at ($(P.south east)!0.1!(P.north east) + ( 0.7, 0)$); - \node[block, left=1.4 of output1] (W1){$W_1(s)$}; - \node[block, left=1.4 of output2] (W2){$W_2(s)$}; + \node[block, left=0.9 of output1] (W1){$W_1$}; + \node[block, left=0.9 of output2] (W2){$W_2$}; \node[addb={+}{}{}{}{-}, left=of W1] (sub) {}; - \node[block, below=0.3 of P] (H2) {$H_2(s)$}; + \node[block, below=0.3 of P] (H2) {$H_2$}; \draw[->] (inputw) node[above right]{$w$} -- (sub.west); \draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (W2.west); @@ -231,48 +246,50 @@ Configuration file is accessible [[file:config.org][here]]. #+begin_src latex :file sensor_fusion_arch_full.pdf \begin{tikzpicture} \node[branch] (x) at (0, 0); - \node[addb, above right=1.2 and 3.5 of x](add1){}; - \node[addb, below right=1.2 and 3.5 of x](add2){}; - \node[block, above left=0.2 and 0 of add1](delta1){$\Delta_1(s)$}; - \node[block, above left=0.2 and 0 of add2](delta2){$\Delta_2(s)$}; - \node[block, left=0.4 of delta1](W1){$w_1(s)$}; - \node[block, left=0.4 of delta2](W2){$w_2(s)$}; - \node[addb, right=0.4 of add1](addn1){}; - \node[addb, right=0.4 of add2](addn2){}; - \node[block, above=0.5 of addn1](N1) {$N_1(s)$}; - \node[block, above=0.5 of addn2](N2) {$N_2(s)$}; - \node[block, right=1.1 of addn1](H1){$H_1(s)$}; - \node[block, right=1.1 of addn2](H2){$H_2(s)$}; - \node[addb, right=7.0 of x](add){}; + \node[addb, above right=1.0 and 0.6 of x](addn1){}; + \node[addb, below right=1.0 and 0.6 of x](addn2){}; + \node[addb, right=2.6 of addn1](add1){}; + \node[addb, right=2.6 of addn2](add2){}; + \node[block, above left=0.2 and 0 of add1](delta1){$\Delta_1$}; + \node[block, above left=0.2 and 0 of add2](delta2){$\Delta_2$}; + \node[block, left=0.4 of delta1](W1){$w_1$}; + \node[block, left=0.4 of delta2](W2){$w_2$}; + \node[block, above=0.5 of addn1](N1) {$N_1$}; + \node[block, above=0.5 of addn2](N2) {$N_2$}; + \node[block, right=0.7 of add1](H1){$H_1$}; + \node[block, right=0.7 of add2](H2){$H_2$}; + \node[addb, right=5.8 of x](add){}; \draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center); - \draw[->] (x.center) |- (add1.west); - \draw[->] (x.center) |- (add2.west); - \draw[->] ($(add1-|W1.west)+(-0.5, 0)$)node[branch](S1){} |- (W1.west); - \draw[->] ($(add2-|W2.west)+(-0.5, 0)$)node[branch](S2){} |- (W2.west); + \draw[->] (x.center) |- (addn1.west); + \draw[->] (x.center) |- (addn2.west); + \draw[->] ($(addn1-|W1.west)+(-0.3, 0)$)node[branch](S1){} |- (W1.west); + \draw[->] ($(addn2-|W2.west)+(-0.3, 0)$)node[branch](S2){} |- (W2.west); \draw[->] (W1.east) -- (delta1.west); \draw[->] (W2.east) -- (delta2.west); \draw[->] (delta1.east) -| (add1.north); \draw[->] (delta2.east) -| (add2.north); - \draw[->] (add1.east) -- (addn1.west); - \draw[->] (add2.east) -- (addn2.west); - \draw[->] (addn1.east) -- (H1.west)node[above left]{$\hat{x}_1$}; - \draw[->] (addn2.east) -- (H2.west)node[above left]{$\hat{x}_2$}; - \draw[->] ($(N1.north)+(0,0.7)$) node[below right](n1){$\tilde{n}_1$} -- (N1.north); - \draw[->] ($(N2.north)+(0,0.7)$) node[below right](n2){$\tilde{n}_2$} -- (N2.north); - \draw[->] (N1.south) -- (addn1.north)node[above right]{$n_1$}; - \draw[->] (N2.south) -- (addn2.north)node[above right]{$n_2$}; + \draw[->] (addn1.east) -- (add1.west); + \draw[->] (addn2.east) -- (add2.west); + \draw[->] (add1.east) -- (H1.west)node[above left]{$\hat{x}_1$}; + \draw[->] (add2.east) -- (H2.west)node[above left]{$\hat{x}_2$}; + \draw[<-] (N1.north)node[above left](n1){$\tilde{n}_1$} -- ++(0, 0.4); + \draw[<-] (N2.north)node[above left](n2){$\tilde{n}_2$} -- ++(0, 0.4); + \draw[->] (N1.south) -- (addn1.north)node[above left]{$n_1$}; + \draw[->] (N2.south) -- (addn2.north)node[above left]{$n_2$}; \draw[->] (H1.east) -| (add.north); \draw[->] (H2.east) -| (add.south); \draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$}; \begin{scope}[on background layer] - \node[fit={($(add2.south-|x)+(-0.2, -0.4)$) ($(n1.north-|add.east)+(0.2, 0.3)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {}; + \node[fit={($(H2.south-|x)+(-0.2, -0.3)$) ($(n1.north east-|add.east)+(0.2, 0.3)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {}; \node[below left] at (supersensor.north east) {Super Sensor}; - \node[block, fit={($(S1|-add1.south)+(-0.2, -0.2)$) ($(n1.north-|N1.east)+(0.2, 0.1)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor1) {}; - \node[below right] at (sensor1.north west) {Sensor 1}; - \node[block, fit={($(S2|-add2.south)+(-0.2, -0.2)$) ($(n2.north-|N2.east)+(0.2, 0.1)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor2) {}; - \node[below right] at (sensor2.north west) {Sensor 2}; + + \node[fit={(n1.north west) ($(add1.south -| add1.east) + (0.1, -0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {}; + \node[below left] at (sensor1.north east) {Sensor 1}; + + \node[fit={(n2.north west) ($(add2.south -| add2.east) + (0.1, -0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor2) {}; + \node[below left] at (sensor2.north east) {Sensor 2}; \end{scope} \end{tikzpicture} #+end_src @@ -285,27 +302,27 @@ Configuration file is accessible [[file:config.org][here]]. * Mixed H2/H-Infinity Synthesis #+begin_src latex :file mixed_h2_hinf_synthesis.pdf \begin{tikzpicture} - \node[block={5.0cm}{5.0cm}, fill=black!20!white, dashed] (P) {}; - \node[above] at (P.north) {$P(s)$}; + \node[block={4.0cm}{4.0cm}, fill=black!20!white, dashed] (P) {}; + \node[above] at (P.north) {$P$}; \coordinate[] (inputw) at ($(P.south west)!0.85!(P.north west) + (-0.7, 0)$); - \coordinate[] (inputu) at ($(P.south west)!0.35!(P.north west) + (-0.7, 0)$); + \coordinate[] (inputu) at ($(P.south west)!0.25!(P.north west) + (-0.7, 0)$); \coordinate[] (output1) at ($(P.south east)!0.85!(P.north east) + ( 0.7, 0)$); - \coordinate[] (output2) at ($(P.south east)!0.7!(P.north east) + ( 0.7, 0)$); - \coordinate[] (output3) at ($(P.south east)!0.5!(P.north east) + ( 0.7, 0)$); - \coordinate[] (output4) at ($(P.south east)!0.35!(P.north east) + ( 0.7, 0)$); - \coordinate[] (outputv) at ($(P.south east)!0.15!(P.north east) + ( 0.7, 0)$); + \coordinate[] (output2) at ($(P.south east)!0.65!(P.north east) + ( 0.7, 0)$); + \coordinate[] (output3) at ($(P.south east)!0.45!(P.north east) + ( 0.7, 0)$); + \coordinate[] (output4) at ($(P.south east)!0.25!(P.north east) + ( 0.7, 0)$); + \coordinate[] (outputv) at ($(P.south east)!0.10!(P.north east) + ( 0.7, 0)$); - \node[block, left=1.4 of output1] (W1){$W_1(s)$}; - \node[block, left=1.4 of output2] (W2){$W_2(s)$}; - \node[addb={+}{}{}{}{-}, left=1.6 of W1] (sub1) {}; + \node[block, left=1.0 of output1] (W1){$W_1$}; + \node[block, left=1.0 of output2] (W2){$W_2$}; + \node[addb={+}{}{}{}{-}, left=1.2 of W1] (sub1) {}; - \node[block, left=1.4 of output3] (N1){$N_1(s)$}; - \node[block, left=1.4 of output4] (N2){$N_2(s)$}; - \node[addb={+}{}{}{}{-}, left=1 of N1] (sub2) {}; + \node[block, left=1.0 of output3] (N1){$N_1$}; + \node[block, left=1.0 of output4] (N2){$N_2$}; + \node[addb={+}{}{}{}{-}, left=0.6 of N1] (sub2) {}; - \node[block, below=0.3 of P] (H2) {$H_2(s)$}; + \node[block, below=0.3 of P] (H2) {$H_2$}; \draw[->] (inputw) node[above right]{$w$} -- (sub1.west); \draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (N2.west); @@ -316,10 +333,14 @@ Configuration file is accessible [[file:config.org][here]]. \draw[->] (sub2.east) -- (N1.west); \draw[->] ($(sub1.west)+(-0.6, 0)$) node[branch](w_branch){} |- ($(outputv)+(-0.35, 0)$) node[above]{$v$} |- (H2.east); \draw[->] (w_branch|-sub2) node[branch]{} -- (sub2.west); - \draw[->] (W1.east) -- (output1)node[above left]{$z_1$}; - \draw[->] (W2.east) -- (output2)node[above left]{$z_2$}; - \draw[->] (N1.east) -- (output3)node[above left]{$z_3$}; - \draw[->] (N2.east) -- (output4)node[above left]{$z_4$}; + \draw[->] (W1.east) -- (output1)node[above left](z1){$z_1$}; + \draw[->] (W2.east) -- (output2)node[above left](z2){$z_2$}; + \draw[->] (N1.east) -- (output3)node[above left](z3){$z_3$}; + \draw[->] (N2.east) -- (output4)node[above left](z4){$z_4$}; + + + \draw [decoration={brace, raise=5pt}, decorate] (z1.north east) -- node[right=6pt]{$z_{\mathcal{H}_\infty}$} (z2.south east); + \draw [decoration={brace, raise=5pt}, decorate] (z3.north east) -- node[right=6pt]{$z_{\mathcal{H}_2}$} (z4.south east); \end{tikzpicture} #+end_src
    Table 1: RMS value of the estimation error when using the sensor individually and when using the two sensor merged using the optimal complementary filters