diff --git a/figs/nass_concept_schematic.pdf b/figs/nass_concept_schematic.pdf
new file mode 100644
index 0000000..0f9aadc
Binary files /dev/null and b/figs/nass_concept_schematic.pdf differ
diff --git a/figs/nass_concept_schematic.png b/figs/nass_concept_schematic.png
new file mode 100644
index 0000000..60cdea9
Binary files /dev/null and b/figs/nass_concept_schematic.png differ
diff --git a/figs/nass_concept_schematic.svg b/figs/nass_concept_schematic.svg
new file mode 100644
index 0000000..d9fde48
--- /dev/null
+++ b/figs/nass_concept_schematic.svg
@@ -0,0 +1,1531 @@
+
+
diff --git a/figs/nass_control_architecture.pdf b/figs/nass_control_architecture.pdf
new file mode 100644
index 0000000..3bbca94
Binary files /dev/null and b/figs/nass_control_architecture.pdf differ
diff --git a/figs/nass_control_architecture.png b/figs/nass_control_architecture.png
new file mode 100644
index 0000000..b74d073
Binary files /dev/null and b/figs/nass_control_architecture.png differ
diff --git a/figs/nass_control_architecture.svg b/figs/nass_control_architecture.svg
new file mode 100644
index 0000000..589e01b
--- /dev/null
+++ b/figs/nass_control_architecture.svg
@@ -0,0 +1,592 @@
+
+
diff --git a/matlab/nass_model.slx b/matlab/nass_model.slx
index f141667..149fbe6 100644
Binary files a/matlab/nass_model.slx and b/matlab/nass_model.slx differ
diff --git a/matlab/src/initializeSimplifiedNanoHexapod.m b/matlab/src/initializeSimplifiedNanoHexapod.m
index 6b466cd..5687f47 100644
--- a/matlab/src/initializeSimplifiedNanoHexapod.m
+++ b/matlab/src/initializeSimplifiedNanoHexapod.m
@@ -1,6 +1,7 @@
function [nano_hexapod] = initializeSimplifiedNanoHexapod(args)
arguments
+ args.type char {mustBeMember(args.type,{'none', 'stewart'})} = 'stewart'
%% initializeFramesPositions
args.H (1,1) double {mustBeNumeric, mustBePositive} = 95e-3 % Height of the nano-hexapod [m]
args.MO_B (1,1) double {mustBeNumeric} = 150e-3 % Height of {B} w.r.t. {M} [m]
@@ -61,6 +62,13 @@ function [nano_hexapod] = initializeSimplifiedNanoHexapod(args)
stewart = initializeStewartPlatform();
+ switch args.type
+ case 'none'
+ stewart.type = 0;
+ case 'stewart'
+ stewart.type = 1;
+ end
+
stewart = initializeFramesPositions(stewart, ...
'H', args.H, ...
'MO_B', args.MO_B);
diff --git a/matlab/subsystems/micro_hexapod_bot_plate.slx b/matlab/subsystems/micro_hexapod_bot_plate.slx
index 7e756b6..3f5c357 100644
Binary files a/matlab/subsystems/micro_hexapod_bot_plate.slx and b/matlab/subsystems/micro_hexapod_bot_plate.slx differ
diff --git a/matlab/subsystems/micro_hexapod_strut.slx b/matlab/subsystems/micro_hexapod_strut.slx
index b336103..7c3b348 100644
Binary files a/matlab/subsystems/micro_hexapod_strut.slx and b/matlab/subsystems/micro_hexapod_strut.slx differ
diff --git a/matlab/subsystems/micro_hexapod_top_plate.slx b/matlab/subsystems/micro_hexapod_top_plate.slx
index a4eac09..651612b 100644
Binary files a/matlab/subsystems/micro_hexapod_top_plate.slx and b/matlab/subsystems/micro_hexapod_top_plate.slx differ
diff --git a/simscape-nass.org b/simscape-nass.org
index d18aace..87e8ee6 100644
--- a/simscape-nass.org
+++ b/simscape-nass.org
@@ -219,8 +219,8 @@ CLOSED: [2025-02-12 Wed 12:10] SCHEDULED: <2025-02-12 Wed>
- [X] Remove nano-hexapod model and add simplified model
- [ ] Add "cylindrical" payloads (configurable in mass)
-** TODO [#B] Add payload configurable subsystem
-SCHEDULED: <2025-02-12 Wed>
+** DONE [#B] Add payload configurable subsystem
+CLOSED: [2025-02-12 Wed 14:17] SCHEDULED: <2025-02-12 Wed>
** TODO [#B] Discuss the necessity of estimated Rz?
@@ -231,6 +231,16 @@ Here it can be reminded when doing the control in the cartesian frame.
** TODO [#B] Check if things are compatible to results of uniaxial model
+** TODO [#C] Check if it would be interesting to show soft/stiff nano-hexapod plants
+
+- [ ] Would we see u-station dynamics with very stiff nano-hexapod?
+- [ ] Would rotation be difficult to handle with soft nano-hexapod?
+
+** DONE [#A] Add possibility to configure the nano-hexapod to be fully rigid
+CLOSED: [2025-02-12 Wed 14:46]
+
+- Use to compare TF without the NASS
+
** CANC [#C] What performance metric can we use? :@christophe:
CLOSED: [2024-11-12 Tue 09:22]
- State "CANC" from "QUES" [2024-11-12 Tue 09:22]
@@ -264,16 +274,21 @@ In this section:
<>
** Introduction :ignore:
-- Explain how the position error can be expressed in the frame of the nano-hexapod
-- [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/positioning_error.org][positioning_error]]: Explain how the NASS control is made (computation of the wanted position, measurement of the sample position, computation of the errors)
-- Control architecture, block diagram
+- Explained during the last section: HAC-IFF
+ Decentralized IFF
+ Centralized HAC, control in the frame of the struts
+- To compute the positioning errors in the frame of the struts
+ - Compute the wanted pose of the sample with respect to the granite using the micro-station kinematics (Section ref:ssec:nass_ustation_kinematics)
+ - Measure the sample pose with respect to the granite using the external metrology and internal metrology for Rz (Section ref:ssec:nass_sample_pose_error)
+ - Compute the sample pose error and map these errors in the frame of the struts (Section ref:ssec:nass_error_struts)
+- The complete control architecture is shown in Section ref:ssec:nass_control_architecture
-- Schematic with micro-station + nass + metrology + control system
-- Zoom in the control system with blocs
-- Then explain all the blocs
-- Say that there are many control strategies.
- It will be the topic of chapter 2.3.
- Here, we start with something simple: control in the frame of the struts
+- [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/positioning_error.org][positioning_error]]: Explain how the NASS control is made (computation of the wanted position, measurement of the sample position, computation of the errors)
+
+- [ ] Schematic with micro-station + nass + metrology + control system => explain what is inside the control system
+#+name: fig:nass_concept_schematic
+#+caption: Figure caption
+[[file:figs/nass_concept_schematic.png]]
** Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
@@ -301,17 +316,112 @@ In this section:
#+end_src
** Micro Station Kinematics
+<>
- from ref:ssec:ustation_kinematics, computation of the wanted sample pose from the setpoint of each stage.
+wanted pose = Tdy * Try * Trz * Tu
+
+
** Computation of the sample's pose error
+<>
From metrology (here supposed to be perfect 6-DoF), compute the sample's pose error.
Has to invert the homogeneous transformation.
-** Position error in the frame of the nano-hexapod
+In reality, 5DoF metrology => have to estimate the Rz using spindle encoder + nano-hexapod internal metrology (micro-hexapod does not perform Rz rotation).
-Explain how to compute the errors in the frame of the struts (rotating)
+** Position error in the frame of the struts
+<>
+
+Explain how to compute the errors in the frame of the struts (rotating):
+- Errors in the granite frame
+- Errors in the frame of the nano-hexapod
+- Errors in the frame of the struts => used for control
+
+** Control Architecture
+<>
+
+- Say that there are many control strategies.
+ It will be the topic of chapter 2.3.
+ Here, we start with something simple: control in the frame of the struts
+
+#+begin_src latex :file nass_control_architecture.pdf
+\begin{tikzpicture}
+ % Blocs
+ \node[block={2.0cm}{1.0cm}, fill=colorblue!20!white] (metrology) {Metrology};
+ \node[block={2.0cm}{2.0cm}, below=0.1 of metrology, align=center, fill=colorblue!20!white] (nhexa) {Nano\\Hexapod};
+ \node[block={3.0cm}{1.5cm}, below=0.1 of nhexa, align=center, fill=colorblue!20!white] (ustation) {Micro\\Station};
+
+ \coordinate[] (inputf) at ($(nhexa.south west)!0.5!(nhexa.north west)$);
+ \coordinate[] (outputfn) at ($(nhexa.south east)!0.3!(nhexa.north east)$);
+ \coordinate[] (outputde) at ($(nhexa.south east)!0.7!(nhexa.north east)$);
+
+ \coordinate[] (outputDy) at ($(ustation.south east)!0.1!(ustation.north east)$);
+ \coordinate[] (outputRy) at ($(ustation.south east)!0.5!(ustation.north east)$);
+ \coordinate[] (outputRz) at ($(ustation.south east)!0.9!(ustation.north east)$);
+
+ \node[block={1.0cm}{1.0cm}, right=0.5 of outputde, fill=colorred!20!white] (Rz_kinematics) {$\bm{J}_{R_z}^{-1}$};
+ \node[block={2.0cm}{2.0cm}, right=2.2 of ustation, align=center, fill=colorred!20!white] (ustation_kinematics) {Compute\\Reference\\Position};
+ \node[block={2.0cm}{2.0cm}, right=0.8 of ustation_kinematics, align=center, fill=colorred!20!white] (compute_error) {Compute\\Error\\Position};
+ \node[block={2.0cm}{2.0cm}, above=0.8 of compute_error, align=center, fill=colorred!20!white] (compute_pos) {Compute\\Sample\\Position};
+ \node[block={1.0cm}{1.0cm}, right=0.8 of compute_error, fill=colorred!20!white] (hexa_jacobian) {$\bm{J}$};
+
+ \coordinate[] (inputMetrology) at ($(compute_error.north east)!0.3!(compute_error.north west)$);
+ \coordinate[] (inputRz) at ($(compute_error.north east)!0.7!(compute_error.north west)$);
+
+ \node[addb={+}{}{}{}{}, right=0.4 of Rz_kinematics, fill=colorred!20!white] (addRz) {};
+ \draw[->] (Rz_kinematics.east) -- (addRz.west);
+ \draw[->] (outputRz-|addRz)node[branch]{} -- (addRz.south);
+
+ \draw[->] (outputDy) node[above right]{$r_{D_y}$} -- (outputDy-|ustation_kinematics.west);
+ \draw[->] (outputRy) node[above right]{$r_{R_y}$} -- (outputRy-|ustation_kinematics.west);
+ \draw[->] (outputRz) node[above right]{$r_{R_z}$} -- (outputRz-|ustation_kinematics.west);
+
+ \draw[->] (metrology.east)node[above right]{$[D_x,\,D_y,\,D_z,\,R_x,\,R_y]$} -- (compute_pos.west|-metrology);
+ \draw[->] (addRz.east)node[above right]{$R_z$} -- (compute_pos.west|-addRz);
+ \draw[->] (compute_pos.south)node -- (compute_error.north)node[above right]{$\bm{y}_{\mathcal{X}}$};
+
+ \draw[->] (outputde) -- (Rz_kinematics.west) node[above left]{$\bm{\mathcal{L}}$};
+ \draw[->] (ustation_kinematics.east) -- (compute_error.west) node[above left]{$\bm{r}_{\mathcal{X}}$};
+ \draw[->] (compute_error.east) -- (hexa_jacobian.west) node[above left]{$\bm{\epsilon\mathcal{X}}$};
+ \draw[->] (hexa_jacobian.east) -- ++(1.8, 0) node[above left]{$\bm{\epsilon\mathcal{L}}$};
+
+ \draw[->] (outputfn) -- ($(outputfn-|hexa_jacobian.east) + (1.0, 0)$)coordinate(fn) node[above left]{$\bm{f}_n$};
+
+ \begin{scope}[on background layer]
+ \node[fit={(metrology.north-|ustation.west) (hexa_jacobian.east|-compute_error.south)}, fill=black!10!white, draw, dashed, inner sep=4pt] (plant) {};
+ \node[anchor={north east}] at (plant.north east){$\text{Plant}$};
+ \end{scope}
+
+ \node[block, above=0.2 of plant, fill=coloryellow!20!white] (Kiff) {$\bm{K}_{\text{IFF}}$};
+ \draw[->] ($(fn)-(0.6,0)$)node[branch]{} |- (Kiff.east);
+
+ \node[addb={+}{}{}{}{}, left=0.8 of inputf] (addf) {};
+ \draw[->] (Kiff.west) -| (addf.north);
+
+ \begin{scope}[on background layer]
+ \node[fit={(plant.south-|fn) (addf.west|-Kiff.north)}, fill=black!20!white, draw, dashed, inner sep=4pt] (damped_plant) {};
+ \node[anchor={north east}] at (damped_plant.north east){$\text{Damped Plant}$};
+ \end{scope}
+
+ \begin{scope}[on background layer]
+ \node[fit={(metrology.north-|ustation.west) (hexa_jacobian.east|-compute_error.south)}, fill=black!10!white, draw, dashed, inner sep=4pt] (plant) {};
+ \node[anchor={north east}] at (plant.north east){$\text{Plant}$};
+ \end{scope}
+
+ \node[block, left=0.8 of addf, fill=colorgreen!20!white] (Khac) {$\bm{K}_{\text{HAC}}$};
+ \draw[->] ($(hexa_jacobian.east)+(1.4,0)$)node[branch]{} |- ($(Khac.west)+(-0.4, -3.4)$) |- (Khac.west);
+ \draw[->] (Khac.east) -- node[midway, above]{$\bm{f}^{\prime}$} (addf.west);
+ \draw[->] (addf.east) -- (inputf) node[above left]{$\bm{f}$};
+\end{tikzpicture}
+#+end_src
+
+#+name: fig:nass_control_architecture
+#+caption: The physical systems are shown in blue, the control kinematics in red, the decentralized Integral Force Feedback in yellow and the centralized High Authority Controller in green.
+#+attr_latex: :width \linewidth
+#+RESULTS:
+[[file:figs/nass_control_architecture.png]]
* Decentralized Active Damping
:PROPERTIES:
@@ -320,14 +430,18 @@ Explain how to compute the errors in the frame of the struts (rotating)
<>
** Introduction :ignore:
-- How to apply/optimize IFF on an hexapod? ()
+- How to apply/optimize IFF on an hexapod?
- Robustness to payload mass
- Root Locus
- Damping optimization
-- [ ][[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/control_active_damping.org][control_active_damping]]
-- [ ][[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/control-active-damping.org][active damping for stewart platforms]]
-- [ ][[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/bibliography.org::*Vibration Control and Active Damping][Vibration Control and Active Damping]]
+Explain which samples are tested:
+- 1kg, 25kg, 50kg
+- cylindrical, 200mm height?
+
+- [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/control_active_damping.org][control_active_damping]]
+- [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/control-active-damping.org][active damping for stewart platforms]]
+- [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/bibliography.org::*Vibration Control and Active Damping][Vibration Control and Active Damping]]
** Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
@@ -356,6 +470,10 @@ Explain how to compute the errors in the frame of the struts (rotating)
** IFF Plant
+- [ ] Show how it changes with the payload mass (1, 25, 50)
+- [ ] Effect of rotation (no rotation - 60rpm)
+- [ ] Added parallel stiffness
+
#+begin_src matlab
%% Identify the plant dynamics using the Simscape model
@@ -388,23 +506,25 @@ initializeReferences();
% 'eL1', 'eL2', 'eL3', 'eL4', 'eL5', 'eL6'};
#+end_src
-- Show how it changes with the payload mass (1, 25, 50)
-- Effect of rotation (1rpm, 60rpm)
-
** Controller Design
-- Apply IFF
-- Show Root Locus
+- Use Integral controller (with parallel stiffness)
+- Show Root Locus (show that without parallel stiffness => unstable?)
- Choose optimal gain.
Here in MIMO, cannot have optimal damping for all modes. (there is a paper that tries to optimize that)
-- Show robustness to change of payload (loci?)
+- Show robustness to change of payload (loci?) / Change of rotating velocity ?
- Reference to paper showing stability in MIMO for decentralized IFF
** Sensitivity to disturbances
-- Compute transfer functions from spindle vertical error to sample vertical error with IFF (and compare without the NASS)
-- Same for horizontal
-- Maybe noise budgeting, but may be complex in MIMO...
+Disturbances:
+- floor motion
+- Spindle X and Z
+- Direct forces?
+
+- Compute sensitivity to disturbances with and without IFF (and compare without the NASS)
+
+- Maybe noise budgeting, but may be complex in MIMO... ?
* Centralized Active Vibration Control
:PROPERTIES:
@@ -451,22 +571,21 @@ From control kinematics:
** HAC Plant
-- Compute transfer function from u to dL (with IFF applied)
-
-** Effect of Payload mass
-
-- Show effect of payload mass + rotation
+- [ ] Compute transfer function from $\bm{f}$ to $\bm{\epsilon\mathcal{L}}$ (with IFF applied) for all masses
+- [ ] Show effect of rotation
+- [ ] Show effect of payload mass
+- [ ] Compare with undamped plants
** Controller design
-- Show robustness with Loci
+- [ ] Show design HAC with formulas and parameters
+- [ ] Show robustness with Loci for all masses
** Sensitivity to disturbances
- Compute transfer functions from spindle vertical error to sample vertical error with HAC-IFF
Compare without the NASS, and with just IFF
- Same for horizontal
-- Maybe noise budgeting, but may be complex in MIMO...
** Tomography experiment
@@ -1802,6 +1921,7 @@ end
function [nano_hexapod] = initializeSimplifiedNanoHexapod(args)
arguments
+ args.type char {mustBeMember(args.type,{'none', 'stewart'})} = 'stewart'
%% initializeFramesPositions
args.H (1,1) double {mustBeNumeric, mustBePositive} = 95e-3 % Height of the nano-hexapod [m]
args.MO_B (1,1) double {mustBeNumeric} = 150e-3 % Height of {B} w.r.t. {M} [m]
@@ -1862,6 +1982,13 @@ function [nano_hexapod] = initializeSimplifiedNanoHexapod(args)
stewart = initializeStewartPlatform();
+ switch args.type
+ case 'none'
+ stewart.type = 0;
+ case 'stewart'
+ stewart.type = 1;
+ end
+
stewart = initializeFramesPositions(stewart, ...
'H', args.H, ...
'MO_B', args.MO_B);
diff --git a/simscape-nass.pdf b/simscape-nass.pdf
index c64e5ed..7e76748 100644
Binary files a/simscape-nass.pdf and b/simscape-nass.pdf differ
diff --git a/simscape-nass.tex b/simscape-nass.tex
index 8735420..fda9e8f 100644
--- a/simscape-nass.tex
+++ b/simscape-nass.tex
@@ -1,4 +1,4 @@
-% Created 2025-02-12 Wed 11:34
+% Created 2025-02-12 Wed 15:35
% Intended LaTeX compiler: pdflatex
\documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt}
@@ -39,84 +39,121 @@ In this section:
\item Simulation of experiments
\end{itemize}
-\begin{table}[htbp]
-\centering
-\begin{tabularx}{0.6\linewidth}{lX}
-\toprule
-\textbf{Sections} & \textbf{Matlab File}\\
-\midrule
-Section \ref{sec:nass_1_a} & \texttt{nass\_1\_.m}\\
-\bottomrule
-\end{tabularx}
-\caption{\label{tab:nass_section_matlab_code}Report sections and corresponding Matlab files}
-
-\end{table}
-
\chapter{Control Kinematics}
\label{sec:nass_kinematics}
\begin{itemize}
-\item Explain how the position error can be expressed in the frame of the nano-hexapod
-\item[{$\square$}] \href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/positioning\_error.org}{positioning\_error}: Explain how the NASS control is made (computation of the wanted position, measurement of the sample position, computation of the errors)
-\item Control architecture, block diagram
-
-\item Schematic with micro-station + nass + metrology + control system
-\item Zoom in the control system with blocs
-\item Then explain all the blocs
-\item Say that there are many control strategies.
-It will be the topic of chapter 2.3.
-Here, we start with something simple: control in the frame of the struts
+\item Explained during the last section: HAC-IFF
+Decentralized IFF
+Centralized HAC, control in the frame of the struts
+\item To compute the positioning errors in the frame of the struts
+\begin{itemize}
+\item Compute the wanted pose of the sample with respect to the granite using the micro-station kinematics (Section \ref{ssec:nass_ustation_kinematics})
+\item Measure the sample pose with respect to the granite using the external metrology and internal metrology for Rz (Section \ref{ssec:nass_sample_pose_error})
+\item Compute the sample pose error and map these errors in the frame of the struts (Section \ref{ssec:nass_error_struts})
\end{itemize}
+\item The complete control architecture is shown in Section \ref{ssec:nass_control_architecture}
+
+\item[{$\square$}] \href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/positioning\_error.org}{positioning\_error}: Explain how the NASS control is made (computation of the wanted position, measurement of the sample position, computation of the errors)
+
+\item[{$\square$}] Schematic with micro-station + nass + metrology + control system => explain what is inside the control system
+\end{itemize}
+\begin{figure}[htbp]
+\centering
+\includegraphics[scale=1]{figs/nass_concept_schematic.png}
+\caption{\label{fig:nass_concept_schematic}Figure caption}
+\end{figure}
\section{Micro Station Kinematics}
+\label{ssec:nass_ustation_kinematics}
\begin{itemize}
\item from \ref{ssec:ustation_kinematics}, computation of the wanted sample pose from the setpoint of each stage.
\end{itemize}
+wanted pose = Tdy * Try * Trz * Tu
+
+
\section{Computation of the sample's pose error}
+\label{ssec:nass_sample_pose_error}
From metrology (here supposed to be perfect 6-DoF), compute the sample's pose error.
Has to invert the homogeneous transformation.
-\section{Position error in the frame of the nano-hexapod}
+In reality, 5DoF metrology => have to estimate the Rz using spindle encoder + nano-hexapod internal metrology (micro-hexapod does not perform Rz rotation).
-Explain how to compute the errors in the frame of the struts (rotating)
+\section{Position error in the frame of the struts}
+\label{ssec:nass_error_struts}
+
+Explain how to compute the errors in the frame of the struts (rotating):
+\begin{itemize}
+\item Errors in the granite frame
+\item Errors in the frame of the nano-hexapod
+\item Errors in the frame of the struts => used for control
+\end{itemize}
+
+\section{Control Architecture}
+\label{ssec:nass_control_architecture}
+
+\begin{itemize}
+\item Say that there are many control strategies.
+It will be the topic of chapter 2.3.
+Here, we start with something simple: control in the frame of the struts
+\item[{$\square$}] block diagram of the complete control architecture
+\end{itemize}
+
+\begin{figure}[htbp]
+\centering
+\includegraphics[scale=1,width=\linewidth]{figs/nass_control_architecture.png}
+\caption{\label{fig:nass_control_architecture}Figure caption}
+\end{figure}
\chapter{Decentralized Active Damping}
\label{sec:nass_active_damping}
\begin{itemize}
-\item How to apply/optimize IFF on an hexapod? ()
+\item How to apply/optimize IFF on an hexapod?
\item Robustness to payload mass
\item Root Locus
\item Damping optimization
+\end{itemize}
-\item\relax [ ]\href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/control\_active\_damping.org}{control\_active\_damping}
-\item\relax [ ]\href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/control-active-damping.org}{active damping for stewart platforms}
-\item\relax [ ]\href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/bibliography.org}{Vibration Control and Active Damping}
+Explain which samples are tested:
+\begin{itemize}
+\item 1kg, 25kg, 50kg
+\item cylindrical, 200mm height?
+
+\item[{$\square$}] \href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/control\_active\_damping.org}{control\_active\_damping}
+\item[{$\square$}] \href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/control-active-damping.org}{active damping for stewart platforms}
+\item[{$\square$}] \href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/bibliography.org}{Vibration Control and Active Damping}
\end{itemize}
\section{IFF Plant}
\begin{itemize}
-\item Show how it changes with the payload mass (1, 25, 50)
-\item Effect of rotation (1rpm, 60rpm)
+\item[{$\square$}] Show how it changes with the payload mass (1, 25, 50)
+\item[{$\square$}] Effect of rotation (no rotation - 60rpm)
+\item[{$\square$}] Added parallel stiffness
\end{itemize}
\section{Controller Design}
\begin{itemize}
-\item Apply IFF
-\item Show Root Locus
+\item Use Integral controller (with parallel stiffness)
+\item Show Root Locus (show that without parallel stiffness => unstable?)
\item Choose optimal gain.
Here in MIMO, cannot have optimal damping for all modes. (there is a paper that tries to optimize that)
-\item Show robustness to change of payload (loci?)
+\item Show robustness to change of payload (loci?) / Change of rotating velocity ?
\item Reference to paper showing stability in MIMO for decentralized IFF
\end{itemize}
\section{Sensitivity to disturbances}
+Disturbances:
\begin{itemize}
-\item Compute transfer functions from spindle vertical error to sample vertical error with IFF (and compare without the NASS)
-\item Same for horizontal
-\item Maybe noise budgeting, but may be complex in MIMO\ldots{}
+\item floor motion
+\item Spindle X and Z
+\item Direct forces?
+
+\item Compute sensitivity to disturbances with and without IFF (and compare without the NASS)
+
+\item Maybe noise budgeting, but may be complex in MIMO\ldots{} ?
\end{itemize}
\chapter{Centralized Active Vibration Control}
@@ -138,19 +175,17 @@ From control kinematics:
\section{HAC Plant}
\begin{itemize}
-\item Compute transfer function from u to dL (with IFF applied)
-\end{itemize}
-
-\section{Effect of Payload mass}
-
-\begin{itemize}
-\item Show effect of payload mass + rotation
+\item[{$\square$}] Compute transfer function from \(\bm{f}\) to \(\bm{\epsilon\mathcal{L}}\) (with IFF applied) for all masses
+\item[{$\square$}] Show effect of rotation
+\item[{$\square$}] Show effect of payload mass
+\item[{$\square$}] Compare with undamped plants
\end{itemize}
\section{Controller design}
\begin{itemize}
-\item Show robustness with Loci
+\item[{$\square$}] Show design HAC with formulas and parameters
+\item[{$\square$}] Show robustness with Loci for all masses
\end{itemize}
\section{Sensitivity to disturbances}
@@ -159,7 +194,6 @@ From control kinematics:
\item Compute transfer functions from spindle vertical error to sample vertical error with HAC-IFF
Compare without the NASS, and with just IFF
\item Same for horizontal
-\item Maybe noise budgeting, but may be complex in MIMO\ldots{}
\end{itemize}
\section{Tomography experiment}