commit 2eaa0f1feb3b100a5d69c8cfdee3cbe7cbf98497 Author: Thomas Dehaeze Date: Wed Jan 5 10:28:18 2022 +0100 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..448bf18 --- /dev/null +++ b/.gitignore @@ -0,0 +1,62 @@ +auto/ +*.tex +*.blg +*-blx.bib +*.bbl +*.aux +*.bcf +*.fdb_latexmk +*.log +*.out +*.pyg +*.toc +*.fls +*.synctex.gz +.auctex-auto/ +_minted* + +# Emacs +auto/ + +# Simulink Real Time +*bio.m +*pt.m +*ref.m +*ri.m +*xcp.m +*.mldatx +*.slxc +*.xml +*_slrt_rtw/ + +# data +data/ + +# Windows default autosave extension +*.asv + +# OSX / *nix default autosave extension +*.m~ + +# Compiled MEX binaries (all platforms) +*.mex* + +# Packaged app and toolbox files +*.mlappinstall +*.mltbx + +# Generated helpsearch folders +helpsearch*/ + +# Simulink code generation folders +slprj/ +sccprj/ + +# Matlab code generation folders +codegen/ + +# Simulink autosave extension +*.autosave + +# Octave session info +octave-workspace diff --git a/block_diagram_lut_attocube.pdf b/block_diagram_lut_attocube.pdf new file mode 100644 index 0000000..3dc84ae Binary files /dev/null and b/block_diagram_lut_attocube.pdf differ diff --git a/dcm_metrology.org b/dcm_metrology.org new file mode 100644 index 0000000..fdaf94d --- /dev/null +++ b/dcm_metrology.org @@ -0,0 +1,406 @@ +#+TITLE: ESRF Double Crystal Monochromator - Metrology +: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] +#+LaTeX_HEADER_EXTRA: \input{preamble.tex} +#+LATEX_HEADER_EXTRA: \bibliography{ref} + +#+PROPERTY: header-args:matlab :session *MATLAB* +#+PROPERTY: header-args:matlab+ :comments org +#+PROPERTY: header-args:matlab+ :exports both +#+PROPERTY: header-args:matlab+ :results none +#+PROPERTY: header-args:matlab+ :tangle no +#+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: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 + +* Metrology Concept +** Introduction :ignore: + +The goal of the metrology system is to measure the distance and default of parallelism orientation between the first and second crystals + +Only 3 degrees of freedom are of interest: +- $d_z$ +- $r_y$ +- $r_x$ + +** 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 + +** Sensor Topology + +In order to measure the relative pose of the two crystals, instead of performing a direct measurement which is complicated, the pose of the two crystals are measured from a metrology frame. +Three interferometers are used to measured the 3dof of interest for each crystals. +Three additional interferometers are used to measured the relative motion of the metrology frame. + +#+name: tab:metrology_notations +#+caption: Notations for the metrology frame +#+attr_latex: :environment tabularx :width 0.4\linewidth :align cX +#+attr_latex: :center t :booktabs t +| Notation | Meaning | +|----------+--------------------------| +| =d= | "Downstream": Positive X | +| =u= | "Upstream": Negative X | +| =h= | "Hall": Positive Y | +| =r= | "Ring": Negative Y | +| =f= | "Frame" | +| =1= | "First Crystals" | +| =2= | "Second Crystals" | + +#+name: fig:metrology_schematic +#+caption: Schematic of the Metrology System +[[file:figs/metrology_schematic.png]] + +** Crystal's motion computation + +From the raw interferometric measurements, the pose between the first and second crystals can be computed. + +First, Jacobian matrices can be used to convert raw interferometer measurements to axial displacement and orientation of the crystals and metrology frame. + +For the 311 crystals: + +#+name: tab:311_crystals_notations_raw_interf +#+caption: Table caption +#+attr_latex: :environment tabularx :width 0.5\linewidth :align lX +#+attr_latex: :center t :booktabs t +| Notation | Description | +|----------+-----------------------------------| +| =um= | Metrology Frame - Upstream | +| =dhm= | Metrology Frame - Downstream Hall | +| =drm= | Metrology Frame - Downstream Ring | +|----------+-----------------------------------| +| =ur1= | First Crystal - Upstream Ring | +| =h1= | First Crystal - Hall | +| =dr1= | First Crystal - Downstream Ring | +|----------+-----------------------------------| +| =ur2= | First Crystal - Upstream Ring | +| =h2= | First Crystal - Hall | +| =dr2= | First Crystal - Downstream Ring | + +#+name: tab:311_crystals_notations_converted_interf +#+caption: Table caption +#+attr_latex: :environment tabularx :width 0.5\linewidth :align lX +#+attr_latex: :center t :booktabs t +| Notation | Description | +|----------+--------------------------------| +| =dzm= | Positive: increase of distance | +| =rym= | | +| =rxm= | | +|----------+--------------------------------| +| =dz1= | Positive: decrease of distance | +| =ry1= | | +| =rx1= | | +|----------+--------------------------------| +| =dz2= | Positive: increase of distance | +| =ry2= | | +| =rx2= | | + +#+begin_src latex :file schematic_sensor_jacobian_forward_kinematics_m.pdf +\begin{tikzpicture} + % Blocs + \node[block] (Js_inv) {$\bm{J}_{s,m}^{-1}$}; + + % Connections and labels + \draw[->] ($(Js_inv.west)+(-1.5,0)$) node[above right]{$\begin{bmatrix} u_{m} \\ dh_{m} \\ dr_{m} \end{bmatrix}$} -- (Js_inv.west); + \draw[->] (Js_inv.east) -- ++(1.5, 0) node[above left]{$\begin{bmatrix} d_{zm} \\ r_{ym} \\ r_{xm} \end{bmatrix}$}; +\end{tikzpicture} +#+end_src + +#+name: fig:schematic_sensor_jacobian_forward_kinematics_m +#+caption: Forward Kinematics for the Metrology frame +#+RESULTS: +[[file:figs/schematic_sensor_jacobian_forward_kinematics_m.png]] + +#+begin_src latex :file schematic_sensor_jacobian_forward_kinematics_1.pdf +\begin{tikzpicture} + % Blocs + \node[block] (Js_inv) {$\bm{J}_{s,1}^{-1}$}; + + % Connections and labels + \draw[->] ($(Js_inv.west)+(-1.5,0)$) node[above right]{$\begin{bmatrix} u_{r1} \\ h_1 \\ d_{r1} \end{bmatrix}$} -- (Js_inv.west); + \draw[->] (Js_inv.east) -- ++(1.5, 0) node[above left]{$\begin{bmatrix} d_{z1} \\ r_{y1} \\ r_{x1} \end{bmatrix}$}; +\end{tikzpicture} +#+end_src + +#+name: fig:schematic_sensor_jacobian_forward_kinematics_1 +#+caption: Forward Kinematics for the 1st crystal +#+RESULTS: +[[file:figs/schematic_sensor_jacobian_forward_kinematics_1.png]] + +#+begin_src latex :file schematic_sensor_jacobian_forward_kinematics_2.pdf +\begin{tikzpicture} + % Blocs + \node[block] (Js_inv) {$\bm{J}_{s,2}^{-1}$}; + + % Connections and labels + \draw[->] ($(Js_inv.west)+(-1.5,0)$) node[above right]{$\begin{bmatrix} u_{r2} \\ h_2 \\ d_{r2} \end{bmatrix}$} -- (Js_inv.west); + \draw[->] (Js_inv.east) -- ++(1.5, 0) node[above left]{$\begin{bmatrix} d_{z2} \\ r_{y2} \\ r_{x2} \end{bmatrix}$}; +\end{tikzpicture} +#+end_src + +#+name: fig:schematic_sensor_jacobian_forward_kinematics_2 +#+caption: Forward Kinematics for the 2nd crystal +#+RESULTS: +[[file:figs/schematic_sensor_jacobian_forward_kinematics_2.png]] + +Then, the displacement and orientations can be combined as follows: +\begin{align} + d_{z} &= + d_{z1} - d_{z2} + d_{zm} \\ + d_{r_y} &= - r_{y1} + r_{y2} - r_{ym} \\ + d_{r_x} &= - r_{x1} + r_{x2} - r_{xm} +\end{align} + +Therefore: +- $d_z$ represents the distance between the two crystals +- $d_{r_y}$ represents the rotation of the second crystal w.r.t. the first crystal around $y$ axis +- $d_{r_x}$ represents the rotation of the second crystal w.r.t. the first crystal around $x$ axis + +If $d_{r_y}$ is positive, the second crystal has a positive rotation around $y$ w.r.t. the first crystal. +Therefore, the second crystal should be actuated such that it is making a negative rotation around $y$ w.r.t. metrology frame. + +The Jacobian matrices are defined as follow: +#+begin_src matlab +%% Sensor Jacobian matrix for the metrology frame +J_m = [1, 0.102, 0 + 1, -0.088, 0.1275 + 1, -0.088, -0.1275]; + +%% Sensor Jacobian matrix for 1st "111" crystal +J_s_111_1 = [-1, -0.036, -0.015 + -1, 0, 0.015 + -1, 0.036, -0.015]; + +%% Sensor Jacobian matrix for 2nd "111" crystal +J_s_111_2 = [1, 0.07, 0.015 + 1, 0, -0.015 + 1, -0.07, 0.015]; +#+end_src + +Therefore, the matrix that gives the relative pose of the crystal from the 9 interferometers is: +#+begin_src matlab +%% Compute the transformation matrix +G_111_t = [-inv(J_s_111_1), inv(J_s_111_2), -inv(J_m)]; + +% Sign convention for the axial motion +G_111_t(1,:) = -G_111_t(1,:); +#+end_src + +#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*) +data2orgtable(G_111_t, ... + {'=dz= [nm]', '=rx= [nrad]', '=ry= [nrad]'}, ... + {'=ur1= [nm]', '=h1= [nm]', '=dr1= [nm]', '=ur2= [nm]', '=h2= [nm]', '=dr1= [nm]', '=um= [nm]', '=dhm= [nm]', '=drm= [nm]'}, ... + ' %.3f '); +#+end_src + +#+name: tab:transformation_matrix +#+caption: Transformation Matrix +#+attr_latex: :environment tabularx :width \linewidth :align cccccccccc +#+attr_latex: :center t :booktabs t :font \scriptsize +#+RESULTS: +| | =ur1= [nm] | =h1= [nm] | =dr1= [nm] | =ur2= [nm] | =h2= [nm] | =dr1= [nm] | =um= [nm] | =dhm= [nm] | =drm= [nm] | +|-------------+------------+-----------+------------+------------+-----------+------------+-----------+------------+------------| +| =dz= [nm] | -0.25 | -0.5 | -0.25 | -0.25 | -0.5 | -0.25 | 0.463 | 0.268 | 0.268 | +| =rx= [nrad] | 13.889 | 0.0 | -13.889 | 7.143 | 0.0 | -7.143 | -5.263 | 2.632 | 2.632 | +| =ry= [nrad] | 16.667 | -33.333 | 16.667 | 16.667 | -33.333 | 16.667 | 0.0 | -3.922 | 3.922 | + +From table [[fig:schematic_sensor_jacobian_forward_kinematics_2]], we can determine the effect of each interferometer on the estimated relative pose between the crystals. +For instance, an error on =dr1= will have much greater impact on =ry= than an error on =drm=. + +* Deformations of the Metrology Frame +** Introduction :ignore: + +The transformation matrix in Table [[fig:schematic_sensor_jacobian_forward_kinematics_2]] is valid only if the metrology frames are solid bodies. + +The metrology frame itself is experiencing some deformations due to the gravity. +When the bragg axis is scanned, the effect of gravity on the metrology frame is changing and this introduce some measurement errors. + +This can be calibrated. + +** Measurement Setup + +Two beam viewers: +- one close to the DCM to measure position of the beam +- one far away to the DCM to measure orientation of the beam + +For each Bragg angle, the Fast Jacks are actuated to that the beam is at the center of the beam viewer. +Then, then position of the crystals as measured by the interferometers is recorded. +This position is the wanted position for a given Bragg angle. + +** Simulations + +The deformations of the metrology frame and therefore the expected interferometric measurements can be computed as a function of the Bragg angle. +This may be done using FE software. + +** Comparison + +* Attocube - Periodic Non-Linearity +:PROPERTIES: +:header-args:matlab+: :tangle matlab/dcm_attocube_lut.m +:END: +<> + +** Introduction :ignore: + +The idea is to calibrate the periodic non-linearity of the interferometers, a known displacement must be imposed and the interferometer output compared to this displacement. +This should be performed over several periods in order to characterize the error. + +We here suppose that we are already in the frame of the Attocube (the fast-jack displacements are converted to Attocube displacement using the transformation matrices). +We also suppose that we are at a certain Bragg angle, and that the stepper motors are not moving: only the piezoelectric actuators are used. + +The setup is schematically with the block diagram in Figure [[fig:block_diagram_lut_attocube]]. +The signals are: +- $u$: Actuator Signal (position where we wish to go) +- $d$: Disturbances affecting the signal +- $y$: Displacement of the crystal +- $y_g$: Measurement of the crystal motion by the strain gauge with some noise $n_g$ +- $y_a$: Measurement of the crystal motion by the interferometer with some noise $n_a$ + +#+begin_src latex :file block_diagram_lut_attocube.pdf +\definecolor{myblue}{rgb}{0, 0.447, 0.741} +\definecolor{myred}{rgb}{0.8500, 0.325, 0.098} + +\begin{tikzpicture} + \node[block] (G) at (0,0){$G(s)$}; + \node[addb, right=1 of G] (addd) {}; + \node[block, align=center, right=1 of addd] (non_linearity) {Periodic\\Non-linearity}; + \node[addb, right=1 of non_linearity] (addna) {}; + \node[addb, below=1.8 of addna] (addnsg) {}; + + \draw[->] ($(G.west) + (-1.0, 0)$) node[above right]{$u$} -- (G.west); + \draw[->] (G.east) -- (addd.west); + \draw[->] (addd.east) -- (non_linearity.west); + \draw[->] ($(addd.north) + (0, 1.0)$) node[below right]{$d$} -- (addd.north); + \draw[->] (non_linearity.east) -- (addna.west); + \draw[->] (addna.east) -- ++(1.2, 0) node[above left]{$y_a$}; + \draw[->] ($(addna.north) + (0, 1.0)$) node[below right](na){$n_a$} -- (addna.north); + \draw[->] ($(addd.east) + (0.4, 0)$)node[branch]{} node[above]{$y$} |- (addnsg.west); + \draw[->] (addnsg.east) -- ++(1.2, 0) node[above left]{$y_g$}; + \draw[->] ($(addnsg.north) + (0, 1.0)$) node[below right](nsg){$n_{g}$} -- (addnsg.north); + + \begin{scope}[on background layer] + \node[fit={(non_linearity.south west) (na.north east)}, fill=myblue!20!white, draw, inner sep=6pt] (attocube) {}; + \node[fit={(non_linearity.west|-addnsg.south) (nsg.north east)}, fill=myred!20!white, draw, inner sep=6pt] (straingauge) {}; + \node[below right] at (attocube.north west) {Attocube}; + \node[below right] at (straingauge.north west) {Strain Gauge}; + \end{scope} +\end{tikzpicture} +#+end_src + +#+name: fig:block_diagram_lut_attocube +#+caption: Block Diagram schematic of the setup used to measure the periodic non-linearity of the Attocube +#+RESULTS: +[[file:figs/block_diagram_lut_attocube.png]] + +The problem is to estimate the periodic non-linearity of the Attocube from the imperfect measurements $y_a$ and $y_g$. + +The wavelength of the Attocube is 1530nm, therefore the non-linearity has a period of 765nm. +The amplitude of the non-linearity can vary from one unit to the other (and maybe from one experimental condition to the other). +It is typically between 5nm peak to peak and 20nm peak to peak. + +** Matlab Init :noexport:ignore: +#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) +<> +#+end_src + +#+begin_src matlab :exports none :results silent :noweb yes +<> +#+end_src + +#+begin_src matlab :tangle no :noweb yes +<> +#+end_src + +#+begin_src matlab :eval no :noweb yes +<> +#+end_src + +#+begin_src matlab :noweb yes +<> +#+end_src + +** Simulations +We have some constrains on the way the motion is imposed and measured: +- We want the frequency content of the imposed motion to be at low frequency in order not to induce vibrations of the structure. + We have to make sure the forces applied by the piezoelectric actuator only moves the crystal and not the fast jack below. + Therefore, we have to move much slower than the first resonance frequency in the system. +- As both $y_a$ and $y_g$ should have rather small noise, we have to filter them with low pass filters. + The cut-off frequency of the low pass filter should be high as compared to the motion (to not induce any distortion) but still reducing sufficiently the noise. + Let's say we want the noise to be less than 1nm ($6 \sigma$). + +Suppose we have the power spectral density (PSD) of both $n_a$ and $n_g$. + +- [ ] Take the PSD of the Attocube +- [ ] Take the PSD of the strain gauge +- [ ] Using 2nd order low pass filter, estimate the required low pass filter cut-off frequency to have sufficiently low noise + +* 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/src/'); % Path for functions +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 +addpath('./src/'); % Path for functions +#+END_SRC + +** Initialize other elements +#+NAME: m-init-other +#+BEGIN_SRC matlab +%% Colors for the figures +colors = colororder; + +%% Frequency Vector +freqs = logspace(1, 3, 1000); +#+END_SRC + +* Bibliography :ignore: +#+latex: \printbibliography diff --git a/dcm_metrology.pdf b/dcm_metrology.pdf new file mode 100644 index 0000000..2f35946 Binary files /dev/null and b/dcm_metrology.pdf differ diff --git a/figs/block_diagram_lut_attocube.pdf b/figs/block_diagram_lut_attocube.pdf new file mode 100644 index 0000000..3bc660b Binary files /dev/null and b/figs/block_diagram_lut_attocube.pdf differ diff --git a/figs/block_diagram_lut_attocube.png b/figs/block_diagram_lut_attocube.png new file mode 100644 index 0000000..99afe55 Binary files /dev/null and b/figs/block_diagram_lut_attocube.png differ diff --git a/figs/block_diagram_lut_attocube.svg b/figs/block_diagram_lut_attocube.svg new file mode 100644 index 0000000..65cb006 --- /dev/null +++ b/figs/block_diagram_lut_attocube.svg @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/metrology_schematic.pdf b/figs/metrology_schematic.pdf new file mode 100644 index 0000000..4994665 Binary files /dev/null and b/figs/metrology_schematic.pdf differ diff --git a/figs/metrology_schematic.png b/figs/metrology_schematic.png new file mode 100644 index 0000000..6c616c3 Binary files /dev/null and b/figs/metrology_schematic.png differ diff --git a/figs/metrology_schematic.svg b/figs/metrology_schematic.svg new file mode 100644 index 0000000..6196c15 --- /dev/null +++ b/figs/metrology_schematic.svg @@ -0,0 +1,1574 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FirstCrystal + SecondCrystal + Metrology Frame + Metrology Frame + + + + + x + y + z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FirstCrystal + SecondCrystal + + + + + + + + + + + + + + + + + + + + + + "311" Crystals + "111" Crystals + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/schematic_sensor_jacobian_forward_kinematics_1.pdf b/figs/schematic_sensor_jacobian_forward_kinematics_1.pdf new file mode 100644 index 0000000..12ca50f Binary files /dev/null and b/figs/schematic_sensor_jacobian_forward_kinematics_1.pdf differ diff --git a/figs/schematic_sensor_jacobian_forward_kinematics_1.png b/figs/schematic_sensor_jacobian_forward_kinematics_1.png new file mode 100644 index 0000000..43c8eb7 Binary files /dev/null and b/figs/schematic_sensor_jacobian_forward_kinematics_1.png differ diff --git a/figs/schematic_sensor_jacobian_forward_kinematics_1.svg b/figs/schematic_sensor_jacobian_forward_kinematics_1.svg new file mode 100644 index 0000000..af307b1 --- /dev/null +++ b/figs/schematic_sensor_jacobian_forward_kinematics_1.svg @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/schematic_sensor_jacobian_forward_kinematics_2.pdf b/figs/schematic_sensor_jacobian_forward_kinematics_2.pdf new file mode 100644 index 0000000..8a3e334 Binary files /dev/null and b/figs/schematic_sensor_jacobian_forward_kinematics_2.pdf differ diff --git a/figs/schematic_sensor_jacobian_forward_kinematics_2.png b/figs/schematic_sensor_jacobian_forward_kinematics_2.png new file mode 100644 index 0000000..ada7b7d Binary files /dev/null and b/figs/schematic_sensor_jacobian_forward_kinematics_2.png differ diff --git a/figs/schematic_sensor_jacobian_forward_kinematics_2.svg b/figs/schematic_sensor_jacobian_forward_kinematics_2.svg new file mode 100644 index 0000000..4cc84a9 --- /dev/null +++ b/figs/schematic_sensor_jacobian_forward_kinematics_2.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/schematic_sensor_jacobian_forward_kinematics_h.pdf b/figs/schematic_sensor_jacobian_forward_kinematics_h.pdf new file mode 100644 index 0000000..6f12b10 Binary files /dev/null and b/figs/schematic_sensor_jacobian_forward_kinematics_h.pdf differ diff --git a/figs/schematic_sensor_jacobian_forward_kinematics_h.png b/figs/schematic_sensor_jacobian_forward_kinematics_h.png new file mode 100644 index 0000000..c0375ac Binary files /dev/null and b/figs/schematic_sensor_jacobian_forward_kinematics_h.png differ diff --git a/figs/schematic_sensor_jacobian_forward_kinematics_h.svg b/figs/schematic_sensor_jacobian_forward_kinematics_h.svg new file mode 100644 index 0000000..4340411 --- /dev/null +++ b/figs/schematic_sensor_jacobian_forward_kinematics_h.svg @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/schematic_sensor_jacobian_forward_kinematics_m.pdf b/figs/schematic_sensor_jacobian_forward_kinematics_m.pdf new file mode 100644 index 0000000..b47e7ce Binary files /dev/null and b/figs/schematic_sensor_jacobian_forward_kinematics_m.pdf differ diff --git a/figs/schematic_sensor_jacobian_forward_kinematics_m.png b/figs/schematic_sensor_jacobian_forward_kinematics_m.png new file mode 100644 index 0000000..ca2e11c Binary files /dev/null and b/figs/schematic_sensor_jacobian_forward_kinematics_m.png differ diff --git a/figs/schematic_sensor_jacobian_forward_kinematics_m.svg b/figs/schematic_sensor_jacobian_forward_kinematics_m.svg new file mode 100644 index 0000000..a497a85 --- /dev/null +++ b/figs/schematic_sensor_jacobian_forward_kinematics_m.svg @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ref.bib b/ref.bib new file mode 100644 index 0000000..ec616ff --- /dev/null +++ b/ref.bib @@ -0,0 +1,11 @@ +@article{fleming10_integ_strain_force_feedb_high, + author = {Fleming, Andrew J and Leang, Kam K}, + title = {Integrated Strain and Force Feedback for High-Performance + Control of Piezoelectric Actuators}, + journal = {Sensors and Actuators A: Physical}, + volume = 161, + number = {1-2}, + pages = {256--265}, + year = 2010, + publisher = {Elsevier} +}