Finish analysis of required bw as a function of K
This commit is contained in:
@@ -794,7 +794,7 @@ The result is shown in:
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
load('./mat/dist_psd.mat', 'dist_f');
|
||||
load('./mat/opt_stiffness_disturbances.mat', 'Gd')
|
||||
load('./mat/opt_stiffness_disturbances.mat', 'Ks', 'Gd')
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
@@ -849,6 +849,7 @@ The result is shown in:
|
||||
|
||||
We compute the effect of all perturbations on the vertical position error using Eq. eqref:eq:sum_psd and the resulting PSD is shown in Figure [[fig:opt_stiff_psd_dz_tot]].
|
||||
#+begin_src matlab :exports none
|
||||
freqs = dist_f.f;
|
||||
psd_tot = zeros(length(freqs), length(Ks));
|
||||
|
||||
for i = 1:length(Ks)
|
||||
@@ -969,6 +970,11 @@ The black dashed line corresponds to the performance objective of a sample vibra
|
||||
#+caption: Cumulative Amplitude Spectrum of the Sample vertical position error due to all considered perturbations for multiple nano-hexapod stiffnesses ([[./figs/opt_stiff_cas_dz_tot.png][png]], [[./figs/opt_stiff_cas_dz_tot.pdf][pdf]])
|
||||
[[file:figs/opt_stiff_cas_dz_tot.png]]
|
||||
|
||||
** Save :noexport:
|
||||
#+begin_src matlab :exports none
|
||||
save('./mat/opt_stiff_ol_psd_tot.mat', 'psd_tot');
|
||||
#+end_src
|
||||
|
||||
** Conclusion
|
||||
#+begin_important
|
||||
From Figure [[fig:opt_stiff_cas_dz_tot]], we can see that a soft nano-hexapod $k<10^6\ [N/m]$ significantly reduces the effect of perturbations from 20Hz to 300Hz.
|
||||
@@ -977,6 +983,8 @@ The black dashed line corresponds to the performance objective of a sample vibra
|
||||
* Closed Loop Budget Error
|
||||
<<sec:closed_loop_budget_error>>
|
||||
** Introduction :ignore:
|
||||
From the total open-loop power spectral density of the sample's motion error, we can estimate what is the required control bandwidth for the sample's motion error to be reduced down to $10nm$.
|
||||
|
||||
** 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>>
|
||||
@@ -1021,9 +1029,10 @@ The reduction of the impact of $d$ on $y$ thanks to feedback is described by the
|
||||
\begin{equation}
|
||||
\frac{y}{d} = \frac{G_d}{1 + KG}
|
||||
\end{equation}
|
||||
The transfer functions corresponding to $G_d$ are those identified in Section [[sec:effect_disturbances]].
|
||||
|
||||
|
||||
As a first approximation, we can consider that the controller is designed in such a way that the loop gain $KG$ is a pure integrator:
|
||||
As a first approximation, we can consider that the controller $K$ is designed in such a way that the loop gain $KG$ is a pure integrator:
|
||||
\[ L_1(s) = K_1(s) G(s) = \frac{\omega_c}{s} \]
|
||||
where $\omega_c$ is the crossover frequency.
|
||||
|
||||
@@ -1031,17 +1040,29 @@ where $\omega_c$ is the crossover frequency.
|
||||
We may then consider another controller in such a way that the loop gain corresponds to a double integrator with a lead centered with the crossover frequency $\omega_c$:
|
||||
\[ L_2(s) = K_2(s) G(s) = \left( \frac{\omega_c}{s} \right)^2 \cdot \frac{1 + \frac{s}{\omega_c/2}}{1 + \frac{s}{2\omega_c}} \]
|
||||
|
||||
|
||||
In the next section, we see how the power spectral density of $y$ is reduced as a function of the control bandwidth $\omega_c$.
|
||||
This will help to determine what is the approximate control bandwidth required such that the rms value of $y$ is below $10nm$.
|
||||
|
||||
** Reduction thanks to feedback - Required bandwidth
|
||||
#+begin_src matlab
|
||||
wc = 1*2*pi; % [rad/s]
|
||||
xic = 0.5;
|
||||
|
||||
S = (s/wc)/(1 + s/wc);
|
||||
|
||||
bodeFig({S}, logspace(-1,2,1000))
|
||||
#+begin_src matlab :exports none
|
||||
load('./mat/dist_psd.mat', 'dist_f');
|
||||
load('./mat/opt_stiffness_disturbances.mat', 'Ks', 'Gd')
|
||||
load('./mat/opt_stiff_ol_psd_tot.mat', 'psd_tot');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
Let's first see how does the Cumulative Amplitude Spectrum of the sample's motion error is modified by the control.
|
||||
|
||||
In Figure [[fig:opt_stiff_cas_closed_loop]] is shown the Cumulative Amplitude Spectrum of the sample's motion error in Open-Loop and in Closed Loop for several control bandwidth (from 1Hz to 200Hz) and 4 different nano-hexapod stiffnesses.
|
||||
The controller used in this simulation is $K_1$. The loop gain is then a pure integrator.
|
||||
|
||||
In Figure [[fig:opt_stiff_req_bandwidth_K1_K2]] is shown the expected RMS value of the sample's position error as a function of the control bandwidth, both for $K_1$ (left plot) and $K_2$ (right plot).
|
||||
As expected, it is shown that $K_2$ performs better than $K_1$.
|
||||
This Figure tells us how much control bandwidth is required to attain a certain level of performance, and that for all the considered nano-hexapod stiffnesses.
|
||||
|
||||
The obtained required bandwidth (approximate upper and lower bounds) to obtained a sample's motion error less than 10nm rms are gathered in Table [[tab:approx_required_wc_10nm]].
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
wc = [1, 5, 10, 20, 50, 100, 200];
|
||||
|
||||
S1 = {zeros(length(wc), 1)};
|
||||
@@ -1055,12 +1076,55 @@ We may then consider another controller in such a way that the loop gain corresp
|
||||
end
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
#+begin_src matlab :exports none
|
||||
freqs = dist_f.f;
|
||||
|
||||
figure;
|
||||
|
||||
ax1 = subplot(2,2,1);
|
||||
hold on;
|
||||
i = 6;
|
||||
i = 1;
|
||||
for j = 1:length(wc)
|
||||
set(gca,'ColorOrderIndex',j);
|
||||
plot(freqs, sqrt(flip(-cumtrapz(flip(freqs), flip(abs(squeeze(freqresp(S1{j}, freqs, 'Hz'))).^2.*psd_tot(:,i))))), '-');
|
||||
end
|
||||
plot(freqs, sqrt(flip(-cumtrapz(flip(freqs), flip(psd_tot(:,i))))), 'k-');
|
||||
plot([freqs(1) freqs(end)], [10e-9 10e-9], 'k--');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
ylabel('CAS $E_y$ $[m]$')
|
||||
title(sprintf('$k = %.0g$ [N/m]', Ks(i)))
|
||||
|
||||
ax2 = subplot(2,2,2);
|
||||
hold on;
|
||||
i = 3;
|
||||
for j = 1:length(wc)
|
||||
set(gca,'ColorOrderIndex',j);
|
||||
plot(freqs, sqrt(flip(-cumtrapz(flip(freqs), flip(abs(squeeze(freqresp(S1{j}, freqs, 'Hz'))).^2.*psd_tot(:,i))))), '-');
|
||||
end
|
||||
plot(freqs, sqrt(flip(-cumtrapz(flip(freqs), flip(psd_tot(:,i))))), 'k-');
|
||||
plot([freqs(1) freqs(end)], [10e-9 10e-9], 'k--');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
title(sprintf('$k = %.0g$ [N/m]', Ks(i)))
|
||||
|
||||
ax3 = subplot(2,2,3);
|
||||
hold on;
|
||||
i = 5;
|
||||
for j = 1:length(wc)
|
||||
set(gca,'ColorOrderIndex',j);
|
||||
plot(freqs, sqrt(flip(-cumtrapz(flip(freqs), flip(abs(squeeze(freqresp(S1{j}, freqs, 'Hz'))).^2.*psd_tot(:,i))))), '-');
|
||||
end
|
||||
plot(freqs, sqrt(flip(-cumtrapz(flip(freqs), flip(psd_tot(:,i))))), 'k-');
|
||||
plot([freqs(1) freqs(end)], [10e-9 10e-9], 'k--');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('CAS $E_y$ $[m]$')
|
||||
title(sprintf('$k = %.0g$ [N/m]', Ks(i)))
|
||||
|
||||
ax4 = subplot(2,2,4);
|
||||
hold on;
|
||||
i = 7;
|
||||
for j = 1:length(wc)
|
||||
set(gca,'ColorOrderIndex',j);
|
||||
plot(freqs, sqrt(flip(-cumtrapz(flip(freqs), flip(abs(squeeze(freqresp(S1{j}, freqs, 'Hz'))).^2.*psd_tot(:,i))))), '-', ...
|
||||
@@ -1071,12 +1135,25 @@ We may then consider another controller in such a way that the loop gain corresp
|
||||
plot([freqs(1) freqs(end)], [10e-9 10e-9], 'k--', 'HandleVisibility', 'off');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('CAS $E_y$ $[m]$')
|
||||
legend('Location', 'northeast');
|
||||
xlabel('Frequency [Hz]');
|
||||
legend('Location', 'southwest');
|
||||
title(sprintf('$k = %.0g$ [N/m]', Ks(i)))
|
||||
|
||||
linkaxes([ax1,ax2,ax3,ax4], 'xy');
|
||||
xlim([0.5, 500]); ylim([1e-10 1e-6]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
#+header: :tangle no :exports results :results none :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/opt_stiff_cas_closed_loop.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+name: fig:opt_stiff_cas_closed_loop
|
||||
#+caption: Cumulative Amplitude Spectrum of the sample's motion error in Open-Loop and in Closed Loop for several control bandwidth and 4 different nano-hexapod stiffnesses ([[./figs/opt_stiff_cas_closed_loop.png][png]], [[./figs/opt_stiff_cas_closed_loop.pdf][pdf]])
|
||||
[[file:figs/opt_stiff_cas_closed_loop.png]]
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
freqs = dist_f.f;
|
||||
wc = logspace(0, 3, 100);
|
||||
|
||||
Dz1_rms = zeros(length(Ks), length(wc));
|
||||
@@ -1092,24 +1169,75 @@ We may then consider another controller in such a way that the loop gain corresp
|
||||
end
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
#+begin_src matlab :exports none
|
||||
freqs = dist_f.f;
|
||||
|
||||
figure;
|
||||
ax1 = subplot(1,2,1);
|
||||
hold on;
|
||||
for i = 1:length(Ks)
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(wc, Dz1_rms(i, :), '-', ...
|
||||
'DisplayName', sprintf('$k = %.0g$ [N/m]', Ks(i)))
|
||||
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(wc, Dz2_rms(i, :), '--', ...
|
||||
'HandleVisibility', 'off')
|
||||
plot(wc, Dz1_rms(i, :), '-')
|
||||
end
|
||||
plot([freqs(1) freqs(end)], [10e-9 10e-9], 'k--');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
xlabel('Control Bandwidth [Hz]'); ylabel('$E_z\ [m, rms]$')
|
||||
xlabel('Control Bandwidth [Hz]'); ylabel('$E_z\ [m, rms]$ using $K_1(s)$')
|
||||
xlim([1, 500]);
|
||||
|
||||
ax2 = subplot(1,2,2);
|
||||
hold on;
|
||||
for i = 1:length(Ks)
|
||||
plot(wc, Dz2_rms(i, :), '-', ...
|
||||
'DisplayName', sprintf('$k = %.0g$ [N/m]', Ks(i)))
|
||||
end
|
||||
plot([freqs(1) freqs(end)], [10e-9 10e-9], 'k--', 'HandleVisibility', 'off');
|
||||
hold off;
|
||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||
xlabel('Control Bandwidth [Hz]'); ylabel('$E_z\ [m, rms]$ using $K_2(s)$')
|
||||
legend('Location', 'southwest');
|
||||
|
||||
linkaxes([ax1, ax2], 'xy');
|
||||
xlim([1, 500]);
|
||||
#+end_src
|
||||
|
||||
#+header: :tangle no :exports results :results none :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/opt_stiff_req_bandwidth_K1_K2.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+name: fig:opt_stiff_req_bandwidth_K1_K2
|
||||
#+caption: Expected RMS value of the sample's motion error $E_z$ as a function of the control bandwidth when using $K_1$ and $K_2$ ([[./figs/opt_stiff_req_bandwidth_K1_K2.png][png]], [[./figs/opt_stiff_req_bandwidth_K1_K2.pdf][pdf]])
|
||||
[[file:figs/opt_stiff_req_bandwidth_K1_K2.png]]
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
wb1 = zeros(length(Ks), 1);
|
||||
wb2 = zeros(length(Ks), 1);
|
||||
|
||||
for i = 1:length(Ks)
|
||||
[~, i_min] = min(abs(Dz1_rms(i, :) - 10e-9));
|
||||
wb1(i) = wc(i_min);
|
||||
|
||||
[~, i_min] = min(abs(Dz2_rms(i, :) - 10e-9));
|
||||
wb2(i) = wc(i_min);
|
||||
end
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
|
||||
data2orgtable([wb1'; wb2'], {'Required wc with L1 [Hz]', 'Required wc with L2 [Hz]'}, {'Nano-Hexapod stiffness [N/m]', '10^3', '10^4', '10^5', '10^6', '10^7', '10^8', '10^9'}, ' %.0f ');
|
||||
#+end_src
|
||||
|
||||
#+name: tab:approx_required_wc_10nm
|
||||
#+caption: Approximate required control bandwidth such that the motion error is below $10nm$
|
||||
#+RESULTS:
|
||||
| Nano-Hexapod stiffness [N/m] | 10^3 | 10^4 | 10^5 | 10^6 | 10^7 | 10^8 | 10^9 |
|
||||
|------------------------------+------+------+------+------+------+------+------|
|
||||
| Required wc with L1 [Hz] | 152 | 305 | 1000 | 870 | 933 | 870 | 870 |
|
||||
| Required wc with L2 [Hz] | 57 | 66 | 152 | 152 | 248 | 266 | 248 |
|
||||
|
||||
* Conclusion
|
||||
#+begin_important
|
||||
From Figure [[fig:opt_stiff_req_bandwidth_K1_K2]] and Table [[tab:approx_required_wc_10nm]], we can clearly see three different results depending on the nano-hexapod stiffness:
|
||||
- For a soft nano-hexapod ($k < 10^4\ [N/m]$), the required bandwidth is $\omega_c \approx 50-100\ Hz$
|
||||
- For a nano-hexapods with $10^5 < k < 10^6\ [N/m]$), the required bandwidth is $\omega_c \approx 150-300\ Hz$
|
||||
- For a stiff nano-hexapods ($k > 10^7\ [N/m]$), the required bandwidth is $\omega_c \approx 250-500\ Hz$
|
||||
#+end_important
|
||||
|
@@ -177,136 +177,136 @@ We plot the change of dynamics due to the change of the spindle rotation speed (
|
||||
- Figure [[fig:opt_stiffness_wz_coupling]]: from force in the task space $\mathcal{F}_x$ to sample displacement $\mathcal{X}_y$ (coupling of the centralized positioning plant)
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
figure;
|
||||
figure;
|
||||
|
||||
subplot(2,2,1)
|
||||
gains = logspace(0, 4, 500);
|
||||
i = 1;
|
||||
title(sprintf('$k = %.0g$ [N/m]', Ks(i)))
|
||||
hold on;
|
||||
j = length(Rz_rpm);
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
plot(real(pole(Gk_wz_iff{i,j})), imag(pole(Gk_wz_iff{i,j})), 'x');
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
plot(real(tzero(Gk_wz_iff{i,j})), imag(tzero(Gk_wz_iff{i,j})), 'o');
|
||||
for k = 1:length(gains)
|
||||
subplot(2,2,1)
|
||||
gains = logspace(0, 4, 500);
|
||||
i = 1;
|
||||
title(sprintf('$k = %.0g$ [N/m]', Ks(i)))
|
||||
hold on;
|
||||
j = length(Rz_rpm);
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
cl_poles = pole(feedback(Gk_wz_iff{i,j}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.');
|
||||
end
|
||||
j = 1
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
plot(real(pole(Gk_wz_iff{i,j})), imag(pole(Gk_wz_iff{i,j})), 'x');
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
plot(real(tzero(Gk_wz_iff{i,j})), imag(tzero(Gk_wz_iff{i,j})), 'o');
|
||||
for k = 1:length(gains)
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
cl_poles = pole(feedback(Gk_wz_iff{i,j}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.');
|
||||
end
|
||||
hold off;
|
||||
axis square
|
||||
ylim([0, 20]);
|
||||
xlim([-18, 2]);
|
||||
xlabel('Real Part')
|
||||
ylabel('Imaginary Part')
|
||||
|
||||
|
||||
subplot(2,2,2)
|
||||
gains = logspace(0, 4, 500);
|
||||
i = 3;
|
||||
title(sprintf('$k = %.0g$ [N/m]', Ks(i)))
|
||||
hold on;
|
||||
j = length(Rz_rpm);
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
plot(real(pole(Gk_wz_iff{i,j})), imag(pole(Gk_wz_iff{i,j})), 'x');
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
plot(real(tzero(Gk_wz_iff{i,j})), imag(tzero(Gk_wz_iff{i,j})), 'o');
|
||||
for k = 1:length(gains)
|
||||
plot(real(pole(Gk_wz_iff{i,j})), imag(pole(Gk_wz_iff{i,j})), 'x');
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
cl_poles = pole(feedback(Gk_wz_iff{i,j}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.');
|
||||
end
|
||||
j = 1
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
plot(real(pole(Gk_wz_iff{i,j})), imag(pole(Gk_wz_iff{i,j})), 'x');
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
plot(real(tzero(Gk_wz_iff{i,j})), imag(tzero(Gk_wz_iff{i,j})), 'o');
|
||||
for k = 1:length(gains)
|
||||
plot(real(tzero(Gk_wz_iff{i,j})), imag(tzero(Gk_wz_iff{i,j})), 'o');
|
||||
for k = 1:length(gains)
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
cl_poles = pole(feedback(Gk_wz_iff{i,j}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.');
|
||||
end
|
||||
j = 1
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
cl_poles = pole(feedback(Gk_wz_iff{i,j}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.');
|
||||
end
|
||||
axis square
|
||||
ylim([0, 120]);
|
||||
xlim([-120, 5]);
|
||||
xlabel('Real Part')
|
||||
ylabel('Imaginary Part')
|
||||
plot(real(pole(Gk_wz_iff{i,j})), imag(pole(Gk_wz_iff{i,j})), 'x');
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
plot(real(tzero(Gk_wz_iff{i,j})), imag(tzero(Gk_wz_iff{i,j})), 'o');
|
||||
for k = 1:length(gains)
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
cl_poles = pole(feedback(Gk_wz_iff{i,j}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.');
|
||||
end
|
||||
hold off;
|
||||
axis square
|
||||
ylim([0, 20]);
|
||||
xlim([-18, 2]);
|
||||
xlabel('Real Part')
|
||||
ylabel('Imaginary Part')
|
||||
|
||||
|
||||
subplot(2,2,3)
|
||||
gains = logspace(0, 4, 500);
|
||||
i = 5;
|
||||
title(sprintf('$k = %.0g$ [N/m]', Ks(i)))
|
||||
hold on;
|
||||
j = length(Rz_rpm);
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
plot(real(pole(Gk_wz_iff{i,j})), imag(pole(Gk_wz_iff{i,j})), 'x');
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
plot(real(tzero(Gk_wz_iff{i,j})), imag(tzero(Gk_wz_iff{i,j})), 'o');
|
||||
for k = 1:length(gains)
|
||||
subplot(2,2,2)
|
||||
gains = logspace(0, 4, 500);
|
||||
i = 3;
|
||||
title(sprintf('$k = %.0g$ [N/m]', Ks(i)))
|
||||
hold on;
|
||||
j = length(Rz_rpm);
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
cl_poles = pole(feedback(Gk_wz_iff{i,j}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.');
|
||||
end
|
||||
j = 1
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
plot(real(pole(Gk_wz_iff{i,j})), imag(pole(Gk_wz_iff{i,j})), 'x');
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
plot(real(tzero(Gk_wz_iff{i,j})), imag(tzero(Gk_wz_iff{i,j})), 'o');
|
||||
for k = 1:length(gains)
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
cl_poles = pole(feedback(Gk_wz_iff{i,j}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.');
|
||||
end
|
||||
hold off;
|
||||
axis square
|
||||
ylim([0, 2000]);
|
||||
xlim([-1800,200]);
|
||||
xlabel('Real Part')
|
||||
ylabel('Imaginary Part')
|
||||
|
||||
subplot(2,2,4)
|
||||
gains = logspace(3, 7, 500);
|
||||
i = 7;
|
||||
title(sprintf('$k = %.0g$ [N/m]', Ks(i)))
|
||||
hold on;
|
||||
j = length(Rz_rpm);
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
plot(real(pole(Gk_wz_iff{i,j})), imag(pole(Gk_wz_iff{i,j})), 'x');
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
plot(real(tzero(Gk_wz_iff{i,j})), imag(tzero(Gk_wz_iff{i,j})), 'o');
|
||||
for k = 1:length(gains)
|
||||
plot(real(pole(Gk_wz_iff{i,j})), imag(pole(Gk_wz_iff{i,j})), 'x');
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
cl_poles = pole(feedback(Gk_wz_iff{i,j}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.');
|
||||
end
|
||||
j = 1
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
plot(real(pole(Gk_wz_iff{i,j})), imag(pole(Gk_wz_iff{i,j})), 'x');
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
plot(real(tzero(Gk_wz_iff{i,j})), imag(tzero(Gk_wz_iff{i,j})), 'o');
|
||||
for k = 1:length(gains)
|
||||
plot(real(tzero(Gk_wz_iff{i,j})), imag(tzero(Gk_wz_iff{i,j})), 'o');
|
||||
for k = 1:length(gains)
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
cl_poles = pole(feedback(Gk_wz_iff{i,j}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.');
|
||||
end
|
||||
j = 1
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
cl_poles = pole(feedback(Gk_wz_iff{i,j}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.');
|
||||
end
|
||||
hold off;
|
||||
axis square
|
||||
ylim([0, 18000]);
|
||||
xlim([-18000, 100]);
|
||||
xlabel('Real Part')
|
||||
ylabel('Imaginary Part')
|
||||
plot(real(pole(Gk_wz_iff{i,j})), imag(pole(Gk_wz_iff{i,j})), 'x');
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
plot(real(tzero(Gk_wz_iff{i,j})), imag(tzero(Gk_wz_iff{i,j})), 'o');
|
||||
for k = 1:length(gains)
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
cl_poles = pole(feedback(Gk_wz_iff{i,j}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.');
|
||||
end
|
||||
axis square
|
||||
ylim([0, 120]);
|
||||
xlim([-120, 5]);
|
||||
xlabel('Real Part')
|
||||
ylabel('Imaginary Part')
|
||||
|
||||
|
||||
subplot(2,2,3)
|
||||
gains = logspace(0, 4, 500);
|
||||
i = 5;
|
||||
title(sprintf('$k = %.0g$ [N/m]', Ks(i)))
|
||||
hold on;
|
||||
j = length(Rz_rpm);
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
plot(real(pole(Gk_wz_iff{i,j})), imag(pole(Gk_wz_iff{i,j})), 'x');
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
plot(real(tzero(Gk_wz_iff{i,j})), imag(tzero(Gk_wz_iff{i,j})), 'o');
|
||||
for k = 1:length(gains)
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
cl_poles = pole(feedback(Gk_wz_iff{i,j}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.');
|
||||
end
|
||||
j = 1
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
plot(real(pole(Gk_wz_iff{i,j})), imag(pole(Gk_wz_iff{i,j})), 'x');
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
plot(real(tzero(Gk_wz_iff{i,j})), imag(tzero(Gk_wz_iff{i,j})), 'o');
|
||||
for k = 1:length(gains)
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
cl_poles = pole(feedback(Gk_wz_iff{i,j}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.');
|
||||
end
|
||||
hold off;
|
||||
axis square
|
||||
ylim([0, 2000]);
|
||||
xlim([-1800,200]);
|
||||
xlabel('Real Part')
|
||||
ylabel('Imaginary Part')
|
||||
|
||||
subplot(2,2,4)
|
||||
gains = logspace(3, 7, 500);
|
||||
i = 7;
|
||||
title(sprintf('$k = %.0g$ [N/m]', Ks(i)))
|
||||
hold on;
|
||||
j = length(Rz_rpm);
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
plot(real(pole(Gk_wz_iff{i,j})), imag(pole(Gk_wz_iff{i,j})), 'x');
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
plot(real(tzero(Gk_wz_iff{i,j})), imag(tzero(Gk_wz_iff{i,j})), 'o');
|
||||
for k = 1:length(gains)
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
cl_poles = pole(feedback(Gk_wz_iff{i,j}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.');
|
||||
end
|
||||
j = 1
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
plot(real(pole(Gk_wz_iff{i,j})), imag(pole(Gk_wz_iff{i,j})), 'x');
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
plot(real(tzero(Gk_wz_iff{i,j})), imag(tzero(Gk_wz_iff{i,j})), 'o');
|
||||
for k = 1:length(gains)
|
||||
set(gca,'ColorOrderIndex',2);
|
||||
cl_poles = pole(feedback(Gk_wz_iff{i,j}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.');
|
||||
end
|
||||
hold off;
|
||||
axis square
|
||||
ylim([0, 18000]);
|
||||
xlim([-18000, 100]);
|
||||
xlabel('Real Part')
|
||||
ylabel('Imaginary Part')
|
||||
#+end_src
|
||||
|
||||
#+header: :tangle no :exports results :results none :noweb yes
|
||||
|
Reference in New Issue
Block a user