diff --git a/figs/nhexa_actuator_model.pdf b/figs/nhexa_actuator_model.pdf
new file mode 100644
index 0000000..7f8db88
Binary files /dev/null and b/figs/nhexa_actuator_model.pdf differ
diff --git a/figs/nhexa_actuator_model.png b/figs/nhexa_actuator_model.png
new file mode 100644
index 0000000..0ed1605
Binary files /dev/null and b/figs/nhexa_actuator_model.png differ
diff --git a/figs/nhexa_actuator_model.svg b/figs/nhexa_actuator_model.svg
new file mode 100644
index 0000000..a741b9d
--- /dev/null
+++ b/figs/nhexa_actuator_model.svg
@@ -0,0 +1,1017 @@
+
+
diff --git a/figs/nhexa_simscape_screenshot.jpg b/figs/nhexa_simscape_screenshot.jpg
new file mode 100644
index 0000000..bc85d7f
Binary files /dev/null and b/figs/nhexa_simscape_screenshot.jpg differ
diff --git a/figs/nhexa_simscape_screenshot.png b/figs/nhexa_simscape_screenshot.png
new file mode 100644
index 0000000..9546417
Binary files /dev/null and b/figs/nhexa_simscape_screenshot.png differ
diff --git a/figs/nhexa_stewart_loop_closure.svg b/figs/nhexa_stewart_loop_closure.svg
deleted file mode 100644
index db46762..0000000
--- a/figs/nhexa_stewart_loop_closure.svg
+++ /dev/null
@@ -1,2434 +0,0 @@
-
-
diff --git a/figs/nhexa_stewart_model_def.pdf b/figs/nhexa_stewart_model_def.pdf
new file mode 100644
index 0000000..aa3dd69
Binary files /dev/null and b/figs/nhexa_stewart_model_def.pdf differ
diff --git a/figs/nhexa_stewart_model_def.png b/figs/nhexa_stewart_model_def.png
new file mode 100644
index 0000000..4218edc
Binary files /dev/null and b/figs/nhexa_stewart_model_def.png differ
diff --git a/figs/nhexa_stewart_model_def.svg b/figs/nhexa_stewart_model_def.svg
new file mode 100644
index 0000000..025da71
--- /dev/null
+++ b/figs/nhexa_stewart_model_def.svg
@@ -0,0 +1,3211 @@
+
+
diff --git a/figs/nhexa_stewart_model_input_outputs.pdf b/figs/nhexa_stewart_model_input_outputs.pdf
new file mode 100644
index 0000000..d1970f0
Binary files /dev/null and b/figs/nhexa_stewart_model_input_outputs.pdf differ
diff --git a/figs/nhexa_stewart_model_input_outputs.png b/figs/nhexa_stewart_model_input_outputs.png
new file mode 100644
index 0000000..28fa131
Binary files /dev/null and b/figs/nhexa_stewart_model_input_outputs.png differ
diff --git a/figs/nhexa_stewart_model_input_outputs.svg b/figs/nhexa_stewart_model_input_outputs.svg
new file mode 100644
index 0000000..6adb2f9
--- /dev/null
+++ b/figs/nhexa_stewart_model_input_outputs.svg
@@ -0,0 +1,2910 @@
+
+
diff --git a/matlab/nano_hexapod_model.slx b/matlab/nano_hexapod_model.slx
index 7d83abf..46a43bc 100644
Binary files a/matlab/nano_hexapod_model.slx and b/matlab/nano_hexapod_model.slx differ
diff --git a/matlab/src/initializeSimplifiedNanoHexapod.m b/matlab/src/initializeSimplifiedNanoHexapod.m
index d8ee1a6..0df78c3 100644
--- a/matlab/src/initializeSimplifiedNanoHexapod.m
+++ b/matlab/src/initializeSimplifiedNanoHexapod.m
@@ -13,11 +13,11 @@ function [nano_hexapod] = initializeSimplifiedNanoHexapod(args)
args.MTh (6,1) double {mustBeNumeric} = [255, 285, 15, 45, 135, 165]*(pi/180) % Angles of fixed joints [rad]
%% Actuators
args.actuator_type char {mustBeMember(args.actuator_type,{'1dof', '2dof', 'flexible'})} = '1dof'
- args.actuator_k (1,1) double {mustBeNumeric, mustBePositive} = 380000
- args.actuator_kp (1,1) double {mustBeNumeric, mustBeNonnegative} = 0
+ args.actuator_k (1,1) double {mustBeNumeric, mustBePositive} = 1e6
+ args.actuator_kp (1,1) double {mustBeNumeric, mustBeNonnegative} = 5e4
args.actuator_ke (1,1) double {mustBeNumeric, mustBePositive} = 4952605
args.actuator_ka (1,1) double {mustBeNumeric, mustBePositive} = 2476302
- args.actuator_c (1,1) double {mustBeNumeric, mustBePositive} = 5
+ args.actuator_c (1,1) double {mustBeNumeric, mustBePositive} = 50
args.actuator_cp (1,1) double {mustBeNumeric, mustBeNonnegative} = 0
args.actuator_ce (1,1) double {mustBeNumeric, mustBePositive} = 100
args.actuator_ca (1,1) double {mustBeNumeric, mustBePositive} = 50
diff --git a/simscape-nano-hexapod.bib b/simscape-nano-hexapod.bib
index 0964ca7..41e7bc4 100644
--- a/simscape-nano-hexapod.bib
+++ b/simscape-nano-hexapod.bib
@@ -10,6 +10,18 @@
+@article{stewart65_platf_with_six_degrees_freed,
+ author = {Stewart, Doug},
+ title = {A Platform With Six Degrees of Freedom},
+ journal = {Proceedings of the institution of mechanical engineers},
+ volume = 180,
+ number = 1,
+ pages = {371--386},
+ year = 1965,
+ publisher = {Sage Publications Sage UK: London, England},
+}
+
+
@article{preumont07_six_axis_singl_stage_activ,
author = {A. Preumont and M. Horodinca and I. Romanescu and B. de
Marneffe and M. Avraam and A. Deraemaeker and F. Bossens and
diff --git a/simscape-nano-hexapod.org b/simscape-nano-hexapod.org
index 86ab040..a438291 100644
--- a/simscape-nano-hexapod.org
+++ b/simscape-nano-hexapod.org
@@ -896,29 +896,41 @@ Both have no stiffness along their DoF and are mass-less.
**** Actuators
-In its simplest form, the actuators are modelled with one prismatic joint having some internal stiffness and damping.
+In its simplest form, the actuators are modelled with one prismatic joint having some internal stiffness $k_a$ and damping $c_a$, and a force source $f$.
-As was shown
+As was shown using the 3DoF rotating model, having a parallel stiffness $k_p$ with the force sensor permits to regain the guaranteed stability of decentralized IFF when the spindle is rotating.
-- [ ] Add schematic of the 1DoF model (possibly with added parallel stiffness)
-- [ ] Add model parameters for the 2DoF actuator used for the model (choose something reasonable for an APA)
+A force sensor with output $f_m$ is added as well as a relative motion sensor with output $d_L$.
+The model of the nano-hexapod actuators used during the conceptual phase are shown in Figure ref:fig:nhexa_actuator_model with the parameters summarized in Table ref:tab:nhexa_actuator_parameters.
+Thanks to the flexibility of the multi-body model, the model of the actuators can later be refined.
-- Actuators: can be modelled as wanted
-- Talk about 2DoF and 1DoF
-
-
-During the conceptual design: Actuators = 1DoF + Encoder (mass-less)
-- k = 1N/um
-- Force sensor
-
+#+attr_latex: :options [b]{0.6\linewidth}
+#+begin_minipage
+#+name: fig:nhexa_actuator_model
+#+caption: Model of the nano-hexapod actuators
+#+attr_latex: :float nil :scale 1
+[[file:figs/nhexa_actuator_model.png]]
+#+end_minipage
+\hfill
+#+attr_latex: :options [b]{0.38\linewidth}
+#+begin_minipage
+#+begin_scriptsize
+#+latex: \centering
+#+attr_latex: :environment tabularx :width 0.4\linewidth :placement [b] :align Xl
+#+attr_latex: :booktabs t :float nil :center nil
+| | Value |
+|-------+-----------------|
+| $k_a$ | $1\,N/\mu m$ |
+| $c_a$ | $50\,N/(m/s)$ |
+| $k_p$ | $0.05\,N/\mu m$ |
+#+latex: \captionof{table}{\label{tab:nhexa_actuator_parameters}Actuator parameters}
+#+end_scriptsize
+#+end_minipage
** Model Dynamics
<>
-- [ ] Make schematic with inputs and outputs (maybe add frames {F} and {M} to connect to outside world)
-- [ ] Screenshot of the obtained multi-body model ?
-
- If all is perfect (mass-less struts, perfect joints, etc...), maybe compare analytical model with simscape model?
- Say something about the model order
Model order is 12, and that we can compute modes from matrices M and K, compare with the Simscape model
@@ -926,6 +938,22 @@ During the conceptual design: Actuators = 1DoF + Encoder (mass-less)
- Compare with analytical formulas (see number of states)
- [ ] Effect of parallel on IFF plant?
+#+attr_latex: :options [b]{0.6\linewidth}
+#+begin_minipage
+#+name: fig:nhexa_stewart_model_input_outputs
+#+caption: Nano-Hexapod plant with inputs and outputs. Frames $\{F\}$ and $\{M\}$ can be connected to other elements in the multi-body models.
+#+attr_latex: :scale 1 :float nil
+[[file:figs/nhexa_stewart_model_input_outputs.png]]
+#+end_minipage
+\hfill
+#+attr_latex: :options [b]{0.35\linewidth}
+#+begin_minipage
+#+name: fig:nhexa_simscape_screenshot
+#+caption: 3D representation of the multi-body model
+#+attr_latex: :width 0.90\linewidth :float nil
+[[file:figs/nhexa_simscape_screenshot.jpg]]
+#+end_minipage
+
#+begin_src matlab
%% Plant using Analytical Equations
% Stewart platform definition
@@ -1088,6 +1116,105 @@ xlim([freqs(1), freqs(end)]);
#+begin_src matlab
initializeSimplifiedNanoHexapod();
+initializeSample('type', 'cylindrical', 'm', 50);
+initializeLoggingConfiguration('log', 'none');
+initializeController('type', 'open-loop');
+#+end_src
+
+#+begin_src matlab
+% Input/Output definition
+clear io; io_i = 1;
+io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs [N]
+io(io_i) = linio([mdl, '/plant'], 2, 'openoutput', [], 'dL'); io_i = io_i + 1; % Encoders [m]
+io(io_i) = linio([mdl, '/plant'], 2, 'openoutput', [], 'fn'); io_i = io_i + 1; % Force Sensors [N]
+
+% With no payload
+G = linearize(mdl, io);
+G.InputName = {'f1', 'f2', 'f3', 'f4', 'f5', 'f6'};
+G.OutputName = {'dL1', 'dL2', 'dL3', 'dL4', 'dL5', 'dL6', ...
+ 'fn1', 'fn2', 'fn3', 'fn4', 'fn5', 'fn6'};
+#+end_src
+
+#+begin_src matlab :exports none
+%% Diagonal elements of the FRF matrix from u to de
+figure;
+tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
+
+ax1 = nexttile([2,1]);
+hold on;
+plot(freqs, abs(squeeze(freqresp(G(1,1), freqs, 'Hz'))), 'color', colors(2,:), ...
+ 'DisplayName', '$d_{ei}/u_i$ - Model')
+for i = 2:6
+ plot(freqs, abs(squeeze(freqresp(G(i,i), freqs, 'Hz'))), 'color', colors(2,:), ...
+ 'HandleVisibility', 'off');
+end
+for i = 1:5
+ for j = i+1:6
+ plot(freqs, abs(squeeze(freqresp(G(i,j), freqs, 'Hz'))), 'color', [0, 0, 0, 0.2], ...
+ 'HandleVisibility', 'off');
+ end
+end
+hold off;
+set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
+ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
+ylim([1e-9, 1e-4]);
+leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1);
+leg.ItemTokenSize(1) = 15;
+
+ax2 = nexttile;
+hold on;
+for i = 1:6
+ plot(freqs, 180/pi*angle(squeeze(freqresp(G(i,i), freqs, 'Hz'))), 'color', [colors(2,:),0.5]);
+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');
+xlim([freqs(1), freqs(end)]);
+#+end_src
+
+#+begin_src matlab :exports none
+%% Diagonal elements of the FRF matrix from u to de
+figure;
+tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
+
+ax1 = nexttile([2,1]);
+hold on;
+plot(freqs, abs(squeeze(freqresp(G(6+1,1), freqs, 'Hz'))), 'color', colors(2,:), ...
+ 'DisplayName', '$d_{ei}/u_i$ - Model')
+for i = 2:6
+ plot(freqs, abs(squeeze(freqresp(G(6+i,i), freqs, 'Hz'))), 'color', colors(2,:), ...
+ 'HandleVisibility', 'off');
+end
+for i = 1:5
+ for j = i+1:6
+ plot(freqs, abs(squeeze(freqresp(G(6+i,j), freqs, 'Hz'))), 'color', [0, 0, 0, 0.2], ...
+ 'HandleVisibility', 'off');
+ end
+end
+hold off;
+set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
+ylabel('Amplitude [N/N]'); set(gca, 'XTickLabel',[]);
+ylim([1e-5, 1e2]);
+leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1);
+leg.ItemTokenSize(1) = 15;
+
+ax2 = nexttile;
+hold on;
+for i = 1:6
+ plot(freqs, 180/pi*angle(squeeze(freqresp(G(6+i,i), freqs, 'Hz'))), 'color', [colors(2,:),0.5]);
+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');
+xlim([freqs(1), freqs(end)]);
#+end_src
** Conclusion
@@ -1447,11 +1574,11 @@ function [nano_hexapod] = initializeSimplifiedNanoHexapod(args)
args.MTh (6,1) double {mustBeNumeric} = [255, 285, 15, 45, 135, 165]*(pi/180) % Angles of fixed joints [rad]
%% Actuators
args.actuator_type char {mustBeMember(args.actuator_type,{'1dof', '2dof', 'flexible'})} = '1dof'
- args.actuator_k (1,1) double {mustBeNumeric, mustBePositive} = 380000
- args.actuator_kp (1,1) double {mustBeNumeric, mustBeNonnegative} = 0
+ args.actuator_k (1,1) double {mustBeNumeric, mustBePositive} = 1e6
+ args.actuator_kp (1,1) double {mustBeNumeric, mustBeNonnegative} = 5e4
args.actuator_ke (1,1) double {mustBeNumeric, mustBePositive} = 4952605
args.actuator_ka (1,1) double {mustBeNumeric, mustBePositive} = 2476302
- args.actuator_c (1,1) double {mustBeNumeric, mustBePositive} = 5
+ args.actuator_c (1,1) double {mustBeNumeric, mustBePositive} = 50
args.actuator_cp (1,1) double {mustBeNumeric, mustBeNonnegative} = 0
args.actuator_ce (1,1) double {mustBeNumeric, mustBePositive} = 100
args.actuator_ca (1,1) double {mustBeNumeric, mustBePositive} = 50
diff --git a/simscape-nano-hexapod.pdf b/simscape-nano-hexapod.pdf
index 33b9501..f0f6248 100644
Binary files a/simscape-nano-hexapod.pdf and b/simscape-nano-hexapod.pdf differ
diff --git a/simscape-nano-hexapod.tex b/simscape-nano-hexapod.tex
index 3167b74..dffebb8 100644
--- a/simscape-nano-hexapod.tex
+++ b/simscape-nano-hexapod.tex
@@ -1,4 +1,4 @@
-% Created 2025-02-10 Mon 14:23
+% Created 2025-02-10 Mon 17:32
% Intended LaTeX compiler: pdflatex
\documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt}
@@ -235,18 +235,18 @@ Equation \eqref{eq:nhexa_loop_closure_velocity_bis} can be rearranged in a matri
The matrix \(\bm{J}\) is called the Jacobian matrix, and is defined by \eqref{eq:nhexa_jacobian}, with:
\begin{itemize}
-\item \(\hat{\bm{s}}_i\) the orientation of the struts expressed in \(\{A\}\)
-\item \(\bm{b}_i\) the position of the joints with respect to \(O_B\) and express in \(\{A\}\)
+\item \({}^A\hat{\bm{s}}_i\) the orientation of the struts expressed in \(\{A\}\)
+\item \({}^A\bm{b}_i\) the position of the joints with respect to \(O_B\) and express in \(\{A\}\)
\end{itemize}
\begin{equation}\label{eq:nhexa_jacobian}
\bm{J} = \begin{bmatrix}
- {\hat{\bm{s}}_1}^T & (\bm{b}_1 \times \hat{\bm{s}}_1)^T \\
- {\hat{\bm{s}}_2}^T & (\bm{b}_2 \times \hat{\bm{s}}_2)^T \\
- {\hat{\bm{s}}_3}^T & (\bm{b}_3 \times \hat{\bm{s}}_3)^T \\
- {\hat{\bm{s}}_4}^T & (\bm{b}_4 \times \hat{\bm{s}}_4)^T \\
- {\hat{\bm{s}}_5}^T & (\bm{b}_5 \times \hat{\bm{s}}_5)^T \\
- {\hat{\bm{s}}_6}^T & (\bm{b}_6 \times \hat{\bm{s}}_6)^T
+ {{}^A\hat{\bm{s}}_1}^T & ({}^A\bm{b}_1 \times {}^A\hat{\bm{s}}_1)^T \\
+ {{}^A\hat{\bm{s}}_2}^T & ({}^A\bm{b}_2 \times {}^A\hat{\bm{s}}_2)^T \\
+ {{}^A\hat{\bm{s}}_3}^T & ({}^A\bm{b}_3 \times {}^A\hat{\bm{s}}_3)^T \\
+ {{}^A\hat{\bm{s}}_4}^T & ({}^A\bm{b}_4 \times {}^A\hat{\bm{s}}_4)^T \\
+ {{}^A\hat{\bm{s}}_5}^T & ({}^A\bm{b}_5 \times {}^A\hat{\bm{s}}_5)^T \\
+ {{}^A\hat{\bm{s}}_6}^T & ({}^A\bm{b}_6 \times {}^A\hat{\bm{s}}_6)^T
\end{bmatrix}
\end{equation}
@@ -284,7 +284,7 @@ It can be computed once at the rest position and used for both forward and inver
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/nhexa_forward_kinematics_approximate_errors.png}
-\caption{\label{fig:nhexa_forward_kinematics_approximate_errors}Errors associated with the use of the Jacobian matrix to solve the forward kinematic problem}
+\caption{\label{fig:nhexa_forward_kinematics_approximate_errors}Errors associated with the use of the Jacobian matrix to solve the forward kinematic problem. A Stewart platform with an height of \(100\,mm\) was used to perform this analysis}
\end{figure}
\paragraph{Static Forces}
@@ -425,73 +425,140 @@ While a reasonable geometric configuration will be used to validate the NASS dur
\chapter{Multi-Body Model}
\label{sec:nhexa_model}
+\textbf{Goal}:
\begin{itemize}
\item Study the dynamics of Stewart platform
\item Instead of working with complex analytical models: a multi-body model is used.
Complex because has to model the inertia of the struts.
Cite papers that tries to model the stewart platform analytically
Advantage: it will be easily included in the model of the NASS
-
-\item[{$\square$}] Have a table somewhere that summarizes the main characteristics of the nano-hexapod model
-\begin{itemize}
-\item location of joints
-\item size / mass of platforms, etc\ldots{}
-\end{itemize}
\end{itemize}
\section{Model Definition}
\label{ssec:nhexa_model_def}
+\paragraph{Geometry}
-\begin{itemize}
-\item[{$\square$}] Make a schematic of the definition process (for instance knowing the ai, bi points + \{A\} and \{B\} allows to compute Jacobian, etc\ldots{})
+The geometry of the Stewart platform (see Figure \ref{fig:nhexa_stewart_model_def}) is defined by the position of frame \(\{F\}\) with respect to \(\{M\}\) and by the locations of the joints \({}^Fa_i\) and \({}^Mb_i\).
+The point of interest, indicated by frame \(\{A\}\) is located \(150\,mm\) above the top platform (i.e. above the \(\{M\}\) frame).
+Parameters that defines the geometry of the nano-hexapod multi-body models are summarized in Table \ref{tab:nhexa_stewart_model_geometry}.
-\item What is important for the model:
-\begin{itemize}
-\item Inertia of plates and struts
-\item Positions of joints / Orientation of struts
-\item Definition of frames (for Jacobian, stiffness analysis, etc\ldots{})
-\end{itemize}
-\end{itemize}
+From this, the orientation \(\hat{s}_i\) and length \(l_i\) of the struts can be computed, the Jacobian matrix \(\bm{J}\) can be computed, and the kinematics of the Stewart platform can be studied.
-Then, several things can be computed:
-\begin{itemize}
-\item Kinematics, stiffness, platform mobility, dynamics, etc\ldots{}
-\end{itemize}
+\begin{minipage}[b]{0.6\linewidth}
+\begin{center}
+\includegraphics[scale=1,scale=1]{figs/nhexa_stewart_model_def.png}
+\captionof{figure}{\label{fig:nhexa_stewart_model_def}Geometry of the stewart platform}
+\end{center}
+\end{minipage}
+\hfill
+\begin{minipage}[b]{0.38\linewidth}
+\begin{scriptsize}
+\centering
+\begin{tabularx}{0.75\linewidth}{Xrrr}
+\toprule
+ & \(\bm{x}\) & \(\bm{y}\) & \(\bm{z}\)\\
+\midrule
+\({}^MO_B\) & \(0\) & \(0\) & \(150\)\\
+\({}^FO_M\) & \(0\) & \(0\) & \(95\)\\
+\({}^Fa_1\) & \(-92\) & \(-77\) & \(20\)\\
+\({}^Fa_2\) & \(92\) & \(-77\) & \(20\)\\
+\({}^Fa_3\) & \(113\) & \(-41\) & \(20\)\\
+\({}^Fa_4\) & \(21\) & \(118\) & \(20\)\\
+\({}^Fa_5\) & \(-21\) & \(118\) & \(20\)\\
+\({}^Fa_6\) & \(-113\) & \(-41\) & \(20\)\\
+\({}^Mb_1\) & \(-28\) & \(-106\) & \(-20\)\\
+\({}^Mb_2\) & \(28\) & \(-106\) & \(-20\)\\
+\({}^Mb_3\) & \(106\) & \(28\) & \(-20\)\\
+\({}^Mb_4\) & \(78\) & \(78\) & \(-20\)\\
+\({}^Mb_5\) & \(-78\) & \(78\) & \(-20\)\\
+\({}^Mb_6\) & \(-106\) & \(28\) & \(-20\)\\
+\bottomrule
+\end{tabularx}
+\captionof{table}{\label{tab:nhexa_stewart_model_geometry}Parameter values in [mm]}
+\end{scriptsize}
+\end{minipage}
+\paragraph{Inertia of Plates}
-\begin{itemize}
-\item Joints: can be 2dof to 6dof
-\item Actuators: can be modelled as wanted
-\end{itemize}
+Both the fixed base and the top platform are modelled are solid bodies.
+The bottom plate is a cylinder with radius of \(120\,mm\) (matching the size of the micro-hexapod's top platform) and a thickness of \(15\,mm\).
+The top plate is also modelled as a cylinder with a radius of \(110\,mm\) and a thickness of \(15,mm\).
+Both have a mass of \(5\,kg\).
-\section{Nano Hexapod}
-\label{ssec:nhexa_model_nano_hexapod}
+\paragraph{Joints}
-Start simple:
-\begin{itemize}
-\item Perfect joints, massless actuators
-\end{itemize}
+The top and bottom joints, different number of DoF can be considered.
+universal joint, spherical joint, with added axial stiffness and even with added lateral stiffnesses.
+For each DoF, stiffnesses can be added.
-Joints: perfect 2dof/3dof (+ mass-less)
-Actuators: APA + Encoder (mass-less)
-\begin{itemize}
-\item k = 1N/um
-\item Force sensor
-\end{itemize}
+During the conceptual design phase, bottom joints are modelled with universal joints (2-DoF) while top joints are modelled with spherical joints (3-DoF).
+Both have no stiffness along their DoF and are mass-less.
-Definition of each part + Plant with defined inputs/outputs (force sensor, relative displacement sensor, etc\ldots{})
+\paragraph{Actuators}
+
+In its simplest form, the actuators are modelled with one prismatic joint having some internal stiffness \(k_a\) and damping \(c_a\), and a force source \(f\).
+
+As was shown using the 3DoF rotating model, having a parallel stiffness \(k_p\) with the force sensor permits to regain the guaranteed stability of decentralized IFF when the spindle is rotating.
+
+A force sensor with output \(f_m\) is added as well as a relative motion sensor with output \(d_L\).
+The model of the nano-hexapod actuators used during the conceptual phase are shown in Figure \ref{fig:nhexa_actuator_model} with the parameters summarized in Table \ref{tab:nhexa_actuator_parameters}.
+
+Thanks to the flexibility of the multi-body model, the model of the actuators can later be refined.
+
+\begin{minipage}[b]{0.6\linewidth}
+\begin{center}
+\includegraphics[scale=1,scale=1]{figs/nhexa_actuator_model.png}
+\captionof{figure}{\label{fig:nhexa_actuator_model}Model of the nano-hexapod actuators}
+\end{center}
+\end{minipage}
+\hfill
+\begin{minipage}[b]{0.38\linewidth}
+\begin{scriptsize}
+\centering
+\begin{tabularx}{0.4\linewidth}{Xl}
+\toprule
+ & Value\\
+\midrule
+\(k_a\) & \(1\,N/\mu m\)\\
+\(c_a\) & \(50\,N/(m/s)\)\\
+\(k_p\) & \(0.05\,N/\mu m\)\\
+\bottomrule
+\end{tabularx}
+\captionof{table}{\label{tab:nhexa_actuator_parameters}Actuator parameters}
+\end{scriptsize}
+\end{minipage}
\section{Model Dynamics}
\label{ssec:nhexa_model_dynamics}
+\begin{itemize}
+\item[{$\square$}] Screenshot of the obtained multi-body model ?
+\end{itemize}
+
+\begin{minipage}[b]{0.6\linewidth}
+\begin{center}
+\includegraphics[scale=1,scale=1]{figs/nhexa_stewart_model_input_outputs.png}
+\captionof{figure}{\label{fig:nhexa_stewart_model_input_outputs}Nano-Hexapod plant with inputs and outputs. Frames \(\{F\}\) and \(\{M\}\) can be connected to other elements in the multi-body models.}
+\end{center}
+\end{minipage}
+\hfill
+\begin{minipage}[b]{0.35\linewidth}
+\begin{center}
+\includegraphics[scale=1,width=0.90\linewidth]{figs/nhexa_simscape_screenshot.jpg}
+\captionof{figure}{\label{fig:nhexa_simscape_screenshot}3D representation of the multi-body model}
+\end{center}
+\end{minipage}
+
\begin{itemize}
\item If all is perfect (mass-less struts, perfect joints, etc\ldots{}), maybe compare analytical model with simscape model?
\item Say something about the model order
Model order is 12, and that we can compute modes from matrices M and K, compare with the Simscape model
\item 4 observed modes (due to symmetry, in reality 6 modes)
\item Compare with analytical formulas (see number of states)
-\item Effect of 2DoF APA on IFF plant?
+\item[{$\square$}] Effect of parallel on IFF plant?
\end{itemize}
+\section{Nano Hexapod}
+
\section*{Conclusion}
\begin{itemize}
\item Validation of multi-body model in a simple case