Analysis of active damping techniques with simscape model

Some flexibility is added to the sample
This commit is contained in:
Thomas Dehaeze 2019-10-25 16:02:23 +02:00
parent 9e41241e45
commit 8b13893099
37 changed files with 1953 additions and 491 deletions

File diff suppressed because it is too large Load Diff

View File

@ -25,7 +25,7 @@
#+PROPERTY: header-args:matlab+ :exports both #+PROPERTY: header-args:matlab+ :exports both
#+PROPERTY: header-args:matlab+ :eval no-export #+PROPERTY: header-args:matlab+ :eval no-export
#+PROPERTY: header-args:matlab+ :output-dir figs #+PROPERTY: header-args:matlab+ :output-dir figs
#+PROPERTY: header-args:matlab+ :tangle matlab/modal_frf_coh.m #+PROPERTY: header-args:matlab+ :tangle no
#+PROPERTY: header-args:matlab+ :mkdirp yes #+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:shell :eval no-export #+PROPERTY: header-args:shell :eval no-export
@ -41,79 +41,8 @@
#+PROPERTY: header-args:latex+ :output-dir figs #+PROPERTY: header-args:latex+ :output-dir figs
:END: :END:
* Analysis of the nano-hexapod transfer functions :noexport:
** 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)
<<matlab-dir>>
#+end_src
#+begin_src matlab :exports none :results silent :noweb yes
<<matlab-init>>
#+end_src
#+begin_src matlab :tangle no
simulinkproject('../');
#+end_src
** Init
#+begin_src matlab
%% Initialize Ground
initializeGround();
%% Initialize Granite
initializeGranite(struct('rigid', false));
%% Initialize Translation stage
initializeTy(struct('rigid', false));
%% Initialize Tilt Stage
initializeRy(struct('rigid', false));
%% Initialize Spindle
initializeRz(struct('rigid', false));
%% Initialize Hexapod Symétrie
initializeMicroHexapod(struct('rigid', false));
%% Initialize Center of gravity compensation
initializeAxisc();
%% Initialize the mirror
initializeMirror();
%% Initialize the Nano Hexapod
initializeNanoHexapod(struct('actuator', 'piezo'));
%% Initialize the Sample
initializeSample(struct('mass', 50));
#+end_src
#+begin_src matlab
K = tf(zeros(6));
save('./mat/controllers.mat', 'K', '-append');
K_iff = tf(zeros(6));
save('./mat/controllers.mat', 'K_iff', '-append');
#+end_src
** Identification
#+begin_src matlab
G = identifyPlant();
#+end_src
** Force Sensor
#+begin_src matlab
figure;
hold on;
for i=1:6
plot(freqs, abs(squeeze(freqresp(G.G_iff(['Fm', num2str(i)], ['F', num2str(i)]), freqs, 'Hz'))));
end
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [N/N]'); xlabel('Frequency [Hz]');
#+end_src
* Introduction :ignore: * Introduction :ignore:
First, in section [[sec:undamped]], we will looked at the undamped system. First, in section [[sec:undamped_system]], we will looked at the undamped system.
Then, we will compare three active damping techniques: Then, we will compare three active damping techniques:
- In section [[sec:iff]]: the integral force feedback is used - In section [[sec:iff]]: the integral force feedback is used
@ -130,7 +59,26 @@ The disturbances are:
- Motion errors of all the stages - Motion errors of all the stages
* Undamped System * Undamped System
<<sec:undamped>> :PROPERTIES:
:header-args:matlab+: :tangle matlab/undamped_system.m
:header-args:matlab+: :comments org :mkdirp yes
:END:
<<sec:undamped_system>>
** ZIP file containing the data and matlab files :ignore:
#+begin_src bash :exports none :results none
if [ matlab/undamped_system.m -nt data/undamped_system.zip ]; then
cp matlab/undamped_system.m undamped_system.m;
zip data/undamped_system \
undamped_system.m
rm undamped_system.m;
fi
#+end_src
#+begin_note
All the files (data and Matlab scripts) are accessible [[file:data/undamped_system.zip][here]].
#+end_note
** Introduction :ignore: ** Introduction :ignore:
We first look at the undamped system. We first look at the undamped system.
The performance of this undamped system will be compared with the damped system using various techniques. The performance of this undamped system will be compared with the damped system using various techniques.
@ -157,6 +105,7 @@ We initialize all the stages with the default parameters.
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg. The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
#+begin_src matlab #+begin_src matlab
initializeInputs();
initializeGround(); initializeGround();
initializeGranite(); initializeGranite();
initializeTy(); initializeTy();
@ -187,6 +136,11 @@ We identify the various transfer functions of the system
G = identifyPlant(); G = identifyPlant();
#+end_src #+end_src
And we save it for further analysis.
#+begin_src matlab
save('./active_damping/mat/plants.mat', 'G', '-append');
#+end_src
** Sensitivity to disturbances ** Sensitivity to disturbances
The sensitivity to disturbances are shown on figure [[fig:sensitivity_dist_undamped]]. The sensitivity to disturbances are shown on figure [[fig:sensitivity_dist_undamped]].
@ -225,6 +179,28 @@ The sensitivity to disturbances are shown on figure [[fig:sensitivity_dist_undam
#+CAPTION: Undamped sensitivity to disturbances ([[./figs/sensitivity_dist_undamped.png][png]], [[./figs/sensitivity_dist_undamped.pdf][pdf]]) #+CAPTION: Undamped sensitivity to disturbances ([[./figs/sensitivity_dist_undamped.png][png]], [[./figs/sensitivity_dist_undamped.pdf][pdf]])
[[file:figs/sensitivity_dist_undamped.png]] [[file:figs/sensitivity_dist_undamped.png]]
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
figure;
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_dist('Dz', 'Frzz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{rz, z}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_dist('Dz', 'Ftyz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{ty, z}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_dist('Dx', 'Ftyx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / F_{ty, x}\right|$');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/sensitivity_dist_stages.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:sensitivity_dist_stages
#+CAPTION: Sensitivity to force disturbances in various stages ([[./figs/sensitivity_dist_stages.png][png]], [[./figs/sensitivity_dist_stages.pdf][pdf]])
[[file:figs/sensitivity_dist_stages.png]]
** Undamped Plant ** Undamped Plant
The "plant" (transfer function from forces applied by the nano-hexapod to the measured displacement of the sample with respect to the granite) bode plot is shown on figure [[fig:sensitivity_dist_undamped]]. The "plant" (transfer function from forces applied by the nano-hexapod to the measured displacement of the sample with respect to the granite) bode plot is shown on figure [[fig:sensitivity_dist_undamped]].
@ -266,19 +242,37 @@ The "plant" (transfer function from forces applied by the nano-hexapod to the me
#+CAPTION: Transfer Function from cartesian forces to displacement for the undamped plant ([[./figs/plant_undamped.png][png]], [[./figs/plant_undamped.pdf][pdf]]) #+CAPTION: Transfer Function from cartesian forces to displacement for the undamped plant ([[./figs/plant_undamped.png][png]], [[./figs/plant_undamped.pdf][pdf]])
[[file:figs/plant_undamped.png]] [[file:figs/plant_undamped.png]]
** Save * Integral Force Feedback
#+begin_src matlab :PROPERTIES:
save('./active_damping/mat/plants.mat', 'G', '-append'); :header-args:matlab+: :tangle matlab/iff.m
:header-args:matlab+: :comments org :mkdirp yes
:END:
<<sec:iff>>
** ZIP file containing the data and matlab files :ignore:
#+begin_src bash :exports none :results none
if [ matlab/iff.m -nt data/iff.zip ]; then
cp matlab/iff.m iff.m;
zip data/iff \
mat/plant.mat \
iff.m
rm iff.m;
fi
#+end_src #+end_src
* Integral Force Feedback #+begin_note
<<sec:iff>> All the files (data and Matlab scripts) are accessible [[file:data/iff.zip][here]].
#+end_note
** Introduction :ignore: ** Introduction :ignore:
Integral Force Feedback is applied. Integral Force Feedback is applied.
In section [[sec:iff_1dof]], IFF is applied on a uni-axial system to understand its behavior. In section [[sec:iff_1dof]], IFF is applied on a uni-axial system to understand its behavior.
Then, it is applied on the simscape model. Then, it is applied on the simscape model.
** One degree-of-freedom example ** One degree-of-freedom example
:PROPERTIES:
:header-args:matlab+: :tangle no
:END:
<<sec:iff_1dof>> <<sec:iff_1dof>>
*** Equations *** Equations
#+begin_src latex :file iff_1dof.pdf :post pdf2svg(file=*this*, ext="png") :exports results #+begin_src latex :file iff_1dof.pdf :post pdf2svg(file=*this*, ext="png") :exports results
@ -560,9 +554,10 @@ The corresponding loop gains are shown in figure [[fig:iff_open_loop]].
#+CAPTION: Loop Gain for the Integral Force Feedback ([[./figs/iff_open_loop.png][png]], [[./figs/iff_open_loop.pdf][pdf]]) #+CAPTION: Loop Gain for the Integral Force Feedback ([[./figs/iff_open_loop.png][png]], [[./figs/iff_open_loop.pdf][pdf]])
[[file:figs/iff_open_loop.png]] [[file:figs/iff_open_loop.png]]
** Sensitivity to disturbances ** Identification of the damped plant
Let's initialize the system prior to identification. Let's initialize the system prior to identification.
#+begin_src matlab #+begin_src matlab
initializeInputs();
initializeGround(); initializeGround();
initializeGranite(); initializeGranite();
initializeTy(); initializeTy();
@ -592,6 +587,12 @@ We identify the system dynamics now that the IFF controller is ON.
G_iff = identifyPlant(); G_iff = identifyPlant();
#+end_src #+end_src
And we save the damped plant for further analysis
#+begin_src matlab
save('./active_damping/mat/plants.mat', 'G_iff', '-append');
#+end_src
** Sensitivity to disturbances
As shown on figure [[fig:sensitivity_dist_iff]]: As shown on figure [[fig:sensitivity_dist_iff]]:
- The top platform of the nano-hexapod how behaves as a "free-mass". - The top platform of the nano-hexapod how behaves as a "free-mass".
- The transfer function from direct forces $F_s$ to the relative displacement $D$ is equivalent to the one of an isolated mass. - The transfer function from direct forces $F_s$ to the relative displacement $D$ is equivalent to the one of an isolated mass.
@ -664,7 +665,7 @@ As shown on figure [[fig:sensitivity_dist_iff]]:
#+end_src #+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes #+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/sensitivity_dist_stages_iff.pdf" :var figsize="full-normal" :post pdf2svg(file=*this*, ext="png") #+begin_src matlab :var filepath="figs/sensitivity_dist_stages_iff.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>> <<plt-matlab>>
#+end_src #+end_src
@ -777,11 +778,6 @@ However, it increases coupling at low frequency (figure [[fig:plant_iff_coupling
#+CAPTION: Coupling induced by IFF ([[./figs/plant_iff_coupling.png][png]], [[./figs/plant_iff_coupling.pdf][pdf]]) #+CAPTION: Coupling induced by IFF ([[./figs/plant_iff_coupling.png][png]], [[./figs/plant_iff_coupling.pdf][pdf]])
[[file:figs/plant_iff_coupling.png]] [[file:figs/plant_iff_coupling.png]]
** Save
#+begin_src matlab
save('./active_damping/mat/plants.mat', 'G_iff', '-append');
#+end_src
** Conclusion ** Conclusion
#+begin_important #+begin_important
Integral Force Feedback: Integral Force Feedback:
@ -791,11 +787,34 @@ Integral Force Feedback:
#+end_important #+end_important
* Relative Motion Control * Relative Motion Control
:PROPERTIES:
:header-args:matlab+: :tangle matlab/rmc.m
:header-args:matlab+: :comments org :mkdirp yes
:END:
<<sec:rmc>> <<sec:rmc>>
** ZIP file containing the data and matlab files :ignore:
#+begin_src bash :exports none :results none
if [ matlab/rmc.m -nt data/rmc.zip ]; then
cp matlab/rmc.m rmc.m;
zip data/rmc \
mat/plant.mat \
rmc.m
rm rmc.m;
fi
#+end_src
#+begin_note
All the files (data and Matlab scripts) are accessible [[file:data/rmc.zip][here]].
#+end_note
** Introduction :ignore: ** Introduction :ignore:
In the Relative Motion Control (RMC), a derivative feedback is applied between the measured actuator displacement to the actuator force input. In the Relative Motion Control (RMC), a derivative feedback is applied between the measured actuator displacement to the actuator force input.
** One degree-of-freedom example ** One degree-of-freedom example
:PROPERTIES:
:header-args:matlab+: :tangle no
:END:
<<sec:rmc_1dof>> <<sec:rmc_1dof>>
*** Equations *** Equations
#+begin_src latex :file rmc_1dof.pdf :post pdf2svg(file=*this*, ext="png") :exports results #+begin_src latex :file rmc_1dof.pdf :post pdf2svg(file=*this*, ext="png") :exports results
@ -1075,9 +1094,10 @@ The obtained loop gains are shown in figure [[fig:rmc_open_loop]].
#+CAPTION: Loop Gain for the Integral Force Feedback ([[./figs/rmc_open_loop.png][png]], [[./figs/rmc_open_loop.pdf][pdf]]) #+CAPTION: Loop Gain for the Integral Force Feedback ([[./figs/rmc_open_loop.png][png]], [[./figs/rmc_open_loop.pdf][pdf]])
[[file:figs/rmc_open_loop.png]] [[file:figs/rmc_open_loop.png]]
** Sensitivity to disturbances ** Identification of the damped plant
Let's initialize the system prior to identification. Let's initialize the system prior to identification.
#+begin_src matlab #+begin_src matlab
initializeInputs();
initializeGround(); initializeGround();
initializeGranite(); initializeGranite();
initializeTy(); initializeTy();
@ -1107,6 +1127,12 @@ We identify the system dynamics now that the RMC controller is ON.
G_rmc = identifyPlant(); G_rmc = identifyPlant();
#+end_src #+end_src
And we save the damped plant for further analysis.
#+begin_src matlab
save('./active_damping/mat/plants.mat', 'G_rmc', '-append');
#+end_src
** Sensitivity to disturbances
As shown in figure [[fig:sensitivity_dist_rmc]], RMC control succeed in lowering the sensitivity to disturbances near resonance of the system. As shown in figure [[fig:sensitivity_dist_rmc]], RMC control succeed in lowering the sensitivity to disturbances near resonance of the system.
#+begin_src matlab :exports none #+begin_src matlab :exports none
@ -1126,7 +1152,7 @@ As shown in figure [[fig:sensitivity_dist_rmc]], RMC control succeed in lowering
plot(freqs, abs(squeeze(freqresp(G_rmc.G_gm('Dz', 'Dgz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off'); plot(freqs, abs(squeeze(freqresp(G_rmc.G_gm('Dz', 'Dgz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/m]'); xlabel('Frequency [Hz]'); ylabel('Amplitude [m/m]'); xlabel('Frequency [Hz]');
legend('location', 'northeast'); legend('location', 'southeast');
subplot(2, 1, 2); subplot(2, 1, 2);
title('$F_s$ to $D$'); title('$F_s$ to $D$');
@ -1170,7 +1196,7 @@ As shown in figure [[fig:sensitivity_dist_rmc]], RMC control succeed in lowering
#+end_src #+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes #+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/sensitivity_dist_stages_rmc.pdf" :var figsize="full-normal" :post pdf2svg(file=*this*, ext="png") #+begin_src matlab :var filepath="figs/sensitivity_dist_stages_rmc.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>> <<plt-matlab>>
#+end_src #+end_src
@ -1252,11 +1278,6 @@ As shown in figure [[fig:sensitivity_dist_rmc]], RMC control succeed in lowering
#+CAPTION: Damped Plant after RMC is applied ([[./figs/plant_rmc_damped.png][png]], [[./figs/plant_rmc_damped.pdf][pdf]]) #+CAPTION: Damped Plant after RMC is applied ([[./figs/plant_rmc_damped.png][png]], [[./figs/plant_rmc_damped.pdf][pdf]])
[[file:figs/plant_rmc_damped.png]] [[file:figs/plant_rmc_damped.png]]
** Save
#+begin_src matlab
save('./active_damping/mat/plants.mat', 'G_rmc', '-append');
#+end_src
** Conclusion ** Conclusion
#+begin_important #+begin_important
Relative Motion Control: Relative Motion Control:
@ -1264,11 +1285,34 @@ Relative Motion Control:
#+end_important #+end_important
* Direct Velocity Feedback * Direct Velocity Feedback
:PROPERTIES:
:header-args:matlab+: :tangle matlab/dvf.m
:header-args:matlab+: :comments org :mkdirp yes
:END:
<<sec:dvf>> <<sec:dvf>>
** ZIP file containing the data and matlab files :ignore:
#+begin_src bash :exports none :results none
if [ matlab/dvf.m -nt data/dvf.zip ]; then
cp matlab/dvf.m dvf.m;
zip data/dvf \
mat/plant.mat \
dvf.m
rm dvf.m;
fi
#+end_src
#+begin_note
All the files (data and Matlab scripts) are accessible [[file:data/dvf.zip][here]].
#+end_note
** Introduction :ignore: ** Introduction :ignore:
In the Relative Motion Control (RMC), a feedback is applied between the measured velocity of the platform to the actuator force input. In the Relative Motion Control (RMC), a feedback is applied between the measured velocity of the platform to the actuator force input.
** One degree-of-freedom example ** One degree-of-freedom example
:PROPERTIES:
:header-args:matlab+: :tangle no
:END:
<<sec:dvf_1dof>> <<sec:dvf_1dof>>
*** Equations *** Equations
#+begin_src latex :file dvf_1dof.pdf :post pdf2svg(file=*this*, ext="png") :exports results #+begin_src latex :file dvf_1dof.pdf :post pdf2svg(file=*this*, ext="png") :exports results
@ -1481,8 +1525,6 @@ Let's load the undamped plant:
Let's look at the transfer function from actuator forces in the nano-hexapod to the measured velocity of the nano-hexapod platform in the direction of the corresponding actuator for all 6 pairs of actuator/sensor (figure [[fig:dvf_plant]]). Let's look at the transfer function from actuator forces in the nano-hexapod to the measured velocity of the nano-hexapod platform in the direction of the corresponding actuator for all 6 pairs of actuator/sensor (figure [[fig:dvf_plant]]).
The plant looks to complicated to be reasonably controlled.
#+begin_src matlab :exports none #+begin_src matlab :exports none
freqs = logspace(0, 3, 1000); freqs = logspace(0, 3, 1000);
@ -1520,15 +1562,241 @@ The plant looks to complicated to be reasonably controlled.
#+CAPTION: Transfer function from forces applied in the legs to leg velocity sensor ([[./figs/dvf_plant.png][png]], [[./figs/dvf_plant.pdf][pdf]]) #+CAPTION: Transfer function from forces applied in the legs to leg velocity sensor ([[./figs/dvf_plant.png][png]], [[./figs/dvf_plant.pdf][pdf]])
[[file:figs/dvf_plant.png]] [[file:figs/dvf_plant.png]]
The controller is defined below and the obtained loop gain is shown in figure [[fig:dvf_open_loop_gain]].
#+begin_src matlab
K_dvf = tf(3e4);
#+end_src
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
figure;
ax1 = subplot(2, 1, 1);
hold on;
for i=1:6
plot(freqs, abs(squeeze(freqresp(K_dvf*G.G_geoph(['Vm', num2str(i)], ['F', num2str(i)]), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
ax2 = subplot(2, 1, 2);
hold on;
for i=1:6
plot(freqs, 180/pi*angle(squeeze(freqresp(K_dvf*G.G_geoph(['Vm', num2str(i)], ['F', num2str(i)]), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
linkaxes([ax1,ax2],'x');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/dvf_open_loop_gain.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:dvf_open_loop_gain
#+CAPTION: Loop Gain for DVF ([[./figs/dvf_open_loop_gain.png][png]], [[./figs/dvf_open_loop_gain.pdf][pdf]])
[[file:figs/dvf_open_loop_gain.png]]
** Identification of the damped plant
Let's initialize the system prior to identification.
#+begin_src matlab
initializeInputs();
initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
initializeNanoHexapod(struct('actuator', 'piezo'));
initializeSample(struct('mass', 50));
#+end_src
And initialize the controllers.
#+begin_src matlab
K = tf(zeros(6));
save('./mat/controllers.mat', 'K', '-append');
K_iff = tf(zeros(6));
save('./mat/controllers.mat', 'K_iff', '-append');
K_rmc = tf(zeros(6));
save('./mat/controllers.mat', 'K_rmc', '-append');
K_dvf = -K_dvf*eye(6);
save('./mat/controllers.mat', 'K_dvf', '-append');
#+end_src
We identify the system dynamics now that the RMC controller is ON.
#+begin_src matlab
G_dvf = identifyPlant();
#+end_src
And we save the damped plant for further analysis.
#+begin_src matlab
save('./active_damping/mat/plants.mat', 'G_dvf', '-append');
#+end_src
** Sensitivity to disturbances
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
figure;
subplot(2, 1, 1);
title('$D_g$ to $D$');
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_gm('Dx', 'Dgx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / D_{g,x}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_gm('Dy', 'Dgy'), freqs, 'Hz'))), 'DisplayName', '$\left|D_y / D_{g,y}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_gm('Dz', 'Dgz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / D_{g,z}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_dvf.G_gm('Dx', 'Dgx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_gm('Dy', 'Dgy'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_gm('Dz', 'Dgz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/m]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
subplot(2, 1, 2);
title('$F_s$ to $D$');
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_fs('Dx', 'Fsx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / F_{s,x}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_fs('Dy', 'Fsy'), freqs, 'Hz'))), 'DisplayName', '$\left|D_y / F_{s,y}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_fs('Dz', 'Fsz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{s,z}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_dvf.G_fs('Dx', 'Fsx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_fs('Dy', 'Fsy'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_fs('Dz', 'Fsz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/sensitivity_dist_dvf.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:sensitivity_dist_dvf
#+CAPTION: Sensitivity to disturbance once the DVF controller is applied to the system ([[./figs/sensitivity_dist_dvf.png][png]], [[./figs/sensitivity_dist_dvf.pdf][pdf]])
[[file:figs/sensitivity_dist_dvf.png]]
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
figure;
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_dist('Dz', 'Frzz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{rz, z}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_dist('Dz', 'Ftyz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{ty, z}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_dist('Dx', 'Ftyx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / F_{ty, x}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_dvf.G_dist('Dz', 'Frzz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_dist('Dz', 'Ftyz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_dist('Dx', 'Ftyx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/sensitivity_dist_stages_dvf.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:sensitivity_dist_stages_dvf
#+CAPTION: Sensitivity to force disturbances in various stages when DVF is applied ([[./figs/sensitivity_dist_stages_dvf.png][png]], [[./figs/sensitivity_dist_stages_dvf.pdf][pdf]])
[[file:figs/sensitivity_dist_stages_dvf.png]]
** Damped Plant
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
figure;
ax1 = subplot(2, 2, 1);
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_cart('Dx', 'Fnx'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G.G_cart('Dy', 'Fny'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G.G_cart('Dz', 'Fnz'), freqs, 'Hz'))));
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_dvf.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), '--');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_cart('Dy', 'Fny'), freqs, 'Hz'))), '--');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), '--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
ax2 = subplot(2, 2, 2);
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_cart('Rx', 'Mnx'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G.G_cart('Ry', 'Mny'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G.G_cart('Rz', 'Mnz'), freqs, 'Hz'))));
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_dvf.G_cart('Rx', 'Mnx'), freqs, 'Hz'))), '--');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_cart('Ry', 'Mny'), freqs, 'Hz'))), '--');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_cart('Rz', 'Mnz'), freqs, 'Hz'))), '--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [rad/(Nm)]'); xlabel('Frequency [Hz]');
ax3 = subplot(2, 2, 3);
hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / F_{n,x}\right|$');
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Dy', 'Fny'), freqs, 'Hz'))), 'DisplayName', '$\left|D_y / F_{n,y}\right|$');
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{n,z}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dvf.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dvf.G_cart('Dy', 'Fny'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dvf.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend('location', 'northwest');
ax4 = subplot(2, 2, 4);
hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Rx', 'Mnx'), freqs, 'Hz'))), 'DisplayName', '$\left|R_x / M_{n,x}\right|$');
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Ry', 'Mny'), freqs, 'Hz'))), 'DisplayName', '$\left|R_y / M_{n,y}\right|$');
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Rz', 'Mnz'), freqs, 'Hz'))), 'DisplayName', '$\left|R_z / M_{n,z}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dvf.G_cart('Rx', 'Mnx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dvf.G_cart('Ry', 'Mny'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dvf.G_cart('Rz', 'Mnz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend('location', 'northwest');
linkaxes([ax1,ax2,ax3,ax4],'x');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/plant_dvf_damped.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:plant_dvf_damped
#+CAPTION: Damped Plant after DVF is applied ([[./figs/plant_dvf_damped.png][png]], [[./figs/plant_dvf_damped.pdf][pdf]])
[[file:figs/plant_dvf_damped.png]]
** Conclusion ** Conclusion
#+begin_important #+begin_important
Direct Velocity Feedback: Direct Velocity Feedback:
- Not usable
#+end_important #+end_important
* Comparison * Comparison
<<sec:comparison>> <<sec:comparison>>
** Introduction :ignore:
** Matlab Init :noexport: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) #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
<<matlab-dir>> <<matlab-dir>>
@ -1542,36 +1810,254 @@ Direct Velocity Feedback:
cd('../'); cd('../');
#+end_src #+end_src
** Comparison ** Load the plants
#+begin_src matlab #+begin_src matlab
load('./active_damping/mat/plants.mat', 'G', 'G_iff', 'G_rmc'); load('./active_damping/mat/plants.mat', 'G', 'G_iff', 'G_rmc', 'G_dvf');
#+end_src #+end_src
** Sensitivity to Disturbance
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
figure;
title('$D_{g,z}$ to $D_z$');
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_gm( 'Dz', 'Dgz'), freqs, 'Hz'))), 'k-' , 'DisplayName', 'Undamped');
plot(freqs, abs(squeeze(freqresp(G_iff.G_gm('Dz', 'Dgz'), freqs, 'Hz'))), 'k:' , 'DisplayName', 'IFF');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_gm('Dz', 'Dgz'), freqs, 'Hz'))), 'k--', 'DisplayName', 'RMC');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_gm('Dz', 'Dgz'), freqs, 'Hz'))), 'k-.', 'DisplayName', 'DVF');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/m]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/sensitivity_comp_ground_motion_z.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:sensitivity_comp_ground_motion_z
#+CAPTION: caption ([[./figs/sensitivity_comp_ground_motion_z.png][png]], [[./figs/sensitivity_comp_ground_motion_z.pdf][pdf]])
[[file:figs/sensitivity_comp_ground_motion_z.png]]
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
figure;
title('$F_{s,z}$ to $D_z$');
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_fs( 'Dz', 'Fsz'), freqs, 'Hz'))), 'k-' , 'DisplayName', 'Undamped');
plot(freqs, abs(squeeze(freqresp(G_iff.G_fs('Dz', 'Fsz'), freqs, 'Hz'))), 'k:' , 'DisplayName', 'IFF');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_fs('Dz', 'Fsz'), freqs, 'Hz'))), 'k--', 'DisplayName', 'RMC');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_fs('Dz', 'Fsz'), freqs, 'Hz'))), 'k-.', 'DisplayName', 'DVF');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/sensitivity_comp_direct_forces_z.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:sensitivity_comp_direct_forces_z
#+CAPTION: caption ([[./figs/sensitivity_comp_direct_forces_z.png][png]], [[./figs/sensitivity_comp_direct_forces_z.pdf][pdf]])
[[file:figs/sensitivity_comp_direct_forces_z.png]]
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
figure;
title('$F_{rz,z}$ to $D_z$');
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_dist( 'Dz', 'Frzz'), freqs, 'Hz'))), 'k-' , 'DisplayName', 'Undamped');
plot(freqs, abs(squeeze(freqresp(G_iff.G_dist('Dz', 'Frzz'), freqs, 'Hz'))), 'k:' , 'DisplayName', 'IFF');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_dist('Dz', 'Frzz'), freqs, 'Hz'))), 'k--', 'DisplayName', 'RMC');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_dist('Dz', 'Frzz'), freqs, 'Hz'))), 'k-.', 'DisplayName', 'DVF');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/sensitivity_comp_spindle_z.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:sensitivity_comp_spindle_z
#+CAPTION: caption ([[./figs/sensitivity_comp_spindle_z.png][png]], [[./figs/sensitivity_comp_spindle_z.pdf][pdf]])
[[file:figs/sensitivity_comp_spindle_z.png]]
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
figure;
title('$F_{ty,z}$ to $D_z$');
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_dist( 'Dz', 'Ftyz'), freqs, 'Hz'))), 'k-' , 'DisplayName', 'Undamped');
plot(freqs, abs(squeeze(freqresp(G_iff.G_dist('Dz', 'Ftyz'), freqs, 'Hz'))), 'k:' , 'DisplayName', 'IFF');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_dist('Dz', 'Ftyz'), freqs, 'Hz'))), 'k--', 'DisplayName', 'RMC');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_dist('Dz', 'Ftyz'), freqs, 'Hz'))), 'k-.', 'DisplayName', 'DVF');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/sensitivity_comp_ty_z.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:sensitivity_comp_ty_z
#+CAPTION: caption ([[./figs/sensitivity_comp_ty_z.png][png]], [[./figs/sensitivity_comp_ty_z.pdf][pdf]])
[[file:figs/sensitivity_comp_ty_z.png]]
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
figure;
title('$F_{ty,x}$ to $D_x$');
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_dist( 'Dx', 'Ftyx'), freqs, 'Hz'))), 'k-' , 'DisplayName', 'Undamped');
plot(freqs, abs(squeeze(freqresp(G_iff.G_dist('Dx', 'Ftyx'), freqs, 'Hz'))), 'k:' , 'DisplayName', 'IFF');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_dist('Dx', 'Ftyx'), freqs, 'Hz'))), 'k--', 'DisplayName', 'RMC');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_dist('Dx', 'Ftyx'), freqs, 'Hz'))), 'k-.', 'DisplayName', 'DVF');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/sensitivity_comp_ty_x.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:sensitivity_comp_ty_x
#+CAPTION: caption ([[./figs/sensitivity_comp_ty_x.png][png]], [[./figs/sensitivity_comp_ty_x.pdf][pdf]])
[[file:figs/sensitivity_comp_ty_x.png]]
** Damped Plant
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
figure;
title('$F_{n,z}$ to $D_z$');
ax1 = subplot(2, 1, 1);
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_cart( 'Dz', 'Fnz'), freqs, 'Hz'))), 'k-' , 'DisplayName', 'Undamped');
plot(freqs, abs(squeeze(freqresp(G_iff.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), 'k:' , 'DisplayName', 'IFF');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), 'k--', 'DisplayName', 'RMC');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), 'k-.', 'DisplayName', 'DVF');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
legend('location', 'northeast');
ax2 = subplot(2, 1, 2);
hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart ('Dz', 'Fnz'), freqs, 'Hz'))), 'k-');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_iff.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), 'k:');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_rmc.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), 'k--');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dvf.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), 'k-.');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
linkaxes([ax1,ax2],'x');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/plant_comp_damping_z.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:plant_comp_damping_z
#+CAPTION: Plant for the $z$ direction for different active damping technique used ([[./figs/plant_comp_damping_z.png][png]], [[./figs/plant_comp_damping_z.pdf][pdf]])
[[file:figs/plant_comp_damping_z.png]]
#+begin_src matlab :exports none #+begin_src matlab :exports none
freqs = logspace(0, 3, 1000); freqs = logspace(0, 3, 1000);
figure; figure;
subplot(2, 1, 1); title('$F_{n,z}$ to $D_z$');
title('$D_g$ to $D$'); ax1 = subplot(2, 1, 1);
hold on; hold on;
plot(freqs, abs(squeeze(freqresp(G.G_gm( 'Dx', 'Dgx'), freqs, 'Hz'))), 'DisplayName', 'Undamped'); plot(freqs, abs(squeeze(freqresp(G.G_cart( 'Dx', 'Fnx'), freqs, 'Hz'))), 'k-' , 'DisplayName', 'Undamped');
plot(freqs, abs(squeeze(freqresp(G_iff.G_gm('Dx', 'Dgx'), freqs, 'Hz'))), 'DisplayName', 'IFF'); plot(freqs, abs(squeeze(freqresp(G_iff.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), 'k:' , 'DisplayName', 'IFF');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_gm('Dx', 'Dgx'), freqs, 'Hz'))), 'DisplayName', 'RMC'); plot(freqs, abs(squeeze(freqresp(G_rmc.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), 'k--', 'DisplayName', 'RMC');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), 'k-.', 'DisplayName', 'DVF');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/m]'); xlabel('Frequency [Hz]'); ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
legend('location', 'northeast'); legend('location', 'northeast');
subplot(2, 1, 2); ax2 = subplot(2, 1, 2);
title('$F_s$ to $D$');
hold on; hold on;
plot(freqs, abs(squeeze(freqresp(G.G_fs( 'Dx', 'Fsx'), freqs, 'Hz'))), 'DisplayName', 'Undamped'); plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart ('Dx', 'Fnx'), freqs, 'Hz'))), 'k-');
plot(freqs, abs(squeeze(freqresp(G_iff.G_fs('Dx', 'Fsx'), freqs, 'Hz'))), 'DisplayName', 'IFF'); plot(freqs, 180/pi*angle(squeeze(freqresp(G_iff.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), 'k:');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_fs('Dx', 'Fsx'), freqs, 'Hz'))), 'DisplayName', 'RMC'); plot(freqs, 180/pi*angle(squeeze(freqresp(G_rmc.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), 'k--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); plot(freqs, 180/pi*angle(squeeze(freqresp(G_dvf.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), 'k-.');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]'); hold off;
legend('location', 'northeast'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
linkaxes([ax1,ax2],'x');
#+end_src #+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/plant_comp_damping_x.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:plant_comp_damping_x
#+CAPTION: Plant for the $x$ direction for different active damping technique used ([[./figs/plant_comp_damping_x.png][png]], [[./figs/plant_comp_damping_x.pdf][pdf]])
[[file:figs/plant_comp_damping_x.png]]
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
figure;
title('$F_{n,x}$ to $R_z$');
ax1 = subplot(2, 1, 1);
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_cart( 'Rz', 'Fnx'), freqs, 'Hz'))), 'k-' , 'DisplayName', 'Undamped');
plot(freqs, abs(squeeze(freqresp(G_iff.G_cart('Rz', 'Fnx'), freqs, 'Hz'))), 'k:' , 'DisplayName', 'IFF');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_cart('Rz', 'Fnx'), freqs, 'Hz'))), 'k--', 'DisplayName', 'RMC');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_cart('Rz', 'Fnx'), freqs, 'Hz'))), 'k-.', 'DisplayName', 'DVF');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
legend('location', 'northeast');
ax2 = subplot(2, 1, 2);
hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart ('Ry', 'Fnx'), freqs, 'Hz'))), 'k-');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_iff.G_cart('Ry', 'Fnx'), freqs, 'Hz'))), 'k:');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_rmc.G_cart('Ry', 'Fnx'), freqs, 'Hz'))), 'k--');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dvf.G_cart('Ry', 'Fnx'), freqs, 'Hz'))), 'k-.');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
linkaxes([ax1,ax2],'x');
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/plant_comp_damping_coupling.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:plant_comp_damping_coupling
#+CAPTION: Comparison of one off-diagonal plant for different damping technique applied ([[./figs/plant_comp_damping_coupling.png][png]], [[./figs/plant_comp_damping_coupling.pdf][pdf]])
[[file:figs/plant_comp_damping_coupling.png]]
* Conclusion * Conclusion
<<sec:conclusion>> <<sec:conclusion>>

241
active_damping/matlab/dvf.m Normal file
View File

@ -0,0 +1,241 @@
%% Clear Workspace and Close figures
clear; close all; clc;
%% Intialize Laplace variable
s = zpk('s');
open 'simscape/sim_nano_station_id.slx'
% Control Design
% Let's load the undamped plant:
load('./active_damping/mat/plants.mat', 'G');
% Let's look at the transfer function from actuator forces in the nano-hexapod to the measured velocity of the nano-hexapod platform in the direction of the corresponding actuator for all 6 pairs of actuator/sensor (figure [[fig:dvf_plant]]).
freqs = logspace(0, 3, 1000);
figure;
ax1 = subplot(2, 1, 1);
hold on;
for i=1:6
plot(freqs, abs(squeeze(freqresp(G.G_geoph(['Vm', num2str(i)], ['F', num2str(i)]), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
ax2 = subplot(2, 1, 2);
hold on;
for i=1:6
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_geoph(['Vm', num2str(i)], ['F', num2str(i)]), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
linkaxes([ax1,ax2],'x');
% #+NAME: fig:dvf_plant
% #+CAPTION: Transfer function from forces applied in the legs to leg velocity sensor ([[./figs/dvf_plant.png][png]], [[./figs/dvf_plant.pdf][pdf]])
% [[file:figs/dvf_plant.png]]
% The controller is defined below and the obtained loop gain is shown in figure [[fig:dvf_open_loop_gain]].
K_dvf = tf(3e4);
freqs = logspace(0, 3, 1000);
figure;
ax1 = subplot(2, 1, 1);
hold on;
for i=1:6
plot(freqs, abs(squeeze(freqresp(K_dvf*G.G_geoph(['Vm', num2str(i)], ['F', num2str(i)]), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
ax2 = subplot(2, 1, 2);
hold on;
for i=1:6
plot(freqs, 180/pi*angle(squeeze(freqresp(K_dvf*G.G_geoph(['Vm', num2str(i)], ['F', num2str(i)]), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
linkaxes([ax1,ax2],'x');
% Identification of the damped plant
% Let's initialize the system prior to identification.
initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
initializeNanoHexapod(struct('actuator', 'piezo'));
initializeSample(struct('mass', 50));
% And initialize the controllers.
K = tf(zeros(6));
save('./mat/controllers.mat', 'K', '-append');
K_iff = tf(zeros(6));
save('./mat/controllers.mat', 'K_iff', '-append');
K_rmc = tf(zeros(6));
save('./mat/controllers.mat', 'K_rmc', '-append');
K_dvf = -K_dvf*eye(6);
save('./mat/controllers.mat', 'K_dvf', '-append');
% We identify the system dynamics now that the RMC controller is ON.
G_dvf = identifyPlant();
% And we save the damped plant for further analysis.
save('./active_damping/mat/plants.mat', 'G_dvf', '-append');
% Sensitivity to disturbances
freqs = logspace(0, 3, 1000);
figure;
subplot(2, 1, 1);
title('$D_g$ to $D$');
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_gm('Dx', 'Dgx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / D_{g,x}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_gm('Dy', 'Dgy'), freqs, 'Hz'))), 'DisplayName', '$\left|D_y / D_{g,y}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_gm('Dz', 'Dgz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / D_{g,z}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_dvf.G_gm('Dx', 'Dgx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_gm('Dy', 'Dgy'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_gm('Dz', 'Dgz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/m]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
subplot(2, 1, 2);
title('$F_s$ to $D$');
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_fs('Dx', 'Fsx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / F_{s,x}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_fs('Dy', 'Fsy'), freqs, 'Hz'))), 'DisplayName', '$\left|D_y / F_{s,y}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_fs('Dz', 'Fsz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{s,z}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_dvf.G_fs('Dx', 'Fsx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_fs('Dy', 'Fsy'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_fs('Dz', 'Fsz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
% #+NAME: fig:sensitivity_dist_dvf
% #+CAPTION: Sensitivity to disturbance once the DVF controller is applied to the system ([[./figs/sensitivity_dist_dvf.png][png]], [[./figs/sensitivity_dist_dvf.pdf][pdf]])
% [[file:figs/sensitivity_dist_dvf.png]]
freqs = logspace(0, 3, 1000);
figure;
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_dist('Dz', 'Frzz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{rz, z}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_dist('Dz', 'Ftyz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{ty, z}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_dist('Dx', 'Ftyx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / F_{ty, x}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_dvf.G_dist('Dz', 'Frzz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_dist('Dz', 'Ftyz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_dist('Dx', 'Ftyx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
% Damped Plant
freqs = logspace(0, 3, 1000);
figure;
ax1 = subplot(2, 2, 1);
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_cart('Dx', 'Fnx'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G.G_cart('Dy', 'Fny'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G.G_cart('Dz', 'Fnz'), freqs, 'Hz'))));
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_dvf.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), '--');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_cart('Dy', 'Fny'), freqs, 'Hz'))), '--');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), '--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
ax2 = subplot(2, 2, 2);
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_cart('Rx', 'Mnx'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G.G_cart('Ry', 'Mny'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G.G_cart('Rz', 'Mnz'), freqs, 'Hz'))));
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_dvf.G_cart('Rx', 'Mnx'), freqs, 'Hz'))), '--');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_cart('Ry', 'Mny'), freqs, 'Hz'))), '--');
plot(freqs, abs(squeeze(freqresp(G_dvf.G_cart('Rz', 'Mnz'), freqs, 'Hz'))), '--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [rad/(Nm)]'); xlabel('Frequency [Hz]');
ax3 = subplot(2, 2, 3);
hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / F_{n,x}\right|$');
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Dy', 'Fny'), freqs, 'Hz'))), 'DisplayName', '$\left|D_y / F_{n,y}\right|$');
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{n,z}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dvf.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dvf.G_cart('Dy', 'Fny'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dvf.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend('location', 'northwest');
ax4 = subplot(2, 2, 4);
hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Rx', 'Mnx'), freqs, 'Hz'))), 'DisplayName', '$\left|R_x / M_{n,x}\right|$');
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Ry', 'Mny'), freqs, 'Hz'))), 'DisplayName', '$\left|R_y / M_{n,y}\right|$');
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Rz', 'Mnz'), freqs, 'Hz'))), 'DisplayName', '$\left|R_z / M_{n,z}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dvf.G_cart('Rx', 'Mnx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dvf.G_cart('Ry', 'Mny'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dvf.G_cart('Rz', 'Mnz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend('location', 'northwest');
linkaxes([ax1,ax2,ax3,ax4],'x');

281
active_damping/matlab/iff.m Normal file
View File

@ -0,0 +1,281 @@
%% Clear Workspace and Close figures
clear; close all; clc;
%% Intialize Laplace variable
s = zpk('s');
open 'simscape/sim_nano_station_id.slx'
% Control Design
% Let's load the undamped plant:
load('./active_damping/mat/plants.mat', 'G');
% Let's look at the transfer function from actuator forces in the nano-hexapod to the force sensor in the nano-hexapod legs for all 6 pairs of actuator/sensor (figure [[fig:iff_plant]]).
freqs = logspace(0, 3, 1000);
figure;
ax1 = subplot(2, 1, 1);
hold on;
for i=1:6
plot(freqs, abs(squeeze(freqresp(G.G_iff(['Fm', num2str(i)], ['F', num2str(i)]), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [N/N]'); set(gca, 'XTickLabel',[]);
ax2 = subplot(2, 1, 2);
hold on;
for i=1:6
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_iff(['Fm', num2str(i)], ['F', num2str(i)]), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
linkaxes([ax1,ax2],'x');
% #+NAME: fig:iff_plant
% #+CAPTION: Transfer function from forces applied in the legs to force sensor ([[./figs/iff_plant.png][png]], [[./figs/iff_plant.pdf][pdf]])
% [[file:figs/iff_plant.png]]
% The controller for each pair of actuator/sensor is:
K_iff = -1000/s;
% The corresponding loop gains are shown in figure [[fig:iff_open_loop]].
freqs = logspace(0, 3, 1000);
figure;
ax1 = subplot(2, 1, 1);
hold on;
for i=1:6
plot(freqs, abs(squeeze(freqresp(K_iff*G.G_iff(['Fm', num2str(i)], ['F', num2str(i)]), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [N/N]'); set(gca, 'XTickLabel',[]);
ax2 = subplot(2, 1, 2);
hold on;
for i=1:6
plot(freqs, 180/pi*angle(squeeze(freqresp(K_iff*G.G_iff(['Fm', num2str(i)], ['F', num2str(i)]), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
linkaxes([ax1,ax2],'x');
% Identification of the damped plant
% Let's initialize the system prior to identification.
initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
initializeNanoHexapod(struct('actuator', 'piezo'));
initializeSample(struct('mass', 50));
% All the controllers are set to 0.
K = tf(zeros(6));
save('./mat/controllers.mat', 'K', '-append');
K_iff = -K_iff*eye(6);
save('./mat/controllers.mat', 'K_iff', '-append');
K_rmc = tf(zeros(6));
save('./mat/controllers.mat', 'K_rmc', '-append');
K_dvf = tf(zeros(6));
save('./mat/controllers.mat', 'K_dvf', '-append');
% We identify the system dynamics now that the IFF controller is ON.
G_iff = identifyPlant();
% And we save the damped plant for further analysis
save('./active_damping/mat/plants.mat', 'G_iff', '-append');
% Sensitivity to disturbances
% As shown on figure [[fig:sensitivity_dist_iff]]:
% - The top platform of the nano-hexapod how behaves as a "free-mass".
% - The transfer function from direct forces $F_s$ to the relative displacement $D$ is equivalent to the one of an isolated mass.
% - The transfer function from ground motion $D_g$ to the relative displacement $D$ tends to the transfer function from $D_g$ to the displacement of the granite (the sample is being isolated thanks to IFF).
% However, as the goal is to make the relative displacement $D$ as small as possible (e.g. to make the sample motion follows the granite motion), this is not a good thing.
freqs = logspace(0, 3, 1000);
figure;
subplot(2, 1, 1);
title('$D_g$ to $D$');
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_gm('Dx', 'Dgx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / D_{g,x}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_gm('Dy', 'Dgy'), freqs, 'Hz'))), 'DisplayName', '$\left|D_y / D_{g,y}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_gm('Dz', 'Dgz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / D_{g,z}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_iff.G_gm('Dx', 'Dgx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_iff.G_gm('Dy', 'Dgy'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_iff.G_gm('Dz', 'Dgz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/m]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
subplot(2, 1, 2);
title('$F_s$ to $D$');
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_fs('Dx', 'Fsx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / F_{s,x}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_fs('Dy', 'Fsy'), freqs, 'Hz'))), 'DisplayName', '$\left|D_y / F_{s,y}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_fs('Dz', 'Fsz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{s,z}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_iff.G_fs('Dx', 'Fsx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_iff.G_fs('Dy', 'Fsy'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_iff.G_fs('Dz', 'Fsz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
% #+NAME: fig:sensitivity_dist_iff
% #+CAPTION: Sensitivity to disturbance once the IFF controller is applied to the system ([[./figs/sensitivity_dist_iff.png][png]], [[./figs/sensitivity_dist_iff.pdf][pdf]])
% [[file:figs/sensitivity_dist_iff.png]]
% #+begin_warning
% The order of the models are very high and thus the plots may be wrong.
% For instance, the plots are not the same when using =minreal=.
% #+end_warning
freqs = logspace(0, 3, 1000);
figure;
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_dist('Dz', 'Frzz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{rz, z}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_dist('Dz', 'Ftyz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{ty, z}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_dist('Dx', 'Ftyx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / F_{ty, x}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(minreal(prescale(G_iff.G_dist('Dz', 'Frzz'), {2*pi, 2*pi*1e3})), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(minreal(G_iff.G_dist('Dz', 'Ftyz')), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(minreal(G_iff.G_dist('Dx', 'Ftyx')), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
% Damped Plant
% Now, look at the new damped plant to control.
% It damps the plant (resonance of the nano hexapod as well as other resonances) as shown in figure [[fig:plant_iff_damped]].
freqs = logspace(0, 3, 1000);
figure;
ax1 = subplot(2, 2, 1);
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_cart('Dx', 'Fnx'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G.G_cart('Dy', 'Fny'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G.G_cart('Dz', 'Fnz'), freqs, 'Hz'))));
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_iff.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), '--');
plot(freqs, abs(squeeze(freqresp(G_iff.G_cart('Dy', 'Fny'), freqs, 'Hz'))), '--');
plot(freqs, abs(squeeze(freqresp(G_iff.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), '--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
ax2 = subplot(2, 2, 2);
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_cart('Rx', 'Mnx'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G.G_cart('Ry', 'Mny'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G.G_cart('Rz', 'Mnz'), freqs, 'Hz'))));
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_iff.G_cart('Rx', 'Mnx'), freqs, 'Hz'))), '--');
plot(freqs, abs(squeeze(freqresp(G_iff.G_cart('Ry', 'Mny'), freqs, 'Hz'))), '--');
plot(freqs, abs(squeeze(freqresp(G_iff.G_cart('Rz', 'Mnz'), freqs, 'Hz'))), '--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [rad/(Nm)]'); xlabel('Frequency [Hz]');
ax3 = subplot(2, 2, 3);
hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / F_{n,x}\right|$');
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Dy', 'Fny'), freqs, 'Hz'))), 'DisplayName', '$\left|D_y / F_{n,y}\right|$');
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{n,z}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, 180/pi*angle(squeeze(freqresp(G_iff.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_iff.G_cart('Dy', 'Fny'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_iff.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend('location', 'northwest');
ax4 = subplot(2, 2, 4);
hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Rx', 'Mnx'), freqs, 'Hz'))), 'DisplayName', '$\left|R_x / M_{n,x}\right|$');
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Ry', 'Mny'), freqs, 'Hz'))), 'DisplayName', '$\left|R_y / M_{n,y}\right|$');
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Rz', 'Mnz'), freqs, 'Hz'))), 'DisplayName', '$\left|R_z / M_{n,z}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, 180/pi*angle(squeeze(freqresp(G_iff.G_cart('Rx', 'Mnx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_iff.G_cart('Ry', 'Mny'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_iff.G_cart('Rz', 'Mnz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend('location', 'northwest');
linkaxes([ax1,ax2,ax3,ax4],'x');
% #+NAME: fig:plant_iff_damped
% #+CAPTION: Damped Plant after IFF is applied ([[./figs/plant_iff_damped.png][png]], [[./figs/plant_iff_damped.pdf][pdf]])
% [[file:figs/plant_iff_damped.png]]
% However, it increases coupling at low frequency (figure [[fig:plant_iff_coupling]]).
freqs = logspace(0, 3, 1000);
figure;
for ix = 1:6
for iy = 1:6
subplot(6, 6, (ix-1)*6 + iy);
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_cart(ix, iy), freqs, 'Hz'))), 'k-');
plot(freqs, abs(squeeze(freqresp(G_iff.G_cart(ix, iy), freqs, 'Hz'))), 'k--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylim([1e-12, 1e-5]);
end
end

246
active_damping/matlab/rmc.m Normal file
View File

@ -0,0 +1,246 @@
%% Clear Workspace and Close figures
clear; close all; clc;
%% Intialize Laplace variable
s = zpk('s');
open 'simscape/sim_nano_station_id.slx'
% Control Design
% Let's load the undamped plant:
load('./active_damping/mat/plants.mat', 'G');
% Let's look at the transfer function from actuator forces in the nano-hexapod to the measured displacement of the actuator for all 6 pairs of actuator/sensor (figure [[fig:rmc_plant]]).
freqs = logspace(0, 3, 1000);
figure;
ax1 = subplot(2, 1, 1);
hold on;
for i=1:6
plot(freqs, abs(squeeze(freqresp(G.G_dleg(['Dm', num2str(i)], ['F', num2str(i)]), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
ax2 = subplot(2, 1, 2);
hold on;
for i=1:6
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_dleg(['Dm', num2str(i)], ['F', num2str(i)]), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
linkaxes([ax1,ax2],'x');
% #+NAME: fig:rmc_plant
% #+CAPTION: Transfer function from forces applied in the legs to leg displacement sensor ([[./figs/rmc_plant.png][png]], [[./figs/rmc_plant.pdf][pdf]])
% [[file:figs/rmc_plant.png]]
% The Relative Motion Controller is defined below.
% A Low pass Filter is added to make the controller transfer function proper.
K_rmc = s*50000/(1 + s/2/pi/10000);
% The obtained loop gains are shown in figure [[fig:rmc_open_loop]].
freqs = logspace(0, 3, 1000);
figure;
ax1 = subplot(2, 1, 1);
hold on;
for i=1:6
plot(freqs, abs(squeeze(freqresp(K_rmc*G.G_dleg(['Dm', num2str(i)], ['F', num2str(i)]), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
ax2 = subplot(2, 1, 2);
hold on;
for i=1:6
plot(freqs, 180/pi*angle(squeeze(freqresp(K_rmc*G.G_dleg(['Dm', num2str(i)], ['F', num2str(i)]), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
linkaxes([ax1,ax2],'x');
% Identification of the damped plant
% Let's initialize the system prior to identification.
initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
initializeNanoHexapod(struct('actuator', 'piezo'));
initializeSample(struct('mass', 50));
% And initialize the controllers.
K = tf(zeros(6));
save('./mat/controllers.mat', 'K', '-append');
K_iff = tf(zeros(6));
save('./mat/controllers.mat', 'K_iff', '-append');
K_rmc = -K_rmc*eye(6);
save('./mat/controllers.mat', 'K_rmc', '-append');
K_dvf = tf(zeros(6));
save('./mat/controllers.mat', 'K_dvf', '-append');
% We identify the system dynamics now that the RMC controller is ON.
G_rmc = identifyPlant();
% And we save the damped plant for further analysis.
save('./active_damping/mat/plants.mat', 'G_rmc', '-append');
% Sensitivity to disturbances
% As shown in figure [[fig:sensitivity_dist_rmc]], RMC control succeed in lowering the sensitivity to disturbances near resonance of the system.
freqs = logspace(0, 3, 1000);
figure;
subplot(2, 1, 1);
title('$D_g$ to $D$');
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_gm('Dx', 'Dgx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / D_{g,x}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_gm('Dy', 'Dgy'), freqs, 'Hz'))), 'DisplayName', '$\left|D_y / D_{g,y}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_gm('Dz', 'Dgz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / D_{g,z}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_rmc.G_gm('Dx', 'Dgx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_gm('Dy', 'Dgy'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_gm('Dz', 'Dgz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/m]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
subplot(2, 1, 2);
title('$F_s$ to $D$');
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_fs('Dx', 'Fsx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / F_{s,x}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_fs('Dy', 'Fsy'), freqs, 'Hz'))), 'DisplayName', '$\left|D_y / F_{s,y}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_fs('Dz', 'Fsz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{s,z}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_rmc.G_fs('Dx', 'Fsx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_fs('Dy', 'Fsy'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_fs('Dz', 'Fsz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
% #+NAME: fig:sensitivity_dist_rmc
% #+CAPTION: Sensitivity to disturbance once the RMC controller is applied to the system ([[./figs/sensitivity_dist_rmc.png][png]], [[./figs/sensitivity_dist_rmc.pdf][pdf]])
% [[file:figs/sensitivity_dist_rmc.png]]
freqs = logspace(0, 3, 1000);
figure;
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_dist('Dz', 'Frzz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{rz, z}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_dist('Dz', 'Ftyz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{ty, z}\right|$');
plot(freqs, abs(squeeze(freqresp(G.G_dist('Dx', 'Ftyx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / F_{ty, x}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_rmc.G_dist('Dz', 'Frzz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_dist('Dz', 'Ftyz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_dist('Dx', 'Ftyx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
% Damped Plant
freqs = logspace(0, 3, 1000);
figure;
ax1 = subplot(2, 2, 1);
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_cart('Dx', 'Fnx'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G.G_cart('Dy', 'Fny'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G.G_cart('Dz', 'Fnz'), freqs, 'Hz'))));
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_rmc.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), '--');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_cart('Dy', 'Fny'), freqs, 'Hz'))), '--');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), '--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]');
ax2 = subplot(2, 2, 2);
hold on;
plot(freqs, abs(squeeze(freqresp(G.G_cart('Rx', 'Mnx'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G.G_cart('Ry', 'Mny'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(G.G_cart('Rz', 'Mnz'), freqs, 'Hz'))));
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(G_rmc.G_cart('Rx', 'Mnx'), freqs, 'Hz'))), '--');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_cart('Ry', 'Mny'), freqs, 'Hz'))), '--');
plot(freqs, abs(squeeze(freqresp(G_rmc.G_cart('Rz', 'Mnz'), freqs, 'Hz'))), '--');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [rad/(Nm)]'); xlabel('Frequency [Hz]');
ax3 = subplot(2, 2, 3);
hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), 'DisplayName', '$\left|D_x / F_{n,x}\right|$');
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Dy', 'Fny'), freqs, 'Hz'))), 'DisplayName', '$\left|D_y / F_{n,y}\right|$');
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), 'DisplayName', '$\left|D_z / F_{n,z}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, 180/pi*angle(squeeze(freqresp(G_rmc.G_cart('Dx', 'Fnx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_rmc.G_cart('Dy', 'Fny'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_rmc.G_cart('Dz', 'Fnz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend('location', 'northwest');
ax4 = subplot(2, 2, 4);
hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Rx', 'Mnx'), freqs, 'Hz'))), 'DisplayName', '$\left|R_x / M_{n,x}\right|$');
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Ry', 'Mny'), freqs, 'Hz'))), 'DisplayName', '$\left|R_y / M_{n,y}\right|$');
plot(freqs, 180/pi*angle(squeeze(freqresp(G.G_cart('Rz', 'Mnz'), freqs, 'Hz'))), 'DisplayName', '$\left|R_z / M_{n,z}\right|$');
set(gca,'ColorOrderIndex',1);
plot(freqs, 180/pi*angle(squeeze(freqresp(G_rmc.G_cart('Rx', 'Mnx'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_rmc.G_cart('Ry', 'Mny'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_rmc.G_cart('Rz', 'Mnz'), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend('location', 'northwest');
linkaxes([ax1,ax2,ax3,ax4],'x');

BIN
figs/dvf_open_loop_gain.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 KiB

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
figs/plant_dvf_damped.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 KiB

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 KiB

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

View File

@ -3,7 +3,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2019-10-25 ven. 12:32 --> <!-- 2019-10-25 ven. 16:02 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Simscape Uniaxial Model</title> <title>Simscape Uniaxial Model</title>
@ -280,48 +280,48 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#orgd9a890c">1. Simscape Model</a></li> <li><a href="#org119d8dc">1. Simscape Model</a></li>
<li><a href="#orgeafc497">2. Undamped System</a> <li><a href="#org95b633d">2. Undamped System</a>
<ul> <ul>
<li><a href="#org631c716">2.1. Init</a></li> <li><a href="#orga87af67">2.1. Init</a></li>
<li><a href="#orgbbef650">2.2. Identification</a></li> <li><a href="#org2d53583">2.2. Identification</a></li>
<li><a href="#orgb5102fd">2.3. Sensitivity to Disturbances</a></li> <li><a href="#orgc443c0b">2.3. Sensitivity to Disturbances</a></li>
<li><a href="#orgafe8970">2.4. Plant</a></li> <li><a href="#orgdb21910">2.4. Plant</a></li>
</ul> </ul>
</li> </li>
<li><a href="#orgeab4870">3. Integral Force Feedback</a> <li><a href="#org497a34a">3. Integral Force Feedback</a>
<ul> <ul>
<li><a href="#org6cf62a2">3.1. Control Design</a></li> <li><a href="#org90d6383">3.1. Control Design</a></li>
<li><a href="#orgf9a5f33">3.2. Identification</a></li> <li><a href="#orge5c43d3">3.2. Identification</a></li>
<li><a href="#org7a80859">3.3. Sensitivity to Disturbance</a></li> <li><a href="#orgdc6e62f">3.3. Sensitivity to Disturbance</a></li>
<li><a href="#org7bab9e9">3.4. Damped Plant</a></li> <li><a href="#orgf2883d8">3.4. Damped Plant</a></li>
<li><a href="#orgaac01c0">3.5. Conclusion</a></li> <li><a href="#orgb766da3">3.5. Conclusion</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org8d9b463">4. Relative Motion Control</a> <li><a href="#org0216063">4. Relative Motion Control</a>
<ul> <ul>
<li><a href="#orgbf2540a">4.1. Control Design</a></li> <li><a href="#orgda1c98e">4.1. Control Design</a></li>
<li><a href="#org1d106d7">4.2. Identification</a></li> <li><a href="#orge3806a0">4.2. Identification</a></li>
<li><a href="#orgeb7d680">4.3. Sensitivity to Disturbance</a></li> <li><a href="#orge58c47d">4.3. Sensitivity to Disturbance</a></li>
<li><a href="#org573eda0">4.4. Damped Plant</a></li> <li><a href="#org70ec2cf">4.4. Damped Plant</a></li>
<li><a href="#org02ca488">4.5. Conclusion</a></li> <li><a href="#orga845b21">4.5. Conclusion</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org57948ea">5. Direct Velocity Feedback</a> <li><a href="#org7666422">5. Direct Velocity Feedback</a>
<ul> <ul>
<li><a href="#org4b4d061">5.1. Control Design</a></li> <li><a href="#org58e4d64">5.1. Control Design</a></li>
<li><a href="#orgd4f4973">5.2. Identification</a></li> <li><a href="#org7e8b911">5.2. Identification</a></li>
<li><a href="#org6cfeae5">5.3. Sensitivity to Disturbance</a></li> <li><a href="#org2adcafe">5.3. Sensitivity to Disturbance</a></li>
<li><a href="#org89e0408">5.4. Damped Plant</a></li> <li><a href="#orge8b5bd9">5.4. Damped Plant</a></li>
<li><a href="#orgc27bce5">5.5. Conclusion</a></li> <li><a href="#org22d6515">5.5. Conclusion</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org6dd07d9">6. Comparison of Active Damping Techniques</a> <li><a href="#org55010b4">6. Comparison of Active Damping Techniques</a>
<ul> <ul>
<li><a href="#orgd62929a">6.1. Load the plants</a></li> <li><a href="#org5cb1e25">6.1. Load the plants</a></li>
<li><a href="#orgbd35b93">6.2. Sensitivity to Disturbance</a></li> <li><a href="#orgc746216">6.2. Sensitivity to Disturbance</a></li>
<li><a href="#org72ab5fd">6.3. Damped Plant</a></li> <li><a href="#orgcd1790f">6.3. Damped Plant</a></li>
<li><a href="#org2c43078">6.4. Conclusion</a></li> <li><a href="#org9a602cb">6.4. Conclusion</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
@ -336,11 +336,11 @@ The idea is to use the same model as the full Simscape Model but to restrict the
This is done in order to more easily study the system and evaluate control techniques. This is done in order to more easily study the system and evaluate control techniques.
</p> </p>
<div id="outline-container-orgd9a890c" class="outline-2"> <div id="outline-container-org119d8dc" class="outline-2">
<h2 id="orgd9a890c"><span class="section-number-2">1</span> Simscape Model</h2> <h2 id="org119d8dc"><span class="section-number-2">1</span> Simscape Model</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-1">
<p> <p>
A schematic of the uniaxial model used for simulations is represented in figure <a href="#org9234e2b">1</a>. A schematic of the uniaxial model used for simulations is represented in figure <a href="#org20bfb11">1</a>.
</p> </p>
<p> <p>
@ -384,7 +384,7 @@ The control signal \(u\) is:
</ul> </ul>
<div id="org9234e2b" class="figure"> <div id="org20bfb11" class="figure">
<p><img src="figs/uniaxial-model-nass-flexible.png" alt="uniaxial-model-nass-flexible.png" /> <p><img src="figs/uniaxial-model-nass-flexible.png" alt="uniaxial-model-nass-flexible.png" />
</p> </p>
<p><span class="figure-number">Figure 1: </span>Schematic of the uniaxial model used</p> <p><span class="figure-number">Figure 1: </span>Schematic of the uniaxial model used</p>
@ -393,11 +393,11 @@ The control signal \(u\) is:
<p> <p>
Few active damping techniques will be compared in order to decide which sensor is to be included in the system. Few active damping techniques will be compared in order to decide which sensor is to be included in the system.
Schematics of the active damping techniques are displayed in figure <a href="#org49f5486">2</a>. Schematics of the active damping techniques are displayed in figure <a href="#org2eb3599">2</a>.
</p> </p>
<div id="org49f5486" class="figure"> <div id="org2eb3599" class="figure">
<p><img src="figs/uniaxial-model-nass-flexible-active-damping.png" alt="uniaxial-model-nass-flexible-active-damping.png" /> <p><img src="figs/uniaxial-model-nass-flexible-active-damping.png" alt="uniaxial-model-nass-flexible-active-damping.png" />
</p> </p>
<p><span class="figure-number">Figure 2: </span>Comparison of used active damping techniques</p> <p><span class="figure-number">Figure 2: </span>Comparison of used active damping techniques</p>
@ -405,16 +405,16 @@ Schematics of the active damping techniques are displayed in figure <a href="#or
</div> </div>
</div> </div>
<div id="outline-container-orgeafc497" class="outline-2"> <div id="outline-container-org95b633d" class="outline-2">
<h2 id="orgeafc497"><span class="section-number-2">2</span> Undamped System</h2> <h2 id="org95b633d"><span class="section-number-2">2</span> Undamped System</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-2">
<p> <p>
Let's start by study the undamped system. Let's start by study the undamped system.
</p> </p>
</div> </div>
<div id="outline-container-org631c716" class="outline-3"> <div id="outline-container-orga87af67" class="outline-3">
<h3 id="org631c716"><span class="section-number-3">2.1</span> Init</h3> <h3 id="orga87af67"><span class="section-number-3">2.1</span> Init</h3>
<div class="outline-text-3" id="text-2-1"> <div class="outline-text-3" id="text-2-1">
<p> <p>
We initialize all the stages with the default parameters. We initialize all the stages with the default parameters.
@ -426,8 +426,8 @@ All the controllers are set to 0 (Open Loop).
</p> </p>
</div> </div>
</div> </div>
<div id="outline-container-orgbbef650" class="outline-3"> <div id="outline-container-org2d53583" class="outline-3">
<h3 id="orgbbef650"><span class="section-number-3">2.2</span> Identification</h3> <h3 id="org2d53583"><span class="section-number-3">2.2</span> Identification</h3>
<div class="outline-text-3" id="text-2-2"> <div class="outline-text-3" id="text-2-2">
<p> <p>
We identify the dynamics of the system. We identify the dynamics of the system.
@ -490,19 +490,19 @@ Finally, we save the identified system dynamics for further analysis.
</div> </div>
</div> </div>
<div id="outline-container-orgb5102fd" class="outline-3"> <div id="outline-container-orgc443c0b" class="outline-3">
<h3 id="orgb5102fd"><span class="section-number-3">2.3</span> Sensitivity to Disturbances</h3> <h3 id="orgc443c0b"><span class="section-number-3">2.3</span> Sensitivity to Disturbances</h3>
<div class="outline-text-3" id="text-2-3"> <div class="outline-text-3" id="text-2-3">
<p> <p>
We show several plots representing the sensitivity to disturbances: We show several plots representing the sensitivity to disturbances:
</p> </p>
<ul class="org-ul"> <ul class="org-ul">
<li>in figure <a href="#orge3abf0f">3</a> the transfer functions from ground motion \(D_w\) to the sample position \(D\) and the transfer function from direct force on the sample \(F_s\) to the sample position \(D\) are shown</li> <li>in figure <a href="#org4d3097e">3</a> the transfer functions from ground motion \(D_w\) to the sample position \(D\) and the transfer function from direct force on the sample \(F_s\) to the sample position \(D\) are shown</li>
<li>in figure <a href="#org25d95cb">4</a>, it is the effect of parasitic forces of the positioning stages (\(F_{ty}\) and \(F_{rz}\)) on the position \(D\) of the sample that are shown</li> <li>in figure <a href="#orgfd7633d">4</a>, it is the effect of parasitic forces of the positioning stages (\(F_{ty}\) and \(F_{rz}\)) on the position \(D\) of the sample that are shown</li>
</ul> </ul>
<div id="orge3abf0f" class="figure"> <div id="org4d3097e" class="figure">
<p><img src="figs/uniaxial-sensitivity-disturbances.png" alt="uniaxial-sensitivity-disturbances.png" /> <p><img src="figs/uniaxial-sensitivity-disturbances.png" alt="uniaxial-sensitivity-disturbances.png" />
</p> </p>
<p><span class="figure-number">Figure 3: </span>Sensitivity to disturbances (<a href="./figs/uniaxial-sensitivity-disturbances.png">png</a>, <a href="./figs/uniaxial-sensitivity-disturbances.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 3: </span>Sensitivity to disturbances (<a href="./figs/uniaxial-sensitivity-disturbances.png">png</a>, <a href="./figs/uniaxial-sensitivity-disturbances.pdf">pdf</a>)</p>
@ -510,7 +510,7 @@ We show several plots representing the sensitivity to disturbances:
<div id="org25d95cb" class="figure"> <div id="orgfd7633d" class="figure">
<p><img src="figs/uniaxial-sensitivity-force-dist.png" alt="uniaxial-sensitivity-force-dist.png" /> <p><img src="figs/uniaxial-sensitivity-force-dist.png" alt="uniaxial-sensitivity-force-dist.png" />
</p> </p>
<p><span class="figure-number">Figure 4: </span>Sensitivity to disturbances (<a href="./figs/uniaxial-sensitivity-force-dist.png">png</a>, <a href="./figs/uniaxial-sensitivity-force-dist.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 4: </span>Sensitivity to disturbances (<a href="./figs/uniaxial-sensitivity-force-dist.png">png</a>, <a href="./figs/uniaxial-sensitivity-force-dist.pdf">pdf</a>)</p>
@ -518,16 +518,16 @@ We show several plots representing the sensitivity to disturbances:
</div> </div>
</div> </div>
<div id="outline-container-orgafe8970" class="outline-3"> <div id="outline-container-orgdb21910" class="outline-3">
<h3 id="orgafe8970"><span class="section-number-3">2.4</span> Plant</h3> <h3 id="orgdb21910"><span class="section-number-3">2.4</span> Plant</h3>
<div class="outline-text-3" id="text-2-4"> <div class="outline-text-3" id="text-2-4">
<p> <p>
The transfer function from the force \(F\) applied by the nano-hexapod to the position of the sample \(D\) is shown in figure <a href="#org62d1d12">5</a>. The transfer function from the force \(F\) applied by the nano-hexapod to the position of the sample \(D\) is shown in figure <a href="#orgee21d6a">5</a>.
It corresponds to the plant to control. It corresponds to the plant to control.
</p> </p>
<div id="org62d1d12" class="figure"> <div id="orgee21d6a" class="figure">
<p><img src="figs/uniaxial-plant.png" alt="uniaxial-plant.png" /> <p><img src="figs/uniaxial-plant.png" alt="uniaxial-plant.png" />
</p> </p>
<p><span class="figure-number">Figure 5: </span>Bode plot of the Plant (<a href="./figs/uniaxial-plant.png">png</a>, <a href="./figs/uniaxial-plant.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 5: </span>Bode plot of the Plant (<a href="./figs/uniaxial-plant.png">png</a>, <a href="./figs/uniaxial-plant.pdf">pdf</a>)</p>
@ -536,21 +536,21 @@ It corresponds to the plant to control.
</div> </div>
</div> </div>
<div id="outline-container-orgeab4870" class="outline-2"> <div id="outline-container-org497a34a" class="outline-2">
<h2 id="orgeab4870"><span class="section-number-2">3</span> Integral Force Feedback</h2> <h2 id="org497a34a"><span class="section-number-2">3</span> Integral Force Feedback</h2>
<div class="outline-text-2" id="text-3"> <div class="outline-text-2" id="text-3">
<p> <p>
<a id="org04c8f6e"></a> <a id="org61a9736"></a>
</p> </p>
<div id="orge50f87e" class="figure"> <div id="orgf30b3b3" class="figure">
<p><img src="figs/uniaxial-model-nass-flexible-iff.png" alt="uniaxial-model-nass-flexible-iff.png" /> <p><img src="figs/uniaxial-model-nass-flexible-iff.png" alt="uniaxial-model-nass-flexible-iff.png" />
</p> </p>
<p><span class="figure-number">Figure 6: </span>Uniaxial IFF Control Schematic</p> <p><span class="figure-number">Figure 6: </span>Uniaxial IFF Control Schematic</p>
</div> </div>
</div> </div>
<div id="outline-container-org6cf62a2" class="outline-3"> <div id="outline-container-org90d6383" class="outline-3">
<h3 id="org6cf62a2"><span class="section-number-3">3.1</span> Control Design</h3> <h3 id="org90d6383"><span class="section-number-3">3.1</span> Control Design</h3>
<div class="outline-text-3" id="text-3-1"> <div class="outline-text-3" id="text-3-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span><span class="org-rainbow-delimiters-depth-1">)</span>; <pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
@ -562,7 +562,7 @@ Let's look at the transfer function from actuator forces in the nano-hexapod to
</p> </p>
<div id="org26ea3c1" class="figure"> <div id="org13e2d05" class="figure">
<p><img src="figs/uniaxial_iff_plant.png" alt="uniaxial_iff_plant.png" /> <p><img src="figs/uniaxial_iff_plant.png" alt="uniaxial_iff_plant.png" />
</p> </p>
<p><span class="figure-number">Figure 7: </span>Transfer function from forces applied in the legs to force sensor (<a href="./figs/uniaxial_iff_plant.png">png</a>, <a href="./figs/uniaxial_iff_plant.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 7: </span>Transfer function from forces applied in the legs to force sensor (<a href="./figs/uniaxial_iff_plant.png">png</a>, <a href="./figs/uniaxial_iff_plant.pdf">pdf</a>)</p>
@ -577,7 +577,7 @@ The controller for each pair of actuator/sensor is:
</div> </div>
<div id="org27d1bb0" class="figure"> <div id="org928425f" class="figure">
<p><img src="figs/uniaxial_iff_open_loop.png" alt="uniaxial_iff_open_loop.png" /> <p><img src="figs/uniaxial_iff_open_loop.png" alt="uniaxial_iff_open_loop.png" />
</p> </p>
<p><span class="figure-number">Figure 8: </span>Loop Gain for the Integral Force Feedback (<a href="./figs/uniaxial_iff_open_loop.png">png</a>, <a href="./figs/uniaxial_iff_open_loop.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 8: </span>Loop Gain for the Integral Force Feedback (<a href="./figs/uniaxial_iff_open_loop.png">png</a>, <a href="./figs/uniaxial_iff_open_loop.pdf">pdf</a>)</p>
@ -585,8 +585,8 @@ The controller for each pair of actuator/sensor is:
</div> </div>
</div> </div>
<div id="outline-container-orgf9a5f33" class="outline-3"> <div id="outline-container-orge5c43d3" class="outline-3">
<h3 id="orgf9a5f33"><span class="section-number-3">3.2</span> Identification</h3> <h3 id="orge5c43d3"><span class="section-number-3">3.2</span> Identification</h3>
<div class="outline-text-3" id="text-3-2"> <div class="outline-text-3" id="text-3-2">
<p> <p>
Let's initialize the system prior to identification. Let's initialize the system prior to identification.
@ -669,18 +669,18 @@ G_iff.OutputName = <span class="org-rainbow-delimiters-depth-1">{</span><span cl
</div> </div>
</div> </div>
<div id="outline-container-org7a80859" class="outline-3"> <div id="outline-container-orgdc6e62f" class="outline-3">
<h3 id="org7a80859"><span class="section-number-3">3.3</span> Sensitivity to Disturbance</h3> <h3 id="orgdc6e62f"><span class="section-number-3">3.3</span> Sensitivity to Disturbance</h3>
<div class="outline-text-3" id="text-3-3"> <div class="outline-text-3" id="text-3-3">
<div id="orgca12220" class="figure"> <div id="org8df8488" class="figure">
<p><img src="figs/uniaxial_sensitivity_dist_iff.png" alt="uniaxial_sensitivity_dist_iff.png" /> <p><img src="figs/uniaxial_sensitivity_dist_iff.png" alt="uniaxial_sensitivity_dist_iff.png" />
</p> </p>
<p><span class="figure-number">Figure 9: </span>Sensitivity to disturbance once the IFF controller is applied to the system (<a href="./figs/uniaxial_sensitivity_dist_iff.png">png</a>, <a href="./figs/uniaxial_sensitivity_dist_iff.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 9: </span>Sensitivity to disturbance once the IFF controller is applied to the system (<a href="./figs/uniaxial_sensitivity_dist_iff.png">png</a>, <a href="./figs/uniaxial_sensitivity_dist_iff.pdf">pdf</a>)</p>
</div> </div>
<div id="org19c25c8" class="figure"> <div id="org6003ced" class="figure">
<p><img src="figs/uniaxial_sensitivity_dist_stages_iff.png" alt="uniaxial_sensitivity_dist_stages_iff.png" /> <p><img src="figs/uniaxial_sensitivity_dist_stages_iff.png" alt="uniaxial_sensitivity_dist_stages_iff.png" />
</p> </p>
<p><span class="figure-number">Figure 10: </span>Sensitivity to force disturbances in various stages when IFF is applied (<a href="./figs/uniaxial_sensitivity_dist_stages_iff.png">png</a>, <a href="./figs/uniaxial_sensitivity_dist_stages_iff.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 10: </span>Sensitivity to force disturbances in various stages when IFF is applied (<a href="./figs/uniaxial_sensitivity_dist_stages_iff.png">png</a>, <a href="./figs/uniaxial_sensitivity_dist_stages_iff.pdf">pdf</a>)</p>
@ -688,11 +688,11 @@ G_iff.OutputName = <span class="org-rainbow-delimiters-depth-1">{</span><span cl
</div> </div>
</div> </div>
<div id="outline-container-org7bab9e9" class="outline-3"> <div id="outline-container-orgf2883d8" class="outline-3">
<h3 id="org7bab9e9"><span class="section-number-3">3.4</span> Damped Plant</h3> <h3 id="orgf2883d8"><span class="section-number-3">3.4</span> Damped Plant</h3>
<div class="outline-text-3" id="text-3-4"> <div class="outline-text-3" id="text-3-4">
<div id="org60ea1f1" class="figure"> <div id="org2071f90" class="figure">
<p><img src="figs/uniaxial_plant_iff_damped.png" alt="uniaxial_plant_iff_damped.png" /> <p><img src="figs/uniaxial_plant_iff_damped.png" alt="uniaxial_plant_iff_damped.png" />
</p> </p>
<p><span class="figure-number">Figure 11: </span>Damped Plant after IFF is applied (<a href="./figs/uniaxial_plant_iff_damped.png">png</a>, <a href="./figs/uniaxial_plant_iff_damped.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 11: </span>Damped Plant after IFF is applied (<a href="./figs/uniaxial_plant_iff_damped.png">png</a>, <a href="./figs/uniaxial_plant_iff_damped.pdf">pdf</a>)</p>
@ -700,8 +700,8 @@ G_iff.OutputName = <span class="org-rainbow-delimiters-depth-1">{</span><span cl
</div> </div>
</div> </div>
<div id="outline-container-orgaac01c0" class="outline-3"> <div id="outline-container-orgb766da3" class="outline-3">
<h3 id="orgaac01c0"><span class="section-number-3">3.5</span> Conclusion</h3> <h3 id="orgb766da3"><span class="section-number-3">3.5</span> Conclusion</h3>
<div class="outline-text-3" id="text-3-5"> <div class="outline-text-3" id="text-3-5">
<div class="important"> <div class="important">
<p> <p>
@ -713,25 +713,25 @@ Integral Force Feedback:
</div> </div>
</div> </div>
<div id="outline-container-org8d9b463" class="outline-2"> <div id="outline-container-org0216063" class="outline-2">
<h2 id="org8d9b463"><span class="section-number-2">4</span> Relative Motion Control</h2> <h2 id="org0216063"><span class="section-number-2">4</span> Relative Motion Control</h2>
<div class="outline-text-2" id="text-4"> <div class="outline-text-2" id="text-4">
<p> <p>
<a id="orgdc4ae31"></a> <a id="orgcf7a709"></a>
</p> </p>
<p> <p>
In the Relative Motion Control (RMC), a derivative feedback is applied between the measured actuator displacement to the actuator force input. In the Relative Motion Control (RMC), a derivative feedback is applied between the measured actuator displacement to the actuator force input.
</p> </p>
<div id="org46f85ef" class="figure"> <div id="org8ed07c5" class="figure">
<p><img src="figs/uniaxial-model-nass-flexible-rmc.png" alt="uniaxial-model-nass-flexible-rmc.png" /> <p><img src="figs/uniaxial-model-nass-flexible-rmc.png" alt="uniaxial-model-nass-flexible-rmc.png" />
</p> </p>
<p><span class="figure-number">Figure 12: </span>Uniaxial RMC Control Schematic</p> <p><span class="figure-number">Figure 12: </span>Uniaxial RMC Control Schematic</p>
</div> </div>
</div> </div>
<div id="outline-container-orgbf2540a" class="outline-3"> <div id="outline-container-orgda1c98e" class="outline-3">
<h3 id="orgbf2540a"><span class="section-number-3">4.1</span> Control Design</h3> <h3 id="orgda1c98e"><span class="section-number-3">4.1</span> Control Design</h3>
<div class="outline-text-3" id="text-4-1"> <div class="outline-text-3" id="text-4-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span><span class="org-rainbow-delimiters-depth-1">)</span>; <pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
@ -743,7 +743,7 @@ Let's look at the transfer function from actuator forces in the nano-hexapod to
</p> </p>
<div id="orgc47e343" class="figure"> <div id="org75fbb9f" class="figure">
<p><img src="figs/uniaxial_rmc_plant.png" alt="uniaxial_rmc_plant.png" /> <p><img src="figs/uniaxial_rmc_plant.png" alt="uniaxial_rmc_plant.png" />
</p> </p>
<p><span class="figure-number">Figure 13: </span>Transfer function from forces applied in the legs to leg displacement sensor (<a href="./figs/uniaxial_rmc_plant.png">png</a>, <a href="./figs/uniaxial_rmc_plant.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 13: </span>Transfer function from forces applied in the legs to leg displacement sensor (<a href="./figs/uniaxial_rmc_plant.png">png</a>, <a href="./figs/uniaxial_rmc_plant.pdf">pdf</a>)</p>
@ -759,7 +759,7 @@ A Low pass Filter is added to make the controller transfer function proper.
</div> </div>
<div id="org9c157b6" class="figure"> <div id="orgc5d2eb6" class="figure">
<p><img src="figs/uniaxial_rmc_open_loop.png" alt="uniaxial_rmc_open_loop.png" /> <p><img src="figs/uniaxial_rmc_open_loop.png" alt="uniaxial_rmc_open_loop.png" />
</p> </p>
<p><span class="figure-number">Figure 14: </span>Loop Gain for the Integral Force Feedback (<a href="./figs/uniaxial_rmc_open_loop.png">png</a>, <a href="./figs/uniaxial_rmc_open_loop.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 14: </span>Loop Gain for the Integral Force Feedback (<a href="./figs/uniaxial_rmc_open_loop.png">png</a>, <a href="./figs/uniaxial_rmc_open_loop.pdf">pdf</a>)</p>
@ -767,8 +767,8 @@ A Low pass Filter is added to make the controller transfer function proper.
</div> </div>
</div> </div>
<div id="outline-container-org1d106d7" class="outline-3"> <div id="outline-container-orge3806a0" class="outline-3">
<h3 id="org1d106d7"><span class="section-number-3">4.2</span> Identification</h3> <h3 id="orge3806a0"><span class="section-number-3">4.2</span> Identification</h3>
<div class="outline-text-3" id="text-4-2"> <div class="outline-text-3" id="text-4-2">
<p> <p>
Let's initialize the system prior to identification. Let's initialize the system prior to identification.
@ -852,18 +852,18 @@ G_rmc.OutputName = <span class="org-rainbow-delimiters-depth-1">{</span><span cl
</div> </div>
<div id="outline-container-orgeb7d680" class="outline-3"> <div id="outline-container-orge58c47d" class="outline-3">
<h3 id="orgeb7d680"><span class="section-number-3">4.3</span> Sensitivity to Disturbance</h3> <h3 id="orge58c47d"><span class="section-number-3">4.3</span> Sensitivity to Disturbance</h3>
<div class="outline-text-3" id="text-4-3"> <div class="outline-text-3" id="text-4-3">
<div id="org7a8bd68" class="figure"> <div id="orgd910119" class="figure">
<p><img src="figs/uniaxial_sensitivity_dist_rmc.png" alt="uniaxial_sensitivity_dist_rmc.png" /> <p><img src="figs/uniaxial_sensitivity_dist_rmc.png" alt="uniaxial_sensitivity_dist_rmc.png" />
</p> </p>
<p><span class="figure-number">Figure 15: </span>Sensitivity to disturbance once the RMC controller is applied to the system (<a href="./figs/uniaxial_sensitivity_dist_rmc.png">png</a>, <a href="./figs/uniaxial_sensitivity_dist_rmc.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 15: </span>Sensitivity to disturbance once the RMC controller is applied to the system (<a href="./figs/uniaxial_sensitivity_dist_rmc.png">png</a>, <a href="./figs/uniaxial_sensitivity_dist_rmc.pdf">pdf</a>)</p>
</div> </div>
<div id="orgb8fed93" class="figure"> <div id="org6610f06" class="figure">
<p><img src="figs/uniaxial_sensitivity_dist_stages_rmc.png" alt="uniaxial_sensitivity_dist_stages_rmc.png" /> <p><img src="figs/uniaxial_sensitivity_dist_stages_rmc.png" alt="uniaxial_sensitivity_dist_stages_rmc.png" />
</p> </p>
<p><span class="figure-number">Figure 16: </span>Sensitivity to force disturbances in various stages when RMC is applied (<a href="./figs/uniaxial_sensitivity_dist_stages_rmc.png">png</a>, <a href="./figs/uniaxial_sensitivity_dist_stages_rmc.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 16: </span>Sensitivity to force disturbances in various stages when RMC is applied (<a href="./figs/uniaxial_sensitivity_dist_stages_rmc.png">png</a>, <a href="./figs/uniaxial_sensitivity_dist_stages_rmc.pdf">pdf</a>)</p>
@ -871,11 +871,11 @@ G_rmc.OutputName = <span class="org-rainbow-delimiters-depth-1">{</span><span cl
</div> </div>
</div> </div>
<div id="outline-container-org573eda0" class="outline-3"> <div id="outline-container-org70ec2cf" class="outline-3">
<h3 id="org573eda0"><span class="section-number-3">4.4</span> Damped Plant</h3> <h3 id="org70ec2cf"><span class="section-number-3">4.4</span> Damped Plant</h3>
<div class="outline-text-3" id="text-4-4"> <div class="outline-text-3" id="text-4-4">
<div id="org1f8e935" class="figure"> <div id="org7508a42" class="figure">
<p><img src="figs/uniaxial_plant_rmc_damped.png" alt="uniaxial_plant_rmc_damped.png" /> <p><img src="figs/uniaxial_plant_rmc_damped.png" alt="uniaxial_plant_rmc_damped.png" />
</p> </p>
<p><span class="figure-number">Figure 17: </span>Damped Plant after RMC is applied (<a href="./figs/uniaxial_plant_rmc_damped.png">png</a>, <a href="./figs/uniaxial_plant_rmc_damped.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 17: </span>Damped Plant after RMC is applied (<a href="./figs/uniaxial_plant_rmc_damped.png">png</a>, <a href="./figs/uniaxial_plant_rmc_damped.pdf">pdf</a>)</p>
@ -883,8 +883,8 @@ G_rmc.OutputName = <span class="org-rainbow-delimiters-depth-1">{</span><span cl
</div> </div>
</div> </div>
<div id="outline-container-org02ca488" class="outline-3"> <div id="outline-container-orga845b21" class="outline-3">
<h3 id="org02ca488"><span class="section-number-3">4.5</span> Conclusion</h3> <h3 id="orga845b21"><span class="section-number-3">4.5</span> Conclusion</h3>
<div class="outline-text-3" id="text-4-5"> <div class="outline-text-3" id="text-4-5">
<div class="important"> <div class="important">
<p> <p>
@ -896,25 +896,25 @@ Relative Motion Control:
</div> </div>
</div> </div>
<div id="outline-container-org57948ea" class="outline-2"> <div id="outline-container-org7666422" class="outline-2">
<h2 id="org57948ea"><span class="section-number-2">5</span> Direct Velocity Feedback</h2> <h2 id="org7666422"><span class="section-number-2">5</span> Direct Velocity Feedback</h2>
<div class="outline-text-2" id="text-5"> <div class="outline-text-2" id="text-5">
<p> <p>
<a id="orgdd11541"></a> <a id="org6b8afcf"></a>
</p> </p>
<p> <p>
In the Relative Motion Control (RMC), a feedback is applied between the measured velocity of the platform to the actuator force input. In the Relative Motion Control (RMC), a feedback is applied between the measured velocity of the platform to the actuator force input.
</p> </p>
<div id="org0fcd7e7" class="figure"> <div id="orga86445d" class="figure">
<p><img src="figs/uniaxial-model-nass-flexible-dvf.png" alt="uniaxial-model-nass-flexible-dvf.png" /> <p><img src="figs/uniaxial-model-nass-flexible-dvf.png" alt="uniaxial-model-nass-flexible-dvf.png" />
</p> </p>
<p><span class="figure-number">Figure 18: </span>Uniaxial DVF Control Schematic</p> <p><span class="figure-number">Figure 18: </span>Uniaxial DVF Control Schematic</p>
</div> </div>
</div> </div>
<div id="outline-container-org4b4d061" class="outline-3"> <div id="outline-container-org58e4d64" class="outline-3">
<h3 id="org4b4d061"><span class="section-number-3">5.1</span> Control Design</h3> <h3 id="org58e4d64"><span class="section-number-3">5.1</span> Control Design</h3>
<div class="outline-text-3" id="text-5-1"> <div class="outline-text-3" id="text-5-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span><span class="org-rainbow-delimiters-depth-1">)</span>; <pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
@ -922,7 +922,7 @@ In the Relative Motion Control (RMC), a feedback is applied between the measured
</div> </div>
<div id="orgbf7145f" class="figure"> <div id="orgf4888fb" class="figure">
<p><img src="figs/uniaxial_dvf_plant.png" alt="uniaxial_dvf_plant.png" /> <p><img src="figs/uniaxial_dvf_plant.png" alt="uniaxial_dvf_plant.png" />
</p> </p>
<p><span class="figure-number">Figure 19: </span>Transfer function from forces applied in the legs to leg velocity sensor (<a href="./figs/uniaxial_dvf_plant.png">png</a>, <a href="./figs/uniaxial_dvf_plant.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 19: </span>Transfer function from forces applied in the legs to leg velocity sensor (<a href="./figs/uniaxial_dvf_plant.png">png</a>, <a href="./figs/uniaxial_dvf_plant.pdf">pdf</a>)</p>
@ -934,7 +934,7 @@ In the Relative Motion Control (RMC), a feedback is applied between the measured
</div> </div>
<div id="org1b6adf4" class="figure"> <div id="org1a62235" class="figure">
<p><img src="figs/uniaxial_dvf_loop_gain.png" alt="uniaxial_dvf_loop_gain.png" /> <p><img src="figs/uniaxial_dvf_loop_gain.png" alt="uniaxial_dvf_loop_gain.png" />
</p> </p>
<p><span class="figure-number">Figure 20: </span>Transfer function from forces applied in the legs to leg velocity sensor (<a href="./figs/uniaxial_dvf_loop_gain.png">png</a>, <a href="./figs/uniaxial_dvf_loop_gain.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 20: </span>Transfer function from forces applied in the legs to leg velocity sensor (<a href="./figs/uniaxial_dvf_loop_gain.png">png</a>, <a href="./figs/uniaxial_dvf_loop_gain.pdf">pdf</a>)</p>
@ -942,8 +942,8 @@ In the Relative Motion Control (RMC), a feedback is applied between the measured
</div> </div>
</div> </div>
<div id="outline-container-orgd4f4973" class="outline-3"> <div id="outline-container-org7e8b911" class="outline-3">
<h3 id="orgd4f4973"><span class="section-number-3">5.2</span> Identification</h3> <h3 id="org7e8b911"><span class="section-number-3">5.2</span> Identification</h3>
<div class="outline-text-3" id="text-5-2"> <div class="outline-text-3" id="text-5-2">
<p> <p>
Let's initialize the system prior to identification. Let's initialize the system prior to identification.
@ -1026,18 +1026,18 @@ G_dvf.OutputName = <span class="org-rainbow-delimiters-depth-1">{</span><span cl
</div> </div>
</div> </div>
<div id="outline-container-org6cfeae5" class="outline-3"> <div id="outline-container-org2adcafe" class="outline-3">
<h3 id="org6cfeae5"><span class="section-number-3">5.3</span> Sensitivity to Disturbance</h3> <h3 id="org2adcafe"><span class="section-number-3">5.3</span> Sensitivity to Disturbance</h3>
<div class="outline-text-3" id="text-5-3"> <div class="outline-text-3" id="text-5-3">
<div id="org6fb6e94" class="figure"> <div id="org9ca6224" class="figure">
<p><img src="figs/uniaxial_sensitivity_dist_dvf.png" alt="uniaxial_sensitivity_dist_dvf.png" /> <p><img src="figs/uniaxial_sensitivity_dist_dvf.png" alt="uniaxial_sensitivity_dist_dvf.png" />
</p> </p>
<p><span class="figure-number">Figure 21: </span>Sensitivity to disturbance once the DVF controller is applied to the system (<a href="./figs/uniaxial_sensitivity_dist_dvf.png">png</a>, <a href="./figs/uniaxial_sensitivity_dist_dvf.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 21: </span>Sensitivity to disturbance once the DVF controller is applied to the system (<a href="./figs/uniaxial_sensitivity_dist_dvf.png">png</a>, <a href="./figs/uniaxial_sensitivity_dist_dvf.pdf">pdf</a>)</p>
</div> </div>
<div id="org6f13385" class="figure"> <div id="orgd0ada58" class="figure">
<p><img src="figs/uniaxial_sensitivity_dist_stages_dvf.png" alt="uniaxial_sensitivity_dist_stages_dvf.png" /> <p><img src="figs/uniaxial_sensitivity_dist_stages_dvf.png" alt="uniaxial_sensitivity_dist_stages_dvf.png" />
</p> </p>
<p><span class="figure-number">Figure 22: </span>Sensitivity to force disturbances in various stages when DVF is applied (<a href="./figs/uniaxial_sensitivity_dist_stages_dvf.png">png</a>, <a href="./figs/uniaxial_sensitivity_dist_stages_dvf.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 22: </span>Sensitivity to force disturbances in various stages when DVF is applied (<a href="./figs/uniaxial_sensitivity_dist_stages_dvf.png">png</a>, <a href="./figs/uniaxial_sensitivity_dist_stages_dvf.pdf">pdf</a>)</p>
@ -1045,11 +1045,11 @@ G_dvf.OutputName = <span class="org-rainbow-delimiters-depth-1">{</span><span cl
</div> </div>
</div> </div>
<div id="outline-container-org89e0408" class="outline-3"> <div id="outline-container-orge8b5bd9" class="outline-3">
<h3 id="org89e0408"><span class="section-number-3">5.4</span> Damped Plant</h3> <h3 id="orge8b5bd9"><span class="section-number-3">5.4</span> Damped Plant</h3>
<div class="outline-text-3" id="text-5-4"> <div class="outline-text-3" id="text-5-4">
<div id="org7051238" class="figure"> <div id="org55c6262" class="figure">
<p><img src="figs/uniaxial_plant_dvf_damped.png" alt="uniaxial_plant_dvf_damped.png" /> <p><img src="figs/uniaxial_plant_dvf_damped.png" alt="uniaxial_plant_dvf_damped.png" />
</p> </p>
<p><span class="figure-number">Figure 23: </span>Damped Plant after DVF is applied (<a href="./figs/uniaxial_plant_dvf_damped.png">png</a>, <a href="./figs/uniaxial_plant_dvf_damped.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 23: </span>Damped Plant after DVF is applied (<a href="./figs/uniaxial_plant_dvf_damped.png">png</a>, <a href="./figs/uniaxial_plant_dvf_damped.pdf">pdf</a>)</p>
@ -1057,8 +1057,8 @@ G_dvf.OutputName = <span class="org-rainbow-delimiters-depth-1">{</span><span cl
</div> </div>
</div> </div>
<div id="outline-container-orgc27bce5" class="outline-3"> <div id="outline-container-org22d6515" class="outline-3">
<h3 id="orgc27bce5"><span class="section-number-3">5.5</span> Conclusion</h3> <h3 id="org22d6515"><span class="section-number-3">5.5</span> Conclusion</h3>
<div class="outline-text-3" id="text-5-5"> <div class="outline-text-3" id="text-5-5">
<div class="important"> <div class="important">
<p> <p>
@ -1069,15 +1069,15 @@ Direct Velocity Feedback:
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org6dd07d9" class="outline-2"> <div id="outline-container-org55010b4" class="outline-2">
<h2 id="org6dd07d9"><span class="section-number-2">6</span> Comparison of Active Damping Techniques</h2> <h2 id="org55010b4"><span class="section-number-2">6</span> Comparison of Active Damping Techniques</h2>
<div class="outline-text-2" id="text-6"> <div class="outline-text-2" id="text-6">
<p> <p>
<a id="org5272a4c"></a> <a id="org9b9c235"></a>
</p> </p>
</div> </div>
<div id="outline-container-orgd62929a" class="outline-3"> <div id="outline-container-org5cb1e25" class="outline-3">
<h3 id="orgd62929a"><span class="section-number-3">6.1</span> Load the plants</h3> <h3 id="org5cb1e25"><span class="section-number-3">6.1</span> Load the plants</h3>
<div class="outline-text-3" id="text-6-1"> <div class="outline-text-3" id="text-6-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'G_rmc'</span>, <span class="org-string">'G_dvf'</span><span class="org-rainbow-delimiters-depth-1">)</span>; <pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'G_rmc'</span>, <span class="org-string">'G_dvf'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
@ -1086,11 +1086,11 @@ Direct Velocity Feedback:
</div> </div>
</div> </div>
<div id="outline-container-orgbd35b93" class="outline-3"> <div id="outline-container-orgc746216" class="outline-3">
<h3 id="orgbd35b93"><span class="section-number-3">6.2</span> Sensitivity to Disturbance</h3> <h3 id="orgc746216"><span class="section-number-3">6.2</span> Sensitivity to Disturbance</h3>
<div class="outline-text-3" id="text-6-2"> <div class="outline-text-3" id="text-6-2">
<div id="org5eda09f" class="figure"> <div id="orga056e76" class="figure">
<p><img src="figs/uniaxial_sensitivity_ground_motion.png" alt="uniaxial_sensitivity_ground_motion.png" /> <p><img src="figs/uniaxial_sensitivity_ground_motion.png" alt="uniaxial_sensitivity_ground_motion.png" />
</p> </p>
<p><span class="figure-number">Figure 24: </span>Sensitivity to Ground Motion - Comparison (<a href="./figs/uniaxial_sensitivity_ground_motion.png">png</a>, <a href="./figs/uniaxial_sensitivity_ground_motion.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 24: </span>Sensitivity to Ground Motion - Comparison (<a href="./figs/uniaxial_sensitivity_ground_motion.png">png</a>, <a href="./figs/uniaxial_sensitivity_ground_motion.pdf">pdf</a>)</p>
@ -1098,21 +1098,21 @@ Direct Velocity Feedback:
<div id="org1fae0e7" class="figure"> <div id="org5bfe138" class="figure">
<p><img src="figs/uniaxial_sensitivity_direct_force.png" alt="uniaxial_sensitivity_direct_force.png" /> <p><img src="figs/uniaxial_sensitivity_direct_force.png" alt="uniaxial_sensitivity_direct_force.png" />
</p> </p>
<p><span class="figure-number">Figure 25: </span>Sensitivity to disturbance - Comparison (<a href="./figs/uniaxial_sensitivity_direct_force.png">png</a>, <a href="./figs/uniaxial_sensitivity_direct_force.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 25: </span>Sensitivity to disturbance - Comparison (<a href="./figs/uniaxial_sensitivity_direct_force.png">png</a>, <a href="./figs/uniaxial_sensitivity_direct_force.pdf">pdf</a>)</p>
</div> </div>
<div id="orgb2bd39c" class="figure"> <div id="org4e0c629" class="figure">
<p><img src="figs/uniaxial_sensitivity_fty.png" alt="uniaxial_sensitivity_fty.png" /> <p><img src="figs/uniaxial_sensitivity_fty.png" alt="uniaxial_sensitivity_fty.png" />
</p> </p>
<p><span class="figure-number">Figure 26: </span>Sensitivity to force disturbances - Comparison (<a href="./figs/uniaxial_sensitivity_fty.png">png</a>, <a href="./figs/uniaxial_sensitivity_fty.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 26: </span>Sensitivity to force disturbances - Comparison (<a href="./figs/uniaxial_sensitivity_fty.png">png</a>, <a href="./figs/uniaxial_sensitivity_fty.pdf">pdf</a>)</p>
</div> </div>
<div id="org1f00826" class="figure"> <div id="orgae22af6" class="figure">
<p><img src="figs/uniaxial_sensitivity_frz.png" alt="uniaxial_sensitivity_frz.png" /> <p><img src="figs/uniaxial_sensitivity_frz.png" alt="uniaxial_sensitivity_frz.png" />
</p> </p>
<p><span class="figure-number">Figure 27: </span>Sensitivity to force disturbances - Comparison (<a href="./figs/uniaxial_sensitivity_frz.png">png</a>, <a href="./figs/uniaxial_sensitivity_frz.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 27: </span>Sensitivity to force disturbances - Comparison (<a href="./figs/uniaxial_sensitivity_frz.png">png</a>, <a href="./figs/uniaxial_sensitivity_frz.pdf">pdf</a>)</p>
@ -1120,11 +1120,11 @@ Direct Velocity Feedback:
</div> </div>
</div> </div>
<div id="outline-container-org72ab5fd" class="outline-3"> <div id="outline-container-orgcd1790f" class="outline-3">
<h3 id="org72ab5fd"><span class="section-number-3">6.3</span> Damped Plant</h3> <h3 id="orgcd1790f"><span class="section-number-3">6.3</span> Damped Plant</h3>
<div class="outline-text-3" id="text-6-3"> <div class="outline-text-3" id="text-6-3">
<div id="org0296cfa" class="figure"> <div id="org38fbe3d" class="figure">
<p><img src="figs/uniaxial_plant_damped_comp.png" alt="uniaxial_plant_damped_comp.png" /> <p><img src="figs/uniaxial_plant_damped_comp.png" alt="uniaxial_plant_damped_comp.png" />
</p> </p>
<p><span class="figure-number">Figure 28: </span>Damped Plant - Comparison (<a href="./figs/uniaxial_plant_damped_comp.png">png</a>, <a href="./figs/uniaxial_plant_damped_comp.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 28: </span>Damped Plant - Comparison (<a href="./figs/uniaxial_plant_damped_comp.png">png</a>, <a href="./figs/uniaxial_plant_damped_comp.pdf">pdf</a>)</p>
@ -1132,10 +1132,10 @@ Direct Velocity Feedback:
</div> </div>
</div> </div>
<div id="outline-container-org2c43078" class="outline-3"> <div id="outline-container-org9a602cb" class="outline-3">
<h3 id="org2c43078"><span class="section-number-3">6.4</span> Conclusion</h3> <h3 id="org9a602cb"><span class="section-number-3">6.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-6-4"> <div class="outline-text-3" id="text-6-4">
<table id="orga82a170" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table id="orgf039db4" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 1:</span> Comparison of proposed active damping techniques</caption> <caption class="t-above"><span class="table-number">Table 1:</span> Comparison of proposed active damping techniques</caption>
<colgroup> <colgroup>
@ -1205,7 +1205,7 @@ The next step is to take into account the power spectral density of each disturb
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2019-10-25 ven. 12:32</p> <p class="date">Created: 2019-10-25 ven. 16:02</p>
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p> <p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
</div> </div>
</body> </body>

View File

@ -2217,7 +2217,7 @@ Direct Velocity Feedback:
title('$F_{rz}$ to $D$'); title('$F_{rz}$ to $D$');
hold on; hold on;
plot(freqs, abs(squeeze(freqresp(G ('D', 'Frz'), freqs, 'Hz'))), 'k-' , 'DisplayName', 'OL'); plot(freqs, abs(squeeze(freqresp(G ('D', 'Frz'), freqs, 'Hz'))), 'k-' , 'DisplayName', 'OL');
plot(freqs, abs(squeeze(freqresp(G_iff('D', 'Frz'), freqs, 'Hz'))), 'k' , 'DisplayName', 'IFF'); plot(freqs, abs(squeeze(freqresp(G_iff('D', 'Frz'), freqs, 'Hz'))), 'k:' , 'DisplayName', 'IFF');
plot(freqs, abs(squeeze(freqresp(G_rmc('D', 'Frz'), freqs, 'Hz'))), 'k--', 'DisplayName', 'RMC'); plot(freqs, abs(squeeze(freqresp(G_rmc('D', 'Frz'), freqs, 'Hz'))), 'k--', 'DisplayName', 'RMC');
plot(freqs, abs(squeeze(freqresp(G_dvf('D', 'Frz'), freqs, 'Hz'))), 'k-.', 'DisplayName', 'DVF'); plot(freqs, abs(squeeze(freqresp(G_dvf('D', 'Frz'), freqs, 'Hz'))), 'k-.', 'DisplayName', 'DVF');
hold off; hold off;