diff --git a/Figures/G_ws_pz.pdf b/Figures/G_ws_pz.pdf index 1997d92..35c8a77 100644 Binary files a/Figures/G_ws_pz.pdf and b/Figures/G_ws_pz.pdf differ diff --git a/Figures/G_ws_pz.png b/Figures/G_ws_pz.png index 494e6a2..5dd19d9 100644 Binary files a/Figures/G_ws_pz.png and b/Figures/G_ws_pz.png differ diff --git a/Figures/G_ws_pz.svg b/Figures/G_ws_pz.svg index 8abf34a..5d9fd50 100644 Binary files a/Figures/G_ws_pz.svg and b/Figures/G_ws_pz.svg differ diff --git a/Figures/G_ws_vc.pdf b/Figures/G_ws_vc.pdf index 95b2094..5ace53d 100644 Binary files a/Figures/G_ws_vc.pdf and b/Figures/G_ws_vc.pdf differ diff --git a/Figures/G_ws_vc.png b/Figures/G_ws_vc.png index ac219bd..49facfc 100644 Binary files a/Figures/G_ws_vc.png and b/Figures/G_ws_vc.png differ diff --git a/Figures/G_ws_vc.svg b/Figures/G_ws_vc.svg index e6b8980..7226b24 100644 Binary files a/Figures/G_ws_vc.svg and b/Figures/G_ws_vc.svg differ diff --git a/Figures/Gc_ws_pz.pdf b/Figures/Gc_ws_pz.pdf index 0095ae7..0f71e28 100644 Binary files a/Figures/Gc_ws_pz.pdf and b/Figures/Gc_ws_pz.pdf differ diff --git a/Figures/Gc_ws_pz.png b/Figures/Gc_ws_pz.png index 9e9fa92..9c4a330 100644 Binary files a/Figures/Gc_ws_pz.png and b/Figures/Gc_ws_pz.png differ diff --git a/Figures/Gc_ws_pz.svg b/Figures/Gc_ws_pz.svg index 669f8ee..6ce4aa3 100644 Binary files a/Figures/Gc_ws_pz.svg and b/Figures/Gc_ws_pz.svg differ diff --git a/Figures/Gc_ws_vc.pdf b/Figures/Gc_ws_vc.pdf index eaf780b..3857d96 100644 Binary files a/Figures/Gc_ws_vc.pdf and b/Figures/Gc_ws_vc.pdf differ diff --git a/Figures/Gc_ws_vc.png b/Figures/Gc_ws_vc.png index cc2abc6..c318fd1 100644 Binary files a/Figures/Gc_ws_vc.png and b/Figures/Gc_ws_vc.png differ diff --git a/Figures/Gc_ws_vc.svg b/Figures/Gc_ws_vc.svg index 54b051c..34adc03 100644 Binary files a/Figures/Gc_ws_vc.svg and b/Figures/Gc_ws_vc.svg differ diff --git a/Figures/Gtvc_loop_gain.pdf b/Figures/Gtvc_loop_gain.pdf index 981012c..a2b6e9e 100644 Binary files a/Figures/Gtvc_loop_gain.pdf and b/Figures/Gtvc_loop_gain.pdf differ diff --git a/Figures/Gtvc_loop_gain.png b/Figures/Gtvc_loop_gain.png index d7f4111..b7b9019 100644 Binary files a/Figures/Gtvc_loop_gain.png and b/Figures/Gtvc_loop_gain.png differ diff --git a/Figures/Gtvc_loop_gain.svg b/Figures/Gtvc_loop_gain.svg index d2c2a03..d9b0323 100644 Binary files a/Figures/Gtvc_loop_gain.svg and b/Figures/Gtvc_loop_gain.svg differ diff --git a/Figures/Guu_ws.pdf b/Figures/Guu_ws.pdf index 70bc23f..35e0f4d 100644 Binary files a/Figures/Guu_ws.pdf and b/Figures/Guu_ws.pdf differ diff --git a/Figures/Guu_ws.png b/Figures/Guu_ws.png index b4c58af..b930a6b 100644 Binary files a/Figures/Guu_ws.png and b/Figures/Guu_ws.png differ diff --git a/Figures/Guu_ws.svg b/Figures/Guu_ws.svg index a06efe6..6ca4d03 100644 Binary files a/Figures/Guu_ws.svg and b/Figures/Guu_ws.svg differ diff --git a/Figures/Guv_ws.pdf b/Figures/Guv_ws.pdf index c44f3b2..ee72a6d 100644 Binary files a/Figures/Guv_ws.pdf and b/Figures/Guv_ws.pdf differ diff --git a/Figures/Guv_ws.png b/Figures/Guv_ws.png index b615949..0661bf5 100644 Binary files a/Figures/Guv_ws.png and b/Figures/Guv_ws.png differ diff --git a/Figures/Guv_ws.svg b/Figures/Guv_ws.svg index cfe8ec3..65bdb48 100644 Binary files a/Figures/Guv_ws.svg and b/Figures/Guv_ws.svg differ diff --git a/Figures/Gvc_loop_gain.pdf b/Figures/Gvc_loop_gain.pdf index adb35f0..2cbb7c2 100644 Binary files a/Figures/Gvc_loop_gain.pdf and b/Figures/Gvc_loop_gain.pdf differ diff --git a/Figures/Gvc_loop_gain.png b/Figures/Gvc_loop_gain.png index 669693e..8b767e5 100644 Binary files a/Figures/Gvc_loop_gain.png and b/Figures/Gvc_loop_gain.png differ diff --git a/Figures/Gvc_loop_gain.svg b/Figures/Gvc_loop_gain.svg index fb4df3a..abaf213 100644 Binary files a/Figures/Gvc_loop_gain.svg and b/Figures/Gvc_loop_gain.svg differ diff --git a/Figures/Gvc_speed.pdf b/Figures/Gvc_speed.pdf index 481786b..18a9a68 100644 Binary files a/Figures/Gvc_speed.pdf and b/Figures/Gvc_speed.pdf differ diff --git a/Figures/Gvc_speed.png b/Figures/Gvc_speed.png index ee33fbf..70dff12 100644 Binary files a/Figures/Gvc_speed.png and b/Figures/Gvc_speed.png differ diff --git a/Figures/Gvc_speed.svg b/Figures/Gvc_speed.svg index 09f77f5..1d6bb8a 100644 Binary files a/Figures/Gvc_speed.svg and b/Figures/Gvc_speed.svg differ diff --git a/Figures/coupling_heavy.pdf b/Figures/coupling_heavy.pdf index 9da6c66..6e3ec02 100644 Binary files a/Figures/coupling_heavy.pdf and b/Figures/coupling_heavy.pdf differ diff --git a/Figures/coupling_heavy.png b/Figures/coupling_heavy.png index 1f091be..d1f5476 100644 Binary files a/Figures/coupling_heavy.png and b/Figures/coupling_heavy.png differ diff --git a/Figures/coupling_heavy.svg b/Figures/coupling_heavy.svg index 5e8ff74..1a44eb0 100644 Binary files a/Figures/coupling_heavy.svg and b/Figures/coupling_heavy.svg differ diff --git a/Figures/coupling_light.pdf b/Figures/coupling_light.pdf index 6cdb5ca..88bf074 100644 Binary files a/Figures/coupling_light.pdf and b/Figures/coupling_light.pdf differ diff --git a/Figures/coupling_light.png b/Figures/coupling_light.png index 4250708..e826d16 100644 Binary files a/Figures/coupling_light.png and b/Figures/coupling_light.png differ diff --git a/Figures/coupling_light.svg b/Figures/coupling_light.svg index 8d3d338..f3cb8d3 100644 Binary files a/Figures/coupling_light.svg and b/Figures/coupling_light.svg differ diff --git a/Figures/coupling_ratio_light_heavy.pdf b/Figures/coupling_ratio_light_heavy.pdf index ae5c7c7..5d269da 100644 Binary files a/Figures/coupling_ratio_light_heavy.pdf and b/Figures/coupling_ratio_light_heavy.pdf differ diff --git a/Figures/coupling_ratio_light_heavy.png b/Figures/coupling_ratio_light_heavy.png index d4a272f..795a199 100644 Binary files a/Figures/coupling_ratio_light_heavy.png and b/Figures/coupling_ratio_light_heavy.png differ diff --git a/Figures/coupling_ratio_light_heavy.svg b/Figures/coupling_ratio_light_heavy.svg index e7c9ddc..8019f0f 100644 Binary files a/Figures/coupling_ratio_light_heavy.svg and b/Figures/coupling_ratio_light_heavy.svg differ diff --git a/Figures/poles_w_pz.pdf b/Figures/poles_w_pz.pdf index e346f5c..91be03d 100644 Binary files a/Figures/poles_w_pz.pdf and b/Figures/poles_w_pz.pdf differ diff --git a/Figures/poles_w_pz.png b/Figures/poles_w_pz.png index db1f7eb..d479e87 100644 Binary files a/Figures/poles_w_pz.png and b/Figures/poles_w_pz.png differ diff --git a/Figures/poles_w_pz.svg b/Figures/poles_w_pz.svg index 61b70dd..3f043e4 100644 Binary files a/Figures/poles_w_pz.svg and b/Figures/poles_w_pz.svg differ diff --git a/Figures/poles_w_vc.pdf b/Figures/poles_w_vc.pdf index 85e514d..6eb4cdc 100644 Binary files a/Figures/poles_w_vc.pdf and b/Figures/poles_w_vc.pdf differ diff --git a/Figures/poles_w_vc.png b/Figures/poles_w_vc.png index b11dd02..25f1f25 100644 Binary files a/Figures/poles_w_vc.png and b/Figures/poles_w_vc.png differ diff --git a/Figures/poles_w_vc.svg b/Figures/poles_w_vc.svg index ddf24fb..7661edc 100644 Binary files a/Figures/poles_w_vc.svg and b/Figures/poles_w_vc.svg differ diff --git a/mat/parameters.mat b/mat/parameters.mat index d366ef2..6dd25b7 100644 Binary files a/mat/parameters.mat and b/mat/parameters.mat differ diff --git a/rotating_frame.org b/rotating_frame.org index 37c22d6..f1b04d6 100644 --- a/rotating_frame.org +++ b/rotating_frame.org @@ -21,22 +21,23 @@ #+PROPERTY: header-args:matlab+ :exports both #+PROPERTY: header-args:matlab+ :eval no-export #+PROPERTY: header-args:matlab+ :output-dir Figures +#+PROPERTY: header-args:matlab+ :mkdirp yes :END: * Introduction The objective of this note it to highlight some control problems that arises when controlling the position of an object using actuators that are rotating with respect to a fixed reference frame. -In section [[sec:system]], a simple system composed of a spindle and a translation stage is defined and the equations of motion are written. +In section ref:sec:system, a simple system composed of a spindle and a translation stage is defined and the equations of motion are written. The rotation induces some coupling between the actuators and their displacement, and modifies the dynamics of the system. This is studied using the equations, and some numerical computations are used to compare the use of voice coil and piezoelectric actuators. -Then, in section [[sec:control_strategies]], two different control approach are compared where: +Then, in section ref:sec:control_strategies, two different control approach are compared where: - the measurement is made in the fixed frame - the measurement is made in the rotating frame -In section [[sec:simscape]], the analytical study will be validated using a multi body model of the studied system. +In section ref:sec:simscape, the analytical study will be validated using a multi body model of the studied system. -Finally, in section [[sec:control]], the control strategies are implemented using Simulink and Simscape and compared. +Finally, in section ref:sec:control, the control strategies are implemented using Simulink and Simscape and compared. * System Description and Analysis :PROPERTIES: @@ -44,7 +45,7 @@ Finally, in section [[sec:control]], the control strategies are implemented usin :END: <> ** System description -The system consists of one 2 degree of freedom translation stage on top of a spindle (figure [[fig:rotating_frame_2dof]]). +The system consists of one 2 degree of freedom translation stage on top of a spindle (figure ref:fig:rotating_frame_2dof). The control inputs are the forces applied by the actuators of the translation stage ($F_u$ and $F_v$). As the translation stage is rotating around the Z axis due to the spindle, the forces are applied along $u$ and $v$. @@ -71,7 +72,7 @@ Indices $u$ and $v$ corresponds to signals in the rotating reference frame ($\ve ** Equations <> -Based on the figure [[fig:rotating_frame_2dof]], we can write the equations of motion of the system. +Based on the figure ref:fig:rotating_frame_2dof, we can write the equations of motion of the system. Let's express the kinetic energy $T$ and the potential energy $V$ of the mass $m$: #+name: eq:energy_inertial_frame @@ -226,7 +227,7 @@ First we will determine the value for Euler and Coriolis forces during regular e Fcheavy = 2*mheavy*ddot*wheavy; #+end_src -The obtained values are displayed in table [[tab:euler_coriolis]]. +The obtained values are displayed in table ref:tab:euler_coriolis. #+begin_src matlab :results value table :exports results :post addhdr(*this*) data = [Fclight, Fcheavy ; @@ -250,7 +251,7 @@ The negative stiffness due to the rotation is equal to $-m{\omega_0}^2$. Kheavy = mheavy*wheavy^2; #+end_src -The values for the negative spring effect are displayed in table [[tab:negative_spring]]. +The values for the negative spring effect are displayed in table ref:tab:negative_spring. This is definitely negligible when using piezoelectric actuators. It may not be the case when using voice coil actuators. @@ -267,12 +268,12 @@ This is definitely negligible when using piezoelectric actuators. It may not be | Neg. Spring | 1381.7[N/m] | 0.9[N/m] | ** Limitations due to coupling -To simplify, we consider a constant rotating speed $\dot{\theta} = {\omega_0}$ and thus $\ddot{\theta} = 0$. +To simplify, we consider a constant rotating speed $\dot{\theta} = \omega_0$ and thus $\ddot{\theta} = 0$. -From equations [[eq:du_coupled]] and [[eq:dv_coupled]], we obtain: - \begin{align*} - (m s^2 + (k - m{\omega_0}^2)) d_u &= F_u + 2 m {\omega_0} s d_v \\ - (m s^2 + (k - m{\omega_0}^2)) d_v &= F_v - 2 m {\omega_0} s d_u \\ +From equations eqref:eq:du_coupled and eqref:eq:dv_coupled, we obtain: +\begin{align*} + (m s^2 + (k - m{\omega_0}^2)) d_u &= F_u + 2 m {\omega_0} s d_v \\ + (m s^2 + (k - m{\omega_0}^2)) d_v &= F_v - 2 m {\omega_0} s d_u \\ \end{align*} From second equation: @@ -311,8 +312,8 @@ Then, coupling is negligible if $|-m \omega^2 + (k - m{\omega_0}^2)| \gg |2 m {\ *** Numerical Analysis We plot on the same graph $\frac{|-m \omega^2 + (k - m {\omega_0}^2)|}{|2 m \omega_0 \omega|}$ for the voice coil and the piezo: -- with the light sample (figure [[fig:coupling_light]]). -- with the heavy sample (figure [[fig:coupling_heavy]]). +- with the light sample (figure ref:fig:coupling_light). +- with the heavy sample (figure ref:fig:coupling_heavy). #+begin_src matlab :exports none :results silent f = logspace(-1, 3, 1000); @@ -330,9 +331,8 @@ We plot on the same graph $\frac{|-m \omega^2 + (k - m {\omega_0}^2)|}{|2 m \ome #+end_src #+NAME: fig:coupling_light -#+HEADER: :var filepath="Figures/coupling_light.pdf" :var figsize="normal-normal" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file coupling_light.pdf :post pdf2svg(file=*this*, ext="png") +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/coupling_light.pdf" :var figsize="normal-normal" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -354,9 +354,8 @@ We plot on the same graph $\frac{|-m \omega^2 + (k - m {\omega_0}^2)|}{|2 m \ome #+end_src #+NAME: fig:coupling_heavy -#+HEADER: :var filepath="Figures/coupling_heavy.pdf" :var figsize="normal-normal" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file coupling_heavy.pdf :post pdf2svg(file=*this*, ext="png") +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/coupling_heavy.pdf" :var figsize="normal-normal" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -372,7 +371,7 @@ Coupling is higher for actuators with small stiffness. ** Limitations due to negative stiffness effect If $\max{\dot{\theta}} \ll \sqrt{\frac{k}{m}}$, then the negative spring effect is negligible and $k - m\dot{\theta}^2 \approx k$. -Let's estimate what is the maximum rotation speed for which the negative stiffness effect is still negligible ($\omega_\text{max} = 0.1 \sqrt{\frac{k}{m}}$). Results are shown table [[tab:negative_stiffness]]. +Let's estimate what is the maximum rotation speed for which the negative stiffness effect is still negligible ($\omega_\text{max} = 0.1 \sqrt{\frac{k}{m}}$). Results are shown table ref:tab:negative_stiffness. #+begin_src matlab :results table :exports results :post addhdr(*this*) data = 0.1*60*(1/2/pi)*[sqrt(kvc/mlight), sqrt(kpz/mlight); sqrt(kvc/mheavy), sqrt(kpz/mheavy)]; @@ -396,7 +395,7 @@ The system dynamics will be much more affected when using soft actuator. The system can even goes unstable when $m \omega^2 > k$, that is when the centrifugal forces are higher than the forces due to stiffness. -From this analysis, we can determine the lowest practical stiffness that is possible to use: $k_\text{min} = 10 m \omega^2$ (table [[tab:min_k]]) +From this analysis, we can determine the lowest practical stiffness that is possible to use: $k_\text{min} = 10 m \omega^2$ (table sec:tab:min_k) #+begin_src matlab :results table :exports results :post addhdr(*this*) data = 10*[mlight*2*pi, mheavy*2*pi/60] @@ -411,7 +410,7 @@ From this analysis, we can determine the lowest practical stiffness that is poss | k min [N/m] | 2199 | 89 | ** Effect of rotation speed on the plant -As shown in equation [[eq:coupledplant]], the plant changes with the rotation speed $\omega_0$. +As shown in equation eqref:eq:coupledplant, the plant changes with the rotation speed $\omega_0$. Then, we compute the bode plot of the direct term and coupling term for multiple rotating speed. @@ -465,9 +464,8 @@ Then we compare the result between voice coil and piezoelectric actuators. #+end_src #+NAME: fig:G_ws_vc -#+HEADER: :var filepath="Figures/G_ws_vc.pdf" :var figsize="wide-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file G_ws_vc.pdf :post pdf2svg(file=*this*, ext="png") +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/G_ws_vc.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -508,9 +506,8 @@ Then we compare the result between voice coil and piezoelectric actuators. #+end_src #+NAME: fig:Gc_ws_vc -#+HEADER: :var filepath="Figures/Gc_ws_vc.pdf" :var figsize="wide-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file Gc_ws_vc.pdf :post pdf2svg(file=*this*, ext="png") +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/Gc_ws_vc.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -567,9 +564,8 @@ Then we compare the result between voice coil and piezoelectric actuators. #+end_src #+NAME: fig:G_ws_pz -#+HEADER: :var filepath="Figures/G_ws_pz.pdf" :var figsize="wide-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file G_ws_pz.pdf :post pdf2svg(file=*this*, ext="png") +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/G_ws_pz.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -607,9 +603,8 @@ Then we compare the result between voice coil and piezoelectric actuators. #+end_src #+NAME: fig:Gc_ws_pz -#+HEADER: :var filepath="Figures/Gc_ws_pz.pdf" :var figsize="wide-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file Gc_ws_pz.pdf :post pdf2svg(file=*this*, ext="png") +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/Gc_ws_pz.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -664,11 +659,11 @@ The poles of the system are computed for multiple values of the rotation frequen end #+end_src -We then plot the real and imaginary part of the poles as a function of the rotation frequency (figures [[fig:poles_w_vc]] and [[fig:poles_w_pz]]). +We then plot the real and imaginary part of the poles as a function of the rotation frequency (figures ref:fig:poles_w_vc and ref:fig:poles_w_pz). When the real part of one pole becomes positive, the system goes unstable. -For the voice coil (figure [[fig:poles_w_vc]]), the system is unstable when the rotation speed is above 5 rad/s. The real and imaginary part of the poles of the system with piezoelectric actuators are changing much less (figure [[fig:poles_w_pz]]). +For the voice coil (figure ref:fig:poles_w_vc), the system is unstable when the rotation speed is above 5 rad/s. The real and imaginary part of the poles of the system with piezoelectric actuators are changing much less (figure ref:fig:poles_w_pz). #+begin_src matlab :results silent :exports none figure; @@ -697,9 +692,8 @@ For the voice coil (figure [[fig:poles_w_vc]]), the system is unstable when the #+end_src #+NAME: fig:poles_w_vc -#+HEADER: :var filepath="Figures/poles_w_vc.pdf" :var figsize="wide-tall" #+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file poles_w_vc.pdf :post pdf2svg(file=*this*, ext="png") +#+begin_src matlab :var filepath="Figures/poles_w_vc.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -736,9 +730,8 @@ For the voice coil (figure [[fig:poles_w_vc]]), the system is unstable when the #+end_src #+NAME: fig:poles_w_pz -#+HEADER: :var filepath="Figures/poles_w_pz.pdf" :var figsize="wide-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file poles_w_pz.pdf :post pdf2svg(file=*this*, ext="png") +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/poles_w_pz.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -760,7 +753,7 @@ The position error $[\epsilon_x, \epsilon_y]$ is then express in the rotating fr Finally, the control low $K$ links the position errors $[\epsilon_u, \epsilon_v]$ to the actuator forces $[F_u, F_v]$. -The block diagram is shown on figure [[fig:control_measure_fixed_2dof]]. +The block diagram is shown on figure ref:fig:control_measure_fixed_2dof. #+name: fig:control_measure_fixed_2dof #+caption: Control with a measure from fixed frame @@ -773,7 +766,7 @@ One question we wish to answer is: is $G(\theta) J(\theta) = G(\theta_0) J(\thet ** Measurement in the rotating frame Let's consider that the measurement is made in the rotating reference frame. -The corresponding block diagram is shown figure [[fig:control_measure_rotating_2dof]] +The corresponding block diagram is shown figure ref:fig:control_measure_rotating_2dof #+name: fig:control_measure_rotating_2dof #+caption: Control with a measure from rotating frame @@ -790,7 +783,19 @@ The loop gain is $L = G K$. ** Initialization #+begin_src matlab :exports none :results silent :noweb yes <> + load('./mat/parameters.mat'); + + bode_opts = bodeoptions; + bode_opts.FreqUnits = 'Hz'; + bode_opts.MagUnits = 'abs'; + bode_opts.MagScale = 'log'; + bode_opts.Grid = 'on'; + bode_opts.PhaseVisible = 'off'; + bode_opts.Title.FontSize = 10; + bode_opts.XLabel.FontSize = 10; + bode_opts.YLabel.FontSize = 10; + bode_opts.TickLabel.FontSize = 10; #+end_src #+begin_src matlab :exports none :results silent @@ -882,9 +887,9 @@ Then we identify the system with an heavy mass and low speed. ** Coupling ratio between $f_{uv}$ and $d_{uv}$ In order to validate the equations written, we can compute the coupling ratio using the simscape model and compare with the equations. -From the previous identification, we plot the coupling ratio in both case (figure [[fig:coupling_ratio_light_heavy]]). +From the previous identification, we plot the coupling ratio in both case (figure ref:fig:coupling_ratio_light_heavy). -We obtain the same result than the analytical case (figures [[fig:coupling_light]] and [[fig:coupling_heavy]]). +We obtain the same result than the analytical case (figures ref:fig:coupling_light and ref:fig:coupling_heavy). #+begin_src matlab :results silent :exports none figure; hold on; @@ -897,18 +902,17 @@ We obtain the same result than the analytical case (figures [[fig:coupling_light xlim([freqs(1), freqs(end)]); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); xlabel('Frequency [Hz]'); ylabel('Coupling ratio'); - legend({'light - VC', 'light - PZ', 'heavy - VC', 'heavy - PZ'}) + legend({'light - VC', 'light - PZ', 'heavy - VC', 'heavy - PZ'}, 'Location', 'northeast') #+end_src #+NAME: fig:coupling_ratio_light_heavy -#+HEADER: :var filepath="Figures/coupling_ratio_light_heavy.pdf" :var figsize="wide-tall" #+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file coupling_ratio_light_heavy.pdf :post pdf2svg(file=*this*, ext="png") +#+begin_src matlab :var filepath="Figures/coupling_ratio_light_heavy.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+LABEL: fig:coupling_ratio_light_heavy -#+CAPTION: caption +#+CAPTION: Coupling ratio obtained with the Simscape model #+RESULTS: fig:coupling_ratio_light_heavy [[file:Figures/coupling_ratio_light_heavy.png]] @@ -936,7 +940,7 @@ First, we identify the system when the rotation speed is null and then when the The actuators are voice coil with some damping added. -The bode plot of the system not rotating and rotating at 60rpm is shown figure [[fig:Gvc_speed]]. +The bode plot of the system not rotating and rotating at 60rpm is shown figure ref:fig:Gvc_speed. #+begin_src matlab :exports none :results silent w = 0; % Rotation speed [rad/s] @@ -962,208 +966,25 @@ The bode plot of the system not rotating and rotating at 60rpm is shown figure [ #+begin_src matlab :exports none :results silent figure; - bode(Gvc, Gtvc) + bode(Gvc, Gtvc, bode_opts) legend({'Gvc - $\omega = 0$', 'Gvc - $\omega = 60$rpm'}, 'Location', 'southwest'); + title(''); #+end_src #+NAME: fig:Gvc_speed -#+HEADER: :var filepath="Figures/Gvc_speed.pdf" :var figsize="full-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file Gvc_speed.pdf :post pdf2svg(file=*this*, ext="png") +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/Gvc_speed.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src #+LABEL: fig:Gvc_speed -#+CAPTION: Bode plot of the system not rotating and rotating at 60rmp - Voice coil and light sample +#+CAPTION: Change of transfer functions due to rotating speed #+RESULTS: fig:Gvc_speed [[file:Figures/Gvc_speed.png]] -*** Controller design -We design a controller based on the identification when the system is not rotating. - -#+begin_src matlab :results none :exports code - sisotool(Gvc('Du', 'fu')) -#+end_src - -The controller is a lead-lag controller with the following transfer function. -#+begin_src matlab :results none :exports code - Kll = 2.0698e09*(s+40.45)*(s+1.181)/(s*(s+198.4)*(s+2790)); - K = [Kll 0; - 0 Kll]; -#+end_src - -The loop gain is displayed figure [[fig:Gvc_loop_gain]]. - -#+begin_src matlab :exports none :results silent - freqs = logspace(-2, 2, 1000); - - figure; - % Amplitude - ax1 = subaxis(2,1,1); - hold on; - plot(freqs, abs(squeeze(freqresp(Gvc('Du', 'fu')*Kll, freqs, 'Hz'))), '-'); - set(gca,'xscale','log'); set(gca,'yscale','log'); - ylabel('Amplitude [m/N]'); - set(gca, 'XTickLabel',[]); - hold off; - % Phase - ax2 = subaxis(2,1,2); - hold on; - plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gvc('Du', 'fu')*Kll, freqs, 'Hz')))), '-'); - set(gca,'xscale','log'); - yticks(-180:180:180); - ylim([-180 180]); - xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); - hold off; - linkaxes([ax1,ax2],'x'); -#+end_src - -#+NAME: fig:Gvc_loop_gain -#+HEADER: :var filepath="Figures/Gvc_loop_gain.pdf" :var figsize="full-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file Gvc_loop_gain.pdf :post pdf2svg(file=*this*, ext="png") - <> -#+end_src - -#+LABEL: fig:Gvc_loop_gain -#+CAPTION: Loop gain obtained for a lead-lag controller on the system with a voice coil -#+RESULTS: fig:Gvc_loop_gain -[[file:Figures/Gvc_loop_gain.png]] - -*** Controlling the rotating system -We here want to see if the system is robust with respect to the rotation speed. We then use the controller based on the non-rotating system, and see if the system is stable and its dynamics. - -We can then plot the same loop gain with the rotating system using the same controller (figure [[fig:Gtvc_loop_gain]]). The result obtained is unstable. - -#+begin_src matlab :exports none :results silent - freqs = logspace(-2, 2, 1000); - - figure; - % Amplitude - ax1 = subaxis(2,1,1); - hold on; - plot(freqs, abs(squeeze(freqresp(Gtvc('Du', 'fu')*Kll, freqs, 'Hz'))), '-'); - set(gca,'xscale','log'); set(gca,'yscale','log'); - ylabel('Amplitude [m/N]'); - set(gca, 'XTickLabel',[]); - hold off; - % Phase - ax2 = subaxis(2,1,2); - hold on; - plot(freqs, 180/pi*angle(squeeze(freqresp(Gtvc('Du', 'fu')*Kll, freqs, 'Hz'))), '-'); - set(gca,'xscale','log'); - yticks(-180:180:180); - ylim([-180 180]); - xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); - hold off; - linkaxes([ax1,ax2],'x'); -#+end_src - -#+NAME: fig:Gtvc_loop_gain -#+HEADER: :var filepath="Figures/Gtvc_loop_gain.pdf" :var figsize="full-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file Gtvc_loop_gain.pdf :post pdf2svg(file=*this*, ext="png") - <> -#+end_src - -#+LABEL: fig:Gtvc_loop_gain -#+CAPTION: Loop gain with the rotating system -#+RESULTS: fig:Gtvc_loop_gain -[[file:Figures/Gtvc_loop_gain.png]] - -We can look at the poles of the system where we control only one direction ($u$ for instance). We obtain a pole with a positive real part. -#+begin_src matlab :results table :exports both - pole(feedback(Gtvc, blkdiag(Kll, 0))) -#+end_src - -#+RESULTS: -| -2798 | -| -58.906+94.246i | -| -58.906-94.246i | -| -71.654 | -| 3.1648 | -| -3.3031 | -| -1.1902 | - -However, when we look at the poles of the closed loop with a diagonal controller, all the poles have negative real part and the system is stable. -#+begin_src matlab :results table :exports both - pole(feedback(Gtvc, blkdiag(Kll, Kll))) -#+end_src - -#+RESULTS: -| -2798+0.035765i | -| -2798-0.035765i | -| -56.406+105.34i | -| -56.406-105.34i | -| -64.482+79.308i | -| -64.482-79.308i | -| -68.521+13.503i | -| -68.521-13.503i | -| -1.1837+0.0041777i | -| -1.1837-0.0041777i | - -*** Close loop performance -First, we create the closed loop systems. Then, we plot the transfer function from the reference signals $[\epsilon_u, \epsilon_v]$ to the output $[d_u, d_v]$ (figure [[fig:perfcomp]]). -#+begin_src matlab :results none :exports code - K.InputName = 'e'; - K.OutputName = 'u'; - - Gtvc.InputName = 'u'; - Gtvc.OutputName = 'y'; - - Gvc.InputName = 'u'; - Gvc.OutputName = 'y'; - - Sum = sumblk('e = r-y', 2); - - Tvc = connect(Gvc, K, Sum, 'r', 'y'); - Ttvc = connect(Gtvc, K, Sum, 'r', 'y'); -#+end_src - -#+begin_src matlab :results none :exports code - freqs = logspace(-2, 2, 1000); - - figure; - ax1 = subplot(1,2,1); - hold on; - plot(freqs, abs(squeeze(freqresp(Tvc(1, 1), freqs, 'Hz')))); - plot(freqs, abs(squeeze(freqresp(Ttvc(1, 1), freqs, 'Hz')))); - hold off; - xlim([freqs(1), freqs(end)]); - set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); - xlabel('Frequency [Hz]'); ylabel('Magnitude [m/N]'); - legend({'w = 0 [rpm]', 'w = 60 [rpm]'}, 'Location', 'southwest') - title('$G_{r_u \to d_u}$') - - ax2 = subplot(1,2,2); - hold on; - plot(freqs, abs(squeeze(freqresp(Tvc(1, 2), freqs, 'Hz')))); - plot(freqs, abs(squeeze(freqresp(Ttvc(1, 2), freqs, 'Hz')))); - hold off; - xlim([freqs(1), freqs(end)]); - ylim([1e-5, 1]); - set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); - xlabel('Frequency [Hz]'); - title('$G_{r_u \to d_v}$') - - linkaxes([ax1,ax2],'x'); -#+end_src - -#+NAME: fig:perfconp -#+HEADER: :var filepath="Figures/perfconp.pdf" :var figsize="full-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file perfconp.pdf :post pdf2svg(file=*this*, ext="png") - <> -#+end_src - -#+LABEL: fig:perfconp -#+CAPTION: Close loop performance for $\omega = 0$ and $\omega = 60 rpm$ -#+RESULTS: fig:perfconp -[[file:Figures/perfconp.png]] - *** Effect of rotation speed We first identify the system (voice coil and light mass) for multiple rotation speed. -Then we compute the bode plot of the diagonal element (figure [[fig:Guu_ws]]) and of the coupling element (figure [[fig:Guv_ws]]). +Then we compute the bode plot of the diagonal element (figure ref:fig:Guu_ws) and of the coupling element (figure ref:fig:Guv_ws). As the rotation frequency increases: - one pole goes to lower frequencies while the other goes to higher frequencies @@ -1218,9 +1039,8 @@ To stabilize the unstable pole, we need a control bandwidth of at least twice of #+end_src #+NAME: fig:Guu_ws -#+HEADER: :var filepath="Figures/Guu_ws.pdf" :var figsize="full-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file Guu_ws.pdf :post pdf2svg(file=*this*, ext="png") +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/Guu_ws.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -1261,9 +1081,8 @@ To stabilize the unstable pole, we need a control bandwidth of at least twice of #+end_src #+NAME: fig:Guv_ws -#+HEADER: :var filepath="Figures/Guv_ws.pdf" :var figsize="full-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file Guv_ws.pdf :post pdf2svg(file=*this*, ext="png") +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/Guv_ws.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -1272,7 +1091,7 @@ To stabilize the unstable pole, we need a control bandwidth of at least twice of #+RESULTS: fig:Guv_ws [[file:Figures/Guv_ws.png]] -Then, we can look at the same plots for the piezoelectric actuator (figure [[fig:Guu_ws_pz]]). The effect of the rotation frequency has very little effect on the dynamics of the system to control. +Then, we can look at the same plots for the piezoelectric actuator (figure ref:fig:Guu_ws_pz). The effect of the rotation frequency has very little effect on the dynamics of the system to control. #+begin_src matlab :exports none :results silent ws = linspace(0, 2*pi, 5); % Rotation speed vector [rad/s] @@ -1320,9 +1139,8 @@ Then, we can look at the same plots for the piezoelectric actuator (figure [[fig #+end_src #+NAME: fig:Guu_ws_pz -#+HEADER: :var filepath="Figures/Guu_ws_pz.pdf" :var figsize="full-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file Guu_ws_pz.pdf :post pdf2svg(file=*this*, ext="png") +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/Guu_ws_pz.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -1331,6 +1149,202 @@ Then, we can look at the same plots for the piezoelectric actuator (figure [[fig #+RESULTS: fig:Guu_ws_pz [[file:Figures/Guu_ws_pz.png]] +*** Controller design +We design a controller based on the identification when the system is not rotating. + +The obtained controller is a lead-lag controller with the following transfer function. +#+begin_src matlab :results none :exports code + Kll = 2.0698e09*(s+40.45)*(s+1.181)/((s+0.01)*(s+198.4)*(s+2790)); + K = [Kll 0; + 0 Kll]; +#+end_src + +The loop gain is displayed figure ref:fig:Gvc_loop_gain. + +#+begin_src matlab :exports none :results silent + freqs = logspace(-2, 2, 1000); + + figure; + % Amplitude + ax1 = subaxis(2,1,1); + hold on; + plot(freqs, abs(squeeze(freqresp(Gvc('Du', 'fu')*Kll, freqs, 'Hz'))), '-'); + set(gca,'xscale','log'); set(gca,'yscale','log'); + ylabel('Amplitude [m/N]'); + set(gca, 'XTickLabel',[]); + hold off; + % Phase + ax2 = subaxis(2,1,2); + hold on; + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gvc('Du', 'fu')*Kll, freqs, 'Hz')))), '-'); + set(gca,'xscale','log'); + yticks(-180:180:180); + ylim([-180 180]); + xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); + hold off; + linkaxes([ax1,ax2],'x'); +#+end_src + +#+NAME: fig:Gvc_loop_gain +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/Gvc_loop_gain.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+LABEL: fig:Gvc_loop_gain +#+CAPTION: Loop gain obtained for a lead-lag controller on the system with a voice coil +#+RESULTS: fig:Gvc_loop_gain +[[file:Figures/Gvc_loop_gain.png]] + +*** Controlling the rotating system +We here want to see if the system is robust with respect to the rotation speed. We then use the controller based on the non-rotating system, and see if the system is stable and its dynamics. + +We can then plot the same loop gain with the rotating system using the same controller (figure ref:fig:Gtvc_loop_gain). The result obtained is unstable. + +#+begin_src matlab :exports none :results silent + freqs = logspace(-2, 2, 1000); + + figure; + % Amplitude + ax1 = subaxis(2,1,1); + hold on; + plot(freqs, abs(squeeze(freqresp(Gtvc('Du', 'fu')*Kll, freqs, 'Hz'))), '-'); + set(gca,'xscale','log'); set(gca,'yscale','log'); + ylabel('Amplitude [m/N]'); + set(gca, 'XTickLabel',[]); + hold off; + % Phase + ax2 = subaxis(2,1,2); + hold on; + plot(freqs, 180/pi*angle(squeeze(freqresp(Gtvc('Du', 'fu')*Kll, freqs, 'Hz'))), '-'); + set(gca,'xscale','log'); + yticks(-180:180:180); + ylim([-180 180]); + xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); + hold off; + linkaxes([ax1,ax2],'x'); +#+end_src + +#+NAME: fig:Gtvc_loop_gain +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/Gtvc_loop_gain.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+LABEL: fig:Gtvc_loop_gain +#+CAPTION: Loop gain with the rotating system +#+RESULTS: fig:Gtvc_loop_gain +[[file:Figures/Gtvc_loop_gain.png]] + +We can look at the poles of the system where we control only one direction ($u$ for instance). We obtain a pole with a positive real part. + +#+begin_important + The system is then unstable when controlling only one direction. +#+end_important + +#+begin_src matlab :results table :exports both + pole(feedback(Gtvc, blkdiag(Kll, 0))) +#+end_src + +#+RESULTS: +| -2798 | +| -58.916+94.248i | +| -58.916-94.248i | +| -71.644 | +| 3.1647 | +| -3.3034 | +| -1.1901 | + +However, when we look at the poles of the closed loop with a diagonal controller, all the poles have negative real part and the system is stable. +#+begin_src matlab :results table :exports both + pole(feedback(Gtvc, blkdiag(Kll, Kll))) +#+end_src + +#+RESULTS: +| -2798+0.035765i | +| -2798-0.035765i | +| -56.414+105.34i | +| -56.414-105.34i | +| -64.495+79.314i | +| -64.495-79.314i | +| -68.509+13.499i | +| -68.509-13.499i | +| -1.1837+0.0041422i | +| -1.1837-0.0041422i | + +Check stability of MIMO system. +#+begin_src matlab :result silent + isstable(1/(1+K*Gtvc)) + isstable(Gtvc/(1+K*Gtvc)) + isstable(Gtvc/(1+K*Gtvc)) +#+end_src + +#+RESULTS: +: 0 + +*** Close loop performance +First, we create the closed loop systems. Then, we plot the transfer function from the reference signals $[\epsilon_u, \epsilon_v]$ to the output $[d_u, d_v]$ (figure ref:fig:perfcomp). + +#+begin_src matlab :results none :exports code + S = eye(2)/(eye(2) + Gvc*K); + T = Gvc*K /(eye(2) + Gvc*K); + + St = eye(2)/(eye(2) + Gtvc*K); + Tt = Gtvc*K/(eye(2) + Gtvc*K); + + freqs = logspace(-3, 3, 1000); +#+end_src + +#+begin_src matlab :results none :exports code + figure; + bode(S, St, 2*pi*freqs, bode_opts) +#+end_src + +#+begin_src matlab :results none :exports code + figure; + bode(T, Tt, 2*pi*freqs, bode_opts) +#+end_src + +#+begin_src matlab :results none :exports code + freqs = logspace(-2, 2, 1000); + + figure; + ax1 = subplot(1,2,1); + hold on; + plot(freqs, abs(squeeze(freqresp(Tvc(1, 1), freqs, 'Hz')))); + plot(freqs, abs(squeeze(freqresp(Ttvc(1, 1), freqs, 'Hz')))); + hold off; + xlim([freqs(1), freqs(end)]); + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + xlabel('Frequency [Hz]'); ylabel('Magnitude [m/N]'); + legend({'w = 0 [rpm]', 'w = 60 [rpm]'}, 'Location', 'southwest') + title('$G_{r_u \to d_u}$') + + ax2 = subplot(1,2,2); + hold on; + plot(freqs, abs(squeeze(freqresp(Tvc(1, 2), freqs, 'Hz')))); + plot(freqs, abs(squeeze(freqresp(Ttvc(1, 2), freqs, 'Hz')))); + hold off; + xlim([freqs(1), freqs(end)]); + ylim([1e-5, 1]); + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + xlabel('Frequency [Hz]'); + title('$G_{r_u \to d_v}$') + + linkaxes([ax1,ax2],'x'); +#+end_src + +#+NAME: fig:perfconp +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/perfconp.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+LABEL: fig:perfconp +#+CAPTION: Close loop performance for $\omega = 0$ and $\omega = 60 rpm$ +#+RESULTS: fig:perfconp +[[file:Figures/perfconp.png]] + ** Plant Control - MIMO approach *** TODO Analysis - SVD \[ G = U \Sigma V^H \] @@ -1340,7 +1354,7 @@ With: - $U$ is an $2 \times 2$ unitary matrix. The columns vectors of $U$, denoted $u_i$, represent the *output directions* of the plant. They are orthonomal - $V$ is an $2 \times 2$ unitary matrix. The columns vectors of $V$, denoted $v_i$, represent the *input directions* of the plant. They are orthonomal -We first look at the evolution of the singular values as a function of frequency (figure [[fig:G_sigma]]). +We first look at the evolution of the singular values as a function of frequency (figure ref:fig:G_sigma). #+begin_src matlab :exports none :results silent ws = linspace(0, 2*pi, 5); % Rotation speed vector [rad/s] m = mlight; % mass of the sample [kg] @@ -1386,9 +1400,8 @@ We first look at the evolution of the singular values as a function of frequency #+end_src #+NAME: fig:G_sigma -#+HEADER: :var filepath="Figures/G_sigma.pdf" :var figsize="full-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file G_sigma.pdf :post pdf2svg(file=*this*, ext="png") +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/G_sigma.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -1498,9 +1511,8 @@ So, if we consider an input in the direction $v_i$, then the output is in the di #+end_src #+NAME: fig:coupling_simscape -#+HEADER: :var filepath="Figures/coupling_simscape.pdf" :var figsize="full-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file coupling_simscape.pdf :post pdf2svg(file=*this*, ext="png") +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/coupling_simscape.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -1535,9 +1547,8 @@ And then with the heavy sample. #+end_src #+NAME: fig:coupling_simscape_heavy -#+HEADER: :var filepath="Figures/coupling_simscape_heavy.pdf" :var figsize="full-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file coupling_simscape_heavy.pdf :post pdf2svg(file=*this*, ext="png") +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/coupling_simscape_heavy.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -1562,9 +1573,8 @@ Plot the ratio between the main transfer function and the coupling term: #+end_src #+NAME: fig:coupling_ratio_simscape_light -#+HEADER: :var filepath="Figures/coupling_ratio_simscape_light.pdf" :var figsize="wide-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file coupling_ratio_simscape_light.pdf :post pdf2svg(file=*this*, ext="png") +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/coupling_ratio_simscape_light.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -1588,9 +1598,8 @@ Plot the ratio between the main transfer function and the coupling term: #+end_src #+NAME: fig:coupling_ratio_simscape_heavy -#+HEADER: :var filepath="Figures/coupling_ratio_simscape_heavy.pdf" :var figsize="wide-tall" -#+HEADER: :tangle no :exports results :results raw :noweb yes :mkdirp yes -#+begin_src matlab :output-dir Figures :file coupling_ratio_simscape_heavy.pdf :post pdf2svg(file=*this*, ext="png") +#+HEADER: :tangle no :exports results :results raw :noweb yes +#+begin_src matlab :var filepath="Figures/coupling_ratio_simscape_heavy.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") <> #+end_src @@ -1734,17 +1743,6 @@ Finally, we run the linearization. exportFig('G_u_v_to_x_y', 'wide-tall'); #+end_src -** Effect of the rotating Speed - <> - -#+begin_src matlab :exports none :results silent :noweb yes - <> -#+end_src - -*** TODO Use realistic parameters for the mass of the sample and stiffness of the X-Y stage - -*** TODO Check if the plant is changing a lot when we are not turning to when we are turning at the maximum speed (60rpm) - ** Effect of the X-Y stage stiffness <>