phd-nass-introduction/nass-introduction.org
2024-04-17 11:38:09 +02:00

23 KiB

Nano Active Stabilization System - Introduction

Context of this thesis / Background and Motivation

/tdehaeze/phd-nass-introduction/media/commit/8a9c47e80b0e162154e715c8509f00fa12adce9d/figs/introduction_esrf_picture.jpg

\begin{tikzpicture}
  \node[inner sep=0pt, anchor=south west] (photo) at (0,0)
  {\includegraphics[width=0.39\textwidth]{/home/thomas/Cloud/documents/reports/phd-thesis/figs/exp_setup_photo.png}};

  \coordinate[] (aheight) at (photo.north west);
  \coordinate[] (awidth)  at (photo.south east);

  \coordinate[] (granite) at ($0.1*(aheight)+0.1*(awidth)$);
  \coordinate[] (trans)   at ($0.5*(aheight)+0.4*(awidth)$);
  \coordinate[] (tilt)    at ($0.65*(aheight)+0.75*(awidth)$);
  \coordinate[] (hexapod) at ($0.7*(aheight)+0.5*(awidth)$);
  \coordinate[] (sample)  at ($0.9*(aheight)+0.55*(awidth)$);

  % Granite
  \node[labelc] at (granite) {1};
  % Translation stage
  \node[labelc] at (trans) {2};
  % Tilt Stage
  \node[labelc] at (tilt) {3};
  % Micro-Hexapod
  \node[labelc] at (hexapod) {4};
  % Sample
  \node[labelc] at (sample) {5};

  % Axis
  \begin{scope}[shift={($0.07*(aheight)+0.87*(awidth)$)}]
    \draw[->] (0, 0) -- ++(55:0.7) node[above] {$y$};
    \draw[->] (0, 0) -- ++(90:0.9) node[left] {$z$};
    \draw[->] (0, 0) -- ++(-20:0.7) node[above] {$x$};
  \end{scope}
\end{tikzpicture}

/tdehaeze/phd-nass-introduction/media/commit/8a9c47e80b0e162154e715c8509f00fa12adce9d/figs/introduction_id31_microstation_picture.png

Alternative: id31_microstation_cad_view.png (CAD view)

  \begin{tikzpicture}
    % Parameters
    \def\blockw{6.0cm}
    \def\blockh{1.2cm}

    \def\tiltdeg{3}
    \coordinate[] (rotationpoint) at (0, 4.5*\blockh);

    \begin{scope}[rotate around={\tiltdeg:(rotationpoint)}]
      % Tilt
      \path[] ([shift=(-120:4*\blockh)]rotationpoint) coordinate(beginarc) arc (-120:-110:4*\blockh) %
      -- ([shift=(-70:4*\blockh)]rotationpoint) arc (-70:-60:4*\blockh)%
      |- ++(-0.15*\blockw, 0.6*\blockh) coordinate (spindlene)%
      |- ($(beginarc) + (0.15*\blockw, 0.2*\blockh)$) coordinate (spindlesw) -- ++(0, 0.4*\blockh) coordinate(tiltte) -| cycle;

      % Spindle
      \coordinate[] (spindlese) at (spindlesw-|spindlene);
      \draw[fill=black!30] ($(spindlese)+(-0.1,0.1)+(-0.1*\blockw, 0)$) -| ($(spindlene)+(-0.1, 0)$) -| coordinate[pos=0.25](spindletop) ($(spindlesw)+(0.1,0.1)$) -| ++(0.1*\blockw, -\blockh) -| coordinate[pos=0.25](spindlebot) cycle;

      % \draw[dashed, color=black!60] ($(spindletop)+(0, 0.2)$) -- ($(spindlebot)+(0,-0.2)$);

      % Tilt
      \draw[fill=black!60] ([shift=(-120:4*\blockh)]rotationpoint) coordinate(beginarc) arc (-120:-110:4*\blockh) %
      -- ([shift=(-70:4*\blockh)]rotationpoint) arc (-70:-60:4*\blockh)%
      |- coordinate (tiltne) ++(-0.15*\blockw, 0.6*\blockh) coordinate (spindlene)%
      |- ($(beginarc) + (0.15*\blockw, 0.2*\blockh)$) coordinate (spindlesw) -- ++(0, 0.4*\blockh) -| cycle;

      % Micro-Hexapod
      \begin{scope}[shift={(spindletop)}]
        % Parameters definitions
        \def\baseh{0.22*\blockh} % Height of the base
        \def\naceh{0.18*\blockh} % Height of the nacelle
        \def\baser{0.22*\blockw} % Radius of the base
        \def\nacer{0.18*\blockw} % Radius of the nacelle

        \def\armr{0.2*\blockh} % Radius of the arms
        \def\basearmborder{0.2}
        \def\nacearmborder{0.2}

        \def\xnace{0} \def\ynace{\blockh-\naceh} \def\anace{0}
        \def\xbase{0} \def\ybase{0} \def\abase{0}

        % Hexapod1
        \begin{scope}[shift={(\xbase, \ybase)}, rotate=\abase]
          % Base
          \draw[fill=white] (-\baser, 0) coordinate[](uhexabot) rectangle (\baser, \baseh);

          \coordinate[] (armbasel) at (-\baser+\basearmborder+\armr, \baseh);
          \coordinate[] (armbasec) at (0, \baseh);
          \coordinate[] (armbaser) at (\baser-\basearmborder-\armr, \baseh);

          \begin{scope}[shift={(\xnace, \ynace)}, rotate=\anace]
            \draw[fill=white] (-\nacer, 0) rectangle (\nacer, \naceh);
            \coordinate[] (uhexatop) at (0, \naceh);
            \coordinate[] (armnacel) at (-\nacer+\nacearmborder+\armr, 0);
            \coordinate[] (armnacec) at (0, 0);
            \coordinate[] (armnacer) at (\nacer-\nacearmborder-\armr, 0);
          \end{scope}

          \draw[] (armbasec) -- (armnacer);
          \draw[] (armbasec) -- (armnacel);
          \draw[] (armbasel) -- coordinate(mhexaw) (armnacel);
          \draw[] (armbasel) -- (armnacec);
          \draw[] (armbaser) -- (armnacec);
          \draw[] (armbaser) -- coordinate(mhexae) (armnacer);
        \end{scope}
      \end{scope}

      % Sample
      \begin{scope}[shift={(uhexatop)}]
        \draw[fill=white] (-0.1*\blockw, 0) coordinate[](samplebot) rectangle coordinate[pos=0.5](samplecenter) node[pos=0.5, above]{Sample} (0.1*\blockw, \blockh) coordinate[](samplene);
        \coordinate[](samplenw) at (-0.1*\blockw, \blockh);
      \end{scope}
    \end{scope}

    \begin{scope}[shift={(0, -0.3*\blockh)}]
      % Translation Stage - fixed part
      \draw[fill=black!40] (-0.5*\blockw, 0) coordinate[](tyb) rectangle (0.5*\blockw, 0.15*\blockh);
      \coordinate[] (measposbot) at (0.5*\blockw, 0);

      % Translation Stage - mobile part
      \draw[fill=black!10, fill opacity=0.5] (-0.5*\blockw, 0.2*\blockh) -- (-0.5*\blockw, 1.5*\blockh) coordinate[](tyt) -- (0.5*\blockw, 1.5*\blockh) -- (0.5*\blockw, 0.2*\blockh) -- (0.35*\blockw, 0.2*\blockh) -- (0.35*\blockw, 0.8*\blockh) -- (-0.35*\blockw, 0.8*\blockh) -- (-0.35*\blockw, 0.2*\blockh) -- cycle;

      % Translation Guidance
      \draw[dashed, color=black!60] ($(-0.5*\blockw, 0)+( 0.075*\blockw,0.5*\blockh)$) circle (0.2*\blockh);
      \draw[dashed, color=black!60] ($( 0.5*\blockw, 0)+(-0.075*\blockw,0.5*\blockh)$) circle (0.2*\blockh);

      % Tilt Guidance
      \draw[dashed, color=black!60] ([shift=(-107:4.1*\blockh)]rotationpoint) arc (-107:-120:4.1*\blockh);
      \draw[dashed, color=black!60] ([shift=( -73:4.1*\blockh)]rotationpoint) arc (-73:-60:4.1*\blockh);
    \end{scope}

    % % Vertical line
    % \draw[dashed, color=black] (samplecenter) -- ++(0, -4*\blockh);
    % \begin{scope}[rotate around={\tiltdeg:(samplecenter)}]
    %   \draw[dashed, color=black] (samplecenter) -- ++(0, -4*\blockh);
    %   \node[] at ($(samplecenter)+(0, -2.3*\blockh)$) {\AxisRotator[rotate=-90]};
    %   \node[right, shift={(0.3,0)}] at ($(samplecenter)+(0, -2.3*\blockh)$) {$\theta_z$};
    % \end{scope}
    % \draw[->] ([shift=(-90:3.6*\blockh)]samplecenter) arc (-90:-87:3.6*\blockh) node[right]{$\theta_y$};

    % Laser
    \begin{scope}[shift={(samplecenter)}]
      \draw[color=red, -<-=0.3] (samplecenter) node[circle, fill=red, inner sep=0pt, minimum size=3pt]{} -- node[pos=0.3, above, color=black]{X-ray} ($(samplecenter)+(1.2*\blockw,0)$);
    \end{scope}

    % Axis
    \begin{scope}[shift={(-0.35*\blockw, 3*\blockh)}]
      \def\axissize{0.8cm}
      \draw[->] (0, 0) -- ++(0, \axissize) node[right]{$z$};
      \draw[->] (0, 0) -- ++(-\axissize, 0) node[above]{$x$};
      \draw[fill, color=black] (0, 0) circle (0.05*\axissize);
      \node[draw, circle, inner sep=0pt, minimum size=0.4*\axissize, label=right:$y$] (yaxis) at (0, 0){};
      % \node[draw, circle, inner sep=0pt, cross, minimum size=0.4*\axissize, label=left:$y$] (yaxis) at (0, 0){};
    \end{scope}

    \node[fit={($(-0.6*\blockw, -0.5*\blockh)$) ($(0.6*\blockw, 4*\blockh)$)}, inner sep=0pt, draw, dashed, color=gray, label={Positioning Station}] (possystem) {};

    \draw[fill=black!30] ($(tyb)+(-5, -1)$) coordinate[](granitesw) rectangle node[pos=0.5]{Granite Frame} ($(measposbot)+(5, 0)$) coordinate[](granitene);

    % Focusing Optics
    \draw[fill=black!20] ($(granitene)+(-1.5, 3)$) rectangle ++(-1, 2);
    \draw[spring] ($(granitene)+(-2, 0)$) -- ++(0, 3);

    \node[fit={($(granitene)+(-2.8, -0.2)$) ($(granitene)+(-1.2, 5.2)$)}, inner sep=0pt, draw, dashed, color=gray, label={Focusing Optics}] () {};

    % Measurement Optics
    \draw[fill=black!20] ($(granitesw)+(1.5, 4)$) rectangle ++(1, 2);
    \draw[spring] ($(granitesw)+(2, 1)$) -- ++(0, 3);

    \node[fit={($(granitesw)+(2.8, 0.8)$) ($(granitesw)+(1.2, 6.2)$)}, inner sep=0pt, draw, dashed, color=gray, label={Imagery System}] () {};
  \end{tikzpicture}

/tdehaeze/phd-nass-introduction/media/commit/8a9c47e80b0e162154e715c8509f00fa12adce9d/figs/introduction_id31_beamline_schematic.png

  • Few words about science made on ID31 and why nano-meter accuracy is required
  • Typical experiments (tomography, …), various samples (up to 50kg)
  • Where to explain the goal of each stage? (e.g. micro-hexapod: static positioning, Ty and Rz: scans, …)
  • Example of picture obtained (Figure fig:id31_tomography_result)

/tdehaeze/phd-nass-introduction/media/commit/8a9c47e80b0e162154e715c8509f00fa12adce9d/example-image-c.png

  • Explain wanted positioning accuracy and why micro-station cannot have this accuracy (backlash, play, thermal expansion, …)
  • Speak about the metrology concept, and why it is not included in this thesis

Challenge definition

/tdehaeze/phd-nass-introduction/media/commit/8a9c47e80b0e162154e715c8509f00fa12adce9d/figs/introduction_nass_concept_schematic.png
Nass Concept. 1: micro-station, 2: nano-hexapod, 3: sample, 4: 5DoF metrology
  • 6DoF vibration control platform on top of a complex positioning platform
  • Goal: Improve accuracy of 6DoF long stroke position platform
  • Approach: Mechatronic approach / model based / predictive
  • Control: Robust control approach / various payloads. First hexapod with control bandwidth higher than the suspension modes that accepts various payloads?
  • Rotation aspect
  • Compactness? (more related to mechanical design)

Literature Review

/tdehaeze/phd-nass-introduction/media/commit/8a9c47e80b0e162154e715c8509f00fa12adce9d/example-image-a.png

/tdehaeze/phd-nass-introduction/media/commit/8a9c47e80b0e162154e715c8509f00fa12adce9d/example-image-b.png

Examples of Stewart Platforms
  • Hexapods cite:li01_simul_fault_vibrat_isolat_point cite:bishop02_devel_precis_point_contr_vibrat cite:hanieh03_activ_stewar cite:afzali-far16_vibrat_dynam_isotr_hexap_analy_studies cite:naves20_desig

  • Positioning stations
  • Mechatronic approach? cite:rankers98_machin cite:monkhorst04_dynam_error_budget cite:jabben07_mechat

Outline of thesis / Thesis Summary / Thesis Contributions

Mechatronic Design Approach / Model Based Design:

  • cite:&monkhorst04_dynam_error_budget high costs of the design process: the designed system must be first time right. When the system is finally build, its performance level should satisfy the specifications. No significant changes are allowed in the post design phase. Because of this, the designer wants to be able to predict the performance of the system a-priori and gain insight in the performance limiting factors of the system.
% \graphicspath{ {/home/thomas/Cloud/thesis/papers/dehaeze21_mechatronics_approach_nass/tikz/figs-tikz} }

\begin{tikzpicture}
  % Styles
  \tikzset{myblock/.style= {draw, thin, color=white!70!black, fill=white, text width=3cm, align=center, minimum height=1.4cm}};
  \tikzset{mylabel/.style= {anchor=north, below, font=\bfseries\small, color=black, text width=3cm, align=center}};
  \tikzset{mymodel/.style= {anchor=south, above, font=\small, color=black, text width=3cm, align=center}};
  \tikzset{mystep/.style=  {->, ultra thick}};

  % Blocks
  \node[draw, fill=lightblue, align=center, label={[mylabel, text width=8.0cm] Dynamical Models}, minimum height = 4.5cm, text width = 8.0cm] (model) at (0, 0) {};

  \node[myblock, fill=lightgreen, label={[mylabel] Disturbances},  left = 3 of model.west]                          (dist) {};
  \node[myblock, fill=lightgreen, label={[mylabel] $\mu$ Station}, below = 2pt of dist] (mustation) {};
  \node[myblock, fill=lightgreen, label={[mylabel] $\nu$ Hexapod}, above = 2pt of dist] (nanohexapod) {};

  \node[myblock, fill=lightyellow, label={[mylabel] Mech. Design},    above = 1 of model.north] (mechanical) {};
  \node[myblock, fill=lightyellow, label={[mylabel] Instrumentation}, left  = 2pt of mechanical]  (instrumentation) {};
  \node[myblock, fill=lightyellow, label={[mylabel] FEM},             right = 2pt of mechanical]  (fem) {};

  \node[myblock, fill=lightred, label={[mylabel] Test Benches},   right = 3 of model.east]                          (testbenches) {};
  \node[myblock, fill=lightred, label={[mylabel] Assembly},       above = 2pt of testbenches] (mounting) {};
  \node[myblock, fill=lightred, label={[mylabel] Implementation}, below = 2pt of testbenches] (implementation) {};

  % Text
  \node[anchor=south, above, text width=8cm, align=left] at (model.south) {Extensive use of models for:\begin{itemize}[noitemsep,topsep=5pt]\item Extraction of transfer functions \\ \item Choice of appropriate control architecture \\ \item Tuning of control laws \\ \item Closed loop simulations \\ \item Noise budgets / Evaluation of performances \\ \item Sensibility to parameters / disturbances\end{itemize}\centerline{Models are at the core the mecatronic approach!}};

  \node[mymodel] at (mustation.south)       {Multiple stages     \\ Complex dynamics};
  \node[mymodel] at (dist.south)            {Ground motion       \\ Position errors};
  \node[mymodel] at (nanohexapod.south)     {Different concepts  \\ Sensors, Actuators};

  \node[mymodel] at (instrumentation.south) {Sensors, Actuators  \\ Electronics};
  \node[mymodel] at (mechanical.south)      {Proper integration  \\ Ease of assembly};
  \node[mymodel] at (fem.south)             {Optimize key parts: \\ Joints, Plates, APA};

  \node[mymodel] at (mounting.south)        {Struts              \\ Nano-Hexapod};
  \node[mymodel] at (testbenches.south)     {Instrumentation     \\ APA, Struts};
  \node[mymodel] at (implementation.south)  {Control tests       \\ $\mu$ Station};

  % Links
  \draw[->] (dist.east)      -- node[above, midway]{{\small Measurements}} node[below,midway]{{\small Spectral Analysis}} (dist.east-|model.west);
  \draw[->] (mustation.east) -- node[above, midway]{{\small Measurements}} node[below, midway]{{\small CAD Model}} (mustation.east-|model.west);

  \draw[->] ($(nanohexapod.east-|model.west)-(0, 0.15)$) -- node[below, midway]{{\small Optimization}} ($(nanohexapod.east)-(0, 0.15)$);
  \draw[<-] ($(nanohexapod.east-|model.west)+(0, 0.15)$) -- node[above, midway]{{\small Model}} ($(nanohexapod.east)+(0, 0.15)$);

  \draw[->] ($(fem.south|-model.north)+(0.15, 0)$) -- node[right, midway]{{\small Specif.}} ($(fem.south)+(0.15,0)$);
  \draw[<-] ($(fem.south|-model.north)-(0.15, 0)$) -- node[left, midway,align=right]{{\small Super}\\{\small Element}}  ($(fem.south)-(0.15,0)$);

  \draw[->] ($(mechanical.south|-model.north)+(0.15, 0)$) -- node[right, midway]{{\small Specif.}} ($(mechanical.south)+(0.15,0)$);
  \draw[<-] ($(mechanical.south|-model.north)-(0.15, 0)$) -- node[left, midway,align=right]{{\small CAD}\\{\small model}}        ($(mechanical.south)-(0.15,0)$);

  \draw[->] ($(instrumentation.south|-model.north)+(0.15, 0)$) -- node[right, midway]{{\small Specif.}} ($(instrumentation.south)+(0.15,0)$);
  \draw[<-] ($(instrumentation.south|-model.north)-(0.15, 0)$) -- node[left, midway]{{\small Model}}         ($(instrumentation.south)-(0.15,0)$);

  \draw[->] ($(mounting.west-|model.east)+(0, 0.15)$) -- node[above, midway]{{\small Requirements}} ($(mounting.west)+(0, 0.15)$);
  \draw[<-] ($(mounting.west-|model.east)-(0, 0.15)$) -- node[below, midway]{{\small Model refinement}}   ($(mounting.west)-(0, 0.15)$);

  \draw[->] ($(testbenches.west-|model.east)+(0, 0.15)$) -- node[above, midway]{{\small Control Laws}} ($(testbenches.west)+(0, 0.15)$);
  \draw[<-] ($(testbenches.west-|model.east)-(0, 0.15)$) -- node[below, midway]{{\small Model refinement}}   ($(testbenches.west)-(0, 0.15)$);

  \draw[->] ($(implementation.west-|model.east)+(0, 0.15)$) -- node[above, midway]{{\small Control Laws}} ($(implementation.west)+(0, 0.15)$);
  \draw[<-] ($(implementation.west-|model.east)-(0, 0.15)$) -- node[below, midway]{{\small Model refinement}}   ($(implementation.west)-(0, 0.15)$);

  % Main steps
  \node[font=\bfseries, rotate=90, anchor=south, above] (conceptual_phase_node) at (dist.west) {1 - Conceptual Phase};
  \node[font=\bfseries, above] (detailed_phase_node) at (mechanical.north) {2 - Detail Design Phase};
  \node[font=\bfseries, rotate=-90, anchor=south, above] (implementation_phase_node) at (testbenches.east) {3 - Experimental Phase};
    \begin{scope}[on background layer]
      \node[fit={(conceptual_phase_node.north|-nanohexapod.north) (mustation.south east)}, fill=lightgreen!50!white, draw, inner sep=2pt] (conceptual_phase) {};
      \node[fit={(detailed_phase_node.north-|instrumentation.west) (fem.south east)}, fill=lightyellow!50!white, draw, inner sep=2pt] (detailed_phase) {};
      \node[fit={(implementation_phase_node.north|-mounting.north) (implementation.south west)}, fill=lightred!50!white, draw, inner sep=2pt] (implementation_phase) {};
      % \node[above left] at (dob.south east) {DOB};
    \end{scope}

  % Between main steps
  \draw[mystep, postaction={decorate,decoration={raise=1ex,text along path,text align=center,text={Concept Validation}}}] (conceptual_phase.north) to[out=90, in=180] (detailed_phase.west);
  \draw[mystep, postaction={decorate,decoration={raise=1ex,text along path,text align=center,text={Procurement}}}] (detailed_phase.east) to[out=0, in=90] (implementation_phase.north);

  % % Inside Model
  % \node[inner sep=1pt, outer sep=6pt, anchor=north west, draw, fill=white, thin] (multibodymodel) at ($(model.north west) - (0, 0.5)$)
  %   {\includegraphics[width=5.6cm]{simscape_nano_hexapod.png}};

  % \node[inner sep=1pt, outer sep=6pt, anchor=south west, draw, fill=white, thin] (simscape) at (model.south west)
  %   {\includegraphics[width=5.6cm]{simscape_picture.jpg}};

  % % Feedback Model
  % \node[inner sep=3pt, outer sep=6pt, anchor=north east, draw, fill=white, thin] (simscape_sim) at ($(model.north east) - (0, 0.5)$)
  %   {\includegraphics[width=3.6cm]{simscape_simulations.pdf}};

  % % FeedBack
  % \node[inner sep=3pt, outer sep=6pt, anchor=south east, draw, fill=white, thin] (feedback) at (model.south east)
  %   {\includegraphics[width=3.6cm]{classical_feedback_small.pdf}};
\end{tikzpicture}

/tdehaeze/phd-nass-introduction/media/commit/8a9c47e80b0e162154e715c8509f00fa12adce9d/figs/introduction_nass_mechatronics_approach.png

Goals:

  • Design \gls{nass} such that it is easy to control (and maintain). Have good performances by design and not by complex control strategies.

Models:

  • Uniaxial Model:

    • Effect of limited support compliance
    • Effect of change of payload
  • Rotating Model

    • Gyroscopic effects
  • Multi Body Model
  • Finite Element Models

Bibliography   ignore