From cd5f1e5922d92625ea80eec74b633251ae7e338d Mon Sep 17 00:00:00 2001 From: Thomas Dehaeze Date: Tue, 19 Mar 2024 15:16:03 +0100 Subject: [PATCH] Initial commit --- .gitignore | 260 +++++++ .latexmkrc | 111 +++ nass-flexible-joints.bib | 0 nass-flexible-joints.org | 1439 ++++++++++++++++++++++++++++++++++++++ nass-flexible-joints.pdf | Bin 0 -> 168778 bytes nass-flexible-joints.tex | 245 +++++++ preamble.tex | 137 ++++ 7 files changed, 2192 insertions(+) create mode 100644 .gitignore create mode 100644 .latexmkrc create mode 100644 nass-flexible-joints.bib create mode 100644 nass-flexible-joints.org create mode 100644 nass-flexible-joints.pdf create mode 100644 nass-flexible-joints.tex create mode 100644 preamble.tex diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6b7e1a4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,260 @@ +mat/ +figures/ +ltximg/ +slprj/ +matlab/slprj/ +*.slxc + + +# ============================================================ +# ============================================================ +# LATEX +# ============================================================ +# ============================================================ + +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb + +## Intermediate documents: +*.dvi +*.xdv +*-converted-to.* +# these rules might exclude image files for figures etc. +# *.ps +# *.eps +# *.pdf + +## Generated if empty string is given at "Please type another file name for output:" +.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync + +## Build tool directories for auxiliary files +# latexrun +latex.out/ + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# cprotect +*.cpt + +# elsarticle (documentclass of Elsevier journals) +*.spl + +# endnotes +*.ent + +# fixme +*.lox + +# feynmf/feynmp +*.mf +*.mp +*.t[1-9] +*.t[1-9][0-9] +*.tfm + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9] +*.[1-9][0-9] +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glo +*.gls +*.glsdefs + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.gtex + +# htlatex +*.4ct +*.4tc +*.idv +*.lg +*.trc +*.xref + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Comment the next line if you want to keep your tikz graphics files +*.tikz +*-tikzDictionary + +# listings +*.lol + +# makeidx +*.idx +*.ilg +*.ind +*.ist + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# nomencl +*.nlg +*.nlo +*.nls + +# pax +*.pax + +# pdfpcnotes +*.pdfpc + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# todonotes +*.tdo + +# easy-todo +*.lod + +# xmpincl +*.xmpi + +# xindy +*.xdy + +# xypic precompiled matrices +*.xyc + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# LyX +*.lyx~ + +# Kile +*.backup + +# KBibTeX +*~[0-9]* + +# auto folder when using emacs and auctex +./auto/* +*.el + +# expex forward references with \gathertags +*-tags.tex + +# standalone packages +*.sta diff --git a/.latexmkrc b/.latexmkrc new file mode 100644 index 0000000..ff511e9 --- /dev/null +++ b/.latexmkrc @@ -0,0 +1,111 @@ +#!/bin/env perl + +# Shebang is only to get syntax highlighting right across GitLab, GitHub and IDEs. +# This file is not meant to be run, but read by `latexmk`. + +# ====================================================================================== +# Perl `latexmk` configuration file +# ====================================================================================== + +# ====================================================================================== +# PDF Generation/Building/Compilation +# ====================================================================================== + +@default_files=('nass-flexible-joints.tex'); + +# PDF-generating modes are: +# 1: pdflatex, as specified by $pdflatex variable (still largely in use) +# 2: postscript conversion, as specified by the $ps2pdf variable (useless) +# 3: dvi conversion, as specified by the $dvipdf variable (useless) +# 4: lualatex, as specified by the $lualatex variable (best) +# 5: xelatex, as specified by the $xelatex variable (second best) +$pdf_mode = 1; + +# Treat undefined references and citations as well as multiply defined references as +# ERRORS instead of WARNINGS. +# This is only checked in the *last* run, since naturally, there are undefined references +# in initial runs. +# This setting is potentially annoying when debugging/editing, but highly desirable +# in the CI pipeline, where such a warning should result in a failed pipeline, since the +# final document is incomplete/corrupted. +# +# However, I could not eradicate all warnings, so that `latexmk` currently fails with +# this option enabled. +# Specifically, `microtype` fails together with `fontawesome`/`fontawesome5`, see: +# https://tex.stackexchange.com/a/547514/120853 +# The fix in that answer did not help. +# Setting `verbose=silent` to mute `microtype` warnings did not work. +# Switching between `fontawesome` and `fontawesome5` did not help. +$warnings_as_errors = 0; + +# Show used CPU time. Looks like: https://tex.stackexchange.com/a/312224/120853 +$show_time = 1; + +# Default is 5; we seem to need more owed to the complexity of the document. +# Actual documents probably don't need this many since they won't use all features, +# plus won't be compiling from cold each time. +$max_repeat=7; + +# --shell-escape option (execution of code outside of latex) is required for the +#'svg' package. +# It converts raw SVG files to the PDF+PDF_TEX combo using InkScape. +# +# SyncTeX allows to jump between source (code) and output (PDF) in IDEs with support +# (many have it). A value of `1` is enabled (gzipped), `-1` is enabled but uncompressed, +# `0` is off. +# Testing in VSCode w/ LaTeX Workshop only worked for the compressed version. +# Adjust this as needed. Of course, only relevant for local use, no effect on a remote +# CI pipeline (except for slower compilation, probably). +# +# %O and %S will forward Options and the Source file, respectively, given to latexmk. +# +# `set_tex_cmds` applies to all *latex commands (latex, xelatex, lualatex, ...), so +# no need to specify these each. This allows to simply change `$pdf_mode` to get a +# different engine. Check if this works with `latexmk --commands`. +set_tex_cmds("--shell-escape -interaction=nonstopmode --synctex=1 %O %S"); + +# Use default pdf viewer +$pdf_previewer = 'zathura'; + +# option 2 is same as 1 (run biber when necessary), but also deletes the +# regeneratable bbl-file in a clenaup (`latexmk -c`). Do not use if original +# bib file is not available! +$bibtex_use = 2; # default: 1 + +# Change default `biber` call, help catch errors faster/clearer. See +# https://web.archive.org/web/20200526101657/https://www.semipol.de/2018/06/12/latex-best-practices.html#database-entries +$biber = "biber --validate-datamodel %O %S"; + +# Glossaries +add_cus_dep('glo', 'gls', 0, 'run_makeglossaries'); +add_cus_dep('acn', 'acr', 0, 'run_makeglossaries'); + +sub run_makeglossaries { + if ( $silent ) { + system "makeglossaries -q -s '$_[0].ist' '$_[0]'"; + } + else { + system "makeglossaries -s '$_[0].ist' '$_[0]'"; + }; +} + +# ====================================================================================== +# Auxiliary Files +# ====================================================================================== + +# Let latexmk know about generated files, so they can be used to detect if a +# rerun is required, or be deleted in a cleanup. +# loe: List of Examples (KOMAScript) +# lol: List of Listings (`listings` and `minted` packages) +# run.xml: biber runs +# glg: glossaries log +# glstex: generated from glossaries-extra +push @generated_exts, 'loe', 'lol', 'run.xml', 'glstex', 'glo', 'gls', 'glg', 'acn', 'acr', 'alg'; + +# Also delete the *.glstex files from package glossaries-extra. Problem is, +# that that package generates files of the form "basename-digit.glstex" if +# multiple glossaries are present. Latexmk looks for "basename.glstex" and so +# does not find those. For that purpose, use wildcard. +# Also delete files generated by gnuplot/pgfplots contour plots +# (.dat, .script, .table). +$clean_ext = "%R-*.glstex %R_contourtmp*.*"; diff --git a/nass-flexible-joints.bib b/nass-flexible-joints.bib new file mode 100644 index 0000000..e69de29 diff --git a/nass-flexible-joints.org b/nass-flexible-joints.org new file mode 100644 index 0000000..97ad2f5 --- /dev/null +++ b/nass-flexible-joints.org @@ -0,0 +1,1439 @@ +#+TITLE: Nano-Hexapod - Flexible Joints Optimization +: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_EXTRA: \input{preamble.tex} +#+LATEX_HEADER_EXTRA: \bibliography{nass-flexible-joints.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: + +#+begin_export html +
+

This report is also available as a pdf.

+
+#+end_export + +#+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: + +- [ ] look at the conclusion of the 2020-report +- [ ] Convert this to a "standard report" in its own directory +- [ ] Add figs +- [ ] Add simscape files + + +Outline: +- Perfect flexible joint +- Imperfection of the flexible joint: Model +- Study of the effect of limited stiffness in constrain directions and non-null stiffness in other directions +- Obtained Specification +- Design optimisation (FEM) +- Implementation of flexible elements in the Simscape model: close to simplified model + +*** Effect of flexible joint characteristics on obtained dynamics + +- Based on Simscape model +- Effect of axial stiffness, bending stiffness, ... +- Obtained specifications (trade-off) + + +*** Flexible joint geometry optimization + +- Chosen geometry +- Show different existing geometry for flexible joints used on hexapods +- Optimisation with Ansys +- Validation with Simscape model + +*** Experimental identification + +- Experimental validation, characterisation ([[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-flexible-joints-adv/bending.org::+TITLE: Flexible Joint - Measurement of the Bending Stiffness][study]]) +- Visual inspection +- Test bench +- Obtained results + + +* Introduction :ignore: + +In this document is studied the effect of the mechanical behavior of the flexible joints that are located the extremities of each nano-hexapod's legs. + +Ideally, we want the x and y rotations to be free and all the translations to be blocked. +However, this is never the case and be have to consider: +- Finite bending stiffnesses (Section [[sec:rot_stiffness]]) +- Axial stiffness in the direction of the legs (Section [[sec:trans_stiffness]]) + +This may impose some limitations, also, the goal is to specify the required joints stiffnesses (summarized in Section [[sec:conclusion]]). + +#+name: tab:nass_flexible_joints_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_flexible_joints_1_a | =nass_flexible_joints_1_.m= | + + +* Bending and Torsional Stiffness +<> + +** Introduction :ignore: +In this section, we wish to study the effect of the rotation flexibility of the nano-hexapod joints. + +** 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 + simulinkproject('../'); +#+end_src + +#+begin_src matlab + load('mat/conf_simulink.mat'); + open('nass_model.slx') +#+end_src + +** Initialization +Let's initialize all the stages with default parameters. +#+begin_src matlab + initializeGround(); + initializeGranite(); + initializeTy(); + initializeRy(); + initializeRz(); + initializeMicroHexapod(); + initializeAxisc(); + initializeMirror(); +#+end_src + +#+begin_src matlab :exports none + initializeSimscapeConfiguration(); + initializeDisturbances('enable', false); + initializeLoggingConfiguration('log', 'none'); + + initializeController('type', 'hac-dvf'); +#+end_src + +Let's consider the heaviest mass which should we the most problematic with it comes to the flexible joints. +#+begin_src matlab + initializeSample('mass', 50, 'freq', 200*ones(6,1)); + initializeReferences('Rz_type', 'rotating-not-filtered', 'Rz_period', 60); +#+end_src + +#+begin_src matlab :exports none + K = tf(zeros(6)); + Kdvf = tf(zeros(6)); +#+end_src + +** Realistic Bending Stiffness Values +*** Introduction :ignore: +Let's compare the ideal case (zero stiffness in rotation and infinite stiffness in translation) with a more realistic case: +- $K_{\theta, \phi} = 15\,[Nm/rad]$ stiffness in flexion +- $K_{\psi} = 20\,[Nm/rad]$ stiffness in torsion + +#+begin_src matlab + Kf_M = 15*ones(6,1); + Kf_F = 15*ones(6,1); + Kt_M = 20*ones(6,1); + Kt_F = 20*ones(6,1); +#+end_src + +The stiffness and damping of the nano-hexapod's legs are: +#+begin_src matlab + k_opt = 1e5; % [N/m] + c_opt = 2e2; % [N/(m/s)] +#+end_src + +This corresponds to the optimal identified stiffness. + +*** Direct Velocity Feedback +We identify the dynamics from actuators force $\tau_i$ to relative motion sensors $d\mathcal{L}_i$ with and without considering the flexible joint stiffness. + +The obtained dynamics are shown in Figure [[fig:flex_joint_rot_dvf]]. +It is shown that the adding of stiffness for the flexible joints does increase a little bit the frequencies of the mass suspension modes. It stiffen the structure. + +#+begin_src matlab :exports none + %% Name of the Simulink File + mdl = 'nass_model'; + + %% Input/Output definition + clear io; io_i = 1; + io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs + io(io_i) = linio([mdl, '/Micro-Station'], 3, 'openoutput', [], 'Dnlm'); io_i = io_i + 1; % Force Sensors +#+end_src + +#+begin_src matlab :exports none + initializeNanoHexapod('k', k_opt, 'c', c_opt, ... + 'type_F', 'universal_p', ... + 'type_M', 'spherical_p'); + + G_dvf_p = linearize(mdl, io); + G_dvf_p.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}; + G_dvf_p.OutputName = {'Dnlm1', 'Dnlm2', 'Dnlm3', 'Dnlm4', 'Dnlm5', 'Dnlm6'}; +#+end_src + +#+begin_src matlab :exports none + initializeNanoHexapod('k', k_opt, 'c', c_opt, ... + 'type_F', 'universal', ... + 'type_M', 'spherical', ... + 'Kf_M', Kf_M, ... + 'Kt_M', Kt_M, ... + 'Kf_F', Kf_F, ... + 'Kt_F', Kt_F); + + G_dvf = linearize(mdl, io); + G_dvf.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}; + G_dvf.OutputName = {'Dnlm1', 'Dnlm2', 'Dnlm3', 'Dnlm4', 'Dnlm5', 'Dnlm6'}; +#+end_src + +#+begin_src matlab :exports none + freqs = logspace(-1, 3, 1000); + + figure; + + ax1 = subplot(2, 1, 1); + hold on; + plot(freqs, abs(squeeze(freqresp(G_dvf(1, 1), freqs, 'Hz')))); + plot(freqs, abs(squeeze(freqresp(G_dvf_p(1, 1), freqs, 'Hz')))); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]); + + ax2 = subplot(2, 1, 2); + hold on; + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G_dvf(1, 1), freqs, 'Hz')))), ... + 'DisplayName', 'Flexible Joints'); + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G_dvf_p(1, 1), freqs, 'Hz')))), ... + 'DisplayName', 'Perfect Joints'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); + ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); + ylim([-270, 90]); + yticks([-360:90:360]); + legend('location', 'northeast'); + + linkaxes([ax1,ax2],'x'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/flex_joint_rot_dvf.pdf', 'width', 'full', 'height', 'full'); +#+end_src + +#+name: fig:flex_joint_rot_dvf +#+caption: Dynamics from actuators force $\tau_i$ to relative motion sensors $d\mathcal{L}_i$ with (blue) and without (red) considering the flexible joint stiffness +#+RESULTS: +[[file:figs/flex_joint_rot_dvf.png]] + +*** Primary Plant +#+begin_src matlab :exports none + Kdvf = 5e3*s/(1+s/2/pi/1e3)*eye(6); +#+end_src + +Let's now identify the dynamics from $\bm{\tau}^\prime$ to $\bm{\epsilon}_{\mathcal{X}_n}$ (for the primary controller designed in the frame of the legs). + +The dynamics is compare with and without the joint flexibility in Figure [[fig:flex_joints_rot_primary_plant_L]]. +The plant dynamics is not found to be changing significantly. + +#+begin_src matlab :exports none + %% Name of the Simulink File + mdl = 'nass_model'; + + %% Input/Output definition + clear io; io_i = 1; + io(io_i) = linio([mdl, '/Controller'], 1, 'input'); io_i = io_i + 1; % Actuator Inputs + io(io_i) = linio([mdl, '/Tracking Error'], 1, 'output', [], 'En'); io_i = io_i + 1; % Position Errror + + load('mat/stages.mat', 'nano_hexapod'); +#+end_src + +#+begin_src matlab :exports none + initializeNanoHexapod('k', k_opt, 'c', c_opt, ... + 'type_F', 'universal_p', ... + 'type_M', 'spherical_p'); + + G = linearize(mdl, io); + G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}; + G.OutputName = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'}; + + Gl_p = -nano_hexapod.kinematics.J*G; + Gl_p.OutputName = {'E1', 'E2', 'E3', 'E4', 'E5', 'E6'}; +#+end_src + +#+begin_src matlab :exports none + initializeNanoHexapod('k', k_opt, 'c', c_opt, ... + 'type_F', 'universal', ... + 'type_M', 'spherical', ... + 'Kf_M', Kf_M, ... + 'Kt_M', Kt_M, ... + 'Kf_F', Kf_F, ... + 'Kt_F', Kt_F); + + G = linearize(mdl, io); + G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}; + G.OutputName = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'}; + + Gl = -nano_hexapod.kinematics.J*G; + Gl.OutputName = {'E1', 'E2', 'E3', 'E4', 'E5', 'E6'}; +#+end_src + +#+begin_src matlab :exports none + freqs = logspace(0, 3, 1000); + + figure; + + ax1 = subplot(2, 1, 1); + hold on; + for j = 1:6 + set(gca,'ColorOrderIndex',1); + plot(freqs, abs(squeeze(freqresp(Gl(j, j), freqs, 'Hz')))); + end + for j = 1:6 + set(gca,'ColorOrderIndex',2); + plot(freqs, abs(squeeze(freqresp(Gl_p(j, j), freqs, 'Hz')))); + end + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]); + + ax2 = subplot(2, 1, 2); + hold on; + for j = 1:6 + set(gca,'ColorOrderIndex',1); + if j == 1 + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gl(j, j), freqs, 'Hz')))), ... + 'DisplayName', 'Flexible Joints'); + else + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gl(j, j), freqs, 'Hz')))), ... + 'HandleVisibility', 'off'); + end + end + for j = 1:6 + set(gca,'ColorOrderIndex',2); + if j == 1 + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gl_p(j, j), freqs, 'Hz')))), ... + 'DisplayName', 'Perfect Joints'); + else + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gl_p(j, j), freqs, 'Hz')))), ... + 'HandleVisibility', 'off'); + end + end + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); + ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); + ylim([-270, 90]); + yticks([-360:90:360]); + legend('location', 'southwest'); + + linkaxes([ax1,ax2],'x'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/flex_joints_rot_primary_plant_L.pdf', 'width', 'full', 'height', 'full'); +#+end_src + +#+name: fig:flex_joints_rot_primary_plant_L +#+caption: Dynamics from $\bm{\tau}^\prime_i$ to $\bm{\epsilon}_{\mathcal{X}_n,i}$ with perfect joints and with flexible joints +#+RESULTS: +[[file:figs/flex_joints_rot_primary_plant_L.png]] + +*** Conclusion +#+begin_important +Considering realistic flexible joint bending stiffness for the nano-hexapod does not seems to impose any limitation on the DVF control nor on the primary control. + +It only increases a little bit the suspension modes of the sample on top of the nano-hexapod. +#+end_important + +** Parametric Study +*** Introduction :ignore: +We wish now to see what is the impact of the rotation stiffness of the flexible joints on the dynamics. +This will help to determine the requirements on the joint's stiffness. + +Let's consider the following bending stiffness of the flexible joints: +#+begin_src matlab + Ks = [1, 5, 10, 50, 100]; % [Nm/rad] +#+end_src + +We also consider here a nano-hexapod with the identified optimal actuator stiffness. + +#+begin_src matlab :exports none + K = tf(zeros(6)); + Kdvf = tf(zeros(6)); +#+end_src + +*** Direct Velocity Feedback +The dynamics from the actuators to the relative displacement sensor in each leg is identified and shown in Figure [[fig:flex_joints_rot_study_dvf]]. + +The corresponding Root Locus plot is shown in Figure [[fig:flex_joints_rot_study_dvf_root_locus]]. + +It is shown that the bending stiffness of the flexible joints does indeed change a little the dynamics, but critical damping is stiff achievable with Direct Velocity Feedback. + +#+begin_src matlab :exports none + %% Name of the Simulink File + mdl = 'nass_model'; + + %% Input/Output definition + clear io; io_i = 1; + io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs + io(io_i) = linio([mdl, '/Micro-Station'], 3, 'openoutput', [], 'Dnlm'); io_i = io_i + 1; % Relative Displacement Sensors + + G_dvf_s = {zeros(length(Ks), 1)}; + + for i = 1:length(Ks) + initializeNanoHexapod('k', k_opt, 'c', c_opt, ... + 'type_F', 'universal', ... + 'type_M', 'spherical', ... + 'Kf_M', Ks(i), ... + 'Kt_M', Ks(i), ... + 'Kf_F', Ks(i), ... + 'Kt_F', Ks(i)); + + G = linearize(mdl, io); + G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}; + G.OutputName = {'Dnlm1', 'Dnlm2', 'Dnlm3', 'Dnlm4', 'Dnlm5', 'Dnlm6'}; + + G_dvf_s(i) = {G}; + end +#+end_src + +#+begin_src matlab :exports none + freqs = logspace(-1, 3, 1000); + + figure; + + ax1 = subplot(2, 1, 1); + hold on; + for i = 1:length(Ks) + plot(freqs, abs(squeeze(freqresp(G_dvf_s{i}(1, 1), freqs, 'Hz')))); + end + plot(freqs, abs(squeeze(freqresp(G_dvf_p(1, 1), freqs, 'Hz'))), 'k--'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]); + + ax2 = subplot(2, 1, 2); + hold on; + for i = 1:length(Ks) + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G_dvf_s{i}(1, 1), freqs, 'Hz')))), ... + 'DisplayName', sprintf('$k = %.0f$ [Nm/rad]', Ks(i))); + end + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G_dvf_p(1, 1), freqs, 'Hz')))), 'k--', ... + 'DisplayName', 'Ideal Joint'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); + ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); + ylim([-270, 90]); + yticks([-360:90:360]); + legend('location', 'southwest'); + + linkaxes([ax1,ax2],'x'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/flex_joints_rot_study_dvf.pdf', 'width', 'full', 'height', 'full'); +#+end_src + +#+name: fig:flex_joints_rot_study_dvf +#+caption: Dynamics from $\tau_i$ to $d\mathcal{L}_i$ for all the considered Rotation Stiffnesses +#+RESULTS: +[[file:figs/flex_joints_rot_study_dvf.png]] + +#+begin_src matlab :exports none + figure; + + gains = logspace(2, 5, 300); + + hold on; + for i = 1:length(Ks) + set(gca,'ColorOrderIndex',i); + plot(real(pole(G_dvf_s{i})), imag(pole(G_dvf_s{i})), 'x', ... + 'DisplayName', sprintf('$k = %.0f$ [Nm/rad]', Ks(i))); + set(gca,'ColorOrderIndex',i); + plot(real(tzero(G_dvf_s{i})), imag(tzero(G_dvf_s{i})), 'o', ... + 'HandleVisibility', 'off'); + for k = 1:length(gains) + set(gca,'ColorOrderIndex',i); + cl_poles = pole(feedback(G_dvf_s{i}, (gains(k)*s)*eye(6))); + plot(real(cl_poles), imag(cl_poles), '.', ... + 'HandleVisibility', 'off'); + end + end + hold off; + axis square; + xlim([-140, 10]); ylim([0, 150]); + + xlabel('Real Part'); ylabel('Imaginary Part'); + legend('location', 'northwest'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/flex_joints_rot_study_dvf_root_locus.pdf', 'width', 'wide', 'height', 'tall'); +#+end_src + +#+name: fig:flex_joints_rot_study_dvf_root_locus +#+caption: Root Locus for all the considered Rotation Stiffnesses +#+RESULTS: +[[file:figs/flex_joints_rot_study_dvf_root_locus.png]] + +*** Primary Control +The dynamics from $\bm{\tau}^\prime$ to $\bm{\epsilon}_{\mathcal{X}_n}$ (for the primary controller designed in the frame of the legs) is shown in Figure [[fig:flex_joints_rot_study_primary_plant]]. + +It is shown that the bending stiffness of the flexible joints have very little impact on the dynamics. + +#+begin_src matlab :exports none + Kdvf = 5e3*s/(1+s/2/pi/1e3)*eye(6); +#+end_src + +#+begin_src matlab :exports none + %% Name of the Simulink File + mdl = 'nass_model'; + + %% Input/Output definition + clear io; io_i = 1; + io(io_i) = linio([mdl, '/Controller'], 1, 'input'); io_i = io_i + 1; % Actuator Inputs + io(io_i) = linio([mdl, '/Tracking Error'], 1, 'output', [], 'En'); io_i = io_i + 1; % Position Errror + + load('mat/stages.mat', 'nano_hexapod'); + + Gl_s = {zeros(length(Ks), 1)}; + + for i = 1:length(Ks) + initializeNanoHexapod('k', k_opt, 'c', c_opt, ... + 'type_F', 'universal', ... + 'type_M', 'spherical', ... + 'Kf_M', Ks(i), ... + 'Kt_M', Ks(i), ... + 'Kf_F', Ks(i), ... + 'Kt_F', Ks(i)); + + G = linearize(mdl, io); + G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}; + G.OutputName = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'}; + + Gl = -nano_hexapod.kinematics.J*G; + Gl.OutputName = {'E1', 'E2', 'E3', 'E4', 'E5', 'E6'}; + Gl_s(i) = {Gl}; + end +#+end_src + +#+begin_src matlab :exports none + freqs = logspace(-1, 3, 1000); + + figure; + + ax1 = subplot(2, 1, 1); + hold on; + for i = 1:length(Ks) + plot(freqs, abs(squeeze(freqresp(Gl_s{i}(1, 1), freqs, 'Hz')))); + end + plot(freqs, abs(squeeze(freqresp(Gl_p(1, 1), freqs, 'Hz'))), 'k--'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]); + + ax2 = subplot(2, 1, 2); + hold on; + for i = 1:length(Ks) + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gl_s{i}(1, 1), freqs, 'Hz')))), ... + 'DisplayName', sprintf('$k = %.0f$ [Nm/rad]', Ks(i))); + end + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gl_p(1, 1), freqs, 'Hz')))), 'k--', ... + 'DisplayName', 'Ideal Joint'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); + ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); + ylim([-270, 90]); + yticks([-360:90:360]); + legend('location', 'southwest'); + + linkaxes([ax1,ax2],'x'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/flex_joints_rot_study_primary_plant.pdf', 'width', 'full', 'height', 'full'); +#+end_src + +#+name: fig:flex_joints_rot_study_primary_plant +#+caption: Diagonal elements of the transfer function matrix from $\bm{\tau}^\prime$ to $\bm{\epsilon}_{\mathcal{X}_n}$ for the considered bending stiffnesses +#+RESULTS: +[[file:figs/flex_joints_rot_study_primary_plant.png]] + +*** Conclusion +#+begin_important + The bending stiffness of the flexible joint does not significantly change the dynamics. +#+end_important + +* Axial Stiffness +<> + +** Introduction :ignore: +Let's know consider a flexibility in translation of the flexible joint, in the axis of the legs. + +** 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 + simulinkproject('../'); +#+end_src + +#+begin_src matlab + load('mat/conf_simulink.mat'); + open('nass_model.slx') +#+end_src + +** Realistic Translation Stiffness Values +*** Introduction :ignore: +We choose realistic values of the axial stiffness of the joints: +\[ K_a = 60\,[N/\mu m] \] + +#+begin_src matlab + Ka_F = 60e6*ones(6,1); % [N/m] + Ka_M = 60e6*ones(6,1); % [N/m] + Ca_F = 1*ones(6,1); % [N/(m/s)] + Ca_M = 1*ones(6,1); % [N/(m/s)] +#+end_src + +*** Initialization +Let's initialize all the stages with default parameters. +#+begin_src matlab + initializeGround(); + initializeGranite(); + initializeTy(); + initializeRy(); + initializeRz(); + initializeMicroHexapod(); + initializeAxisc(); + initializeMirror(); +#+end_src + +#+begin_src matlab :exports none + initializeSimscapeConfiguration(); + initializeDisturbances('enable', false); + initializeLoggingConfiguration('log', 'none'); + + initializeController('type', 'hac-dvf'); +#+end_src + +Let's consider the heaviest mass which should we the most problematic with it comes to the flexible joints. +#+begin_src matlab + initializeSample('mass', 50, 'freq', 200*ones(6,1)); + initializeReferences('Rz_type', 'rotating-not-filtered', 'Rz_period', 60); +#+end_src + +#+begin_src matlab :exports none + K = tf(zeros(6)); + Kdvf = tf(zeros(6)); +#+end_src + +*** Direct Velocity Feedback +The dynamics from actuators force $\tau_i$ to relative motion sensors $d\mathcal{L}_i$ with and without considering the flexible joint stiffness are identified. + +The obtained dynamics are shown in Figure [[fig:flex_joint_trans_dvf]]. + +#+begin_src matlab :exports none + %% Name of the Simulink File + mdl = 'nass_model'; + + %% Input/Output definition + clear io; io_i = 1; + io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs + io(io_i) = linio([mdl, '/Micro-Station'], 3, 'openoutput', [], 'Dnlm'); io_i = io_i + 1; % Force Sensors +#+end_src + +#+begin_src matlab :exports none + initializeNanoHexapod('k', k_opt, 'c', c_opt, ... + 'type_F', 'universal_3dof', ... + 'type_M', 'spherical_3dof', ... + 'Ka_F', Ka_F, ... + 'Ka_M', Ka_M, ... + 'Ca_F', Ca_F, ... + 'Ca_M', Ca_M); + + G_dvf_3dof = linearize(mdl, io); + G_dvf_3dof.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}; + G_dvf_3dof.OutputName = {'Dnlm1', 'Dnlm2', 'Dnlm3', 'Dnlm4', 'Dnlm5', 'Dnlm6'}; +#+end_src + +#+begin_src matlab :exports none + initializeNanoHexapod('k', k_opt, 'c', c_opt, ... + 'type_F', 'universal', ... + 'type_M', 'spherical'); + + G_dvf = linearize(mdl, io); + G_dvf.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}; + G_dvf.OutputName = {'Dnlm1', 'Dnlm2', 'Dnlm3', 'Dnlm4', 'Dnlm5', 'Dnlm6'}; +#+end_src + +#+begin_src matlab :exports none + freqs = logspace(-1, 3, 1000); + + figure; + + ax1 = subplot(2, 1, 1); + hold on; + plot(freqs, abs(squeeze(freqresp(G_dvf(1, 1), freqs, 'Hz')))); + plot(freqs, abs(squeeze(freqresp(G_dvf_3dof(1, 1), freqs, 'Hz')))); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]); + + ax2 = subplot(2, 1, 2); + hold on; + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G_dvf(1, 1), freqs, 'Hz')))), ... + 'DisplayName', '2dof Joints'); + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G_dvf_3dof(1, 1), freqs, 'Hz')))), ... + 'DisplayName', '3dof Joints'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); + ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); + ylim([-270, 90]); + yticks([-360:90:360]); + legend('location', 'northeast'); + + linkaxes([ax1,ax2],'x'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/flex_joint_trans_dvf.pdf', 'width', 'full', 'height', 'full'); +#+end_src + +#+name: fig:flex_joint_trans_dvf +#+caption: Dynamics from actuators force $\tau_i$ to relative motion sensors $d\mathcal{L}_i$ with (blue) and without (red) considering the flexible joint axis stiffness +#+RESULTS: +[[file:figs/flex_joint_trans_dvf.png]] + +*** Primary Plant +#+begin_src matlab + Kdvf = 5e3*s/(1+s/2/pi/1e3)*eye(6); +#+end_src + +Let's now identify the dynamics from $\bm{\tau}^\prime$ to $\bm{\epsilon}_{\mathcal{X}_n}$ (for the primary controller designed in the frame of the legs). + +The dynamics is compare with and without the joint flexibility in Figure [[fig:flex_joints_trans_primary_plant_L]]. + +#+begin_src matlab :exports none + %% Name of the Simulink File + mdl = 'nass_model'; + + %% Input/Output definition + clear io; io_i = 1; + io(io_i) = linio([mdl, '/Controller'], 1, 'input'); io_i = io_i + 1; % Actuator Inputs + io(io_i) = linio([mdl, '/Tracking Error'], 1, 'output', [], 'En'); io_i = io_i + 1; % Position Errror + + load('mat/stages.mat', 'nano_hexapod'); +#+end_src + +#+begin_src matlab :exports none + initializeNanoHexapod('k', k_opt, 'c', c_opt, ... + 'type_F', 'universal_3dof', ... + 'type_M', 'spherical_3dof', ... + 'Ka_F', Ka_F, ... + 'Ka_M', Ka_M, ... + 'Ca_F', Ca_F, ... + 'Ca_M', Ca_M); + + G = linearize(mdl, io); + G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}; + G.OutputName = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'}; + + Gl_3dof = -nano_hexapod.kinematics.J*G; + Gl_3dof.OutputName = {'E1', 'E2', 'E3', 'E4', 'E5', 'E6'}; +#+end_src + +#+begin_src matlab :exports none + initializeNanoHexapod('k', k_opt, 'c', c_opt, ... + 'type_F', 'universal', ... + 'type_M', 'spherical'); + + G = linearize(mdl, io); + G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}; + G.OutputName = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'}; + + Gl = -nano_hexapod.kinematics.J*G; + Gl.OutputName = {'E1', 'E2', 'E3', 'E4', 'E5', 'E6'}; +#+end_src + +#+begin_src matlab :exports none + freqs = logspace(0, 3, 1000); + + figure; + + ax1 = subplot(2, 1, 1); + hold on; + for j = 1:6 + set(gca,'ColorOrderIndex',1); + plot(freqs, abs(squeeze(freqresp(Gl(j, j), freqs, 'Hz')))); + end + for j = 1:6 + set(gca,'ColorOrderIndex',2); + plot(freqs, abs(squeeze(freqresp(Gl_3dof(j, j), freqs, 'Hz'))), '--'); + end + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]); + title('Diagonal elements of the Plant'); + + ax2 = subplot(2, 1, 2); + hold on; + for j = 1:6 + set(gca,'ColorOrderIndex',1); + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gl(j, j), freqs, 'Hz'))))); + end + for j = 1:6 + set(gca,'ColorOrderIndex',2); + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gl_3dof(j, j), freqs, 'Hz')))), '--'); + end + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); + ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); + ylim([-270, 90]); + yticks([-360:90:360]); + + linkaxes([ax1,ax2],'x'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/flex_joints_trans_primary_plant_L.pdf', 'width', 'full', 'height', 'full'); +#+end_src + +#+name: fig:flex_joints_trans_primary_plant_L +#+caption: Dynamics from $\bm{\tau}^\prime_i$ to $\bm{\epsilon}_{\mathcal{X}_n,i}$ with infinite axis stiffnes (solid) and with realistic axial stiffness (dashed) +#+RESULTS: +[[file:figs/flex_joints_trans_primary_plant_L.png]] + +*** Conclusion +#+begin_important + For the realistic value of the flexible joint axial stiffness, the dynamics is not much impact, and this should not be a problem for control. +#+end_important + +** Parametric study +*** Introduction :ignore: +We wish now to see what is the impact of the *axial* stiffness of the flexible joints on the dynamics. + +Let's consider the following values for the axial stiffness: +#+begin_src matlab + Kas = [1e4, 1e5, 1e6, 1e7, 1e8, 1e9]; % [N/m] +#+end_src + +We also consider here a nano-hexapod with the identified optimal actuator stiffness ($k = 10^5\,[N/m]$). + +#+begin_src matlab :exports none + K = tf(zeros(6)); + Kdvf = tf(zeros(6)); +#+end_src + +*** Direct Velocity Feedback +The dynamics from the actuators to the relative displacement sensor in each leg is identified and shown in Figure [[fig:flex_joints_trans_study_dvf]]. + +It is shown that the axial stiffness of the flexible joints does have a huge impact on the dynamics. + +If the axial stiffness of the flexible joints is $K_a > 10^7\,[N/m]$ (here $100$ times higher than the actuator stiffness), then the change of dynamics stays reasonably small. + +This is more clear by looking at the root locus (Figures [[fig:flex_joints_trans_study_dvf_root_locus]] and [[fig:flex_joints_trans_study_root_locus_unzoom]]). +It can be seen that very little active damping can be achieve for axial stiffnesses below $10^7\,[N/m]$. + +#+begin_src matlab :exports none + %% Name of the Simulink File + mdl = 'nass_model'; + + %% Input/Output definition + clear io; io_i = 1; + io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs + io(io_i) = linio([mdl, '/Micro-Station'], 3, 'openoutput', [], 'Dnlm'); io_i = io_i + 1; % Force Sensors + + G_dvf_3dof_s = {zeros(length(Kas), 1)}; + + for i = 1:length(Kas) + initializeNanoHexapod('k', k_opt, 'c', c_opt, ... + 'type_F', 'universal_3dof', ... + 'type_M', 'spherical_3dof', ... + 'Ka_F', Kas(i), ... + 'Ka_M', Kas(i), ... + 'Ca_F', 0.05*sqrt(Kas(i)*10), ... + 'Ca_M', 0.05*sqrt(Kas(i)*10)); + + G = linearize(mdl, io); + G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}; + G.OutputName = {'Dnlm1', 'Dnlm2', 'Dnlm3', 'Dnlm4', 'Dnlm5', 'Dnlm6'}; + + G_dvf_3dof_s(i) = {G}; + end +#+end_src + +#+begin_src matlab :exports none + freqs = logspace(-1, 3, 1000); + + figure; + + ax1 = subplot(2, 1, 1); + hold on; + for i = 1:length(Kas) + plot(freqs, abs(squeeze(freqresp(G_dvf_3dof_s{i}(1, 1), freqs, 'Hz')))); + end + plot(freqs, abs(squeeze(freqresp(G_dvf(1, 1), freqs, 'Hz'))), 'k--'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]); + + ax2 = subplot(2, 1, 2); + hold on; + for i = 1:length(Kas) + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G_dvf_3dof_s{i}(1, 1), freqs, 'Hz')))), ... + 'DisplayName', sprintf('$k = %.0g$ [N/m]', Kas(i))); + end + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G_dvf(1, 1), freqs, 'Hz')))), 'k--', ... + 'DisplayName', 'Perfect Joint'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); + ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); + ylim([-270, 90]); + yticks([-360:90:360]); + legend('location', 'southwest'); + + linkaxes([ax1,ax2],'x'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/flex_joints_trans_study_dvf.pdf', 'width', 'full', 'height', 'full'); +#+end_src + +#+name: fig:flex_joints_trans_study_dvf +#+caption: Dynamics from $\tau_i$ to $d\mathcal{L}_i$ for all the considered axis Stiffnesses +#+RESULTS: +[[file:figs/flex_joints_trans_study_dvf.png]] + +#+begin_src matlab :exports none + figure; + + gains = logspace(2, 5, 300); + + hold on; + for i = 1:length(Kas) + set(gca,'ColorOrderIndex',i); + plot(real(pole(G_dvf_3dof_s{i})), imag(pole(G_dvf_3dof_s{i})), 'x', ... + 'DisplayName', sprintf('$k = %.0g$ [N/m]', Kas(i))); + set(gca,'ColorOrderIndex',i); + plot(real(tzero(G_dvf_3dof_s{i})), imag(tzero(G_dvf_3dof_s{i})), 'o', ... + 'HandleVisibility', 'off'); + for k = 1:length(gains) + set(gca,'ColorOrderIndex',i); + cl_poles = pole(feedback(G_dvf_3dof_s{i}, (gains(k)*s)*eye(6))); + plot(real(cl_poles), imag(cl_poles), '.', ... + 'HandleVisibility', 'off'); + end + end + hold off; + axis square; + xlim([-140, 10]); ylim([0, 150]); + + xlabel('Real Part'); ylabel('Imaginary Part'); + legend('location', 'northwest'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/flex_joints_trans_study_dvf_root_locus.pdf', 'width', 'wide', 'height', 'tall'); +#+end_src + +#+name: fig:flex_joints_trans_study_dvf_root_locus +#+caption: Root Locus for all the considered axial Stiffnesses +#+RESULTS: +[[file:figs/flex_joints_trans_study_dvf_root_locus.png]] + +#+begin_src matlab :exports none + xlim([-1e3, 0]); + ylim([0, 1e3]); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/flex_joints_trans_study_root_locus_unzoom.pdf', 'width', 'wide', 'height', 'tall'); +#+end_src + +#+name: fig:flex_joints_trans_study_root_locus_unzoom +#+caption: Root Locus (unzoom) for all the considered axial Stiffnesses +#+RESULTS: +[[file:figs/flex_joints_trans_study_root_locus_unzoom.png]] + +*** Primary Control +The dynamics from $\bm{\tau}^\prime$ to $\bm{\epsilon}_{\mathcal{X}_n}$ (for the primary controller designed in the frame of the legs) is shown in Figure [[fig:flex_joints_trans_study_primary_plant]]. + +#+begin_src matlab :exports none + Kdvf = 5e3*s/(1+s/2/pi/1e3)*eye(6); +#+end_src + +#+begin_src matlab :exports none + %% Name of the Simulink File + mdl = 'nass_model'; + + %% Input/Output definition + clear io; io_i = 1; + io(io_i) = linio([mdl, '/Controller'], 1, 'input'); io_i = io_i + 1; % Actuator Inputs + io(io_i) = linio([mdl, '/Tracking Error'], 1, 'output', [], 'En'); io_i = io_i + 1; % Position Errror + + load('mat/stages.mat', 'nano_hexapod'); + + Gl_3dof_s = {zeros(length(Kas), 1)}; + + for i = 1:length(Kas) + initializeNanoHexapod('k', k_opt, 'c', c_opt, ... + 'type_F', 'universal_3dof', ... + 'type_M', 'spherical_3dof', ... + 'Ka_F', Kas(i), ... + 'Ka_M', Kas(i), ... + 'Ca_F', 0.05*sqrt(Kas(i)*10), ... + 'Ca_M', 0.05*sqrt(Kas(i)*10)); + + G = linearize(mdl, io); + G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}; + G.OutputName = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'}; + + Gl_3dof = -nano_hexapod.kinematics.J*G; + Gl_3dof.OutputName = {'E1', 'E2', 'E3', 'E4', 'E5', 'E6'}; + Gl_3dof_s(i) = {Gl_3dof}; + end +#+end_src + +#+begin_src matlab :exports none + freqs = logspace(-1, 3, 1000); + + figure; + + ax1 = subplot(2, 1, 1); + hold on; + for i = 1:length(Kas) + plot(freqs, abs(squeeze(freqresp(Gl_3dof_s{i}(1, 1), freqs, 'Hz')))); + end + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]); + + ax2 = subplot(2, 1, 2); + hold on; + for i = 1:length(Kas) + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gl_3dof_s{i}(1, 1), freqs, 'Hz')))), ... + 'DisplayName', sprintf('$k = %.0g$ [N/m]', Kas(i))); + end + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); + ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); + ylim([-270, 90]); + yticks([-360:90:360]); + legend('location', 'northeast'); + + linkaxes([ax1,ax2],'x'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/flex_joints_trans_study_primary_plant.pdf', 'width', 'full', 'height', 'full'); +#+end_src + +#+name: fig:flex_joints_trans_study_primary_plant +#+caption: Diagonal elements of the transfer function matrix from $\bm{\tau}^\prime$ to $\bm{\epsilon}_{\mathcal{X}_n}$ for the considered axial stiffnesses +#+RESULTS: +[[file:figs/flex_joints_trans_study_primary_plant.png]] + +** Conclusion +#+begin_important + The axial stiffness of the flexible joints should be maximized. + + For the considered actuator stiffness $k = 10^5\,[N/m]$, the axial stiffness of the flexible joints should ideally be above $10^7\,[N/m]$. + + This is a reasonable stiffness value for such joints. + + We may interpolate the results and say that the axial joint stiffness should be 100 times higher than the actuator stiffness, but this should be confirmed with further analysis. +#+end_important + +* Designed Flexible Joints +** 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 + simulinkproject('../'); +#+end_src + +#+begin_src matlab + load('mat/conf_simulink.mat'); + open('nass_model.slx') +#+end_src + +** Initialization +Let's initialize all the stages with default parameters. +#+begin_src matlab + initializeGround(); + initializeGranite(); + initializeTy(); + initializeRy(); + initializeRz(); + initializeMicroHexapod(); + initializeAxisc('type', 'none'); + initializeMirror('type', 'none'); + initializeMirror(); +#+end_src + +#+begin_src matlab :exports none + initializeSimscapeConfiguration(); + initializeDisturbances('enable', false); + initializeLoggingConfiguration('log', 'none'); + + initializeController('type', 'hac-dvf'); +#+end_src + +Let's consider the heaviest mass which should we the most problematic with it comes to the flexible joints. +#+begin_src matlab + initializeSample('mass', 50, 'freq', 200*ones(6,1)); + initializeReferences('Rz_type', 'rotating-not-filtered', 'Rz_period', 60); +#+end_src + +#+begin_src matlab :exports none + K = tf(zeros(6)); + Kdvf = tf(zeros(6)); +#+end_src + +#+begin_src matlab + flex_joint = load('./mat/flexor_025.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K'); + apa = load('./mat/APA300ML_simplified_model.mat'); +#+end_src + +#+begin_src matlab + initializeNanoHexapod('actuator', 'amplified', ... + 'ke', apa.ke, 'ka', apa.ka, 'k1', apa.k1, 'c1', apa.c1, 'F_gain', apa.F_gain, ... + 'type_M', 'spherical_3dof', ... + 'Kr_M', flex_joint.K(1,1)*ones(6,1), ... + 'Ka_M', flex_joint.K(3,3)*ones(6,1), ... + 'Kf_M', flex_joint.K(4,4)*ones(6,1), ... + 'Kt_M', flex_joint.K(6,6)*ones(6,1), ... + 'type_F', 'spherical_3dof', ... + 'Kr_F', flex_joint.K(1,1)*ones(6,1), ... + 'Ka_F', flex_joint.K(3,3)*ones(6,1), ... + 'Kf_F', flex_joint.K(4,4)*ones(6,1), ... + 'Kt_F', flex_joint.K(6,6)*ones(6,1)); +#+end_src + +#+begin_src matlab + initializeNanoHexapod(); +#+end_src + +** Direct Velocity Feedback +#+begin_src matlab :exports none + %% Name of the Simulink File + mdl = 'nass_model'; + + %% Input/Output definition + clear io; io_i = 1; + io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs + io(io_i) = linio([mdl, '/Micro-Station'], 3, 'openoutput', [], 'Dnlm'); io_i = io_i + 1; % Force Sensors +#+end_src + +#+begin_src matlab :exports none + G_dvf = linearize(mdl, io); + G_dvf.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}; + G_dvf.OutputName = {'Dnlm1', 'Dnlm2', 'Dnlm3', 'Dnlm4', 'Dnlm5', 'Dnlm6'}; +#+end_src + +#+begin_src matlab :exports none + freqs = logspace(0, 4, 1000); + + figure; + + ax1 = subplot(2, 1, 1); + hold on; + plot(freqs, abs(squeeze(freqresp(G_dvf(1, 1), freqs, 'Hz')))); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]); + + ax2 = subplot(2, 1, 2); + hold on; + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G_dvf(1, 1), freqs, 'Hz')))), ... + 'DisplayName', 'Designed Joints'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); + ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); + ylim([-270, 90]); + yticks([-360:90:360]); + legend('location', 'northeast'); + + linkaxes([ax1,ax2],'x'); +#+end_src + +#+begin_src matlab :exports none + K_iff = 1e6*s/(1 + s/2/pi/100)/(1 + s/2/pi/100); + + freqs = logspace(0, 4, 1000); + + figure; + + ax1 = subplot(2, 1, 1); + hold on; + plot(freqs, abs(squeeze(freqresp(K_iff*G_dvf(1, 1), freqs, 'Hz')))); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]); + + ax2 = subplot(2, 1, 2); + hold on; + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(K_iff*G_dvf(1, 1), freqs, 'Hz')))), ... + 'DisplayName', 'Designed Joints'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); + ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); + ylim([-270, 90]); + yticks([-360:90:360]); + legend('location', 'northeast'); + + linkaxes([ax1,ax2],'x'); +#+end_src + +#+begin_src matlab :exports none + gains = logspace(0, 5, 100); + + figure; + hold on; + plot(real(pole(G_dvf)), imag(pole(G_dvf)), 'x'); + set(gca,'ColorOrderIndex',1); + plot(real(tzero(G_dvf)), imag(tzero(G_dvf)), 'o'); + for i = 1:length(gains) + set(gca,'ColorOrderIndex',1); + cl_poles = pole(feedback(G_dvf, (gains(i)*s/(1+s/2/pi/100)^2)*eye(6))); + plot(real(cl_poles), imag(cl_poles), '.'); + end + % ylim([0, 2*pi*500]); + % xlim([-2*pi*500,0]); + xlabel('Real Part') + ylabel('Imaginary Part') + axis square +#+end_src + +** Integral Force Feedback +#+begin_src matlab :exports none + %% Name of the Simulink File + mdl = 'nass_model'; + + %% Input/Output definition + clear io; io_i = 1; + io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs + io(io_i) = linio([mdl, '/Micro-Station'], 3, 'openoutput', [], 'Fnlm'); io_i = io_i + 1; % Force Sensors +#+end_src + +#+begin_src matlab :exports none + G_iff = linearize(mdl, io); + G_iff.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}; + G_iff.OutputName = {'Fnlm1', 'Fnlm2', 'Fnlm3', 'Fnlm4', 'Fnlm5', 'Fnlm6'}; +#+end_src + +#+begin_src matlab :exports none + freqs = logspace(0, 4, 1000); + + figure; + + ax1 = subplot(2, 1, 1); + hold on; + plot(freqs, abs(squeeze(freqresp(G_iff(1, 1), freqs, 'Hz')))); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Amplitude [N/N]'); set(gca, 'XTickLabel',[]); + + ax2 = subplot(2, 1, 2); + hold on; + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G_iff(1, 1), freqs, 'Hz')))), ... + 'DisplayName', 'Designed Joints'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); + ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); + ylim([-270, 90]); + yticks([-360:90:360]); + legend('location', 'northeast'); + + linkaxes([ax1,ax2],'x'); +#+end_src + +#+begin_src matlab :exports none + K_iff = -1e4/(s + 2*pi*5)*s/(s + 2*pi*5); + + freqs = logspace(-1, 4, 1000); + + figure; + + ax1 = subplot(2, 1, 1); + hold on; + plot(freqs, abs(squeeze(freqresp(K_iff*G_iff(1, 1), freqs, 'Hz')))); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Loop Gain'); set(gca, 'XTickLabel',[]); + + ax2 = subplot(2, 1, 2); + hold on; + plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(K_iff*G_iff(1, 1), freqs, 'Hz')))), ... + 'DisplayName', 'Designed Joints'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); + ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); + ylim([-180, 180]); + yticks([-360:90:360]); + legend('location', 'northeast'); + + linkaxes([ax1,ax2],'x'); +#+end_src + +#+begin_src matlab :exports none + gains = logspace(0, 5, 100); + + figure; + hold on; + plot(real(pole(G_iff)), imag(pole(G_iff)), 'x'); + set(gca,'ColorOrderIndex',1); + plot(real(tzero(G_iff)), imag(tzero(G_iff)), 'o'); + for i = 1:length(gains) + set(gca,'ColorOrderIndex',1); + cl_poles = pole(feedback(G_iff, -(gains(i)/(s + 2*pi*5)*s/(s + 2*pi*5))*eye(6))); + plot(real(cl_poles), imag(cl_poles), '.'); + end + ylim([0, 2*pi*500]); + xlim([-2*pi*500,0]); + xlabel('Real Part') + ylabel('Imaginary Part') + axis square +#+end_src +* Conclusion +<> + +#+begin_important + In this study we considered the bending, torsional and axial stiffnesses of the flexible joints used for the nano-hexapod. + + The bending and torsional stiffnesses somehow adds a parasitic stiffness in parallel with the legs. + It is not found to be much problematic for the considered control architecture (it is however, if Integral Force Feedback is to be used). + As a consequence of the added stiffness, it could increase a little bit the required actuator force. + + + The axial stiffness of the flexible joints can be very problematic for control. + Small values of the axial stiffness are shown to limit the achievable damping with Direct Velocity Feedback. + The axial stiffness should therefore be maximized and taken into account in the model of the nano-hexapod. + + + For the identified optimal actuator stiffness $k = 10^5\,[N/m]$, the flexible joint should have the following stiffness properties: + - Axial Stiffness: $K_a > 10^7\,[N/m]$ + - Bending Stiffness: $K_b < 50\,[Nm/rad]$ + - Torsion Stiffness: $K_t < 50\,[Nm/rad]$ + + As there is generally a trade-off between bending stiffness and axial stiffness, it should be highlighted that the *axial* stiffness is the most important property of the flexible joints. +#+end_important + + +* 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 diff --git a/nass-flexible-joints.pdf b/nass-flexible-joints.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4b4d3811d9c818d84f8f3a6317cf77bdac13e0b5 GIT binary patch literal 168778 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 T%rkRva)J;}Nhu;Hitv8`Y9(Ut literal 0 HcmV?d00001 diff --git a/nass-flexible-joints.tex b/nass-flexible-joints.tex new file mode 100644 index 0000000..df52aae --- /dev/null +++ b/nass-flexible-joints.tex @@ -0,0 +1,245 @@ +% Created 2024-03-19 Tue 11:11 +% Intended LaTeX compiler: pdflatex +\documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt} + +\input{preamble.tex} +\bibliography{nass-flexible-joints.bib} +\author{Dehaeze Thomas} +\date{\today} +\title{Nano-Hexapod - Flexible Joints Optimization} +\hypersetup{ + pdfauthor={Dehaeze Thomas}, + pdftitle={Nano-Hexapod - Flexible Joints Optimization}, + pdfkeywords={}, + pdfsubject={}, + pdfcreator={Emacs 29.2 (Org mode 9.7)}, + pdflang={English}} +\usepackage{biblatex} + +\begin{document} + +\maketitle +\tableofcontents + +\clearpage +In this document is studied the effect of the mechanical behavior of the flexible joints that are located the extremities of each nano-hexapod's legs. + +Ideally, we want the x and y rotations to be free and all the translations to be blocked. +However, this is never the case and be have to consider: +\begin{itemize} +\item Finite bending stiffnesses (Section \ref{sec:rot_stiffness}) +\item Axial stiffness in the direction of the legs (Section \ref{sec:trans_stiffness}) +\end{itemize} + +This may impose some limitations, also, the goal is to specify the required joints stiffnesses (summarized in Section \ref{sec:conclusion}). + +\begin{table}[htbp] +\caption{\label{tab:nass_flexible_joints_section_matlab_code}Report sections and corresponding Matlab files} +\centering +\begin{tabularx}{0.6\linewidth}{lX} +\toprule +\textbf{Sections} & \textbf{Matlab File}\\ +\midrule +Section \ref{sec:nass_flexible_joints_1_a} & \texttt{nass\_flexible\_joints\_1\_.m}\\ +\bottomrule +\end{tabularx} +\end{table} +\chapter{Bending and Torsional Stiffness} +\label{sec:rot_stiffness} + +In this section, we wish to study the effect of the rotation flexibility of the nano-hexapod joints. +\section{Initialization} +Let's initialize all the stages with default parameters. +Let's consider the heaviest mass which should we the most problematic with it comes to the flexible joints. +\section{Realistic Bending Stiffness Values} +Let's compare the ideal case (zero stiffness in rotation and infinite stiffness in translation) with a more realistic case: +\begin{itemize} +\item \(K_{\theta, \phi} = 15\,[Nm/rad]\) stiffness in flexion +\item \(K_{\psi} = 20\,[Nm/rad]\) stiffness in torsion +\end{itemize} + +The stiffness and damping of the nano-hexapod's legs are: +This corresponds to the optimal identified stiffness. +\subsection{Direct Velocity Feedback} +We identify the dynamics from actuators force \(\tau_i\) to relative motion sensors \(d\mathcal{L}_i\) with and without considering the flexible joint stiffness. + +The obtained dynamics are shown in Figure \ref{fig:flex_joint_rot_dvf}. +It is shown that the adding of stiffness for the flexible joints does increase a little bit the frequencies of the mass suspension modes. It stiffen the structure. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/flex_joint_rot_dvf.png} +\caption{\label{fig:flex_joint_rot_dvf}Dynamics from actuators force \(\tau_i\) to relative motion sensors \(d\mathcal{L}_i\) with (blue) and without (red) considering the flexible joint stiffness} +\end{figure} +\subsection{Primary Plant} +Let's now identify the dynamics from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) (for the primary controller designed in the frame of the legs). + +The dynamics is compare with and without the joint flexibility in Figure \ref{fig:flex_joints_rot_primary_plant_L}. +The plant dynamics is not found to be changing significantly. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/flex_joints_rot_primary_plant_L.png} +\caption{\label{fig:flex_joints_rot_primary_plant_L}Dynamics from \(\bm{\tau}^\prime_i\) to \(\bm{\epsilon}_{\mathcal{X}_n,i}\) with perfect joints and with flexible joints} +\end{figure} +\subsection{Conclusion} +\begin{important} +Considering realistic flexible joint bending stiffness for the nano-hexapod does not seems to impose any limitation on the DVF control nor on the primary control. + +It only increases a little bit the suspension modes of the sample on top of the nano-hexapod. +\end{important} +\section{Parametric Study} +We wish now to see what is the impact of the rotation stiffness of the flexible joints on the dynamics. +This will help to determine the requirements on the joint's stiffness. + +Let's consider the following bending stiffness of the flexible joints: +We also consider here a nano-hexapod with the identified optimal actuator stiffness. +\subsection{Direct Velocity Feedback} +The dynamics from the actuators to the relative displacement sensor in each leg is identified and shown in Figure \ref{fig:flex_joints_rot_study_dvf}. + +The corresponding Root Locus plot is shown in Figure \ref{fig:flex_joints_rot_study_dvf_root_locus}. + +It is shown that the bending stiffness of the flexible joints does indeed change a little the dynamics, but critical damping is stiff achievable with Direct Velocity Feedback. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/flex_joints_rot_study_dvf.png} +\caption{\label{fig:flex_joints_rot_study_dvf}Dynamics from \(\tau_i\) to \(d\mathcal{L}_i\) for all the considered Rotation Stiffnesses} +\end{figure} + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/flex_joints_rot_study_dvf_root_locus.png} +\caption{\label{fig:flex_joints_rot_study_dvf_root_locus}Root Locus for all the considered Rotation Stiffnesses} +\end{figure} +\subsection{Primary Control} +The dynamics from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) (for the primary controller designed in the frame of the legs) is shown in Figure \ref{fig:flex_joints_rot_study_primary_plant}. + +It is shown that the bending stiffness of the flexible joints have very little impact on the dynamics. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/flex_joints_rot_study_primary_plant.png} +\caption{\label{fig:flex_joints_rot_study_primary_plant}Diagonal elements of the transfer function matrix from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) for the considered bending stiffnesses} +\end{figure} +\subsection{Conclusion} +\begin{important} +The bending stiffness of the flexible joint does not significantly change the dynamics. +\end{important} +\chapter{Axial Stiffness} +\label{sec:trans_stiffness} + +Let's know consider a flexibility in translation of the flexible joint, in the axis of the legs. +\section{Realistic Translation Stiffness Values} +We choose realistic values of the axial stiffness of the joints: +\[ K_a = 60\,[N/\mu m] \] +\subsection{Initialization} +Let's initialize all the stages with default parameters. +Let's consider the heaviest mass which should we the most problematic with it comes to the flexible joints. +\subsection{Direct Velocity Feedback} +The dynamics from actuators force \(\tau_i\) to relative motion sensors \(d\mathcal{L}_i\) with and without considering the flexible joint stiffness are identified. + +The obtained dynamics are shown in Figure \ref{fig:flex_joint_trans_dvf}. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/flex_joint_trans_dvf.png} +\caption{\label{fig:flex_joint_trans_dvf}Dynamics from actuators force \(\tau_i\) to relative motion sensors \(d\mathcal{L}_i\) with (blue) and without (red) considering the flexible joint axis stiffness} +\end{figure} +\subsection{Primary Plant} +Let's now identify the dynamics from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) (for the primary controller designed in the frame of the legs). + +The dynamics is compare with and without the joint flexibility in Figure \ref{fig:flex_joints_trans_primary_plant_L}. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/flex_joints_trans_primary_plant_L.png} +\caption{\label{fig:flex_joints_trans_primary_plant_L}Dynamics from \(\bm{\tau}^\prime_i\) to \(\bm{\epsilon}_{\mathcal{X}_n,i}\) with infinite axis stiffnes (solid) and with realistic axial stiffness (dashed)} +\end{figure} +\subsection{Conclusion} +\begin{important} +For the realistic value of the flexible joint axial stiffness, the dynamics is not much impact, and this should not be a problem for control. +\end{important} +\section{Parametric study} +We wish now to see what is the impact of the \textbf{axial} stiffness of the flexible joints on the dynamics. + +Let's consider the following values for the axial stiffness: +We also consider here a nano-hexapod with the identified optimal actuator stiffness (\(k = 10^5\,[N/m]\)). +\subsection{Direct Velocity Feedback} +The dynamics from the actuators to the relative displacement sensor in each leg is identified and shown in Figure \ref{fig:flex_joints_trans_study_dvf}. + +It is shown that the axial stiffness of the flexible joints does have a huge impact on the dynamics. + +If the axial stiffness of the flexible joints is \(K_a > 10^7\,[N/m]\) (here \(100\) times higher than the actuator stiffness), then the change of dynamics stays reasonably small. + +This is more clear by looking at the root locus (Figures \ref{fig:flex_joints_trans_study_dvf_root_locus} and \ref{fig:flex_joints_trans_study_root_locus_unzoom}). +It can be seen that very little active damping can be achieve for axial stiffnesses below \(10^7\,[N/m]\). + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/flex_joints_trans_study_dvf.png} +\caption{\label{fig:flex_joints_trans_study_dvf}Dynamics from \(\tau_i\) to \(d\mathcal{L}_i\) for all the considered axis Stiffnesses} +\end{figure} + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/flex_joints_trans_study_dvf_root_locus.png} +\caption{\label{fig:flex_joints_trans_study_dvf_root_locus}Root Locus for all the considered axial Stiffnesses} +\end{figure} + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/flex_joints_trans_study_root_locus_unzoom.png} +\caption{\label{fig:flex_joints_trans_study_root_locus_unzoom}Root Locus (unzoom) for all the considered axial Stiffnesses} +\end{figure} +\subsection{Primary Control} +The dynamics from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) (for the primary controller designed in the frame of the legs) is shown in Figure \ref{fig:flex_joints_trans_study_primary_plant}. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/flex_joints_trans_study_primary_plant.png} +\caption{\label{fig:flex_joints_trans_study_primary_plant}Diagonal elements of the transfer function matrix from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) for the considered axial stiffnesses} +\end{figure} +\section{Conclusion} +\begin{important} +The axial stiffness of the flexible joints should be maximized. + +For the considered actuator stiffness \(k = 10^5\,[N/m]\), the axial stiffness of the flexible joints should ideally be above \(10^7\,[N/m]\). + +This is a reasonable stiffness value for such joints. + +We may interpolate the results and say that the axial joint stiffness should be 100 times higher than the actuator stiffness, but this should be confirmed with further analysis. +\end{important} +\chapter{Designed Flexible Joints} +\section{Initialization} +Let's initialize all the stages with default parameters. +Let's consider the heaviest mass which should we the most problematic with it comes to the flexible joints. +\section{Direct Velocity Feedback} +\section{Integral Force Feedback} +\chapter{Conclusion} +\label{sec:conclusion} + +\begin{important} +In this study we considered the bending, torsional and axial stiffnesses of the flexible joints used for the nano-hexapod. + +The bending and torsional stiffnesses somehow adds a parasitic stiffness in parallel with the legs. +It is not found to be much problematic for the considered control architecture (it is however, if Integral Force Feedback is to be used). +As a consequence of the added stiffness, it could increase a little bit the required actuator force. + + +The axial stiffness of the flexible joints can be very problematic for control. +Small values of the axial stiffness are shown to limit the achievable damping with Direct Velocity Feedback. +The axial stiffness should therefore be maximized and taken into account in the model of the nano-hexapod. + + +For the identified optimal actuator stiffness \(k = 10^5\,[N/m]\), the flexible joint should have the following stiffness properties: +\begin{itemize} +\item Axial Stiffness: \(K_a > 10^7\,[N/m]\) +\item Bending Stiffness: \(K_b < 50\,[Nm/rad]\) +\item Torsion Stiffness: \(K_t < 50\,[Nm/rad]\) +\end{itemize} + +As there is generally a trade-off between bending stiffness and axial stiffness, it should be highlighted that the \textbf{axial} stiffness is the most important property of the flexible joints. +\end{important} +\printbibliography[heading=bibintoc,title={Bibliography}] +\end{document} diff --git a/preamble.tex b/preamble.tex new file mode 100644 index 0000000..d18dbd9 --- /dev/null +++ b/preamble.tex @@ -0,0 +1,137 @@ +\usepackage{float} + +\usepackage{caption,tabularx,booktabs} +\usepackage{bm} + +\usepackage{xpatch} % Recommanded for biblatex +\usepackage[ % use biblatex for bibliography + backend=biber, % use biber backend (bibtex replacement) or bibtex + style=ieee, % bib style + hyperref=true, % activate hyperref support + backref=true, % activate backrefs + isbn=false, % don't show isbn tags + url=false, % don't show url tags + doi=false, % don't show doi tags + urldate=long, % display type for dates + maxnames=3, % + minnames=1, % + maxbibnames=5, % + minbibnames=3, % + maxcitenames=2, % + mincitenames=1 % + ]{biblatex} + +\setlength\bibitemsep{1.1\itemsep} + +% \renewcommand*{\bibfont}{\footnotesize} + +\usepackage{fontawesome} + +\usepackage{caption} +\usepackage{subcaption} + +\captionsetup[figure]{labelfont=bf} +\captionsetup[subfigure]{labelfont=bf} +\captionsetup[listing]{labelfont=bf} +\captionsetup[table]{labelfont=bf} + +\usepackage{xcolor} + +\definecolor{my-blue}{HTML}{6b7adb} +\definecolor{my-pale-blue}{HTML}{e6e9f9} +\definecolor{my-red}{HTML}{db6b6b} +\definecolor{my-pale-red}{HTML}{f9e6e6} +\definecolor{my-green}{HTML}{6bdbb6} +\definecolor{my-pale-green}{HTML}{e6f9f3} +\definecolor{my-yellow}{HTML}{dbd26b} +\definecolor{my-pale-yellow}{HTML}{f9f7e6} +\definecolor{my-orange}{HTML}{dba76b} +\definecolor{my-pale-orange}{HTML}{f9f0e6} +\definecolor{my-grey}{HTML}{a3a3a3} +\definecolor{my-pale-grey}{HTML}{f0f0f0} +\definecolor{my-turq}{HTML}{6bc7db} +\definecolor{my-pale-turq}{HTML}{e6f6f9} + +\usepackage{inconsolata} + +\usepackage[newfloat=true, chapter]{minted} +\usemintedstyle{autumn} + +\setminted{frame=lines,breaklines=true,tabsize=4,fontsize=\scriptsize,autogobble=true,labelposition=topline,bgcolor=my-pale-grey} +\setminted[matlab]{label=Matlab} +\setminted[latex]{label=LaTeX} +\setminted[bash]{label=Bash} +\setminted[python]{label=Python} +\setminted[text]{label=Results} +\setminted[md]{label=Org Mode} + +\setmintedinline{fontsize=\normalsize,bgcolor=my-pale-grey} + +\usepackage[most]{tcolorbox} + +\tcbuselibrary{minted} + +\newtcolorbox{seealso}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=See Also} +\newtcolorbox{hint}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=Hint} +\newtcolorbox{definition}{enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Definition} +\newtcolorbox{important}{ enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Important} +\newtcolorbox{exampl}[1][]{ enhanced,breakable,colback=my-pale-green,colframe=my-green,fonttitle=\bfseries,title=Example,#1} +\newtcolorbox{exercice}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Exercice} +\newtcolorbox{question}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Question} +\newtcolorbox{answer}{ enhanced,breakable,colback=my-pale-turq,colframe=my-turq,fonttitle=\bfseries,title=Answer} +\newtcolorbox{summary}{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Summary} +\newtcolorbox{note}{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Note} +\newtcolorbox{caution}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Caution} +\newtcolorbox{warning}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Warning} + +\newtcolorbox{my-quote}[1]{% + colback=my-pale-grey, + grow to right by=-10mm, + grow to left by=-10mm, + boxrule=0pt, + boxsep=0pt, + breakable, + enhanced jigsaw, + borderline west={4pt}{0pt}{my-grey}} + +\renewenvironment{quote}{\begin{my-quote}}{\end{my-quote}} + +\newtcolorbox{my-verse}[1]{% + colback=my-pale-grey, + grow to right by=-10mm, + grow to left by=-10mm, + boxrule=0pt, + boxsep=0pt, + breakable, + enhanced jigsaw, + borderline west={4pt}{0pt}{my-grey}} + +\renewenvironment{verse}{\begin{my-verse}}{\end{my-verse}} + +\usepackage{environ}% http://ctan.org/pkg/environ +\NewEnviron{aside}{% + \marginpar{\BODY} +} + +\renewenvironment{verbatim}{\VerbatimEnvironment\begin{minted}[]{text}}{\end{minted}} + +\usepackage{soul} +\sethlcolor{my-pale-grey} + +\let\OldTexttt\texttt +\renewcommand{\texttt}[1]{{\ttfamily\hl{\mbox{\,#1\,}}}} + +\makeatletter +\preto\Gin@extensions{png,} +\DeclareGraphicsRule{.png}{pdf}{.pdf}{\noexpand\Gin@base.pdf} +\preto\Gin@extensions{gif,} +\DeclareGraphicsRule{.gif}{png}{.png}{\noexpand\Gin@base.png} +\makeatother + +\usepackage{hyperref} +\hypersetup{ + colorlinks = true, + allcolors = my-blue +} + +\usepackage{hypcap}