Initial commit

This commit is contained in:
Thomas Dehaeze 2024-03-19 15:16:03 +01:00
commit cd5f1e5922
7 changed files with 2192 additions and 0 deletions

260
.gitignore vendored Normal file
View File

@ -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

111
.latexmkrc Normal file
View File

@ -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*.*";

0
nass-flexible-joints.bib Normal file
View File

1439
nass-flexible-joints.org Normal file

File diff suppressed because it is too large Load Diff

BIN
nass-flexible-joints.pdf Normal file

Binary file not shown.

245
nass-flexible-joints.tex Normal file
View File

@ -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}

137
preamble.tex Normal file
View File

@ -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}