Update uncertainty analysis
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 123 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 135 KiB After Width: | Height: | Size: 144 KiB |
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 130 KiB |
@ -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.
|
||||
|
@ -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.
|
||||
|