Update figures (half width)
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 91 KiB |
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 135 KiB After Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 163 KiB After Width: | Height: | Size: 110 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 139 KiB After Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 139 KiB After Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 94 KiB |
136
matlab/index.org
@ -23,6 +23,10 @@
|
|||||||
#+LATEX_CLASS: cleanreport
|
#+LATEX_CLASS: cleanreport
|
||||||
#+LATEX_CLASS_OPTIONS: [tocnp, minted, secbreak]
|
#+LATEX_CLASS_OPTIONS: [tocnp, minted, secbreak]
|
||||||
|
|
||||||
|
#+LATEX_HEADER_EXTRA: \usepackage[cache=false]{minted}
|
||||||
|
#+LATEX_HEADER_EXTRA: \usemintedstyle{autumn}
|
||||||
|
#+LATEX_HEADER_EXTRA: \setminted[matlab]{linenos=true, breaklines=true, tabsize=4, fontsize=\scriptsize, autogobble=true}
|
||||||
|
|
||||||
#+LATEX_HEADER: \newcommand{\authorFirstName}{Thomas}
|
#+LATEX_HEADER: \newcommand{\authorFirstName}{Thomas}
|
||||||
#+LATEX_HEADER: \newcommand{\authorLastName}{Dehaeze}
|
#+LATEX_HEADER: \newcommand{\authorLastName}{Dehaeze}
|
||||||
#+LATEX_HEADER: \newcommand{\authorEmail}{dehaeze.thomas@gmail.com}
|
#+LATEX_HEADER: \newcommand{\authorEmail}{dehaeze.thomas@gmail.com}
|
||||||
@ -72,12 +76,15 @@ In this example, the measured quantity $x$ is the velocity of an object.
|
|||||||
#+attr_latex: :environment tabular :align clc
|
#+attr_latex: :environment tabular :align clc
|
||||||
#+attr_latex: :center t :booktabs t :float t
|
#+attr_latex: :center t :booktabs t :float t
|
||||||
| *Notation* | *Meaning* | *Unit* |
|
| *Notation* | *Meaning* | *Unit* |
|
||||||
|---------------+---------------------------------+---------|
|
|------------------+-----------------------------------+---------------------------|
|
||||||
| $x$ | Physical measured quantity | $[m/s]$ |
|
| $x$ | Physical measured quantity | $[m/s]$ |
|
||||||
| $\tilde{n}_i$ | White noise with unitary PSD | |
|
| $\tilde{n}_i$ | White noise with unitary PSD | |
|
||||||
| $n_i$ | Shaped noise | $[m/s]$ |
|
| $n_i$ | Shaped noise | $[m/s]$ |
|
||||||
| $v_i$ | Sensor output measurement | $[V]$ |
|
| $v_i$ | Sensor output measurement | $[V]$ |
|
||||||
| $\hat{x}_i$ | Estimate of $x$ from the sensor | $[m/s]$ |
|
| $\hat{x}_i$ | Estimate of $x$ from the sensor | $[m/s]$ |
|
||||||
|
| $\Phi_n(\omega)$ | Power Spectral Density of $n$ | $[\frac{(m/s)^2}{Hz}]$ |
|
||||||
|
| $\phi_n(\omega)$ | Amplitude Spectral Density of $n$ | $[\frac{m/s}{\sqrt{Hz}}]$ |
|
||||||
|
| $\sigma_n$ | Root Mean Square Value of $n$ | $[m/s\ rms]$ |
|
||||||
|
|
||||||
#+name: tab:sensor_dynamical_blocks
|
#+name: tab:sensor_dynamical_blocks
|
||||||
#+caption: Description of Systems in Figure [[fig:sensor_model_noise_uncertainty]]
|
#+caption: Description of Systems in Figure [[fig:sensor_model_noise_uncertainty]]
|
||||||
@ -144,8 +151,8 @@ Both sensor dynamics in $[\frac{V}{m/s}]$ are shown in Figure [[fig:sensors_nomi
|
|||||||
plot(freqs, abs(squeeze(freqresp(G1, freqs, 'Hz'))), '-', 'DisplayName', '$G_1(j\omega)$');
|
plot(freqs, abs(squeeze(freqresp(G1, freqs, 'Hz'))), '-', 'DisplayName', '$G_1(j\omega)$');
|
||||||
plot(freqs, abs(squeeze(freqresp(G2, freqs, 'Hz'))), '-', 'DisplayName', '$G_2(j\omega)$');
|
plot(freqs, abs(squeeze(freqresp(G2, freqs, 'Hz'))), '-', 'DisplayName', '$G_2(j\omega)$');
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Magnitude $[\frac{V}{m/s}]$'); set(gca, 'XTickLabel',[]);
|
ylabel('Magnitude $\left[\frac{V}{m/s}\right]$'); set(gca, 'XTickLabel',[]);
|
||||||
legend('location', 'northeast');
|
legend('location', 'northeast', 'FontSize', 8);
|
||||||
hold off;
|
hold off;
|
||||||
|
|
||||||
% Phase
|
% Phase
|
||||||
@ -163,7 +170,7 @@ Both sensor dynamics in $[\frac{V}{m/s}]$ are shown in Figure [[fig:sensors_nomi
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/sensors_nominal_dynamics.pdf', 'width', 'full', 'height', 'full');
|
exportFig('figs/sensors_nominal_dynamics.pdf', 'width', 'half', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:sensors_nominal_dynamics
|
#+name: fig:sensors_nominal_dynamics
|
||||||
@ -201,11 +208,11 @@ The bode plot of the sensors nominal dynamics as well as their defined dynamical
|
|||||||
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
||||||
ylim([0, 5]);
|
ylim([0, 5]);
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
legend('location', 'northwest');
|
legend('location', 'northwest', 'FontSize', 8);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/sensors_uncertainty_weights.pdf', 'width', 'wide', 'height', 'normal');
|
exportFig('figs/sensors_uncertainty_weights.pdf', 'width', 'half', 'height', 'short');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:sensors_uncertainty_weights
|
#+name: fig:sensors_uncertainty_weights
|
||||||
@ -228,8 +235,9 @@ The bode plot of the sensors nominal dynamics as well as their defined dynamical
|
|||||||
set(gca, 'XTickLabel',[]);
|
set(gca, 'XTickLabel',[]);
|
||||||
ylabel('Magnitude $[\frac{V}{m/s}]$');
|
ylabel('Magnitude $[\frac{V}{m/s}]$');
|
||||||
ylim([1e-2, 2e3]);
|
ylim([1e-2, 2e3]);
|
||||||
legend('location', 'northeast');
|
legend('location', 'northwest', 'FontSize', 8, 'NumColumns', 2);
|
||||||
hold off;
|
hold off;
|
||||||
|
ylim([1e-2, 1e4])
|
||||||
|
|
||||||
% Phase
|
% Phase
|
||||||
ax2 = subplot(2,1,2);
|
ax2 = subplot(2,1,2);
|
||||||
@ -250,7 +258,7 @@ The bode plot of the sensors nominal dynamics as well as their defined dynamical
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/sensors_nominal_dynamics_and_uncertainty.pdf', 'width', 'full', 'height', 'full');
|
exportFig('figs/sensors_nominal_dynamics_and_uncertainty.pdf', 'width', 'half', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:sensors_nominal_dynamics_and_uncertainty
|
#+name: fig:sensors_nominal_dynamics_and_uncertainty
|
||||||
@ -285,14 +293,14 @@ The weights $N_1$ and $N_2$ representing the amplitude spectral density of the s
|
|||||||
plot(freqs, abs(squeeze(freqresp(N1, freqs, 'Hz'))), '-', 'DisplayName', '$|N_1(j\omega)|$');
|
plot(freqs, abs(squeeze(freqresp(N1, freqs, 'Hz'))), '-', 'DisplayName', '$|N_1(j\omega)|$');
|
||||||
plot(freqs, abs(squeeze(freqresp(N2, freqs, 'Hz'))), '-', 'DisplayName', '$|N_2(j\omega)|$');
|
plot(freqs, abs(squeeze(freqresp(N2, freqs, 'Hz'))), '-', 'DisplayName', '$|N_2(j\omega)|$');
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Amplitude Spectral Density $\left[ \frac{m/s}{\sqrt{Hz}} \right]$');
|
xlabel('Frequency [Hz]'); ylabel('ASD $\left[ \frac{m/s}{\sqrt{Hz}} \right]$');
|
||||||
hold off;
|
hold off;
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
legend('location', 'northeast');
|
legend('location', 'northeast', 'FontSize', 8);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/sensors_noise.pdf', 'width', 'normal', 'height', 'normal');
|
exportFig('figs/sensors_noise.pdf', 'width', 'half', 'height', 'short');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:sensors_noise
|
#+name: fig:sensors_noise
|
||||||
@ -387,10 +395,6 @@ The uncertainty set of the transfer function from $\hat{x}$ to $x$ at frequency
|
|||||||
** Introduction :ignore:
|
** Introduction :ignore:
|
||||||
In this section, the complementary filters $H_1(s)$ and $H_2(s)$ are designed in order to minimize the RMS value of super sensor noise $\sigma_n$.
|
In this section, the complementary filters $H_1(s)$ and $H_2(s)$ are designed in order to minimize the RMS value of super sensor noise $\sigma_n$.
|
||||||
|
|
||||||
#+name: fig:sensor_fusion_noise_arch
|
|
||||||
#+caption: Optimal Sensor Fusion Architecture
|
|
||||||
[[file:figs-tikz/sensor_fusion_noise_arch.png]]
|
|
||||||
|
|
||||||
The RMS value of the super sensor noise is (neglecting the model uncertainty):
|
The RMS value of the super sensor noise is (neglecting the model uncertainty):
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\begin{aligned}
|
\begin{aligned}
|
||||||
@ -479,7 +483,7 @@ The obtained complementary filters are shown in Figure [[fig:htwo_comp_filters]]
|
|||||||
set(gca, 'XTickLabel',[]);
|
set(gca, 'XTickLabel',[]);
|
||||||
ylabel('Magnitude');
|
ylabel('Magnitude');
|
||||||
hold off;
|
hold off;
|
||||||
legend('location', 'northeast');
|
legend('location', 'northeast', 'FontSize', 8);
|
||||||
|
|
||||||
% Phase
|
% Phase
|
||||||
ax2 = subplot(2,1,2);
|
ax2 = subplot(2,1,2);
|
||||||
@ -496,7 +500,7 @@ The obtained complementary filters are shown in Figure [[fig:htwo_comp_filters]]
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/htwo_comp_filters.pdf', 'width', 'full', 'height', 'tall');
|
exportFig('figs/htwo_comp_filters.pdf', 'width', 'half', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:htwo_comp_filters
|
#+name: fig:htwo_comp_filters
|
||||||
@ -507,7 +511,7 @@ The obtained complementary filters are shown in Figure [[fig:htwo_comp_filters]]
|
|||||||
** Super Sensor Noise
|
** Super Sensor Noise
|
||||||
<<sec:H2_super_sensor_noise>>
|
<<sec:H2_super_sensor_noise>>
|
||||||
|
|
||||||
The Power Spectral Density of the individual sensors' noise $\Phi_{n_1}, \Phi_{n_2}$ and of the super sensor noise $\Phi_{n_{\mathcal{H}_2}}$ are computed below and shown in Figure [[fig:psd_sensors_htwo_synthesis]].
|
The Power Spectral Density of the individual sensors' noise $\Phi_{n_1}, \Phi_{n_2}$ and of the super sensor noise $\Phi_{n_{\mathcal{H}_2}}$ are computed below.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
PSD_S1 = abs(squeeze(freqresp(N1, freqs, 'Hz'))).^2;
|
PSD_S1 = abs(squeeze(freqresp(N1, freqs, 'Hz'))).^2;
|
||||||
PSD_S2 = abs(squeeze(freqresp(N2, freqs, 'Hz'))).^2;
|
PSD_S2 = abs(squeeze(freqresp(N2, freqs, 'Hz'))).^2;
|
||||||
@ -515,6 +519,8 @@ The Power Spectral Density of the individual sensors' noise $\Phi_{n_1}, \Phi_{n
|
|||||||
abs(squeeze(freqresp(N2*H2, freqs, 'Hz'))).^2;
|
abs(squeeze(freqresp(N2*H2, freqs, 'Hz'))).^2;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
The obtained ASD are shown in Figure [[fig:psd_sensors_htwo_synthesis]].
|
||||||
|
|
||||||
The RMS value of the individual sensors and of the super sensor are listed in Table [[tab:rms_noise_H2]].
|
The RMS value of the individual sensors and of the super sensor are listed in Table [[tab:rms_noise_H2]].
|
||||||
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
|
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
|
||||||
data2orgtable([sqrt(trapz(freqs, PSD_S1)); sqrt(trapz(freqs, PSD_S2)); sqrt(trapz(freqs, PSD_H2))], ...
|
data2orgtable([sqrt(trapz(freqs, PSD_S1)); sqrt(trapz(freqs, PSD_S2)); sqrt(trapz(freqs, PSD_H2))], ...
|
||||||
@ -536,18 +542,18 @@ The RMS value of the individual sensors and of the super sensor are listed in Ta
|
|||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
plot(freqs, PSD_S1, '-', 'DisplayName', '$\Phi_{n_1}$');
|
plot(freqs, sqrt(PSD_S1), '-', 'DisplayName', '$\phi_{n_1}$');
|
||||||
plot(freqs, PSD_S2, '-', 'DisplayName', '$\Phi_{n_2}$');
|
plot(freqs, sqrt(PSD_S2), '-', 'DisplayName', '$\phi_{n_2}$');
|
||||||
plot(freqs, PSD_H2, 'k-', 'DisplayName', '$\Phi_{n_{\mathcal{H}_2}}$');
|
plot(freqs, sqrt(PSD_H2), 'k-', 'DisplayName', '$\phi_{n_{\mathcal{H}_2}}$');
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Power Spectral Density $\left[ \frac{(m/s)^2}{Hz} \right]$');
|
xlabel('Frequency [Hz]'); ylabel('ASD $\left[ \frac{m/s}{\sqrt{Hz}} \right]$');
|
||||||
hold off;
|
hold off;
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
legend('location', 'northeast');
|
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 2);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/psd_sensors_htwo_synthesis.pdf', 'width', 'wide', 'height', 'normal');
|
exportFig('figs/psd_sensors_htwo_synthesis.pdf', 'width', 'half', 'height', 'short');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:psd_sensors_htwo_synthesis
|
#+name: fig:psd_sensors_htwo_synthesis
|
||||||
@ -585,12 +591,12 @@ The resulting noises are displayed in Figure [[fig:sensor_noise_H2_time_domain]]
|
|||||||
plot(t, v, 'k--', 'DisplayName', '$x$');
|
plot(t, v, 'k--', 'DisplayName', '$x$');
|
||||||
hold off;
|
hold off;
|
||||||
xlabel('Time [s]'); ylabel('Velocity [m/s]');
|
xlabel('Time [s]'); ylabel('Velocity [m/s]');
|
||||||
legend('location', 'southwest');
|
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 2);
|
||||||
ylim([-0.3, 0.3]);
|
ylim([-0.3, 0.3]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/super_sensor_time_domain_h2.pdf', 'width', 'wide', 'height', 'normal');
|
exportFig('figs/super_sensor_time_domain_h2.pdf', 'width', 'half', 'height', 'normal');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:super_sensor_time_domain_h2
|
#+name: fig:super_sensor_time_domain_h2
|
||||||
@ -609,12 +615,12 @@ The resulting noises are displayed in Figure [[fig:sensor_noise_H2_time_domain]]
|
|||||||
plot(t, (lsim(H1, n1, t)+lsim(H2, n2, t)), '-', 'DisplayName', '$n$');
|
plot(t, (lsim(H1, n1, t)+lsim(H2, n2, t)), '-', 'DisplayName', '$n$');
|
||||||
hold off;
|
hold off;
|
||||||
xlabel('Time [s]'); ylabel('Sensor Noise [m/s]');
|
xlabel('Time [s]'); ylabel('Sensor Noise [m/s]');
|
||||||
legend();
|
legend('FontSize', 8);
|
||||||
ylim([-0.2, 0.2]);
|
ylim([-0.2, 0.2]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/sensor_noise_H2_time_domain.pdf', 'width', 'wide', 'height', 'normal');
|
exportFig('figs/sensor_noise_H2_time_domain.pdf', 'width', 'half', 'height', 'normal');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:sensor_noise_H2_time_domain
|
#+name: fig:sensor_noise_H2_time_domain
|
||||||
@ -647,7 +653,7 @@ As a result the super sensor signal can not be used for feedback applications ab
|
|||||||
set(gca, 'XTickLabel',[]);
|
set(gca, 'XTickLabel',[]);
|
||||||
ylabel('Magnitude');
|
ylabel('Magnitude');
|
||||||
ylim([1e-2, 1e1]);
|
ylim([1e-2, 1e1]);
|
||||||
legend('location', 'southeast');
|
legend('location', 'southeast', 'FontSize', 8);
|
||||||
hold off;
|
hold off;
|
||||||
|
|
||||||
% Phase
|
% Phase
|
||||||
@ -667,7 +673,7 @@ As a result the super sensor signal can not be used for feedback applications ab
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/super_sensor_dynamical_uncertainty_H2.pdf', 'width', 'full', 'height', 'full');
|
exportFig('figs/super_sensor_dynamical_uncertainty_H2.pdf', 'width', 'half', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:super_sensor_dynamical_uncertainty_H2
|
#+name: fig:super_sensor_dynamical_uncertainty_H2
|
||||||
@ -777,7 +783,7 @@ The uncertainty bounds of the two individual sensor as well as the wanted maximu
|
|||||||
set(gca, 'XTickLabel',[]);
|
set(gca, 'XTickLabel',[]);
|
||||||
ylabel('Magnitude');
|
ylabel('Magnitude');
|
||||||
ylim([1e-2, 1e1]);
|
ylim([1e-2, 1e1]);
|
||||||
legend('location', 'southeast');
|
legend('location', 'southeast', 'FontSize', 8);
|
||||||
hold off;
|
hold off;
|
||||||
|
|
||||||
% Phase
|
% Phase
|
||||||
@ -797,7 +803,7 @@ The uncertainty bounds of the two individual sensor as well as the wanted maximu
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/weight_uncertainty_bounds_Wu.pdf', 'width', 'full', 'height', 'full');
|
exportFig('figs/weight_uncertainty_bounds_Wu.pdf', 'width', 'half', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:weight_uncertainty_bounds_Wu
|
#+name: fig:weight_uncertainty_bounds_Wu
|
||||||
@ -878,16 +884,15 @@ The obtained complementary filters as well as the wanted upper bounds are shown
|
|||||||
hold on;
|
hold on;
|
||||||
plot(freqs, 1./abs(squeeze(freqresp(Wu*W1, freqs, 'Hz'))), '--', 'DisplayName', '$1/|W_uW_1|$');
|
plot(freqs, 1./abs(squeeze(freqresp(Wu*W1, freqs, 'Hz'))), '--', 'DisplayName', '$1/|W_uW_1|$');
|
||||||
plot(freqs, 1./abs(squeeze(freqresp(Wu*W2, freqs, 'Hz'))), '--', 'DisplayName', '$1/|W_uW_2|$');
|
plot(freqs, 1./abs(squeeze(freqresp(Wu*W2, freqs, 'Hz'))), '--', 'DisplayName', '$1/|W_uW_2|$');
|
||||||
|
|
||||||
set(gca,'ColorOrderIndex',1)
|
set(gca,'ColorOrderIndex',1)
|
||||||
plot(freqs, abs(squeeze(freqresp(H1, freqs, 'Hz'))), '-', 'DisplayName', '$H_1$');
|
plot(freqs, abs(squeeze(freqresp(H1, freqs, 'Hz'))), '-', 'DisplayName', '$|H_1|$');
|
||||||
plot(freqs, abs(squeeze(freqresp(H2, freqs, 'Hz'))), '-', 'DisplayName', '$H_2$');
|
plot(freqs, abs(squeeze(freqresp(H2, freqs, 'Hz'))), '-', 'DisplayName', '$|H_2|$');
|
||||||
|
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Magnitude');
|
ylabel('Magnitude');
|
||||||
set(gca, 'XTickLabel',[]);
|
set(gca, 'XTickLabel',[]);
|
||||||
legend('location', 'northeast');
|
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 2);
|
||||||
|
|
||||||
ax2 = subplot(2,1,2);
|
ax2 = subplot(2,1,2);
|
||||||
hold on;
|
hold on;
|
||||||
@ -903,7 +908,7 @@ The obtained complementary filters as well as the wanted upper bounds are shown
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/hinf_comp_filters.pdf', 'width', 'full', 'height', 'full');
|
exportFig('figs/hinf_comp_filters.pdf', 'width', 'half', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:hinf_comp_filters
|
#+name: fig:hinf_comp_filters
|
||||||
@ -942,7 +947,7 @@ The $\mathcal{H}_\infty$ synthesis thus allows to design filters such that the s
|
|||||||
set(gca, 'XTickLabel',[]);
|
set(gca, 'XTickLabel',[]);
|
||||||
ylabel('Magnitude');
|
ylabel('Magnitude');
|
||||||
ylim([1e-2, 1e1]);
|
ylim([1e-2, 1e1]);
|
||||||
legend('location', 'southeast');
|
legend('location', 'southeast', 'FontSize', 8);
|
||||||
hold off;
|
hold off;
|
||||||
|
|
||||||
% Phase
|
% Phase
|
||||||
@ -964,7 +969,7 @@ The $\mathcal{H}_\infty$ synthesis thus allows to design filters such that the s
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/super_sensor_dynamical_uncertainty_Hinf.pdf', 'width', 'full', 'height', 'full');
|
exportFig('figs/super_sensor_dynamical_uncertainty_Hinf.pdf', 'width', 'half', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:super_sensor_dynamical_uncertainty_Hinf
|
#+name: fig:super_sensor_dynamical_uncertainty_Hinf
|
||||||
@ -973,10 +978,8 @@ The $\mathcal{H}_\infty$ synthesis thus allows to design filters such that the s
|
|||||||
[[file:figs/super_sensor_dynamical_uncertainty_Hinf.png]]
|
[[file:figs/super_sensor_dynamical_uncertainty_Hinf.png]]
|
||||||
|
|
||||||
** Super sensor noise
|
** Super sensor noise
|
||||||
We now compute the obtain Power Spectral Density of the super sensor's noise (Figure [[fig:psd_sensors_hinf_synthesis]]).
|
We now compute the obtain Power Spectral Density of the super sensor's noise.
|
||||||
|
The Amplitude Spectral Densities are shown in Figure [[fig:psd_sensors_hinf_synthesis]].
|
||||||
The obtained RMS of the super sensor noise in the $\mathcal{H}_2$ and $\mathcal{H}_\infty$ case are shown in Table [[tab:rms_noise_comp_H2_Hinf]].
|
|
||||||
As expected, the super sensor obtained from the $\mathcal{H}_\infty$ synthesis is much noisier than the super sensor obtained from the $\mathcal{H}_2$ synthesis.
|
|
||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
PSD_S2 = abs(squeeze(freqresp(N2, freqs, 'Hz'))).^2;
|
PSD_S2 = abs(squeeze(freqresp(N2, freqs, 'Hz'))).^2;
|
||||||
@ -985,6 +988,9 @@ As expected, the super sensor obtained from the $\mathcal{H}_\infty$ synthesis i
|
|||||||
abs(squeeze(freqresp(N2*H2, freqs, 'Hz'))).^2;
|
abs(squeeze(freqresp(N2*H2, freqs, 'Hz'))).^2;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
The obtained RMS of the super sensor noise in the $\mathcal{H}_2$ and $\mathcal{H}_\infty$ case are shown in Table [[tab:rms_noise_comp_H2_Hinf]].
|
||||||
|
As expected, the super sensor obtained from the $\mathcal{H}_\infty$ synthesis is much noisier than the super sensor obtained from the $\mathcal{H}_2$ synthesis.
|
||||||
|
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
H2_filters = load('./mat/H2_filters.mat', 'H2', 'H1');
|
H2_filters = load('./mat/H2_filters.mat', 'H2', 'H1');
|
||||||
|
|
||||||
@ -995,19 +1001,19 @@ As expected, the super sensor obtained from the $\mathcal{H}_\infty$ synthesis i
|
|||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
plot(freqs, PSD_S1, '-', 'DisplayName', '$\Phi_{n_1}$');
|
plot(freqs, sqrt(PSD_S1), '-', 'DisplayName', '$\phi_{n_1}$');
|
||||||
plot(freqs, PSD_S2, '-', 'DisplayName', '$\Phi_{n_2}$');
|
plot(freqs, sqrt(PSD_S2), '-', 'DisplayName', '$\phi_{n_2}$');
|
||||||
plot(freqs, PSD_H2, 'k-', 'DisplayName', '$\Phi_{n_{\mathcal{H}_2}}$');
|
plot(freqs, sqrt(PSD_H2), 'k-', 'DisplayName', '$\phi_{n_{\mathcal{H}_2}}$');
|
||||||
plot(freqs, PSD_Hinf, 'k--', 'DisplayName', '$\Phi_{n_{\mathcal{H}_\infty}}$');
|
plot(freqs, sqrt(PSD_Hinf), 'k--', 'DisplayName', '$\phi_{n_{\mathcal{H}_\infty}}$');
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Power Spectral Density $\left[ \frac{(m/s)^2}{Hz} \right]$');
|
xlabel('Frequency [Hz]'); ylabel('ASD $\left[ \frac{m/s}{\sqrt{Hz}} \right]$');
|
||||||
hold off;
|
hold off;
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
legend('location', 'northeast');
|
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 2);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/psd_sensors_hinf_synthesis.pdf', 'width', 'wide', 'height', 'normal');
|
exportFig('figs/psd_sensors_hinf_synthesis.pdf', 'width', 'half', 'height', 'normal');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:psd_sensors_hinf_synthesis
|
#+name: fig:psd_sensors_hinf_synthesis
|
||||||
@ -1135,7 +1141,7 @@ The obtained complementary filters are shown in Figure [[fig:htwo_hinf_comp_filt
|
|||||||
ylabel('Magnitude');
|
ylabel('Magnitude');
|
||||||
set(gca, 'XTickLabel',[]);
|
set(gca, 'XTickLabel',[]);
|
||||||
ylim([1e-3, 2]);
|
ylim([1e-3, 2]);
|
||||||
legend('location', 'southwest');
|
legend('location', 'southeast', 'FontSize', 8);
|
||||||
|
|
||||||
ax2 = subplot(2,1,2);
|
ax2 = subplot(2,1,2);
|
||||||
hold on;
|
hold on;
|
||||||
@ -1151,7 +1157,7 @@ The obtained complementary filters are shown in Figure [[fig:htwo_hinf_comp_filt
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/htwo_hinf_comp_filters.pdf', 'width', 'full', 'height', 'full');
|
exportFig('figs/htwo_hinf_comp_filters.pdf', 'width', 'half', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:htwo_hinf_comp_filters
|
#+name: fig:htwo_hinf_comp_filters
|
||||||
@ -1160,7 +1166,7 @@ The obtained complementary filters are shown in Figure [[fig:htwo_hinf_comp_filt
|
|||||||
[[file:figs/htwo_hinf_comp_filters.png]]
|
[[file:figs/htwo_hinf_comp_filters.png]]
|
||||||
|
|
||||||
** Obtained Super Sensor's noise
|
** Obtained Super Sensor's noise
|
||||||
The Power Spectral Density of the super sensor's noise is shown in Figure [[fig:psd_sensors_htwo_hinf_synthesis]].
|
The Amplitude Spectral Density of the super sensor's noise is shown in Figure [[fig:psd_sensors_htwo_hinf_synthesis]].
|
||||||
|
|
||||||
A time domain simulation is shown in Figure [[fig:super_sensor_time_domain_h2_hinf]].
|
A time domain simulation is shown in Figure [[fig:super_sensor_time_domain_h2_hinf]].
|
||||||
|
|
||||||
@ -1190,20 +1196,20 @@ The RMS values of the super sensor noise for the presented three synthesis are l
|
|||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
plot(freqs, PSD_S1, '-', 'DisplayName', '$\Phi_{n_1}$');
|
plot(freqs, sqrt(PSD_S1), '-', 'DisplayName', '$\Phi_{n_1}$');
|
||||||
plot(freqs, PSD_S2, '-', 'DisplayName', '$\Phi_{n_2}$');
|
plot(freqs, sqrt(PSD_S2), '-', 'DisplayName', '$\Phi_{n_2}$');
|
||||||
plot(freqs, PSD_H2, 'k-', 'DisplayName', '$\Phi_{n_{\mathcal{H}_2}}$');
|
plot(freqs, sqrt(PSD_H2), 'k-', 'DisplayName', '$\Phi_{n_{\mathcal{H}_2}}$');
|
||||||
plot(freqs, PSD_Hinf, 'k--', 'DisplayName', '$\Phi_{n_{\mathcal{H}_\infty}}$');
|
plot(freqs, sqrt(PSD_Hinf), 'k--', 'DisplayName', '$\Phi_{n_{\mathcal{H}_\infty}}$');
|
||||||
plot(freqs, PSD_H2Hinf, 'k-.', 'DisplayName', '$\Phi_{n_{\mathcal{H}_2/\mathcal{H}_\infty}}$');
|
plot(freqs, sqrt(PSD_H2Hinf), 'k-.', 'DisplayName', '$\Phi_{n_{\mathcal{H}_2/\mathcal{H}_\infty}}$');
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Power Spectral Density [$(m/s)^2/Hz$]');
|
xlabel('Frequency [Hz]'); ylabel('ASD $\left[ \frac{m/s}{\sqrt{Hz}} \right]$');
|
||||||
hold off;
|
hold off;
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
legend('location', 'northeast');
|
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 3);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/psd_sensors_htwo_hinf_synthesis.pdf', 'width', 'wide', 'height', 'normal');
|
exportFig('figs/psd_sensors_htwo_hinf_synthesis.pdf', 'width', 'half', 'height', 'normal');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:psd_sensors_htwo_hinf_synthesis
|
#+name: fig:psd_sensors_htwo_hinf_synthesis
|
||||||
@ -1236,12 +1242,12 @@ The RMS values of the super sensor noise for the presented three synthesis are l
|
|||||||
plot(t, v, 'k--', 'DisplayName', '$x$');
|
plot(t, v, 'k--', 'DisplayName', '$x$');
|
||||||
hold off;
|
hold off;
|
||||||
xlabel('Time [s]'); ylabel('Velocity [m/s]');
|
xlabel('Time [s]'); ylabel('Velocity [m/s]');
|
||||||
legend('location', 'southwest');
|
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 3);
|
||||||
ylim([-0.3, 0.3]);
|
ylim([-0.3, 0.3]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/super_sensor_time_domain_h2_hinf.pdf', 'width', 'wide', 'height', 'normal');
|
exportFig('figs/super_sensor_time_domain_h2_hinf.pdf', 'width', 'half', 'height', 'normal');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:super_sensor_time_domain_h2_hinf
|
#+name: fig:super_sensor_time_domain_h2_hinf
|
||||||
@ -1294,7 +1300,7 @@ The uncertainty on the super sensor's dynamics is shown in Figure [[fig:super_se
|
|||||||
set(gca, 'XTickLabel',[]);
|
set(gca, 'XTickLabel',[]);
|
||||||
ylabel('Magnitude');
|
ylabel('Magnitude');
|
||||||
ylim([1e-2, 1e1]);
|
ylim([1e-2, 1e1]);
|
||||||
legend('location', 'southeast');
|
legend('location', 'southeast', 'FontSize', 8);
|
||||||
hold off;
|
hold off;
|
||||||
|
|
||||||
% Phase
|
% Phase
|
||||||
@ -1316,7 +1322,7 @@ The uncertainty on the super sensor's dynamics is shown in Figure [[fig:super_se
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/super_sensor_dynamical_uncertainty_Htwo_Hinf.pdf', 'width', 'full', 'height', 'full');
|
exportFig('figs/super_sensor_dynamical_uncertainty_Htwo_Hinf.pdf', 'width', 'half', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:super_sensor_dynamical_uncertainty_Htwo_Hinf
|
#+name: fig:super_sensor_dynamical_uncertainty_Htwo_Hinf
|
||||||
|