#+TITLE: Simscape Model - Nano Active Stabilization System :DRAWER: #+LANGUAGE: en #+EMAIL: dehaeze.thomas@gmail.com #+AUTHOR: Dehaeze Thomas #+HTML_LINK_HOME: ../index.html #+HTML_LINK_UP: ../index.html #+HTML_HEAD: #+HTML_HEAD: #+BIND: org-latex-image-default-option "scale=1" #+BIND: org-latex-image-default-width "" #+LaTeX_CLASS: scrreprt #+LaTeX_CLASS_OPTIONS: [a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc] #+LATEX_HEADER: \input{preamble.tex} #+LATEX_HEADER_EXTRA: \input{preamble_extra.tex} #+LATEX_HEADER_EXTRA: \bibliography{simscape-nass.bib} #+BIND: org-latex-bib-compiler "biber" #+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :exports none #+PROPERTY: header-args:matlab+ :results none #+PROPERTY: header-args:matlab+ :eval no-export #+PROPERTY: header-args:matlab+ :noweb yes #+PROPERTY: header-args:matlab+ :mkdirp yes #+PROPERTY: header-args:matlab+ :output-dir figs #+PROPERTY: header-args:matlab+ :tangle no #+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+ :tangle 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: #+latex: \clearpage * Build :noexport: #+NAME: startblock #+BEGIN_SRC emacs-lisp :results none :tangle no (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 * Notes :noexport: ** Notes Prefix is =nass= The goals of this report are: - [X] ([[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) - [X] ([[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/uncertainty_experiment.org][uncertainty_experiment]]): Effect of experimental conditions on the plant (payload mass, Ry position, Rz position, Rz velocity, etc...) - [ ] Determination of the *optimal stiffness* for the hexapod actuators: - [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/uncertainty_optimal_stiffness.org][uncertainty_optimal_stiffness]] - [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/optimal_stiffness_disturbances.org][optimal_stiffness_disturbances]] - [ ] [[file:~/Cloud/work-projects/ID31-NASS/documents/state-of-thesis-2020/index.org][state-of-thesis-2020]] - [ ] [[file:/home/thomas/Cloud/meetings/group-meetings-me/2020-04-06-NASS-Design/2020-04-06-NASS-Design.org][group-meeting-optimal-stiffness]] Should this be in this report? *This should be in chapter 2* - [X] Explain why HAC-LAC strategy is nice (*It was already explained in uniaxial model*) - [X] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/control.org][different control architectures]] - [X] [[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/control-vibration-isolation.org][hexapod - vibration isolation]] - [X] How to apply/optimize IFF on an hexapod? ([[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]]) - [X] ([[file:~/Cloud/research/matlab/decoupling-strategies/svd-control.org][decoupling-strategies]]): Decoupling strategies for HAC? (maybe also in previous report) *Will be in chapter 2* - [X] Validation of the concept using simulations: - [X] Find where this simulation in OL/CL is made (maybe for the conference?) It was re-made for micro-station validation. Will just have to do the same simulation but with nano-hexapod in closed-loop - Tomography experiment (maybe also Ty scans) - Open VS Closed loop results - *Conclusion*: concept validation nano hexapod architecture with APA decentralized IFF + centralized HAC - In this section simple control (in the frame of the struts) - Justify future used control architecture (control in the frame of the struts? Need to check what was done in ID31 tests) - Table that compares different approaches (specify performances in different DoF, same plans on the diagonal, etc...) - Literature review about Stewart platform control? *In chapter 2: Special section about MIMO control, complementary filters, etc...* ** Outline *** Control Kinematics - 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 *** LAC - How to apply/optimize IFF on an hexapod? ([[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]]) - Robustness to payload mass - Root Locus - Damping optimization *** HAC - ([[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/uncertainty_experiment.org][uncertainty_experiment]]): Effect of experimental conditions on the plant (payload mass, Ry position, Rz position, Rz velocity, etc...) - Determination of the *optimal stiffness* for the hexapod actuators: - [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/uncertainty_optimal_stiffness.org][uncertainty_optimal_stiffness]] - [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/optimal_stiffness_disturbances.org][optimal_stiffness_disturbances]] - [ ] [[file:~/Cloud/work-projects/ID31-NASS/documents/state-of-thesis-2020/index.org][state-of-thesis-2020]] - [ ] [[file:/home/thomas/Cloud/meetings/group-meetings-me/2020-04-06-NASS-Design/2020-04-06-NASS-Design.org][group-meeting-optimal-stiffness]] - Effect of micro-station compliance - Effect of IFF - Effect of payload mass - Decoupled plant - Controller design *** Simulations - Take into account disturbances, metrology sensor noise. Maybe say here that we don't take in account other noise sources as they will be optimized latter (detail design phase) - Tomography + lateral scans (same as what was done in open loop [[file:~/Cloud/work-projects/ID31-NASS/phd-thesis-chapters/A4-simscape-micro-station/simscape-micro-station.org::*Simulation of Scientific Experiments][here]]) - Validation of concept ** DONE Old Outline CLOSED: [2024-11-07 Thu 16:19] *** Introduction :ignore: Discussion of: - Transformation matrices / control architecture (computation of the position error in the frame of the nano-hexapod) - Control of parallel architectures - Control in the frame of struts or cartesian? - Effect of rotation on IFF? => APA - HAC-LAC - New noise budgeting? *** Control Kinematics - Explain how the position error can be expressed in the frame of the nano-hexapod - block diagram - Explain how to go from external metrology to the frame of the nano-hexapod *** High Authority Control - Low Authority Control (HAC-LAC) - general idea - case for parallel manipulator: decentralized LAC + centralized HAC *** Decoupling Strategies for parallel manipulators [[file:~/Cloud/research/matlab/decoupling-strategies/svd-control.org::+TITLE: Diagonal control using the SVD and the Jacobian Matrix][study]] - Jacobian matrices, CoK, CoM, ... - Discussion of cubic architecture - SVD, Modal, ... *** Decentralized Integral Force Feedback (LAC) - Root Locus - Damping optimization *** Decoupled Dynamics - Centralized HAC - Control in the frame of the struts - Effect of IFF *** Centralized Position Controller (HAC) - Decoupled plant - Controller design *** Time domain simulations Goal: validation of the concept - Take into account disturbances, sensor noise, etc... - Tomography + lateral scans (same as what was done in open loop [[file:~/Cloud/work-projects/ID31-NASS/phd-thesis-chapters/A4-simscape-micro-station/simscape-micro-station.org::*Simulation of Scientific Experiments][here]]) ** TODO [#A] Merge the micro-station model with the nano-hexapod model ** TODO [#B] Rework the Simulink file - [ ] Change the variable names to make things consistent - [ ] Rework the org files to match the new variable names ** DONE [#A] Where to discuss the necessity of estimated Rz? CLOSED: [2025-02-06 Thu 16:35] One big advantage of doing the control in the cartesian plane, is that we don't need the estimation of nano-hexapod Rz, therefore we don't need the encoders anymore! Maybe this should be done *here*. Here it can be reminded when doing the control in the cartesian frame. ** 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] This can be nice to have a (scalar) performance metric that can be used for optimization. In cite:hauge04_sensor_contr_space_based_six, a (scalar) performance metric representing the 6dof transmissibility is used. ** DONE [#C] Identify the sensibility to disturbances without the nano-hexapod and save the results CLOSED: [2024-11-07 Thu 09:20] This can then be used to compare with obtained performance with the nano-hexapod. This should be done in the ustation report (A4). * Introduction :ignore: From last sections: - Uniaxial: No stiff nano-hexapod (should also demonstrate that here) - Rotating: No soft nano-hexapod, Decentralized IFF can be used robustly by adding parallel stiffness In this section: - Take the model of the nano-hexapod with stiffness 1um/N - Apply decentralized IFF - Apply HAC-LAC - Check robustness to payload change - Simulation of experiments #+name: tab:nass_section_matlab_code #+caption: Report sections and corresponding Matlab files #+attr_latex: :environment tabularx :width 0.6\linewidth :align lX #+attr_latex: :center t :booktabs t | *Sections* | *Matlab File* | |--------------------------+---------------| | Section ref:sec:nass_1_a | =nass_1_.m= | * Control Kinematics :PROPERTIES: :HEADER-ARGS:matlab+: :tangle matlab/nass_1_kinematics.m :END: <> ** 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 - 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 ** Matlab Init :noexport:ignore: #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) <> #+end_src #+begin_src matlab :exports none :results silent :noweb yes <> #+end_src #+begin_src matlab :tangle no :noweb yes <> #+end_src #+begin_src matlab :eval no :noweb yes <> #+end_src #+begin_src matlab :noweb yes <> #+end_src #+begin_src matlab %% Uniaxial Simscape model name mdl = 'nass_uniaxial_model'; #+end_src #+begin_src matlab %% Frequency Vector [Hz] freqs = logspace(0, 3, 1000); #+end_src #+begin_src matlab %% Load the micro-station parameters load('uniaxial_micro_station_parameters.mat') #+end_src ** Micro Station Kinematics - from ref:ssec:ustation_kinematics, computation of the wanted sample pose from the setpoint of each stage. ** 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 Explain how to compute the errors in the frame of the struts (rotating) * Decentralized Active Damping :PROPERTIES: :HEADER-ARGS:matlab+: :tangle matlab/nass_2_active_damping.m :END: <> ** Introduction :ignore: - 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]] ** IFF Plant - Show how it changes with the payload mass (1, 25, 50) - Effect of rotation (1rpm, 60rpm) ** Controller Design - Apply IFF - Show Root Locus - 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?) - 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... * Centralized Active Vibration Control :PROPERTIES: :HEADER-ARGS:matlab+: :tangle matlab/nass_3_hac.m :END: <> ** Introduction :ignore: - [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/uncertainty_experiment.org][uncertainty_experiment]]: Effect of experimental conditions on the plant (payload mass, Ry position, Rz position, Rz velocity, etc...) - Effect of micro-station compliance - Effect of IFF - Effect of payload mass - Decoupled plant - Controller design From control kinematics: - Talk about issue of not estimating Rz from external metrology? (maybe could be nice to discuss that during the experiments!) - Show what happens is Rz is not estimated (for instance supposed equaled to zero => increased coupling) ** HAC Plant - Compute transfer function from u to dL (with IFF applied) ** Effect of Payload mass - Show effect of payload mass + rotation ** Controller design - Show robustness with Loci ** 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 - With HAC-IFF, perform tomography experiment, and compare with open-loop - Take into account disturbances, metrology sensor noise. Maybe say here that we don't take in account other noise sources as they will be optimized latter (detail design phase) - Tomography + lateral scans (same as what was done in open loop [[file:~/Cloud/work-projects/ID31-NASS/phd-thesis-chapters/A4-simscape-micro-station/simscape-micro-station.org::*Simulation of Scientific Experiments][here]]) - Validation of concept * Conclusion <> * Bibliography :ignore: #+latex: \printbibliography[heading=bibintoc,title={Bibliography}] * Helping Functions :noexport: ** Initialize Path #+NAME: m-init-path #+BEGIN_SRC matlab %% Path for functions, data and scripts addpath('./matlab/mat/'); % Path for data addpath('./matlab/'); % Path for scripts #+END_SRC #+NAME: m-init-path-tangle #+BEGIN_SRC matlab %% Path for functions, data and scripts addpath('./mat/'); % Path for data #+END_SRC ** Initialize other elements #+NAME: m-init-other #+BEGIN_SRC matlab %% Colors for the figures colors = colororder; #+END_SRC