Add complementary filters experimental results

This commit is contained in:
Thomas Dehaeze 2025-04-20 22:32:52 +02:00
parent 31a973a926
commit 6b9fc5f51c
16 changed files with 4445 additions and 509 deletions

View File

@ -1,475 +0,0 @@
#+TITLE: PhD Thesis
:DRAWER:
#+SUBTITLE: My subtitle
#+LANGUAGE: en
#+EMAIL: dehaeze.thomas@gmail.com
#+AUTHOR: Dehaeze Thomas
#+STARTUP: overview
#+DATE: {{{time(%Y-%m-%d)}}}
#+LATEX_CLASS: scrreprt
#+LATEX_CLASS_OPTIONS: [a4paper, twoside, 11pt, onecolumn, bibliography=totoc, openright, appendixprefix=true]
#+OPTIONS: num:t toc:nil ':t *:t -:t ::t <:nil author:t date:t tags:nil todo:nil |:t H:4 title:nil
#+SELECT_TAGS: export
#+EXCLUDE_TAGS: noexport
#+BIND: org-latex-bib-compiler "biber"
#+LATEX_HEADER: \input{config.tex}
#+LATEX_HEADER_EXTRA: \input{config_extra.tex}
#+LATEX_HEADER_EXTRA: \addbibresource{ref.bib}
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
#+PROPERTY: header-args:latex+ :results file raw replace
#+PROPERTY: header-args:latex+ :buffer no
#+PROPERTY: header-args:latex+ :eval no-export
#+PROPERTY: header-args:latex+ :exports results
#+PROPERTY: header-args:latex+ :mkdirp yes
#+PROPERTY: header-args:latex+ :output-dir figs
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
:END:
* Build :noexport:
#+NAME: startblock
#+BEGIN_SRC emacs-lisp :results none
(add-to-list 'org-latex-classes
'("scrreprt"
"\\documentclass{scrreprt}"
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
))
;; Remove automatic org heading labels
(defun my-latex-filter-removeOrgAutoLabels (text backend info)
"Org-mode automatically generates labels for headings despite explicit use of `#+LABEL`. This filter forcibly removes all automatically generated org-labels in headings."
(when (org-export-derived-backend-p backend 'latex)
(replace-regexp-in-string "\\\\label{sec:org[a-f0-9]+}\n" "" text)))
(add-to-list 'org-export-filter-headline-functions
'my-latex-filter-removeOrgAutoLabels)
;; Remove all org comments in the output LaTeX file
(defun delete-org-comments (backend)
(loop for comment in (reverse (org-element-map (org-element-parse-buffer)
'comment 'identity))
do
(setf (buffer-substring (org-element-property :begin comment)
(org-element-property :end comment))
"")))
(add-hook 'org-export-before-processing-hook 'delete-org-comments)
;; Use no package by default
(setq org-latex-packages-alist nil)
(setq org-latex-default-packages-alist nil)
;; Do not include the subtitle inside the title
(setq org-latex-subtitle-separate t)
(setq org-latex-subtitle-format "\\subtitle{%s}")
(setq org-export-before-parsing-hook '(org-ref-glossary-before-parsing
org-ref-acronyms-before-parsing))
#+END_SRC
* Glossary and Acronyms - Tables :ignore:
#+name: glossary
| label | name | description |
|-------+-------------------+-----------------------|
| ka | \ensuremath{k_a} | Actuator Stiffness in |
| phi | \ensuremath{\phi} | A woody bush |
#+name: acronyms
| key | abbreviation | full form |
|------+--------------+----------------------------------|
| mimo | MIMO | Multiple-Inputs Multiple-Outputs |
| siso | SISO | Single-Input Single-Output |
| nass | NASS | Nano Active Stabilization System |
| lti | LTI | Linear Time Invariant |
* Title Page :ignore:
#+begin_export latex
\begin{titlepage}
\vspace*{5cm}
\makeatletter
\begin{center}
\begin{Huge}
\@title
\end{Huge}\\[0.1cm]
%
\begin{Large}
\@subtitle
\end{Large}\\
%
\emph{by}\\
\@author
%
\vfill
A document submitted in partial fulfillment
of the requirements for the degree of\\
\emph{Technical Report}\\
at\\
\textsc{Miskatonic University}
\end{center}
\makeatother
\end{titlepage}
\newpage
\null
\thispagestyle{empty}
\newpage
#+end_export
* Abstract
:PROPERTIES:
:UNNUMBERED: notoc
:END:
* Résumé
:PROPERTIES:
:UNNUMBERED: notoc
:END:
* Acknowledgments
:PROPERTIES:
:UNNUMBERED: notoc
:END:
* Table of Contents :ignore:
#+begin_export latex
\dominitoc
\tableofcontents
\listoftables
\listoffigures
#+end_export
* Introduction
* Test
\minitoc
**** Abstract
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
** Test
A list:
- acronyms acrshort:nass acrshort:mimo acrshort:lti [[acrfull:siso][Single-Input Single-Output (SISO)]]
- glossary terms gls:ka, gls:phi.
- Bibliography citations: [[cite:&dehaeze21_activ_dampin_rotat_platf_using;&dehaeze21_mechat_approac_devel_nano_activ_stabil_system]].
A definition list:
- this :: means that
- that :: means this
Some Footnote[fn:1]
** Section
*** Sub section
This is a sub section.
*** Sub section
Start of the sub section
**** Paragraph
This is a paragraph
**** lksdfjasd
**** lksdfjasd
** blabla
* Source Blocks
\minitoc
** 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
** Figures
#+begin_src matlab
t = 0:0.01:5; % Time [s]
x = sin(2*pi*t); % Output Voltage [V]
#+end_src
#+begin_src matlab
figure;
plot(t, x);
xlabel('Time [s]'); ylabel('Voltage [V]');
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/matlab_fig_example.pdf', 'width', 'wide', 'height', 'normal');
#+end_src
#+name: fig:matlab_fig_example
#+caption: Matlab Figure
#+RESULTS:
[[file:figs/matlab_fig_example.png]]
** Table Result
#+begin_src matlab
x = 1:10;
y = x.^2;
#+end_src
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
data2orgtable([x', y'], {}, {'$x$', '$y = x^2$'}, ' %.0f ');
#+end_src
#+name: tab:table_name
#+caption: Table caption
#+RESULTS:
| $x$ | $y = x^2$ |
|-----+-----------|
| 1 | 1 |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| 5 | 25 |
| 6 | 36 |
| 7 | 49 |
| 8 | 64 |
| 9 | 81 |
| 10 | 100 |
** Inline Results
Results can be automatically outputed as shown below.
#+begin_src matlab :results value replace
sqrt(2)
#+end_src
#+RESULTS:
: 1.4142
#+begin_src matlab :results output replace
y
#+end_src
#+RESULTS:
: y =
: 1 4 9 16 25 36 49 64 81 100
** Caption and Reference
Captions can be added to code blocks.
Moreover, we can link to specific bode blocks (Listing [[lst:matlab_figure]] or [[lst:matlab_svd]]).
#+name: lst:matlab_figure
#+caption: Code to produce a nice contour plot
#+begin_src matlab
figure;
[X,Y,Z] = peaks;
contour(X,Y,Z,20)
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/matlab_logo.pdf', 'width', 'small', 'height', 'normal');
#+end_src
#+name: fig:matlab_logo
#+caption: Obtained Contour Plot
#+RESULTS:
[[file:figs/matlab_logo.png]]
#+name: lst:matlab_svd
#+caption: Code to compute the Singular Value Decomposition
#+begin_src matlab :results output replace
A = [1 2; 3 4; 5 6; 7 8]
[U,S,V] = svd(A)
#+end_src
#+RESULTS:
#+begin_example
A = [1 2; 3 4; 5 6; 7 8]
A =
1 2
3 4
5 6
7 8
[U,S,V] = svd(A)
U =
-0.152483233310201 -0.82264747222566 -0.394501022283829 -0.379959133877596
-0.349918371807964 -0.42137528768458 0.242796545704357 0.800655879510063
-0.547353510305727 -0.0201031031435029 0.697909975442776 -0.461434357387336
-0.74478864880349 0.381169081397575 -0.546205498863303 0.0407376117548695
S =
14.2690954992615 0
0 0.626828232417541
0 0
0 0
V =
-0.641423027995072 0.767187395072177
-0.767187395072177 -0.641423027995072
#+end_example
** Source Blocks with Line Numbers
Citation [[cite:&taghirad13_paral;&dehaeze21_activ_dampin_rotat_platf_using]]
The Listing [[lst:matlab_line_numbers]] has line numbers as the =-n= option was used.
Specific lines of codes can be referenced.
For instance, the code used to specify the wanted the vertical label is on line [[(test)]].
#+name: lst:matlab_line_numbers
#+caption: Specify Labels
#+begin_src matlab +n -r
figure;
plot(t, x)
xlabel('Time [s]');
ylabel('Output [V]'); (ref:test)
#+end_src
Numbering can be continued by using =+n= option as shown below.
#+begin_src matlab +n
figure;
plot(t, u)
xlabel('Time [s]');
ylabel('Input [V]');
#+end_src
* Images
\minitoc
** Normal Image
Figure [[fig:general_control_names]] shows the results of the Tikz code of listing [[lst:tikz_test]].
#+name: lst:tikz_test
#+caption: Tikz code that is used to generate Figure [[fig:general_control_names]]
#+begin_src latex :file general_control_names.pdf :exports both
\begin{tikzpicture}
% Blocs
\node[block={2.0cm}{2.0cm}] (P) {$P$};
\node[block={1.5cm}{1.5cm}, below=0.7 of P] (K) {$K$};
% Input and outputs coordinates
\coordinate[] (inputw) at ($(P.south west)!0.75!(P.north west)$);
\coordinate[] (inputu) at ($(P.south west)!0.25!(P.north west)$);
\coordinate[] (outputz) at ($(P.south east)!0.75!(P.north east)$);
\coordinate[] (outputv) at ($(P.south east)!0.25!(P.north east)$);
% Connections and labels
\draw[<-] (inputw) -- ++(-1.5, 0);
\draw[<-] (inputu) -- ++(-0.8, 0) |- (K.west);
\draw[->] (outputz) -- ++(1.5, 0);
\draw[->] (outputv) -- ++(0.8, 0) |- (K.east);
\end{tikzpicture}
#+end_src
#+name: fig:general_control_names
#+caption: General Control Configuration
#+RESULTS: lst:tikz_test
[[file:figs/general_control_names.png]]
** Sub Images
Link to subfigure [[fig:general_control_names_1]].
#+name: fig:subfigure
#+caption: Subfigure Caption
#+attr_latex: :environment subfigure :width 0.49\linewidth :align c
| file:figs/general_control_names.png | file:figs/general_control_names.png |
| <<fig:general_control_names_1>> sub figure caption | <<fig:general_control_names_2>> sub figure caption |
* Tables
\minitoc
Table [[tab:table_with_equations]] shows a table with some mathematics inside.
#+name: tab:table_with_equations
#+caption: A Simple table with included math
| $N$ | $N^2$ | $N^3$ | $N^4$ | $\sqrt n$ | $\sqrt[4]N$ |
|-----+-------+-------+-------+-----------+-------------|
| 1 | 1 | 1 | 1 | 1 | 1 |
| 2 | 4 | 8 | 16 | 1.4142136 | 1.1892071 |
| 3 | 9 | 27 | 81 | 1.7320508 | 1.3160740 |
#+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
#+name: tab:table_without_head
#+caption: Table without Head
| | *1* | *2* | *3* | *4* | *5* |
| *1* | 1 | 2 | 3 | 4 | 5 |
| *2* | 2 | 4 | 6 | 8 | 10 |
| *3* | 3 | 6 | 9 | 12 | 15 |
| *4* | 4 | 8 | 12 | 16 | 20 |
| *5* | 5 | 10 | 15 | 20 | 25 |
#+name: tab:table_multiple_heads
#+ATTR_LATEX: :font \footnotesize
#+caption: Table with multiples groups
| | *Classical Control* | *Modern Control* |
| <l> | <c> | <c> |
|-------------------------+------------------------------------+--------------------------------------|
| *Date* | 1930- | 1960- |
|-------------------------+------------------------------------+--------------------------------------|
| *Tools* | Transfer Functions | State Space formulation |
| | Nyquist Plots | Riccati Equations |
| | Bode Plots | |
| | Phase and Gain margins | |
|-------------------------+------------------------------------+--------------------------------------|
| *Control Architectures* | Proportional, Integral, Derivative | Full State Feedback |
| | Leads, Lags | LQR, LQG |
| | | Kalman Filters |
|-------------------------+------------------------------------+--------------------------------------|
| *Advantages* | Study Stability | Automatic Synthesis |
| | Simple | MIMO |
| | Natural | Optimization Problem |
| | | |
| | | |
|-------------------------+------------------------------------+--------------------------------------|
| *Disadvantages* | Manual Method | No Guaranteed Robustness |
| | Only SISO | Difficult Rejection of Perturbations |
* Appendix :ignore:
#+latex: \appendix
* Mathematical formulas
* Comments on something
* Bibliography :ignore:
#+latex: \printbibliography[heading=bibintoc,title={Bibliography}]
* List of Publications
:PROPERTIES:
:UNNUMBERED: notoc
:END:
#+begin_export latex
\begin{refsection}[ref.bib]
% List all papers even if not cited
\nocite{*}
% Sort by year
\newrefcontext[sorting=ynt]
% Articles
\printbibliography[keyword={publication},heading={subbibliography},title={Articles},env=mypubs,type={article}]
% Proceedings
\printbibliography[keyword={publication},heading={subbibliography},title={In Proceedings},env=mypubs,type={inproceedings}]
\end{refsection}
#+end_export
* Glossary :ignore:
#+latex: \printglossary[type=\acronymtype]
#+latex: \printglossary
* Footnotes
[fn:1]this is a footnote with citation [[cite:&dehaeze21_mechat_approac_devel_nano_activ_stabil_system]].

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View File

@ -4135,7 +4135,7 @@ Joints are used to impose kinematic constraints between solid bodies and to spec
External forces can be used to model disturbances, and "sensors" can be used to measure the relative pose between two defined frames.
#+name: fig:ustation_simscape_stage_example
#+caption: Example of a stage (here the tilt-stage) represented in the multi-body model software (Simscape). It is composed of two solid bodies connected by a 6-DoF joint. One joint DoF (here the tilt angle) can be imposed, the other DoFs are represented by springs and dampers. Additional disturbing forces for all DoF can be included
#+caption: Example of a stage (here the tilt-stage) represented in the multi-body model software (Simulink - Simscape). It is composed of two solid bodies connected by a 6-DoF joint. One joint DoF (here the tilt angle) can be imposed, the other DoFs are represented by springs and dampers. Additional disturbing forces for all DoF can be included
#+attr_latex: :scale 0.8
[[file:figs/ustation_simscape_stage_example.png]]
@ -10688,7 +10688,7 @@ This indicates that this model represents well the axial dynamics of the APA300M
In this section, a /super element/ of the APA300ML is computed using a finite element software[fn:test_apa_11].
It is then imported into multi-body (in the form of a stiffness matrix and a mass matrix) and included in the same model that was used in\nbsp{}ref:sec:test_apa_model_2dof.
This procedure is illustrated in Figure\nbsp{}ref:fig:test_apa_super_element_simscape.
Several /remote points/ are defined in the finite element model (here illustrated by colorful planes and numbers from =1= to =5=) and are then made accessible in Simscape as shown at the right by the "frames" =F1= to =F5=.
Several /remote points/ are defined in the finite element model (here illustrated by colorful planes and numbers from =1= to =5=) and are then made accessible in the multi-body software as shown at the right by the "frames" =F1= to =F5=.
For the APA300ML /super element/, 5 /remote points/ are defined.
Two /remote points/ (=1= and =2=) are fixed to the top and bottom mechanical interfaces of the APA300ML and will be used to connect the APA300ML with other mechanical elements.
@ -10697,7 +10697,7 @@ Finally, two /remote points/ (=4= and =5=) are located across the third piezoele
#+name: fig:test_apa_super_element_simscape
#+attr_latex: :width 1.0\linewidth
#+caption: Finite Element Model of the APA300ML with "remotes points" on the left. Simscape model with included "Reduced Order Flexible Solid" on the right.
#+caption: Finite Element Model of the APA300ML with "remotes points" on the left. Multi-Body model with included "Reduced Order Flexible Solid" on the right (here in Simulink-Simscape software).
[[file:figs/test_apa_super_element_simscape.png]]
***** Identification of the Actuator and Sensor constants
@ -13162,6 +13162,7 @@ Several scientific experiments were replicated, such as:
- Diffraction Tomography:continuous $R_z$ rotation using the Spindle and lateral $D_y$ scans performed at the same time using the translation stage (Section\nbsp{}ref:ssec:test_id31_scans_diffraction_tomo)
Unless explicitly stated, all closed-loop experiments were performed using the robust (i.e. conservative) high authority controller designed in Section\nbsp{}ref:ssec:test_id31_iff_hac_controller.
Higher performance controllers using complementary filters are investigated in Section\nbsp{}ref:ssec:test_id31_cf_control.
For each experiment, the obtained performances are compared to the specifications for the most demanding case in which nano-focusing optics are used to focus the beam down to $200\,nm\times 100\,nm$.
In this case, the goal is to keep the sample's point of interest in the beam, and therefore the $D_y$ and $D_z$ positioning errors should be less than $200\,nm$ and $100\,nm$ peak-to-peak, respectively.
@ -13248,11 +13249,12 @@ Nevertheless, even with this robust (i.e. conservative) HAC implementation, the
A comparative analysis was conducted using three tomography scans at $180\,\text{deg/s}$ to evaluate the effectiveness of the HAC-LAC strategy in reducing positioning errors.
The scans were performed under three conditions: open-loop, with decentralized IFF control, and with the complete HAC-LAC strategy.
For these specific measurements, an enhanced high authority controller was optimized for low payload masses to meet the performance requirements.
For this specific measurement, an enhanced high authority controller (discussed in Section\nbsp{}ref:ssec:test_id31_cf_control) was optimized for low payload masses to meet the performance requirements.
Figure\nbsp{}ref:fig:test_id31_hac_cas_cl presents the cumulative amplitude spectra of the position errors for all three cases.
The results reveal two distinct control contributions: the decentralized IFF effectively attenuates vibrations near the nano-hexapod suspension modes (an achievement not possible with HAC alone), while the high authority controller suppresses low-frequency vibrations primarily arising from Spindle guiding errors.
Notably, the spectral patterns in Figure\nbsp{}ref:fig:test_id31_hac_cas_cl closely resemble the cumulative amplitude spectra computed in the project's early stages.
# TODO - Add link to initial noise budget?
This experiment also illustrates that when needed, performance can be enhanced by designing controllers for specific experimental conditions rather than relying solely on robust controllers that can accommodate all payload ranges.
@ -13535,6 +13537,80 @@ Alternatively, a feedforward controller could improve the lateral positioning ac
#+end_subfigure
#+end_figure
**** Feedback control using Complementary Filters
<<ssec:test_id31_cf_control>>
# TODO - Add link to section
A control architecture utilizing complementary filters to shape the closed-loop transfer functions was proposed during the detail design phase.
Experimental validation of this architecture using the NASS is presented herein.
Given that performance requirements are specified in the Cartesian frame, decoupling of the plant within this frame was achieved using Jacobian matrices.
Consequently, the control space comprises the directions $D_x$, $D_y$, $D_z$, $R_x$, and $R_y$.
Control performance in each of these directions can be tuned independently.
A schematic of the proposed control architecture is illustrated in Figure\nbsp{}ref:fig:test_id31_cf_control.
#+name: fig:test_id31_cf_control
#+caption: Control architecture in the Cartesian frame. Only the controller corresponding to the $D_z$ direction is shown. $H_L$ and $H_H$ are complementary filters.
[[file:figs/test_id31_cf_control.png]]
# TODO - Add link to 2DoF model
Implementation of this control architecture necessitates a plant model, which must subsequently be inverted.
This plant model was derived from the multi-body model incorporating the previously detailed 2-DoF APA model, such that the model order stays relatively low.
Proposed analytical formulas for complementary filters having $40\,\text{dB/dec}$ were used during this experimental validation.
# TODO - Add link to the analytical formulas
An initial experimental validation was conducted under no-payload conditions, with control applied solely to the $D_y$, $D_z$, and $R_y$ directions.
Increased control bandwidth was achieved for the $D_z$ and $R_y$ directions through appropriate tuning of the parameter $\omega_0$.
The experimentally measured closed-loop sensitivity transfer functions corresponding to these three controlled directions are presented in Figure\nbsp{}ref:fig:test_id31_cf_control_dy_dz_diff.
Another test was conducted with a $26\,\text{kg}$ payload.
For this configuration, complementary filters were implemented with $\omega_0 = 2\pi \cdot 10\,\text{rad/s}$, and parameter $\alpha$ was varied.
The resulting experimentally obtained closed-loop transfer functions are compared against the theoretical complementary filter responses in Figure\nbsp{}ref:fig:test_id31_cf_control_alpha.
As illustrated in the figure, a close correspondence between the measured closed-loop responses and the target complementary filter magnitude was observed.
It also shows that the parameter $\alpha$ provides a mechanism for managing the trade-off between low-frequency disturbance rejection performance and the potential amplification of disturbances within the crossover frequency region.
#+name: fig:test_id31_cf_control_results
#+caption: Measured closed-loop transfer functions. Different bandwidth can be specified for different directions using $\omega_0$ (\subref{fig:test_id31_cf_control_dy_dz_diff}). The shape can be adjusted using parameter $\alpha$ (\subref{fig:test_id31_cf_control_alpha}).
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:test_id31_cf_control_dy_dz_diff}Chose of bandwidth using $\omega_0$, $m = 0\,\text{kg}$}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :scale 0.9
[[file:figs/test_id31_cf_control_dy_dz_diff.png]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:test_id31_cf_control_alpha}Effect of a change of $\alpha$, $m = 26\,\text{kg}$}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :scale 0.9
[[file:figs/test_id31_cf_control_alpha.png]]
#+end_subfigure
#+end_figure
Finally, $\omega_0$ was gradually increased to estimate the maximum bandwidth (i.e. the best low frequency disturbance rejection) that can be achieved with this architecture.
No payload was used for this test, and the parameter $\omega_0$ was increased for the controllers in the $D_y$ and $D_z$ directions.
A value $\omega_0 = 2\pi \cdot 60 \,\text{rad/s}$ could be achieved.
Measured closed-loop transfer functions are shown in Figure\nbsp{}ref:fig:test_id31_high_bandwidth, indicating a reduction of disturbances in the considered direction of $1000$ at $1\,\text{Hz}$.
For higher values of $\omega_0$, the system became unstable in the vertical direction, probably because of the resonance at $250\,\text{Hz}$ that is not well captured with the multi-body model (Figure\nbsp{}ref:fig:test_id31_hac_plant_effect_mass).
#+name: fig:test_id31_high_bandwidth
#+caption: Measured Closed-Loop Sensitivity (\subref{fig:test_id31_high_bandwidth_S}) and Complementary Sensitivity (\subref{fig:test_id31_high_bandwidth_T}) transfer functions for the highest test bandwidth $\omega_0 = 2\pi\cdot 60\,\text{rad/s}$.
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:test_id31_high_bandwidth_S}Sensitivity}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :scale 0.9
[[file:figs/test_id31_high_bandwidth_S.png]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:test_id31_high_bandwidth_T}Complementary Sensitivity}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :scale 0.9
[[file:figs/test_id31_high_bandwidth_T.png]]
#+end_subfigure
#+end_figure
**** Conclusion
:PROPERTIES:
:UNNUMBERED: t

Binary file not shown.

View File

@ -1,4 +1,4 @@
% Created 2025-04-20 Sun 18:06
% Created 2025-04-20 Sun 22:28
% Intended LaTeX compiler: pdflatex
\documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt}
@ -12264,6 +12264,7 @@ Several scientific experiments were replicated, such as:
\end{itemize}
Unless explicitly stated, all closed-loop experiments were performed using the robust (i.e. conservative) high authority controller designed in Section~\ref{ssec:test_id31_iff_hac_controller}.
Higher performance controllers using complementary filters are investigated in Section~\ref{ssec:test_id31_cf_control}.
For each experiment, the obtained performances are compared to the specifications for the most demanding case in which nano-focusing optics are used to focus the beam down to \(200\,nm\times 100\,nm\).
In this case, the goal is to keep the sample's point of interest in the beam, and therefore the \(D_y\) and \(D_z\) positioning errors should be less than \(200\,nm\) and \(100\,nm\) peak-to-peak, respectively.
@ -12348,12 +12349,11 @@ Nevertheless, even with this robust (i.e. conservative) HAC implementation, the
A comparative analysis was conducted using three tomography scans at \(180\,\text{deg/s}\) to evaluate the effectiveness of the HAC-LAC strategy in reducing positioning errors.
The scans were performed under three conditions: open-loop, with decentralized IFF control, and with the complete HAC-LAC strategy.
For these specific measurements, an enhanced high authority controller was optimized for low payload masses to meet the performance requirements.
For this specific measurement, an enhanced high authority controller (discussed in Section~\ref{ssec:test_id31_cf_control}) was optimized for low payload masses to meet the performance requirements.
Figure~\ref{fig:test_id31_hac_cas_cl} presents the cumulative amplitude spectra of the position errors for all three cases.
The results reveal two distinct control contributions: the decentralized IFF effectively attenuates vibrations near the nano-hexapod suspension modes (an achievement not possible with HAC alone), while the high authority controller suppresses low-frequency vibrations primarily arising from Spindle guiding errors.
Notably, the spectral patterns in Figure~\ref{fig:test_id31_hac_cas_cl} closely resemble the cumulative amplitude spectra computed in the project's early stages.
This experiment also illustrates that when needed, performance can be enhanced by designing controllers for specific experimental conditions rather than relying solely on robust controllers that can accommodate all payload ranges.
\begin{figure}[htbp]
@ -12607,6 +12607,73 @@ Alternatively, a feedforward controller could improve the lateral positioning ac
\end{subfigure}
\caption{\label{fig:test_id31_diffraction_tomo}Diffraction tomography scans (combined \(R_z\) and \(D_y\) motions) at several \(D_y\) velocities (\(R_z\) rotational velocity is \(6\,\text{deg/s}\)).}
\end{figure}
\subsubsection{Feedback control using Complementary Filters}
\label{ssec:test_id31_cf_control}
A control architecture utilizing complementary filters to shape the closed-loop transfer functions was proposed during the detail design phase.
Experimental validation of this architecture using the NASS is presented herein.
Given that performance requirements are specified in the Cartesian frame, decoupling of the plant within this frame was achieved using Jacobian matrices.
Consequently, the control space comprises the directions \(D_x\), \(D_y\), \(D_z\), \(R_x\), and \(R_y\).
Control performance in each of these directions can be tuned independently.
A schematic of the proposed control architecture is illustrated in Figure~\ref{fig:test_id31_cf_control}.
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/test_id31_cf_control.png}
\caption{\label{fig:test_id31_cf_control}Control architecture in the Cartesian frame. Only the controller corresponding to the \(D_z\) direction is shown. \(H_L\) and \(H_H\) are complementary filters.}
\end{figure}
Implementation of this control architecture necessitates a plant model, which must subsequently be inverted.
This plant model was derived from the multi-body model incorporating the previously detailed 2-DoF APA model, such that the model order stays relatively low.
Proposed analytical formulas for complementary filters having \(40\,\text{dB/dec}\) were used during this experimental validation.
An initial experimental validation was conducted under no-payload conditions, with control applied solely to the \(D_y\), \(D_z\), and \(R_y\) directions.
Increased control bandwidth was achieved for the \(D_z\) and \(R_y\) directions through appropriate tuning of the parameter \(\omega_0\).
The experimentally measured closed-loop sensitivity transfer functions corresponding to these three controlled directions are presented in Figure~\ref{fig:test_id31_cf_control_dy_dz_diff}.
Another test was conducted with a \(26\,\text{kg}\) payload.
For this configuration, complementary filters were implemented with \(\omega_0 = 2\pi \cdot 10\,\text{rad/s}\), and parameter \(\alpha\) was varied.
The resulting experimentally obtained closed-loop transfer functions are compared against the theoretical complementary filter responses in Figure~\ref{fig:test_id31_cf_control_alpha}.
As illustrated in the figure, a close correspondence between the measured closed-loop responses and the target complementary filter magnitude was observed.
It also shows that the parameter \(\alpha\) provides a mechanism for managing the trade-off between low-frequency disturbance rejection performance and the potential amplification of disturbances within the crossover frequency region.
\begin{figure}[htbp]
\begin{subfigure}{0.49\textwidth}
\begin{center}
\includegraphics[scale=1,scale=0.9]{figs/test_id31_cf_control_dy_dz_diff.png}
\end{center}
\subcaption{\label{fig:test_id31_cf_control_dy_dz_diff}Chose of bandwidth using $\omega_0$, $m = 0\,\text{kg}$}
\end{subfigure}
\begin{subfigure}{0.49\textwidth}
\begin{center}
\includegraphics[scale=1,scale=0.9]{figs/test_id31_cf_control_alpha.png}
\end{center}
\subcaption{\label{fig:test_id31_cf_control_alpha}Effect of a change of $\alpha$, $m = 26\,\text{kg}$}
\end{subfigure}
\caption{\label{fig:test_id31_cf_control_results}Measured closed-loop transfer functions. Different bandwidth can be specified for different directions using \(\omega_0\) (\subref{fig:test_id31_cf_control_dy_dz_diff}). The shape can be adjusted using parameter \(\alpha\) (\subref{fig:test_id31_cf_control_alpha}).}
\end{figure}
Finally, \(\omega_0\) was gradually increased to estimate the maximum bandwidth (i.e. the best low frequency disturbance rejection) that can be achieved with this architecture.
No payload was used for this test, and the parameter \(\omega_0\) was increased for the controllers in the \(D_y\) and \(D_z\) directions.
A value \(\omega_0 = 2\pi \cdot 60 \,\text{rad/s}\) could be achieved.
Measured closed-loop transfer functions are shown in Figure~\ref{fig:test_id31_high_bandwidth}, indicating a reduction of disturbances in the considered direction of \(1000\) at \(1\,\text{Hz}\).
For higher values of \(\omega_0\), the system became unstable in the vertical direction, probably because of the resonance at \(250\,\text{Hz}\) that is not well captured with the multi-body model (Figure~\ref{fig:test_id31_hac_plant_effect_mass}).
\begin{figure}[htbp]
\begin{subfigure}{0.49\textwidth}
\begin{center}
\includegraphics[scale=1,scale=0.9]{figs/test_id31_high_bandwidth_S.png}
\end{center}
\subcaption{\label{fig:test_id31_high_bandwidth_S}Sensitivity}
\end{subfigure}
\begin{subfigure}{0.49\textwidth}
\begin{center}
\includegraphics[scale=1,scale=0.9]{figs/test_id31_high_bandwidth_T.png}
\end{center}
\subcaption{\label{fig:test_id31_high_bandwidth_T}Complementary Sensitivity}
\end{subfigure}
\caption{\label{fig:test_id31_high_bandwidth}Measured Closed-Loop Sensitivity (\subref{fig:test_id31_high_bandwidth_S}) and Complementary Sensitivity (\subref{fig:test_id31_high_bandwidth_T}) transfer functions for the highest test bandwidth \(\omega_0 = 2\pi\cdot 60\,\text{rad/s}\).}
\end{figure}
\subsubsection*{Conclusion}
\label{ssec:test_id31_scans_conclusion}

View File

@ -1,27 +0,0 @@
#+TITLE: My Org Mode Ph.D. thesis template
- https://github.com/dangom/org-thesis
- https://github.com/Pseudomanifold/latex-mimosis
* Todos
- [X] Title page
- [X] Appendix
- [X] list of publications
- [ ] subfigures: make nice template for easy insertion [[file:~/.config/literate-dotfiles/emacs-snippets.org::*Subfigure][Subfigure]]
- [ ] tables: make nice template for easy insertion [[file:~/.config/literate-dotfiles/emacs-snippets.org::*Table][Table]]
- [ ] example file with everything
- [ ] Understand why =\usepackage{biblatex}= is automatically added
- [X] abstract for each chapter
- [ ] Custom abstract for each chapter
- [ ] TikZ config. Share variables/colors with manuscript?
- [ ] Nice/Coherence color scheme
* Installation
** Fonts
** Emacs Configuration
- Packages, variables...
* Compilation