Update uncertainty analysis

This commit is contained in:
Thomas Dehaeze 2020-03-27 18:46:00 +01:00
parent 30e66d0d7a
commit 044c7afef8
16 changed files with 323 additions and 304 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 130 KiB

View File

@ -192,7 +192,6 @@ One can see that the payload has a resonance frequency of $\omega_0^\prime = 250
figure;
ax1 = subplot(2,1,1);
hold on;
for i = 1:length(Gps)
plot(freqs, abs(squeeze(freqresp(Gps(:,:,i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
@ -200,22 +199,9 @@ One can see that the payload has a resonance frequency of $\omega_0^\prime = 250
plot(freqs, abs(squeeze(freqresp(1/(mpi*s^2 + cpi*s + kpi), freqs, 'Hz'))), 'k-');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
set(gca, 'XTickLabel',[]);
xlabel('Frequency [Hz]');
ylabel('Magnitude [dB]');
ax2 = subplot(2,1,2);
hold on;
for i = 1:length(Gps)
plot(freqs, 180/pi*angle(squeeze(freqresp(Gps(:,:,i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
plot(freqs, 180/pi*angle(squeeze(freqresp(1/(mpi*s^2 + cpi*s + kpi), freqs, 'Hz'))), 'k-');
hold off;
set(gca,'xscale','log');
yticks(-360:90:180);
ylim([-270 90]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
#+end_src
@ -227,6 +213,7 @@ One can see that the payload has a resonance frequency of $\omega_0^\prime = 250
#+name: fig:nominal_payload_compliance_dynamics
#+caption: Nominal compliance of the payload ([[./figs/nominal_payload_compliance_dynamics.png][png]], [[./figs/nominal_payload_compliance_dynamics.pdf][pdf]])
[[file:figs/nominal_payload_compliance_dynamics.png]]
** Initialization of the isolation platform
Let's first fix the mass of the isolation platform:
#+begin_src matlab
@ -634,130 +621,6 @@ A set of uncertainty payload's impedance transfer functions is shown in Figure [
#+caption: Uncertainty of the payload's impedance ([[./figs/payload_impedance_uncertainty.png][png]], [[./figs/payload_impedance_uncertainty.pdf][pdf]])
[[file:figs/payload_impedance_uncertainty.png]]
** Effect of the Isolation platform Stiffness
Let's first fix the mass of the isolation platform:
#+begin_src matlab
m = 20;
#+end_src
And we generate three isolation platforms:
- A soft one with $\omega_0 = 5\ Hz$
- A medium stiff one with $\omega_0 = 50\ Hz$
- A stiff one with $\omega_0 = 500\ Hz$
Soft Isolation Platform:
#+begin_src matlab
k_soft = m*(2*pi*5)^2;
c_soft = 0.1*sqrt(m*k_soft);
G_soft = 1/(m*s^2 + c_soft*s + k_soft + Gp);
#+end_src
Mid Isolation Platform
#+begin_src matlab
k_mid = m*(2*pi*50)^2;
c_mid = 0.1*sqrt(m*k_mid);
G_mid = 1/(m*s^2 + c_mid*s + k_mid + Gp);
#+end_src
Stiff Isolation Platform
#+begin_src matlab
k_stiff = m*(2*pi*500)^2;
c_stiff = 0.1*sqrt(m*k_stiff);
G_stiff = 1/(m*s^2 + c_stiff*s + k_stiff + Gp);
#+end_src
The obtained transfer functions $x/F$ for each of the three platforms are shown in Figure [[fig:plant_uncertainty_impedance_payload]].
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
Gs_soft = usample(G_soft, 10);
Gs_mid = usample(G_mid, 10);
Gs_stiff = usample(G_stiff, 10);
figure;
ax1 = subplot(2,3,1);
hold on;
for i = 1:length(Gs_soft)
plot(freqs, abs(squeeze(freqresp(Gs_soft(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
set(gca, 'XTickLabel',[]);
ylabel('Magnitude [m/N]');
hold off;
title('$\omega_0 \ll \omega_0^\prime$');
ax4 = subplot(2,3,4);
hold on;
for i = 1:length(Gs_soft)
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_soft(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
set(gca,'xscale','log');
yticks(-360:90:180);
ylim([-180 180]);
ylabel('Phase [deg]');
hold off;
ax2 = subplot(2,3,2);
hold on;
for i = 1:length(Gs_mid)
plot(freqs, abs(squeeze(freqresp(Gs_mid(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
set(gca, 'XTickLabel',[]);
hold off;
title('$\omega_0 \approx \omega_0^\prime$');
ax5 = subplot(2,3,5);
hold on;
for i = 1:length(Gs_mid)
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_mid(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
set(gca,'xscale','log');
yticks(-360:90:180);
ylim([-180 180]);
xlabel('Frequency [Hz]');
hold off;
ax3 = subplot(2,3,3);
hold on;
for i = 1:length(Gs_stiff)
plot(freqs, abs(squeeze(freqresp(Gs_stiff(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
set(gca, 'XTickLabel',[]);
hold off;
title('$\omega_0 \gg \omega_0^\prime$');
ax6 = subplot(2,3,6);
hold on;
for i = 1:length(Gs_stiff)
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_stiff(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
set(gca,'xscale','log');
yticks(-360:90:180);
ylim([-180 180]);
hold off;
linkaxes([ax1,ax2,ax3,ax4,ax5,ax6],'x');
xlim([freqs(1), freqs(end)]);
linkaxes([ax1,ax2,ax3],'y');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/plant_uncertainty_impedance_payload.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:plant_uncertainty_impedance_payload
#+caption: Obtained plant for the three isolators ([[./figs/plant_uncertainty_impedance_payload.png][png]], [[./figs/plant_uncertainty_impedance_payload.pdf][pdf]])
[[file:figs/plant_uncertainty_impedance_payload.png]]
** Equivalent Inverse Multiplicative Uncertainty
Let's express the uncertainty of the plant $x/F$ as a function of the parameters as well as of the uncertainty on the platform's compliance:
\begin{align*}
@ -780,6 +643,160 @@ with:
#+RESULTS:
[[file:figs/inverse_uncertainty_set.png]]
** Effect of the Isolation platform Stiffness
Let's first fix the mass of the isolation platform:
#+begin_src matlab
m = 20;
#+end_src
And we generate three isolation platforms:
- A soft one with $\omega_0 = 5\ Hz$
- A medium stiff one with $\omega_0 = 50\ Hz$
- A stiff one with $\omega_0 = 500\ Hz$
Soft Isolation Platform:
#+begin_src matlab
k_soft = m*(2*pi*5)^2;
c_soft = 0.1*sqrt(m*k_soft);
G_soft = 1/(m*s^2 + c_soft*s + k_soft + Gp);
G0_soft = 1/(m*s^2 + c_soft*s + k_soft + Gp0);
wiI_soft = Gp0*G0_soft*wI;
#+end_src
Mid Isolation Platform
#+begin_src matlab
k_mid = m*(2*pi*50)^2;
c_mid = 0.1*sqrt(m*k_mid);
G_mid = 1/(m*s^2 + c_mid*s + k_mid + Gp);
G0_mid = 1/(m*s^2 + c_mid*s + k_mid + Gp0);
wiI_mid = Gp0*G0_mid*wI;
#+end_src
Stiff Isolation Platform
#+begin_src matlab
k_stiff = m*(2*pi*500)^2;
c_stiff = 0.1*sqrt(m*k_stiff);
G_stiff = 1/(m*s^2 + c_stiff*s + k_stiff + Gp);
G0_stiff = 1/(m*s^2 + c_stiff*s + k_stiff + Gp0);
wiI_stiff = Gp0*G0_stiff*wI;
#+end_src
The obtained transfer functions $x/F$ for each of the three platforms are shown in Figure [[fig:plant_uncertainty_impedance_payload]].
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
Gs_soft = usample(G_soft, 10);
Gs_mid = usample(G_mid, 10);
Gs_stiff = usample(G_stiff, 10);
figure;
ax1 = subplot(2,3,1);
hold on;
for i = 1:length(Gs_soft)
plot(freqs, abs(squeeze(freqresp(Gs_soft(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
plot(freqs, abs(squeeze(freqresp(G0_soft, freqs, 'Hz'))), 'r-');
plot(freqs, abs(squeeze(freqresp(G0_soft, freqs, 'Hz')))./(1 + abs(squeeze(freqresp(wiI_soft, freqs, 'Hz')))), 'r--');
plot(freqs, abs(squeeze(freqresp(G0_soft, freqs, 'Hz')))./max(0, (1 - abs(squeeze(freqresp(wiI_soft, freqs, 'Hz'))))), 'r--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
set(gca, 'XTickLabel',[]);
ylabel('Magnitude [m/N]');
hold off;
title('$\omega_0 \ll \omega_0^\prime$');
ax4 = subplot(2,3,4);
hold on;
for i = 1:length(Gs_soft)
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_soft(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_soft, freqs, 'Hz'))), 'r-');
Dphi = 180/pi*asin(abs(squeeze(freqresp(wiI_soft, freqs, 'Hz'))));
Dphi(find(abs(squeeze(freqresp(wiI_soft, freqs, 'Hz'))) > 1, 1):end) = 360;
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_soft, freqs, 'Hz')))+Dphi, 'r--');
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_soft, freqs, 'Hz')))-Dphi, 'r--');
set(gca,'xscale','log');
yticks(-360:90:180);
ylim([-180 180]);
ylabel('Phase [deg]');
hold off;
ax2 = subplot(2,3,2);
hold on;
for i = 1:length(Gs_mid)
plot(freqs, abs(squeeze(freqresp(Gs_mid(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
plot(freqs, abs(squeeze(freqresp(G0_mid, freqs, 'Hz'))), 'r-');
plot(freqs, abs(squeeze(freqresp(G0_mid, freqs, 'Hz')))./(1 + abs(squeeze(freqresp(wiI_mid, freqs, 'Hz')))), 'r--');
plot(freqs, abs(squeeze(freqresp(G0_mid, freqs, 'Hz')))./max(0, (1 - abs(squeeze(freqresp(wiI_mid, freqs, 'Hz'))))), 'r--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
set(gca, 'XTickLabel',[]);
hold off;
title('$\omega_0 \approx \omega_0^\prime$');
ax5 = subplot(2,3,5);
hold on;
for i = 1:length(Gs_mid)
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_mid(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_mid, freqs, 'Hz'))), 'r-');
Dphi = 180/pi*asin(abs(squeeze(freqresp(wiI_mid, freqs, 'Hz'))));
Dphi(find(abs(squeeze(freqresp(wiI_mid, freqs, 'Hz'))) > 1, 1):end) = 360;
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_mid, freqs, 'Hz')))+Dphi, 'r--');
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_mid, freqs, 'Hz')))-Dphi, 'r--');
set(gca,'xscale','log');
yticks(-360:90:180);
ylim([-180 180]);
xlabel('Frequency [Hz]');
hold off;
ax3 = subplot(2,3,3);
hold on;
for i = 1:length(Gs_stiff)
plot(freqs, abs(squeeze(freqresp(Gs_stiff(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
plot(freqs, abs(squeeze(freqresp(G0_stiff, freqs, 'Hz'))), 'r-');
plot(freqs, abs(squeeze(freqresp(G0_stiff, freqs, 'Hz')))./(1 + abs(squeeze(freqresp(wiI_stiff, freqs, 'Hz')))), 'r--');
plot(freqs, abs(squeeze(freqresp(G0_stiff, freqs, 'Hz')))./max(0, (1 - abs(squeeze(freqresp(wiI_stiff, freqs, 'Hz'))))), 'r--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
set(gca, 'XTickLabel',[]);
hold off;
title('$\omega_0 \gg \omega_0^\prime$');
ax6 = subplot(2,3,6);
hold on;
for i = 1:length(Gs_stiff)
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_stiff(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_stiff, freqs, 'Hz'))), 'r-');
Dphi = 180/pi*asin(abs(squeeze(freqresp(wiI_stiff, freqs, 'Hz'))));
Dphi(find(abs(squeeze(freqresp(wiI_stiff, freqs, 'Hz'))) > 1, 1):end) = 360;
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_stiff, freqs, 'Hz')))+Dphi, 'r--');
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_stiff, freqs, 'Hz')))-Dphi, 'r--');
set(gca,'xscale','log');
yticks(-360:90:180);
ylim([-180 180]);
hold off;
linkaxes([ax1,ax2,ax3,ax4,ax5,ax6],'x');
xlim([freqs(1), freqs(end)]);
linkaxes([ax1,ax2,ax3],'y');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/plant_uncertainty_impedance_payload.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:plant_uncertainty_impedance_payload
#+caption: Obtained plant for the three isolators ([[./figs/plant_uncertainty_impedance_payload.png][png]], [[./figs/plant_uncertainty_impedance_payload.pdf][pdf]])
[[file:figs/plant_uncertainty_impedance_payload.png]]
** Reduce the Uncertainty on the plant
*** Introduction :ignore:
Now that we know the expression of the uncertainty on the plant, we can wonder what parameters of the isolation platform would lower the plant uncertainty, or at least bring the uncertainty to reasonable level.

View File

@ -191,7 +191,6 @@ One can see that support has a resonance frequency of $\omega_0^\prime = 50\ Hz$
figure;
ax1 = subplot(2,1,1);
hold on;
for i = 1:length(Gps)
plot(freqs, abs(squeeze(freqresp(Gps(:,:,i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
@ -199,27 +198,13 @@ One can see that support has a resonance frequency of $\omega_0^\prime = 50\ Hz$
plot(freqs, abs(squeeze(freqresp(1/(mpi*s^2 + cpi*s + kpi), freqs, 'Hz'))), 'k-');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
set(gca, 'XTickLabel',[]);
xlabel('Frequency [Hz]');
ylabel('Magnitude [dB]');
ax2 = subplot(2,1,2);
hold on;
for i = 1:length(Gps)
plot(freqs, 180/pi*angle(squeeze(freqresp(Gps(:,:,i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
plot(freqs, 180/pi*angle(squeeze(freqresp(1/(mpi*s^2 + cpi*s + kpi), freqs, 'Hz'))), 'k-');
hold off;
set(gca,'xscale','log');
yticks(-360:90:180);
ylim([-270 90]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/nominal_support_compliance_dynamics.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
#+begin_src matlab :var filepath="figs/nominal_support_compliance_dynamics.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
@ -396,6 +381,7 @@ Now let's consider the system consisting of a mass-spring-system (the isolation
\draw[] ($(piezo.south)+(-1.2, 0)$) -- ++(2.4, 0);
\draw[dashed] (piezo.north east) -- ++(\dispw, 0) coordinate(dhigh);
\draw[->] ($(piezo.north east)+(0.5*\dispw, 0)$) -- ++(0, \disph) node[right]{$x^\prime$};
\draw[->] (piezo.north) node[branch]{} -- ++(0, -1) node[above right]{$-F^\prime$};
\draw[decorate, decoration={brace, amplitude=8pt}, xshift=\brach] %
($(piezo.south west) + (-10pt, 0)$) -- ($(piezo.north west) + (-10pt, 0)$) %
@ -452,7 +438,7 @@ Which is the same transfer function that was obtained in section [[sec:introduct
** Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
<<matlab-dir>>
<<matlab-dir>>
#+end_src
#+begin_src matlab :exports none :results silent :noweb yes
@ -518,7 +504,7 @@ where $r_0$ is the relative uncertainty at steady-state, $1/\tau$ is the frequen
The parameters are defined below.
#+begin_src matlab
r0 = 0.5;
tau = 1/(50*2*pi);
tau = 1/(100*2*pi);
rinf = 10;
wI = (tau*s + r0)/((tau/rinf)*s + 1);
@ -543,35 +529,21 @@ A set of uncertainty support's compliance transfer functions is shown in Figure
figure;
ax1 = subplot(2,1,1);
hold on;
plot(freqs, abs(squeeze(freqresp(Gp0, freqs, 'Hz'))), 'k--');
for i = 1:length(Gps)
plot(freqs, abs(squeeze(freqresp(Gps(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
plot(freqs, abs(squeeze(freqresp(Gp0, freqs, 'Hz'))), 'r-');
plot(freqs, abs(squeeze(freqresp(Gp0, freqs, 'Hz'))).*(1 + abs(squeeze(freqresp(wI, freqs, 'Hz')))), 'r--');
plot(freqs, abs(squeeze(freqresp(Gp0, freqs, 'Hz'))).*max(0, (1 - abs(squeeze(freqresp(wI, freqs, 'Hz'))))), 'r--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
set(gca, 'XTickLabel',[]);
xlabel('Frequency [Hz]');
ylabel('Magnitude [dB]');
hold off;
ax2 = subplot(2,1,2);
hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(Gp0, freqs, 'Hz'))), 'k--');
for i = 1:length(Gps)
plot(freqs, 180/pi*angle(squeeze(freqresp(Gps(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
set(gca,'xscale','log');
yticks(-360:90:180);
ylim([-180 180]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off;
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/compliance_support_uncertainty.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
#+begin_src matlab :var filepath="figs/compliance_support_uncertainty.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
@ -579,133 +551,6 @@ A set of uncertainty support's compliance transfer functions is shown in Figure
#+caption: Uncertainty of the support's compliance ([[./figs/compliance_support_uncertainty.png][png]], [[./figs/compliance_support_uncertainty.pdf][pdf]])
[[file:figs/compliance_support_uncertainty.png]]
** Effect of the Isolation platform Stiffness.
Let's first fix the mass of the payload to be isolated:
#+begin_src matlab
m = 100;
#+end_src
And we generate three isolation platforms:
- A soft one with $\omega_0 = 5\ Hz$
- A medium stiff one with $\omega_0 = 50\ Hz$
- A stiff one with $\omega_0 = 500\ Hz$
Soft Isolation Platform:
#+begin_src matlab
k_soft = m*(2*pi*5)^2;
c_soft = 0.1*sqrt(m*k_soft);
G_soft = 1/(m*s^2 + c_soft*s + k_soft + m*s^2*(c_soft*s + k_soft)*Gp);
#+end_src
Mid Isolation Platform
#+begin_src matlab
k_mid = m*(2*pi*50)^2;
c_mid = 0.1*sqrt(m*k_mid);
G_mid = 1/(m*s^2 + c_mid*s + k_mid + m*s^2*(c_mid*s + k_mid)*Gp);
#+end_src
Stiff Isolation Platform
#+begin_src matlab
k_stiff = m*(2*pi*500)^2;
c_stiff = 0.1*sqrt(m*k_stiff);
G_stiff = 1/(m*s^2 + c_stiff*s + k_stiff + m*s^2*(c_stiff*s + k_stiff)*Gp);
#+end_src
The obtained transfer functions $x/F$ for each of the three platforms are shown in Figure [[fig:plant_uncertainty_stiffness_isolator]].
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
Gs_soft = usample(G_soft, 10);
Gs_mid = usample(G_mid, 10);
Gs_stiff = usample(G_stiff, 10);
figure;
ax1 = subplot(2,3,1);
hold on;
for i = 1:length(Gs_soft)
plot(freqs, abs(squeeze(freqresp(Gs_soft(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
set(gca, 'XTickLabel',[]);
ylabel('Magnitude [dB]');
hold off;
title('$\omega_0 \ll \omega_0^\prime$');
ax4 = subplot(2,3,4);
hold on;
for i = 1:length(Gs_soft)
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_soft(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
set(gca,'xscale','log');
yticks(-360:90:180);
ylim([-180 180]);
ylabel('Phase [deg]');
hold off;
ax2 = subplot(2,3,2);
hold on;
for i = 1:length(Gs_mid)
plot(freqs, abs(squeeze(freqresp(Gs_mid(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
set(gca, 'XTickLabel',[]);
hold off;
title('$\omega_0 \approx \omega_0^\prime$');
ax5 = subplot(2,3,5);
hold on;
for i = 1:length(Gs_mid)
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_mid(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
set(gca,'xscale','log');
yticks(-360:90:180);
ylim([-180 180]);
xlabel('Frequency [Hz]');
hold off;
ax3 = subplot(2,3,3);
hold on;
for i = 1:length(Gs_stiff)
plot(freqs, abs(squeeze(freqresp(Gs_stiff(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
set(gca, 'XTickLabel',[]);
hold off;
title('$\omega_0 \gg \omega_0^\prime$');
ax6 = subplot(2,3,6);
hold on;
for i = 1:length(Gs_stiff)
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_stiff(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
set(gca,'xscale','log');
yticks(-360:90:180);
ylim([-180 180]);
hold off;
linkaxes([ax1,ax2,ax3,ax4,ax5,ax6],'x');
xlim([freqs(1), freqs(end)]);
linkaxes([ax1,ax2,ax3],'y');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/plant_uncertainty_stiffness_isolator.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:plant_uncertainty_stiffness_isolator
#+caption: Obtained plant for the three isolators ([[./figs/plant_uncertainty_stiffness_isolator.png][png]], [[./figs/plant_uncertainty_stiffness_isolator.pdf][pdf]])
[[file:figs/plant_uncertainty_stiffness_isolator.png]]
The obtain result is very similar to the one obtain in section [[sec:introductory_example]], except for the stiff isolation that experience lot's of uncertainty at high frequency.
This is due to the fact that with the current model, at high frequency, the support's compliance uncertainty is much higher than the previous model.
** Equivalent Inverse Multiplicative Uncertainty
Let's express the uncertainty of the plant $x/F$ as a function of the parameters as well as of the uncertainty on the platform's compliance:
\begin{align*}
@ -758,6 +603,163 @@ with:
#+RESULTS:
[[file:figs/inverse_uncertainty_set.png]]
** Effect of the Isolation platform Stiffness
Let's first fix the mass of the payload to be isolated:
#+begin_src matlab
m = 100;
#+end_src
And we generate three isolation platforms:
- A soft one with $\omega_0 = 5\ Hz$
- A medium stiff one with $\omega_0 = 50\ Hz$
- A stiff one with $\omega_0 = 500\ Hz$
Soft Isolation Platform:
#+begin_src matlab
k_soft = m*(2*pi*5)^2;
c_soft = 0.1*sqrt(m*k_soft);
G_soft = 1/(m*s^2 + c_soft*s + k_soft + m*s^2*(c_soft*s + k_soft)*Gp);
G0_soft = 1/(m*s^2 + c_soft*s + k_soft + m*s^2*(c_soft*s + k_soft)*Gp0);
wiI_soft = Gp0*m*s^2*(c_soft*s + k_soft)*G0_soft*wI;
#+end_src
Mid Isolation Platform
#+begin_src matlab
k_mid = m*(2*pi*50)^2;
c_mid = 0.1*sqrt(m*k_mid);
G_mid = 1/(m*s^2 + c_mid*s + k_mid + m*s^2*(c_mid*s + k_mid)*Gp);
G0_mid = 1/(m*s^2 + c_mid*s + k_mid + m*s^2*(c_mid*s + k_mid)*Gp0);
wiI_mid = Gp0*m*s^2*(c_mid*s + k_mid)*G0_mid*wI;
#+end_src
Stiff Isolation Platform
#+begin_src matlab
k_stiff = m*(2*pi*500)^2;
c_stiff = 0.1*sqrt(m*k_stiff);
G_stiff = 1/(m*s^2 + c_stiff*s + k_stiff + m*s^2*(c_stiff*s + k_stiff)*Gp);
G0_stiff = 1/(m*s^2 + c_stiff*s + k_stiff + m*s^2*(c_stiff*s + k_stiff)*Gp0);
wiI_stiff = Gp0*m*s^2*(c_stiff*s + k_stiff)*G0_stiff*wI;
#+end_src
The obtained transfer functions $x/F$ for each of the three platforms are shown in Figure [[fig:plant_uncertainty_stiffness_isolator]].
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
Gs_soft = usample(G_soft, 10);
Gs_mid = usample(G_mid, 10);
Gs_stiff = usample(G_stiff, 10);
figure;
ax1 = subplot(2,3,1);
hold on;
for i = 1:length(Gs_soft)
plot(freqs, abs(squeeze(freqresp(Gs_soft(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
plot(freqs, abs(squeeze(freqresp(G0_soft, freqs, 'Hz'))), 'r-');
plot(freqs, abs(squeeze(freqresp(G0_soft, freqs, 'Hz')))./(1 + abs(squeeze(freqresp(wiI_soft, freqs, 'Hz')))), 'r--');
plot(freqs, abs(squeeze(freqresp(G0_soft, freqs, 'Hz')))./max(0, (1 - abs(squeeze(freqresp(wiI_soft, freqs, 'Hz'))))), 'r--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
set(gca, 'XTickLabel',[]);
ylabel('Magnitude [dB]');
hold off;
title('$\omega_0 \ll \omega_0^\prime$');
ax4 = subplot(2,3,4);
hold on;
for i = 1:length(Gs_soft)
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_soft(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_soft, freqs, 'Hz'))), 'r-');
Dphi = 180/pi*asin(abs(squeeze(freqresp(wiI_soft, freqs, 'Hz'))));
Dphi(find(abs(squeeze(freqresp(wiI_soft, freqs, 'Hz'))) > 1, 1):end) = 360;
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_soft, freqs, 'Hz')))+Dphi, 'r--');
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_soft, freqs, 'Hz')))-Dphi, 'r--');
set(gca,'xscale','log');
yticks(-360:90:180);
ylim([-180 180]);
ylabel('Phase [deg]');
hold off;
ax2 = subplot(2,3,2);
hold on;
for i = 1:length(Gs_mid)
plot(freqs, abs(squeeze(freqresp(Gs_mid(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
plot(freqs, abs(squeeze(freqresp(G0_mid, freqs, 'Hz'))), 'r-');
plot(freqs, abs(squeeze(freqresp(G0_mid, freqs, 'Hz')))./(1 + abs(squeeze(freqresp(wiI_mid, freqs, 'Hz')))), 'r--');
plot(freqs, abs(squeeze(freqresp(G0_mid, freqs, 'Hz')))./max(0, (1 - abs(squeeze(freqresp(wiI_mid, freqs, 'Hz'))))), 'r--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
set(gca, 'XTickLabel',[]);
hold off;
title('$\omega_0 \approx \omega_0^\prime$');
ax5 = subplot(2,3,5);
hold on;
for i = 1:length(Gs_mid)
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_mid(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_mid, freqs, 'Hz'))), 'r-');
Dphi = 180/pi*asin(abs(squeeze(freqresp(wiI_mid, freqs, 'Hz'))));
Dphi(find(abs(squeeze(freqresp(wiI_mid, freqs, 'Hz'))) > 1, 1):end) = 360;
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_mid, freqs, 'Hz')))+Dphi, 'r--');
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_mid, freqs, 'Hz')))-Dphi, 'r--');
set(gca,'xscale','log');
yticks(-360:90:180);
ylim([-180 180]);
xlabel('Frequency [Hz]');
hold off;
ax3 = subplot(2,3,3);
hold on;
for i = 1:length(Gs_stiff)
plot(freqs, abs(squeeze(freqresp(Gs_stiff(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
plot(freqs, abs(squeeze(freqresp(G0_stiff, freqs, 'Hz'))), 'r-');
plot(freqs, abs(squeeze(freqresp(G0_stiff, freqs, 'Hz')))./(1 + abs(squeeze(freqresp(wiI_stiff, freqs, 'Hz')))), 'r--');
plot(freqs, abs(squeeze(freqresp(G0_stiff, freqs, 'Hz')))./max(0, (1 - abs(squeeze(freqresp(wiI_stiff, freqs, 'Hz'))))), 'r--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
set(gca, 'XTickLabel',[]);
hold off;
title('$\omega_0 \gg \omega_0^\prime$');
ax6 = subplot(2,3,6);
hold on;
for i = 1:length(Gs_stiff)
plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_stiff(:, :, i), freqs, 'Hz'))), '-', 'color', [0, 0, 0, 0.2]);
end
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_stiff, freqs, 'Hz'))), 'r-');
Dphi = 180/pi*asin(abs(squeeze(freqresp(wiI_stiff, freqs, 'Hz'))));
Dphi(find(abs(squeeze(freqresp(wiI_stiff, freqs, 'Hz'))) > 1, 1):end) = 360;
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_stiff, freqs, 'Hz')))+Dphi, 'r--');
plot(freqs, 180/pi*angle(squeeze(freqresp(G0_stiff, freqs, 'Hz')))-Dphi, 'r--');
set(gca,'xscale','log');
yticks(-360:90:180);
ylim([-180 180]);
hold off;
linkaxes([ax1,ax2,ax3,ax4,ax5,ax6],'x');
xlim([freqs(1), freqs(end)]);
linkaxes([ax1,ax2,ax3],'y');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/plant_uncertainty_stiffness_isolator.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:plant_uncertainty_stiffness_isolator
#+caption: Obtained plant for the three isolators ([[./figs/plant_uncertainty_stiffness_isolator.png][png]], [[./figs/plant_uncertainty_stiffness_isolator.pdf][pdf]])
[[file:figs/plant_uncertainty_stiffness_isolator.png]]
The obtain result is very similar to the one obtain in section [[sec:introductory_example]], except for the stiff isolation that experience lot's of uncertainty at high frequency.
This is due to the fact that with the current model, at high frequency, the support's compliance uncertainty is much higher than the previous model.
** Reduce the Uncertainty on the plant
*** Introduction :ignore:
Now that we know the expression of the uncertainty on the plant, we can wonder what parameters of the isolation platform would lower the plant uncertainty, or at least bring the uncertainty to reasonable level.