diff --git a/inkscape/comp_compliance.pdf b/inkscape/comp_compliance.pdf index 1a61cdb..741d3d0 100644 Binary files a/inkscape/comp_compliance.pdf and b/inkscape/comp_compliance.pdf differ diff --git a/inkscape/comp_compliance.svg b/inkscape/comp_compliance.svg index f35a947..b7eb6ac 100644 Binary files a/inkscape/comp_compliance.svg and b/inkscape/comp_compliance.svg differ diff --git a/inkscape/comp_root_locus.pdf b/inkscape/comp_root_locus.pdf index 3925a45..2f48070 100644 Binary files a/inkscape/comp_root_locus.pdf and b/inkscape/comp_root_locus.pdf differ diff --git a/inkscape/comp_root_locus.svg b/inkscape/comp_root_locus.svg index b93a5ac..dc73c09 100644 Binary files a/inkscape/comp_root_locus.svg and b/inkscape/comp_root_locus.svg differ diff --git a/inkscape/comp_transmissibility.pdf b/inkscape/comp_transmissibility.pdf index c7183d7..f3cd22b 100644 Binary files a/inkscape/comp_transmissibility.pdf and b/inkscape/comp_transmissibility.pdf differ diff --git a/inkscape/comp_transmissibility.svg b/inkscape/comp_transmissibility.svg index 83dc034..50a77c8 100644 Binary files a/inkscape/comp_transmissibility.svg and b/inkscape/comp_transmissibility.svg differ diff --git a/inkscape/root_locus_iff_kp.pdf b/inkscape/root_locus_iff_kp.pdf index d8022b6..585d2ba 100644 Binary files a/inkscape/root_locus_iff_kp.pdf and b/inkscape/root_locus_iff_kp.pdf differ diff --git a/inkscape/root_locus_iff_kp.svg b/inkscape/root_locus_iff_kp.svg index e035efb..52c3006 100644 Binary files a/inkscape/root_locus_iff_kp.svg and b/inkscape/root_locus_iff_kp.svg differ diff --git a/matlab/figs/comp_compliance.pdf b/matlab/figs/comp_compliance.pdf index 0126839..e6a64d9 100644 Binary files a/matlab/figs/comp_compliance.pdf and b/matlab/figs/comp_compliance.pdf differ diff --git a/matlab/figs/comp_compliance.png b/matlab/figs/comp_compliance.png index 2bc0c36..5f37d9d 100644 Binary files a/matlab/figs/comp_compliance.png and b/matlab/figs/comp_compliance.png differ diff --git a/matlab/figs/comp_root_locus.pdf b/matlab/figs/comp_root_locus.pdf index c3a7da8..98e15ee 100644 Binary files a/matlab/figs/comp_root_locus.pdf and b/matlab/figs/comp_root_locus.pdf differ diff --git a/matlab/figs/comp_root_locus.png b/matlab/figs/comp_root_locus.png index 6994aa1..096de1f 100644 Binary files a/matlab/figs/comp_root_locus.png and b/matlab/figs/comp_root_locus.png differ diff --git a/matlab/figs/comp_transmissibility.pdf b/matlab/figs/comp_transmissibility.pdf index 456aefa..97b9e05 100644 Binary files a/matlab/figs/comp_transmissibility.pdf and b/matlab/figs/comp_transmissibility.pdf differ diff --git a/matlab/figs/comp_transmissibility.png b/matlab/figs/comp_transmissibility.png index 392574e..2692624 100644 Binary files a/matlab/figs/comp_transmissibility.png and b/matlab/figs/comp_transmissibility.png differ diff --git a/matlab/index.org b/matlab/index.org index c3ea303..81f10de 100644 --- a/matlab/index.org +++ b/matlab/index.org @@ -29,7 +29,6 @@ - Section [[sec:iff_pure_int]] - Section [[sec:iff_pseudo_int]] - Section [[sec:iff_parallel_stiffness]] -- Section [[sec:dvf]] - Section [[sec:comparison]] - Section [[sec:notations]] @@ -215,7 +214,6 @@ Define the rotating speed for the Simscape Model. #+begin_src matlab :exports none Kiff = tf(zeros(2)); - Kdvf = tf(zeros(2)); kp = 0; % Parallel Stiffness [N/m] cp = 0; % Parallel Damping [N/(m/s)] @@ -492,7 +490,6 @@ The rotation speed is set to $\Omega = 0.1 \omega_0$. #+begin_src matlab :exports none Kiff = tf(zeros(2)); - Kdvf = tf(zeros(2)); #+end_src #+begin_src matlab @@ -1294,7 +1291,6 @@ The same transfer function from $[F_u, F_v]$ to $[f_u, f_v]$ is written down fro #+begin_src matlab :exports none Kiff = tf(zeros(2)); - Kdvf = tf(zeros(2)); #+end_src #+begin_src matlab @@ -1897,280 +1893,6 @@ Let's take $k_p = 5 m \Omega^2$ and find the optimal IFF control gain $g$ such t exportFig('figs-inkscape/root_locus_opt_gain_iff_kp.pdf', 'width', 'wide', 'height', 'tall', 'png', false, 'pdf', false, 'svg', true); #+end_src -* Direct Velocity Feedback -:PROPERTIES: -:header-args:matlab+: :tangle matlab/s5_dvf.m -:header-args:matlab+: :comments org :mkdirp yes -:END: -<> - -** Introduction :ignore: -** Matlab Init :noexport:ignore: -#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) - <> -#+end_src - -#+begin_src matlab :exports none :results silent :noweb yes - <> -#+end_src - -#+begin_src matlab :tangle no - addpath('./matlab/'); - addpath('./src/'); -#+end_src - -** Schematic - -#+name: fig:system_dvf -#+caption: Figure caption -[[file:figs-tikz/system_dvf.png]] - -** Equations -The sensed relative velocity are equal to: -#+begin_important -\begin{equation} -\begin{bmatrix} \dot{d}_u \\ \dot{d}_v \end{bmatrix} = -\bm{G}_v -\begin{bmatrix} F_u \\ F_v \end{bmatrix} -\end{equation} - -\begin{equation} -\begin{bmatrix} \dot{d}_u \\ \dot{d}_v \end{bmatrix} = -\frac{s}{k} \frac{1}{G_{vp}} -\begin{bmatrix} - G_{vz} & G_{vc} \\ - -G_{vc} & G_{vz} -\end{bmatrix} -\begin{bmatrix} F_u \\ F_v \end{bmatrix} -\end{equation} -With: -\begin{align} - G_{vp} &= \left( \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \right)^2 + \left( 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} \right)^2 \\ - G_{vz} &= \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \\ - G_{vc} &= 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} -\end{align} -#+end_important - -** Plant Parameters -Let's define initial values for the model. -#+begin_src matlab - k = 1; % Actuator Stiffness [N/m] - c = 0.05; % Actuator Damping [N/(m/s)] - m = 1; % Payload mass [kg] -#+end_src - -#+begin_src matlab - xi = c/(2*sqrt(k*m)); - w0 = sqrt(k/m); % [rad/s] -#+end_src - -#+begin_src matlab :exports none - kp = 0; % [N/m] - cp = 0; % [N/(m/s)] -#+end_src - -** Comparison of the Analytical Model and the Simscape Model -The rotating speed is set to $\Omega = 0.1 \omega_0$. -#+begin_src matlab - W = 0.1*w0; -#+end_src - -#+begin_src matlab :exports none - Kiff = tf(zeros(2)); - Kdvf = tf(zeros(2)); -#+end_src - -#+begin_src matlab - open('rotating_frame.slx'); -#+end_src - -And the transfer function from $[F_u, F_v]$ to $[v_u, v_v]$ is identified using the Simscape model. -#+begin_src matlab - %% Name of the Simulink File - mdl = 'rotating_frame'; - - %% Input/Output definition - clear io; io_i = 1; - io(io_i) = linio([mdl, '/K'], 1, 'openinput'); io_i = io_i + 1; - io(io_i) = linio([mdl, '/G'], 1, 'openoutput'); io_i = io_i + 1; -#+end_src - -#+begin_src matlab - Gdvf = linearize(mdl, io, 0); - - %% Input/Output definition - Gdvf.InputName = {'Fu', 'Fv'}; - Gdvf.OutputName = {'Vu', 'Vv'}; -#+end_src - -The same transfer function from $[F_u, F_v]$ to $[v_u, v_v]$ is written down from the analytical model. -#+begin_src matlab - Gdvf_th = (s/k)/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))^2 + (2*W*s/(w0^2))^2) * ... - [(s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2), 2*W*s/(w0^2) ; ... - -2*W*s/(w0^2), (s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2)]; - - Gdvf_th.InputName = {'Fu', 'Fv'}; - Gdvf_th.OutputName = {'vu', 'vv'}; -#+end_src - -The two are compared in Figure [[fig:plant_iff_comp_simscape_analytical]] and found to perfectly match. - -#+begin_src matlab :exports none - freqs = logspace(-1, 1, 1000); - - figure; - ax1 = subplot(2, 2, 1); - hold on; - plot(freqs, abs(squeeze(freqresp(Gdvf(1,1), freqs))), '-') - plot(freqs, abs(squeeze(freqresp(Gdvf_th(1,1), freqs))), '--') - hold off; - set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); - set(gca, 'XTickLabel',[]); ylabel('Magnitude [$\frac{m/s}{N}$]'); - title('$v_u/F_u$, $v_v/F_v$'); - - ax3 = subplot(2, 2, 3); - hold on; - plot(freqs, 180/pi*angle(squeeze(freqresp(Gdvf(1,1), freqs))), '-') - plot(freqs, 180/pi*angle(squeeze(freqresp(Gdvf_th(1,1), freqs))), '--') - set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); - xlabel('Frequency [rad/s]'); ylabel('Phase [deg]'); - yticks(-180:90:180); - ylim([-180 180]); - hold off; - - ax2 = subplot(2, 2, 2); - hold on; - plot(freqs, abs(squeeze(freqresp(Gdvf(1,2), freqs))), '-') - plot(freqs, abs(squeeze(freqresp(Gdvf_th(1,2), freqs))), '--') - hold off; - set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); - set(gca, 'XTickLabel',[]); ylabel('Magnitude [$\frac{m/s}{N}$]'); - title('$v_u/F_v$, $v_v/F_u$'); - - ax4 = subplot(2, 2, 4); - hold on; - plot(freqs, 180/pi*angle(squeeze(freqresp(Gdvf(1,2), freqs))), '-') - plot(freqs, 180/pi*angle(squeeze(freqresp(Gdvf_th(1,2), freqs))), '--') - set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); - xlabel('Frequency [rad/s]'); ylabel('Phase [deg]'); - yticks(-180:90:180); - ylim([-180 180]); - hold off; - - linkaxes([ax1,ax2,ax3,ax4],'x'); - xlim([freqs(1), freqs(end)]); - - linkaxes([ax1,ax2],'y'); -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace - exportFig('figs/plant_dvf_comp_simscape_analytical.pdf', 'width', 'full', 'height', 'full'); -#+end_src - -#+name: fig:plant_dvf_comp_simscape_analytical -#+caption: Comparison of the transfer functions from $[F_u, F_v]$ to $[v_u, v_v]$ between the Simscape model and the analytical one -#+RESULTS: -[[file:figs/plant_dvf_comp_simscape_analytical.png]] - -** Root Locus -The Decentralized Direct Velocity Feedback controller consist of a pure gain on the diagonal: -\begin{equation} - K_{\text{DVF}}(s) = g \begin{bmatrix} - 1 & 0 \\ - 0 & 1 -\end{bmatrix} -\end{equation} - -The corresponding Root Locus plots for the following rotating speeds are shown in Figure [[fig:root_locus_dvf]]. -#+begin_src matlab - Ws = [0, 0.2, 0.7, 1.1]*w0; % Rotating Speeds [rad/s] -#+end_src - -It is shown that for rotating speed $\Omega < \omega_0$, the closed loop system is unconditionally stable and arbitrary damping can be added to the poles. -#+begin_src matlab :exports none - gains = logspace(-2, 1, 100); - - figure; - hold on; - for W_i = 1:length(Ws) - W = Ws(W_i); - - Gdvf = (s/k)/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))^2 + (2*W*s/(w0^2))^2) * ... - [(s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2), 2*W*s/(w0^2) ; ... - -2*W*s/(w0^2), (s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2)]; - - set(gca,'ColorOrderIndex',W_i); - plot(real(pole(Gdvf)), imag(pole(Gdvf)), 'x', ... - 'DisplayName', sprintf('$\\Omega = %.2f \\omega_0 $', W/w0)); - - set(gca,'ColorOrderIndex',W_i); - plot(real(tzero(Gdvf)), imag(tzero(Gdvf)), 'o', ... - 'HandleVisibility', 'off'); - - for g = gains - set(gca,'ColorOrderIndex',W_i); - cl_poles = pole(feedback(Gdvf, g*eye(2))); - - plot(real(cl_poles), imag(cl_poles), '.', ... - 'HandleVisibility', 'off'); - end - end - hold off; - axis square; - xlim([-2, 0.5]); ylim([0, 2.5]); - - xlabel('Real Part'); ylabel('Imaginary Part'); - legend('location', 'northwest'); -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace - exportFig('figs/root_locus_dvf.pdf', 'width', 'wide', 'height', 'tall'); -#+end_src - -#+name: fig:root_locus_dvf -#+caption: Root Locus for the Decentralized Direct Velocity Feedback controller. Several rotating speed are shown. -#+RESULTS: -[[file:figs/root_locus_dvf.png]] - -#+begin_src matlab :exports none :tangle no - gains = logspace(-2, 1, 1000); - - figure; - hold on; - for W_i = 1:length(Ws) - W = Ws(W_i); - - Gdvf = (s/k)/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))^2 + (2*W*s/(w0^2))^2) * ... - [(s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2), 2*W*s/(w0^2) ; ... - -2*W*s/(w0^2), (s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2)]; - - set(gca,'ColorOrderIndex',W_i); - plot(real(pole(Gdvf)), imag(pole(Gdvf)), 'x', ... - 'DisplayName', sprintf('$\\Omega = %.2f \\omega_0 $', W/w0)); - - set(gca,'ColorOrderIndex',W_i); - plot(real(tzero(Gdvf)), imag(tzero(Gdvf)), 'o', ... - 'HandleVisibility', 'off'); - - poles_dvf = rootLocusPolesSorted(Gdvf, eye(2), gains, 'd_max', 1e-4); - for p_i = 1:size(poles_dvf, 2) - set(gca,'ColorOrderIndex', W_i); - plot(real(poles_dvf(:, p_i)), imag(poles_dvf(:, p_i)), '-', ... - 'HandleVisibility', 'off'); - end - end - hold off; - axis square; - xlim([-2, 0.5]); ylim([0, 2.5]); - - xlabel('Real Part'); ylabel('Imaginary Part'); - legend('location', 'northwest'); -#+end_src - -#+begin_src matlab :tangle no :exports none :results none - exportFig('figs-inkscape/root_locus_dvf.pdf', 'width', 'wide', 'height', 'tall', 'png', false, 'pdf', false, 'svg', true); -#+end_src - * Comparison :PROPERTIES: :header-args:matlab+: :tangle matlab/s6_act_damp_comparison.m @@ -2241,13 +1963,6 @@ IFF With parallel Stiffness k = k + kp; #+end_src -DVF -#+begin_src matlab - Gdvf = (s/k)/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2))^2 + (2*W*s/(w0^2))^2) * ... - [(s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2), 2*W*s/(w0^2) ; ... - -2*W*s/(w0^2), (s^2)/(w0^2) + 2*xi*s/w0 + 1 - (W^2)/(w0^2)]; -#+end_src - #+begin_src matlab :exports none figure; @@ -2281,20 +1996,6 @@ DVF plot(real(cl_poles), imag(cl_poles), '.', ... 'HandleVisibility', 'off'); end - - set(gca,'ColorOrderIndex',3); - plot(real(pole(Gdvf)), imag(pole(Gdvf)), 'x', ... - 'DisplayName', 'DVF'); - set(gca,'ColorOrderIndex',3); - plot(real(tzero(Gdvf)), imag(tzero(Gdvf)), 'o', ... - 'HandleVisibility', 'off'); - for g = gains - Kdvf = g*eye(2); - cl_poles = pole(feedback(Gdvf, Kdvf)); - set(gca,'ColorOrderIndex',3); - plot(real(cl_poles), imag(cl_poles), '.', ... - 'HandleVisibility', 'off'); - end hold off; axis square; xlim([-1.2, 0.05]); ylim([0, 1.25]); @@ -2308,7 +2009,7 @@ DVF #+end_src #+name: fig:comp_root_locus -#+caption: Root Locus plot - Comparison of IFF with additional high pass filter, IFF with additional parallel stiffness and DVF +#+caption: Root Locus plot - Comparison of IFF with additional high pass filter, IFF with additional parallel stiffness #+RESULTS: [[file:figs/comp_root_locus.png]] @@ -2317,7 +2018,6 @@ DVF poles_iff_hpf = rootLocusPolesSorted(Giff, 1/(s + wi)*eye(2), gains, 'd_max', 1e-4); poles_iff_kp = rootLocusPolesSorted(Giff_kp, 1/s*eye(2), gains, 'd_max', 1e-4); - poles_dvf = rootLocusPolesSorted(Gdvf, eye(2), gains, 'd_max', 1e-4); figure; @@ -2345,18 +2045,6 @@ DVF plot(real(poles_iff_kp(:, p_i)), imag(poles_iff_kp(:, p_i)), '-', ... 'HandleVisibility', 'off'); end - - set(gca,'ColorOrderIndex',3); - plot(real(pole(Gdvf)), imag(pole(Gdvf)), 'x', ... - 'DisplayName', 'DVF'); - set(gca,'ColorOrderIndex',3); - plot(real(tzero(Gdvf)), imag(tzero(Gdvf)), 'o', ... - 'HandleVisibility', 'off'); - for p_i = 1:size(poles_dvf, 2) - set(gca,'ColorOrderIndex',3); - plot(real(poles_dvf(:, p_i)), imag(poles_dvf(:, p_i)), '-', ... - 'HandleVisibility', 'off'); - end hold off; axis square; xlim([-1.2, 0.05]); ylim([0, 1.25]); @@ -2408,28 +2096,10 @@ In order to compare to three considered Active Damping techniques, gains that yi end #+end_src -#+begin_src matlab :exports none - %% Direct Velocity Feedback - gains = logspace(0, 2, 100); - opt_zeta_dvf = 0; - opt_gain_dvf = 0; - - for g = gains - Kdvf = g*eye(2); - - [w, zeta] = damp(minreal(feedback(Gdvf, Kdvf))); - - if min(zeta) > opt_zeta_dvf && all(zeta > 0) && min(zeta) < 0.85 - opt_zeta_dvf = min(zeta); - opt_gain_dvf = g; - end - end -#+end_src - The obtained damping ratio and control are shown below. #+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*) - data2orgtable([opt_zeta_iff, opt_zeta_kp, opt_zeta_dvf; opt_gain_iff, opt_gain_kp, opt_gain_dvf]', {'Modified IFF', 'IFF with $k_p$', 'DVF'}, {'Obtained $\xi$', 'Control Gain'}, ' %.2f '); + data2orgtable([opt_zeta_iff, opt_zeta_kp; opt_gain_iff, opt_gain_kp]', {'Modified IFF', 'IFF with $k_p$'}, {'Obtained $\xi$', 'Control Gain'}, ' %.2f '); #+end_src #+RESULTS: @@ -2437,24 +2107,19 @@ The obtained damping ratio and control are shown below. |----------------+----------------+--------------| | Modified IFF | 0.83 | 2.0 | | IFF with $k_p$ | 0.83 | 2.01 | -| DVF | 0.85 | 1.67 | -** Transmissibility +** Passive Damping - Critical Damping +#+begin_src matlab + c_opt = 2*sqrt(k*m); +#+end_src + +** Transmissibility And Compliance <> #+begin_src matlab open('rotating_frame.slx'); #+end_src -*** Open Loop :ignore: -#+begin_src matlab :exports none - Kdvf = tf(zeros(2)); - Kiff = tf(zeros(2)); - - kp = 0; - cp = 0; -#+end_src - #+begin_src matlab %% Name of the Simulink File mdl = 'rotating_frame'; @@ -2462,23 +2127,57 @@ The obtained damping ratio and control are shown below. %% Input/Output definition clear io; io_i = 1; io(io_i) = linio([mdl, '/dw'], 1, 'input'); io_i = io_i + 1; + io(io_i) = linio([mdl, '/fd'], 1, 'input'); io_i = io_i + 1; io(io_i) = linio([mdl, '/Meas'], 1, 'output'); io_i = io_i + 1; #+end_src +*** Open Loop :ignore: +#+begin_src matlab :exports none + Kiff = tf(zeros(2)); + + kp = 0; + cp = 0; +#+end_src + #+begin_src matlab - Tol = linearize(mdl, io, 0); + G_ol = linearize(mdl, io, 0); %% Input/Output definition - Tol.InputName = {'Dwx', 'Dwy'}; - Tol.OutputName = {'Dx', 'Dy'}; + G_ol.InputName = {'Dwx', 'Dwy', 'Fdx', 'Fdy'}; + G_ol.OutputName = {'Dx', 'Dy'}; +#+end_src + +*** Passive Damping +#+begin_src matlab + kp = 0; + cp = 0; +#+end_src + +#+begin_src matlab + c_old = c; + c = c_opt; +#+end_src + +#+begin_src matlab :exports none + Kiff = tf(zeros(2)); +#+end_src + +#+begin_src matlab + G_pas = linearize(mdl, io, 0); + + %% Input/Output definition + G_pas.InputName = {'Dwx', 'Dwy', 'Fdx', 'Fdy'}; + G_pas.OutputName = {'Dx', 'Dy'}; +#+end_src + +#+begin_src matlab + c = c_old; #+end_src *** Pseudo Integrator IFF :ignore: #+begin_src matlab :exports none kp = 0; cp = 0; - - Kdvf = tf(zeros(2)); #+end_src #+begin_src matlab @@ -2486,11 +2185,11 @@ The obtained damping ratio and control are shown below. #+end_src #+begin_src matlab - Tiff = linearize(mdl, io, 0); + G_iff = linearize(mdl, io, 0); %% Input/Output definition - Tiff.InputName = {'Dwx', 'Dwy'}; - Tiff.OutputName = {'Dx', 'Dy'}; + G_iff.InputName = {'Dwx', 'Dwy', 'Fdx', 'Fdy'}; + G_iff.OutputName = {'Dx', 'Dy'}; #+end_src *** IFF With parallel Stiffness :ignore: @@ -2503,36 +2202,12 @@ The obtained damping ratio and control are shown below. Kiff = opt_gain_kp/s*tf(eye(2)); #+end_src -#+begin_src matlab :exports none - Kdvf = tf(zeros(2)); -#+end_src - #+begin_src matlab - Tiff_kp = linearize(mdl, io, 0); + G_kp = linearize(mdl, io, 0); %% Input/Output definition - Tiff_kp.InputName = {'Dwx', 'Dwy'}; - Tiff_kp.OutputName = {'Dx', 'Dy'}; -#+end_src - -*** DVF :ignore: -#+begin_src matlab :exports none - kp = 0; - cp = 0; - - Kiff = tf(zeros(2)); -#+end_src - -#+begin_src matlab - Kdvf = opt_gain_kp*tf(eye(2)); -#+end_src - -#+begin_src matlab - Tdvf = linearize(mdl, io, 0); - - %% Input/Output definition - Tdvf.InputName = {'Dwx', 'Dwy'}; - Tdvf.OutputName = {'Dx', 'Dy'}; + G_kp.InputName = {'Dwx', 'Dwy', 'Fdx', 'Fdy'}; + G_kp.OutputName = {'Dx', 'Dy'}; #+end_src *** Transmissibility :ignore: @@ -2541,13 +2216,13 @@ The obtained damping ratio and control are shown below. figure; hold on; - plot(freqs, abs(squeeze(freqresp(Tiff(1,1), freqs))), ... + plot(freqs, abs(squeeze(freqresp(G_iff({'Dx'}, {'Dwx'}), freqs))), ... 'DisplayName', 'IFF + HPF') - plot(freqs, abs(squeeze(freqresp(Tiff_kp(1,1), freqs))), ... + plot(freqs, abs(squeeze(freqresp(G_kp( {'Dx'}, {'Dwx'}), freqs))), ... 'DisplayName', 'IFF + $k_p$') - plot(freqs, abs(squeeze(freqresp(Tdvf(1,1), freqs))), ... - 'DisplayName', 'DVF') - plot(freqs, abs(squeeze(freqresp(Tol(1,1), freqs))), 'k-', ... + plot(freqs, abs(squeeze(freqresp(G_pas({'Dx'}, {'Dwx'}), freqs))), ... + 'DisplayName', 'Passive') + plot(freqs, abs(squeeze(freqresp(G_ol( {'Dx'}, {'Dwx'}), freqs))), 'k-', ... 'DisplayName', 'Open-Loop') hold off; set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); @@ -2568,110 +2243,19 @@ The obtained damping ratio and control are shown below. exportFig('figs-inkscape/comp_transmissibility.pdf', 'width', 'half', 'height', 'tall', 'png', false, 'pdf', false, 'svg', true); #+end_src -** Compliance -<> -*** Open Loop :ignore: -#+begin_src matlab :exports none - Kdvf = tf(zeros(2)); - Kiff = tf(zeros(2)); - - kp = 0; - cp = 0; -#+end_src - -#+begin_src matlab - %% Name of the Simulink File - mdl = 'rotating_frame'; - - %% Input/Output definition - clear io; io_i = 1; - io(io_i) = linio([mdl, '/fd'], 1, 'input'); io_i = io_i + 1; - io(io_i) = linio([mdl, '/Meas'], 1, 'output'); io_i = io_i + 1; -#+end_src - -#+begin_src matlab - Col = linearize(mdl, io, 0); - - %% Input/Output definition - Col.InputName = {'Fdx', 'Fdy'}; - Col.OutputName = {'Dx', 'Dy'}; -#+end_src - -*** Pseudo Integrator IFF :ignore: -#+begin_src matlab :exports none - kp = 0; - cp = 0; - - Kdvf = tf(zeros(2)); -#+end_src - -#+begin_src matlab - Kiff = opt_gain_iff/(wi + s)*tf(eye(2)); -#+end_src - -#+begin_src matlab - Ciff = linearize(mdl, io, 0); - - %% Input/Output definition - Ciff.InputName = {'Fdx', 'Fdy'}; - Ciff.OutputName = {'Dx', 'Dy'}; -#+end_src - -*** IFF With parallel Stiffness :ignore: -#+begin_src matlab - kp = 5*m*W^2; - cp = 0.01; -#+end_src - -#+begin_src matlab - Kiff = opt_gain_kp/s*tf(eye(2)); -#+end_src - -#+begin_src matlab :exports none - Kdvf = tf(zeros(2)); -#+end_src - -#+begin_src matlab - Ciff_kp = linearize(mdl, io, 0); - - %% Input/Output definition - Ciff_kp.InputName = {'Fdx', 'Fdy'}; - Ciff_kp.OutputName = {'Dx', 'Dy'}; -#+end_src - -*** DVF :ignore: -#+begin_src matlab :exports none - kp = 0; - cp = 0; - - Kiff = tf(zeros(2)); -#+end_src - -#+begin_src matlab - Kdvf = opt_gain_kp*tf(eye(2)); -#+end_src - -#+begin_src matlab - Cdvf = linearize(mdl, io, 0); - - %% Input/Output definition - Cdvf.InputName = {'Fdx', 'Fdy'}; - Cdvf.OutputName = {'Dx', 'Dy'}; -#+end_src - *** Compliance :ignore: #+begin_src matlab :exports none freqs = logspace(-2, 1, 1000); figure; hold on; - plot(freqs, abs(squeeze(freqresp(Ciff(1,1), freqs))), ... + plot(freqs, abs(squeeze(freqresp(G_iff({'Dx'}, {'Fdx'}), freqs))), ... 'DisplayName', 'IFF + HPF') - plot(freqs, abs(squeeze(freqresp(Ciff_kp(1,1), freqs))), ... + plot(freqs, abs(squeeze(freqresp(G_kp( {'Dx'}, {'Fdx'}), freqs))), ... 'DisplayName', 'IFF + $k_p$') - plot(freqs, abs(squeeze(freqresp(Cdvf(1,1), freqs))), ... - 'DisplayName', 'DVF') - plot(freqs, abs(squeeze(freqresp(Col(1,1), freqs))), 'k-', ... + plot(freqs, abs(squeeze(freqresp(G_pas({'Dx'}, {'Fdx'}), freqs))), ... + 'DisplayName', 'Passive') + plot(freqs, abs(squeeze(freqresp(G_ol( {'Dx'}, {'Fdx'}), freqs))), 'k-', ... 'DisplayName', 'Open-Loop') hold off; set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); diff --git a/matlab/matlab/rotating_frame.slx b/matlab/matlab/rotating_frame.slx index 75972cd..adebb6c 100644 Binary files a/matlab/matlab/rotating_frame.slx and b/matlab/matlab/rotating_frame.slx differ diff --git a/paper/paper.org b/paper/paper.org index 868ddcb..3edd175 100644 --- a/paper/paper.org +++ b/paper/paper.org @@ -516,70 +516,6 @@ The overall stiffness $k$ stays constant: | file:figs/root_locus_iff_kps.pdf | file:figs/root_locus_opt_gain_iff_kp.pdf | | <> Three values of $k_p$ | <> $k_p = 5 m \Omega^2$, optimal damping is shown | -* Direct Velocity Feedback :noexport: -** System Schematic and Control Architecture -# Basic Idea of DVF - - -# Equation with the control law: pure gain -\begin{equation} - K_V(s) = g -\end{equation} - -#+name: fig:system_dvf -#+caption: System with relative velocity sensors and with decentralized controllers $K_V$ -#+attr_latex: :scale 1 -[[file:figs/system_dvf.pdf]] - -# Equivalent System is the same as Figure 1 (as increasing "c") - -# Thus very much equivalent as adding passive elements such as dashpot - -** Equations - -# Write the equations - -\begin{equation} -\begin{bmatrix} v_u \\ v_v \end{bmatrix} = -\bm{G}_v -\begin{bmatrix} F_u \\ F_v \end{bmatrix} -\end{equation} - -\begin{equation} -\begin{bmatrix} v_u \\ v_v \end{bmatrix} = -\frac{1}{k} \frac{1}{G_{vp}} -\begin{bmatrix} - G_{vz} & G_{vc} \\ - -G_{vc} & G_{vz} -\end{bmatrix} -\begin{bmatrix} F_u \\ F_v \end{bmatrix} -\end{equation} -With: -\begin{subequations} - \begin{align} - G_{vp} &= \left( \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \right)^2 + \left( 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} \right)^2 \\ - G_{vz} &= s \left( \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \right) \\ - G_{vc} &= 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} - \end{align} -\end{subequations} - -# Show that the rotation have somehow less impact on the plant than for IFF - - -# Eventually add a bode plot to show the effect of the rotation speed - - -** Relative Direct Velocity Feedback - -# Unconditionally stable - -# Arbitrary Damping can be added to the poles - -#+name: fig:root_locus_dvf -#+caption: Root Locus for Decentralized Direct Velocity Feedback for several rotational speeds $\Omega$ -#+attr_latex: :scale 1 -[[file:figs/root_locus_dvf.pdf]] - * Comparison of the Proposed Active Damping Techniques for Rotating Positioning Stages ** Physical Comparison diff --git a/paper/paper.pdf b/paper/paper.pdf index 760c282..2f9b354 100644 Binary files a/paper/paper.pdf and b/paper/paper.pdf differ diff --git a/paper/paper.tex b/paper/paper.tex index 3bb5d53..76420a6 100644 --- a/paper/paper.tex +++ b/paper/paper.tex @@ -1,4 +1,4 @@ -% Created 2020-06-26 ven. 17:28 +% Created 2020-06-29 lun. 10:22 % Intended LaTeX compiler: pdflatex \documentclass{ISMA_USD2020} \usepackage[utf8]{inputenc} @@ -53,7 +53,7 @@ } \section{Introduction} -\label{sec:org4effc95} +\label{sec:org8a431d3} \label{sec:introduction} Controller Poles are shown by black crosses ( \begin{tikzpicture} \node[cross out, draw=black, minimum size=1ex, line width=2pt, inner sep=0pt, outer sep=0pt] at (0, 0){}; \end{tikzpicture} @@ -64,9 +64,9 @@ This paper has been published The Matlab code that was use to obtain the results are available in \cite{dehaeze20_activ_dampin_rotat_posit_platf}. \section{Dynamics of Rotating Positioning Platforms} -\label{sec:org5eef93b} +\label{sec:org6c19606} \subsection{Model of a Rotating Positioning Platform} -\label{sec:org905e0e5} +\label{sec:orga59b20f} To study how the rotation of positioning platforms does affect the use of force feedback, a simple model is developed. It represents an X-Y positioning stage on top of a Rotating Stage and is schematically represented in Figure \ref{fig:system}. @@ -96,7 +96,7 @@ The position of the payload is represented by \((d_u, d_v)\) expressed in the ro \end{figure} \subsection{Equations of Motion} -\label{sec:org08efe1c} +\label{sec:orgad9d82d} To obtain of equation of motion for the system represented in Figure \ref{fig:system}, the Lagrangian equations are used: \begin{equation} \label{eq:lagrangian_equations} @@ -129,13 +129,12 @@ The rotation of the XY positioning platform induces two Gyroscopic effects: \end{itemize} \subsection{Transfer Functions in the Laplace domain} -\label{sec:org6daa125} +\label{sec:orgb80a7b8} To study the dynamics of the system, the differential equations of motions \eqref{eq:eom_coupled} are transformed in the Laplace domain and the transfer functions from \([F_u,\ F_v]\) to \([d_u,\ d_v]\) are obtained: \begin{equation} \label{eq:Gd_mimo_tf} \begin{bmatrix} d_u \\ d_v \end{bmatrix} = \bm{G}_d \begin{bmatrix} F_u \\ F_v \end{bmatrix} \end{equation} - with \(\bm{G}_d\) a \(2 \times 2\) transfer function matrix \begin{equation} \label{eq:Gd_m_k_c} @@ -156,11 +155,11 @@ One can verify that without rotation (\(\Omega = 0\)) the system becomes equival \end{subequations} \subsection{Change of Variables / Parameters for the study} -\label{sec:orgda057f2} +\label{sec:org97136f3} In order to make this study less dependent on the system parameters, the following change of variable is performed: \begin{itemize} -\item \(\omega_0 = \sqrt{\frac{k}{m}}\): Natural frequency of the mass-spring system in \(\si{\radian/\s}\) +\item \(\omega_0 = \sqrt{\frac{k}{m}}\): Undamped natural frequency of the mass-spring system in \(\si{\radian/\s}\) \item \(\xi = \frac{c}{2 \sqrt{k m}}\): Damping ratio \end{itemize} @@ -182,7 +181,7 @@ During the rest of this study, the following parameters are used for numerical a \end{itemize} \subsection{System Dynamics and Campbell Diagram} -\label{sec:org9c94a4d} +\label{sec:orgf368845} The poles of \(\bm{G}_d\) are the complex solutions \(p\) of \begin{equation} \left( \frac{p^2}{{\omega_0}^2} + 2 \xi \frac{p}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \right)^2 + \left( 2 \frac{\Omega}{\omega_0} \frac{p}{\omega_0} \right)^2 = 0 @@ -192,19 +191,17 @@ Supposing small damping (\(\xi \ll 1\)), two pairs of complex conjugate poles ar \begin{subequations} \label{eq:pole_values} \begin{align} - p_{+} &= - \xi \omega_0 \left( 1 + \frac{\Omega}{\omega_0} \right) \pm j \left( \omega_0 + \Omega \right) \\ - p_{-} &= - \xi \omega_0 \left( 1 - \frac{\Omega}{\omega_0} \right) \pm j \left( \omega_0 - \Omega \right) + p_{+} &= - \xi \omega_0 \left( 1 + \frac{\Omega}{\omega_0} \right) \pm j \omega_0 \left( 1 + \frac{\Omega}{\omega_0} \right) \\ + p_{-} &= - \xi \omega_0 \left( 1 - \frac{\Omega}{\omega_0} \right) \pm j \omega_0 \left( 1 - \frac{\Omega}{\omega_0} \right) \end{align} \end{subequations} -When the rotation speed in non-null, the resonance frequency is split into two pairs of complex conjugate poles. +The real part and complex part of these two pairs of complex conjugate poles are represented in Figure \ref{fig:campbell_diagram} as a function of the rotational speed \(\Omega\). + As the rotation speed increases, \(p_{+}\) goes to higher frequencies and \(p_{-}\) to lower frequencies. - -When the rotational speed \(\Omega\) reaches \(\omega_0\), the real part \(p_{-}\) is positive meaning the system becomes unstable. -The stiffness of the X-Y stage is too low to hold to rotating payload hence the instability. -Stiff positioning platforms should be used if high rotational speeds or heavy payloads are used. - -This is graphically represented with the Campbell Diagram in Figure \ref{fig:campbell_diagram}. +When the rotational speed \(\Omega\) reaches \(\omega_0\), the real part \(p_{-}\) becomes positive rendering the system unstable. +Physically, the negative stiffness term induced by centrifugal forces exceeds the spring stiffness. +Thus, stiff positioning platforms should be used when working at high rotational speeds. \begin{figure}[htbp] \begin{subfigure}[c]{0.4\linewidth} @@ -221,8 +218,8 @@ This is graphically represented with the Campbell Diagram in Figure \ref{fig:cam Looking at the transfer function matrix \(\bm{G}_d\) \eqref{eq:Gd_w0_xi_k}, one can see it has two distinct terms that can be studied separately: \begin{itemize} -\item the direct (diagonal) terms -\item the coupling (off-diagonal) terms +\item the direct (diagonal) terms (Figure \ref{fig:plant_compare_rotating_speed_direct}) +\item the coupling (off-diagonal) terms (Figure \ref{fig:plant_compare_rotating_speed_coupling}) \end{itemize} The bode plot of the direct and coupling terms are shown in Figure \ref{fig:plant_compare_rotating_speed} for several rotational speed \(\Omega\). @@ -244,13 +241,13 @@ When the \centering \end{figure} -In the rest of this study, \(\Omega < \omega_0\) +In the rest of this study, rotational speeds smaller than the undamped natural frequency of the system are used (\(\Omega < \omega_0\)). \section{Decentralized Integral Force Feedback} -\label{sec:org729cd5f} -\subsection{System Schematic and Control Architecture} -\label{sec:org87ee3ad} -Force Sensors are added in series with the actuators as shown in Figure \ref{fig:system_iff}. +\label{sec:orge7b2b3c} +\subsection{Force Sensors and Control Architecture} +\label{sec:org2b4254d} +In order to apply Decentralized Integral Force Feedback to the system, force sensors are added in series of the two actuators (Figure \ref{fig:system_iff}). \begin{figure}[htbp] \centering @@ -259,7 +256,7 @@ Force Sensors are added in series with the actuators as shown in Figure \ref{fig \end{figure} \subsection{Plant Dynamics} -\label{sec:orge10a341} +\label{sec:org59a4f35} The forces measured by the force sensors are equal to: \begin{equation} \label{eq:measured_force} @@ -315,13 +312,13 @@ It increases with the rotational speed \(\Omega\). \end{figure} \subsection{Decentralized Integral Force Feedback} -\label{sec:org1d15108} +\label{sec:orgf040b7e} \begin{equation} K_F(s) = g \cdot \frac{1}{s} \end{equation} -Also, as one zero has a positive real part, the \textbf{IFF control is no more unconditionally stable}. +Also, as one zero has a positive real part, the IFF control is no more unconditionally stable. This is due to the fact that the zeros of the plant are the poles of the closed loop system with an infinite gain. Thus, for some finite IFF gain, one pole will have a positive real part and the system will be unstable. @@ -335,20 +332,20 @@ At low frequency, the gain is very large and thus no force is transmitted betwee This means that at low frequency, the system is decoupled (the force sensor removed) and thus the system is unstable. \section{Integral Force Feedback with High Pass Filters} -\label{sec:org95ed1b6} +\label{sec:org5533f47} \subsection{Modification of the Control Low} -\label{sec:orgfadc2c2} +\label{sec:orge3f4cc0} \begin{equation} K_{F}(s) = g \cdot \frac{1}{s} \cdot \underbrace{\frac{s/\omega_i}{1 + s/\omega_i}}_{\text{HPF}} = g \cdot \frac{1}{s + \omega_i} \end{equation} \subsection{Feedback Analysis} -\label{sec:org6ef2134} +\label{sec:orgd0fed6b} \begin{figure}[htbp] \centering \includegraphics[scale=1]{figs/loop_gain_modified_iff.pdf} -\caption{\label{fig:loop_gain_modified_iff}Bode Plot of the Loop Gain for IFF with and without the HPF} +\caption{\label{fig:loop_gain_modified_iff}Bode Plot of the Loop Gain for IFF with and without the HPF, \(\Omega = 0.1 \omega_0\)} \end{figure} \begin{equation} @@ -358,16 +355,16 @@ This means that at low frequency, the system is decoupled (the force sensor remo \begin{figure}[htbp] \centering \includegraphics[scale=1]{figs/root_locus_modified_iff.pdf} -\caption{\label{fig:root_locus_modified_iff}Root Locus for IFF with and without the HPF} +\caption{\label{fig:root_locus_modified_iff}Root Locus for IFF with and without the HPF, \(\Omega = 0.1 \omega_0\)} \end{figure} \subsection{Optimal Cut-Off Frequency} -\label{sec:org23e0758} +\label{sec:org4740973} \begin{figure}[htbp] \centering \includegraphics[scale=1]{figs/root_locus_wi_modified_iff.pdf} -\caption{\label{fig:root_locus_wi_modified_iff}Root Locus for several HPF cut-off frequencies \(\omega_i\)} +\caption{\label{fig:root_locus_wi_modified_iff}Root Locus for several HPF cut-off frequencies \(\omega_i\), \(\Omega = 0.1 \omega_0\)} \end{figure} \begin{figure}[htbp] @@ -377,9 +374,9 @@ This means that at low frequency, the system is decoupled (the force sensor remo \end{figure} \section{Integral Force Feedback with Parallel Springs} -\label{sec:org6947a77} +\label{sec:org1b53815} \subsection{Stiffness in Parallel with the Force Sensor} -\label{sec:org9a80ee7} +\label{sec:org3a8c426} \begin{figure}[htbp] \centering \includegraphics[scale=1]{figs/system_parallel_springs.pdf} @@ -387,7 +384,7 @@ This means that at low frequency, the system is decoupled (the force sensor remo \end{figure} \subsection{Plant Dynamics} -\label{sec:org14f5b78} +\label{sec:orgf26a6f4} We define an adimensional parameter \(\alpha\), \(0 \le \alpha < 1\), that describes the proportion of the stiffness in parallel with the actuator and force sensor: \begin{subequations} @@ -419,7 +416,7 @@ The overall stiffness \(k\) stays constant: \end{equation} \subsection{Effect of the Parallel Stiffness on the Plant Dynamics} -\label{sec:org4b26266} +\label{sec:org6a55282} \begin{equation} \begin{aligned} \alpha > \frac{\Omega^2}{{\omega_0}^2} \\ @@ -430,17 +427,17 @@ The overall stiffness \(k\) stays constant: \begin{figure}[htbp] \centering \includegraphics[scale=1]{figs/plant_iff_kp.pdf} -\caption{\label{fig:plant_iff_kp}Bode Plot of \(f_u/F_u\) without parallel spring, with parallel springs with stiffness \(k_p < m \Omega^2\) and \(k_p > m \Omega^2\)} +\caption{\label{fig:plant_iff_kp}Bode Plot of \(f_u/F_u\) without parallel spring, with parallel springs with stiffness \(k_p < m \Omega^2\) and \(k_p > m \Omega^2\), \(\Omega = 0.1 \omega_0\)} \end{figure} \begin{figure}[htbp] \centering \includegraphics[scale=1]{figs/root_locus_iff_kp.pdf} -\caption{\label{fig:root_locus_iff_kp}Root Locus for IFF without parallel spring, with parallel springs with stiffness \(k_p < m \Omega^2\) and \(k_p > m \Omega^2\)} +\caption{\label{fig:root_locus_iff_kp}Root Locus for IFF without parallel spring, with parallel springs with stiffness \(k_p < m \Omega^2\) and \(k_p > m \Omega^2\), \(\Omega = 0.1 \omega_0\)} \end{figure} \subsection{Optimal Parallel Stiffness} -\label{sec:orgfd42bdb} +\label{sec:org358dd73} \begin{figure}[htbp] \begin{subfigure}[c]{0.49\linewidth} \includegraphics[width=\linewidth]{figs/root_locus_iff_kps.pdf} @@ -450,30 +447,29 @@ The overall stiffness \(k\) stays constant: \includegraphics[width=\linewidth]{figs/root_locus_opt_gain_iff_kp.pdf} \caption{\label{fig:root_locus_opt_gain_iff_kp} \(k_p = 5 m \Omega^2\), optimal damping is shown} \end{subfigure} -\caption{\label{fig:root_locus_iff_kps_opt}Root Locus for IFF when parallel stiffness is used} +\caption{\label{fig:root_locus_iff_kps_opt}Root Locus for IFF when parallel stiffness is used, \(\Omega = 0.1 \omega_0\)} \centering \end{figure} - \section{Comparison of the Proposed Active Damping Techniques for Rotating Positioning Stages} -\label{sec:org67dd4e8} +\label{sec:org3cc6699} \subsection{Physical Comparison} -\label{sec:orgf742b29} +\label{sec:orgc34b986} \subsection{Attainable Damping} -\label{sec:orgdb615c3} +\label{sec:org993a1d7} \begin{figure}[htbp] \centering \includegraphics[scale=1]{figs/comp_root_locus.pdf} -\caption{\label{fig:comp_root_locus}Root Locus for the three proposed decentralized active damping techniques: IFF with HFP, IFF with parallel springs, and relative DVF} +\caption{\label{fig:comp_root_locus}Root Locus for the three proposed decentralized active damping techniques: IFF with HFP, IFF with parallel springs, and relative DVF, \(\Omega = 0.1 \omega_0\)} \end{figure} \subsection{Transmissibility and Compliance} -\label{sec:org59532ce} +\label{sec:org0674052} \begin{figure}[htbp] @@ -485,16 +481,16 @@ The overall stiffness \(k\) stays constant: \includegraphics[width=\linewidth]{figs/comp_transmissibility.pdf} \caption{\label{fig:comp_transmissibility} Compliance} \end{subfigure} -\caption{\label{fig:comp_active_damping}Comparison of the three proposed Active Damping Techniques} +\caption{\label{fig:comp_active_damping}Comparison of the two proposed Active Damping Techniques, \(\Omega = 0.1 \omega_0\)} \centering \end{figure} \section{Conclusion} -\label{sec:orgde4f24d} +\label{sec:orgba18ca5} \label{sec:conclusion} \section*{Acknowledgment} -\label{sec:org3284e1c} +\label{sec:org4c68ce2} \bibliography{ref.bib} \end{document}