Add root locus plot for IFF

This commit is contained in:
Thomas Dehaeze 2020-04-05 19:43:06 +02:00
parent dd4780f875
commit 4f3d8d42d1
3 changed files with 142 additions and 0 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

View File

@ -176,6 +176,148 @@ We plot the change of dynamics due to the change of the spindle rotation speed (
- Figure [[fig:opt_stiffness_wz_fx_dx]]: from force in the task space $\mathcal{F}_x$ to sample displacement $\mathcal{X}_x$ (Centralized positioning plant) - Figure [[fig:opt_stiffness_wz_fx_dx]]: from force in the task space $\mathcal{F}_x$ to sample displacement $\mathcal{X}_x$ (Centralized positioning plant)
- 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) - 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;
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)
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)
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
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
#+begin_src matlab :var filepath="figs/opti_stiffness_iff_root_locus.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:opti_stiffness_iff_root_locus
#+caption: Root Locus plot for IFF control when not rotating (in red) and when rotating at 60rpm (in blue) for 4 different nano-hexapod stiffnesses ([[./figs/opti_stiffness_iff_root_locus.png][png]], [[./figs/opti_stiffness_iff_root_locus.pdf][pdf]])
[[file:figs/opti_stiffness_iff_root_locus.png]]
#+begin_src matlab :exports none #+begin_src matlab :exports none
freqs = logspace(-2, 3, 1000); freqs = logspace(-2, 3, 1000);