Update study: cubic configuration, renew the function for generation
This commit is contained in:
parent
2914d01e8f
commit
7fb03f7b90
261
.gitignore
vendored
261
.gitignore
vendored
@ -1,2 +1,261 @@
|
|||||||
Figures/
|
mat/
|
||||||
|
figures/
|
||||||
|
ltximg/
|
||||||
slprj/
|
slprj/
|
||||||
|
*.autosave
|
||||||
|
*.original
|
||||||
|
old/
|
||||||
|
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# ============================================================
|
||||||
|
# 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
|
1349
cubic-configuration.html
Normal file
1349
cubic-configuration.html
Normal file
File diff suppressed because it is too large
Load Diff
607
cubic-configuration.org
Normal file
607
cubic-configuration.org
Normal file
@ -0,0 +1,607 @@
|
|||||||
|
#+TITLE: Cubic configuration for the Stewart Platform
|
||||||
|
:DRAWER:
|
||||||
|
#+STARTUP: overview
|
||||||
|
|
||||||
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="css/htmlize.css"/>
|
||||||
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="css/readtheorg.css"/>
|
||||||
|
#+HTML_HEAD: <script src="js/jquery.min.js"></script>
|
||||||
|
#+HTML_HEAD: <script src="js/bootstrap.min.js"></script>
|
||||||
|
#+HTML_HEAD: <script type="text/javascript" src="js/jquery.stickytableheaders.min.js"></script>
|
||||||
|
#+HTML_HEAD: <script type="text/javascript" src="js/readtheorg.js"></script>
|
||||||
|
|
||||||
|
#+LATEX_CLASS: cleanreport
|
||||||
|
#+LaTeX_CLASS_OPTIONS: [tocnp, secbreak, minted]
|
||||||
|
#+LaTeX_HEADER: \usepackage{svg}
|
||||||
|
#+LaTeX_HEADER: \newcommand{\authorFirstName}{Thomas}
|
||||||
|
#+LaTeX_HEADER: \newcommand{\authorLastName}{Dehaeze}
|
||||||
|
#+LaTeX_HEADER: \newcommand{\authorEmail}{dehaeze.thomas@gmail.com}
|
||||||
|
|
||||||
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
|
#+PROPERTY: header-args:matlab+ :exports both
|
||||||
|
#+PROPERTY: header-args:matlab+ :eval no-export
|
||||||
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
|
:END:
|
||||||
|
|
||||||
|
#+begin_src matlab :results none :exports none :noweb yes
|
||||||
|
<<matlab-init>>
|
||||||
|
addpath('src');
|
||||||
|
addpath('library');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
The discovery of the Cubic configuration is done in citenum:geng94_six_degree_of_freed_activ.
|
||||||
|
The specificity of the Cubic configuration is that each actuator is orthogonal with the others.
|
||||||
|
|
||||||
|
To generate and study the Cubic configuration, =initializeCubicConfiguration= is used (description in section [[sec:initializeCubicConfiguration]]).
|
||||||
|
|
||||||
|
* Questions we wish to answer with this analysis
|
||||||
|
The goal is to study the benefits of using a cubic configuration:
|
||||||
|
- Equal stiffness in all the degrees of freedom?
|
||||||
|
- No coupling between the actuators?
|
||||||
|
- Is the center of the cube an important point?
|
||||||
|
|
||||||
|
* Configuration Analysis - Stiffness Matrix
|
||||||
|
** Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center
|
||||||
|
We create a cubic Stewart platform (figure [[fig:3d-cubic-stewart-aligned]]) in such a way that the center of the cube (black dot) is located at the center of the Stewart platform (blue dot).
|
||||||
|
The Jacobian matrix is estimated at the location of the center of the cube.
|
||||||
|
|
||||||
|
#+name: fig:3d-cubic-stewart-aligned
|
||||||
|
#+caption: Centered cubic configuration
|
||||||
|
[[file:./figs/3d-cubic-stewart-aligned.png]]
|
||||||
|
|
||||||
|
#+begin_src matlab :results silent
|
||||||
|
opts = struct(...
|
||||||
|
'H_tot', 100, ... % Total height of the Hexapod [mm]
|
||||||
|
'L', 200/sqrt(3), ... % Size of the Cube [mm]
|
||||||
|
'H', 60, ... % Height between base joints and platform joints [mm]
|
||||||
|
'H0', 200/2-60/2 ... % Height between the corner of the cube and the plane containing the base joints [mm]
|
||||||
|
);
|
||||||
|
stewart = initializeCubicConfiguration(opts);
|
||||||
|
opts = struct(...
|
||||||
|
'Jd_pos', [0, 0, -50], ... % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]
|
||||||
|
'Jf_pos', [0, 0, -50] ... % Position of the Jacobian for force location from the top of the mobile platform [mm]
|
||||||
|
);
|
||||||
|
stewart = computeGeometricalProperties(stewart, opts);
|
||||||
|
|
||||||
|
save('./mat/stewart.mat', 'stewart');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none :exports code
|
||||||
|
K = stewart.Jd'*stewart.Jd;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results value table :exports results
|
||||||
|
data = K;
|
||||||
|
data2orgtable(data, {}, {}, ' %.2g ');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
| 2 | 1.9e-18 | -2.3e-17 | 1.8e-18 | 5.5e-17 | -1.5e-17 |
|
||||||
|
| 1.9e-18 | 2 | 6.8e-18 | -6.1e-17 | -1.6e-18 | 4.8e-18 |
|
||||||
|
| -2.3e-17 | 6.8e-18 | 2 | -6.7e-18 | 4.9e-18 | 5.3e-19 |
|
||||||
|
| 1.8e-18 | -6.1e-17 | -6.7e-18 | 0.0067 | -2.3e-20 | -6.1e-20 |
|
||||||
|
| 5.5e-17 | -1.6e-18 | 4.9e-18 | -2.3e-20 | 0.0067 | 1e-18 |
|
||||||
|
| -1.5e-17 | 4.8e-18 | 5.3e-19 | -6.1e-20 | 1e-18 | 0.027 |
|
||||||
|
|
||||||
|
** Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center
|
||||||
|
We create a cubic Stewart platform with center of the cube located at the center of the Stewart platform (figure [[fig:3d-cubic-stewart-aligned]]).
|
||||||
|
The Jacobian matrix is not estimated at the location of the center of the cube.
|
||||||
|
|
||||||
|
#+begin_src matlab :results silent
|
||||||
|
opts = struct(...
|
||||||
|
'H_tot', 100, ... % Total height of the Hexapod [mm]
|
||||||
|
'L', 200/sqrt(3), ... % Size of the Cube [mm]
|
||||||
|
'H', 60, ... % Height between base joints and platform joints [mm]
|
||||||
|
'H0', 200/2-60/2 ... % Height between the corner of the cube and the plane containing the base joints [mm]
|
||||||
|
);
|
||||||
|
stewart = initializeCubicConfiguration(opts);
|
||||||
|
opts = struct(...
|
||||||
|
'Jd_pos', [0, 0, 0], ... % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]
|
||||||
|
'Jf_pos', [0, 0, 0] ... % Position of the Jacobian for force location from the top of the mobile platform [mm]
|
||||||
|
);
|
||||||
|
stewart = computeGeometricalProperties(stewart, opts);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none :exports code
|
||||||
|
K = stewart.Jd'*stewart.Jd;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results value table :exports results
|
||||||
|
data = K;
|
||||||
|
data2orgtable(data', {}, {}, ' %.2g ');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
| 2 | 1.9e-18 | -2.3e-17 | 1.5e-18 | -0.1 | -1.5e-17 |
|
||||||
|
| 1.9e-18 | 2 | 6.8e-18 | 0.1 | -1.6e-18 | 4.8e-18 |
|
||||||
|
| -2.3e-17 | 6.8e-18 | 2 | -5.1e-19 | -5.5e-18 | 5.3e-19 |
|
||||||
|
| 1.5e-18 | 0.1 | -5.1e-19 | 0.012 | -3e-19 | 3.1e-19 |
|
||||||
|
| -0.1 | -1.6e-18 | -5.5e-18 | -3e-19 | 0.012 | 1.9e-18 |
|
||||||
|
| -1.5e-17 | 4.8e-18 | 5.3e-19 | 3.1e-19 | 1.9e-18 | 0.027 |
|
||||||
|
|
||||||
|
** Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center
|
||||||
|
Here, the "center" of the Stewart platform is not at the cube center (figure [[fig:3d-cubic-stewart-misaligned]]).
|
||||||
|
The Jacobian is estimated at the cube center.
|
||||||
|
|
||||||
|
#+name: fig:3d-cubic-stewart-misaligned
|
||||||
|
#+caption: Not centered cubic configuration
|
||||||
|
[[file:./figs/3d-cubic-stewart-misaligned.png]]
|
||||||
|
|
||||||
|
The center of the cube is at $z = 110$.
|
||||||
|
The Stewart platform is from $z = H_0 = 75$ to $z = H_0 + H_{tot} = 175$.
|
||||||
|
The center height of the Stewart platform is then at $z = \frac{175-75}{2} = 50$.
|
||||||
|
The center of the cube from the top platform is at $z = 110 - 175 = -65$.
|
||||||
|
|
||||||
|
#+begin_src matlab :results silent
|
||||||
|
opts = struct(...
|
||||||
|
'H_tot', 100, ... % Total height of the Hexapod [mm]
|
||||||
|
'L', 220/sqrt(3), ... % Size of the Cube [mm]
|
||||||
|
'H', 60, ... % Height between base joints and platform joints [mm]
|
||||||
|
'H0', 75 ... % Height between the corner of the cube and the plane containing the base joints [mm]
|
||||||
|
);
|
||||||
|
stewart = initializeCubicConfiguration(opts);
|
||||||
|
opts = struct(...
|
||||||
|
'Jd_pos', [0, 0, -65], ... % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]
|
||||||
|
'Jf_pos', [0, 0, -65] ... % Position of the Jacobian for force location from the top of the mobile platform [mm]
|
||||||
|
);
|
||||||
|
stewart = computeGeometricalProperties(stewart, opts);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none :exports code
|
||||||
|
K = stewart.Jd'*stewart.Jd;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results value table :exports results
|
||||||
|
data = K;
|
||||||
|
data2orgtable(data', {}, {}, ' %.2g ');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
| 2 | -1.8e-17 | 2.6e-17 | 3.3e-18 | 0.04 | 1.7e-19 |
|
||||||
|
| -1.8e-17 | 2 | 1.9e-16 | -0.04 | 2.2e-19 | -5.3e-19 |
|
||||||
|
| 2.6e-17 | 1.9e-16 | 2 | -8.9e-18 | 6.5e-19 | -5.8e-19 |
|
||||||
|
| 3.3e-18 | -0.04 | -8.9e-18 | 0.0089 | -9.3e-20 | 9.8e-20 |
|
||||||
|
| 0.04 | 2.2e-19 | 6.5e-19 | -9.3e-20 | 0.0089 | -2.4e-18 |
|
||||||
|
| 1.7e-19 | -5.3e-19 | -5.8e-19 | 9.8e-20 | -2.4e-18 | 0.032 |
|
||||||
|
|
||||||
|
We obtain $k_x = k_y = k_z$ and $k_{\theta_x} = k_{\theta_y}$, but the Stiffness matrix is not diagonal.
|
||||||
|
|
||||||
|
** Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center
|
||||||
|
Here, the "center" of the Stewart platform is not at the cube center.
|
||||||
|
The Jacobian is estimated at the center of the Stewart platform.
|
||||||
|
|
||||||
|
The center of the cube is at $z = 110$.
|
||||||
|
The Stewart platform is from $z = H_0 = 75$ to $z = H_0 + H_{tot} = 175$.
|
||||||
|
The center height of the Stewart platform is then at $z = \frac{175-75}{2} = 50$.
|
||||||
|
The center of the cube from the top platform is at $z = 110 - 175 = -65$.
|
||||||
|
|
||||||
|
#+begin_src matlab :results silent
|
||||||
|
opts = struct(...
|
||||||
|
'H_tot', 100, ... % Total height of the Hexapod [mm]
|
||||||
|
'L', 220/sqrt(3), ... % Size of the Cube [mm]
|
||||||
|
'H', 60, ... % Height between base joints and platform joints [mm]
|
||||||
|
'H0', 75 ... % Height between the corner of the cube and the plane containing the base joints [mm]
|
||||||
|
);
|
||||||
|
stewart = initializeCubicConfiguration(opts);
|
||||||
|
opts = struct(...
|
||||||
|
'Jd_pos', [0, 0, -60], ... % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]
|
||||||
|
'Jf_pos', [0, 0, -60] ... % Position of the Jacobian for force location from the top of the mobile platform [mm]
|
||||||
|
);
|
||||||
|
stewart = computeGeometricalProperties(stewart, opts);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none :exports code
|
||||||
|
K = stewart.Jd'*stewart.Jd;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results value table :exports results
|
||||||
|
data = K;
|
||||||
|
data2orgtable(data', {}, {}, ' %.2g ');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
| 2 | -1.8e-17 | 2.6e-17 | -5.7e-19 | 0.03 | 1.7e-19 |
|
||||||
|
| -1.8e-17 | 2 | 1.9e-16 | -0.03 | 2.2e-19 | -5.3e-19 |
|
||||||
|
| 2.6e-17 | 1.9e-16 | 2 | -1.5e-17 | 6.5e-19 | -5.8e-19 |
|
||||||
|
| -5.7e-19 | -0.03 | -1.5e-17 | 0.0085 | 4.9e-20 | 1.7e-19 |
|
||||||
|
| 0.03 | 2.2e-19 | 6.5e-19 | 4.9e-20 | 0.0085 | -1.1e-18 |
|
||||||
|
| 1.7e-19 | -5.3e-19 | -5.8e-19 | 1.7e-19 | -1.1e-18 | 0.032 |
|
||||||
|
|
||||||
|
We obtain $k_x = k_y = k_z$ and $k_{\theta_x} = k_{\theta_y}$, but the Stiffness matrix is not diagonal.
|
||||||
|
|
||||||
|
** Conclusion
|
||||||
|
#+begin_important
|
||||||
|
- The cubic configuration permits to have $k_x = k_y = k_z$ and $k_{\theta\x} = k_{\theta_y}$
|
||||||
|
- The stiffness matrix $K$ is diagonal for the cubic configuration if the Stewart platform and the cube are centered *and* the Jacobian is estimated at the cube center
|
||||||
|
#+end_important
|
||||||
|
|
||||||
|
* Cubic size analysis
|
||||||
|
We here study the effect of the size of the cube used for the Stewart configuration.
|
||||||
|
|
||||||
|
We fix the height of the Stewart platform, the center of the cube is at the center of the Stewart platform.
|
||||||
|
|
||||||
|
We only vary the size of the cube.
|
||||||
|
|
||||||
|
#+begin_src matlab :results silent
|
||||||
|
H_cubes = 250:20:350;
|
||||||
|
stewarts = {zeros(length(H_cubes), 1)};
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results silent
|
||||||
|
for i = 1:length(H_cubes)
|
||||||
|
H_cube = H_cubes(i);
|
||||||
|
H_tot = 100;
|
||||||
|
H = 80;
|
||||||
|
|
||||||
|
opts = struct(...
|
||||||
|
'H_tot', H_tot, ... % Total height of the Hexapod [mm]
|
||||||
|
'L', H_cube/sqrt(3), ... % Size of the Cube [mm]
|
||||||
|
'H', H, ... % Height between base joints and platform joints [mm]
|
||||||
|
'H0', H_cube/2-H/2 ... % Height between the corner of the cube and the plane containing the base joints [mm]
|
||||||
|
);
|
||||||
|
stewart = initializeCubicConfiguration(opts);
|
||||||
|
|
||||||
|
opts = struct(...
|
||||||
|
'Jd_pos', [0, 0, H_cube/2-opts.H0-opts.H_tot], ... % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]
|
||||||
|
'Jf_pos', [0, 0, H_cube/2-opts.H0-opts.H_tot] ... % Position of the Jacobian for force location from the top of the mobile platform [mm]
|
||||||
|
);
|
||||||
|
stewart = computeGeometricalProperties(stewart, opts);
|
||||||
|
stewarts(i) = {stewart};
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
|
The Stiffness matrix is computed for all generated Stewart platforms.
|
||||||
|
#+begin_src matlab :results none :exports code
|
||||||
|
Ks = zeros(6, 6, length(H_cube));
|
||||||
|
for i = 1:length(H_cubes)
|
||||||
|
Ks(:, :, i) = stewarts{i}.Jd'*stewarts{i}.Jd;
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
The only elements of $K$ that vary are $k_{\theta_x} = k_{\theta_y}$ and $k_{\theta_z}$.
|
||||||
|
|
||||||
|
Finally, we plot $k_{\theta_x} = k_{\theta_y}$ and $k_{\theta_z}$
|
||||||
|
#+begin_src matlab :results none :exports code
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
plot(H_cubes, squeeze(Ks(4, 4, :)), 'DisplayName', '$k_{\theta_x}$');
|
||||||
|
plot(H_cubes, squeeze(Ks(6, 6, :)), 'DisplayName', '$k_{\theta_z}$');
|
||||||
|
hold off;
|
||||||
|
legend('location', 'northwest');
|
||||||
|
xlabel('Cube Size [mm]'); ylabel('Rotational stiffnes [normalized]');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+NAME: fig:stiffness_cube_size
|
||||||
|
#+HEADER: :tangle no :exports results :results raw :noweb yes
|
||||||
|
#+begin_src matlab :var filepath="figs/stiffness_cube_size.pdf" :var figsize="normal-normal" :post pdf2svg(file=*this*, ext="png")
|
||||||
|
<<plt-matlab>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+NAME: fig:stiffness_cube_size
|
||||||
|
#+CAPTION: $k_{\theta_x} = k_{\theta_y}$ and $k_{\theta_z}$ function of the size of the cube
|
||||||
|
#+RESULTS: fig:stiffness_cube_size
|
||||||
|
[[file:figs/stiffness_cube_size.png]]
|
||||||
|
|
||||||
|
|
||||||
|
We observe that $k_{\theta_x} = k_{\theta_y}$ and $k_{\theta_z}$ increase linearly with the cube size.
|
||||||
|
|
||||||
|
#+begin_important
|
||||||
|
In order to maximize the rotational stiffness of the Stewart platform, the size of the cube should be the highest possible.
|
||||||
|
In that case, the legs will the further separated. Size of the cube is then limited by allowed space.
|
||||||
|
#+end_important
|
||||||
|
|
||||||
|
* initializeCubicConfiguration
|
||||||
|
:PROPERTIES:
|
||||||
|
:HEADER-ARGS:matlab+: :exports code
|
||||||
|
:HEADER-ARGS:matlab+: :comments no
|
||||||
|
:HEADER-ARGS:matlab+: :eval no
|
||||||
|
:HEADER-ARGS:matlab+: :tangle src/initializeCubicConfiguration.m
|
||||||
|
:END:
|
||||||
|
<<sec:initializeCubicConfiguration>>
|
||||||
|
|
||||||
|
** Function description
|
||||||
|
#+begin_src matlab
|
||||||
|
function [stewart] = initializeCubicConfiguration(opts_param)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Optional Parameters
|
||||||
|
Default values for opts.
|
||||||
|
#+begin_src matlab
|
||||||
|
opts = struct(...
|
||||||
|
'H_tot', 90, ... % Total height of the Hexapod [mm]
|
||||||
|
'L', 110, ... % Size of the Cube [mm]
|
||||||
|
'H', 40, ... % Height between base joints and platform joints [mm]
|
||||||
|
'H0', 75 ... % Height between the corner of the cube and the plane containing the base joints [mm]
|
||||||
|
);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Populate opts with input parameters
|
||||||
|
#+begin_src matlab
|
||||||
|
if exist('opts_param','var')
|
||||||
|
for opt = fieldnames(opts_param)'
|
||||||
|
opts.(opt{1}) = opts_param.(opt{1});
|
||||||
|
end
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Cube Creation
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
points = [0, 0, 0; ...
|
||||||
|
0, 0, 1; ...
|
||||||
|
0, 1, 0; ...
|
||||||
|
0, 1, 1; ...
|
||||||
|
1, 0, 0; ...
|
||||||
|
1, 0, 1; ...
|
||||||
|
1, 1, 0; ...
|
||||||
|
1, 1, 1];
|
||||||
|
points = opts.L*points;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
We create the rotation matrix to rotate the cube
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
sx = cross([1, 1, 1], [1 0 0]);
|
||||||
|
sx = sx/norm(sx);
|
||||||
|
|
||||||
|
sy = -cross(sx, [1, 1, 1]);
|
||||||
|
sy = sy/norm(sy);
|
||||||
|
|
||||||
|
sz = [1, 1, 1];
|
||||||
|
sz = sz/norm(sz);
|
||||||
|
|
||||||
|
R = [sx', sy', sz']';
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
We use to rotation matrix to rotate the cube
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
cube = zeros(size(points));
|
||||||
|
for i = 1:size(points, 1)
|
||||||
|
cube(i, :) = R * points(i, :)';
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Vectors of each leg
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
leg_indices = [3, 4; ...
|
||||||
|
2, 4; ...
|
||||||
|
2, 6; ...
|
||||||
|
5, 6; ...
|
||||||
|
5, 7; ...
|
||||||
|
3, 7];
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Vectors are:
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
legs = zeros(6, 3);
|
||||||
|
legs_start = zeros(6, 3);
|
||||||
|
|
||||||
|
for i = 1:6
|
||||||
|
legs(i, :) = cube(leg_indices(i, 2), :) - cube(leg_indices(i, 1), :);
|
||||||
|
legs_start(i, :) = cube(leg_indices(i, 1), :);
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Verification of Height of the Stewart Platform
|
||||||
|
If the Stewart platform is not contained in the cube, throw an error.
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
Hmax = cube(4, 3) - cube(2, 3);
|
||||||
|
if opts.H0 < cube(2, 3)
|
||||||
|
error(sprintf('H0 is not high enought. Minimum H0 = %.1f', cube(2, 3)));
|
||||||
|
else if opts.H0 + opts.H > cube(4, 3)
|
||||||
|
error(sprintf('H0+H is too high. Maximum H0+H = %.1f', cube(4, 3)));
|
||||||
|
error('H0+H is too high');
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Determinate the location of the joints
|
||||||
|
We now determine the location of the joints on the fixed platform w.r.t the fixed frame $\{A\}$.
|
||||||
|
$\{A\}$ is fixed to the bottom of the base.
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
Aa = zeros(6, 3);
|
||||||
|
for i = 1:6
|
||||||
|
t = (opts.H0-legs_start(i, 3))/(legs(i, 3));
|
||||||
|
Aa(i, :) = legs_start(i, :) + t*legs(i, :);
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And the location of the joints on the mobile platform with respect to $\{A\}$.
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
Ab = zeros(6, 3);
|
||||||
|
for i = 1:6
|
||||||
|
t = (opts.H0+opts.H-legs_start(i, 3))/(legs(i, 3));
|
||||||
|
Ab(i, :) = legs_start(i, :) + t*legs(i, :);
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And the location of the joints on the mobile platform with respect to $\{B\}$.
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
Bb = zeros(6, 3);
|
||||||
|
Bb = Ab - (opts.H0 + opts.H_tot/2 + opts.H/2)*[0, 0, 1];
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
h = opts.H0 + opts.H/2 - opts.H_tot/2;
|
||||||
|
Aa = Aa - h*[0, 0, 1];
|
||||||
|
Ab = Ab - h*[0, 0, 1];
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Returns Stewart Structure
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
stewart = struct();
|
||||||
|
stewart.Aa = Aa;
|
||||||
|
stewart.Ab = Ab;
|
||||||
|
stewart.Bb = Bb;
|
||||||
|
stewart.H_tot = opts.H_tot;
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Tests
|
||||||
|
** First attempt to parametrisation
|
||||||
|
#+name: fig:stewart_bottom_plate
|
||||||
|
#+caption: Schematic of the bottom plates with all the parameters
|
||||||
|
[[file:./figs/stewart_bottom_plate.png]]
|
||||||
|
|
||||||
|
The goal is to choose $\alpha$, $\beta$, $R_\text{leg, t}$ and $R_\text{leg, b}$ in such a way that the configuration is cubic.
|
||||||
|
|
||||||
|
|
||||||
|
The configuration is cubic if:
|
||||||
|
\[ \overrightarrow{a_i b_i} \cdot \overrightarrow{a_j b_j} = 0, \ \forall i, j = [1, \hdots, 6], i \ne j \]
|
||||||
|
|
||||||
|
Lets express $a_i$, $b_i$ and $a_j$:
|
||||||
|
\begin{equation*}
|
||||||
|
a_1 = \begin{bmatrix}R_{\text{leg,b}} \cos(120 - \alpha) \\ R_{\text{leg,b}} \cos(120 - \alpha) \\ 0\end{bmatrix} ; \quad
|
||||||
|
a_2 = \begin{bmatrix}R_{\text{leg,b}} \cos(120 + \alpha) \\ R_{\text{leg,b}} \cos(120 + \alpha) \\ 0\end{bmatrix} ; \quad
|
||||||
|
\end{equation*}
|
||||||
|
|
||||||
|
\begin{equation*}
|
||||||
|
b_1 = \begin{bmatrix}R_{\text{leg,t}} \cos(120 - \beta) \\ R_{\text{leg,t}} \cos(120 - \beta\\ H\end{bmatrix} ; \quad
|
||||||
|
b_2 = \begin{bmatrix}R_{\text{leg,t}} \cos(120 + \beta) \\ R_{\text{leg,t}} \cos(120 + \beta\\ H\end{bmatrix} ; \quad
|
||||||
|
\end{equation*}
|
||||||
|
|
||||||
|
\[ \overrightarrow{a_1 b_1} = b_1 - a_1 = \begin{bmatrix}R_{\text{leg}} \cos(120 - \alpha) \\ R_{\text{leg}} \cos(120 - \alpha) \\ 0\end{bmatrix}\]
|
||||||
|
|
||||||
|
** Second attempt
|
||||||
|
We start with the point of a cube in space:
|
||||||
|
\begin{align*}
|
||||||
|
[0, 0, 0] ; \ [0, 0, 1]; \ ...
|
||||||
|
\end{align*}
|
||||||
|
|
||||||
|
We also want the cube to point upward:
|
||||||
|
\[ [1, 1, 1] \Rightarrow [0, 0, 1] \]
|
||||||
|
|
||||||
|
Then we have the direction of all the vectors expressed in the frame of the hexapod.
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
points = [0, 0, 0; ...
|
||||||
|
0, 0, 1; ...
|
||||||
|
0, 1, 0; ...
|
||||||
|
0, 1, 1; ...
|
||||||
|
1, 0, 0; ...
|
||||||
|
1, 0, 1; ...
|
||||||
|
1, 1, 0; ...
|
||||||
|
1, 1, 1];
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
figure;
|
||||||
|
plot3(points(:,1), points(:,2), points(:,3), 'ko')
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
sx = cross([1, 1, 1], [1 0 0]);
|
||||||
|
sx = sx/norm(sx);
|
||||||
|
|
||||||
|
sy = -cross(sx, [1, 1, 1]);
|
||||||
|
sy = sy/norm(sy);
|
||||||
|
|
||||||
|
sz = [1, 1, 1];
|
||||||
|
sz = sz/norm(sz);
|
||||||
|
|
||||||
|
R = [sx', sy', sz']';
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
cube = zeros(size(points));
|
||||||
|
for i = 1:size(points, 1)
|
||||||
|
cube(i, :) = R * points(i, :)';
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
plot3(points(:,1), points(:,2), points(:,3), 'ko');
|
||||||
|
plot3(cube(:,1), cube(:,2), cube(:,3), 'ro');
|
||||||
|
hold off;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Now we plot the legs of the hexapod.
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
leg_indices = [3, 4; ...
|
||||||
|
2, 4; ...
|
||||||
|
2, 6; ...
|
||||||
|
5, 6; ...
|
||||||
|
5, 7; ...
|
||||||
|
3, 7]
|
||||||
|
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
for i = 1:6
|
||||||
|
plot3(cube(leg_indices(i, :),1), cube(leg_indices(i, :),2), cube(leg_indices(i, :),3), '-');
|
||||||
|
end
|
||||||
|
hold off;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Vectors are:
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
legs = zeros(6, 3);
|
||||||
|
legs_start = zeros(6, 3);
|
||||||
|
|
||||||
|
for i = 1:6
|
||||||
|
legs(i, :) = cube(leg_indices(i, 2), :) - cube(leg_indices(i, 1), :);
|
||||||
|
legs_start(i, :) = cube(leg_indices(i, 1), :)
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
We now have the orientation of each leg.
|
||||||
|
|
||||||
|
We here want to see if the position of the "slice" changes something.
|
||||||
|
|
||||||
|
Let's first estimate the maximum height of the Stewart platform.
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
Hmax = cube(4, 3) - cube(2, 3);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Let's then estimate the middle position of the platform
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
Hmid = cube(8, 3)/2;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Generate the Stewart platform for a Cubic configuration
|
||||||
|
|
||||||
|
First we defined the height of the Hexapod.
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
H = Hmax/2;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
Zs = 1.2*cube(2, 3); % Height of the fixed platform
|
||||||
|
Ze = Zs + H; % Height of the mobile platform
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
We now determine the location of the joints on the fixed platform.
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
Aa = zeros(6, 3);
|
||||||
|
for i = 1:6
|
||||||
|
t = (Zs-legs_start(i, 3))/(legs(i, 3));
|
||||||
|
Aa(i, :) = legs_start(i, :) + t*legs(i, :);
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And the location of the joints on the mobile platform
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
Ab = zeros(6, 3);
|
||||||
|
for i = 1:6
|
||||||
|
t = (Ze-legs_start(i, 3))/(legs(i, 3));
|
||||||
|
Ab(i, :) = legs_start(i, :) + t*legs(i, :);
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And we plot the legs.
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
for i = 1:6
|
||||||
|
plot3([Ab(i, 1),Aa(i, 1)], [Ab(i, 2),Aa(i, 2)], [Ab(i, 3),Aa(i, 3)], 'k-');
|
||||||
|
end
|
||||||
|
hold off;
|
||||||
|
xlim([-1, 1]);
|
||||||
|
ylim([-1, 1]);
|
||||||
|
zlim([0, 2]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Bibliography :ignore:
|
||||||
|
bibliographystyle:unsrt
|
||||||
|
bibliography:references.bib
|
BIN
figs/3d-cubic-stewart-aligned.png
Normal file
BIN
figs/3d-cubic-stewart-aligned.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
BIN
figs/3d-cubic-stewart-misaligned.png
Normal file
BIN
figs/3d-cubic-stewart-misaligned.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
BIN
figs/stiffness_cube_size.pdf
Normal file
BIN
figs/stiffness_cube_size.pdf
Normal file
Binary file not shown.
BIN
figs/stiffness_cube_size.png
Normal file
BIN
figs/stiffness_cube_size.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
113
figs/stiffness_cube_size.svg
Normal file
113
figs/stiffness_cube_size.svg
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="281pt" height="179pt" viewBox="0 0 281 179" version="1.2">
|
||||||
|
<g id="surface1">
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 38.890625 147.613281 L 271.476562 147.613281 L 271.476562 4.308594 L 38.890625 4.308594 Z M 38.890625 147.613281 "/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(85.15625%,85.15625%,85.15625%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.90625 313.867188 L 388.90625 1746.875 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(85.15625%,85.15625%,85.15625%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1551.835938 313.867188 L 1551.835938 1746.875 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(85.15625%,85.15625%,85.15625%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2714.765625 313.867188 L 2714.765625 1746.875 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(85.15625%,85.15625%,85.15625%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2714.765625 313.867188 L 388.90625 313.867188 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(85.15625%,85.15625%,85.15625%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2714.765625 664.804688 L 388.90625 664.804688 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(85.15625%,85.15625%,85.15625%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2714.765625 1015.742188 L 388.90625 1015.742188 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(85.15625%,85.15625%,85.15625%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2714.765625 1366.71875 L 388.90625 1366.71875 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(85.15625%,85.15625%,85.15625%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2714.765625 1717.65625 L 388.90625 1717.65625 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.90625 313.867188 L 2714.765625 313.867188 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.90625 1746.875 L 2714.765625 1746.875 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.90625 313.867188 L 388.90625 337.109375 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1551.835938 313.867188 L 1551.835938 337.109375 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2714.765625 313.867188 L 2714.765625 337.109375 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.90625 1746.875 L 388.90625 1723.632812 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1551.835938 1746.875 L 1551.835938 1723.632812 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2714.765625 1746.875 L 2714.765625 1723.632812 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 31.890625 160.019531 L 31.890625 159.75 C 31.890625 159.730469 31.894531 159.710938 31.90625 159.691406 L 33.484375 157.949219 C 33.722656 157.691406 33.914062 157.476562 34.0625 157.300781 C 34.207031 157.128906 34.355469 156.925781 34.503906 156.699219 C 34.648438 156.472656 34.765625 156.242188 34.847656 156.007812 C 34.929688 155.769531 34.972656 155.519531 34.972656 155.253906 C 34.972656 154.980469 34.921875 154.714844 34.816406 154.460938 C 34.714844 154.207031 34.5625 154.003906 34.359375 153.855469 C 34.160156 153.703125 33.914062 153.628906 33.625 153.628906 C 33.332031 153.628906 33.070312 153.71875 32.835938 153.894531 C 32.597656 154.070312 32.433594 154.296875 32.34375 154.578125 C 32.367188 154.570312 32.402344 154.566406 32.449219 154.566406 C 32.597656 154.566406 32.730469 154.617188 32.835938 154.71875 C 32.945312 154.820312 32.996094 154.953125 32.996094 155.117188 C 32.996094 155.269531 32.945312 155.402344 32.835938 155.507812 C 32.730469 155.613281 32.597656 155.667969 32.449219 155.667969 C 32.289062 155.667969 32.160156 155.613281 32.050781 155.503906 C 31.945312 155.394531 31.890625 155.265625 31.890625 155.117188 C 31.890625 154.863281 31.9375 154.625 32.035156 154.402344 C 32.128906 154.179688 32.265625 153.980469 32.449219 153.808594 C 32.628906 153.632812 32.832031 153.5 33.054688 153.410156 C 33.28125 153.316406 33.523438 153.273438 33.777344 153.273438 C 34.160156 153.273438 34.519531 153.355469 34.851562 153.519531 C 35.1875 153.683594 35.453125 153.914062 35.644531 154.210938 C 35.839844 154.507812 35.933594 154.855469 35.933594 155.253906 C 35.933594 155.550781 35.871094 155.832031 35.742188 156.09375 C 35.613281 156.359375 35.449219 156.597656 35.25 156.8125 C 35.050781 157.027344 34.792969 157.269531 34.476562 157.542969 C 34.164062 157.820312 33.957031 158.003906 33.859375 158.09375 L 32.710938 159.199219 L 33.683594 159.199219 C 34.164062 159.199219 34.566406 159.195312 34.886719 159.1875 C 35.207031 159.179688 35.375 159.164062 35.394531 159.144531 C 35.476562 159.0625 35.558594 158.753906 35.640625 158.214844 L 35.933594 158.214844 L 35.648438 160.019531 L 31.890625 160.019531 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 37.265625 158.863281 C 37.335938 159.0625 37.445312 159.242188 37.585938 159.40625 C 37.730469 159.566406 37.898438 159.695312 38.097656 159.785156 C 38.292969 159.875 38.5 159.917969 38.710938 159.917969 C 39.199219 159.917969 39.535156 159.730469 39.71875 159.351562 C 39.902344 158.972656 39.992188 158.511719 39.992188 157.972656 C 39.992188 157.738281 39.988281 157.539062 39.980469 157.382812 C 39.972656 157.21875 39.953125 157.066406 39.917969 156.917969 C 39.855469 156.679688 39.742188 156.472656 39.585938 156.292969 C 39.425781 156.117188 39.234375 156.027344 39.007812 156.027344 C 38.78125 156.027344 38.585938 156.0625 38.421875 156.132812 C 38.257812 156.203125 38.125 156.285156 38.023438 156.375 C 37.921875 156.46875 37.832031 156.5625 37.753906 156.664062 C 37.675781 156.765625 37.625 156.820312 37.605469 156.828125 L 37.488281 156.828125 C 37.472656 156.828125 37.453125 156.820312 37.429688 156.796875 C 37.402344 156.777344 37.390625 156.753906 37.390625 156.734375 L 37.390625 153.351562 C 37.390625 153.335938 37.402344 153.316406 37.421875 153.296875 C 37.445312 153.28125 37.46875 153.273438 37.488281 153.273438 L 37.519531 153.273438 C 37.976562 153.492188 38.460938 153.601562 38.96875 153.601562 C 39.472656 153.601562 39.957031 153.492188 40.421875 153.273438 L 40.449219 153.273438 C 40.472656 153.273438 40.496094 153.28125 40.515625 153.296875 C 40.535156 153.316406 40.542969 153.335938 40.542969 153.351562 L 40.542969 153.449219 C 40.542969 153.476562 40.535156 153.496094 40.519531 153.496094 C 40.289062 153.804688 40 154.042969 39.652344 154.210938 C 39.304688 154.382812 38.945312 154.46875 38.574219 154.46875 C 38.304688 154.46875 38.027344 154.429688 37.742188 154.355469 L 37.742188 156.265625 C 37.96875 156.085938 38.167969 155.957031 38.34375 155.878906 C 38.523438 155.800781 38.746094 155.761719 39.019531 155.761719 C 39.390625 155.761719 39.722656 155.871094 40.019531 156.085938 C 40.316406 156.300781 40.539062 156.578125 40.699219 156.921875 C 40.855469 157.265625 40.9375 157.617188 40.9375 157.976562 C 40.9375 158.386719 40.835938 158.761719 40.636719 159.105469 C 40.4375 159.453125 40.167969 159.726562 39.824219 159.933594 C 39.484375 160.140625 39.113281 160.242188 38.710938 160.242188 C 38.378906 160.242188 38.070312 160.15625 37.792969 159.984375 C 37.511719 159.8125 37.292969 159.582031 37.132812 159.292969 C 36.972656 159.003906 36.890625 158.695312 36.890625 158.367188 C 36.890625 158.214844 36.941406 158.089844 37.042969 157.992188 C 37.140625 157.898438 37.265625 157.847656 37.414062 157.847656 C 37.5625 157.847656 37.6875 157.898438 37.785156 157.996094 C 37.886719 158.09375 37.933594 158.21875 37.933594 158.367188 C 37.933594 158.511719 37.886719 158.632812 37.785156 158.734375 C 37.6875 158.835938 37.5625 158.886719 37.414062 158.886719 C 37.390625 158.886719 37.363281 158.882812 37.335938 158.878906 C 37.304688 158.871094 37.28125 158.867188 37.265625 158.863281 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 43.921875 160.242188 C 43.09375 160.242188 42.53125 159.902344 42.234375 159.21875 C 41.9375 158.535156 41.789062 157.726562 41.789062 156.789062 C 41.789062 156.203125 41.839844 155.652344 41.945312 155.132812 C 42.050781 154.613281 42.265625 154.175781 42.582031 153.8125 C 42.902344 153.453125 43.347656 153.273438 43.921875 153.273438 C 44.367188 153.273438 44.730469 153.378906 45.015625 153.597656 C 45.296875 153.8125 45.515625 154.09375 45.664062 154.441406 C 45.8125 154.785156 45.914062 155.15625 45.96875 155.546875 C 46.023438 155.941406 46.050781 156.355469 46.050781 156.789062 C 46.050781 157.371094 45.996094 157.914062 45.890625 158.421875 C 45.78125 158.925781 45.570312 159.355469 45.257812 159.710938 C 44.945312 160.066406 44.5 160.242188 43.921875 160.242188 Z M 43.921875 159.976562 C 44.296875 159.976562 44.578125 159.785156 44.761719 159.398438 C 44.949219 159.015625 45.0625 158.589844 45.105469 158.117188 C 45.148438 157.648438 45.171875 157.152344 45.171875 156.625 C 45.171875 156.117188 45.148438 155.648438 45.105469 155.21875 C 45.0625 154.792969 44.949219 154.40625 44.765625 154.058594 C 44.582031 153.710938 44.300781 153.535156 43.921875 153.535156 C 43.539062 153.535156 43.257812 153.710938 43.074219 154.058594 C 42.890625 154.410156 42.777344 154.796875 42.730469 155.222656 C 42.691406 155.648438 42.667969 156.117188 42.667969 156.625 C 42.667969 157 42.675781 157.355469 42.695312 157.6875 C 42.710938 158.023438 42.761719 158.367188 42.839844 158.71875 C 42.914062 159.074219 43.042969 159.371094 43.222656 159.613281 C 43.398438 159.855469 43.632812 159.976562 43.921875 159.976562 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 148.644531 159.238281 C 148.804688 159.46875 149.015625 159.640625 149.28125 159.75 C 149.550781 159.863281 149.835938 159.917969 150.140625 159.917969 C 150.535156 159.917969 150.816406 159.75 150.980469 159.417969 C 151.144531 159.082031 151.226562 158.703125 151.226562 158.277344 C 151.226562 158.085938 151.207031 157.894531 151.171875 157.703125 C 151.136719 157.511719 151.078125 157.332031 150.996094 157.167969 C 150.914062 157.003906 150.800781 156.875 150.660156 156.773438 C 150.515625 156.675781 150.34375 156.625 150.136719 156.625 L 149.460938 156.625 C 149.402344 156.625 149.371094 156.59375 149.371094 156.53125 L 149.371094 156.441406 C 149.371094 156.386719 149.402344 156.359375 149.460938 156.359375 L 150.019531 156.320312 C 150.257812 156.320312 150.453125 156.230469 150.609375 156.054688 C 150.765625 155.875 150.878906 155.65625 150.953125 155.402344 C 151.023438 155.148438 151.0625 154.902344 151.0625 154.671875 C 151.0625 154.347656 150.984375 154.082031 150.835938 153.875 C 150.683594 153.667969 150.453125 153.566406 150.140625 153.566406 C 149.882812 153.566406 149.636719 153.613281 149.40625 153.710938 C 149.171875 153.808594 148.984375 153.957031 148.847656 154.152344 C 148.859375 154.148438 148.875 154.144531 148.882812 154.144531 C 148.894531 154.144531 148.902344 154.144531 148.914062 154.144531 C 149.066406 154.144531 149.195312 154.199219 149.296875 154.304688 C 149.398438 154.410156 149.449219 154.535156 149.449219 154.683594 C 149.449219 154.828125 149.398438 154.953125 149.296875 155.058594 C 149.195312 155.164062 149.066406 155.21875 148.914062 155.21875 C 148.769531 155.21875 148.640625 155.164062 148.535156 155.058594 C 148.429688 154.953125 148.378906 154.828125 148.378906 154.683594 C 148.378906 154.390625 148.464844 154.136719 148.636719 153.925781 C 148.8125 153.710938 149.035156 153.550781 149.3125 153.4375 C 149.585938 153.328125 149.863281 153.273438 150.140625 153.273438 C 150.347656 153.273438 150.566406 153.300781 150.792969 153.363281 C 151.019531 153.421875 151.222656 153.511719 151.40625 153.625 C 151.589844 153.742188 151.742188 153.886719 151.859375 154.066406 C 151.976562 154.242188 152.035156 154.445312 152.035156 154.671875 C 152.035156 154.953125 151.972656 155.214844 151.84375 155.457031 C 151.71875 155.699219 151.542969 155.90625 151.320312 156.082031 C 151.101562 156.257812 150.859375 156.386719 150.597656 156.472656 C 150.890625 156.527344 151.171875 156.636719 151.433594 156.804688 C 151.695312 156.96875 151.910156 157.179688 152.070312 157.4375 C 152.230469 157.691406 152.308594 157.96875 152.308594 158.265625 C 152.308594 158.640625 152.207031 158.980469 152.003906 159.28125 C 151.796875 159.582031 151.527344 159.816406 151.195312 159.984375 C 150.863281 160.15625 150.511719 160.242188 150.140625 160.242188 C 149.824219 160.242188 149.507812 160.179688 149.1875 160.058594 C 148.871094 159.9375 148.609375 159.757812 148.410156 159.515625 C 148.207031 159.277344 148.105469 158.988281 148.105469 158.652344 C 148.105469 158.484375 148.164062 158.34375 148.273438 158.234375 C 148.386719 158.121094 148.523438 158.066406 148.691406 158.066406 C 148.804688 158.066406 148.902344 158.09375 148.992188 158.144531 C 149.082031 158.195312 149.152344 158.265625 149.203125 158.355469 C 149.253906 158.449219 149.28125 158.546875 149.28125 158.652344 C 149.28125 158.816406 149.222656 158.957031 149.105469 159.070312 C 148.992188 159.183594 148.855469 159.238281 148.691406 159.238281 L 148.644531 159.238281 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 155.214844 160.242188 C 154.386719 160.242188 153.820312 159.902344 153.523438 159.21875 C 153.226562 158.535156 153.078125 157.726562 153.078125 156.789062 C 153.078125 156.203125 153.132812 155.652344 153.238281 155.132812 C 153.34375 154.613281 153.554688 154.175781 153.875 153.8125 C 154.191406 153.453125 154.640625 153.273438 155.214844 153.273438 C 155.660156 153.273438 156.023438 153.378906 156.304688 153.597656 C 156.589844 153.8125 156.804688 154.09375 156.953125 154.441406 C 157.101562 154.785156 157.203125 155.15625 157.257812 155.546875 C 157.3125 155.941406 157.339844 156.355469 157.339844 156.789062 C 157.339844 157.371094 157.289062 157.914062 157.179688 158.421875 C 157.074219 158.925781 156.863281 159.355469 156.550781 159.710938 C 156.238281 160.066406 155.792969 160.242188 155.214844 160.242188 Z M 155.214844 159.976562 C 155.589844 159.976562 155.867188 159.785156 156.054688 159.398438 C 156.238281 159.015625 156.355469 158.589844 156.398438 158.117188 C 156.441406 157.648438 156.460938 157.152344 156.460938 156.625 C 156.460938 156.117188 156.441406 155.648438 156.398438 155.21875 C 156.355469 154.792969 156.242188 154.40625 156.058594 154.058594 C 155.875 153.710938 155.59375 153.535156 155.214844 153.535156 C 154.828125 153.535156 154.546875 153.710938 154.363281 154.058594 C 154.179688 154.410156 154.066406 154.796875 154.023438 155.222656 C 153.980469 155.648438 153.960938 156.117188 153.960938 156.625 C 153.960938 157 153.96875 157.355469 153.984375 157.6875 C 154.003906 158.023438 154.050781 158.367188 154.128906 158.71875 C 154.207031 159.074219 154.335938 159.371094 154.511719 159.613281 C 154.691406 159.855469 154.925781 159.976562 155.214844 159.976562 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 160.214844 160.242188 C 159.386719 160.242188 158.824219 159.902344 158.527344 159.21875 C 158.230469 158.535156 158.082031 157.726562 158.082031 156.789062 C 158.082031 156.203125 158.132812 155.652344 158.238281 155.132812 C 158.34375 154.613281 158.558594 154.175781 158.875 153.8125 C 159.195312 153.453125 159.640625 153.273438 160.214844 153.273438 C 160.660156 153.273438 161.023438 153.378906 161.308594 153.597656 C 161.59375 153.8125 161.808594 154.09375 161.957031 154.441406 C 162.105469 154.785156 162.207031 155.15625 162.261719 155.546875 C 162.316406 155.941406 162.34375 156.355469 162.34375 156.789062 C 162.34375 157.371094 162.289062 157.914062 162.183594 158.421875 C 162.074219 158.925781 161.863281 159.355469 161.550781 159.710938 C 161.238281 160.066406 160.792969 160.242188 160.214844 160.242188 Z M 160.214844 159.976562 C 160.589844 159.976562 160.871094 159.785156 161.054688 159.398438 C 161.242188 159.015625 161.355469 158.589844 161.398438 158.117188 C 161.441406 157.648438 161.464844 157.152344 161.464844 156.625 C 161.464844 156.117188 161.441406 155.648438 161.398438 155.21875 C 161.355469 154.792969 161.242188 154.40625 161.058594 154.058594 C 160.875 153.710938 160.59375 153.535156 160.214844 153.535156 C 159.832031 153.535156 159.550781 153.710938 159.363281 154.058594 C 159.183594 154.410156 159.066406 154.796875 159.023438 155.222656 C 158.980469 155.648438 158.960938 156.117188 158.960938 156.625 C 158.960938 157 158.96875 157.355469 158.988281 157.6875 C 159.003906 158.023438 159.054688 158.367188 159.132812 158.71875 C 159.210938 159.074219 159.335938 159.371094 159.515625 159.613281 C 159.691406 159.855469 159.925781 159.976562 160.214844 159.976562 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 264.9375 159.238281 C 265.097656 159.46875 265.308594 159.640625 265.574219 159.75 C 265.84375 159.863281 266.128906 159.917969 266.433594 159.917969 C 266.828125 159.917969 267.109375 159.75 267.273438 159.417969 C 267.4375 159.082031 267.519531 158.703125 267.519531 158.277344 C 267.519531 158.085938 267.5 157.894531 267.464844 157.703125 C 267.429688 157.511719 267.371094 157.332031 267.289062 157.167969 C 267.207031 157.003906 267.097656 156.875 266.953125 156.773438 C 266.808594 156.675781 266.636719 156.625 266.429688 156.625 L 265.753906 156.625 C 265.695312 156.625 265.664062 156.59375 265.664062 156.53125 L 265.664062 156.441406 C 265.664062 156.386719 265.695312 156.359375 265.753906 156.359375 L 266.3125 156.320312 C 266.550781 156.320312 266.746094 156.230469 266.902344 156.054688 C 267.058594 155.875 267.171875 155.65625 267.246094 155.402344 C 267.316406 155.148438 267.355469 154.902344 267.355469 154.671875 C 267.355469 154.347656 267.277344 154.082031 267.128906 153.875 C 266.976562 153.667969 266.746094 153.566406 266.433594 153.566406 C 266.175781 153.566406 265.929688 153.613281 265.699219 153.710938 C 265.464844 153.808594 265.277344 153.957031 265.140625 154.152344 C 265.152344 154.148438 265.167969 154.144531 265.175781 154.144531 C 265.1875 154.144531 265.195312 154.144531 265.210938 154.144531 C 265.359375 154.144531 265.488281 154.199219 265.589844 154.304688 C 265.691406 154.410156 265.742188 154.535156 265.742188 154.683594 C 265.742188 154.828125 265.691406 154.953125 265.589844 155.058594 C 265.488281 155.164062 265.359375 155.21875 265.210938 155.21875 C 265.0625 155.21875 264.933594 155.164062 264.828125 155.058594 C 264.722656 154.953125 264.671875 154.828125 264.671875 154.683594 C 264.671875 154.390625 264.757812 154.136719 264.929688 153.925781 C 265.105469 153.710938 265.328125 153.550781 265.605469 153.4375 C 265.878906 153.328125 266.15625 153.273438 266.433594 153.273438 C 266.640625 153.273438 266.859375 153.300781 267.085938 153.363281 C 267.3125 153.421875 267.515625 153.511719 267.699219 153.625 C 267.882812 153.742188 268.035156 153.886719 268.152344 154.066406 C 268.269531 154.242188 268.328125 154.445312 268.328125 154.671875 C 268.328125 154.953125 268.265625 155.214844 268.136719 155.457031 C 268.011719 155.699219 267.835938 155.90625 267.613281 156.082031 C 267.394531 156.257812 267.152344 156.386719 266.890625 156.472656 C 267.183594 156.527344 267.464844 156.636719 267.726562 156.804688 C 267.988281 156.96875 268.203125 157.179688 268.363281 157.4375 C 268.523438 157.691406 268.601562 157.96875 268.601562 158.265625 C 268.601562 158.640625 268.5 158.980469 268.296875 159.28125 C 268.089844 159.582031 267.820312 159.816406 267.488281 159.984375 C 267.15625 160.15625 266.804688 160.242188 266.433594 160.242188 C 266.117188 160.242188 265.800781 160.179688 265.480469 160.058594 C 265.164062 159.9375 264.902344 159.757812 264.703125 159.515625 C 264.5 159.277344 264.398438 158.988281 264.398438 158.652344 C 264.398438 158.484375 264.457031 158.34375 264.566406 158.234375 C 264.679688 158.121094 264.816406 158.066406 264.984375 158.066406 C 265.097656 158.066406 265.195312 158.09375 265.285156 158.144531 C 265.375 158.195312 265.445312 158.265625 265.496094 158.355469 C 265.546875 158.449219 265.574219 158.546875 265.574219 158.652344 C 265.574219 158.816406 265.515625 158.957031 265.398438 159.070312 C 265.285156 159.183594 265.144531 159.238281 264.984375 159.238281 L 264.9375 159.238281 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 269.855469 158.863281 C 269.921875 159.0625 270.03125 159.242188 270.171875 159.40625 C 270.316406 159.566406 270.484375 159.695312 270.683594 159.785156 C 270.878906 159.875 271.085938 159.917969 271.296875 159.917969 C 271.785156 159.917969 272.121094 159.730469 272.304688 159.351562 C 272.488281 158.972656 272.578125 158.511719 272.578125 157.972656 C 272.578125 157.738281 272.574219 157.539062 272.566406 157.382812 C 272.558594 157.21875 272.539062 157.066406 272.503906 156.917969 C 272.441406 156.679688 272.328125 156.472656 272.171875 156.292969 C 272.011719 156.117188 271.820312 156.027344 271.59375 156.027344 C 271.367188 156.027344 271.171875 156.0625 271.007812 156.132812 C 270.84375 156.203125 270.710938 156.285156 270.609375 156.375 C 270.507812 156.46875 270.417969 156.5625 270.339844 156.664062 C 270.261719 156.765625 270.214844 156.820312 270.191406 156.828125 L 270.074219 156.828125 C 270.0625 156.828125 270.039062 156.820312 270.015625 156.796875 C 269.988281 156.777344 269.976562 156.753906 269.976562 156.734375 L 269.976562 153.351562 C 269.976562 153.335938 269.988281 153.316406 270.007812 153.296875 C 270.03125 153.28125 270.054688 153.273438 270.074219 153.273438 L 270.105469 153.273438 C 270.5625 153.492188 271.046875 153.601562 271.554688 153.601562 C 272.058594 153.601562 272.542969 153.492188 273.007812 153.273438 L 273.035156 153.273438 C 273.058594 153.273438 273.082031 153.28125 273.101562 153.296875 C 273.121094 153.316406 273.128906 153.335938 273.128906 153.351562 L 273.128906 153.449219 C 273.128906 153.476562 273.121094 153.496094 273.105469 153.496094 C 272.875 153.804688 272.585938 154.042969 272.238281 154.210938 C 271.890625 154.382812 271.53125 154.46875 271.160156 154.46875 C 270.890625 154.46875 270.613281 154.429688 270.328125 154.355469 L 270.328125 156.265625 C 270.554688 156.085938 270.757812 155.957031 270.933594 155.878906 C 271.109375 155.800781 271.332031 155.761719 271.605469 155.761719 C 271.976562 155.761719 272.308594 155.871094 272.605469 156.085938 C 272.898438 156.300781 273.128906 156.578125 273.285156 156.921875 C 273.445312 157.265625 273.523438 157.617188 273.523438 157.976562 C 273.523438 158.386719 273.421875 158.761719 273.222656 159.105469 C 273.023438 159.453125 272.753906 159.726562 272.410156 159.933594 C 272.070312 160.140625 271.699219 160.242188 271.296875 160.242188 C 270.964844 160.242188 270.65625 160.15625 270.378906 159.984375 C 270.097656 159.8125 269.878906 159.582031 269.71875 159.292969 C 269.558594 159.003906 269.476562 158.695312 269.476562 158.367188 C 269.476562 158.214844 269.527344 158.089844 269.628906 157.992188 C 269.726562 157.898438 269.851562 157.847656 270 157.847656 C 270.148438 157.847656 270.273438 157.898438 270.371094 157.996094 C 270.472656 158.09375 270.519531 158.21875 270.519531 158.367188 C 270.519531 158.511719 270.472656 158.632812 270.371094 158.734375 C 270.273438 158.835938 270.148438 158.886719 270 158.886719 C 269.976562 158.886719 269.949219 158.882812 269.921875 158.878906 C 269.890625 158.871094 269.867188 158.867188 269.855469 158.863281 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 276.507812 160.242188 C 275.679688 160.242188 275.117188 159.902344 274.820312 159.21875 C 274.523438 158.535156 274.375 157.726562 274.375 156.789062 C 274.375 156.203125 274.425781 155.652344 274.53125 155.132812 C 274.636719 154.613281 274.851562 154.175781 275.167969 153.8125 C 275.488281 153.453125 275.933594 153.273438 276.507812 153.273438 C 276.953125 153.273438 277.316406 153.378906 277.601562 153.597656 C 277.886719 153.8125 278.101562 154.09375 278.25 154.441406 C 278.398438 154.785156 278.5 155.15625 278.554688 155.546875 C 278.609375 155.941406 278.636719 156.355469 278.636719 156.789062 C 278.636719 157.371094 278.582031 157.914062 278.476562 158.421875 C 278.367188 158.925781 278.15625 159.355469 277.84375 159.710938 C 277.53125 160.066406 277.085938 160.242188 276.507812 160.242188 Z M 276.507812 159.976562 C 276.882812 159.976562 277.164062 159.785156 277.347656 159.398438 C 277.535156 159.015625 277.648438 158.589844 277.691406 158.117188 C 277.734375 157.648438 277.757812 157.152344 277.757812 156.625 C 277.757812 156.117188 277.734375 155.648438 277.691406 155.21875 C 277.648438 154.792969 277.535156 154.40625 277.351562 154.058594 C 277.167969 153.710938 276.886719 153.535156 276.507812 153.535156 C 276.125 153.535156 275.84375 153.710938 275.65625 154.058594 C 275.476562 154.410156 275.359375 154.796875 275.316406 155.222656 C 275.273438 155.648438 275.253906 156.117188 275.253906 156.625 C 275.253906 157 275.261719 157.355469 275.28125 157.6875 C 275.296875 158.023438 275.347656 158.367188 275.425781 158.71875 C 275.503906 159.074219 275.628906 159.371094 275.808594 159.613281 C 275.984375 159.855469 276.21875 159.976562 276.507812 159.976562 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 119.605469 172.703125 C 119.855469 173.015625 120.164062 173.261719 120.539062 173.449219 C 120.910156 173.632812 121.292969 173.722656 121.691406 173.722656 C 122.027344 173.722656 122.339844 173.65625 122.628906 173.523438 C 122.914062 173.390625 123.164062 173.207031 123.378906 172.964844 C 123.597656 172.726562 123.761719 172.457031 123.875 172.15625 C 123.992188 171.855469 124.050781 171.539062 124.050781 171.207031 C 124.050781 171.148438 124.078125 171.121094 124.144531 171.121094 L 124.277344 171.121094 C 124.332031 171.121094 124.359375 171.15625 124.359375 171.226562 C 124.359375 171.605469 124.285156 171.972656 124.144531 172.324219 C 123.996094 172.679688 123.792969 172.988281 123.527344 173.257812 C 123.261719 173.523438 122.953125 173.730469 122.609375 173.882812 C 122.265625 174.03125 121.902344 174.105469 121.527344 174.105469 C 121.007812 174.105469 120.515625 174 120.050781 173.789062 C 119.585938 173.574219 119.179688 173.289062 118.835938 172.917969 C 118.488281 172.550781 118.21875 172.128906 118.027344 171.648438 C 117.832031 171.167969 117.734375 170.667969 117.734375 170.148438 C 117.734375 169.625 117.832031 169.121094 118.027344 168.640625 C 118.21875 168.160156 118.488281 167.734375 118.835938 167.367188 C 119.179688 166.996094 119.585938 166.707031 120.050781 166.5 C 120.515625 166.292969 121.007812 166.191406 121.527344 166.191406 C 121.898438 166.191406 122.253906 166.273438 122.59375 166.433594 C 122.933594 166.597656 123.234375 166.824219 123.492188 167.117188 L 124.125 166.226562 C 124.164062 166.203125 124.1875 166.191406 124.195312 166.191406 L 124.277344 166.191406 C 124.296875 166.191406 124.316406 166.199219 124.332031 166.21875 C 124.351562 166.234375 124.359375 166.257812 124.359375 166.285156 L 124.359375 169.222656 C 124.359375 169.285156 124.332031 169.316406 124.277344 169.316406 L 124.078125 169.316406 C 124.011719 169.316406 123.980469 169.285156 123.980469 169.222656 C 123.980469 169.011719 123.9375 168.777344 123.851562 168.519531 C 123.769531 168.261719 123.660156 168.015625 123.53125 167.78125 C 123.402344 167.550781 123.253906 167.34375 123.089844 167.167969 C 122.679688 166.773438 122.214844 166.578125 121.6875 166.578125 C 121.285156 166.578125 120.898438 166.667969 120.535156 166.847656 C 120.167969 167.027344 119.859375 167.277344 119.605469 167.597656 C 119.339844 167.9375 119.15625 168.324219 119.054688 168.757812 C 118.953125 169.191406 118.902344 169.65625 118.902344 170.148438 C 118.902344 170.640625 118.953125 171.105469 119.054688 171.539062 C 119.15625 171.976562 119.339844 172.363281 119.605469 172.703125 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 126.246094 172.566406 L 126.246094 170.164062 C 126.246094 169.96875 126.21875 169.828125 126.15625 169.742188 C 126.101562 169.65625 126.015625 169.605469 125.90625 169.585938 C 125.796875 169.566406 125.628906 169.554688 125.394531 169.554688 L 125.394531 169.175781 L 127.042969 169.058594 L 127.042969 172.566406 C 127.042969 172.851562 127.0625 173.070312 127.105469 173.226562 C 127.144531 173.386719 127.234375 173.503906 127.367188 173.582031 C 127.496094 173.660156 127.710938 173.699219 127.996094 173.699219 C 128.390625 173.699219 128.699219 173.535156 128.929688 173.210938 C 129.160156 172.882812 129.277344 172.511719 129.277344 172.097656 L 129.277344 170.164062 C 129.277344 169.96875 129.246094 169.828125 129.1875 169.742188 C 129.125 169.65625 129.039062 169.605469 128.933594 169.585938 C 128.824219 169.566406 128.65625 169.554688 128.425781 169.554688 L 128.425781 169.175781 L 130.066406 169.058594 L 130.066406 172.871094 C 130.066406 173.0625 130.097656 173.203125 130.15625 173.292969 C 130.214844 173.378906 130.296875 173.433594 130.40625 173.453125 C 130.515625 173.472656 130.6875 173.480469 130.917969 173.480469 L 130.917969 173.863281 L 129.304688 173.988281 L 129.304688 173.066406 C 129.171875 173.339844 128.984375 173.5625 128.746094 173.730469 C 128.507812 173.902344 128.238281 173.988281 127.945312 173.988281 C 127.425781 173.988281 127.011719 173.875 126.707031 173.65625 C 126.398438 173.433594 126.246094 173.074219 126.246094 172.566406 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 132.316406 173.863281 L 132.316406 167.425781 C 132.316406 167.230469 132.289062 167.089844 132.230469 167.003906 C 132.171875 166.914062 132.089844 166.859375 131.976562 166.839844 C 131.867188 166.820312 131.699219 166.8125 131.46875 166.8125 L 131.46875 166.429688 L 133.078125 166.3125 L 133.078125 169.71875 C 133.199219 169.585938 133.339844 169.46875 133.5 169.367188 C 133.660156 169.265625 133.835938 169.1875 134.019531 169.136719 C 134.203125 169.082031 134.390625 169.058594 134.582031 169.058594 C 134.90625 169.058594 135.207031 169.121094 135.488281 169.253906 C 135.765625 169.382812 136.007812 169.566406 136.214844 169.796875 C 136.417969 170.027344 136.578125 170.289062 136.695312 170.589844 C 136.808594 170.886719 136.867188 171.195312 136.867188 171.511719 C 136.867188 171.953125 136.757812 172.363281 136.546875 172.742188 C 136.328125 173.125 136.039062 173.425781 135.667969 173.648438 C 135.300781 173.875 134.890625 173.988281 134.445312 173.988281 C 134.171875 173.988281 133.90625 173.914062 133.644531 173.773438 C 133.386719 173.628906 133.171875 173.445312 133.003906 173.210938 L 132.636719 173.863281 Z M 133.109375 172.796875 C 133.230469 173.0625 133.40625 173.28125 133.632812 173.449219 C 133.859375 173.613281 134.109375 173.699219 134.386719 173.699219 C 134.761719 173.699219 135.066406 173.589844 135.296875 173.375 C 135.527344 173.15625 135.6875 172.886719 135.78125 172.554688 C 135.871094 172.226562 135.917969 171.878906 135.917969 171.511719 C 135.917969 170.902344 135.839844 170.4375 135.683594 170.117188 C 135.613281 169.976562 135.515625 169.847656 135.394531 169.726562 C 135.269531 169.605469 135.132812 169.507812 134.980469 169.441406 C 134.832031 169.371094 134.671875 169.339844 134.503906 169.339844 C 134.214844 169.339844 133.945312 169.414062 133.699219 169.570312 C 133.449219 169.722656 133.253906 169.929688 133.109375 170.1875 L 133.109375 172.796875 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 140.3125 173.988281 C 139.871094 173.988281 139.46875 173.871094 139.097656 173.636719 C 138.730469 173.40625 138.4375 173.09375 138.226562 172.707031 C 138.015625 172.320312 137.910156 171.910156 137.910156 171.476562 C 137.910156 171.050781 138.007812 170.648438 138.199219 170.269531 C 138.390625 169.886719 138.65625 169.578125 139.003906 169.339844 C 139.351562 169.105469 139.734375 168.988281 140.160156 168.988281 C 140.492188 168.988281 140.78125 169.042969 141.027344 169.152344 C 141.277344 169.265625 141.480469 169.421875 141.640625 169.621094 C 141.800781 169.820312 141.921875 170.050781 142 170.320312 C 142.078125 170.585938 142.121094 170.882812 142.121094 171.207031 C 142.121094 171.300781 142.082031 171.347656 142.007812 171.347656 L 138.859375 171.347656 L 138.859375 171.464844 C 138.859375 172.066406 138.980469 172.585938 139.222656 173.015625 C 139.464844 173.449219 139.863281 173.664062 140.414062 173.664062 C 140.636719 173.664062 140.84375 173.613281 141.03125 173.519531 C 141.222656 173.417969 141.386719 173.28125 141.523438 173.105469 C 141.664062 172.925781 141.757812 172.738281 141.808594 172.53125 C 141.816406 172.507812 141.828125 172.488281 141.851562 172.46875 C 141.871094 172.449219 141.890625 172.4375 141.914062 172.4375 L 142.007812 172.4375 C 142.082031 172.4375 142.121094 172.484375 142.121094 172.578125 C 142.019531 172.988281 141.796875 173.328125 141.457031 173.589844 C 141.117188 173.855469 140.734375 173.988281 140.3125 173.988281 Z M 138.871094 171.078125 L 141.351562 171.078125 C 141.351562 170.804688 141.3125 170.53125 141.238281 170.25 C 141.160156 169.96875 141.035156 169.738281 140.855469 169.550781 C 140.679688 169.367188 140.445312 169.273438 140.160156 169.273438 C 139.753906 169.273438 139.433594 169.464844 139.210938 169.851562 C 138.984375 170.238281 138.871094 170.644531 138.871094 171.078125 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 146.773438 174.015625 L 146.773438 171.476562 C 146.773438 171.421875 146.808594 171.394531 146.875 171.394531 L 147.003906 171.394531 C 147.027344 171.394531 147.046875 171.40625 147.0625 171.421875 C 147.082031 171.4375 147.089844 171.457031 147.089844 171.476562 C 147.089844 172.1875 147.3125 172.742188 147.75 173.132812 C 148.191406 173.527344 148.769531 173.722656 149.484375 173.722656 C 149.738281 173.722656 149.96875 173.648438 150.183594 173.503906 C 150.394531 173.355469 150.5625 173.167969 150.679688 172.929688 C 150.796875 172.699219 150.855469 172.453125 150.855469 172.199219 C 150.855469 171.980469 150.808594 171.765625 150.722656 171.558594 C 150.632812 171.351562 150.507812 171.171875 150.339844 171.019531 C 150.175781 170.867188 149.988281 170.765625 149.777344 170.714844 L 148.363281 170.375 C 147.898438 170.25 147.515625 169.996094 147.21875 169.609375 C 146.921875 169.226562 146.773438 168.796875 146.773438 168.320312 C 146.773438 167.945312 146.871094 167.589844 147.0625 167.261719 C 147.253906 166.929688 147.511719 166.667969 147.835938 166.476562 C 148.160156 166.285156 148.507812 166.191406 148.886719 166.191406 C 149.609375 166.191406 150.1875 166.4375 150.613281 166.929688 L 151.066406 166.226562 C 151.085938 166.203125 151.109375 166.191406 151.136719 166.191406 L 151.210938 166.191406 C 151.230469 166.191406 151.25 166.199219 151.269531 166.21875 C 151.289062 166.234375 151.300781 166.257812 151.300781 166.285156 L 151.300781 168.804688 C 151.300781 168.871094 151.269531 168.90625 151.210938 168.90625 L 151.082031 168.90625 C 151.015625 168.90625 150.984375 168.871094 150.984375 168.804688 C 150.984375 168.621094 150.953125 168.417969 150.890625 168.203125 C 150.828125 167.980469 150.742188 167.773438 150.632812 167.570312 C 150.523438 167.363281 150.402344 167.199219 150.273438 167.074219 C 149.925781 166.71875 149.464844 166.542969 148.886719 166.542969 C 148.640625 166.542969 148.410156 166.605469 148.203125 166.734375 C 147.992188 166.859375 147.824219 167.03125 147.699219 167.246094 C 147.574219 167.460938 147.511719 167.6875 147.511719 167.925781 C 147.511719 168.238281 147.609375 168.519531 147.804688 168.773438 C 147.996094 169.023438 148.25 169.191406 148.5625 169.273438 L 149.976562 169.621094 C 150.210938 169.675781 150.429688 169.777344 150.636719 169.925781 C 150.84375 170.074219 151.015625 170.242188 151.152344 170.4375 C 151.289062 170.632812 151.398438 170.847656 151.476562 171.085938 C 151.554688 171.328125 151.59375 171.574219 151.59375 171.828125 C 151.59375 172.21875 151.503906 172.589844 151.324219 172.941406 C 151.144531 173.289062 150.890625 173.570312 150.5625 173.785156 C 150.234375 173.996094 149.871094 174.105469 149.484375 174.105469 C 149.246094 174.105469 149 174.078125 148.746094 174.023438 C 148.496094 173.972656 148.261719 173.890625 148.050781 173.777344 C 147.835938 173.667969 147.644531 173.523438 147.472656 173.355469 L 147.015625 174.070312 C 146.996094 174.09375 146.96875 174.105469 146.933594 174.105469 L 146.875 174.105469 C 146.808594 174.105469 146.773438 174.074219 146.773438 174.015625 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 152.613281 173.863281 L 152.613281 173.480469 C 152.863281 173.480469 153.066406 173.460938 153.226562 173.425781 C 153.382812 173.386719 153.464844 173.289062 153.464844 173.136719 L 153.464844 170.164062 C 153.464844 169.886719 153.410156 169.714844 153.300781 169.652344 C 153.195312 169.585938 152.980469 169.554688 152.660156 169.554688 L 152.660156 169.175781 L 154.230469 169.058594 L 154.230469 173.136719 C 154.230469 173.289062 154.296875 173.386719 154.433594 173.425781 C 154.570312 173.460938 154.757812 173.480469 154.984375 173.480469 L 154.984375 173.863281 Z M 153.074219 167.1875 C 153.074219 167.027344 153.136719 166.886719 153.257812 166.765625 C 153.378906 166.644531 153.515625 166.582031 153.667969 166.582031 C 153.773438 166.582031 153.871094 166.609375 153.96875 166.664062 C 154.066406 166.71875 154.140625 166.796875 154.191406 166.890625 C 154.246094 166.988281 154.269531 167.085938 154.269531 167.1875 C 154.269531 167.34375 154.210938 167.480469 154.089844 167.601562 C 153.96875 167.71875 153.828125 167.78125 153.667969 167.78125 C 153.515625 167.78125 153.378906 167.71875 153.257812 167.601562 C 153.136719 167.480469 153.074219 167.34375 153.074219 167.1875 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 155.761719 173.863281 C 155.679688 173.863281 155.640625 173.824219 155.640625 173.742188 L 155.640625 173.65625 C 155.640625 173.625 155.648438 173.601562 155.667969 173.582031 L 158.703125 169.460938 L 157.730469 169.460938 C 157.425781 169.460938 157.167969 169.480469 156.96875 169.519531 C 156.765625 169.558594 156.601562 169.632812 156.472656 169.738281 C 156.34375 169.847656 156.25 169.996094 156.191406 170.183594 C 156.132812 170.375 156.101562 170.636719 156.101562 170.96875 L 155.792969 170.96875 L 155.914062 169.175781 L 159.554688 169.175781 C 159.589844 169.175781 159.617188 169.1875 159.640625 169.210938 C 159.660156 169.234375 159.671875 169.261719 159.671875 169.296875 L 159.671875 169.355469 C 159.671875 169.378906 159.667969 169.40625 159.65625 169.433594 L 156.613281 173.550781 L 157.648438 173.550781 C 157.96875 173.550781 158.230469 173.53125 158.441406 173.496094 C 158.652344 173.457031 158.832031 173.363281 158.980469 173.210938 C 159.117188 173.074219 159.210938 172.886719 159.261719 172.652344 C 159.3125 172.421875 159.355469 172.132812 159.386719 171.789062 L 159.695312 171.789062 L 159.507812 173.863281 L 155.761719 173.863281 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 162.933594 173.988281 C 162.492188 173.988281 162.085938 173.871094 161.71875 173.636719 C 161.347656 173.40625 161.058594 173.09375 160.847656 172.707031 C 160.636719 172.320312 160.53125 171.910156 160.53125 171.476562 C 160.53125 171.050781 160.625 170.648438 160.816406 170.269531 C 161.007812 169.886719 161.277344 169.578125 161.625 169.339844 C 161.96875 169.105469 162.355469 168.988281 162.78125 168.988281 C 163.113281 168.988281 163.402344 169.042969 163.648438 169.152344 C 163.894531 169.265625 164.097656 169.421875 164.257812 169.621094 C 164.417969 169.820312 164.539062 170.050781 164.617188 170.320312 C 164.699219 170.585938 164.738281 170.882812 164.738281 171.207031 C 164.738281 171.300781 164.703125 171.347656 164.628906 171.347656 L 161.480469 171.347656 L 161.480469 171.464844 C 161.480469 172.066406 161.601562 172.585938 161.84375 173.015625 C 162.085938 173.449219 162.480469 173.664062 163.035156 173.664062 C 163.257812 173.664062 163.460938 173.613281 163.652344 173.519531 C 163.839844 173.417969 164.003906 173.28125 164.144531 173.105469 C 164.28125 172.925781 164.378906 172.738281 164.429688 172.53125 C 164.4375 172.507812 164.449219 172.488281 164.46875 172.46875 C 164.488281 172.449219 164.511719 172.4375 164.535156 172.4375 L 164.628906 172.4375 C 164.703125 172.4375 164.738281 172.484375 164.738281 172.578125 C 164.636719 172.988281 164.417969 173.328125 164.078125 173.589844 C 163.738281 173.855469 163.355469 173.988281 162.933594 173.988281 Z M 161.492188 171.078125 L 163.972656 171.078125 C 163.972656 170.804688 163.933594 170.53125 163.855469 170.25 C 163.78125 169.96875 163.652344 169.738281 163.476562 169.550781 C 163.296875 169.367188 163.066406 169.273438 162.78125 169.273438 C 162.371094 169.273438 162.054688 169.464844 161.828125 169.851562 C 161.605469 170.238281 161.492188 170.644531 161.492188 171.078125 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 170.066406 176.582031 L 170.066406 165.703125 L 171.558594 165.703125 L 171.558594 166.136719 L 170.507812 166.136719 L 170.507812 176.148438 L 171.558594 176.148438 L 171.558594 176.582031 L 170.066406 176.582031 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 172.164062 173.863281 L 172.164062 173.480469 C 172.414062 173.480469 172.617188 173.460938 172.777344 173.425781 C 172.933594 173.386719 173.011719 173.289062 173.011719 173.136719 L 173.011719 170.164062 C 173.011719 169.96875 172.984375 169.828125 172.925781 169.742188 C 172.867188 169.65625 172.78125 169.605469 172.671875 169.585938 C 172.5625 169.566406 172.394531 169.554688 172.164062 169.554688 L 172.164062 169.175781 L 173.738281 169.058594 L 173.738281 170.117188 C 173.890625 169.804688 174.105469 169.550781 174.390625 169.351562 C 174.675781 169.15625 174.988281 169.058594 175.324219 169.058594 C 176.15625 169.058594 176.644531 169.398438 176.796875 170.078125 C 176.9375 169.773438 177.152344 169.527344 177.429688 169.339844 C 177.710938 169.152344 178.015625 169.058594 178.347656 169.058594 C 178.675781 169.058594 178.953125 169.109375 179.179688 169.214844 C 179.40625 169.320312 179.578125 169.484375 179.691406 169.703125 C 179.804688 169.921875 179.859375 170.195312 179.859375 170.523438 L 179.859375 173.136719 C 179.859375 173.289062 179.941406 173.386719 180.101562 173.425781 C 180.261719 173.460938 180.464844 173.480469 180.710938 173.480469 L 180.710938 173.863281 L 178.21875 173.863281 L 178.21875 173.480469 C 178.464844 173.480469 178.667969 173.460938 178.828125 173.425781 C 178.988281 173.386719 179.066406 173.289062 179.066406 173.136719 L 179.066406 170.550781 C 179.066406 170.1875 179.015625 169.894531 178.914062 169.671875 C 178.808594 169.449219 178.597656 169.339844 178.277344 169.339844 C 177.859375 169.339844 177.515625 169.507812 177.242188 169.84375 C 176.972656 170.179688 176.835938 170.5625 176.835938 170.992188 L 176.835938 173.136719 C 176.835938 173.289062 176.914062 173.386719 177.074219 173.425781 C 177.230469 173.460938 177.433594 173.480469 177.683594 173.480469 L 177.683594 173.863281 L 175.195312 173.863281 L 175.195312 173.480469 C 175.441406 173.480469 175.644531 173.460938 175.804688 173.425781 C 175.964844 173.386719 176.042969 173.289062 176.042969 173.136719 L 176.042969 170.550781 C 176.042969 170.199219 175.992188 169.910156 175.890625 169.679688 C 175.785156 169.453125 175.574219 169.339844 175.257812 169.339844 C 174.835938 169.339844 174.488281 169.507812 174.21875 169.84375 C 173.945312 170.179688 173.8125 170.5625 173.8125 170.992188 L 173.8125 173.136719 C 173.8125 173.289062 173.890625 173.386719 174.050781 173.425781 C 174.210938 173.460938 174.414062 173.480469 174.65625 173.480469 L 174.65625 173.863281 L 172.164062 173.863281 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 181.335938 173.863281 L 181.335938 173.480469 C 181.585938 173.480469 181.789062 173.460938 181.945312 173.425781 C 182.105469 173.386719 182.183594 173.289062 182.183594 173.136719 L 182.183594 170.164062 C 182.183594 169.96875 182.152344 169.828125 182.097656 169.742188 C 182.035156 169.65625 181.953125 169.605469 181.84375 169.585938 C 181.734375 169.566406 181.5625 169.554688 181.335938 169.554688 L 181.335938 169.175781 L 182.910156 169.058594 L 182.910156 170.117188 C 183.058594 169.804688 183.277344 169.550781 183.5625 169.351562 C 183.847656 169.15625 184.15625 169.058594 184.492188 169.058594 C 185.324219 169.058594 185.816406 169.398438 185.964844 170.078125 C 186.109375 169.773438 186.320312 169.527344 186.601562 169.339844 C 186.878906 169.152344 187.1875 169.058594 187.519531 169.058594 C 187.847656 169.058594 188.121094 169.109375 188.351562 169.214844 C 188.578125 169.320312 188.746094 169.484375 188.859375 169.703125 C 188.972656 169.921875 189.03125 170.195312 189.03125 170.523438 L 189.03125 173.136719 C 189.03125 173.289062 189.109375 173.386719 189.269531 173.425781 C 189.429688 173.460938 189.632812 173.480469 189.878906 173.480469 L 189.878906 173.863281 L 187.390625 173.863281 L 187.390625 173.480469 C 187.636719 173.480469 187.839844 173.460938 187.996094 173.425781 C 188.160156 173.386719 188.238281 173.289062 188.238281 173.136719 L 188.238281 170.550781 C 188.238281 170.1875 188.1875 169.894531 188.085938 169.671875 C 187.980469 169.449219 187.769531 169.339844 187.445312 169.339844 C 187.027344 169.339844 186.683594 169.507812 186.414062 169.84375 C 186.140625 170.179688 186.003906 170.5625 186.003906 170.992188 L 186.003906 173.136719 C 186.003906 173.289062 186.085938 173.386719 186.242188 173.425781 C 186.402344 173.460938 186.605469 173.480469 186.855469 173.480469 L 186.855469 173.863281 L 184.363281 173.863281 L 184.363281 173.480469 C 184.609375 173.480469 184.8125 173.460938 184.972656 173.425781 C 185.132812 173.386719 185.214844 173.289062 185.214844 173.136719 L 185.214844 170.550781 C 185.214844 170.199219 185.160156 169.910156 185.058594 169.679688 C 184.953125 169.453125 184.746094 169.339844 184.429688 169.339844 C 184.007812 169.339844 183.660156 169.507812 183.386719 169.84375 C 183.117188 170.179688 182.980469 170.5625 182.980469 170.992188 L 182.980469 173.136719 C 182.980469 173.289062 183.0625 173.386719 183.222656 173.425781 C 183.382812 173.460938 183.582031 173.480469 183.824219 173.480469 L 183.824219 173.863281 L 181.335938 173.863281 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 190.421875 176.582031 L 190.421875 176.148438 L 191.476562 176.148438 L 191.476562 166.136719 L 190.421875 166.136719 L 190.421875 165.703125 L 191.910156 165.703125 L 191.910156 176.582031 L 190.421875 176.582031 "/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.90625 313.867188 L 388.90625 1746.875 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2714.765625 313.867188 L 2714.765625 1746.875 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.90625 313.867188 L 412.148438 313.867188 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.90625 664.804688 L 412.148438 664.804688 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.90625 1015.742188 L 412.148438 1015.742188 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.90625 1366.71875 L 412.148438 1366.71875 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.90625 1717.65625 L 412.148438 1717.65625 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2714.765625 313.867188 L 2691.484375 313.867188 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2714.765625 664.804688 L 2691.484375 664.804688 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2714.765625 1015.742188 L 2691.484375 1015.742188 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2714.765625 1366.71875 L 2691.484375 1366.71875 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(0%,0%,1.197815%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2714.765625 1717.65625 L 2691.484375 1717.65625 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 32.417969 150.238281 C 31.589844 150.238281 31.027344 149.898438 30.730469 149.214844 C 30.433594 148.53125 30.285156 147.722656 30.285156 146.785156 C 30.285156 146.199219 30.335938 145.648438 30.441406 145.128906 C 30.546875 144.609375 30.761719 144.171875 31.078125 143.808594 C 31.398438 143.449219 31.84375 143.269531 32.417969 143.269531 C 32.863281 143.269531 33.226562 143.375 33.511719 143.59375 C 33.792969 143.808594 34.011719 144.089844 34.160156 144.4375 C 34.308594 144.78125 34.410156 145.152344 34.464844 145.546875 C 34.519531 145.9375 34.546875 146.351562 34.546875 146.785156 C 34.546875 147.367188 34.492188 147.910156 34.382812 148.417969 C 34.277344 148.921875 34.066406 149.351562 33.753906 149.707031 C 33.441406 150.058594 32.996094 150.238281 32.417969 150.238281 Z M 32.417969 149.972656 C 32.792969 149.972656 33.074219 149.78125 33.257812 149.394531 C 33.445312 149.011719 33.558594 148.585938 33.601562 148.113281 C 33.644531 147.648438 33.667969 147.148438 33.667969 146.621094 C 33.667969 146.113281 33.644531 145.644531 33.601562 145.21875 C 33.558594 144.789062 33.445312 144.402344 33.261719 144.054688 C 33.078125 143.707031 32.796875 143.53125 32.417969 143.53125 C 32.035156 143.53125 31.75 143.707031 31.566406 144.054688 C 31.382812 144.40625 31.269531 144.792969 31.226562 145.21875 C 31.183594 145.644531 31.164062 146.113281 31.164062 146.621094 C 31.164062 146.996094 31.171875 147.351562 31.191406 147.683594 C 31.207031 148.019531 31.253906 148.363281 31.332031 148.714844 C 31.410156 149.070312 31.539062 149.367188 31.71875 149.609375 C 31.894531 149.851562 32.128906 149.972656 32.417969 149.972656 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 19.636719 115.144531 C 18.804688 115.144531 18.242188 114.800781 17.945312 114.121094 C 17.648438 113.4375 17.5 112.628906 17.5 111.691406 C 17.5 111.105469 17.554688 110.550781 17.660156 110.035156 C 17.765625 109.515625 17.976562 109.078125 18.296875 108.714844 C 18.613281 108.355469 19.0625 108.171875 19.636719 108.171875 C 20.082031 108.171875 20.445312 108.28125 20.726562 108.5 C 21.011719 108.714844 21.226562 108.996094 21.375 109.34375 C 21.523438 109.6875 21.625 110.058594 21.679688 110.449219 C 21.734375 110.84375 21.761719 111.257812 21.761719 111.691406 C 21.761719 112.273438 21.710938 112.816406 21.601562 113.324219 C 21.496094 113.828125 21.285156 114.257812 20.972656 114.613281 C 20.660156 114.964844 20.214844 115.144531 19.636719 115.144531 Z M 19.636719 114.878906 C 20.011719 114.878906 20.289062 114.6875 20.476562 114.300781 C 20.660156 113.917969 20.777344 113.488281 20.820312 113.019531 C 20.863281 112.550781 20.882812 112.054688 20.882812 111.527344 C 20.882812 111.019531 20.863281 110.550781 20.820312 110.121094 C 20.777344 109.695312 20.664062 109.304688 20.480469 108.957031 C 20.296875 108.609375 20.015625 108.4375 19.636719 108.4375 C 19.253906 108.4375 18.96875 108.613281 18.785156 108.960938 C 18.601562 109.3125 18.488281 109.699219 18.445312 110.125 C 18.402344 110.550781 18.382812 111.019531 18.382812 111.527344 C 18.382812 111.902344 18.390625 112.257812 18.40625 112.589844 C 18.425781 112.925781 18.472656 113.269531 18.550781 113.621094 C 18.628906 113.976562 18.757812 114.273438 18.933594 114.515625 C 19.113281 114.757812 19.347656 114.878906 19.636719 114.878906 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 22.953125 114.363281 C 22.953125 114.210938 23.011719 114.082031 23.125 113.96875 C 23.238281 113.859375 23.367188 113.804688 23.511719 113.804688 C 23.605469 113.804688 23.699219 113.832031 23.785156 113.878906 C 23.878906 113.929688 23.945312 113.996094 23.996094 114.085938 C 24.042969 114.175781 24.070312 114.269531 24.070312 114.363281 C 24.070312 114.511719 24.015625 114.640625 23.90625 114.753906 C 23.792969 114.863281 23.664062 114.917969 23.511719 114.917969 C 23.367188 114.917969 23.238281 114.863281 23.125 114.753906 C 23.011719 114.640625 22.953125 114.511719 22.953125 114.363281 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 27.414062 115.144531 C 26.585938 115.144531 26.023438 114.800781 25.726562 114.121094 C 25.429688 113.4375 25.28125 112.628906 25.28125 111.691406 C 25.28125 111.105469 25.335938 110.550781 25.441406 110.035156 C 25.546875 109.515625 25.757812 109.078125 26.078125 108.714844 C 26.394531 108.355469 26.839844 108.171875 27.414062 108.171875 C 27.863281 108.171875 28.226562 108.28125 28.507812 108.5 C 28.792969 108.714844 29.007812 108.996094 29.15625 109.34375 C 29.304688 109.6875 29.40625 110.058594 29.460938 110.449219 C 29.515625 110.84375 29.542969 111.257812 29.542969 111.691406 C 29.542969 112.273438 29.488281 112.816406 29.382812 113.324219 C 29.273438 113.828125 29.066406 114.257812 28.753906 114.613281 C 28.441406 114.964844 27.996094 115.144531 27.414062 115.144531 Z M 27.414062 114.878906 C 27.789062 114.878906 28.070312 114.6875 28.257812 114.300781 C 28.441406 113.917969 28.558594 113.488281 28.601562 113.019531 C 28.644531 112.550781 28.664062 112.054688 28.664062 111.527344 C 28.664062 111.019531 28.644531 110.550781 28.601562 110.121094 C 28.558594 109.695312 28.445312 109.304688 28.261719 108.957031 C 28.078125 108.609375 27.792969 108.4375 27.414062 108.4375 C 27.03125 108.4375 26.75 108.613281 26.566406 108.960938 C 26.382812 109.3125 26.269531 109.699219 26.226562 110.125 C 26.183594 110.550781 26.160156 111.019531 26.160156 111.527344 C 26.160156 111.902344 26.171875 112.257812 26.1875 112.589844 C 26.207031 112.925781 26.253906 113.269531 26.332031 113.621094 C 26.410156 113.976562 26.539062 114.273438 26.714844 114.515625 C 26.894531 114.757812 27.128906 114.878906 27.414062 114.878906 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 30.390625 114.917969 L 30.390625 114.652344 C 30.390625 114.632812 30.394531 114.609375 30.40625 114.59375 L 31.984375 112.851562 C 32.222656 112.59375 32.414062 112.378906 32.5625 112.203125 C 32.707031 112.03125 32.855469 111.828125 33 111.601562 C 33.148438 111.375 33.261719 111.144531 33.347656 110.90625 C 33.429688 110.671875 33.472656 110.421875 33.472656 110.15625 C 33.472656 109.882812 33.421875 109.617188 33.316406 109.363281 C 33.214844 109.109375 33.0625 108.90625 32.859375 108.757812 C 32.660156 108.605469 32.414062 108.53125 32.125 108.53125 C 31.832031 108.53125 31.566406 108.617188 31.332031 108.792969 C 31.097656 108.96875 30.933594 109.199219 30.839844 109.480469 C 30.867188 109.472656 30.902344 109.46875 30.945312 109.46875 C 31.097656 109.46875 31.230469 109.519531 31.335938 109.621094 C 31.445312 109.722656 31.496094 109.855469 31.496094 110.019531 C 31.496094 110.171875 31.445312 110.300781 31.335938 110.410156 C 31.230469 110.515625 31.097656 110.570312 30.945312 110.570312 C 30.789062 110.570312 30.660156 110.515625 30.550781 110.40625 C 30.445312 110.296875 30.390625 110.167969 30.390625 110.019531 C 30.390625 109.765625 30.4375 109.527344 30.53125 109.304688 C 30.628906 109.082031 30.765625 108.882812 30.945312 108.710938 C 31.125 108.535156 31.328125 108.402344 31.554688 108.3125 C 31.78125 108.21875 32.023438 108.171875 32.277344 108.171875 C 32.660156 108.171875 33.019531 108.253906 33.351562 108.417969 C 33.6875 108.582031 33.949219 108.816406 34.144531 109.109375 C 34.335938 109.40625 34.433594 109.757812 34.433594 110.15625 C 34.433594 110.453125 34.371094 110.730469 34.242188 110.996094 C 34.113281 111.261719 33.949219 111.5 33.75 111.714844 C 33.550781 111.929688 33.292969 112.171875 32.976562 112.445312 C 32.664062 112.71875 32.457031 112.902344 32.359375 112.996094 L 31.210938 114.097656 L 32.183594 114.097656 C 32.664062 114.097656 33.066406 114.09375 33.386719 114.085938 C 33.707031 114.082031 33.875 114.066406 33.894531 114.046875 C 33.976562 113.964844 34.058594 113.652344 34.140625 113.113281 L 34.433594 113.113281 L 34.148438 114.917969 L 30.390625 114.917969 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 19.636719 80.046875 C 18.804688 80.046875 18.242188 79.707031 17.945312 79.027344 C 17.648438 78.34375 17.5 77.535156 17.5 76.597656 C 17.5 76.011719 17.554688 75.457031 17.660156 74.941406 C 17.765625 74.421875 17.976562 73.980469 18.296875 73.621094 C 18.613281 73.261719 19.0625 73.078125 19.636719 73.078125 C 20.082031 73.078125 20.445312 73.1875 20.726562 73.402344 C 21.011719 73.621094 21.226562 73.902344 21.375 74.246094 C 21.523438 74.59375 21.625 74.964844 21.679688 75.355469 C 21.734375 75.75 21.761719 76.160156 21.761719 76.597656 C 21.761719 77.179688 21.710938 77.722656 21.601562 78.226562 C 21.496094 78.734375 21.285156 79.164062 20.972656 79.519531 C 20.660156 79.871094 20.214844 80.046875 19.636719 80.046875 Z M 19.636719 79.785156 C 20.011719 79.785156 20.289062 79.59375 20.476562 79.207031 C 20.660156 78.820312 20.777344 78.394531 20.820312 77.925781 C 20.863281 77.457031 20.882812 76.960938 20.882812 76.433594 C 20.882812 75.925781 20.863281 75.457031 20.820312 75.027344 C 20.777344 74.601562 20.664062 74.210938 20.480469 73.863281 C 20.296875 73.515625 20.015625 73.34375 19.636719 73.34375 C 19.253906 73.34375 18.96875 73.519531 18.785156 73.867188 C 18.601562 74.21875 18.488281 74.605469 18.445312 75.03125 C 18.402344 75.457031 18.382812 75.925781 18.382812 76.433594 C 18.382812 76.808594 18.390625 77.160156 18.40625 77.496094 C 18.425781 77.828125 18.472656 78.171875 18.550781 78.527344 C 18.628906 78.882812 18.757812 79.179688 18.933594 79.421875 C 19.113281 79.664062 19.347656 79.785156 19.636719 79.785156 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 22.953125 79.269531 C 22.953125 79.117188 23.011719 78.984375 23.125 78.875 C 23.238281 78.765625 23.367188 78.710938 23.511719 78.710938 C 23.605469 78.710938 23.699219 78.734375 23.785156 78.785156 C 23.878906 78.835938 23.945312 78.902344 23.996094 78.992188 C 24.042969 79.082031 24.070312 79.175781 24.070312 79.269531 C 24.070312 79.417969 24.015625 79.546875 23.90625 79.660156 C 23.792969 79.769531 23.664062 79.824219 23.511719 79.824219 C 23.367188 79.824219 23.238281 79.769531 23.125 79.660156 C 23.011719 79.546875 22.953125 79.417969 22.953125 79.269531 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 27.414062 80.046875 C 26.585938 80.046875 26.023438 79.707031 25.726562 79.027344 C 25.429688 78.34375 25.28125 77.535156 25.28125 76.597656 C 25.28125 76.011719 25.335938 75.457031 25.441406 74.941406 C 25.546875 74.421875 25.757812 73.980469 26.078125 73.621094 C 26.394531 73.261719 26.839844 73.078125 27.414062 73.078125 C 27.863281 73.078125 28.226562 73.1875 28.507812 73.402344 C 28.792969 73.621094 29.007812 73.902344 29.15625 74.246094 C 29.304688 74.59375 29.40625 74.964844 29.460938 75.355469 C 29.515625 75.75 29.542969 76.160156 29.542969 76.597656 C 29.542969 77.179688 29.488281 77.722656 29.382812 78.226562 C 29.273438 78.734375 29.066406 79.164062 28.753906 79.519531 C 28.441406 79.871094 27.996094 80.046875 27.414062 80.046875 Z M 27.414062 79.785156 C 27.789062 79.785156 28.070312 79.59375 28.257812 79.207031 C 28.441406 78.820312 28.558594 78.394531 28.601562 77.925781 C 28.644531 77.457031 28.664062 76.960938 28.664062 76.433594 C 28.664062 75.925781 28.644531 75.457031 28.601562 75.027344 C 28.558594 74.601562 28.445312 74.210938 28.261719 73.863281 C 28.078125 73.515625 27.792969 73.34375 27.414062 73.34375 C 27.03125 73.34375 26.75 73.519531 26.566406 73.867188 C 26.382812 74.21875 26.269531 74.605469 26.226562 75.03125 C 26.183594 75.457031 26.160156 75.925781 26.160156 76.433594 C 26.160156 76.808594 26.171875 77.160156 26.1875 77.496094 C 26.207031 77.828125 26.253906 78.171875 26.332031 78.527344 C 26.410156 78.882812 26.539062 79.179688 26.714844 79.421875 C 26.894531 79.664062 27.128906 79.785156 27.414062 79.785156 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 30.167969 78.15625 L 30.167969 77.796875 L 33.296875 73.132812 C 33.320312 73.097656 33.355469 73.078125 33.402344 73.078125 L 33.550781 73.078125 C 33.628906 73.078125 33.667969 73.117188 33.667969 73.195312 L 33.667969 77.796875 L 34.65625 77.796875 L 34.65625 78.15625 L 33.667969 78.15625 L 33.667969 79.144531 C 33.667969 79.285156 33.765625 79.375 33.960938 79.410156 C 34.160156 79.449219 34.390625 79.46875 34.652344 79.46875 L 34.652344 79.824219 L 31.859375 79.824219 L 31.859375 79.46875 C 32.117188 79.46875 32.347656 79.449219 32.546875 79.410156 C 32.746094 79.375 32.84375 79.285156 32.84375 79.144531 L 32.84375 78.15625 Z M 30.5 77.796875 L 32.90625 77.796875 L 32.90625 74.210938 Z M 30.5 77.796875 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 19.636719 44.953125 C 18.804688 44.953125 18.242188 44.613281 17.945312 43.929688 C 17.648438 43.25 17.5 42.4375 17.5 41.5 C 17.5 40.914062 17.554688 40.363281 17.660156 39.84375 C 17.765625 39.328125 17.976562 38.886719 18.296875 38.527344 C 18.613281 38.164062 19.0625 37.984375 19.636719 37.984375 C 20.082031 37.984375 20.445312 38.09375 20.726562 38.308594 C 21.011719 38.527344 21.226562 38.808594 21.375 39.152344 C 21.523438 39.5 21.625 39.867188 21.679688 40.261719 C 21.734375 40.652344 21.761719 41.066406 21.761719 41.5 C 21.761719 42.085938 21.710938 42.628906 21.601562 43.132812 C 21.496094 43.640625 21.285156 44.070312 20.972656 44.421875 C 20.660156 44.777344 20.214844 44.953125 19.636719 44.953125 Z M 19.636719 44.691406 C 20.011719 44.691406 20.289062 44.496094 20.476562 44.113281 C 20.660156 43.726562 20.777344 43.300781 20.820312 42.832031 C 20.863281 42.363281 20.882812 41.863281 20.882812 41.335938 C 20.882812 40.828125 20.863281 40.359375 20.820312 39.933594 C 20.777344 39.503906 20.664062 39.117188 20.480469 38.769531 C 20.296875 38.421875 20.015625 38.246094 19.636719 38.246094 C 19.253906 38.246094 18.96875 38.421875 18.785156 38.773438 C 18.601562 39.121094 18.488281 39.511719 18.445312 39.9375 C 18.402344 40.363281 18.382812 40.828125 18.382812 41.335938 C 18.382812 41.710938 18.390625 42.066406 18.40625 42.402344 C 18.425781 42.734375 18.472656 43.078125 18.550781 43.433594 C 18.628906 43.785156 18.757812 44.085938 18.933594 44.328125 C 19.113281 44.570312 19.347656 44.691406 19.636719 44.691406 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 22.953125 44.175781 C 22.953125 44.019531 23.011719 43.890625 23.125 43.78125 C 23.238281 43.671875 23.367188 43.617188 23.511719 43.617188 C 23.605469 43.617188 23.699219 43.640625 23.785156 43.691406 C 23.878906 43.738281 23.945312 43.808594 23.996094 43.898438 C 24.042969 43.988281 24.070312 44.078125 24.070312 44.175781 C 24.070312 44.324219 24.015625 44.453125 23.90625 44.5625 C 23.792969 44.675781 23.664062 44.730469 23.511719 44.730469 C 23.367188 44.730469 23.238281 44.675781 23.125 44.5625 C 23.011719 44.453125 22.953125 44.324219 22.953125 44.175781 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 27.414062 44.953125 C 26.585938 44.953125 26.023438 44.613281 25.726562 43.929688 C 25.429688 43.25 25.28125 42.4375 25.28125 41.5 C 25.28125 40.914062 25.335938 40.363281 25.441406 39.84375 C 25.546875 39.328125 25.757812 38.886719 26.078125 38.527344 C 26.394531 38.164062 26.839844 37.984375 27.414062 37.984375 C 27.863281 37.984375 28.226562 38.09375 28.507812 38.308594 C 28.792969 38.527344 29.007812 38.808594 29.15625 39.152344 C 29.304688 39.5 29.40625 39.867188 29.460938 40.261719 C 29.515625 40.652344 29.542969 41.066406 29.542969 41.5 C 29.542969 42.085938 29.488281 42.628906 29.382812 43.132812 C 29.273438 43.640625 29.066406 44.070312 28.753906 44.421875 C 28.441406 44.777344 27.996094 44.953125 27.414062 44.953125 Z M 27.414062 44.691406 C 27.789062 44.691406 28.070312 44.496094 28.257812 44.113281 C 28.441406 43.726562 28.558594 43.300781 28.601562 42.832031 C 28.644531 42.363281 28.664062 41.863281 28.664062 41.335938 C 28.664062 40.828125 28.644531 40.359375 28.601562 39.933594 C 28.558594 39.503906 28.445312 39.117188 28.261719 38.769531 C 28.078125 38.421875 27.792969 38.246094 27.414062 38.246094 C 27.03125 38.246094 26.75 38.421875 26.566406 38.773438 C 26.382812 39.121094 26.269531 39.511719 26.226562 39.9375 C 26.183594 40.363281 26.160156 40.828125 26.160156 41.335938 C 26.160156 41.710938 26.171875 42.066406 26.1875 42.402344 C 26.207031 42.734375 26.253906 43.078125 26.332031 43.433594 C 26.410156 43.785156 26.539062 44.085938 26.714844 44.328125 C 26.894531 44.570312 27.128906 44.691406 27.414062 44.691406 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 32.417969 44.953125 C 32 44.953125 31.648438 44.84375 31.367188 44.621094 C 31.085938 44.398438 30.871094 44.109375 30.71875 43.753906 C 30.566406 43.402344 30.460938 43.03125 30.402344 42.640625 C 30.34375 42.253906 30.3125 41.855469 30.3125 41.453125 C 30.3125 40.921875 30.417969 40.390625 30.625 39.851562 C 30.832031 39.3125 31.136719 38.867188 31.542969 38.515625 C 31.945312 38.160156 32.421875 37.984375 32.972656 37.984375 C 33.207031 37.984375 33.421875 38.027344 33.621094 38.117188 C 33.824219 38.203125 33.980469 38.332031 34.09375 38.503906 C 34.207031 38.671875 34.265625 38.878906 34.265625 39.117188 C 34.265625 39.257812 34.21875 39.371094 34.125 39.46875 C 34.03125 39.5625 33.914062 39.609375 33.773438 39.609375 C 33.640625 39.609375 33.527344 39.558594 33.433594 39.464844 C 33.339844 39.367188 33.292969 39.253906 33.292969 39.117188 C 33.292969 38.988281 33.339844 38.875 33.433594 38.777344 C 33.527344 38.683594 33.640625 38.636719 33.773438 38.636719 L 33.824219 38.636719 C 33.742188 38.511719 33.621094 38.417969 33.464844 38.363281 C 33.304688 38.304688 33.144531 38.277344 32.972656 38.277344 C 32.773438 38.277344 32.582031 38.320312 32.410156 38.410156 C 32.234375 38.496094 32.078125 38.617188 31.941406 38.769531 C 31.804688 38.921875 31.691406 39.089844 31.597656 39.273438 C 31.503906 39.457031 31.429688 39.664062 31.378906 39.902344 C 31.328125 40.136719 31.296875 40.355469 31.285156 40.558594 C 31.269531 40.761719 31.261719 41.015625 31.261719 41.324219 C 31.382812 41.050781 31.554688 40.824219 31.769531 40.648438 C 31.988281 40.46875 32.230469 40.382812 32.507812 40.382812 C 32.804688 40.382812 33.082031 40.441406 33.328125 40.566406 C 33.578125 40.6875 33.789062 40.859375 33.96875 41.074219 C 34.144531 41.289062 34.28125 41.535156 34.375 41.8125 C 34.46875 42.089844 34.515625 42.371094 34.515625 42.65625 C 34.515625 43.050781 34.425781 43.425781 34.25 43.785156 C 34.070312 44.140625 33.824219 44.425781 33.503906 44.636719 C 33.1875 44.847656 32.824219 44.953125 32.417969 44.953125 Z M 32.417969 44.632812 C 32.679688 44.632812 32.890625 44.570312 33.046875 44.453125 C 33.207031 44.332031 33.324219 44.175781 33.398438 43.980469 C 33.472656 43.785156 33.515625 43.589844 33.535156 43.390625 C 33.550781 43.1875 33.5625 42.945312 33.5625 42.65625 C 33.5625 42.273438 33.542969 41.945312 33.503906 41.675781 C 33.46875 41.402344 33.371094 41.164062 33.210938 40.960938 C 33.046875 40.753906 32.800781 40.652344 32.464844 40.652344 C 32.191406 40.652344 31.964844 40.742188 31.789062 40.925781 C 31.613281 41.109375 31.488281 41.34375 31.40625 41.628906 C 31.328125 41.910156 31.285156 42.179688 31.285156 42.4375 C 31.285156 42.527344 31.289062 42.597656 31.292969 42.644531 C 31.292969 42.652344 31.292969 42.660156 31.292969 42.667969 C 31.292969 42.675781 31.289062 42.683594 31.285156 42.691406 C 31.285156 42.984375 31.316406 43.277344 31.375 43.574219 C 31.433594 43.867188 31.546875 44.117188 31.714844 44.324219 C 31.882812 44.527344 32.117188 44.632812 32.417969 44.632812 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 19.636719 9.859375 C 18.804688 9.859375 18.242188 9.519531 17.945312 8.835938 C 17.648438 8.152344 17.5 7.34375 17.5 6.40625 C 17.5 5.820312 17.554688 5.269531 17.660156 4.75 C 17.765625 4.234375 17.976562 3.792969 18.296875 3.433594 C 18.613281 3.070312 19.0625 2.890625 19.636719 2.890625 C 20.082031 2.890625 20.445312 2.996094 20.726562 3.214844 C 21.011719 3.433594 21.226562 3.714844 21.375 4.058594 C 21.523438 4.40625 21.625 4.773438 21.679688 5.167969 C 21.734375 5.558594 21.761719 5.972656 21.761719 6.40625 C 21.761719 6.988281 21.710938 7.53125 21.601562 8.039062 C 21.496094 8.546875 21.285156 8.976562 20.972656 9.328125 C 20.660156 9.683594 20.214844 9.859375 19.636719 9.859375 Z M 19.636719 9.59375 C 20.011719 9.59375 20.289062 9.402344 20.476562 9.019531 C 20.660156 8.632812 20.777344 8.207031 20.820312 7.738281 C 20.863281 7.269531 20.882812 6.769531 20.882812 6.242188 C 20.882812 5.734375 20.863281 5.265625 20.820312 4.839844 C 20.777344 4.410156 20.664062 4.023438 20.480469 3.675781 C 20.296875 3.328125 20.015625 3.152344 19.636719 3.152344 C 19.253906 3.152344 18.96875 3.328125 18.785156 3.679688 C 18.601562 4.027344 18.488281 4.414062 18.445312 4.84375 C 18.402344 5.269531 18.382812 5.734375 18.382812 6.242188 C 18.382812 6.617188 18.390625 6.972656 18.40625 7.304688 C 18.425781 7.640625 18.472656 7.984375 18.550781 8.339844 C 18.628906 8.691406 18.757812 8.988281 18.933594 9.230469 C 19.113281 9.472656 19.347656 9.59375 19.636719 9.59375 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 22.953125 9.078125 C 22.953125 8.925781 23.011719 8.796875 23.125 8.6875 C 23.238281 8.578125 23.367188 8.523438 23.511719 8.523438 C 23.605469 8.523438 23.699219 8.546875 23.785156 8.597656 C 23.878906 8.644531 23.945312 8.714844 23.996094 8.804688 C 24.042969 8.894531 24.070312 8.984375 24.070312 9.078125 C 24.070312 9.226562 24.015625 9.359375 23.90625 9.46875 C 23.792969 9.582031 23.664062 9.636719 23.511719 9.636719 C 23.367188 9.636719 23.238281 9.582031 23.125 9.46875 C 23.011719 9.359375 22.953125 9.226562 22.953125 9.078125 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 27.414062 9.859375 C 26.585938 9.859375 26.023438 9.519531 25.726562 8.835938 C 25.429688 8.152344 25.28125 7.34375 25.28125 6.40625 C 25.28125 5.820312 25.335938 5.269531 25.441406 4.75 C 25.546875 4.234375 25.757812 3.792969 26.078125 3.433594 C 26.394531 3.070312 26.839844 2.890625 27.414062 2.890625 C 27.863281 2.890625 28.226562 2.996094 28.507812 3.214844 C 28.792969 3.433594 29.007812 3.714844 29.15625 4.058594 C 29.304688 4.40625 29.40625 4.773438 29.460938 5.167969 C 29.515625 5.558594 29.542969 5.972656 29.542969 6.40625 C 29.542969 6.988281 29.488281 7.53125 29.382812 8.039062 C 29.273438 8.546875 29.066406 8.976562 28.753906 9.328125 C 28.441406 9.683594 27.996094 9.859375 27.414062 9.859375 Z M 27.414062 9.59375 C 27.789062 9.59375 28.070312 9.402344 28.257812 9.019531 C 28.441406 8.632812 28.558594 8.207031 28.601562 7.738281 C 28.644531 7.269531 28.664062 6.769531 28.664062 6.242188 C 28.664062 5.734375 28.644531 5.265625 28.601562 4.839844 C 28.558594 4.410156 28.445312 4.023438 28.261719 3.675781 C 28.078125 3.328125 27.792969 3.152344 27.414062 3.152344 C 27.03125 3.152344 26.75 3.328125 26.566406 3.679688 C 26.382812 4.027344 26.269531 4.414062 26.226562 4.84375 C 26.183594 5.269531 26.160156 5.734375 26.160156 6.242188 C 26.160156 6.617188 26.171875 6.972656 26.1875 7.304688 C 26.207031 7.640625 26.253906 7.984375 26.332031 8.339844 C 26.410156 8.691406 26.539062 8.988281 26.714844 9.230469 C 26.894531 9.472656 27.128906 9.59375 27.414062 9.59375 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 30.3125 8.101562 C 30.3125 7.695312 30.445312 7.335938 30.710938 7.023438 C 30.976562 6.710938 31.320312 6.449219 31.738281 6.242188 L 31.363281 6.003906 C 31.132812 5.851562 30.945312 5.648438 30.800781 5.394531 C 30.65625 5.144531 30.582031 4.878906 30.582031 4.601562 C 30.582031 4.277344 30.667969 3.984375 30.839844 3.726562 C 31.007812 3.464844 31.234375 3.261719 31.515625 3.113281 C 31.796875 2.964844 32.097656 2.890625 32.417969 2.890625 C 32.71875 2.890625 33.007812 2.953125 33.285156 3.074219 C 33.5625 3.199219 33.792969 3.371094 33.972656 3.597656 C 34.152344 3.824219 34.242188 4.09375 34.242188 4.40625 C 34.242188 4.632812 34.1875 4.847656 34.082031 5.039062 C 33.976562 5.234375 33.832031 5.410156 33.644531 5.566406 C 33.457031 5.71875 33.257812 5.851562 33.046875 5.960938 L 33.625 6.328125 C 33.890625 6.507812 34.105469 6.734375 34.269531 7.019531 C 34.433594 7.300781 34.515625 7.601562 34.515625 7.914062 C 34.515625 8.28125 34.417969 8.613281 34.21875 8.914062 C 34.023438 9.214844 33.761719 9.449219 33.441406 9.613281 C 33.117188 9.777344 32.777344 9.859375 32.417969 9.859375 C 32.070312 9.859375 31.734375 9.789062 31.40625 9.644531 C 31.082031 9.503906 30.816406 9.296875 30.617188 9.03125 C 30.414062 8.761719 30.3125 8.453125 30.3125 8.101562 Z M 30.859375 8.101562 C 30.859375 8.367188 30.929688 8.609375 31.078125 8.828125 C 31.226562 9.050781 31.417969 9.222656 31.660156 9.347656 C 31.902344 9.472656 32.15625 9.535156 32.417969 9.535156 C 32.808594 9.535156 33.164062 9.421875 33.484375 9.195312 C 33.804688 8.964844 33.964844 8.660156 33.964844 8.28125 C 33.964844 8.152344 33.941406 8.023438 33.890625 7.898438 C 33.839844 7.769531 33.769531 7.65625 33.679688 7.550781 C 33.589844 7.449219 33.488281 7.363281 33.375 7.296875 L 32.015625 6.417969 C 31.800781 6.527344 31.609375 6.667969 31.433594 6.839844 C 31.257812 7.011719 31.117188 7.207031 31.015625 7.421875 C 30.910156 7.636719 30.859375 7.863281 30.859375 8.101562 Z M 31.554688 5.003906 L 32.78125 5.796875 C 33.066406 5.632812 33.300781 5.433594 33.480469 5.199219 C 33.664062 4.964844 33.753906 4.699219 33.753906 4.40625 C 33.753906 4.179688 33.691406 3.972656 33.5625 3.785156 C 33.4375 3.59375 33.269531 3.445312 33.066406 3.339844 C 32.859375 3.234375 32.640625 3.183594 32.40625 3.183594 C 32.203125 3.183594 31.996094 3.222656 31.789062 3.300781 C 31.582031 3.378906 31.414062 3.496094 31.277344 3.65625 C 31.144531 3.8125 31.074219 3.996094 31.074219 4.210938 C 31.074219 4.523438 31.234375 4.789062 31.554688 5.003906 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.140625 150.792969 L 9.757812 150.792969 C 9.757812 150.046875 9.644531 149.675781 9.414062 149.675781 L 3.433594 149.675781 C 3.203125 149.675781 3.089844 150.046875 3.089844 150.792969 L 2.707031 150.792969 L 2.707031 147.382812 C 2.707031 146.972656 2.78125 146.542969 2.925781 146.09375 C 3.074219 145.648438 3.296875 145.273438 3.597656 144.972656 C 3.898438 144.671875 4.257812 144.523438 4.675781 144.523438 C 4.980469 144.523438 5.253906 144.613281 5.496094 144.792969 C 5.734375 144.976562 5.9375 145.210938 6.097656 145.496094 C 6.257812 145.78125 6.371094 146.070312 6.441406 146.367188 C 6.554688 146.042969 6.734375 145.761719 6.984375 145.515625 C 7.230469 145.269531 7.515625 145.125 7.835938 145.074219 L 8.804688 144.921875 C 9.238281 144.851562 9.5625 144.777344 9.777344 144.699219 C 9.992188 144.621094 10.097656 144.449219 10.097656 144.183594 C 10.097656 143.957031 9.992188 143.785156 9.78125 143.675781 C 9.570312 143.5625 9.339844 143.507812 9.089844 143.507812 C 9.066406 143.507812 9.046875 143.496094 9.027344 143.472656 C 9.007812 143.449219 8.996094 143.425781 8.996094 143.402344 L 8.996094 143.300781 C 8.996094 143.230469 9.046875 143.199219 9.144531 143.199219 C 9.339844 143.199219 9.53125 143.234375 9.722656 143.3125 C 9.910156 143.386719 10.070312 143.5 10.195312 143.648438 C 10.320312 143.796875 10.382812 143.972656 10.382812 144.171875 C 10.382812 144.695312 10.25 145.144531 9.992188 145.519531 C 9.730469 145.898438 9.347656 146.085938 8.84375 146.085938 L 7.878906 146.085938 C 7.515625 146.085938 7.203125 146.214844 6.945312 146.464844 C 6.6875 146.71875 6.558594 147.023438 6.558594 147.386719 L 6.558594 148.695312 L 9.414062 148.695312 C 9.644531 148.695312 9.757812 148.320312 9.757812 147.574219 L 10.140625 147.574219 Z M 6.277344 148.695312 L 6.277344 147.535156 C 6.277344 146.933594 6.15625 146.472656 5.914062 146.160156 C 5.671875 145.84375 5.261719 145.6875 4.675781 145.6875 C 4.101562 145.6875 3.695312 145.84375 3.453125 146.15625 C 3.210938 146.464844 3.089844 146.925781 3.089844 147.535156 L 3.089844 148.144531 C 3.089844 148.277344 3.09375 148.378906 3.105469 148.453125 C 3.117188 148.523438 3.148438 148.582031 3.199219 148.628906 C 3.25 148.671875 3.328125 148.695312 3.433594 148.695312 L 6.277344 148.695312 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.265625 140.335938 C 10.265625 140.769531 10.152344 141.175781 9.933594 141.546875 C 9.710938 141.921875 9.414062 142.214844 9.042969 142.429688 C 8.667969 142.644531 8.261719 142.753906 7.824219 142.753906 C 7.492188 142.753906 7.171875 142.695312 6.863281 142.578125 C 6.554688 142.460938 6.28125 142.289062 6.039062 142.066406 C 5.796875 141.84375 5.605469 141.585938 5.46875 141.292969 C 5.332031 141 5.261719 140.679688 5.261719 140.335938 C 5.261719 139.890625 5.382812 139.484375 5.617188 139.117188 C 5.855469 138.75 6.171875 138.460938 6.566406 138.246094 C 6.960938 138.035156 7.378906 137.925781 7.824219 137.925781 C 8.257812 137.925781 8.664062 138.035156 9.039062 138.253906 C 9.414062 138.46875 9.710938 138.761719 9.933594 139.132812 C 10.152344 139.503906 10.265625 139.902344 10.265625 140.335938 Z M 9.941406 140.335938 C 9.941406 139.753906 9.730469 139.367188 9.3125 139.171875 C 8.890625 138.980469 8.355469 138.882812 7.703125 138.882812 C 7.339844 138.882812 7.035156 138.902344 6.796875 138.941406 C 6.554688 138.980469 6.339844 139.066406 6.144531 139.195312 C 6.027344 139.277344 5.921875 139.378906 5.828125 139.503906 C 5.738281 139.628906 5.667969 139.761719 5.621094 139.902344 C 5.574219 140.042969 5.550781 140.1875 5.550781 140.335938 C 5.550781 140.5625 5.601562 140.777344 5.707031 140.980469 C 5.808594 141.183594 5.957031 141.355469 6.144531 141.492188 C 6.351562 141.625 6.578125 141.710938 6.824219 141.746094 C 7.070312 141.785156 7.363281 141.800781 7.703125 141.800781 C 8.109375 141.800781 8.472656 141.769531 8.796875 141.695312 C 9.121094 141.625 9.394531 141.484375 9.613281 141.269531 C 9.832031 141.054688 9.941406 140.742188 9.941406 140.335938 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 8.832031 136.445312 L 5.832031 136.445312 L 5.832031 137.351562 L 5.550781 137.351562 C 5.550781 136.871094 5.328125 136.523438 4.886719 136.300781 C 4.441406 136.078125 3.960938 135.964844 3.445312 135.964844 L 3.445312 135.65625 L 5.449219 135.65625 L 5.449219 134.121094 L 5.832031 134.121094 L 5.832031 135.65625 L 8.808594 135.65625 C 9.109375 135.65625 9.375 135.605469 9.601562 135.503906 C 9.828125 135.402344 9.941406 135.21875 9.941406 134.957031 C 9.941406 134.707031 9.824219 134.527344 9.582031 134.417969 C 9.34375 134.308594 9.085938 134.253906 8.808594 134.253906 L 8.171875 134.253906 L 8.171875 133.945312 L 8.832031 133.945312 C 9.058594 133.945312 9.285156 133.984375 9.503906 134.066406 C 9.726562 134.148438 9.90625 134.273438 10.050781 134.4375 C 10.191406 134.601562 10.265625 134.800781 10.265625 135.035156 C 10.265625 135.46875 10.132812 135.8125 9.875 136.066406 C 9.613281 136.320312 9.265625 136.445312 8.832031 136.445312 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 9.074219 132.84375 C 8.640625 132.84375 8.289062 132.671875 8.019531 132.332031 C 7.75 131.992188 7.558594 131.582031 7.445312 131.105469 C 7.335938 130.628906 7.28125 130.175781 7.28125 129.746094 L 6.828125 129.746094 C 6.621094 129.746094 6.417969 129.792969 6.222656 129.882812 C 6.023438 129.976562 5.863281 130.109375 5.738281 130.28125 C 5.613281 130.457031 5.550781 130.648438 5.550781 130.859375 C 5.550781 131.339844 5.660156 131.707031 5.875 131.957031 C 5.875 131.820312 5.925781 131.707031 6.03125 131.617188 C 6.136719 131.527344 6.257812 131.480469 6.394531 131.480469 C 6.539062 131.480469 6.664062 131.53125 6.765625 131.632812 C 6.871094 131.734375 6.921875 131.855469 6.921875 131.996094 C 6.921875 132.144531 6.871094 132.273438 6.765625 132.371094 C 6.664062 132.472656 6.539062 132.523438 6.394531 132.523438 C 6.011719 132.523438 5.726562 132.351562 5.542969 132.007812 C 5.355469 131.660156 5.261719 131.277344 5.261719 130.859375 C 5.261719 130.5625 5.324219 130.265625 5.449219 129.96875 C 5.574219 129.671875 5.757812 129.429688 5.988281 129.238281 C 6.226562 129.050781 6.5 128.957031 6.8125 128.957031 L 9.261719 128.957031 C 9.402344 128.957031 9.53125 128.925781 9.652344 128.863281 C 9.769531 128.804688 9.832031 128.710938 9.832031 128.585938 C 9.832031 128.464844 9.769531 128.375 9.648438 128.316406 C 9.527344 128.257812 9.398438 128.226562 9.261719 128.226562 L 8.5625 128.226562 L 8.5625 127.910156 L 9.261719 127.910156 C 9.421875 127.910156 9.574219 127.953125 9.722656 128.039062 C 9.867188 128.121094 9.984375 128.234375 10.074219 128.382812 C 10.160156 128.527344 10.207031 128.679688 10.207031 128.84375 C 10.207031 129.058594 10.121094 129.242188 9.957031 129.394531 C 9.792969 129.546875 9.597656 129.632812 9.371094 129.652344 C 9.640625 129.785156 9.859375 129.984375 10.019531 130.246094 C 10.183594 130.507812 10.265625 130.789062 10.265625 131.089844 C 10.265625 131.363281 10.222656 131.632812 10.140625 131.902344 C 10.058594 132.167969 9.929688 132.390625 9.753906 132.570312 C 9.578125 132.753906 9.351562 132.84375 9.074219 132.84375 Z M 9.074219 131.957031 C 9.328125 131.957031 9.542969 131.863281 9.714844 131.675781 C 9.890625 131.488281 9.976562 131.265625 9.976562 131.011719 C 9.976562 130.777344 9.917969 130.566406 9.800781 130.375 C 9.683594 130.183594 9.523438 130.03125 9.324219 129.917969 C 9.121094 129.804688 8.910156 129.746094 8.6875 129.746094 L 7.554688 129.746094 C 7.554688 130.078125 7.609375 130.417969 7.71875 130.761719 C 7.824219 131.105469 7.992188 131.390625 8.222656 131.617188 C 8.453125 131.84375 8.738281 131.957031 9.074219 131.957031 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 8.832031 126.664062 L 5.832031 126.664062 L 5.832031 127.570312 L 5.550781 127.570312 C 5.550781 127.089844 5.328125 126.742188 4.886719 126.519531 C 4.441406 126.296875 3.960938 126.183594 3.445312 126.183594 L 3.445312 125.875 L 5.449219 125.875 L 5.449219 124.339844 L 5.832031 124.339844 L 5.832031 125.875 L 8.808594 125.875 C 9.109375 125.875 9.375 125.824219 9.601562 125.722656 C 9.828125 125.621094 9.941406 125.4375 9.941406 125.175781 C 9.941406 124.925781 9.824219 124.746094 9.582031 124.636719 C 9.34375 124.527344 9.085938 124.472656 8.808594 124.472656 L 8.171875 124.472656 L 8.171875 124.164062 L 8.832031 124.164062 C 9.058594 124.164062 9.285156 124.203125 9.503906 124.285156 C 9.726562 124.367188 9.90625 124.492188 10.050781 124.65625 C 10.191406 124.820312 10.265625 125.019531 10.265625 125.253906 C 10.265625 125.6875 10.132812 126.03125 9.875 126.285156 C 9.613281 126.539062 9.265625 126.664062 8.832031 126.664062 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.140625 123.160156 L 9.757812 123.160156 C 9.757812 122.910156 9.738281 122.707031 9.699219 122.546875 C 9.660156 122.390625 9.566406 122.308594 9.414062 122.308594 L 6.441406 122.308594 C 6.164062 122.308594 5.992188 122.363281 5.929688 122.472656 C 5.863281 122.578125 5.832031 122.792969 5.832031 123.113281 L 5.449219 123.113281 L 5.332031 121.542969 L 9.414062 121.542969 C 9.566406 121.542969 9.660156 121.472656 9.699219 121.335938 C 9.738281 121.199219 9.757812 121.015625 9.757812 120.785156 L 10.140625 120.785156 Z M 3.464844 122.695312 C 3.304688 122.695312 3.164062 122.636719 3.042969 122.515625 C 2.921875 122.394531 2.859375 122.257812 2.859375 122.105469 C 2.859375 122 2.886719 121.898438 2.941406 121.800781 C 2.996094 121.707031 3.074219 121.632812 3.167969 121.582031 C 3.265625 121.527344 3.363281 121.5 3.464844 121.5 C 3.621094 121.5 3.757812 121.5625 3.878906 121.683594 C 3.996094 121.804688 4.054688 121.945312 4.054688 122.105469 C 4.054688 122.257812 3.996094 122.394531 3.878906 122.515625 C 3.757812 122.636719 3.621094 122.695312 3.464844 122.695312 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.265625 117.71875 C 10.265625 118.152344 10.152344 118.554688 9.933594 118.925781 C 9.710938 119.300781 9.414062 119.59375 9.042969 119.808594 C 8.667969 120.023438 8.261719 120.132812 7.824219 120.132812 C 7.492188 120.132812 7.171875 120.074219 6.863281 119.957031 C 6.554688 119.839844 6.28125 119.667969 6.039062 119.445312 C 5.796875 119.222656 5.605469 118.964844 5.46875 118.671875 C 5.332031 118.378906 5.261719 118.0625 5.261719 117.71875 C 5.261719 117.273438 5.382812 116.867188 5.617188 116.5 C 5.855469 116.132812 6.171875 115.839844 6.566406 115.628906 C 6.960938 115.414062 7.378906 115.308594 7.824219 115.308594 C 8.257812 115.308594 8.664062 115.417969 9.039062 115.632812 C 9.414062 115.851562 9.710938 116.144531 9.933594 116.511719 C 10.152344 116.882812 10.265625 117.285156 10.265625 117.71875 Z M 9.941406 117.71875 C 9.941406 117.136719 9.730469 116.746094 9.3125 116.554688 C 8.890625 116.359375 8.355469 116.265625 7.703125 116.265625 C 7.339844 116.265625 7.035156 116.285156 6.796875 116.324219 C 6.554688 116.359375 6.339844 116.445312 6.144531 116.574219 C 6.027344 116.65625 5.921875 116.761719 5.828125 116.886719 C 5.738281 117.011719 5.667969 117.144531 5.621094 117.285156 C 5.574219 117.425781 5.550781 117.570312 5.550781 117.71875 C 5.550781 117.945312 5.601562 118.160156 5.707031 118.363281 C 5.808594 118.566406 5.957031 118.734375 6.144531 118.871094 C 6.351562 119.003906 6.578125 119.089844 6.824219 119.128906 C 7.070312 119.164062 7.363281 119.183594 7.703125 119.183594 C 8.109375 119.183594 8.472656 119.148438 8.796875 119.078125 C 9.121094 119.007812 9.394531 118.863281 9.613281 118.648438 C 9.832031 118.433594 9.941406 118.125 9.941406 117.71875 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.140625 114.613281 L 9.757812 114.613281 C 9.757812 114.363281 9.738281 114.160156 9.699219 114 C 9.660156 113.84375 9.566406 113.761719 9.414062 113.761719 L 6.441406 113.761719 C 6.246094 113.761719 6.105469 113.792969 6.019531 113.851562 C 5.933594 113.910156 5.882812 113.992188 5.863281 114.101562 C 5.84375 114.210938 5.832031 114.382812 5.832031 114.613281 L 5.449219 114.613281 L 5.332031 113.035156 L 6.394531 113.035156 C 6.082031 112.886719 5.828125 112.671875 5.628906 112.386719 C 5.433594 112.101562 5.332031 111.789062 5.332031 111.453125 C 5.332031 110.953125 5.453125 110.578125 5.695312 110.324219 C 5.933594 110.070312 6.304688 109.941406 6.800781 109.941406 L 9.414062 109.941406 C 9.566406 109.941406 9.660156 109.863281 9.699219 109.703125 C 9.738281 109.546875 9.757812 109.339844 9.757812 109.089844 L 10.140625 109.089844 L 10.140625 111.582031 L 9.757812 111.582031 C 9.757812 111.335938 9.738281 111.132812 9.699219 110.972656 C 9.660156 110.8125 9.566406 110.730469 9.414062 110.730469 L 6.828125 110.730469 C 6.476562 110.730469 6.1875 110.785156 5.957031 110.886719 C 5.730469 110.992188 5.613281 111.203125 5.613281 111.519531 C 5.613281 111.941406 5.78125 112.285156 6.121094 112.558594 C 6.457031 112.832031 6.839844 112.964844 7.269531 112.964844 L 9.414062 112.964844 C 9.566406 112.964844 9.660156 112.886719 9.699219 112.726562 C 9.738281 112.566406 9.757812 112.363281 9.757812 112.121094 L 10.140625 112.121094 L 10.140625 114.613281 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 9.074219 108.386719 C 8.640625 108.386719 8.289062 108.21875 8.019531 107.878906 C 7.75 107.539062 7.558594 107.128906 7.445312 106.652344 C 7.335938 106.175781 7.28125 105.722656 7.28125 105.292969 L 6.828125 105.292969 C 6.621094 105.292969 6.417969 105.339844 6.222656 105.429688 C 6.023438 105.523438 5.863281 105.65625 5.738281 105.828125 C 5.613281 106.003906 5.550781 106.195312 5.550781 106.40625 C 5.550781 106.886719 5.660156 107.253906 5.875 107.503906 C 5.875 107.367188 5.925781 107.253906 6.03125 107.164062 C 6.136719 107.074219 6.257812 107.027344 6.394531 107.027344 C 6.539062 107.027344 6.664062 107.078125 6.765625 107.179688 C 6.871094 107.28125 6.921875 107.402344 6.921875 107.542969 C 6.921875 107.691406 6.871094 107.816406 6.765625 107.917969 C 6.664062 108.019531 6.539062 108.070312 6.394531 108.070312 C 6.011719 108.070312 5.726562 107.898438 5.542969 107.550781 C 5.355469 107.207031 5.261719 106.824219 5.261719 106.40625 C 5.261719 106.109375 5.324219 105.8125 5.449219 105.515625 C 5.574219 105.21875 5.757812 104.976562 5.988281 104.785156 C 6.226562 104.597656 6.5 104.503906 6.8125 104.503906 L 9.261719 104.503906 C 9.402344 104.503906 9.53125 104.472656 9.652344 104.410156 C 9.769531 104.351562 9.832031 104.257812 9.832031 104.132812 C 9.832031 104.011719 9.769531 103.921875 9.648438 103.863281 C 9.527344 103.804688 9.398438 103.773438 9.261719 103.773438 L 8.5625 103.773438 L 8.5625 103.457031 L 9.261719 103.457031 C 9.421875 103.457031 9.574219 103.5 9.722656 103.585938 C 9.867188 103.667969 9.984375 103.78125 10.074219 103.925781 C 10.160156 104.070312 10.207031 104.226562 10.207031 104.390625 C 10.207031 104.605469 10.121094 104.789062 9.957031 104.941406 C 9.792969 105.09375 9.597656 105.179688 9.371094 105.199219 C 9.640625 105.332031 9.859375 105.53125 10.019531 105.792969 C 10.183594 106.054688 10.265625 106.335938 10.265625 106.636719 C 10.265625 106.910156 10.222656 107.179688 10.140625 107.449219 C 10.058594 107.714844 9.929688 107.9375 9.753906 108.117188 C 9.578125 108.296875 9.351562 108.386719 9.074219 108.386719 Z M 9.074219 107.503906 C 9.328125 107.503906 9.542969 107.410156 9.714844 107.222656 C 9.890625 107.035156 9.976562 106.8125 9.976562 106.558594 C 9.976562 106.324219 9.917969 106.113281 9.800781 105.921875 C 9.683594 105.730469 9.523438 105.578125 9.324219 105.464844 C 9.121094 105.347656 8.910156 105.292969 8.6875 105.292969 L 7.554688 105.292969 C 7.554688 105.625 7.609375 105.964844 7.71875 106.308594 C 7.824219 106.652344 7.992188 106.9375 8.222656 107.164062 C 8.453125 107.390625 8.738281 107.503906 9.074219 107.503906 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.140625 102.984375 L 9.757812 102.984375 C 9.757812 102.734375 9.738281 102.53125 9.699219 102.375 C 9.660156 102.214844 9.566406 102.136719 9.414062 102.136719 L 3.703125 102.136719 C 3.507812 102.136719 3.367188 102.164062 3.28125 102.222656 C 3.191406 102.28125 3.136719 102.367188 3.117188 102.476562 C 3.097656 102.585938 3.089844 102.753906 3.089844 102.984375 L 2.707031 102.984375 L 2.589844 101.367188 L 9.414062 101.367188 C 9.566406 101.367188 9.660156 101.289062 9.699219 101.128906 C 9.738281 100.972656 9.757812 100.769531 9.757812 100.523438 L 10.140625 100.523438 L 10.140625 102.984375 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.167969 96.230469 L 8.398438 96.230469 C 8.339844 96.230469 8.3125 96.199219 8.3125 96.136719 L 8.3125 96.003906 C 8.3125 95.964844 8.339844 95.9375 8.398438 95.921875 C 9.449219 95.71875 9.976562 95.230469 9.976562 94.457031 C 9.976562 94.113281 9.898438 93.824219 9.742188 93.589844 C 9.585938 93.359375 9.34375 93.242188 9.019531 93.242188 C 8.785156 93.242188 8.585938 93.332031 8.421875 93.515625 C 8.257812 93.695312 8.144531 93.910156 8.082031 94.15625 L 7.941406 94.882812 C 7.886719 95.128906 7.804688 95.351562 7.695312 95.550781 C 7.585938 95.75 7.441406 95.914062 7.257812 96.042969 C 7.078125 96.167969 6.867188 96.230469 6.625 96.230469 C 6.304688 96.230469 6.042969 96.148438 5.835938 95.980469 C 5.636719 95.8125 5.488281 95.59375 5.398438 95.324219 C 5.308594 95.058594 5.261719 94.769531 5.261719 94.457031 C 5.261719 94.085938 5.363281 93.761719 5.5625 93.480469 L 5.292969 93.164062 C 5.273438 93.164062 5.261719 93.148438 5.261719 93.113281 L 5.261719 93.035156 C 5.261719 93.015625 5.273438 92.992188 5.292969 92.976562 C 5.3125 92.957031 5.332031 92.949219 5.351562 92.949219 L 6.777344 92.949219 C 6.847656 92.949219 6.882812 92.976562 6.882812 93.035156 L 6.882812 93.164062 C 6.882812 93.230469 6.847656 93.265625 6.777344 93.265625 C 6.398438 93.265625 6.09375 93.371094 5.863281 93.582031 C 5.636719 93.792969 5.519531 94.089844 5.519531 94.46875 C 5.519531 94.792969 5.582031 95.074219 5.699219 95.3125 C 5.820312 95.550781 6.027344 95.667969 6.320312 95.667969 C 6.523438 95.667969 6.6875 95.582031 6.816406 95.410156 C 6.945312 95.238281 7.039062 95.039062 7.097656 94.808594 L 7.234375 94.074219 C 7.292969 93.824219 7.386719 93.59375 7.523438 93.378906 C 7.65625 93.160156 7.828125 92.992188 8.03125 92.867188 C 8.238281 92.742188 8.46875 92.679688 8.726562 92.679688 C 8.988281 92.679688 9.21875 92.722656 9.410156 92.816406 C 9.605469 92.90625 9.765625 93.03125 9.890625 93.191406 C 10.019531 93.355469 10.113281 93.542969 10.171875 93.765625 C 10.234375 93.984375 10.265625 94.214844 10.265625 94.457031 C 10.265625 94.910156 10.109375 95.296875 9.804688 95.617188 L 10.234375 96.015625 C 10.253906 96.015625 10.265625 96.035156 10.265625 96.074219 L 10.265625 96.136719 C 10.265625 96.199219 10.230469 96.230469 10.167969 96.230469 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 8.832031 91.148438 L 5.832031 91.148438 L 5.832031 92.050781 L 5.550781 92.050781 C 5.550781 91.574219 5.328125 91.222656 4.886719 91 C 4.441406 90.777344 3.960938 90.664062 3.445312 90.664062 L 3.445312 90.355469 L 5.449219 90.355469 L 5.449219 88.820312 L 5.832031 88.820312 L 5.832031 90.355469 L 8.808594 90.355469 C 9.109375 90.355469 9.375 90.304688 9.601562 90.203125 C 9.828125 90.101562 9.941406 89.917969 9.941406 89.65625 C 9.941406 89.40625 9.824219 89.226562 9.582031 89.117188 C 9.34375 89.007812 9.085938 88.953125 8.808594 88.953125 L 8.171875 88.953125 L 8.171875 88.644531 L 8.832031 88.644531 C 9.058594 88.644531 9.285156 88.683594 9.503906 88.765625 C 9.726562 88.847656 9.90625 88.972656 10.050781 89.136719 C 10.191406 89.300781 10.265625 89.5 10.265625 89.734375 C 10.265625 90.167969 10.132812 90.511719 9.875 90.765625 C 9.613281 91.019531 9.265625 91.148438 8.832031 91.148438 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.140625 87.640625 L 9.757812 87.640625 C 9.757812 87.390625 9.738281 87.1875 9.699219 87.027344 C 9.660156 86.871094 9.566406 86.789062 9.414062 86.789062 L 6.441406 86.789062 C 6.164062 86.789062 5.992188 86.84375 5.929688 86.953125 C 5.863281 87.058594 5.832031 87.273438 5.832031 87.59375 L 5.449219 87.59375 L 5.332031 86.023438 L 9.414062 86.023438 C 9.566406 86.023438 9.660156 85.953125 9.699219 85.816406 C 9.738281 85.679688 9.757812 85.496094 9.757812 85.265625 L 10.140625 85.265625 Z M 3.464844 87.175781 C 3.304688 87.175781 3.164062 87.117188 3.042969 86.996094 C 2.921875 86.875 2.859375 86.738281 2.859375 86.585938 C 2.859375 86.480469 2.886719 86.378906 2.941406 86.285156 C 2.996094 86.1875 3.074219 86.113281 3.167969 86.0625 C 3.265625 86.007812 3.363281 85.980469 3.464844 85.980469 C 3.621094 85.980469 3.757812 86.042969 3.878906 86.164062 C 3.996094 86.285156 4.054688 86.425781 4.054688 86.585938 C 4.054688 86.738281 3.996094 86.875 3.878906 86.996094 C 3.757812 87.117188 3.621094 87.175781 3.464844 87.175781 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.140625 84.636719 L 9.757812 84.636719 C 9.757812 84.390625 9.738281 84.1875 9.699219 84.027344 C 9.660156 83.867188 9.566406 83.785156 9.414062 83.785156 L 5.832031 83.785156 L 5.832031 84.625 L 5.449219 84.625 L 5.449219 83.785156 L 4.148438 83.785156 C 3.875 83.785156 3.632812 83.710938 3.417969 83.554688 C 3.203125 83.402344 3.027344 83.203125 2.890625 82.964844 C 2.753906 82.726562 2.648438 82.46875 2.574219 82.191406 C 2.503906 81.910156 2.46875 81.640625 2.46875 81.378906 C 2.46875 81.152344 2.503906 80.933594 2.578125 80.722656 C 2.652344 80.515625 2.773438 80.351562 2.9375 80.230469 C 2.625 79.886719 2.46875 79.476562 2.46875 78.996094 C 2.46875 78.757812 2.542969 78.535156 2.6875 78.339844 C 2.835938 78.140625 3.027344 78.042969 3.265625 78.042969 C 3.40625 78.042969 3.523438 78.089844 3.617188 78.183594 C 3.710938 78.277344 3.757812 78.394531 3.757812 78.535156 C 3.757812 78.671875 3.710938 78.789062 3.617188 78.886719 C 3.523438 78.984375 3.40625 79.035156 3.265625 79.035156 C 3.039062 79.035156 2.886719 78.9375 2.808594 78.738281 C 2.769531 78.855469 2.75 78.960938 2.75 79.050781 C 2.75 79.265625 2.824219 79.449219 2.976562 79.601562 C 3.125 79.753906 3.308594 79.867188 3.527344 79.945312 C 3.742188 80.019531 3.957031 80.058594 4.167969 80.058594 L 5.449219 80.058594 L 5.449219 78.792969 L 5.832031 78.792969 L 5.832031 80.019531 L 9.414062 80.019531 C 9.5625 80.019531 9.65625 79.914062 9.699219 79.703125 C 9.738281 79.492188 9.757812 79.246094 9.757812 78.96875 L 10.140625 78.96875 L 10.140625 81.636719 L 9.757812 81.636719 C 9.757812 81.386719 9.738281 81.179688 9.699219 81.023438 C 9.660156 80.863281 9.566406 80.785156 9.414062 80.785156 L 5.832031 80.785156 L 5.832031 83.023438 L 9.414062 83.023438 C 9.566406 83.023438 9.660156 82.945312 9.699219 82.785156 C 9.738281 82.625 9.757812 82.421875 9.757812 82.175781 L 10.140625 82.175781 Z M 5.449219 83.058594 L 5.449219 80.785156 L 4.148438 80.785156 C 4.082031 80.785156 3.992188 80.777344 3.875 80.761719 C 3.78125 80.957031 3.628906 81.054688 3.417969 81.054688 C 3.300781 81.054688 3.199219 81.023438 3.109375 80.957031 C 3.019531 80.890625 2.964844 80.800781 2.9375 80.6875 C 2.8125 80.890625 2.75 81.152344 2.75 81.472656 C 2.75 81.738281 2.8125 81.992188 2.933594 82.238281 C 3.054688 82.484375 3.226562 82.683594 3.445312 82.835938 C 3.660156 82.984375 3.902344 83.058594 4.167969 83.058594 L 5.449219 83.058594 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.140625 78.175781 L 9.757812 78.175781 C 9.757812 77.925781 9.738281 77.722656 9.699219 77.5625 C 9.660156 77.40625 9.566406 77.328125 9.414062 77.328125 L 6.441406 77.328125 C 6.246094 77.328125 6.105469 77.355469 6.019531 77.414062 C 5.933594 77.472656 5.882812 77.558594 5.863281 77.667969 C 5.84375 77.777344 5.832031 77.945312 5.832031 78.175781 L 5.449219 78.175781 L 5.332031 76.601562 L 6.394531 76.601562 C 6.082031 76.453125 5.828125 76.234375 5.628906 75.949219 C 5.433594 75.664062 5.332031 75.355469 5.332031 75.019531 C 5.332031 74.519531 5.453125 74.140625 5.695312 73.886719 C 5.933594 73.632812 6.304688 73.503906 6.800781 73.503906 L 9.414062 73.503906 C 9.566406 73.503906 9.660156 73.425781 9.699219 73.269531 C 9.738281 73.109375 9.757812 72.90625 9.757812 72.65625 L 10.140625 72.65625 L 10.140625 75.144531 L 9.757812 75.144531 C 9.757812 74.898438 9.738281 74.695312 9.699219 74.535156 C 9.660156 74.378906 9.566406 74.296875 9.414062 74.296875 L 6.828125 74.296875 C 6.476562 74.296875 6.1875 74.347656 5.957031 74.453125 C 5.730469 74.554688 5.613281 74.765625 5.613281 75.082031 C 5.613281 75.503906 5.78125 75.851562 6.121094 76.121094 C 6.457031 76.394531 6.839844 76.53125 7.269531 76.53125 L 9.414062 76.53125 C 9.566406 76.53125 9.660156 76.449219 9.699219 76.289062 C 9.738281 76.128906 9.757812 75.929688 9.757812 75.6875 L 10.140625 75.6875 L 10.140625 78.175781 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.265625 69.679688 C 10.265625 70.121094 10.148438 70.523438 9.914062 70.894531 C 9.683594 71.265625 9.371094 71.554688 8.984375 71.765625 C 8.597656 71.976562 8.1875 72.082031 7.753906 72.082031 C 7.328125 72.082031 6.925781 71.984375 6.542969 71.792969 C 6.164062 71.601562 5.855469 71.335938 5.617188 70.988281 C 5.382812 70.640625 5.261719 70.257812 5.261719 69.828125 C 5.261719 69.496094 5.320312 69.210938 5.429688 68.964844 C 5.542969 68.714844 5.699219 68.511719 5.894531 68.355469 C 6.09375 68.191406 6.328125 68.074219 6.597656 67.992188 C 6.863281 67.910156 7.160156 67.871094 7.484375 67.871094 C 7.578125 67.871094 7.625 67.910156 7.625 67.984375 L 7.625 71.132812 L 7.742188 71.132812 C 8.34375 71.132812 8.863281 71.011719 9.292969 70.769531 C 9.726562 70.527344 9.941406 70.128906 9.941406 69.578125 C 9.941406 69.355469 9.894531 69.148438 9.792969 68.960938 C 9.695312 68.769531 9.558594 68.605469 9.382812 68.46875 C 9.203125 68.328125 9.011719 68.234375 8.808594 68.183594 C 8.785156 68.175781 8.765625 68.160156 8.746094 68.140625 C 8.726562 68.121094 8.714844 68.101562 8.714844 68.078125 L 8.714844 67.984375 C 8.714844 67.910156 8.761719 67.871094 8.855469 67.871094 C 9.265625 67.972656 9.605469 68.195312 9.867188 68.535156 C 10.132812 68.875 10.265625 69.257812 10.265625 69.679688 Z M 7.355469 71.121094 L 7.355469 68.640625 C 7.082031 68.640625 6.804688 68.679688 6.527344 68.753906 C 6.246094 68.832031 6.015625 68.957031 5.828125 69.136719 C 5.644531 69.3125 5.550781 69.546875 5.550781 69.828125 C 5.550781 70.242188 5.742188 70.558594 6.128906 70.78125 C 6.511719 71.007812 6.921875 71.121094 7.355469 71.121094 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.167969 67.132812 L 8.398438 67.132812 C 8.339844 67.132812 8.3125 67.101562 8.3125 67.039062 L 8.3125 66.902344 C 8.3125 66.863281 8.339844 66.835938 8.398438 66.820312 C 9.449219 66.617188 9.976562 66.128906 9.976562 65.355469 C 9.976562 65.011719 9.898438 64.722656 9.742188 64.492188 C 9.585938 64.257812 9.34375 64.140625 9.019531 64.140625 C 8.785156 64.140625 8.585938 64.234375 8.421875 64.414062 C 8.257812 64.597656 8.144531 64.8125 8.082031 65.058594 L 7.941406 65.785156 C 7.886719 66.03125 7.804688 66.253906 7.695312 66.453125 C 7.585938 66.652344 7.441406 66.8125 7.257812 66.941406 C 7.078125 67.066406 6.867188 67.132812 6.625 67.132812 C 6.304688 67.132812 6.042969 67.046875 5.835938 66.878906 C 5.636719 66.710938 5.488281 66.492188 5.398438 66.226562 C 5.308594 65.960938 5.261719 65.667969 5.261719 65.355469 C 5.261719 64.984375 5.363281 64.660156 5.5625 64.382812 L 5.292969 64.066406 C 5.273438 64.066406 5.261719 64.046875 5.261719 64.011719 L 5.261719 63.9375 C 5.261719 63.914062 5.273438 63.894531 5.292969 63.875 C 5.3125 63.859375 5.332031 63.847656 5.351562 63.847656 L 6.777344 63.847656 C 6.847656 63.847656 6.882812 63.878906 6.882812 63.9375 L 6.882812 64.066406 C 6.882812 64.132812 6.847656 64.164062 6.777344 64.164062 C 6.398438 64.164062 6.09375 64.269531 5.863281 64.480469 C 5.636719 64.691406 5.519531 64.988281 5.519531 65.367188 C 5.519531 65.691406 5.582031 65.972656 5.699219 66.210938 C 5.820312 66.449219 6.027344 66.570312 6.320312 66.570312 C 6.523438 66.570312 6.6875 66.484375 6.816406 66.3125 C 6.945312 66.140625 7.039062 65.9375 7.097656 65.707031 L 7.234375 64.976562 C 7.292969 64.726562 7.386719 64.492188 7.523438 64.277344 C 7.65625 64.0625 7.828125 63.890625 8.03125 63.765625 C 8.238281 63.640625 8.46875 63.578125 8.726562 63.578125 C 8.988281 63.578125 9.21875 63.625 9.410156 63.714844 C 9.605469 63.804688 9.765625 63.929688 9.890625 64.09375 C 10.019531 64.253906 10.113281 64.445312 10.171875 64.664062 C 10.234375 64.882812 10.265625 65.113281 10.265625 65.355469 C 10.265625 65.808594 10.109375 66.195312 9.804688 66.515625 L 10.234375 66.914062 C 10.253906 66.914062 10.265625 66.933594 10.265625 66.972656 L 10.265625 67.039062 C 10.265625 67.101562 10.230469 67.132812 10.167969 67.132812 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 12.859375 58.203125 L 1.980469 58.203125 L 1.980469 56.714844 L 2.414062 56.714844 L 2.414062 57.765625 L 12.425781 57.765625 L 12.425781 56.714844 L 12.859375 56.714844 L 12.859375 58.203125 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.140625 56.109375 L 9.757812 56.109375 C 9.757812 55.855469 9.738281 55.652344 9.699219 55.496094 C 9.660156 55.335938 9.566406 55.257812 9.414062 55.257812 L 6.441406 55.257812 C 6.246094 55.257812 6.105469 55.285156 6.019531 55.347656 C 5.933594 55.402344 5.882812 55.488281 5.863281 55.597656 C 5.84375 55.707031 5.832031 55.878906 5.832031 56.109375 L 5.449219 56.109375 L 5.332031 54.53125 L 6.394531 54.53125 C 6.082031 54.382812 5.828125 54.164062 5.628906 53.878906 C 5.433594 53.59375 5.332031 53.285156 5.332031 52.949219 C 5.332031 52.449219 5.453125 52.070312 5.695312 51.816406 C 5.933594 51.5625 6.304688 51.4375 6.800781 51.4375 L 9.414062 51.4375 C 9.566406 51.4375 9.660156 51.355469 9.699219 51.199219 C 9.738281 51.039062 9.757812 50.835938 9.757812 50.585938 L 10.140625 50.585938 L 10.140625 53.078125 L 9.757812 53.078125 C 9.757812 52.832031 9.738281 52.628906 9.699219 52.46875 C 9.660156 52.308594 9.566406 52.226562 9.414062 52.226562 L 6.828125 52.226562 C 6.476562 52.226562 6.1875 52.277344 5.957031 52.382812 C 5.730469 52.484375 5.613281 52.695312 5.613281 53.011719 C 5.613281 53.433594 5.78125 53.78125 6.121094 54.054688 C 6.457031 54.324219 6.839844 54.460938 7.269531 54.460938 L 9.414062 54.460938 C 9.566406 54.460938 9.660156 54.378906 9.699219 54.21875 C 9.738281 54.058594 9.757812 53.859375 9.757812 53.617188 L 10.140625 53.617188 L 10.140625 56.109375 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.265625 47.597656 C 10.265625 48.03125 10.152344 48.433594 9.933594 48.808594 C 9.710938 49.179688 9.414062 49.476562 9.042969 49.6875 C 8.667969 49.902344 8.261719 50.011719 7.824219 50.011719 C 7.492188 50.011719 7.171875 49.953125 6.863281 49.835938 C 6.554688 49.71875 6.28125 49.550781 6.039062 49.324219 C 5.796875 49.101562 5.605469 48.84375 5.46875 48.550781 C 5.332031 48.257812 5.261719 47.941406 5.261719 47.597656 C 5.261719 47.152344 5.382812 46.746094 5.617188 46.378906 C 5.855469 46.011719 6.171875 45.71875 6.566406 45.507812 C 6.960938 45.292969 7.378906 45.1875 7.824219 45.1875 C 8.257812 45.1875 8.664062 45.296875 9.039062 45.511719 C 9.414062 45.730469 9.710938 46.023438 9.933594 46.390625 C 10.152344 46.761719 10.265625 47.164062 10.265625 47.597656 Z M 9.941406 47.597656 C 9.941406 47.015625 9.730469 46.628906 9.3125 46.433594 C 8.890625 46.238281 8.355469 46.144531 7.703125 46.144531 C 7.339844 46.144531 7.035156 46.160156 6.796875 46.203125 C 6.554688 46.242188 6.339844 46.324219 6.144531 46.453125 C 6.027344 46.535156 5.921875 46.640625 5.828125 46.765625 C 5.738281 46.890625 5.667969 47.023438 5.621094 47.164062 C 5.574219 47.304688 5.550781 47.449219 5.550781 47.597656 C 5.550781 47.824219 5.601562 48.039062 5.707031 48.242188 C 5.808594 48.445312 5.957031 48.613281 6.144531 48.753906 C 6.351562 48.882812 6.578125 48.96875 6.824219 49.007812 C 7.070312 49.042969 7.363281 49.0625 7.703125 49.0625 C 8.109375 49.0625 8.472656 49.027344 8.796875 48.957031 C 9.121094 48.886719 9.394531 48.742188 9.613281 48.527344 C 9.832031 48.3125 9.941406 48.003906 9.941406 47.597656 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.140625 44.53125 L 9.757812 44.53125 C 9.757812 44.285156 9.738281 44.085938 9.699219 43.921875 C 9.660156 43.761719 9.566406 43.683594 9.414062 43.683594 L 6.441406 43.683594 C 6.246094 43.683594 6.105469 43.710938 6.019531 43.769531 C 5.933594 43.828125 5.882812 43.914062 5.863281 44.023438 C 5.84375 44.132812 5.832031 44.300781 5.832031 44.53125 L 5.449219 44.53125 L 5.332031 42.972656 L 6.394531 42.972656 C 6.078125 42.859375 5.824219 42.695312 5.628906 42.480469 C 5.429688 42.261719 5.332031 42 5.332031 41.691406 C 5.332031 41.476562 5.398438 41.28125 5.523438 41.113281 C 5.652344 40.941406 5.820312 40.859375 6.03125 40.859375 C 6.160156 40.859375 6.273438 40.90625 6.371094 40.996094 C 6.46875 41.09375 6.519531 41.207031 6.519531 41.34375 C 6.519531 41.480469 6.46875 41.597656 6.375 41.691406 C 6.277344 41.789062 6.164062 41.835938 6.03125 41.835938 C 5.835938 41.835938 5.699219 41.765625 5.613281 41.625 L 5.613281 41.691406 C 5.613281 41.984375 5.722656 42.222656 5.933594 42.40625 C 6.148438 42.59375 6.410156 42.726562 6.726562 42.804688 C 7.039062 42.882812 7.339844 42.921875 7.625 42.921875 L 9.414062 42.921875 C 9.644531 42.921875 9.757812 42.570312 9.757812 41.867188 L 10.140625 41.867188 L 10.140625 44.53125 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.140625 40.183594 L 9.757812 40.183594 C 9.757812 39.933594 9.738281 39.726562 9.699219 39.570312 C 9.660156 39.410156 9.566406 39.332031 9.414062 39.332031 L 6.441406 39.332031 C 6.246094 39.332031 6.105469 39.359375 6.019531 39.421875 C 5.933594 39.480469 5.882812 39.5625 5.863281 39.671875 C 5.84375 39.78125 5.832031 39.953125 5.832031 40.183594 L 5.449219 40.183594 L 5.332031 38.605469 L 6.394531 38.605469 C 6.082031 38.457031 5.828125 38.238281 5.628906 37.953125 C 5.433594 37.671875 5.332031 37.359375 5.332031 37.023438 C 5.332031 36.191406 5.675781 35.699219 6.355469 35.550781 C 6.050781 35.40625 5.800781 35.195312 5.613281 34.914062 C 5.425781 34.636719 5.332031 34.328125 5.332031 33.996094 C 5.332031 33.671875 5.386719 33.394531 5.492188 33.164062 C 5.597656 32.9375 5.761719 32.769531 5.980469 32.65625 C 6.199219 32.542969 6.472656 32.484375 6.800781 32.484375 L 9.414062 32.484375 C 9.566406 32.484375 9.660156 32.40625 9.699219 32.246094 C 9.738281 32.085938 9.757812 31.882812 9.757812 31.636719 L 10.140625 31.636719 L 10.140625 34.128906 L 9.757812 34.128906 C 9.757812 33.882812 9.738281 33.679688 9.699219 33.519531 C 9.660156 33.355469 9.566406 33.277344 9.414062 33.277344 L 6.828125 33.277344 C 6.464844 33.277344 6.171875 33.328125 5.949219 33.433594 C 5.726562 33.535156 5.613281 33.746094 5.613281 34.066406 C 5.613281 34.488281 5.78125 34.832031 6.121094 35.101562 C 6.457031 35.375 6.839844 35.511719 7.269531 35.511719 L 9.414062 35.511719 C 9.566406 35.511719 9.660156 35.429688 9.699219 35.273438 C 9.738281 35.113281 9.757812 34.910156 9.757812 34.660156 L 10.140625 34.660156 L 10.140625 37.152344 L 9.757812 37.152344 C 9.757812 36.90625 9.738281 36.703125 9.699219 36.542969 C 9.660156 36.382812 9.566406 36.300781 9.414062 36.300781 L 6.828125 36.300781 C 6.476562 36.300781 6.1875 36.355469 5.957031 36.457031 C 5.730469 36.5625 5.613281 36.769531 5.613281 37.085938 C 5.613281 37.507812 5.78125 37.855469 6.121094 38.128906 C 6.457031 38.398438 6.839844 38.535156 7.269531 38.535156 L 9.414062 38.535156 C 9.566406 38.535156 9.660156 38.453125 9.699219 38.296875 C 9.738281 38.132812 9.757812 37.933594 9.757812 37.691406 L 10.140625 37.691406 L 10.140625 40.183594 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 9.074219 30.902344 C 8.640625 30.902344 8.289062 30.730469 8.019531 30.390625 C 7.75 30.050781 7.558594 29.644531 7.445312 29.164062 C 7.335938 28.6875 7.28125 28.234375 7.28125 27.804688 L 6.828125 27.804688 C 6.621094 27.804688 6.417969 27.851562 6.222656 27.945312 C 6.023438 28.035156 5.863281 28.167969 5.738281 28.34375 C 5.613281 28.515625 5.550781 28.710938 5.550781 28.921875 C 5.550781 29.398438 5.660156 29.765625 5.875 30.015625 C 5.875 29.878906 5.925781 29.765625 6.03125 29.675781 C 6.136719 29.585938 6.257812 29.539062 6.394531 29.539062 C 6.539062 29.539062 6.664062 29.59375 6.765625 29.691406 C 6.871094 29.796875 6.921875 29.914062 6.921875 30.058594 C 6.921875 30.203125 6.871094 30.328125 6.765625 30.433594 C 6.664062 30.535156 6.539062 30.585938 6.394531 30.585938 C 6.011719 30.585938 5.726562 30.410156 5.542969 30.066406 C 5.355469 29.71875 5.261719 29.335938 5.261719 28.921875 C 5.261719 28.621094 5.324219 28.324219 5.449219 28.027344 C 5.574219 27.730469 5.757812 27.488281 5.988281 27.300781 C 6.226562 27.109375 6.5 27.015625 6.8125 27.015625 L 9.261719 27.015625 C 9.402344 27.015625 9.53125 26.984375 9.652344 26.921875 C 9.769531 26.863281 9.832031 26.769531 9.832031 26.644531 C 9.832031 26.523438 9.769531 26.433594 9.648438 26.375 C 9.527344 26.316406 9.398438 26.289062 9.261719 26.289062 L 8.5625 26.289062 L 8.5625 25.972656 L 9.261719 25.972656 C 9.421875 25.972656 9.574219 26.011719 9.722656 26.097656 C 9.867188 26.179688 9.984375 26.296875 10.074219 26.441406 C 10.160156 26.585938 10.207031 26.738281 10.207031 26.902344 C 10.207031 27.117188 10.121094 27.300781 9.957031 27.453125 C 9.792969 27.605469 9.597656 27.691406 9.371094 27.710938 C 9.640625 27.84375 9.859375 28.042969 10.019531 28.304688 C 10.183594 28.566406 10.265625 28.847656 10.265625 29.148438 C 10.265625 29.421875 10.222656 29.691406 10.140625 29.960938 C 10.058594 30.226562 9.929688 30.449219 9.753906 30.632812 C 9.578125 30.8125 9.351562 30.902344 9.074219 30.902344 Z M 9.074219 30.015625 C 9.328125 30.015625 9.542969 29.921875 9.714844 29.734375 C 9.890625 29.546875 9.976562 29.324219 9.976562 29.070312 C 9.976562 28.835938 9.917969 28.625 9.800781 28.433594 C 9.683594 28.242188 9.523438 28.089844 9.324219 27.976562 C 9.121094 27.863281 8.910156 27.804688 8.6875 27.804688 L 7.554688 27.804688 C 7.554688 28.136719 7.609375 28.476562 7.71875 28.820312 C 7.824219 29.164062 7.992188 29.449219 8.222656 29.675781 C 8.453125 29.902344 8.738281 30.015625 9.074219 30.015625 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.140625 25.496094 L 9.757812 25.496094 C 9.757812 25.246094 9.738281 25.042969 9.699219 24.886719 C 9.660156 24.726562 9.566406 24.648438 9.414062 24.648438 L 3.703125 24.648438 C 3.507812 24.648438 3.367188 24.679688 3.28125 24.734375 C 3.191406 24.796875 3.136719 24.878906 3.117188 24.988281 C 3.097656 25.097656 3.089844 25.269531 3.089844 25.496094 L 2.707031 25.496094 L 2.589844 23.878906 L 9.414062 23.878906 C 9.566406 23.878906 9.660156 23.800781 9.699219 23.644531 C 9.738281 23.484375 9.757812 23.28125 9.757812 23.035156 L 10.140625 23.035156 L 10.140625 25.496094 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.140625 22.441406 L 9.757812 22.441406 C 9.757812 22.191406 9.738281 21.988281 9.699219 21.828125 C 9.660156 21.671875 9.566406 21.59375 9.414062 21.59375 L 6.441406 21.59375 C 6.164062 21.59375 5.992188 21.644531 5.929688 21.753906 C 5.863281 21.859375 5.832031 22.074219 5.832031 22.394531 L 5.449219 22.394531 L 5.332031 20.824219 L 9.414062 20.824219 C 9.566406 20.824219 9.660156 20.753906 9.699219 20.617188 C 9.738281 20.480469 9.757812 20.296875 9.757812 20.066406 L 10.140625 20.066406 Z M 3.464844 21.980469 C 3.304688 21.980469 3.164062 21.917969 3.042969 21.796875 C 2.921875 21.675781 2.859375 21.539062 2.859375 21.386719 C 2.859375 21.28125 2.886719 21.179688 2.941406 21.085938 C 2.996094 20.988281 3.074219 20.914062 3.167969 20.863281 C 3.265625 20.808594 3.363281 20.78125 3.464844 20.78125 C 3.621094 20.78125 3.757812 20.84375 3.878906 20.964844 C 3.996094 21.085938 4.054688 21.226562 4.054688 21.386719 C 4.054688 21.539062 3.996094 21.675781 3.878906 21.796875 C 3.757812 21.917969 3.621094 21.980469 3.464844 21.980469 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.140625 19.289062 C 10.140625 19.371094 10.097656 19.414062 10.019531 19.414062 L 9.933594 19.414062 C 9.902344 19.414062 9.878906 19.402344 9.859375 19.386719 L 5.738281 16.347656 L 5.738281 17.320312 C 5.738281 17.628906 5.757812 17.886719 5.796875 18.085938 C 5.835938 18.289062 5.910156 18.453125 6.015625 18.582031 C 6.125 18.710938 6.273438 18.804688 6.460938 18.863281 C 6.652344 18.921875 6.914062 18.949219 7.246094 18.949219 L 7.246094 19.261719 L 5.449219 19.140625 L 5.449219 15.5 C 5.449219 15.464844 5.460938 15.433594 5.488281 15.414062 C 5.511719 15.390625 5.539062 15.382812 5.574219 15.382812 L 5.632812 15.382812 C 5.65625 15.382812 5.679688 15.386719 5.707031 15.398438 L 9.832031 18.441406 L 9.832031 17.402344 C 9.832031 17.085938 9.8125 16.824219 9.769531 16.613281 C 9.730469 16.402344 9.636719 16.222656 9.488281 16.074219 C 9.347656 15.9375 9.164062 15.84375 8.929688 15.792969 C 8.699219 15.742188 8.410156 15.699219 8.066406 15.667969 L 8.066406 15.359375 L 10.140625 15.546875 L 10.140625 19.289062 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.265625 12.121094 C 10.265625 12.5625 10.148438 12.96875 9.914062 13.335938 C 9.683594 13.707031 9.371094 13.996094 8.984375 14.207031 C 8.597656 14.417969 8.1875 14.523438 7.753906 14.523438 C 7.328125 14.523438 6.925781 14.429688 6.542969 14.234375 C 6.164062 14.046875 5.855469 13.777344 5.617188 13.429688 C 5.382812 13.085938 5.261719 12.699219 5.261719 12.273438 C 5.261719 11.941406 5.320312 11.652344 5.429688 11.40625 C 5.542969 11.160156 5.699219 10.953125 5.894531 10.796875 C 6.09375 10.636719 6.328125 10.515625 6.597656 10.433594 C 6.863281 10.355469 7.160156 10.316406 7.484375 10.316406 C 7.578125 10.316406 7.625 10.351562 7.625 10.425781 L 7.625 13.574219 L 7.742188 13.574219 C 8.34375 13.574219 8.863281 13.453125 9.292969 13.210938 C 9.726562 12.96875 9.941406 12.570312 9.941406 12.019531 C 9.941406 11.796875 9.894531 11.59375 9.792969 11.402344 C 9.695312 11.210938 9.558594 11.046875 9.382812 10.910156 C 9.203125 10.769531 9.011719 10.675781 8.808594 10.625 C 8.785156 10.617188 8.765625 10.605469 8.746094 10.585938 C 8.726562 10.566406 8.714844 10.542969 8.714844 10.519531 L 8.714844 10.425781 C 8.714844 10.351562 8.761719 10.316406 8.855469 10.316406 C 9.265625 10.414062 9.605469 10.636719 9.867188 10.976562 C 10.132812 11.316406 10.265625 11.699219 10.265625 12.121094 Z M 7.355469 13.5625 L 7.355469 11.082031 C 7.082031 11.082031 6.804688 11.121094 6.527344 11.195312 C 6.246094 11.273438 6.015625 11.398438 5.828125 11.578125 C 5.644531 11.757812 5.550781 11.988281 5.550781 12.273438 C 5.550781 12.683594 5.742188 13 6.128906 13.226562 C 6.511719 13.449219 6.921875 13.5625 7.355469 13.5625 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 10.265625 7.28125 C 10.265625 7.710938 10.148438 8.105469 9.914062 8.457031 C 9.683594 8.8125 9.375 9.085938 8.996094 9.28125 C 8.617188 9.476562 8.214844 9.574219 7.789062 9.574219 C 7.351562 9.574219 6.945312 9.46875 6.566406 9.253906 C 6.191406 9.042969 5.890625 8.75 5.667969 8.382812 C 5.445312 8.011719 5.332031 7.605469 5.332031 7.164062 C 5.332031 6.898438 5.390625 6.648438 5.5 6.410156 C 5.613281 6.175781 5.769531 5.96875 5.96875 5.792969 L 3.703125 5.792969 C 3.507812 5.792969 3.367188 5.824219 3.28125 5.882812 C 3.191406 5.941406 3.136719 6.023438 3.117188 6.128906 C 3.097656 6.238281 3.089844 6.40625 3.089844 6.636719 L 2.707031 6.636719 L 2.589844 5.03125 L 9.148438 5.03125 C 9.339844 5.03125 9.480469 5.003906 9.570312 4.941406 C 9.65625 4.886719 9.710938 4.800781 9.730469 4.691406 C 9.75 4.582031 9.757812 4.414062 9.757812 4.1875 L 10.140625 4.1875 L 10.265625 5.828125 L 9.578125 5.828125 C 9.792969 6.015625 9.960938 6.238281 10.082031 6.496094 C 10.203125 6.753906 10.265625 7.015625 10.265625 7.28125 Z M 9.195312 8.390625 C 9.429688 8.269531 9.621094 8.105469 9.761719 7.898438 C 9.90625 7.691406 9.976562 7.464844 9.976562 7.21875 C 9.976562 6.917969 9.890625 6.640625 9.714844 6.386719 C 9.542969 6.136719 9.316406 5.949219 9.039062 5.828125 L 6.429688 5.828125 C 6.273438 5.910156 6.132812 6.015625 6.003906 6.144531 C 5.878906 6.273438 5.78125 6.421875 5.714844 6.582031 C 5.648438 6.742188 5.613281 6.914062 5.613281 7.09375 C 5.613281 7.472656 5.722656 7.777344 5.9375 8.007812 C 6.152344 8.238281 6.425781 8.402344 6.757812 8.492188 C 7.089844 8.585938 7.4375 8.628906 7.800781 8.628906 C 8.09375 8.628906 8.347656 8.617188 8.5625 8.585938 C 8.777344 8.558594 8.988281 8.492188 9.195312 8.390625 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,1.197815%);fill-opacity:1;" d="M 12.859375 3.585938 L 12.425781 3.585938 L 12.425781 2.527344 L 2.414062 2.527344 L 2.414062 3.585938 L 1.980469 3.585938 L 1.980469 2.09375 L 12.859375 2.09375 L 12.859375 3.585938 "/>
|
||||||
|
<path style="fill:none;stroke-width:15.0056;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,44.700623%,74.021912%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.90625 500.15625 L 854.0625 530.546875 L 1319.257812 563.320312 L 1784.414062 598.398438 L 2249.609375 635.859375 L 2714.765625 675.625 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:15.0056;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(85.15625%,32.493591%,9.790039%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.90625 1045 L 854.0625 1166.640625 L 1319.257812 1297.695312 L 1784.414062 1438.046875 L 2249.609375 1587.773438 L 2714.765625 1746.875 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 47.140625 35.449219 L 92.160156 35.449219 L 92.160156 12.1875 L 47.140625 12.1875 Z M 47.140625 35.449219 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 80.085938 20.328125 C 80.085938 20.292969 80.089844 20.265625 80.09375 20.253906 L 81.398438 15.046875 C 81.421875 14.941406 81.4375 14.859375 81.445312 14.800781 C 81.445312 14.707031 81.25 14.660156 80.859375 14.660156 C 80.796875 14.660156 80.765625 14.617188 80.765625 14.535156 C 80.769531 14.523438 80.777344 14.5 80.785156 14.460938 C 80.796875 14.421875 80.808594 14.390625 80.824219 14.371094 C 80.839844 14.351562 80.863281 14.34375 80.894531 14.34375 L 82.109375 14.242188 L 82.132812 14.242188 C 82.132812 14.253906 82.144531 14.261719 82.164062 14.269531 C 82.1875 14.28125 82.199219 14.285156 82.203125 14.289062 C 82.214844 14.316406 82.21875 14.339844 82.21875 14.359375 L 81.269531 18.125 C 81.488281 18.03125 81.765625 17.8125 82.09375 17.472656 C 82.425781 17.132812 82.683594 16.886719 82.867188 16.738281 C 83.054688 16.585938 83.289062 16.511719 83.570312 16.511719 C 83.738281 16.511719 83.878906 16.570312 83.996094 16.683594 C 84.113281 16.800781 84.171875 16.941406 84.171875 17.105469 C 84.171875 17.210938 84.148438 17.308594 84.105469 17.398438 C 84.058594 17.488281 84 17.558594 83.921875 17.617188 C 83.84375 17.671875 83.75 17.703125 83.644531 17.703125 C 83.546875 17.703125 83.464844 17.671875 83.398438 17.609375 C 83.332031 17.550781 83.300781 17.472656 83.300781 17.371094 C 83.300781 17.230469 83.347656 17.109375 83.453125 17.011719 C 83.550781 16.910156 83.675781 16.863281 83.820312 16.863281 C 83.761719 16.785156 83.671875 16.746094 83.550781 16.746094 C 83.371094 16.746094 83.199219 16.796875 83.03125 16.898438 C 82.867188 17 82.6875 17.148438 82.496094 17.339844 C 82.304688 17.535156 82.128906 17.710938 81.972656 17.867188 C 81.8125 18.027344 81.667969 18.148438 81.535156 18.230469 C 81.886719 18.273438 82.191406 18.367188 82.457031 18.511719 C 82.71875 18.65625 82.847656 18.878906 82.847656 19.179688 C 82.847656 19.238281 82.835938 19.3125 82.8125 19.40625 C 82.757812 19.632812 82.730469 19.816406 82.730469 19.953125 C 82.730469 20.222656 82.824219 20.355469 83.011719 20.355469 C 83.226562 20.355469 83.390625 20.238281 83.503906 20 C 83.617188 19.761719 83.710938 19.484375 83.785156 19.167969 C 83.796875 19.132812 83.820312 19.113281 83.855469 19.113281 L 83.960938 19.113281 C 83.984375 19.113281 84.003906 19.121094 84.023438 19.136719 C 84.039062 19.152344 84.050781 19.171875 84.050781 19.195312 C 84.050781 19.199219 84.046875 19.207031 84.039062 19.21875 C 83.8125 20.132812 83.464844 20.59375 82.992188 20.59375 C 82.824219 20.59375 82.671875 20.554688 82.539062 20.472656 C 82.410156 20.394531 82.308594 20.289062 82.238281 20.152344 C 82.167969 20.015625 82.132812 19.859375 82.132812 19.6875 C 82.132812 19.59375 82.144531 19.496094 82.171875 19.390625 C 82.191406 19.320312 82.203125 19.253906 82.203125 19.195312 C 82.203125 18.960938 82.101562 18.785156 81.894531 18.664062 C 81.691406 18.546875 81.453125 18.472656 81.1875 18.445312 L 80.730469 20.285156 C 80.707031 20.378906 80.664062 20.449219 80.597656 20.507812 C 80.53125 20.5625 80.453125 20.59375 80.363281 20.59375 C 80.289062 20.59375 80.222656 20.566406 80.167969 20.515625 C 80.113281 20.464844 80.085938 20.402344 80.085938 20.328125 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 85.320312 21.910156 C 85.128906 21.910156 84.972656 21.84375 84.855469 21.703125 C 84.738281 21.5625 84.660156 21.390625 84.617188 21.191406 C 84.574219 20.992188 84.550781 20.796875 84.550781 20.601562 L 84.550781 20.59375 C 84.550781 20.382812 84.570312 20.164062 84.609375 19.933594 C 84.648438 19.707031 84.707031 19.480469 84.785156 19.253906 C 84.863281 19.023438 84.945312 18.820312 85.03125 18.640625 C 85.09375 18.515625 85.175781 18.378906 85.277344 18.222656 C 85.375 18.066406 85.484375 17.925781 85.605469 17.792969 C 85.726562 17.660156 85.859375 17.550781 86 17.46875 C 86.140625 17.386719 86.28125 17.347656 86.421875 17.347656 L 86.425781 17.347656 C 86.582031 17.347656 86.710938 17.390625 86.8125 17.472656 C 86.914062 17.558594 86.996094 17.664062 87.054688 17.796875 C 87.113281 17.929688 87.152344 18.074219 87.175781 18.226562 C 87.195312 18.378906 87.207031 18.523438 87.207031 18.660156 C 87.207031 18.980469 87.164062 19.308594 87.078125 19.644531 C 86.992188 19.980469 86.871094 20.304688 86.714844 20.617188 C 86.65625 20.734375 86.574219 20.871094 86.472656 21.035156 C 86.371094 21.195312 86.265625 21.335938 86.148438 21.464844 C 86.03125 21.589844 85.90625 21.699219 85.761719 21.785156 C 85.617188 21.871094 85.472656 21.910156 85.324219 21.910156 Z M 85.332031 21.75 C 85.476562 21.75 85.613281 21.671875 85.742188 21.519531 C 85.871094 21.367188 85.984375 21.183594 86.082031 20.972656 C 86.179688 20.757812 86.265625 20.539062 86.339844 20.3125 C 86.414062 20.085938 86.46875 19.894531 86.503906 19.738281 L 85.203125 19.738281 C 85.136719 20.003906 85.082031 20.234375 85.042969 20.429688 C 85.003906 20.625 84.984375 20.816406 84.984375 21.003906 C 84.984375 21.5 85.101562 21.75 85.332031 21.75 Z M 85.25 19.515625 L 86.554688 19.515625 C 86.601562 19.328125 86.640625 19.171875 86.667969 19.046875 C 86.695312 18.921875 86.71875 18.789062 86.734375 18.648438 C 86.753906 18.507812 86.761719 18.378906 86.761719 18.261719 C 86.761719 17.761719 86.648438 17.511719 86.421875 17.511719 C 86.152344 17.511719 85.917969 17.730469 85.722656 18.164062 C 85.527344 18.601562 85.371094 19.050781 85.25 19.515625 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 87.605469 22.660156 C 87.65625 22.699219 87.730469 22.71875 87.828125 22.71875 C 87.917969 22.71875 88.003906 22.671875 88.074219 22.582031 C 88.148438 22.492188 88.199219 22.394531 88.226562 22.289062 L 88.429688 21.492188 C 88.460938 21.347656 88.476562 21.246094 88.476562 21.191406 C 88.476562 21.117188 88.457031 21.054688 88.414062 20.996094 C 88.375 20.941406 88.316406 20.910156 88.238281 20.910156 C 88.144531 20.910156 88.054688 20.941406 87.96875 21.003906 C 87.886719 21.0625 87.816406 21.140625 87.757812 21.230469 C 87.703125 21.324219 87.660156 21.414062 87.640625 21.511719 C 87.636719 21.53125 87.625 21.539062 87.605469 21.539062 L 87.550781 21.539062 C 87.527344 21.539062 87.515625 21.523438 87.515625 21.492188 L 87.515625 21.480469 C 87.542969 21.371094 87.59375 21.261719 87.660156 21.15625 C 87.730469 21.046875 87.820312 20.960938 87.917969 20.898438 C 88.023438 20.832031 88.132812 20.800781 88.25 20.800781 C 88.359375 20.800781 88.457031 20.828125 88.542969 20.890625 C 88.632812 20.945312 88.695312 21.023438 88.734375 21.121094 C 88.785156 21.03125 88.851562 20.957031 88.929688 20.894531 C 89.011719 20.832031 89.097656 20.800781 89.191406 20.800781 C 89.257812 20.800781 89.324219 20.8125 89.390625 20.832031 C 89.457031 20.855469 89.511719 20.890625 89.554688 20.9375 C 89.597656 20.980469 89.621094 21.039062 89.621094 21.109375 C 89.621094 21.1875 89.59375 21.257812 89.546875 21.3125 C 89.496094 21.363281 89.433594 21.394531 89.355469 21.394531 C 89.308594 21.394531 89.269531 21.378906 89.234375 21.347656 C 89.203125 21.3125 89.1875 21.273438 89.1875 21.230469 C 89.1875 21.164062 89.207031 21.109375 89.253906 21.0625 C 89.296875 21.019531 89.351562 20.988281 89.410156 20.976562 C 89.355469 20.933594 89.28125 20.910156 89.1875 20.910156 C 89.089844 20.910156 89.003906 20.957031 88.933594 21.046875 C 88.863281 21.136719 88.8125 21.234375 88.78125 21.347656 L 88.582031 22.144531 C 88.550781 22.265625 88.535156 22.363281 88.535156 22.441406 C 88.535156 22.515625 88.558594 22.582031 88.601562 22.636719 C 88.644531 22.691406 88.703125 22.71875 88.777344 22.71875 C 88.917969 22.71875 89.042969 22.65625 89.152344 22.53125 C 89.261719 22.410156 89.332031 22.273438 89.367188 22.125 C 89.375 22.109375 89.386719 22.101562 89.402344 22.101562 L 89.460938 22.101562 C 89.472656 22.101562 89.480469 22.105469 89.488281 22.113281 C 89.492188 22.121094 89.496094 22.128906 89.496094 22.136719 C 89.496094 22.140625 89.496094 22.148438 89.496094 22.15625 C 89.453125 22.328125 89.363281 22.488281 89.226562 22.628906 C 89.089844 22.769531 88.9375 22.839844 88.765625 22.839844 C 88.65625 22.839844 88.554688 22.808594 88.46875 22.75 C 88.378906 22.6875 88.316406 22.609375 88.277344 22.507812 C 88.230469 22.597656 88.167969 22.675781 88.085938 22.742188 C 88.003906 22.808594 87.914062 22.839844 87.820312 22.839844 C 87.753906 22.839844 87.6875 22.828125 87.617188 22.804688 C 87.550781 22.78125 87.496094 22.746094 87.453125 22.699219 C 87.414062 22.652344 87.394531 22.59375 87.394531 22.523438 C 87.394531 22.453125 87.417969 22.390625 87.464844 22.328125 C 87.515625 22.273438 87.578125 22.242188 87.652344 22.242188 C 87.699219 22.242188 87.738281 22.257812 87.773438 22.285156 C 87.808594 22.316406 87.828125 22.355469 87.828125 22.40625 C 87.828125 22.46875 87.804688 22.523438 87.761719 22.570312 C 87.71875 22.617188 87.667969 22.648438 87.605469 22.660156 "/>
|
||||||
|
<path style="fill:none;stroke-width:15.0056;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,44.700623%,74.021912%);stroke-opacity:1;stroke-miterlimit:10;" d="M 486.367188 1606.679688 L 784.882812 1606.679688 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 80.085938 31.300781 C 80.085938 31.265625 80.089844 31.242188 80.09375 31.226562 L 81.398438 26.019531 C 81.421875 25.914062 81.4375 25.832031 81.445312 25.773438 C 81.445312 25.679688 81.25 25.632812 80.859375 25.632812 C 80.796875 25.632812 80.765625 25.59375 80.765625 25.511719 C 80.769531 25.5 80.777344 25.472656 80.785156 25.433594 C 80.796875 25.394531 80.808594 25.367188 80.824219 25.347656 C 80.839844 25.328125 80.863281 25.316406 80.894531 25.316406 L 82.109375 25.21875 L 82.132812 25.21875 C 82.132812 25.226562 82.144531 25.234375 82.164062 25.242188 C 82.1875 25.253906 82.199219 25.261719 82.203125 25.265625 C 82.214844 25.292969 82.21875 25.316406 82.21875 25.335938 L 81.269531 29.097656 C 81.488281 29.003906 81.765625 28.785156 82.09375 28.445312 C 82.425781 28.105469 82.683594 27.863281 82.867188 27.710938 C 83.054688 27.5625 83.289062 27.484375 83.570312 27.484375 C 83.738281 27.484375 83.878906 27.542969 83.996094 27.660156 C 84.113281 27.773438 84.171875 27.914062 84.171875 28.078125 C 84.171875 28.183594 84.148438 28.28125 84.105469 28.371094 C 84.058594 28.460938 84 28.535156 83.921875 28.589844 C 83.84375 28.648438 83.75 28.675781 83.644531 28.675781 C 83.546875 28.675781 83.464844 28.644531 83.398438 28.585938 C 83.332031 28.523438 83.300781 28.445312 83.300781 28.347656 C 83.300781 28.203125 83.347656 28.082031 83.453125 27.984375 C 83.550781 27.886719 83.675781 27.835938 83.820312 27.835938 C 83.761719 27.757812 83.671875 27.71875 83.550781 27.71875 C 83.371094 27.71875 83.199219 27.769531 83.03125 27.871094 C 82.867188 27.972656 82.6875 28.121094 82.496094 28.316406 C 82.304688 28.507812 82.128906 28.683594 81.972656 28.84375 C 81.8125 29 81.667969 29.121094 81.535156 29.203125 C 81.886719 29.246094 82.191406 29.339844 82.457031 29.484375 C 82.71875 29.628906 82.847656 29.851562 82.847656 30.152344 C 82.847656 30.210938 82.835938 30.285156 82.8125 30.382812 C 82.757812 30.609375 82.730469 30.789062 82.730469 30.925781 C 82.730469 31.195312 82.824219 31.332031 83.011719 31.332031 C 83.226562 31.332031 83.390625 31.210938 83.503906 30.972656 C 83.617188 30.734375 83.710938 30.457031 83.785156 30.140625 C 83.796875 30.105469 83.820312 30.089844 83.855469 30.089844 L 83.960938 30.089844 C 83.984375 30.089844 84.003906 30.097656 84.023438 30.113281 C 84.039062 30.128906 84.050781 30.148438 84.050781 30.171875 C 84.050781 30.175781 84.046875 30.183594 84.039062 30.195312 C 83.8125 31.109375 83.464844 31.566406 82.992188 31.566406 C 82.824219 31.566406 82.671875 31.527344 82.539062 31.449219 C 82.410156 31.371094 82.308594 31.261719 82.238281 31.125 C 82.167969 30.988281 82.132812 30.835938 82.132812 30.660156 C 82.132812 30.570312 82.144531 30.46875 82.171875 30.363281 C 82.191406 30.292969 82.203125 30.230469 82.203125 30.171875 C 82.203125 29.9375 82.101562 29.757812 81.894531 29.640625 C 81.691406 29.519531 81.453125 29.449219 81.1875 29.421875 L 80.730469 31.261719 C 80.707031 31.351562 80.664062 31.425781 80.597656 31.480469 C 80.53125 31.535156 80.453125 31.566406 80.363281 31.566406 C 80.289062 31.566406 80.222656 31.539062 80.167969 31.488281 C 80.113281 31.4375 80.085938 31.375 80.085938 31.300781 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 85.320312 32.886719 C 85.128906 32.886719 84.972656 32.816406 84.855469 32.675781 C 84.738281 32.535156 84.660156 32.363281 84.617188 32.164062 C 84.574219 31.964844 84.550781 31.769531 84.550781 31.574219 L 84.550781 31.566406 C 84.550781 31.355469 84.570312 31.136719 84.609375 30.90625 C 84.648438 30.679688 84.707031 30.453125 84.785156 30.226562 C 84.863281 30 84.945312 29.796875 85.03125 29.617188 C 85.09375 29.492188 85.175781 29.351562 85.277344 29.195312 C 85.375 29.042969 85.484375 28.898438 85.605469 28.765625 C 85.726562 28.632812 85.859375 28.527344 86 28.445312 C 86.140625 28.363281 86.28125 28.320312 86.421875 28.320312 L 86.425781 28.320312 C 86.582031 28.320312 86.710938 28.363281 86.8125 28.445312 C 86.914062 28.53125 86.996094 28.640625 87.054688 28.773438 C 87.113281 28.90625 87.152344 29.046875 87.175781 29.199219 C 87.195312 29.351562 87.207031 29.496094 87.207031 29.632812 C 87.207031 29.953125 87.164062 30.28125 87.078125 30.617188 C 86.992188 30.953125 86.871094 31.277344 86.714844 31.589844 C 86.65625 31.710938 86.574219 31.847656 86.472656 32.007812 C 86.371094 32.167969 86.265625 32.3125 86.148438 32.4375 C 86.03125 32.566406 85.90625 32.671875 85.761719 32.757812 C 85.617188 32.84375 85.472656 32.886719 85.324219 32.886719 Z M 85.332031 32.722656 C 85.476562 32.722656 85.613281 32.644531 85.742188 32.492188 C 85.871094 32.339844 85.984375 32.160156 86.082031 31.945312 C 86.179688 31.734375 86.265625 31.511719 86.339844 31.285156 C 86.414062 31.058594 86.46875 30.867188 86.503906 30.710938 L 85.203125 30.710938 C 85.136719 30.976562 85.082031 31.207031 85.042969 31.402344 C 85.003906 31.597656 84.984375 31.789062 84.984375 31.976562 C 84.984375 32.476562 85.101562 32.722656 85.332031 32.722656 Z M 85.25 30.488281 L 86.554688 30.488281 C 86.601562 30.300781 86.640625 30.144531 86.667969 30.019531 C 86.695312 29.894531 86.71875 29.761719 86.734375 29.621094 C 86.753906 29.480469 86.761719 29.351562 86.761719 29.234375 C 86.761719 28.734375 86.648438 28.484375 86.421875 28.484375 C 86.152344 28.484375 85.917969 28.703125 85.722656 29.136719 C 85.527344 29.574219 85.371094 30.023438 85.25 30.488281 "/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 87.472656 33.8125 C 87.453125 33.8125 87.441406 33.800781 87.441406 33.773438 C 87.441406 33.757812 87.441406 33.746094 87.445312 33.738281 C 87.527344 33.601562 87.625 33.46875 87.738281 33.34375 C 87.851562 33.214844 87.980469 33.085938 88.125 32.953125 C 88.269531 32.824219 88.414062 32.695312 88.558594 32.566406 C 88.703125 32.4375 88.824219 32.320312 88.917969 32.21875 L 88.898438 32.21875 C 88.832031 32.21875 88.734375 32.199219 88.605469 32.15625 C 88.476562 32.113281 88.378906 32.089844 88.308594 32.089844 C 88.226562 32.089844 88.148438 32.109375 88.074219 32.144531 C 88 32.179688 87.953125 32.230469 87.933594 32.300781 C 87.929688 32.324219 87.917969 32.335938 87.898438 32.335938 L 87.84375 32.335938 C 87.820312 32.335938 87.808594 32.320312 87.808594 32.289062 L 87.808594 32.273438 C 87.832031 32.1875 87.871094 32.105469 87.921875 32.03125 C 87.976562 31.953125 88.042969 31.890625 88.121094 31.84375 C 88.199219 31.796875 88.28125 31.773438 88.367188 31.773438 C 88.425781 31.773438 88.472656 31.785156 88.511719 31.8125 C 88.550781 31.839844 88.597656 31.878906 88.648438 31.9375 C 88.703125 31.996094 88.746094 32.039062 88.777344 32.0625 C 88.8125 32.085938 88.855469 32.097656 88.90625 32.097656 C 88.972656 32.097656 89.03125 32.066406 89.082031 32.007812 C 89.136719 31.949219 89.1875 31.875 89.238281 31.785156 C 89.246094 31.777344 89.257812 31.773438 89.269531 31.773438 L 89.320312 31.773438 C 89.332031 31.773438 89.34375 31.777344 89.347656 31.78125 C 89.351562 31.789062 89.355469 31.796875 89.355469 31.808594 C 89.355469 31.820312 89.355469 31.832031 89.351562 31.839844 C 89.269531 31.980469 89.171875 32.109375 89.066406 32.230469 C 88.957031 32.351562 88.816406 32.492188 88.644531 32.648438 C 88.46875 32.804688 88.324219 32.9375 88.203125 33.042969 C 88.085938 33.152344 87.972656 33.261719 87.867188 33.375 C 87.890625 33.367188 87.925781 33.363281 87.96875 33.363281 C 88.039062 33.363281 88.136719 33.382812 88.261719 33.425781 C 88.390625 33.46875 88.488281 33.492188 88.558594 33.492188 C 88.632812 33.492188 88.707031 33.476562 88.785156 33.441406 C 88.859375 33.410156 88.925781 33.363281 88.980469 33.304688 C 89.035156 33.246094 89.074219 33.179688 89.09375 33.105469 C 89.101562 33.085938 89.113281 33.074219 89.128906 33.074219 L 89.1875 33.074219 C 89.199219 33.074219 89.207031 33.078125 89.214844 33.085938 C 89.21875 33.09375 89.222656 33.105469 89.222656 33.117188 C 89.222656 33.121094 89.222656 33.125 89.222656 33.128906 C 89.195312 33.246094 89.144531 33.355469 89.074219 33.457031 C 89.003906 33.558594 88.917969 33.644531 88.820312 33.710938 C 88.71875 33.78125 88.613281 33.8125 88.5 33.8125 C 88.441406 33.8125 88.394531 33.800781 88.355469 33.773438 C 88.316406 33.746094 88.269531 33.703125 88.214844 33.644531 C 88.160156 33.585938 88.113281 33.542969 88.082031 33.519531 C 88.046875 33.492188 88.007812 33.480469 87.960938 33.480469 C 87.8125 33.480469 87.675781 33.585938 87.558594 33.796875 C 87.546875 33.808594 87.539062 33.8125 87.527344 33.8125 L 87.472656 33.8125 "/>
|
||||||
|
<path style="fill:none;stroke-width:15.0056;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(85.15625%,32.493591%,9.790039%);stroke-opacity:1;stroke-miterlimit:10;" d="M 486.367188 1496.953125 L 784.882812 1496.953125 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
<path style="fill:none;stroke-width:5.00062;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 471.40625 1435.507812 L 921.601562 1435.507812 L 921.601562 1668.125 L 471.40625 1668.125 Z M 471.40625 1435.507812 " transform="matrix(0.1,0,0,-0.1,0,179)"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 141 KiB |
54
figs/stiffness_cube_size.tex
Normal file
54
figs/stiffness_cube_size.tex
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
% This file was created by matlab2tikz.
|
||||||
|
%
|
||||||
|
\definecolor{mycolor1}{rgb}{0.00000,0.44700,0.74100}%
|
||||||
|
\definecolor{mycolor2}{rgb}{0.85000,0.32500,0.09800}%
|
||||||
|
%
|
||||||
|
\begin{tikzpicture}
|
||||||
|
|
||||||
|
\begin{axis}[%
|
||||||
|
width=3.23in,
|
||||||
|
height=1.99in,
|
||||||
|
at={(0.528in,0.42in)},
|
||||||
|
scale only axis,
|
||||||
|
separate axis lines,
|
||||||
|
every outer x axis line/.append style={black},
|
||||||
|
every x tick label/.append style={font=\color{black}},
|
||||||
|
every x tick/.append style={black},
|
||||||
|
xmin=250,
|
||||||
|
xmax=350,
|
||||||
|
xlabel={Cube Size [mm]},
|
||||||
|
every outer y axis line/.append style={black},
|
||||||
|
every y tick label/.append style={font=\color{black}},
|
||||||
|
every y tick/.append style={black},
|
||||||
|
ymin=0,
|
||||||
|
ymax=0.0816666666666492,
|
||||||
|
ylabel={Rotational stiffnes [normalized]},
|
||||||
|
axis background/.style={fill=white},
|
||||||
|
xmajorgrids,
|
||||||
|
ymajorgrids,
|
||||||
|
legend style={at={(0.6,2.222)}, anchor=south west, legend cell align=left, align=left, draw=black}
|
||||||
|
]
|
||||||
|
\addplot [color=mycolor1, line width=1.5pt]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
250 0.0106166666666923\\
|
||||||
|
270 0.0123500000000263\\
|
||||||
|
290 0.0142166666666412\\
|
||||||
|
310 0.0162166666666508\\
|
||||||
|
330 0.0183499999999981\\
|
||||||
|
350 0.0206166666666832\\
|
||||||
|
};
|
||||||
|
\addlegendentry{$k_{\theta_x}$}
|
||||||
|
|
||||||
|
\addplot [color=mycolor2, line width=1.5pt]
|
||||||
|
table[row sep=crcr]{%
|
||||||
|
250 0.0416666666666856\\
|
||||||
|
270 0.0486000000000217\\
|
||||||
|
290 0.0560666666666521\\
|
||||||
|
310 0.0640666666666903\\
|
||||||
|
330 0.0726000000000226\\
|
||||||
|
350 0.0816666666666492\\
|
||||||
|
};
|
||||||
|
\addlegendentry{$k_{\theta_z}$}
|
||||||
|
|
||||||
|
\end{axis}
|
||||||
|
\end{tikzpicture}%
|
@ -25,7 +25,7 @@
|
|||||||
:END:
|
:END:
|
||||||
|
|
||||||
* Identification
|
* Identification
|
||||||
#+begin_src matlab :results none :exports none
|
#+begin_src matlab :results none :exports none :noweb yes
|
||||||
<<matlab-init>>
|
<<matlab-init>>
|
||||||
addpath('src');
|
addpath('src');
|
||||||
addpath('library');
|
addpath('library');
|
||||||
@ -37,7 +37,11 @@
|
|||||||
|
|
||||||
The hexapod structure and Sample structure are initialized.
|
The hexapod structure and Sample structure are initialized.
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
initializeHexapod();
|
stewart = initializeGeneralConfiguration();
|
||||||
|
stewart = computeGeometricalProperties(stewart);
|
||||||
|
stewart = initializeMechanicalElements(stewart);
|
||||||
|
save('./mat/stewart.mat', 'stewart');
|
||||||
|
|
||||||
initializeSample();
|
initializeSample();
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -45,92 +49,111 @@ The hexapod structure and Sample structure are initialized.
|
|||||||
G = identifyPlant();
|
G = identifyPlant();
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
freqs = logspace(2, 4, 1000);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* Cartesian Plot
|
* Cartesian Plot
|
||||||
From a force applied in the Cartesian frame to a displacement in the Cartesian frame.
|
From a force applied in the Cartesian frame to a displacement in the Cartesian frame.
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
bode(G.G_cart(1, 1));
|
plot(freqs, abs(squeeze(freqresp(G.G_cart(1, 1), freqs, 'Hz'))));
|
||||||
bode(G.G_cart(3, 3));
|
plot(freqs, abs(squeeze(freqresp(G.G_cart(2, 1), freqs, 'Hz'))));
|
||||||
|
plot(freqs, abs(squeeze(freqresp(G.G_cart(3, 1), freqs, 'Hz'))));
|
||||||
hold off;
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Amplitude');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
figure;
|
||||||
|
bode(G.G_cart, freqs);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* From a force to force sensor
|
* From a force to force sensor
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
bode(G.G_forc(1, 1));
|
plot(freqs, abs(squeeze(freqresp(G.G_forc(1, 1), freqs, 'Hz'))), 'k-', 'DisplayName', '$F_{m_i}/F_{i}$');
|
||||||
bode(G.G_forc(2, 2));
|
|
||||||
bode(G.G_forc(3, 3));
|
|
||||||
bode(G.G_forc(4, 4));
|
|
||||||
bode(G.G_forc(5, 5));
|
|
||||||
bode(G.G_forc(6, 6));
|
|
||||||
hold off;
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Amplitude [N/N]');
|
||||||
|
legend('location', 'southeast');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
bode(G.G_forc(1, 1));
|
plot(freqs, abs(squeeze(freqresp(G.G_forc(1, 1), freqs, 'Hz'))), 'k-', 'DisplayName', '$F_{m_i}/F_{i}$');
|
||||||
bode(G.G_forc(1, 2));
|
plot(freqs, abs(squeeze(freqresp(G.G_forc(2, 1), freqs, 'Hz'))), 'k--', 'DisplayName', '$F_{m_j}/F_{i}$');
|
||||||
bode(G.G_forc(1, 3));
|
plot(freqs, abs(squeeze(freqresp(G.G_forc(3, 1), freqs, 'Hz'))), 'k--', 'HandleVisibility', 'off');
|
||||||
bode(G.G_forc(1, 4));
|
plot(freqs, abs(squeeze(freqresp(G.G_forc(4, 1), freqs, 'Hz'))), 'k--', 'HandleVisibility', 'off');
|
||||||
bode(G.G_forc(1, 5));
|
plot(freqs, abs(squeeze(freqresp(G.G_forc(5, 1), freqs, 'Hz'))), 'k--', 'HandleVisibility', 'off');
|
||||||
bode(G.G_forc(1, 6));
|
plot(freqs, abs(squeeze(freqresp(G.G_forc(6, 1), freqs, 'Hz'))), 'k--', 'HandleVisibility', 'off');
|
||||||
hold off;
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Amplitude [N/N]');
|
||||||
|
legend('location', 'southeast');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* From a force applied in the leg to the displacement of the leg
|
* From a force applied in the leg to the displacement of the leg
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
bode(G.G_legs(1, 1));
|
plot(freqs, abs(squeeze(freqresp(G.G_legs(1, 1), freqs, 'Hz'))), 'k-', 'DisplayName', '$D_{i}/F_{i}$');
|
||||||
bode(G.G_legs(2, 2));
|
|
||||||
bode(G.G_legs(3, 3));
|
|
||||||
bode(G.G_legs(4, 4));
|
|
||||||
bode(G.G_legs(5, 5));
|
|
||||||
bode(G.G_legs(6, 6));
|
|
||||||
hold off;
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Amplitude [m/N]');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
bode(G.G_legs(1, 1));
|
plot(freqs, abs(squeeze(freqresp(G.G_legs(1, 1), freqs, 'Hz'))), 'k-', 'DisplayName', '$D_{i}/F_{i}$');
|
||||||
bode(G.G_legs(1, 2));
|
plot(freqs, abs(squeeze(freqresp(G.G_legs(2, 1), freqs, 'Hz'))), 'k--', 'DisplayName', '$D_{j}/F_{i}$');
|
||||||
bode(G.G_legs(1, 3));
|
plot(freqs, abs(squeeze(freqresp(G.G_legs(3, 1), freqs, 'Hz'))), 'k--', 'HandleVisibility', 'off');
|
||||||
bode(G.G_legs(1, 4));
|
plot(freqs, abs(squeeze(freqresp(G.G_legs(4, 1), freqs, 'Hz'))), 'k--', 'HandleVisibility', 'off');
|
||||||
bode(G.G_legs(1, 5));
|
plot(freqs, abs(squeeze(freqresp(G.G_legs(5, 1), freqs, 'Hz'))), 'k--', 'HandleVisibility', 'off');
|
||||||
bode(G.G_legs(1, 6));
|
plot(freqs, abs(squeeze(freqresp(G.G_legs(6, 1), freqs, 'Hz'))), 'k--', 'HandleVisibility', 'off');
|
||||||
hold off;
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Amplitude [m/N]');
|
||||||
|
legend('location', 'northeast');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Transmissibility
|
* Transmissibility
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
bode(G.G_tran(1, 1));
|
plot(freqs, abs(squeeze(freqresp(G.G_tran(1, 1), freqs, 'Hz'))));
|
||||||
bode(G.G_tran(2, 2));
|
plot(freqs, abs(squeeze(freqresp(G.G_tran(2, 2), freqs, 'Hz'))));
|
||||||
bode(G.G_tran(3, 3));
|
plot(freqs, abs(squeeze(freqresp(G.G_tran(3, 3), freqs, 'Hz'))));
|
||||||
hold off;
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Amplitude [m/m]');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
bode(G.G_tran(4, 4));
|
plot(freqs, abs(squeeze(freqresp(G.G_tran(4, 4), freqs, 'Hz'))));
|
||||||
bode(G.G_tran(5, 5));
|
plot(freqs, abs(squeeze(freqresp(G.G_tran(5, 5), freqs, 'Hz'))));
|
||||||
bode(G.G_tran(6, 6));
|
plot(freqs, abs(squeeze(freqresp(G.G_tran(6, 6), freqs, 'Hz'))));
|
||||||
hold off;
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Amplitude [$\frac{rad/s}{rad/s}$]');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
bode(G.G_tran(1, 1));
|
plot(freqs, abs(squeeze(freqresp(G.G_tran(1, 1), freqs, 'Hz'))));
|
||||||
bode(G.G_tran(2, 1));
|
plot(freqs, abs(squeeze(freqresp(G.G_tran(1, 2), freqs, 'Hz'))));
|
||||||
bode(G.G_tran(3, 1));
|
plot(freqs, abs(squeeze(freqresp(G.G_tran(1, 3), freqs, 'Hz'))));
|
||||||
hold off;
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Amplitude [m/m]');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Compliance
|
* Compliance
|
||||||
@ -139,10 +162,12 @@ From a force applied in the Cartesian frame to a relative displacement of the mo
|
|||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
bode(G.G_comp(1, 1));
|
plot(freqs, abs(squeeze(freqresp(G.G_comp(1, 1), freqs, 'Hz'))));
|
||||||
bode(G.G_comp(2, 2));
|
plot(freqs, abs(squeeze(freqresp(G.G_comp(2, 2), freqs, 'Hz'))));
|
||||||
bode(G.G_comp(3, 3));
|
plot(freqs, abs(squeeze(freqresp(G.G_comp(3, 3), freqs, 'Hz'))));
|
||||||
hold off;
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Amplitude [m/N]');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Inertial
|
* Inertial
|
||||||
@ -151,10 +176,12 @@ From a force applied on the Cartesian frame to the absolute displacement of the
|
|||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
bode(G.G_iner(1, 1));
|
plot(freqs, abs(squeeze(freqresp(G.G_iner(1, 1), freqs, 'Hz'))));
|
||||||
bode(G.G_iner(2, 2));
|
plot(freqs, abs(squeeze(freqresp(G.G_iner(2, 2), freqs, 'Hz'))));
|
||||||
bode(G.G_iner(3, 3));
|
plot(freqs, abs(squeeze(freqresp(G.G_iner(3, 3), freqs, 'Hz'))));
|
||||||
hold off;
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Amplitude [m/N]');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* identifyPlant
|
* identifyPlant
|
||||||
|
25
index.html
25
index.html
@ -3,7 +3,7 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2019-03-22 ven. 12:03 -->
|
<!-- 2019-03-25 lun. 18:11 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>Stewart Platform Studies</title>
|
<title>Stewart Platform Studies</title>
|
||||||
@ -253,36 +253,37 @@ for the JavaScript code in this tag.
|
|||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org2b3b6a5">1. Simscape Model</a></li>
|
<li><a href="#org431e1f9">1. Simscape Model</a></li>
|
||||||
<li><a href="#org5dc817d">2. Architecture Study</a></li>
|
<li><a href="#org27d326c">2. Architecture Study</a></li>
|
||||||
<li><a href="#orgccde31a">3. Motion Control</a></li>
|
<li><a href="#orgd097f1e">3. Motion Control</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org2b3b6a5" class="outline-2">
|
<div id="outline-container-org431e1f9" class="outline-2">
|
||||||
<h2 id="org2b3b6a5"><span class="section-number-2">1</span> Simscape Model</h2>
|
<h2 id="org431e1f9"><span class="section-number-2">1</span> Simscape Model</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li><a href="simscape-model.html">Model of the Stewart Platform</a></li>
|
<li><a href="simscape-model.html">Model of the Stewart Platform</a></li>
|
||||||
<li><a href="identification.html">Identification</a></li>
|
<li><a href="identification.html">Identification of the Simscape Model</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org5dc817d" class="outline-2">
|
<div id="outline-container-org27d326c" class="outline-2">
|
||||||
<h2 id="org5dc817d"><span class="section-number-2">2</span> Architecture Study</h2>
|
<h2 id="org27d326c"><span class="section-number-2">2</span> Architecture Study</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li><a href="kinematic-study.html">Kinematic Study</a></li>
|
<li><a href="kinematic-study.html">Kinematic Study</a></li>
|
||||||
<li><a href="stiffness-study.html">Stiffness Matrix Study</a></li>
|
<li><a href="stiffness-study.html">Stiffness Matrix Study</a></li>
|
||||||
<li>Jacobian Study</li>
|
<li>Jacobian Study</li>
|
||||||
|
<li><a href="cubic-configuration.html">Cubic Architecture</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgccde31a" class="outline-2">
|
<div id="outline-container-orgd097f1e" class="outline-2">
|
||||||
<h2 id="orgccde31a"><span class="section-number-2">3</span> Motion Control</h2>
|
<h2 id="orgd097f1e"><span class="section-number-2">3</span> Motion Control</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>Active Damping</li>
|
<li>Active Damping</li>
|
||||||
@ -294,7 +295,7 @@ for the JavaScript code in this tag.
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Thomas Dehaeze</p>
|
<p class="author">Author: Thomas Dehaeze</p>
|
||||||
<p class="date">Created: 2019-03-22 ven. 12:03</p>
|
<p class="date">Created: 2019-03-25 lun. 18:11</p>
|
||||||
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
@ -26,12 +26,13 @@
|
|||||||
|
|
||||||
* Simscape Model
|
* Simscape Model
|
||||||
- [[file:simscape-model.org][Model of the Stewart Platform]]
|
- [[file:simscape-model.org][Model of the Stewart Platform]]
|
||||||
- [[file:identification.org][Identification]]
|
- [[file:identification.org][Identification of the Simscape Model]]
|
||||||
|
|
||||||
* Architecture Study
|
* Architecture Study
|
||||||
- [[file:kinematic-study.org][Kinematic Study]]
|
- [[file:kinematic-study.org][Kinematic Study]]
|
||||||
- [[file:stiffness-study.org][Stiffness Matrix Study]]
|
- [[file:stiffness-study.org][Stiffness Matrix Study]]
|
||||||
- Jacobian Study
|
- Jacobian Study
|
||||||
|
- [[file:cubic-configuration.org][Cubic Architecture]]
|
||||||
|
|
||||||
* Motion Control
|
* Motion Control
|
||||||
- Active Damping
|
- Active Damping
|
||||||
|
@ -1,4 +1,28 @@
|
|||||||
#+TITLE: Kinematic Study of the Stewart Platform
|
#+TITLE: Kinematic Study of the Stewart Platform
|
||||||
|
:DRAWER:
|
||||||
|
#+STARTUP: overview
|
||||||
|
|
||||||
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="css/htmlize.css"/>
|
||||||
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="css/readtheorg.css"/>
|
||||||
|
#+HTML_HEAD: <script src="js/jquery.min.js"></script>
|
||||||
|
#+HTML_HEAD: <script src="js/bootstrap.min.js"></script>
|
||||||
|
#+HTML_HEAD: <script type="text/javascript" src="js/jquery.stickytableheaders.min.js"></script>
|
||||||
|
#+HTML_HEAD: <script type="text/javascript" src="js/readtheorg.js"></script>
|
||||||
|
|
||||||
|
#+LATEX_CLASS: cleanreport
|
||||||
|
#+LaTeX_CLASS_OPTIONS: [tocnp, secbreak, minted]
|
||||||
|
#+LaTeX_HEADER: \usepackage{svg}
|
||||||
|
#+LaTeX_HEADER: \newcommand{\authorFirstName}{Thomas}
|
||||||
|
#+LaTeX_HEADER: \newcommand{\authorLastName}{Dehaeze}
|
||||||
|
#+LaTeX_HEADER: \newcommand{\authorEmail}{dehaeze.thomas@gmail.com}
|
||||||
|
|
||||||
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
|
#+PROPERTY: header-args:matlab+ :exports both
|
||||||
|
#+PROPERTY: header-args:matlab+ :eval no-export
|
||||||
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
|
:END:
|
||||||
|
|
||||||
* Functions
|
* Functions
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
|
BIN
mat/sample.mat
BIN
mat/sample.mat
Binary file not shown.
BIN
mat/stewart.mat
BIN
mat/stewart.mat
Binary file not shown.
37
references.bib
Normal file
37
references.bib
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
@inproceedings{abbas14_vibrat_stewar_platf,
|
||||||
|
author = {Hussain Abbas and Huang Hai},
|
||||||
|
title = {Vibration isolation concepts for non-cubic Stewart Platform
|
||||||
|
using modal control},
|
||||||
|
booktitle = {Proceedings of 2014 11th International Bhurban Conference on
|
||||||
|
Applied Sciences \& Technology (IBCAST) Islamabad, Pakistan,
|
||||||
|
14th - 18th January, 2014},
|
||||||
|
year = 2014,
|
||||||
|
pages = {nil},
|
||||||
|
doi = {10.1109/ibcast.2014.6778139},
|
||||||
|
url = {https://doi.org/10.1109/ibcast.2014.6778139},
|
||||||
|
month = 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
@book{taghirad13_paral,
|
||||||
|
author = {Taghirad, Hamid},
|
||||||
|
title = {Parallel robots : mechanics and control},
|
||||||
|
year = 2013,
|
||||||
|
publisher = {CRC Press},
|
||||||
|
address = {Boca Raton, FL},
|
||||||
|
isbn = 9781466555778,
|
||||||
|
keywords = {favorite},
|
||||||
|
}
|
||||||
|
|
||||||
|
@article{geng94_six_degree_of_freed_activ,
|
||||||
|
author = {Z.J. Geng and L.S. Haynes},
|
||||||
|
title = {Six Degree-Of-Freedom Active Vibration Control Using the
|
||||||
|
Stewart Platforms},
|
||||||
|
journal = {IEEE Transactions on Control Systems Technology},
|
||||||
|
volume = 2,
|
||||||
|
number = 1,
|
||||||
|
pages = {45-53},
|
||||||
|
year = 1994,
|
||||||
|
doi = {10.1109/87.273110},
|
||||||
|
url = {https://doi.org/10.1109/87.273110},
|
||||||
|
keywords = {},
|
||||||
|
}
|
@ -3,7 +3,7 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2019-03-22 ven. 12:03 -->
|
<!-- 2019-03-25 lun. 11:18 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>Stewart Platform - Simscape Model</title>
|
<title>Stewart Platform - Simscape Model</title>
|
||||||
@ -275,42 +275,136 @@ for the JavaScript code in this tag.
|
|||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org9a10766">1. Function description and arguments</a></li>
|
<li><a href="#org527cc13">1. initializeGeneralConfiguration</a>
|
||||||
<li><a href="#orgb6911a1">2. Initialization of the stewart structure</a></li>
|
<ul>
|
||||||
<li><a href="#org030aed6">3. Bottom Plate</a></li>
|
<li><a href="#orgea5f8f5">1.1. Function description</a></li>
|
||||||
<li><a href="#orged8012a">4. Top Plate</a></li>
|
<li><a href="#org2db42cb">1.2. Optional Parameters</a></li>
|
||||||
<li><a href="#orgc74617a">5. Legs</a></li>
|
<li><a href="#org2f9279a">1.3. Geometry Description</a></li>
|
||||||
<li><a href="#org7cd2aa5">6. Ball Joints</a></li>
|
<li><a href="#org1409cf0">1.4. Compute Aa and Ab</a></li>
|
||||||
<li><a href="#org1d76ed9">7. More parameters are initialized</a></li>
|
<li><a href="#orgb91c416">1.5. Returns Stewart Structure</a></li>
|
||||||
<li><a href="#orge9faa26">8. Save the Stewart Structure</a></li>
|
</ul>
|
||||||
<li><a href="#orga207d03">9. initializeParameters Function</a></li>
|
</li>
|
||||||
<li><a href="#org724c1a1">10. initializeSample</a></li>
|
<li><a href="#orgc3aa910">2. computeGeometricalProperties</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#org180196f">2.1. Function description</a></li>
|
||||||
|
<li><a href="#org12cee4f">2.2. Optional Parameters</a></li>
|
||||||
|
<li><a href="#org0010af5">2.3. Rotation matrices</a></li>
|
||||||
|
<li><a href="#org98f4bad">2.4. Jacobian matrices</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a href="#orgb3e53d1">3. initializeMechanicalElements</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#orge7f185e">3.1. Function description</a></li>
|
||||||
|
<li><a href="#org6bd219d">3.2. Optional Parameters</a></li>
|
||||||
|
<li><a href="#org8d0d9c0">3.3. Bottom Plate</a></li>
|
||||||
|
<li><a href="#org23fd88c">3.4. Top Plate</a></li>
|
||||||
|
<li><a href="#org96d7dab">3.5. Legs</a></li>
|
||||||
|
<li><a href="#org66df86f">3.6. Ball Joints</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a href="#orgf3c4474">4. initializeSample</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#org1ec4152">4.1. Function description</a></li>
|
||||||
|
<li><a href="#orgcd3268d">4.2. Optional Parameters</a></li>
|
||||||
|
<li><a href="#org29ee9ed">4.3. Save the Sample structure</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org9a10766" class="outline-2">
|
|
||||||
<h2 id="org9a10766"><span class="section-number-2">1</span> Function description and arguments</h2>
|
|
||||||
<div class="outline-text-2" id="text-1">
|
|
||||||
<p>
|
<p>
|
||||||
The <code>initializeHexapod</code> function takes one structure that contains configurations for the hexapod and returns one structure representing the hexapod.
|
Stewart platforms are generated in multiple steps.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">function</span> <span style="color: #DCDCCC;">[</span><span style="color: #DFAF8F;">stewart</span><span style="color: #DCDCCC;">]</span> = <span style="color: #93E0E3;">initializeHexapod</span><span style="color: #DCDCCC;">(</span><span style="color: #DFAF8F;">opts_param</span><span style="color: #DCDCCC;">)</span>
|
<p>
|
||||||
</pre>
|
First, geometrical parameters are defined:
|
||||||
|
</p>
|
||||||
|
<ul class="org-ul">
|
||||||
|
<li>\({}^Aa_i\) - Position of the joints fixed to the fixed base w.r.t \(\{A\}\)</li>
|
||||||
|
<li>\({}^Ab_i\) - Position of the joints fixed to the mobile platform w.r.t \(\{A\}\)</li>
|
||||||
|
<li>\({}^Bb_i\) - Position of the joints fixed to the mobile platform w.r.t \(\{B\}\)</li>
|
||||||
|
<li>\(H\) - Total height of the mobile platform</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
These parameter are enough to determine all the kinematic properties of the platform like the Jacobian, stroke, stiffness, …
|
||||||
|
These geometrical parameters can be generated using different functions: <code>initializeCubicConfiguration</code> for cubic configuration or <code>initializeGeneralConfiguration</code> for more general configuration.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
A function <code>computeGeometricalProperties</code> is then used to compute:
|
||||||
|
</p>
|
||||||
|
<ul class="org-ul">
|
||||||
|
<li>\(J_f\) - Jacobian matrix for the force location</li>
|
||||||
|
<li>\(J_d\) - Jacobian matrix for displacement estimation</li>
|
||||||
|
<li>\(R_m\) - Rotation matrices to position the leg vectors</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Then, geometrical parameters are computed for all the mechanical elements with the function <code>initializeMechanicalElements</code>:
|
||||||
|
</p>
|
||||||
|
<ul class="org-ul">
|
||||||
|
<li>Shape of the platforms
|
||||||
|
<ul class="org-ul">
|
||||||
|
<li>External Radius</li>
|
||||||
|
<li>Internal Radius</li>
|
||||||
|
<li>Density</li>
|
||||||
|
<li>Thickness</li>
|
||||||
|
</ul></li>
|
||||||
|
<li>Shape of the Legs
|
||||||
|
<ul class="org-ul">
|
||||||
|
<li>Radius</li>
|
||||||
|
<li>Size of ball joint</li>
|
||||||
|
<li>Density</li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Other Parameters are defined for the Simscape simulation:
|
||||||
|
</p>
|
||||||
|
<ul class="org-ul">
|
||||||
|
<li>Sample mass, volume and position (<code>initializeSample</code> function)</li>
|
||||||
|
<li>Location of the inertial sensor</li>
|
||||||
|
<li>Location of the point for the differential measurements</li>
|
||||||
|
<li>Location of the Jacobian point for velocity/displacement computation</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div id="outline-container-org527cc13" class="outline-2">
|
||||||
|
<h2 id="org527cc13"><span class="section-number-2">1</span> initializeGeneralConfiguration</h2>
|
||||||
|
<div class="outline-text-2" id="text-1">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-orgea5f8f5" class="outline-3">
|
||||||
|
<h3 id="orgea5f8f5"><span class="section-number-3">1.1</span> Function description</h3>
|
||||||
|
<div class="outline-text-3" id="text-1-1">
|
||||||
|
<p>
|
||||||
|
The <code>initializeGeneralConfiguration</code> function takes one structure that contains configurations for the hexapod and returns one structure representing the Hexapod.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">function</span> <span style="color: #DCDCCC;">[</span><span style="color: #DFAF8F;">stewart</span><span style="color: #DCDCCC;">]</span> = <span style="color: #93E0E3;">initializeGeneralConfiguration</span><span style="color: #DCDCCC;">(</span><span style="color: #DFAF8F;">opts_param</span><span style="color: #DCDCCC;">)</span>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-org2db42cb" class="outline-3">
|
||||||
|
<h3 id="org2db42cb"><span class="section-number-3">1.2</span> Optional Parameters</h3>
|
||||||
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<p>
|
<p>
|
||||||
Default values for opts.
|
Default values for opts.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">opts = struct<span style="color: #DCDCCC;">(</span><span style="text-decoration: underline;">...</span>
|
<pre class="src src-matlab">opts = struct<span style="color: #DCDCCC;">(</span><span style="text-decoration: underline;">...</span>
|
||||||
<span style="color: #CC9393;">'height'</span>, <span style="color: #BFEBBF;">90</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Height of the platform [mm]</span>
|
<span style="color: #CC9393;">'H_tot'</span>, <span style="color: #BFEBBF;">90</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Height of the platform [mm]</span>
|
||||||
<span style="color: #CC9393;">'density'</span>, <span style="color: #BFEBBF;">8000</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Density of the material used for the hexapod [kg/m3]</span>
|
<span style="color: #CC9393;">'H_joint'</span>, <span style="color: #BFEBBF;">15</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Height of the joints [mm]</span>
|
||||||
<span style="color: #CC9393;">'k_ax'</span>, <span style="color: #BFEBBF;">1e8</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Stiffness of each actuator [N/m]</span>
|
<span style="color: #CC9393;">'H_plate'</span>, <span style="color: #BFEBBF;">10</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Thickness of the fixed and mobile platforms [mm]</span>
|
||||||
<span style="color: #CC9393;">'c_ax'</span>, <span style="color: #BFEBBF;">1000</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Damping of each actuator [N/(m/s)]</span>
|
<span style="color: #CC9393;">'R_bot'</span>, <span style="color: #BFEBBF;">100</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Radius where the legs articulations are positionned [mm]</span>
|
||||||
<span style="color: #CC9393;">'stroke'</span>, <span style="color: #BFEBBF;">50e</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">6</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Maximum stroke of each actuator [m]</span>
|
<span style="color: #CC9393;">'R_top'</span>, <span style="color: #BFEBBF;">80</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Radius where the legs articulations are positionned [mm]</span>
|
||||||
<span style="color: #CC9393;">'name', 'stewart'</span> <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Name of the file</span>
|
<span style="color: #CC9393;">'a_bot'</span>, <span style="color: #BFEBBF;">10</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Angle Offset [deg]</span>
|
||||||
|
<span style="color: #CC9393;">'a_top'</span>, <span style="color: #BFEBBF;">40</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Angle Offset [deg]</span>
|
||||||
|
<span style="color: #CC9393;">'da_top'</span>, <span style="color: #BFEBBF;">0</span> <span style="text-decoration: underline;">...</span> % Angle Offset from <span style="color: #BFEBBF;">0</span> position [deg]
|
||||||
<span style="color: #DCDCCC;">)</span>;
|
<span style="color: #DCDCCC;">)</span>;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
@ -329,37 +423,263 @@ Populate opts with input parameters
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb6911a1" class="outline-2">
|
<div id="outline-container-org2f9279a" class="outline-3">
|
||||||
<h2 id="orgb6911a1"><span class="section-number-2">2</span> Initialization of the stewart structure</h2>
|
<h3 id="org2f9279a"><span class="section-number-3">1.3</span> Geometry Description</h3>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
<p>
|
|
||||||
We initialize the Stewart structure
|
|
||||||
</p>
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">stewart = struct<span style="color: #DCDCCC;">()</span>;
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>
|
<div id="orgc30ce24" class="figure">
|
||||||
And we defined its total height.
|
|
||||||
</p>
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">stewart.H = opts.height; <span style="color: #7F9F7F;">% [mm]</span>
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="outline-container-org030aed6" class="outline-2">
|
|
||||||
<h2 id="org030aed6"><span class="section-number-2">3</span> Bottom Plate</h2>
|
|
||||||
<div class="outline-text-2" id="text-3">
|
|
||||||
|
|
||||||
<div id="org3d7fe71" class="figure">
|
|
||||||
<p><img src="./figs/stewart_bottom_plate.png" alt="stewart_bottom_plate.png" />
|
<p><img src="./figs/stewart_bottom_plate.png" alt="stewart_bottom_plate.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Schematic of the bottom plates with all the parameters</p>
|
<p><span class="figure-number">Figure 1: </span>Schematic of the bottom plates with all the parameters</p>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-org1409cf0" class="outline-3">
|
||||||
|
<h3 id="org1409cf0"><span class="section-number-3">1.4</span> Compute Aa and Ab</h3>
|
||||||
|
<div class="outline-text-3" id="text-1-4">
|
||||||
|
<p>
|
||||||
|
We compute \([a_1, a_2, a_3, a_4, a_5, a_6]^T\) and \([b_1, b_2, b_3, b_4, b_5, b_6]^T\).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">Aa = zeros<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">6</span>, <span style="color: #BFEBBF;">3</span><span style="color: #DCDCCC;">)</span>; <span style="color: #7F9F7F;">% [mm]</span>
|
||||||
|
Ab = zeros<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">6</span>, <span style="color: #BFEBBF;">3</span><span style="color: #DCDCCC;">)</span>; <span style="color: #7F9F7F;">% [mm]</span>
|
||||||
|
Bb = zeros<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">6</span>, <span style="color: #BFEBBF;">3</span><span style="color: #DCDCCC;">)</span>; <span style="color: #7F9F7F;">% [mm]</span>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">i</span> = <span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">:</span><span style="color: #BFEBBF;">3</span>
|
||||||
|
Aa<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">2</span><span style="color: #7CB8BB;">*</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span>,<span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span> = <span style="color: #DCDCCC;">[</span>opts.R_bot<span style="color: #7CB8BB;">*</span>cos<span style="color: #BFEBBF;">(</span> <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">120</span><span style="color: #7CB8BB;">*</span><span style="color: #93E0E3;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span> <span style="color: #7CB8BB;">-</span> opts.a_bot<span style="color: #D0BF8F;">)</span> <span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span>
|
||||||
|
opts.R_bot<span style="color: #7CB8BB;">*</span>sin<span style="color: #BFEBBF;">(</span> <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">120</span><span style="color: #7CB8BB;">*</span><span style="color: #93E0E3;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span> <span style="color: #7CB8BB;">-</span> opts.a_bot<span style="color: #D0BF8F;">)</span> <span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span>
|
||||||
|
opts.H_plate<span style="color: #7CB8BB;">+</span>opts.H_joint<span style="color: #DCDCCC;">]</span>;
|
||||||
|
Aa<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">2</span><span style="color: #7CB8BB;">*</span><span style="color: #BFEBBF;">i</span>,<span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span> = <span style="color: #DCDCCC;">[</span>opts.R_bot<span style="color: #7CB8BB;">*</span>cos<span style="color: #BFEBBF;">(</span> <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">120</span><span style="color: #7CB8BB;">*</span><span style="color: #93E0E3;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span> <span style="color: #7CB8BB;">+</span> opts.a_bot<span style="color: #D0BF8F;">)</span> <span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span>
|
||||||
|
opts.R_bot<span style="color: #7CB8BB;">*</span>sin<span style="color: #BFEBBF;">(</span> <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">120</span><span style="color: #7CB8BB;">*</span><span style="color: #93E0E3;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span> <span style="color: #7CB8BB;">+</span> opts.a_bot<span style="color: #D0BF8F;">)</span> <span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span>
|
||||||
|
opts.H_plate<span style="color: #7CB8BB;">+</span>opts.H_joint<span style="color: #DCDCCC;">]</span>;
|
||||||
|
|
||||||
|
Ab<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">2</span><span style="color: #7CB8BB;">*</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span>,<span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span> = <span style="color: #DCDCCC;">[</span>opts.R_top<span style="color: #7CB8BB;">*</span>cos<span style="color: #BFEBBF;">(</span> <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">120</span><span style="color: #7CB8BB;">*</span><span style="color: #93E0E3;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span> <span style="color: #7CB8BB;">+</span> opts.da_top <span style="color: #7CB8BB;">-</span> opts.a_top<span style="color: #D0BF8F;">)</span> <span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span>
|
||||||
|
opts.R_top<span style="color: #7CB8BB;">*</span>sin<span style="color: #BFEBBF;">(</span> <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">120</span><span style="color: #7CB8BB;">*</span><span style="color: #93E0E3;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span> <span style="color: #7CB8BB;">+</span> opts.da_top <span style="color: #7CB8BB;">-</span> opts.a_top<span style="color: #D0BF8F;">)</span> <span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span>
|
||||||
|
opts.H_tot <span style="color: #7CB8BB;">-</span> opts.H_plate <span style="color: #7CB8BB;">-</span> opts.H_joint<span style="color: #DCDCCC;">]</span>;
|
||||||
|
Ab<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">2</span><span style="color: #7CB8BB;">*</span><span style="color: #BFEBBF;">i</span>,<span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span> = <span style="color: #DCDCCC;">[</span>opts.R_top<span style="color: #7CB8BB;">*</span>cos<span style="color: #BFEBBF;">(</span> <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">120</span><span style="color: #7CB8BB;">*</span><span style="color: #93E0E3;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span> <span style="color: #7CB8BB;">+</span> opts.da_top <span style="color: #7CB8BB;">+</span> opts.a_top<span style="color: #D0BF8F;">)</span> <span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span>
|
||||||
|
opts.R_top<span style="color: #7CB8BB;">*</span>sin<span style="color: #BFEBBF;">(</span> <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">120</span><span style="color: #7CB8BB;">*</span><span style="color: #93E0E3;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span> <span style="color: #7CB8BB;">+</span> opts.da_top <span style="color: #7CB8BB;">+</span> opts.a_top<span style="color: #D0BF8F;">)</span> <span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span>
|
||||||
|
opts.H_tot <span style="color: #7CB8BB;">-</span> opts.H_plate <span style="color: #7CB8BB;">-</span> opts.H_joint<span style="color: #DCDCCC;">]</span>;
|
||||||
|
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||||
|
|
||||||
|
Bb = Ab <span style="color: #7CB8BB;">-</span> opts.H_tot<span style="color: #7CB8BB;">*</span><span style="color: #DCDCCC;">[</span><span style="color: #BFEBBF;">0</span>,<span style="color: #BFEBBF;">0</span>,<span style="color: #BFEBBF;">1</span><span style="color: #DCDCCC;">]</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-orgb91c416" class="outline-3">
|
||||||
|
<h3 id="orgb91c416"><span class="section-number-3">1.5</span> Returns Stewart Structure</h3>
|
||||||
|
<div class="outline-text-3" id="text-1-5">
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab"> stewart = struct<span style="color: #DCDCCC;">()</span>;
|
||||||
|
stewart.Aa = Aa;
|
||||||
|
stewart.Ab = Ab;
|
||||||
|
stewart.Bb = Bb;
|
||||||
|
stewart.H_tot = opts.H_tot;
|
||||||
|
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-orgc3aa910" class="outline-2">
|
||||||
|
<h2 id="orgc3aa910"><span class="section-number-2">2</span> computeGeometricalProperties</h2>
|
||||||
|
<div class="outline-text-2" id="text-2">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-org180196f" class="outline-3">
|
||||||
|
<h3 id="org180196f"><span class="section-number-3">2.1</span> Function description</h3>
|
||||||
|
<div class="outline-text-3" id="text-2-1">
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">function</span> <span style="color: #DCDCCC;">[</span><span style="color: #DFAF8F;">stewart</span><span style="color: #DCDCCC;">]</span> = <span style="color: #93E0E3;">computeGeometricalProperties</span><span style="color: #DCDCCC;">(</span><span style="color: #DFAF8F;">stewart</span>, <span style="color: #DFAF8F;">opts_param</span><span style="color: #DCDCCC;">)</span>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-org12cee4f" class="outline-3">
|
||||||
|
<h3 id="org12cee4f"><span class="section-number-3">2.2</span> Optional Parameters</h3>
|
||||||
|
<div class="outline-text-3" id="text-2-2">
|
||||||
|
<p>
|
||||||
|
Default values for opts.
|
||||||
|
</p>
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">opts = struct<span style="color: #DCDCCC;">(</span><span style="text-decoration: underline;">...</span>
|
||||||
|
<span style="color: #CC9393;">'Jd_pos'</span>, <span style="color: #BFEBBF;">[</span><span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">30</span><span style="color: #BFEBBF;">]</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]</span>
|
||||||
|
<span style="color: #CC9393;">'Jf_pos'</span>, <span style="color: #BFEBBF;">[</span><span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">30</span><span style="color: #BFEBBF;">]</span> <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Position of the Jacobian for force location from the top of the mobile platform [mm]</span>
|
||||||
|
<span style="color: #DCDCCC;">)</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Populate opts with input parameters
|
||||||
|
</p>
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">if</span> exist<span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'opts_param','var'</span><span style="color: #DCDCCC;">)</span>
|
||||||
|
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">opt</span> = <span style="color: #BFEBBF;">fieldnames</span><span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">opts_param</span><span style="color: #DCDCCC;">)</span><span style="color: #BFEBBF;">'</span>
|
||||||
|
opts.<span style="color: #DCDCCC;">(</span>opt<span style="color: #BFEBBF;">{</span><span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">}</span><span style="color: #DCDCCC;">)</span> = opts_param.<span style="color: #DCDCCC;">(</span>opt<span style="color: #BFEBBF;">{</span><span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">}</span><span style="color: #DCDCCC;">)</span>;
|
||||||
|
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||||
|
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-org0010af5" class="outline-3">
|
||||||
|
<h3 id="org0010af5"><span class="section-number-3">2.3</span> Rotation matrices</h3>
|
||||||
|
<div class="outline-text-3" id="text-2-3">
|
||||||
|
<p>
|
||||||
|
We initialize \(l_i\) and \(\hat{s}_i\)
|
||||||
|
</p>
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">leg_length = zeros<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">6</span>, <span style="color: #BFEBBF;">1</span><span style="color: #DCDCCC;">)</span>; <span style="color: #7F9F7F;">% [mm]</span>
|
||||||
|
leg_vectors = zeros<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">6</span>, <span style="color: #BFEBBF;">3</span><span style="color: #DCDCCC;">)</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
We compute \(b_i - a_i\), and then:
|
||||||
|
</p>
|
||||||
|
\begin{align*}
|
||||||
|
l_i &= \left|b_i - a_i\right| \\
|
||||||
|
\hat{s}_i &= \frac{b_i - a_i}{l_i}
|
||||||
|
\end{align*}
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">legs = stewart.Ab <span style="color: #7CB8BB;">-</span> stewart.Aa;
|
||||||
|
|
||||||
|
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">i</span> = <span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">:</span><span style="color: #BFEBBF;">6</span>
|
||||||
|
leg_length<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #DCDCCC;">)</span> = norm<span style="color: #DCDCCC;">(</span>legs<span style="color: #BFEBBF;">(</span><span style="color: #BFEBBF;">i</span>,<span style="color: #7CB8BB;">:</span><span style="color: #BFEBBF;">)</span><span style="color: #DCDCCC;">)</span>;
|
||||||
|
leg_vectors<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span>,<span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span> = legs<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span>,<span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span> <span style="color: #7CB8BB;">/</span> leg_length<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #DCDCCC;">)</span>;
|
||||||
|
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
We compute rotation matrices to have the orientation of the legs.
|
||||||
|
The rotation matrix transforms the \(z\) axis to the axis of the leg. The other axis are not important here.
|
||||||
|
</p>
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">stewart.Rm = struct<span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'R'</span>, eye<span style="color: #BFEBBF;">(</span><span style="color: #BFEBBF;">3</span><span style="color: #BFEBBF;">)</span><span style="color: #DCDCCC;">)</span>;
|
||||||
|
|
||||||
|
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">i</span> = <span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">:</span><span style="color: #BFEBBF;">6</span>
|
||||||
|
sx = cross<span style="color: #DCDCCC;">(</span>leg_vectors<span style="color: #BFEBBF;">(</span><span style="color: #BFEBBF;">i</span>,<span style="color: #7CB8BB;">:</span><span style="color: #BFEBBF;">)</span>, <span style="color: #BFEBBF;">[</span><span style="color: #BFEBBF;">1</span> <span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span><span style="color: #BFEBBF;">]</span><span style="color: #DCDCCC;">)</span>;
|
||||||
|
sx = sx<span style="color: #7CB8BB;">/</span>norm<span style="color: #DCDCCC;">(</span>sx<span style="color: #DCDCCC;">)</span>;
|
||||||
|
|
||||||
|
sy = <span style="color: #7CB8BB;">-</span>cross<span style="color: #DCDCCC;">(</span>sx, leg_vectors<span style="color: #BFEBBF;">(</span><span style="color: #BFEBBF;">i</span>,<span style="color: #7CB8BB;">:</span><span style="color: #BFEBBF;">)</span><span style="color: #DCDCCC;">)</span>;
|
||||||
|
sy = sy<span style="color: #7CB8BB;">/</span>norm<span style="color: #DCDCCC;">(</span>sy<span style="color: #DCDCCC;">)</span>;
|
||||||
|
|
||||||
|
sz = leg_vectors<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span>,<span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span>;
|
||||||
|
sz = sz<span style="color: #7CB8BB;">/</span>norm<span style="color: #DCDCCC;">(</span>sz<span style="color: #DCDCCC;">)</span>;
|
||||||
|
|
||||||
|
stewart.Rm<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #DCDCCC;">)</span>.R = <span style="color: #DCDCCC;">[</span>sx', sy', sz'<span style="color: #DCDCCC;">]</span>;
|
||||||
|
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-org98f4bad" class="outline-3">
|
||||||
|
<h3 id="org98f4bad"><span class="section-number-3">2.4</span> Jacobian matrices</h3>
|
||||||
|
<div class="outline-text-3" id="text-2-4">
|
||||||
|
<p>
|
||||||
|
Compute Jacobian Matrix
|
||||||
|
</p>
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">Jd = zeros<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">6</span><span style="color: #DCDCCC;">)</span>;
|
||||||
|
|
||||||
|
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">i</span> = <span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">:</span><span style="color: #BFEBBF;">6</span>
|
||||||
|
Jd<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span>, <span style="color: #BFEBBF;">1</span><span style="color: #7CB8BB;">:</span><span style="color: #BFEBBF;">3</span><span style="color: #DCDCCC;">)</span> = leg_vectors<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span>, <span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span>;
|
||||||
|
Jd<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span>, <span style="color: #BFEBBF;">4</span><span style="color: #7CB8BB;">:</span><span style="color: #BFEBBF;">6</span><span style="color: #DCDCCC;">)</span> = cross<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">0</span>.<span style="color: #BFEBBF;">001</span><span style="color: #7CB8BB;">*</span><span style="color: #BFEBBF;">(</span>stewart.Bb<span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">i</span>, <span style="color: #7CB8BB;">:</span><span style="color: #D0BF8F;">)</span> <span style="color: #7CB8BB;">-</span> opts.Jd_pos<span style="color: #BFEBBF;">)</span>, leg_vectors<span style="color: #BFEBBF;">(</span><span style="color: #BFEBBF;">i</span>, <span style="color: #7CB8BB;">:</span><span style="color: #BFEBBF;">)</span><span style="color: #DCDCCC;">)</span>;
|
||||||
|
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||||
|
|
||||||
|
stewart.Jd = Jd;
|
||||||
|
stewart.Jd_inv = inv<span style="color: #DCDCCC;">(</span>Jd<span style="color: #DCDCCC;">)</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">Jf = zeros<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">6</span><span style="color: #DCDCCC;">)</span>;
|
||||||
|
|
||||||
|
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">i</span> = <span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">:</span><span style="color: #BFEBBF;">6</span>
|
||||||
|
Jf<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span>, <span style="color: #BFEBBF;">1</span><span style="color: #7CB8BB;">:</span><span style="color: #BFEBBF;">3</span><span style="color: #DCDCCC;">)</span> = leg_vectors<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span>, <span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span>;
|
||||||
|
Jf<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span>, <span style="color: #BFEBBF;">4</span><span style="color: #7CB8BB;">:</span><span style="color: #BFEBBF;">6</span><span style="color: #DCDCCC;">)</span> = cross<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">0</span>.<span style="color: #BFEBBF;">001</span><span style="color: #7CB8BB;">*</span><span style="color: #BFEBBF;">(</span>stewart.Bb<span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">i</span>, <span style="color: #7CB8BB;">:</span><span style="color: #D0BF8F;">)</span> <span style="color: #7CB8BB;">-</span> opts.Jf_pos<span style="color: #BFEBBF;">)</span>, leg_vectors<span style="color: #BFEBBF;">(</span><span style="color: #BFEBBF;">i</span>, <span style="color: #7CB8BB;">:</span><span style="color: #BFEBBF;">)</span><span style="color: #DCDCCC;">)</span>;
|
||||||
|
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||||
|
|
||||||
|
stewart.Jf = Jf;
|
||||||
|
stewart.Jf_inv = inv<span style="color: #DCDCCC;">(</span>Jf<span style="color: #DCDCCC;">)</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-orgb3e53d1" class="outline-2">
|
||||||
|
<h2 id="orgb3e53d1"><span class="section-number-2">3</span> initializeMechanicalElements</h2>
|
||||||
|
<div class="outline-text-2" id="text-3">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-orge7f185e" class="outline-3">
|
||||||
|
<h3 id="orge7f185e"><span class="section-number-3">3.1</span> Function description</h3>
|
||||||
|
<div class="outline-text-3" id="text-3-1">
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">function</span> <span style="color: #DCDCCC;">[</span><span style="color: #DFAF8F;">stewart</span><span style="color: #DCDCCC;">]</span> = <span style="color: #93E0E3;">initializeMechanicalElements</span><span style="color: #DCDCCC;">(</span><span style="color: #DFAF8F;">stewart</span>, <span style="color: #DFAF8F;">opts_param</span><span style="color: #DCDCCC;">)</span>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-org6bd219d" class="outline-3">
|
||||||
|
<h3 id="org6bd219d"><span class="section-number-3">3.2</span> Optional Parameters</h3>
|
||||||
|
<div class="outline-text-3" id="text-3-2">
|
||||||
|
<p>
|
||||||
|
Default values for opts.
|
||||||
|
</p>
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">opts = struct<span style="color: #DCDCCC;">(</span><span style="text-decoration: underline;">...</span>
|
||||||
|
<span style="color: #CC9393;">'thickness'</span>, <span style="color: #BFEBBF;">10</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Thickness of the base and platform [mm]</span>
|
||||||
|
<span style="color: #CC9393;">'density'</span>, <span style="color: #BFEBBF;">1000</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Density of the material used for the hexapod [kg/m3]</span>
|
||||||
|
<span style="color: #CC9393;">'k_ax'</span>, <span style="color: #BFEBBF;">1e8</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Stiffness of each actuator [N/m]</span>
|
||||||
|
<span style="color: #CC9393;">'c_ax'</span>, <span style="color: #BFEBBF;">1000</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Damping of each actuator [N/(m/s)]</span>
|
||||||
|
<span style="color: #CC9393;">'stroke'</span>, <span style="color: #BFEBBF;">50e</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">6</span> <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Maximum stroke of each actuator [m]</span>
|
||||||
|
<span style="color: #DCDCCC;">)</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Populate opts with input parameters
|
||||||
|
</p>
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">if</span> exist<span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'opts_param','var'</span><span style="color: #DCDCCC;">)</span>
|
||||||
|
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">opt</span> = <span style="color: #BFEBBF;">fieldnames</span><span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">opts_param</span><span style="color: #DCDCCC;">)</span><span style="color: #BFEBBF;">'</span>
|
||||||
|
opts.<span style="color: #DCDCCC;">(</span>opt<span style="color: #BFEBBF;">{</span><span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">}</span><span style="color: #DCDCCC;">)</span> = opts_param.<span style="color: #DCDCCC;">(</span>opt<span style="color: #BFEBBF;">{</span><span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">}</span><span style="color: #DCDCCC;">)</span>;
|
||||||
|
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||||
|
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-org8d0d9c0" class="outline-3">
|
||||||
|
<h3 id="org8d0d9c0"><span class="section-number-3">3.3</span> Bottom Plate</h3>
|
||||||
|
<div class="outline-text-3" id="text-3-3">
|
||||||
|
|
||||||
|
<div id="org38598b1" class="figure">
|
||||||
|
<p><img src="./figs/stewart_bottom_plate.png" alt="stewart_bottom_plate.png" />
|
||||||
|
</p>
|
||||||
|
<p><span class="figure-number">Figure 2: </span>Schematic of the bottom plates with all the parameters</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The bottom plate structure is initialized.
|
The bottom plate structure is initialized.
|
||||||
@ -382,16 +702,7 @@ BP.Rext = <span style="color: #BFEBBF;">150</span>; <span style="color: #7F9F7F;
|
|||||||
We define its thickness.
|
We define its thickness.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">BP.H = <span style="color: #BFEBBF;">10</span>; <span style="color: #7F9F7F;">% Thickness of the Bottom Plate [mm]</span>
|
<pre class="src src-matlab">BP.H = opts.thickness; <span style="color: #7F9F7F;">% Thickness of the Bottom Plate [mm]</span>
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
At which radius legs will be fixed and with that angle offset.
|
|
||||||
</p>
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">BP.Rleg = <span style="color: #BFEBBF;">100</span>; <span style="color: #7F9F7F;">% Radius where the legs articulations are positionned [mm]</span>
|
|
||||||
BP.alpha = <span style="color: #BFEBBF;">10</span>; <span style="color: #7F9F7F;">% Angle Offset [deg]</span>
|
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -429,9 +740,9 @@ The structure is added to the stewart structure
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orged8012a" class="outline-2">
|
<div id="outline-container-org23fd88c" class="outline-3">
|
||||||
<h2 id="orged8012a"><span class="section-number-2">4</span> Top Plate</h2>
|
<h3 id="org23fd88c"><span class="section-number-3">3.4</span> Top Plate</h3>
|
||||||
<div class="outline-text-2" id="text-4">
|
<div class="outline-text-3" id="text-3-4">
|
||||||
<p>
|
<p>
|
||||||
The top plate structure is initialized.
|
The top plate structure is initialized.
|
||||||
</p>
|
</p>
|
||||||
@ -457,16 +768,6 @@ The thickness of the top plate.
|
|||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
|
||||||
At which radius and angle are fixed the legs.
|
|
||||||
</p>
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">TP.Rleg = <span style="color: #BFEBBF;">100</span>; <span style="color: #7F9F7F;">% Radius where the legs articulations are positionned [mm]</span>
|
|
||||||
TP.alpha = <span style="color: #BFEBBF;">20</span>; <span style="color: #7F9F7F;">% Angle [deg]</span>
|
|
||||||
TP.dalpha = <span style="color: #BFEBBF;">0</span>; % Angle Offset from <span style="color: #BFEBBF;">0</span> position [deg]
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The density of its material.
|
The density of its material.
|
||||||
</p>
|
</p>
|
||||||
@ -501,17 +802,16 @@ The structure is added to the stewart structure
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc74617a" class="outline-2">
|
<div id="outline-container-org96d7dab" class="outline-3">
|
||||||
<h2 id="orgc74617a"><span class="section-number-2">5</span> Legs</h2>
|
<h3 id="org96d7dab"><span class="section-number-3">3.5</span> Legs</h3>
|
||||||
<div class="outline-text-2" id="text-5">
|
<div class="outline-text-3" id="text-3-5">
|
||||||
|
|
||||||
<div id="orgc225133" class="figure">
|
<div id="orga9ade83" class="figure">
|
||||||
<p><img src="./figs/stewart_legs.png" alt="stewart_legs.png" />
|
<p><img src="./figs/stewart_legs.png" alt="stewart_legs.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 2: </span>Schematic for the legs of the Stewart platform</p>
|
<p><span class="figure-number">Figure 3: </span>Schematic for the legs of the Stewart platform</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The leg structure is initialized.
|
The leg structure is initialized.
|
||||||
</p>
|
</p>
|
||||||
@ -570,6 +870,29 @@ The radius of spheres representing the ball joints are defined.
|
|||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
We estimate the length of the legs.
|
||||||
|
</p>
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">legs = stewart.Ab <span style="color: #7CB8BB;">-</span> stewart.Aa;
|
||||||
|
Leg.lenght = norm<span style="color: #DCDCCC;">(</span>legs<span style="color: #BFEBBF;">(</span><span style="color: #BFEBBF;">1</span>,<span style="color: #7CB8BB;">:</span><span style="color: #BFEBBF;">)</span><span style="color: #DCDCCC;">)</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">1</span>.<span style="color: #BFEBBF;">5</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Then the shape of the bottom leg is estimated
|
||||||
|
</p>
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">Leg.shape.bot = <span style="text-decoration: underline;">...</span>
|
||||||
|
<span style="color: #DCDCCC;">[</span><span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span>; <span style="text-decoration: underline;">...</span>
|
||||||
|
Leg.Rbot <span style="color: #BFEBBF;">0</span>; <span style="text-decoration: underline;">...</span>
|
||||||
|
Leg.Rbot Leg.lenght; <span style="text-decoration: underline;">...</span>
|
||||||
|
Leg.Rtop Leg.lenght; <span style="text-decoration: underline;">...</span>
|
||||||
|
Leg.Rtop <span style="color: #BFEBBF;">0</span>.<span style="color: #BFEBBF;">2</span><span style="color: #7CB8BB;">*</span>Leg.lenght; <span style="text-decoration: underline;">...</span>
|
||||||
|
<span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span>.<span style="color: #BFEBBF;">2</span><span style="color: #7CB8BB;">*</span>Leg.lenght<span style="color: #DCDCCC;">]</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The structure is added to the stewart structure
|
The structure is added to the stewart structure
|
||||||
</p>
|
</p>
|
||||||
@ -580,14 +903,14 @@ The structure is added to the stewart structure
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7cd2aa5" class="outline-2">
|
<div id="outline-container-org66df86f" class="outline-3">
|
||||||
<h2 id="org7cd2aa5"><span class="section-number-2">6</span> Ball Joints</h2>
|
<h3 id="org66df86f"><span class="section-number-3">3.6</span> Ball Joints</h3>
|
||||||
<div class="outline-text-2" id="text-6">
|
<div class="outline-text-3" id="text-3-6">
|
||||||
|
|
||||||
<div id="org7b92b11" class="figure">
|
<div id="org250b20b" class="figure">
|
||||||
<p><img src="./figs/stewart_ball_joints.png" alt="stewart_ball_joints.png" />
|
<p><img src="./figs/stewart_ball_joints.png" alt="stewart_ball_joints.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 3: </span>Schematic of the support for the ball joints</p>
|
<p><span class="figure-number">Figure 4: </span>Schematic of the support for the ball joints</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -615,7 +938,7 @@ SP.c = <span style="color: #BFEBBF;">0</span>; <span style="color: #7F9F7F;">% [
|
|||||||
Its height is defined
|
Its height is defined
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">SP.H = <span style="color: #BFEBBF;">15</span>; <span style="color: #7F9F7F;">% [mm]</span>
|
<pre class="src src-matlab">SP.H = stewart.Aa<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">1</span>, <span style="color: #BFEBBF;">3</span><span style="color: #DCDCCC;">)</span> <span style="color: #7CB8BB;">-</span> BP.H; <span style="color: #7F9F7F;">% [mm]</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -660,169 +983,31 @@ The structure is added to the Hexapod structure
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1d76ed9" class="outline-2">
|
|
||||||
<h2 id="org1d76ed9"><span class="section-number-2">7</span> More parameters are initialized</h2>
|
|
||||||
<div class="outline-text-2" id="text-7">
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">stewart = initializeParameters<span style="color: #DCDCCC;">(</span>stewart<span style="color: #DCDCCC;">)</span>;
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge9faa26" class="outline-2">
|
<div id="outline-container-orgf3c4474" class="outline-2">
|
||||||
<h2 id="orge9faa26"><span class="section-number-2">8</span> Save the Stewart Structure</h2>
|
<h2 id="orgf3c4474"><span class="section-number-2">4</span> initializeSample</h2>
|
||||||
<div class="outline-text-2" id="text-8">
|
<div class="outline-text-2" id="text-4">
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">save<span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'./mat/stewart.mat', 'stewart'</span><span style="color: #DCDCCC;">)</span>
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orga207d03" class="outline-2">
|
<div id="outline-container-org1ec4152" class="outline-3">
|
||||||
<h2 id="orga207d03"><span class="section-number-2">9</span> initializeParameters Function</h2>
|
<h3 id="org1ec4152"><span class="section-number-3">4.1</span> Function description</h3>
|
||||||
<div class="outline-text-2" id="text-9">
|
<div class="outline-text-3" id="text-4-1">
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">function</span> <span style="color: #DCDCCC;">[</span><span style="color: #DFAF8F;">stewart</span><span style="color: #DCDCCC;">]</span> = <span style="color: #93E0E3;">initializeParameters</span><span style="color: #DCDCCC;">(</span><span style="color: #DFAF8F;">stewart</span><span style="color: #DCDCCC;">)</span>
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
We first compute \([a_1, a_2, a_3, a_4, a_5, a_6]^T\) and \([b_1, b_2, b_3, b_4, b_5, b_6]^T\).
|
|
||||||
</p>
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">stewart.Aa = zeros<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">6</span>, <span style="color: #BFEBBF;">3</span><span style="color: #DCDCCC;">)</span>; <span style="color: #7F9F7F;">% [mm]</span>
|
|
||||||
stewart.Ab = zeros<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">6</span>, <span style="color: #BFEBBF;">3</span><span style="color: #DCDCCC;">)</span>; <span style="color: #7F9F7F;">% [mm]</span>
|
|
||||||
stewart.Bb = zeros<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">6</span>, <span style="color: #BFEBBF;">3</span><span style="color: #DCDCCC;">)</span>; <span style="color: #7F9F7F;">% [mm]</span>
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">i</span> = <span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">:</span><span style="color: #BFEBBF;">3</span>
|
|
||||||
stewart.Aa<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">2</span><span style="color: #7CB8BB;">*</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span>,<span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span> = <span style="color: #DCDCCC;">[</span>stewart.BP.Rleg<span style="color: #7CB8BB;">*</span>cos<span style="color: #BFEBBF;">(</span> <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">120</span><span style="color: #7CB8BB;">*</span><span style="color: #93E0E3;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span> <span style="color: #7CB8BB;">-</span> stewart.BP.alpha<span style="color: #D0BF8F;">)</span> <span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span>
|
|
||||||
stewart.BP.Rleg<span style="color: #7CB8BB;">*</span>sin<span style="color: #BFEBBF;">(</span> <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">120</span><span style="color: #7CB8BB;">*</span><span style="color: #93E0E3;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span> <span style="color: #7CB8BB;">-</span> stewart.BP.alpha<span style="color: #D0BF8F;">)</span> <span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span>
|
|
||||||
stewart.BP.H<span style="color: #7CB8BB;">+</span>stewart.SP.H<span style="color: #DCDCCC;">]</span>;
|
|
||||||
stewart.Aa<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">2</span><span style="color: #7CB8BB;">*</span><span style="color: #BFEBBF;">i</span>,<span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span> = <span style="color: #DCDCCC;">[</span>stewart.BP.Rleg<span style="color: #7CB8BB;">*</span>cos<span style="color: #BFEBBF;">(</span> <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">120</span><span style="color: #7CB8BB;">*</span><span style="color: #93E0E3;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span> <span style="color: #7CB8BB;">+</span> stewart.BP.alpha<span style="color: #D0BF8F;">)</span> <span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span>
|
|
||||||
stewart.BP.Rleg<span style="color: #7CB8BB;">*</span>sin<span style="color: #BFEBBF;">(</span> <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">120</span><span style="color: #7CB8BB;">*</span><span style="color: #93E0E3;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span> <span style="color: #7CB8BB;">+</span> stewart.BP.alpha<span style="color: #D0BF8F;">)</span> <span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span>
|
|
||||||
stewart.BP.H<span style="color: #7CB8BB;">+</span>stewart.SP.H<span style="color: #DCDCCC;">]</span>;
|
|
||||||
|
|
||||||
stewart.Ab<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">2</span><span style="color: #7CB8BB;">*</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span>,<span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span> = <span style="color: #DCDCCC;">[</span>stewart.TP.Rleg<span style="color: #7CB8BB;">*</span>cos<span style="color: #BFEBBF;">(</span> <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">120</span><span style="color: #7CB8BB;">*</span><span style="color: #93E0E3;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span> <span style="color: #7CB8BB;">+</span> stewart.TP.dalpha <span style="color: #7CB8BB;">-</span> stewart.TP.alpha<span style="color: #D0BF8F;">)</span> <span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span>
|
|
||||||
stewart.TP.Rleg<span style="color: #7CB8BB;">*</span>sin<span style="color: #BFEBBF;">(</span> <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">120</span><span style="color: #7CB8BB;">*</span><span style="color: #93E0E3;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span> <span style="color: #7CB8BB;">+</span> stewart.TP.dalpha <span style="color: #7CB8BB;">-</span> stewart.TP.alpha<span style="color: #D0BF8F;">)</span> <span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span>
|
|
||||||
stewart.H <span style="color: #7CB8BB;">-</span> stewart.TP.H <span style="color: #7CB8BB;">-</span> stewart.SP.H<span style="color: #DCDCCC;">]</span>;
|
|
||||||
stewart.Ab<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">2</span><span style="color: #7CB8BB;">*</span><span style="color: #BFEBBF;">i</span>,<span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span> = <span style="color: #DCDCCC;">[</span>stewart.TP.Rleg<span style="color: #7CB8BB;">*</span>cos<span style="color: #BFEBBF;">(</span> <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">120</span><span style="color: #7CB8BB;">*</span><span style="color: #93E0E3;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span> <span style="color: #7CB8BB;">+</span> stewart.TP.dalpha <span style="color: #7CB8BB;">+</span> stewart.TP.alpha<span style="color: #D0BF8F;">)</span> <span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span>
|
|
||||||
stewart.TP.Rleg<span style="color: #7CB8BB;">*</span>sin<span style="color: #BFEBBF;">(</span> <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">120</span><span style="color: #7CB8BB;">*</span><span style="color: #93E0E3;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span> <span style="color: #7CB8BB;">+</span> stewart.TP.dalpha <span style="color: #7CB8BB;">+</span> stewart.TP.alpha<span style="color: #D0BF8F;">)</span> <span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span>
|
|
||||||
stewart.H <span style="color: #7CB8BB;">-</span> stewart.TP.H <span style="color: #7CB8BB;">-</span> stewart.SP.H<span style="color: #DCDCCC;">]</span>;
|
|
||||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
|
||||||
stewart.Bb = stewart.Ab <span style="color: #7CB8BB;">-</span> stewart.H<span style="color: #7CB8BB;">*</span><span style="color: #DCDCCC;">[</span><span style="color: #BFEBBF;">0</span>,<span style="color: #BFEBBF;">0</span>,<span style="color: #BFEBBF;">1</span><span style="color: #DCDCCC;">]</span>;
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Now, we compute the leg vectors \(\hat{s}_i\) and leg position \(l_i\):
|
|
||||||
\[ b_i - a_i = l_i \hat{s}_i \]
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
We initialize \(l_i\) and \(\hat{s}_i\)
|
|
||||||
</p>
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">leg_length = zeros<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">6</span>, <span style="color: #BFEBBF;">1</span><span style="color: #DCDCCC;">)</span>; <span style="color: #7F9F7F;">% [mm]</span>
|
|
||||||
leg_vectors = zeros<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">6</span>, <span style="color: #BFEBBF;">3</span><span style="color: #DCDCCC;">)</span>;
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
We compute \(b_i - a_i\), and then:
|
|
||||||
</p>
|
|
||||||
\begin{align*}
|
|
||||||
l_i &= \left|b_i - a_i\right| \\
|
|
||||||
\hat{s}_i &= \frac{b_i - a_i}{l_i}
|
|
||||||
\end{align*}
|
|
||||||
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">legs = stewart.Ab <span style="color: #7CB8BB;">-</span> stewart.Aa;
|
|
||||||
|
|
||||||
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">i</span> = <span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">:</span><span style="color: #BFEBBF;">6</span>
|
|
||||||
leg_length<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #DCDCCC;">)</span> = norm<span style="color: #DCDCCC;">(</span>legs<span style="color: #BFEBBF;">(</span><span style="color: #BFEBBF;">i</span>,<span style="color: #7CB8BB;">:</span><span style="color: #BFEBBF;">)</span><span style="color: #DCDCCC;">)</span>;
|
|
||||||
leg_vectors<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span>,<span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span> = legs<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span>,<span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span> <span style="color: #7CB8BB;">/</span> leg_length<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #DCDCCC;">)</span>;
|
|
||||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Then the shape of the bottom leg is estimated
|
|
||||||
</p>
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">stewart.Leg.lenght = leg_length<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">1</span><span style="color: #DCDCCC;">)</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">1</span>.<span style="color: #BFEBBF;">5</span>;
|
|
||||||
stewart.Leg.shape.bot = <span style="text-decoration: underline;">...</span>
|
|
||||||
<span style="color: #DCDCCC;">[</span><span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span>; <span style="text-decoration: underline;">...</span>
|
|
||||||
stewart.Leg.Rbot <span style="color: #BFEBBF;">0</span>; <span style="text-decoration: underline;">...</span>
|
|
||||||
stewart.Leg.Rbot stewart.Leg.lenght; <span style="text-decoration: underline;">...</span>
|
|
||||||
stewart.Leg.Rtop stewart.Leg.lenght; <span style="text-decoration: underline;">...</span>
|
|
||||||
stewart.Leg.Rtop <span style="color: #BFEBBF;">0</span>.<span style="color: #BFEBBF;">2</span><span style="color: #7CB8BB;">*</span>stewart.Leg.lenght; <span style="text-decoration: underline;">...</span>
|
|
||||||
<span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span>.<span style="color: #BFEBBF;">2</span><span style="color: #7CB8BB;">*</span>stewart.Leg.lenght<span style="color: #DCDCCC;">]</span>;
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
We compute rotation matrices to have the orientation of the legs.
|
|
||||||
The rotation matrix transforms the \(z\) axis to the axis of the leg. The other axis are not important here.
|
|
||||||
</p>
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">stewart.Rm = struct<span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'R'</span>, eye<span style="color: #BFEBBF;">(</span><span style="color: #BFEBBF;">3</span><span style="color: #BFEBBF;">)</span><span style="color: #DCDCCC;">)</span>;
|
|
||||||
|
|
||||||
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">i</span> = <span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">:</span><span style="color: #BFEBBF;">6</span>
|
|
||||||
sx = cross<span style="color: #DCDCCC;">(</span>leg_vectors<span style="color: #BFEBBF;">(</span><span style="color: #BFEBBF;">i</span>,<span style="color: #7CB8BB;">:</span><span style="color: #BFEBBF;">)</span>, <span style="color: #BFEBBF;">[</span><span style="color: #BFEBBF;">1</span> <span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span><span style="color: #BFEBBF;">]</span><span style="color: #DCDCCC;">)</span>;
|
|
||||||
sx = sx<span style="color: #7CB8BB;">/</span>norm<span style="color: #DCDCCC;">(</span>sx<span style="color: #DCDCCC;">)</span>;
|
|
||||||
|
|
||||||
sy = <span style="color: #7CB8BB;">-</span>cross<span style="color: #DCDCCC;">(</span>sx, leg_vectors<span style="color: #BFEBBF;">(</span><span style="color: #BFEBBF;">i</span>,<span style="color: #7CB8BB;">:</span><span style="color: #BFEBBF;">)</span><span style="color: #DCDCCC;">)</span>;
|
|
||||||
sy = sy<span style="color: #7CB8BB;">/</span>norm<span style="color: #DCDCCC;">(</span>sy<span style="color: #DCDCCC;">)</span>;
|
|
||||||
|
|
||||||
sz = leg_vectors<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span>,<span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span>;
|
|
||||||
sz = sz<span style="color: #7CB8BB;">/</span>norm<span style="color: #DCDCCC;">(</span>sz<span style="color: #DCDCCC;">)</span>;
|
|
||||||
|
|
||||||
stewart.Rm<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #DCDCCC;">)</span>.R = <span style="color: #DCDCCC;">[</span>sx', sy', sz'<span style="color: #DCDCCC;">]</span>;
|
|
||||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Compute Jacobian Matrix
|
|
||||||
</p>
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">J = zeros<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">6</span><span style="color: #DCDCCC;">)</span>;
|
|
||||||
|
|
||||||
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">i</span> = <span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">:</span><span style="color: #BFEBBF;">6</span>
|
|
||||||
J<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span>, <span style="color: #BFEBBF;">1</span><span style="color: #7CB8BB;">:</span><span style="color: #BFEBBF;">3</span><span style="color: #DCDCCC;">)</span> = leg_vectors<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span>, <span style="color: #7CB8BB;">:</span><span style="color: #DCDCCC;">)</span>;
|
|
||||||
J<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span>, <span style="color: #BFEBBF;">4</span><span style="color: #7CB8BB;">:</span><span style="color: #BFEBBF;">6</span><span style="color: #DCDCCC;">)</span> = cross<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">0</span>.<span style="color: #BFEBBF;">001</span><span style="color: #7CB8BB;">*</span><span style="color: #BFEBBF;">(</span>stewart.Ab<span style="color: #D0BF8F;">(</span><span style="color: #BFEBBF;">i</span>, <span style="color: #7CB8BB;">:</span><span style="color: #D0BF8F;">)</span><span style="color: #7CB8BB;">-</span> stewart.H<span style="color: #7CB8BB;">*</span><span style="color: #D0BF8F;">[</span><span style="color: #BFEBBF;">0</span>,<span style="color: #BFEBBF;">0</span>,<span style="color: #BFEBBF;">1</span><span style="color: #D0BF8F;">]</span><span style="color: #BFEBBF;">)</span>, leg_vectors<span style="color: #BFEBBF;">(</span><span style="color: #BFEBBF;">i</span>, <span style="color: #7CB8BB;">:</span><span style="color: #BFEBBF;">)</span><span style="color: #DCDCCC;">)</span>;
|
|
||||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
|
||||||
|
|
||||||
stewart.J = J;
|
|
||||||
stewart.Jinv = inv<span style="color: #DCDCCC;">(</span>J<span style="color: #DCDCCC;">)</span>;
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">stewart.K = stewart.Leg.k_ax<span style="color: #7CB8BB;">*</span>stewart.J'<span style="color: #7CB8BB;">*</span>stewart.J;
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab"> <span style="color: #F0DFAF; font-weight: bold;">end</span>
|
|
||||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="outline-container-org724c1a1" class="outline-2">
|
|
||||||
<h2 id="org724c1a1"><span class="section-number-2">10</span> initializeSample</h2>
|
|
||||||
<div class="outline-text-2" id="text-10">
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">function</span> <span style="color: #DCDCCC;">[]</span> = <span style="color: #93E0E3;">initializeSample</span><span style="color: #DCDCCC;">(</span><span style="color: #DFAF8F;">opts_param</span><span style="color: #DCDCCC;">)</span>
|
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">function</span> <span style="color: #DCDCCC;">[]</span> = <span style="color: #93E0E3;">initializeSample</span><span style="color: #DCDCCC;">(</span><span style="color: #DFAF8F;">opts_param</span><span style="color: #DCDCCC;">)</span>
|
||||||
<span style="color: #7F9F7F; font-weight: bold; text-decoration: overline;">%% Default values for opts</span>
|
</pre>
|
||||||
sample = struct<span style="color: #DCDCCC;">(</span> <span style="text-decoration: underline;">...</span>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-orgcd3268d" class="outline-3">
|
||||||
|
<h3 id="orgcd3268d"><span class="section-number-3">4.2</span> Optional Parameters</h3>
|
||||||
|
<div class="outline-text-3" id="text-4-2">
|
||||||
|
<p>
|
||||||
|
Default values for opts.
|
||||||
|
</p>
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">sample = struct<span style="color: #DCDCCC;">(</span> <span style="text-decoration: underline;">...</span>
|
||||||
<span style="color: #CC9393;">'radius'</span>, <span style="color: #BFEBBF;">100</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% radius of the cylinder [mm]</span>
|
<span style="color: #CC9393;">'radius'</span>, <span style="color: #BFEBBF;">100</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% radius of the cylinder [mm]</span>
|
||||||
<span style="color: #CC9393;">'height'</span>, <span style="color: #BFEBBF;">100</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% height of the cylinder [mm]</span>
|
<span style="color: #CC9393;">'height'</span>, <span style="color: #BFEBBF;">100</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% height of the cylinder [mm]</span>
|
||||||
<span style="color: #CC9393;">'mass'</span>, <span style="color: #BFEBBF;">10</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% mass of the cylinder [kg]</span>
|
<span style="color: #CC9393;">'mass'</span>, <span style="color: #BFEBBF;">10</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% mass of the cylinder [kg]</span>
|
||||||
@ -830,25 +1015,42 @@ stewart.Jinv = inv<span style="color: #DCDCCC;">(</span>J<span style="color: #DC
|
|||||||
<span style="color: #CC9393;">'offset'</span>, <span style="color: #BFEBBF;">[</span><span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">0</span><span style="color: #BFEBBF;">]</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% offset position of the sample [mm]</span>
|
<span style="color: #CC9393;">'offset'</span>, <span style="color: #BFEBBF;">[</span><span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">0</span><span style="color: #BFEBBF;">]</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% offset position of the sample [mm]</span>
|
||||||
<span style="color: #CC9393;">'color'</span>, <span style="color: #BFEBBF;">[</span><span style="color: #BFEBBF;">0</span>.<span style="color: #BFEBBF;">9</span> <span style="color: #BFEBBF;">0</span>.<span style="color: #BFEBBF;">1</span> <span style="color: #BFEBBF;">0</span>.<span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">]</span> <span style="text-decoration: underline;">...</span>
|
<span style="color: #CC9393;">'color'</span>, <span style="color: #BFEBBF;">[</span><span style="color: #BFEBBF;">0</span>.<span style="color: #BFEBBF;">9</span> <span style="color: #BFEBBF;">0</span>.<span style="color: #BFEBBF;">1</span> <span style="color: #BFEBBF;">0</span>.<span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">]</span> <span style="text-decoration: underline;">...</span>
|
||||||
<span style="color: #DCDCCC;">)</span>;
|
<span style="color: #DCDCCC;">)</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
<span style="color: #7F9F7F; font-weight: bold; text-decoration: overline;">%% Populate opts with input parameters</span>
|
<p>
|
||||||
<span style="color: #F0DFAF; font-weight: bold;">if</span> exist<span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'opts_param','var'</span><span style="color: #DCDCCC;">)</span>
|
Populate opts with input parameters
|
||||||
|
</p>
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">if</span> exist<span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'opts_param','var'</span><span style="color: #DCDCCC;">)</span>
|
||||||
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">opt</span> = <span style="color: #BFEBBF;">fieldnames</span><span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">opts_param</span><span style="color: #DCDCCC;">)</span><span style="color: #BFEBBF;">'</span>
|
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">opt</span> = <span style="color: #BFEBBF;">fieldnames</span><span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">opts_param</span><span style="color: #DCDCCC;">)</span><span style="color: #BFEBBF;">'</span>
|
||||||
sample.<span style="color: #DCDCCC;">(</span>opt<span style="color: #BFEBBF;">{</span><span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">}</span><span style="color: #DCDCCC;">)</span> = opts_param.<span style="color: #DCDCCC;">(</span>opt<span style="color: #BFEBBF;">{</span><span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">}</span><span style="color: #DCDCCC;">)</span>;
|
sample.<span style="color: #DCDCCC;">(</span>opt<span style="color: #BFEBBF;">{</span><span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">}</span><span style="color: #DCDCCC;">)</span> = opts_param.<span style="color: #DCDCCC;">(</span>opt<span style="color: #BFEBBF;">{</span><span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">}</span><span style="color: #DCDCCC;">)</span>;
|
||||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
|
||||||
|
|
||||||
<span style="color: #7F9F7F; font-weight: bold; text-decoration: overline;">%% Save</span>
|
|
||||||
save<span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'./mat/sample.mat', 'sample'</span><span style="color: #DCDCCC;">)</span>;
|
|
||||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-org29ee9ed" class="outline-3">
|
||||||
|
<h3 id="org29ee9ed"><span class="section-number-3">4.3</span> Save the Sample structure</h3>
|
||||||
|
<div class="outline-text-3" id="text-4-3">
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">save<span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'./mat/sample.mat', 'sample'</span><span style="color: #DCDCCC;">)</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Thomas Dehaeze</p>
|
<p class="author">Author: Thomas Dehaeze</p>
|
||||||
<p class="date">Created: 2019-03-22 ven. 12:03</p>
|
<p class="date">Created: 2019-03-25 lun. 11:18</p>
|
||||||
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
@ -17,29 +17,73 @@
|
|||||||
#+LaTeX_HEADER: \newcommand{\authorEmail}{dehaeze.thomas@gmail.com}
|
#+LaTeX_HEADER: \newcommand{\authorEmail}{dehaeze.thomas@gmail.com}
|
||||||
|
|
||||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
#+PROPERTY: header-args:matlab+ :comments no
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
#+PROPERTY: header-args:matlab+ :exports bode
|
#+PROPERTY: header-args:matlab+ :exports both
|
||||||
#+PROPERTY: header-args:matlab+ :eval no
|
#+PROPERTY: header-args:matlab+ :eval no-export
|
||||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
#+PROPERTY: header-args:matlab+ :tangle src/initializeHexapod.m
|
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
* Function description and arguments
|
Stewart platforms are generated in multiple steps.
|
||||||
The =initializeHexapod= function takes one structure that contains configurations for the hexapod and returns one structure representing the hexapod.
|
|
||||||
|
First, geometrical parameters are defined:
|
||||||
|
- ${}^Aa_i$ - Position of the joints fixed to the fixed base w.r.t $\{A\}$
|
||||||
|
- ${}^Ab_i$ - Position of the joints fixed to the mobile platform w.r.t $\{A\}$
|
||||||
|
- ${}^Bb_i$ - Position of the joints fixed to the mobile platform w.r.t $\{B\}$
|
||||||
|
- $H$ - Total height of the mobile platform
|
||||||
|
|
||||||
|
These parameter are enough to determine all the kinematic properties of the platform like the Jacobian, stroke, stiffness, ...
|
||||||
|
These geometrical parameters can be generated using different functions: =initializeCubicConfiguration= for cubic configuration or =initializeGeneralConfiguration= for more general configuration.
|
||||||
|
|
||||||
|
A function =computeGeometricalProperties= is then used to compute:
|
||||||
|
- $J_f$ - Jacobian matrix for the force location
|
||||||
|
- $J_d$ - Jacobian matrix for displacement estimation
|
||||||
|
- $R_m$ - Rotation matrices to position the leg vectors
|
||||||
|
|
||||||
|
Then, geometrical parameters are computed for all the mechanical elements with the function =initializeMechanicalElements=:
|
||||||
|
- Shape of the platforms
|
||||||
|
- External Radius
|
||||||
|
- Internal Radius
|
||||||
|
- Density
|
||||||
|
- Thickness
|
||||||
|
- Shape of the Legs
|
||||||
|
- Radius
|
||||||
|
- Size of ball joint
|
||||||
|
- Density
|
||||||
|
|
||||||
|
Other Parameters are defined for the Simscape simulation:
|
||||||
|
- Sample mass, volume and position (=initializeSample= function)
|
||||||
|
- Location of the inertial sensor
|
||||||
|
- Location of the point for the differential measurements
|
||||||
|
- Location of the Jacobian point for velocity/displacement computation
|
||||||
|
|
||||||
|
* initializeGeneralConfiguration
|
||||||
|
:PROPERTIES:
|
||||||
|
:HEADER-ARGS:matlab+: :exports code
|
||||||
|
:HEADER-ARGS:matlab+: :comments no
|
||||||
|
:HEADER-ARGS:matlab+: :eval no
|
||||||
|
:HEADER-ARGS:matlab+: :tangle src/initializeGeneralConfiguration.m
|
||||||
|
:END:
|
||||||
|
|
||||||
|
** Function description
|
||||||
|
The =initializeGeneralConfiguration= function takes one structure that contains configurations for the hexapod and returns one structure representing the Hexapod.
|
||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
function [stewart] = initializeHexapod(opts_param)
|
function [stewart] = initializeGeneralConfiguration(opts_param)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
** Optional Parameters
|
||||||
Default values for opts.
|
Default values for opts.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
opts = struct(...
|
opts = struct(...
|
||||||
'height', 90, ... % Height of the platform [mm]
|
'H_tot', 90, ... % Height of the platform [mm]
|
||||||
'density', 8000, ... % Density of the material used for the hexapod [kg/m3]
|
'H_joint', 15, ... % Height of the joints [mm]
|
||||||
'k_ax', 1e8, ... % Stiffness of each actuator [N/m]
|
'H_plate', 10, ... % Thickness of the fixed and mobile platforms [mm]
|
||||||
'c_ax', 1000, ... % Damping of each actuator [N/(m/s)]
|
'R_bot', 100, ... % Radius where the legs articulations are positionned [mm]
|
||||||
'stroke', 50e-6, ... % Maximum stroke of each actuator [m]
|
'R_top', 80, ... % Radius where the legs articulations are positionned [mm]
|
||||||
'name', 'stewart' ... % Name of the file
|
'a_bot', 10, ... % Angle Offset [deg]
|
||||||
|
'a_top', 40, ... % Angle Offset [deg]
|
||||||
|
'da_top', 0 ... % Angle Offset from 0 position [deg]
|
||||||
);
|
);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -52,22 +96,190 @@ Populate opts with input parameters
|
|||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Initialization of the stewart structure
|
** Geometry Description
|
||||||
We initialize the Stewart structure
|
|
||||||
#+begin_src matlab
|
|
||||||
stewart = struct();
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
And we defined its total height.
|
|
||||||
#+begin_src matlab
|
|
||||||
stewart.H = opts.height; % [mm]
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Bottom Plate
|
|
||||||
#+name: fig:stewart_bottom_plate
|
#+name: fig:stewart_bottom_plate
|
||||||
#+caption: Schematic of the bottom plates with all the parameters
|
#+caption: Schematic of the bottom plates with all the parameters
|
||||||
[[file:./figs/stewart_bottom_plate.png]]
|
[[file:./figs/stewart_bottom_plate.png]]
|
||||||
|
|
||||||
|
** Compute Aa and Ab
|
||||||
|
We compute $[a_1, a_2, a_3, a_4, a_5, a_6]^T$ and $[b_1, b_2, b_3, b_4, b_5, b_6]^T$.
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
Aa = zeros(6, 3); % [mm]
|
||||||
|
Ab = zeros(6, 3); % [mm]
|
||||||
|
Bb = zeros(6, 3); % [mm]
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
for i = 1:3
|
||||||
|
Aa(2*i-1,:) = [opts.R_bot*cos( pi/180*(120*(i-1) - opts.a_bot) ), ...
|
||||||
|
opts.R_bot*sin( pi/180*(120*(i-1) - opts.a_bot) ), ...
|
||||||
|
opts.H_plate+opts.H_joint];
|
||||||
|
Aa(2*i,:) = [opts.R_bot*cos( pi/180*(120*(i-1) + opts.a_bot) ), ...
|
||||||
|
opts.R_bot*sin( pi/180*(120*(i-1) + opts.a_bot) ), ...
|
||||||
|
opts.H_plate+opts.H_joint];
|
||||||
|
|
||||||
|
Ab(2*i-1,:) = [opts.R_top*cos( pi/180*(120*(i-1) + opts.da_top - opts.a_top) ), ...
|
||||||
|
opts.R_top*sin( pi/180*(120*(i-1) + opts.da_top - opts.a_top) ), ...
|
||||||
|
opts.H_tot - opts.H_plate - opts.H_joint];
|
||||||
|
Ab(2*i,:) = [opts.R_top*cos( pi/180*(120*(i-1) + opts.da_top + opts.a_top) ), ...
|
||||||
|
opts.R_top*sin( pi/180*(120*(i-1) + opts.da_top + opts.a_top) ), ...
|
||||||
|
opts.H_tot - opts.H_plate - opts.H_joint];
|
||||||
|
end
|
||||||
|
|
||||||
|
Bb = Ab - opts.H_tot*[0,0,1];
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Returns Stewart Structure
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
stewart = struct();
|
||||||
|
stewart.Aa = Aa;
|
||||||
|
stewart.Ab = Ab;
|
||||||
|
stewart.Bb = Bb;
|
||||||
|
stewart.H_tot = opts.H_tot;
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* computeGeometricalProperties
|
||||||
|
:PROPERTIES:
|
||||||
|
:HEADER-ARGS:matlab+: :exports code
|
||||||
|
:HEADER-ARGS:matlab+: :comments no
|
||||||
|
:HEADER-ARGS:matlab+: :eval no
|
||||||
|
:HEADER-ARGS:matlab+: :tangle src/computeGeometricalProperties.m
|
||||||
|
:END:
|
||||||
|
|
||||||
|
** Function description
|
||||||
|
#+begin_src matlab
|
||||||
|
function [stewart] = computeGeometricalProperties(stewart, opts_param)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Optional Parameters
|
||||||
|
Default values for opts.
|
||||||
|
#+begin_src matlab
|
||||||
|
opts = struct(...
|
||||||
|
'Jd_pos', [0, 0, 30], ... % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]
|
||||||
|
'Jf_pos', [0, 0, 30] ... % Position of the Jacobian for force location from the top of the mobile platform [mm]
|
||||||
|
);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Populate opts with input parameters
|
||||||
|
#+begin_src matlab
|
||||||
|
if exist('opts_param','var')
|
||||||
|
for opt = fieldnames(opts_param)'
|
||||||
|
opts.(opt{1}) = opts_param.(opt{1});
|
||||||
|
end
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Rotation matrices
|
||||||
|
We initialize $l_i$ and $\hat{s}_i$
|
||||||
|
#+begin_src matlab
|
||||||
|
leg_length = zeros(6, 1); % [mm]
|
||||||
|
leg_vectors = zeros(6, 3);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
We compute $b_i - a_i$, and then:
|
||||||
|
\begin{align*}
|
||||||
|
l_i &= \left|b_i - a_i\right| \\
|
||||||
|
\hat{s}_i &= \frac{b_i - a_i}{l_i}
|
||||||
|
\end{align*}
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
legs = stewart.Ab - stewart.Aa;
|
||||||
|
|
||||||
|
for i = 1:6
|
||||||
|
leg_length(i) = norm(legs(i,:));
|
||||||
|
leg_vectors(i,:) = legs(i,:) / leg_length(i);
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
We compute rotation matrices to have the orientation of the legs.
|
||||||
|
The rotation matrix transforms the $z$ axis to the axis of the leg. The other axis are not important here.
|
||||||
|
#+begin_src matlab
|
||||||
|
stewart.Rm = struct('R', eye(3));
|
||||||
|
|
||||||
|
for i = 1:6
|
||||||
|
sx = cross(leg_vectors(i,:), [1 0 0]);
|
||||||
|
sx = sx/norm(sx);
|
||||||
|
|
||||||
|
sy = -cross(sx, leg_vectors(i,:));
|
||||||
|
sy = sy/norm(sy);
|
||||||
|
|
||||||
|
sz = leg_vectors(i,:);
|
||||||
|
sz = sz/norm(sz);
|
||||||
|
|
||||||
|
stewart.Rm(i).R = [sx', sy', sz'];
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Jacobian matrices
|
||||||
|
Compute Jacobian Matrix
|
||||||
|
#+begin_src matlab
|
||||||
|
Jd = zeros(6);
|
||||||
|
|
||||||
|
for i = 1:6
|
||||||
|
Jd(i, 1:3) = leg_vectors(i, :);
|
||||||
|
Jd(i, 4:6) = cross(0.001*(stewart.Bb(i, :) - opts.Jd_pos), leg_vectors(i, :));
|
||||||
|
end
|
||||||
|
|
||||||
|
stewart.Jd = Jd;
|
||||||
|
stewart.Jd_inv = inv(Jd);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
Jf = zeros(6);
|
||||||
|
|
||||||
|
for i = 1:6
|
||||||
|
Jf(i, 1:3) = leg_vectors(i, :);
|
||||||
|
Jf(i, 4:6) = cross(0.001*(stewart.Bb(i, :) - opts.Jf_pos), leg_vectors(i, :));
|
||||||
|
end
|
||||||
|
|
||||||
|
stewart.Jf = Jf;
|
||||||
|
stewart.Jf_inv = inv(Jf);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* initializeMechanicalElements
|
||||||
|
:PROPERTIES:
|
||||||
|
:HEADER-ARGS:matlab+: :exports code
|
||||||
|
:HEADER-ARGS:matlab+: :comments no
|
||||||
|
:HEADER-ARGS:matlab+: :eval no
|
||||||
|
:HEADER-ARGS:matlab+: :tangle src/initializeMechanicalElements.m
|
||||||
|
:END:
|
||||||
|
|
||||||
|
** Function description
|
||||||
|
#+begin_src matlab
|
||||||
|
function [stewart] = initializeMechanicalElements(stewart, opts_param)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Optional Parameters
|
||||||
|
Default values for opts.
|
||||||
|
#+begin_src matlab
|
||||||
|
opts = struct(...
|
||||||
|
'thickness', 10, ... % Thickness of the base and platform [mm]
|
||||||
|
'density', 1000, ... % Density of the material used for the hexapod [kg/m3]
|
||||||
|
'k_ax', 1e8, ... % Stiffness of each actuator [N/m]
|
||||||
|
'c_ax', 1000, ... % Damping of each actuator [N/(m/s)]
|
||||||
|
'stroke', 50e-6 ... % Maximum stroke of each actuator [m]
|
||||||
|
);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Populate opts with input parameters
|
||||||
|
#+begin_src matlab
|
||||||
|
if exist('opts_param','var')
|
||||||
|
for opt = fieldnames(opts_param)'
|
||||||
|
opts.(opt{1}) = opts_param.(opt{1});
|
||||||
|
end
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Bottom Plate
|
||||||
|
#+name: fig:stewart_bottom_plate
|
||||||
|
#+caption: Schematic of the bottom plates with all the parameters
|
||||||
|
[[file:./figs/stewart_bottom_plate.png]]
|
||||||
|
|
||||||
The bottom plate structure is initialized.
|
The bottom plate structure is initialized.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
@ -82,13 +294,7 @@ We defined its internal radius (if there is a hole in the bottom plate) and its
|
|||||||
|
|
||||||
We define its thickness.
|
We define its thickness.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
BP.H = 10; % Thickness of the Bottom Plate [mm]
|
BP.H = opts.thickness; % Thickness of the Bottom Plate [mm]
|
||||||
#+end_src
|
|
||||||
|
|
||||||
At which radius legs will be fixed and with that angle offset.
|
|
||||||
#+begin_src matlab
|
|
||||||
BP.Rleg = 100; % Radius where the legs articulations are positionned [mm]
|
|
||||||
BP.alpha = 10; % Angle Offset [deg]
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
We defined the density of the material of the bottom plate.
|
We defined the density of the material of the bottom plate.
|
||||||
@ -111,7 +317,7 @@ The structure is added to the stewart structure
|
|||||||
stewart.BP = BP;
|
stewart.BP = BP;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Top Plate
|
** Top Plate
|
||||||
The top plate structure is initialized.
|
The top plate structure is initialized.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
TP = struct();
|
TP = struct();
|
||||||
@ -128,13 +334,6 @@ The thickness of the top plate.
|
|||||||
TP.H = 10; % [mm]
|
TP.H = 10; % [mm]
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
At which radius and angle are fixed the legs.
|
|
||||||
#+begin_src matlab
|
|
||||||
TP.Rleg = 100; % Radius where the legs articulations are positionned [mm]
|
|
||||||
TP.alpha = 20; % Angle [deg]
|
|
||||||
TP.dalpha = 0; % Angle Offset from 0 position [deg]
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
The density of its material.
|
The density of its material.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
TP.density = opts.density; % Density of the material [kg/m3]
|
TP.density = opts.density; % Density of the material [kg/m3]
|
||||||
@ -155,12 +354,11 @@ The structure is added to the stewart structure
|
|||||||
stewart.TP = TP;
|
stewart.TP = TP;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Legs
|
** Legs
|
||||||
#+name: fig:stewart_legs
|
#+name: fig:stewart_legs
|
||||||
#+caption: Schematic for the legs of the Stewart platform
|
#+caption: Schematic for the legs of the Stewart platform
|
||||||
[[file:./figs/stewart_legs.png]]
|
[[file:./figs/stewart_legs.png]]
|
||||||
|
|
||||||
|
|
||||||
The leg structure is initialized.
|
The leg structure is initialized.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
Leg = struct();
|
Leg = struct();
|
||||||
@ -198,12 +396,29 @@ The radius of spheres representing the ball joints are defined.
|
|||||||
Leg.R = 1.3*Leg.Rbot; % Size of the sphere at the extremity of the leg [mm]
|
Leg.R = 1.3*Leg.Rbot; % Size of the sphere at the extremity of the leg [mm]
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
We estimate the length of the legs.
|
||||||
|
#+begin_src matlab
|
||||||
|
legs = stewart.Ab - stewart.Aa;
|
||||||
|
Leg.lenght = norm(legs(1,:))/1.5;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Then the shape of the bottom leg is estimated
|
||||||
|
#+begin_src matlab
|
||||||
|
Leg.shape.bot = ...
|
||||||
|
[0 0; ...
|
||||||
|
Leg.Rbot 0; ...
|
||||||
|
Leg.Rbot Leg.lenght; ...
|
||||||
|
Leg.Rtop Leg.lenght; ...
|
||||||
|
Leg.Rtop 0.2*Leg.lenght; ...
|
||||||
|
0 0.2*Leg.lenght];
|
||||||
|
#+end_src
|
||||||
|
|
||||||
The structure is added to the stewart structure
|
The structure is added to the stewart structure
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
stewart.Leg = Leg;
|
stewart.Leg = Leg;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Ball Joints
|
** Ball Joints
|
||||||
#+name: fig:stewart_ball_joints
|
#+name: fig:stewart_ball_joints
|
||||||
#+caption: Schematic of the support for the ball joints
|
#+caption: Schematic of the support for the ball joints
|
||||||
[[file:./figs/stewart_ball_joints.png]]
|
[[file:./figs/stewart_ball_joints.png]]
|
||||||
@ -223,7 +438,7 @@ We can define its rotational stiffness and damping. For now, we use perfect join
|
|||||||
|
|
||||||
Its height is defined
|
Its height is defined
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
SP.H = 15; % [mm]
|
SP.H = stewart.Aa(1, 3) - BP.H; % [mm]
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Its radius is based on the radius on the sphere at the end of the legs.
|
Its radius is based on the radius on the sphere at the end of the legs.
|
||||||
@ -253,234 +468,22 @@ The structure is added to the Hexapod structure
|
|||||||
stewart.SP = SP;
|
stewart.SP = SP;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* More parameters are initialized
|
|
||||||
#+begin_src matlab
|
|
||||||
stewart = initializeParameters(stewart);
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Save the Stewart Structure
|
|
||||||
#+begin_src matlab
|
|
||||||
save('./mat/stewart.mat', 'stewart')
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* initializeParameters Function :noexport:
|
|
||||||
:PROPERTIES:
|
|
||||||
:HEADER-ARGS:matlab+: :tangle no
|
|
||||||
:END:
|
|
||||||
#+begin_src matlab
|
|
||||||
function [stewart] = initializeParameters(stewart)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Computation of the position of the connection points on the base and moving platform
|
|
||||||
We first initialize =pos_base= corresponding to $[a_1, a_2, a_3, a_4, a_5, a_6]^T$ and =pos_top= corresponding to $[b_1, b_2, b_3, b_4, b_5, b_6]^T$.
|
|
||||||
#+begin_src matlab
|
|
||||||
stewart.pos_base = zeros(6, 3);
|
|
||||||
stewart.pos_top = zeros(6, 3);
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
We estimate the height between the ball joints of the bottom platform and of the top platform.
|
|
||||||
#+begin_src matlab
|
|
||||||
height = stewart.H - stewart.BP.H - stewart.TP.H - 2*stewart.SP.H; % [mm]
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src matlab
|
|
||||||
for i = 1:3
|
|
||||||
% base points
|
|
||||||
angle_m_b = 120*(i-1) - stewart.BP.alpha;
|
|
||||||
angle_p_b = 120*(i-1) + stewart.BP.alpha;
|
|
||||||
|
|
||||||
stewart.pos_base(2*i-1,:) = [stewart.BP.Rleg*cos(angle_m_b), stewart.BP.Rleg*sin(angle_m_b), 0.0];
|
|
||||||
stewart.pos_base(2*i,:) = [stewart.BP.Rleg*cos(angle_p_b), stewart.BP.Rleg*sin(angle_p_b), 0.0];
|
|
||||||
|
|
||||||
% top points
|
|
||||||
angle_m_t = 120*(i-1) - stewart.TP.alpha + stewart.TP.dalpha;
|
|
||||||
angle_p_t = 120*(i-1) + stewart.TP.alpha + stewart.TP.dalpha;
|
|
||||||
|
|
||||||
stewart.pos_top(2*i-1,:) = [stewart.TP.Rleg*cos(angle_m_t), stewart.TP.Rleg*sin(angle_m_t), height];
|
|
||||||
stewart.pos_top(2*i,:) = [stewart.TP.Rleg*cos(angle_p_t), stewart.TP.Rleg*sin(angle_p_t), height];
|
|
||||||
end
|
|
||||||
|
|
||||||
% permute pos_top points so that legs are end points of base and top points
|
|
||||||
stewart.pos_top = [stewart.pos_top(6,:); stewart.pos_top(1:5,:)]; %6th point on top connects to 1st on bottom
|
|
||||||
stewart.pos_top_tranform = stewart.pos_top - height*[zeros(6, 2),ones(6, 1)];
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
leg vectors
|
|
||||||
#+begin_src matlab
|
|
||||||
legs = stewart.pos_top - stewart.pos_base;
|
|
||||||
leg_length = zeros(6, 1);
|
|
||||||
leg_vectors = zeros(6, 3);
|
|
||||||
for i = 1:6
|
|
||||||
leg_length(i) = norm(legs(i,:));
|
|
||||||
leg_vectors(i,:) = legs(i,:) / leg_length(i);
|
|
||||||
end
|
|
||||||
|
|
||||||
stewart.Leg.lenght = 1000*leg_length(1)/1.5;
|
|
||||||
stewart.Leg.shape.bot = [0 0; ...
|
|
||||||
stewart.Leg.rad.bottom 0; ...
|
|
||||||
stewart.Leg.rad.bottom stewart.Leg.lenght; ...
|
|
||||||
stewart.Leg.rad.top stewart.Leg.lenght; ...
|
|
||||||
stewart.Leg.rad.top 0.2*stewart.Leg.lenght; ...
|
|
||||||
0 0.2*stewart.Leg.lenght];
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Calculate revolute and cylindrical axes
|
|
||||||
#+begin_src matlab
|
|
||||||
rev1 = zeros(6, 3);
|
|
||||||
rev2 = zeros(6, 3);
|
|
||||||
cyl1 = zeros(6, 3);
|
|
||||||
for i = 1:6
|
|
||||||
rev1(i,:) = cross(leg_vectors(i,:), [0 0 1]);
|
|
||||||
rev1(i,:) = rev1(i,:) / norm(rev1(i,:));
|
|
||||||
|
|
||||||
rev2(i,:) = - cross(rev1(i,:), leg_vectors(i,:));
|
|
||||||
rev2(i,:) = rev2(i,:) / norm(rev2(i,:));
|
|
||||||
|
|
||||||
cyl1(i,:) = leg_vectors(i,:);
|
|
||||||
end
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Coordinate systems
|
|
||||||
#+begin_src matlab
|
|
||||||
stewart.lower_leg = struct('rotation', eye(3));
|
|
||||||
stewart.upper_leg = struct('rotation', eye(3));
|
|
||||||
|
|
||||||
for i = 1:6
|
|
||||||
stewart.lower_leg(i).rotation = [rev1(i,:)', rev2(i,:)', cyl1(i,:)'];
|
|
||||||
stewart.upper_leg(i).rotation = [rev1(i,:)', rev2(i,:)', cyl1(i,:)'];
|
|
||||||
end
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Position Matrix
|
|
||||||
#+begin_src matlab
|
|
||||||
stewart.M_pos_base = stewart.pos_base + (height+(stewart.TP.h+stewart.Leg.sphere.top+stewart.SP.h.top+stewart.jacobian)*1e-3)*[zeros(6, 2),ones(6, 1)];
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Compute Jacobian Matrix
|
|
||||||
#+begin_src matlab
|
|
||||||
% aa = stewart.pos_top_tranform + (stewart.jacobian - stewart.TP.h - stewart.SP.height.top)*1e-3*[zeros(6, 2),ones(6, 1)];
|
|
||||||
bb = stewart.pos_top_tranform - (stewart.TP.h + stewart.SP.height.top)*1e-3*[zeros(6, 2),ones(6, 1)];
|
|
||||||
bb = bb - stewart.jacobian*1e-3*[zeros(6, 2),ones(6, 1)];
|
|
||||||
stewart.J = getJacobianMatrix(leg_vectors', bb');
|
|
||||||
|
|
||||||
stewart.K = stewart.Leg.k.ax*stewart.J'*stewart.J;
|
|
||||||
end
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* initializeParameters Function
|
|
||||||
#+begin_src matlab
|
|
||||||
function [stewart] = initializeParameters(stewart)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
We first compute $[a_1, a_2, a_3, a_4, a_5, a_6]^T$ and $[b_1, b_2, b_3, b_4, b_5, b_6]^T$.
|
|
||||||
#+begin_src matlab
|
|
||||||
stewart.Aa = zeros(6, 3); % [mm]
|
|
||||||
stewart.Ab = zeros(6, 3); % [mm]
|
|
||||||
stewart.Bb = zeros(6, 3); % [mm]
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src matlab
|
|
||||||
for i = 1:3
|
|
||||||
stewart.Aa(2*i-1,:) = [stewart.BP.Rleg*cos( pi/180*(120*(i-1) - stewart.BP.alpha) ), ...
|
|
||||||
stewart.BP.Rleg*sin( pi/180*(120*(i-1) - stewart.BP.alpha) ), ...
|
|
||||||
stewart.BP.H+stewart.SP.H];
|
|
||||||
stewart.Aa(2*i,:) = [stewart.BP.Rleg*cos( pi/180*(120*(i-1) + stewart.BP.alpha) ), ...
|
|
||||||
stewart.BP.Rleg*sin( pi/180*(120*(i-1) + stewart.BP.alpha) ), ...
|
|
||||||
stewart.BP.H+stewart.SP.H];
|
|
||||||
|
|
||||||
stewart.Ab(2*i-1,:) = [stewart.TP.Rleg*cos( pi/180*(120*(i-1) + stewart.TP.dalpha - stewart.TP.alpha) ), ...
|
|
||||||
stewart.TP.Rleg*sin( pi/180*(120*(i-1) + stewart.TP.dalpha - stewart.TP.alpha) ), ...
|
|
||||||
stewart.H - stewart.TP.H - stewart.SP.H];
|
|
||||||
stewart.Ab(2*i,:) = [stewart.TP.Rleg*cos( pi/180*(120*(i-1) + stewart.TP.dalpha + stewart.TP.alpha) ), ...
|
|
||||||
stewart.TP.Rleg*sin( pi/180*(120*(i-1) + stewart.TP.dalpha + stewart.TP.alpha) ), ...
|
|
||||||
stewart.H - stewart.TP.H - stewart.SP.H];
|
|
||||||
end
|
|
||||||
stewart.Bb = stewart.Ab - stewart.H*[0,0,1];
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Now, we compute the leg vectors $\hat{s}_i$ and leg position $l_i$:
|
|
||||||
\[ b_i - a_i = l_i \hat{s}_i \]
|
|
||||||
|
|
||||||
We initialize $l_i$ and $\hat{s}_i$
|
|
||||||
#+begin_src matlab
|
|
||||||
leg_length = zeros(6, 1); % [mm]
|
|
||||||
leg_vectors = zeros(6, 3);
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
We compute $b_i - a_i$, and then:
|
|
||||||
\begin{align*}
|
|
||||||
l_i &= \left|b_i - a_i\right| \\
|
|
||||||
\hat{s}_i &= \frac{b_i - a_i}{l_i}
|
|
||||||
\end{align*}
|
|
||||||
|
|
||||||
#+begin_src matlab
|
|
||||||
legs = stewart.Ab - stewart.Aa;
|
|
||||||
|
|
||||||
for i = 1:6
|
|
||||||
leg_length(i) = norm(legs(i,:));
|
|
||||||
leg_vectors(i,:) = legs(i,:) / leg_length(i);
|
|
||||||
end
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Then the shape of the bottom leg is estimated
|
|
||||||
#+begin_src matlab
|
|
||||||
stewart.Leg.lenght = leg_length(1)/1.5;
|
|
||||||
stewart.Leg.shape.bot = ...
|
|
||||||
[0 0; ...
|
|
||||||
stewart.Leg.Rbot 0; ...
|
|
||||||
stewart.Leg.Rbot stewart.Leg.lenght; ...
|
|
||||||
stewart.Leg.Rtop stewart.Leg.lenght; ...
|
|
||||||
stewart.Leg.Rtop 0.2*stewart.Leg.lenght; ...
|
|
||||||
0 0.2*stewart.Leg.lenght];
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
We compute rotation matrices to have the orientation of the legs.
|
|
||||||
The rotation matrix transforms the $z$ axis to the axis of the leg. The other axis are not important here.
|
|
||||||
#+begin_src matlab
|
|
||||||
stewart.Rm = struct('R', eye(3));
|
|
||||||
|
|
||||||
for i = 1:6
|
|
||||||
sx = cross(leg_vectors(i,:), [1 0 0]);
|
|
||||||
sx = sx/norm(sx);
|
|
||||||
|
|
||||||
sy = -cross(sx, leg_vectors(i,:));
|
|
||||||
sy = sy/norm(sy);
|
|
||||||
|
|
||||||
sz = leg_vectors(i,:);
|
|
||||||
sz = sz/norm(sz);
|
|
||||||
|
|
||||||
stewart.Rm(i).R = [sx', sy', sz'];
|
|
||||||
end
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Compute Jacobian Matrix
|
|
||||||
#+begin_src matlab
|
|
||||||
J = zeros(6);
|
|
||||||
|
|
||||||
for i = 1:6
|
|
||||||
J(i, 1:3) = leg_vectors(i, :);
|
|
||||||
J(i, 4:6) = cross(0.001*(stewart.Ab(i, :)- stewart.H*[0,0,1]), leg_vectors(i, :));
|
|
||||||
end
|
|
||||||
|
|
||||||
stewart.J = J;
|
|
||||||
stewart.Jinv = inv(J);
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src matlab
|
|
||||||
stewart.K = stewart.Leg.k_ax*stewart.J'*stewart.J;
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src matlab
|
|
||||||
end
|
|
||||||
end
|
|
||||||
#+end_src
|
|
||||||
* initializeSample
|
* initializeSample
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
|
:HEADER-ARGS:matlab+: :exports code
|
||||||
|
:HEADER-ARGS:matlab+: :comments no
|
||||||
|
:HEADER-ARGS:matlab+: :eval no
|
||||||
:HEADER-ARGS:matlab+: :tangle src/initializeSample.m
|
:HEADER-ARGS:matlab+: :tangle src/initializeSample.m
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
|
** Function description
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
function [] = initializeSample(opts_param)
|
function [] = initializeSample(opts_param)
|
||||||
%% Default values for opts
|
#+end_src
|
||||||
|
|
||||||
|
** Optional Parameters
|
||||||
|
Default values for opts.
|
||||||
|
#+begin_src matlab
|
||||||
sample = struct( ...
|
sample = struct( ...
|
||||||
'radius', 100, ... % radius of the cylinder [mm]
|
'radius', 100, ... % radius of the cylinder [mm]
|
||||||
'height', 100, ... % height of the cylinder [mm]
|
'height', 100, ... % height of the cylinder [mm]
|
||||||
@ -489,15 +492,22 @@ Compute Jacobian Matrix
|
|||||||
'offset', [0, 0, 0], ... % offset position of the sample [mm]
|
'offset', [0, 0, 0], ... % offset position of the sample [mm]
|
||||||
'color', [0.9 0.1 0.1] ...
|
'color', [0.9 0.1 0.1] ...
|
||||||
);
|
);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
%% Populate opts with input parameters
|
Populate opts with input parameters
|
||||||
|
#+begin_src matlab
|
||||||
if exist('opts_param','var')
|
if exist('opts_param','var')
|
||||||
for opt = fieldnames(opts_param)'
|
for opt = fieldnames(opts_param)'
|
||||||
sample.(opt{1}) = opts_param.(opt{1});
|
sample.(opt{1}) = opts_param.(opt{1});
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
%% Save
|
** Save the Sample structure
|
||||||
|
#+begin_src matlab
|
||||||
save('./mat/sample.mat', 'sample');
|
save('./mat/sample.mat', 'sample');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
59
src/computeGeometricalProperties.m
Normal file
59
src/computeGeometricalProperties.m
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
function [stewart] = computeGeometricalProperties(stewart, opts_param)
|
||||||
|
|
||||||
|
opts = struct(...
|
||||||
|
'Jd_pos', [0, 0, 30], ... % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]
|
||||||
|
'Jf_pos', [0, 0, 30] ... % Position of the Jacobian for force location from the top of the mobile platform [mm]
|
||||||
|
);
|
||||||
|
|
||||||
|
if exist('opts_param','var')
|
||||||
|
for opt = fieldnames(opts_param)'
|
||||||
|
opts.(opt{1}) = opts_param.(opt{1});
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
leg_length = zeros(6, 1); % [mm]
|
||||||
|
leg_vectors = zeros(6, 3);
|
||||||
|
|
||||||
|
legs = stewart.Ab - stewart.Aa;
|
||||||
|
|
||||||
|
for i = 1:6
|
||||||
|
leg_length(i) = norm(legs(i,:));
|
||||||
|
leg_vectors(i,:) = legs(i,:) / leg_length(i);
|
||||||
|
end
|
||||||
|
|
||||||
|
stewart.Rm = struct('R', eye(3));
|
||||||
|
|
||||||
|
for i = 1:6
|
||||||
|
sx = cross(leg_vectors(i,:), [1 0 0]);
|
||||||
|
sx = sx/norm(sx);
|
||||||
|
|
||||||
|
sy = -cross(sx, leg_vectors(i,:));
|
||||||
|
sy = sy/norm(sy);
|
||||||
|
|
||||||
|
sz = leg_vectors(i,:);
|
||||||
|
sz = sz/norm(sz);
|
||||||
|
|
||||||
|
stewart.Rm(i).R = [sx', sy', sz'];
|
||||||
|
end
|
||||||
|
|
||||||
|
Jd = zeros(6);
|
||||||
|
|
||||||
|
for i = 1:6
|
||||||
|
Jd(i, 1:3) = leg_vectors(i, :);
|
||||||
|
Jd(i, 4:6) = cross(0.001*(stewart.Bb(i, :) - opts.Jd_pos), leg_vectors(i, :));
|
||||||
|
end
|
||||||
|
|
||||||
|
stewart.Jd = Jd;
|
||||||
|
stewart.Jd_inv = inv(Jd);
|
||||||
|
|
||||||
|
Jf = zeros(6);
|
||||||
|
|
||||||
|
for i = 1:6
|
||||||
|
Jf(i, 1:3) = leg_vectors(i, :);
|
||||||
|
Jf(i, 4:6) = cross(0.001*(stewart.Bb(i, :) - opts.Jf_pos), leg_vectors(i, :));
|
||||||
|
end
|
||||||
|
|
||||||
|
stewart.Jf = Jf;
|
||||||
|
stewart.Jf_inv = inv(Jf);
|
||||||
|
|
||||||
|
end
|
@ -53,7 +53,7 @@ G.OutputName = {'Dxm', 'Dym', 'Dzm', 'Rxm', 'Rym', 'Rzm', ...
|
|||||||
% identifyPlant:7 ends here
|
% identifyPlant:7 ends here
|
||||||
|
|
||||||
% [[file:~/MEGA/These/Matlab/Simscape/stewart-simscape/identification.org::*identifyPlant][identifyPlant:8]]
|
% [[file:~/MEGA/These/Matlab/Simscape/stewart-simscape/identification.org::*identifyPlant][identifyPlant:8]]
|
||||||
sys.G_cart = minreal(G({'Dxm', 'Dym', 'Dzm', 'Rxm', 'Rym', 'Rzm'}, {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'}));
|
sys.G_cart = G({'Dxm', 'Dym', 'Dzm', 'Rxm', 'Rym', 'Rzm'}, {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'});
|
||||||
sys.G_forc = minreal(G({'F1m', 'F2m', 'F3m', 'F4m', 'F5m', 'F6m'}, {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}));
|
sys.G_forc = minreal(G({'F1m', 'F2m', 'F3m', 'F4m', 'F5m', 'F6m'}, {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}));
|
||||||
sys.G_legs = minreal(G({'D1m', 'D2m', 'D3m', 'D4m', 'D5m', 'D6m'}, {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}));
|
sys.G_legs = minreal(G({'D1m', 'D2m', 'D3m', 'D4m', 'D5m', 'D6m'}, {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}));
|
||||||
sys.G_tran = minreal(G({'Dxtm', 'Dytm', 'Dztm', 'Rxtm', 'Rytm', 'Rztm'}, {'Dwx', 'Dwy', 'Dwz', 'Rwx', 'Rwy', 'Rwz'}));
|
sys.G_tran = minreal(G({'Dxtm', 'Dytm', 'Dztm', 'Rxtm', 'Rytm', 'Rztm'}, {'Dwx', 'Dwy', 'Dwz', 'Rwx', 'Rwy', 'Rwz'}));
|
||||||
|
89
src/initializeCubicConfiguration.m
Normal file
89
src/initializeCubicConfiguration.m
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
function [stewart] = initializeCubicConfiguration(opts_param)
|
||||||
|
|
||||||
|
opts = struct(...
|
||||||
|
'H_tot', 90, ... % Total height of the Hexapod [mm]
|
||||||
|
'L', 110, ... % Size of the Cube [mm]
|
||||||
|
'H', 40, ... % Height between base joints and platform joints [mm]
|
||||||
|
'H0', 75 ... % Height between the corner of the cube and the plane containing the base joints [mm]
|
||||||
|
);
|
||||||
|
|
||||||
|
if exist('opts_param','var')
|
||||||
|
for opt = fieldnames(opts_param)'
|
||||||
|
opts.(opt{1}) = opts_param.(opt{1});
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
points = [0, 0, 0; ...
|
||||||
|
0, 0, 1; ...
|
||||||
|
0, 1, 0; ...
|
||||||
|
0, 1, 1; ...
|
||||||
|
1, 0, 0; ...
|
||||||
|
1, 0, 1; ...
|
||||||
|
1, 1, 0; ...
|
||||||
|
1, 1, 1];
|
||||||
|
points = opts.L*points;
|
||||||
|
|
||||||
|
sx = cross([1, 1, 1], [1 0 0]);
|
||||||
|
sx = sx/norm(sx);
|
||||||
|
|
||||||
|
sy = -cross(sx, [1, 1, 1]);
|
||||||
|
sy = sy/norm(sy);
|
||||||
|
|
||||||
|
sz = [1, 1, 1];
|
||||||
|
sz = sz/norm(sz);
|
||||||
|
|
||||||
|
R = [sx', sy', sz']';
|
||||||
|
|
||||||
|
cube = zeros(size(points));
|
||||||
|
for i = 1:size(points, 1)
|
||||||
|
cube(i, :) = R * points(i, :)';
|
||||||
|
end
|
||||||
|
|
||||||
|
leg_indices = [3, 4; ...
|
||||||
|
2, 4; ...
|
||||||
|
2, 6; ...
|
||||||
|
5, 6; ...
|
||||||
|
5, 7; ...
|
||||||
|
3, 7];
|
||||||
|
|
||||||
|
legs = zeros(6, 3);
|
||||||
|
legs_start = zeros(6, 3);
|
||||||
|
|
||||||
|
for i = 1:6
|
||||||
|
legs(i, :) = cube(leg_indices(i, 2), :) - cube(leg_indices(i, 1), :);
|
||||||
|
legs_start(i, :) = cube(leg_indices(i, 1), :);
|
||||||
|
end
|
||||||
|
|
||||||
|
Hmax = cube(4, 3) - cube(2, 3);
|
||||||
|
if opts.H0 < cube(2, 3)
|
||||||
|
error(sprintf('H0 is not high enought. Minimum H0 = %.1f', cube(2, 3)));
|
||||||
|
else if opts.H0 + opts.H > cube(4, 3)
|
||||||
|
error(sprintf('H0+H is too high. Maximum H0+H = %.1f', cube(4, 3)));
|
||||||
|
error('H0+H is too high');
|
||||||
|
end
|
||||||
|
|
||||||
|
Aa = zeros(6, 3);
|
||||||
|
for i = 1:6
|
||||||
|
t = (opts.H0-legs_start(i, 3))/(legs(i, 3));
|
||||||
|
Aa(i, :) = legs_start(i, :) + t*legs(i, :);
|
||||||
|
end
|
||||||
|
|
||||||
|
Ab = zeros(6, 3);
|
||||||
|
for i = 1:6
|
||||||
|
t = (opts.H0+opts.H-legs_start(i, 3))/(legs(i, 3));
|
||||||
|
Ab(i, :) = legs_start(i, :) + t*legs(i, :);
|
||||||
|
end
|
||||||
|
|
||||||
|
Bb = zeros(6, 3);
|
||||||
|
Bb = Ab - (opts.H0 + opts.H_tot/2 + opts.H/2)*[0, 0, 1];
|
||||||
|
|
||||||
|
h = opts.H0 + opts.H/2 - opts.H_tot/2;
|
||||||
|
Aa = Aa - h*[0, 0, 1];
|
||||||
|
Ab = Ab - h*[0, 0, 1];
|
||||||
|
|
||||||
|
stewart = struct();
|
||||||
|
stewart.Aa = Aa;
|
||||||
|
stewart.Ab = Ab;
|
||||||
|
stewart.Bb = Bb;
|
||||||
|
stewart.H_tot = opts.H_tot;
|
||||||
|
end
|
47
src/initializeGeneralConfiguration.m
Normal file
47
src/initializeGeneralConfiguration.m
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
function [stewart] = initializeGeneralConfiguration(opts_param)
|
||||||
|
|
||||||
|
opts = struct(...
|
||||||
|
'H_tot', 90, ... % Height of the platform [mm]
|
||||||
|
'H_joint', 15, ... % Height of the joints [mm]
|
||||||
|
'H_plate', 10, ... % Thickness of the fixed and mobile platforms [mm]
|
||||||
|
'R_bot', 100, ... % Radius where the legs articulations are positionned [mm]
|
||||||
|
'R_top', 80, ... % Radius where the legs articulations are positionned [mm]
|
||||||
|
'a_bot', 10, ... % Angle Offset [deg]
|
||||||
|
'a_top', 40, ... % Angle Offset [deg]
|
||||||
|
'da_top', 0 ... % Angle Offset from 0 position [deg]
|
||||||
|
);
|
||||||
|
|
||||||
|
if exist('opts_param','var')
|
||||||
|
for opt = fieldnames(opts_param)'
|
||||||
|
opts.(opt{1}) = opts_param.(opt{1});
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Aa = zeros(6, 3); % [mm]
|
||||||
|
Ab = zeros(6, 3); % [mm]
|
||||||
|
Bb = zeros(6, 3); % [mm]
|
||||||
|
|
||||||
|
for i = 1:3
|
||||||
|
Aa(2*i-1,:) = [opts.R_bot*cos( pi/180*(120*(i-1) - opts.a_bot) ), ...
|
||||||
|
opts.R_bot*sin( pi/180*(120*(i-1) - opts.a_bot) ), ...
|
||||||
|
opts.H_plate+opts.H_joint];
|
||||||
|
Aa(2*i,:) = [opts.R_bot*cos( pi/180*(120*(i-1) + opts.a_bot) ), ...
|
||||||
|
opts.R_bot*sin( pi/180*(120*(i-1) + opts.a_bot) ), ...
|
||||||
|
opts.H_plate+opts.H_joint];
|
||||||
|
|
||||||
|
Ab(2*i-1,:) = [opts.R_top*cos( pi/180*(120*(i-1) + opts.da_top - opts.a_top) ), ...
|
||||||
|
opts.R_top*sin( pi/180*(120*(i-1) + opts.da_top - opts.a_top) ), ...
|
||||||
|
opts.H_tot - opts.H_plate - opts.H_joint];
|
||||||
|
Ab(2*i,:) = [opts.R_top*cos( pi/180*(120*(i-1) + opts.da_top + opts.a_top) ), ...
|
||||||
|
opts.R_top*sin( pi/180*(120*(i-1) + opts.da_top + opts.a_top) ), ...
|
||||||
|
opts.H_tot - opts.H_plate - opts.H_joint];
|
||||||
|
end
|
||||||
|
|
||||||
|
Bb = Ab - opts.H_tot*[0,0,1];
|
||||||
|
|
||||||
|
stewart = struct();
|
||||||
|
stewart.Aa = Aa;
|
||||||
|
stewart.Ab = Ab;
|
||||||
|
stewart.Bb = Bb;
|
||||||
|
stewart.H_tot = opts.H_tot;
|
||||||
|
end
|
@ -1,228 +1,86 @@
|
|||||||
% Function description and arguments
|
|
||||||
% The =initializeHexapod= function takes one structure that contains configurations for the hexapod and returns one structure representing the hexapod.
|
|
||||||
|
|
||||||
function [stewart] = initializeHexapod(opts_param)
|
function [stewart] = initializeHexapod(opts_param)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% Default values for opts.
|
|
||||||
|
|
||||||
opts = struct(...
|
opts = struct(...
|
||||||
'height', 90, ... % Height of the platform [mm]
|
'height', 90, ... % Height of the platform [mm]
|
||||||
'density', 8000, ... % Density of the material used for the hexapod [kg/m3]
|
'density', 10, ... % Density of the material used for the hexapod [kg/m3]
|
||||||
'k_ax', 1e8, ... % Stiffness of each actuator [N/m]
|
'k_ax', 1e8, ... % Stiffness of each actuator [N/m]
|
||||||
'c_ax', 1000, ... % Damping of each actuator [N/(m/s)]
|
'c_ax', 1000, ... % Damping of each actuator [N/(m/s)]
|
||||||
'stroke', 50e-6, ... % Maximum stroke of each actuator [m]
|
'stroke', 50e-6, ... % Maximum stroke of each actuator [m]
|
||||||
'name', 'stewart' ... % Name of the file
|
'name', 'stewart' ... % Name of the file
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% Populate opts with input parameters
|
|
||||||
|
|
||||||
if exist('opts_param','var')
|
if exist('opts_param','var')
|
||||||
for opt = fieldnames(opts_param)'
|
for opt = fieldnames(opts_param)'
|
||||||
opts.(opt{1}) = opts_param.(opt{1});
|
opts.(opt{1}) = opts_param.(opt{1});
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
% Initialization of the stewart structure
|
|
||||||
% We initialize the Stewart structure
|
|
||||||
|
|
||||||
stewart = struct();
|
stewart = struct();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% And we defined its total height.
|
|
||||||
|
|
||||||
stewart.H = opts.height; % [mm]
|
stewart.H = opts.height; % [mm]
|
||||||
|
|
||||||
% Bottom Plate
|
|
||||||
% #+name: fig:stewart_bottom_plate
|
|
||||||
% #+caption: Schematic of the bottom plates with all the parameters
|
|
||||||
% [[file:./figs/stewart_bottom_plate.png]]
|
|
||||||
|
|
||||||
|
|
||||||
% The bottom plate structure is initialized.
|
|
||||||
|
|
||||||
BP = struct();
|
BP = struct();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% We defined its internal radius (if there is a hole in the bottom plate) and its outer radius.
|
|
||||||
|
|
||||||
BP.Rint = 0; % Internal Radius [mm]
|
BP.Rint = 0; % Internal Radius [mm]
|
||||||
BP.Rext = 150; % External Radius [mm]
|
BP.Rext = 150; % External Radius [mm]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% We define its thickness.
|
|
||||||
|
|
||||||
BP.H = 10; % Thickness of the Bottom Plate [mm]
|
BP.H = 10; % Thickness of the Bottom Plate [mm]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% At which radius legs will be fixed and with that angle offset.
|
|
||||||
|
|
||||||
BP.Rleg = 100; % Radius where the legs articulations are positionned [mm]
|
BP.Rleg = 100; % Radius where the legs articulations are positionned [mm]
|
||||||
BP.alpha = 10; % Angle Offset [deg]
|
BP.alpha = 30; % Angle Offset [deg]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% We defined the density of the material of the bottom plate.
|
|
||||||
|
|
||||||
BP.density = opts.density; % Density of the material [kg/m3]
|
BP.density = opts.density; % Density of the material [kg/m3]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% And its color.
|
|
||||||
|
|
||||||
BP.color = [0.7 0.7 0.7]; % Color [RGB]
|
BP.color = [0.7 0.7 0.7]; % Color [RGB]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% Then the profile of the bottom plate is computed and will be used by Simscape
|
|
||||||
|
|
||||||
BP.shape = [BP.Rint BP.H; BP.Rint 0; BP.Rext 0; BP.Rext BP.H]; % [mm]
|
BP.shape = [BP.Rint BP.H; BP.Rint 0; BP.Rext 0; BP.Rext BP.H]; % [mm]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% The structure is added to the stewart structure
|
|
||||||
|
|
||||||
stewart.BP = BP;
|
stewart.BP = BP;
|
||||||
|
|
||||||
% Top Plate
|
|
||||||
% The top plate structure is initialized.
|
|
||||||
|
|
||||||
TP = struct();
|
TP = struct();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% We defined the internal and external radius of the top plate.
|
|
||||||
|
|
||||||
TP.Rint = 0; % [mm]
|
TP.Rint = 0; % [mm]
|
||||||
TP.Rext = 100; % [mm]
|
TP.Rext = 100; % [mm]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% The thickness of the top plate.
|
|
||||||
|
|
||||||
TP.H = 10; % [mm]
|
TP.H = 10; % [mm]
|
||||||
|
|
||||||
|
TP.Rleg = 80; % Radius where the legs articulations are positionned [mm]
|
||||||
|
TP.alpha = 10; % Angle [deg]
|
||||||
% At which radius and angle are fixed the legs.
|
|
||||||
|
|
||||||
TP.Rleg = 100; % Radius where the legs articulations are positionned [mm]
|
|
||||||
TP.alpha = 20; % Angle [deg]
|
|
||||||
TP.dalpha = 0; % Angle Offset from 0 position [deg]
|
TP.dalpha = 0; % Angle Offset from 0 position [deg]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% The density of its material.
|
|
||||||
|
|
||||||
TP.density = opts.density; % Density of the material [kg/m3]
|
TP.density = opts.density; % Density of the material [kg/m3]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% Its color.
|
|
||||||
|
|
||||||
TP.color = [0.7 0.7 0.7]; % Color [RGB]
|
TP.color = [0.7 0.7 0.7]; % Color [RGB]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% Then the shape of the top plate is computed
|
|
||||||
|
|
||||||
TP.shape = [TP.Rint TP.H; TP.Rint 0; TP.Rext 0; TP.Rext TP.H];
|
TP.shape = [TP.Rint TP.H; TP.Rint 0; TP.Rext 0; TP.Rext TP.H];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% The structure is added to the stewart structure
|
|
||||||
|
|
||||||
stewart.TP = TP;
|
stewart.TP = TP;
|
||||||
|
|
||||||
% Legs
|
|
||||||
% #+name: fig:stewart_legs
|
|
||||||
% #+caption: Schematic for the legs of the Stewart platform
|
|
||||||
% [[file:./figs/stewart_legs.png]]
|
|
||||||
|
|
||||||
|
|
||||||
% The leg structure is initialized.
|
|
||||||
|
|
||||||
Leg = struct();
|
Leg = struct();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% The maximum Stroke of each leg is defined.
|
|
||||||
|
|
||||||
Leg.stroke = opts.stroke; % [m]
|
Leg.stroke = opts.stroke; % [m]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% The stiffness and damping of each leg are defined
|
|
||||||
|
|
||||||
Leg.k_ax = opts.k_ax; % Stiffness of each leg [N/m]
|
Leg.k_ax = opts.k_ax; % Stiffness of each leg [N/m]
|
||||||
Leg.c_ax = opts.c_ax; % Damping of each leg [N/(m/s)]
|
Leg.c_ax = opts.c_ax; % Damping of each leg [N/(m/s)]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% The radius of the legs are defined
|
|
||||||
|
|
||||||
Leg.Rtop = 10; % Radius of the cylinder of the top part of the leg[mm]
|
Leg.Rtop = 10; % Radius of the cylinder of the top part of the leg[mm]
|
||||||
Leg.Rbot = 12; % Radius of the cylinder of the bottom part of the leg [mm]
|
Leg.Rbot = 12; % Radius of the cylinder of the bottom part of the leg [mm]
|
||||||
|
|
||||||
|
Leg.density = 0.01*opts.density; % Density of the material used for the legs [kg/m3]
|
||||||
|
|
||||||
% The density of its material.
|
|
||||||
|
|
||||||
Leg.density = opts.density; % Density of the material used for the legs [kg/m3]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% Its color.
|
|
||||||
|
|
||||||
Leg.color = [0.5 0.5 0.5]; % Color of the top part of the leg [RGB]
|
Leg.color = [0.5 0.5 0.5]; % Color of the top part of the leg [RGB]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% The radius of spheres representing the ball joints are defined.
|
|
||||||
|
|
||||||
Leg.R = 1.3*Leg.Rbot; % Size of the sphere at the extremity of the leg [mm]
|
Leg.R = 1.3*Leg.Rbot; % Size of the sphere at the extremity of the leg [mm]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% The structure is added to the stewart structure
|
|
||||||
|
|
||||||
stewart.Leg = Leg;
|
stewart.Leg = Leg;
|
||||||
|
|
||||||
% Ball Joints
|
|
||||||
% #+name: fig:stewart_ball_joints
|
|
||||||
% #+caption: Schematic of the support for the ball joints
|
|
||||||
% [[file:./figs/stewart_ball_joints.png]]
|
|
||||||
|
|
||||||
% =SP= is the structure representing the support for the ball joints at the extremity of each leg.
|
|
||||||
|
|
||||||
% The =SP= structure is initialized.
|
|
||||||
|
|
||||||
SP = struct();
|
SP = struct();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% We can define its rotational stiffness and damping. For now, we use perfect joints.
|
|
||||||
|
|
||||||
SP.k = 0; % [N*m/deg]
|
SP.k = 0; % [N*m/deg]
|
||||||
SP.c = 0; % [N*m/deg]
|
SP.c = 0; % [N*m/deg]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% Its height is defined
|
|
||||||
|
|
||||||
SP.H = 15; % [mm]
|
SP.H = 15; % [mm]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% Its radius is based on the radius on the sphere at the end of the legs.
|
|
||||||
|
|
||||||
SP.R = Leg.R; % [mm]
|
SP.R = Leg.R; % [mm]
|
||||||
|
|
||||||
SP.section = [0 SP.H-SP.R;
|
SP.section = [0 SP.H-SP.R;
|
||||||
@ -230,40 +88,18 @@ SP.section = [0 SP.H-SP.R;
|
|||||||
SP.R 0;
|
SP.R 0;
|
||||||
SP.R SP.H];
|
SP.R SP.H];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% The density of its material is defined.
|
|
||||||
|
|
||||||
SP.density = opts.density; % [kg/m^3]
|
SP.density = opts.density; % [kg/m^3]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% Its color is defined.
|
|
||||||
|
|
||||||
SP.color = [0.7 0.7 0.7]; % [RGB]
|
SP.color = [0.7 0.7 0.7]; % [RGB]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% The structure is added to the Hexapod structure
|
|
||||||
|
|
||||||
stewart.SP = SP;
|
stewart.SP = SP;
|
||||||
|
|
||||||
% More parameters are initialized
|
|
||||||
|
|
||||||
stewart = initializeParameters(stewart);
|
stewart = initializeParameters(stewart);
|
||||||
|
|
||||||
% Save the Stewart Structure
|
|
||||||
|
|
||||||
save('./mat/stewart.mat', 'stewart')
|
save('./mat/stewart.mat', 'stewart')
|
||||||
|
|
||||||
% initializeParameters Function
|
|
||||||
|
|
||||||
function [stewart] = initializeParameters(stewart)
|
function [stewart] = initializeParameters(stewart)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% We first compute $[a_1, a_2, a_3, a_4, a_5, a_6]^T$ and $[b_1, b_2, b_3, b_4, b_5, b_6]^T$.
|
|
||||||
|
|
||||||
stewart.Aa = zeros(6, 3); % [mm]
|
stewart.Aa = zeros(6, 3); % [mm]
|
||||||
stewart.Ab = zeros(6, 3); % [mm]
|
stewart.Ab = zeros(6, 3); % [mm]
|
||||||
stewart.Bb = zeros(6, 3); % [mm]
|
stewart.Bb = zeros(6, 3); % [mm]
|
||||||
@ -285,25 +121,9 @@ for i = 1:3
|
|||||||
end
|
end
|
||||||
stewart.Bb = stewart.Ab - stewart.H*[0,0,1];
|
stewart.Bb = stewart.Ab - stewart.H*[0,0,1];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% Now, we compute the leg vectors $\hat{s}_i$ and leg position $l_i$:
|
|
||||||
% \[ b_i - a_i = l_i \hat{s}_i \]
|
|
||||||
|
|
||||||
% We initialize $l_i$ and $\hat{s}_i$
|
|
||||||
|
|
||||||
leg_length = zeros(6, 1); % [mm]
|
leg_length = zeros(6, 1); % [mm]
|
||||||
leg_vectors = zeros(6, 3);
|
leg_vectors = zeros(6, 3);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% We compute $b_i - a_i$, and then:
|
|
||||||
% \begin{align*}
|
|
||||||
% l_i &= \left|b_i - a_i\right| \\
|
|
||||||
% \hat{s}_i &= \frac{b_i - a_i}{l_i}
|
|
||||||
% \end{align*}
|
|
||||||
|
|
||||||
|
|
||||||
legs = stewart.Ab - stewart.Aa;
|
legs = stewart.Ab - stewart.Aa;
|
||||||
|
|
||||||
for i = 1:6
|
for i = 1:6
|
||||||
@ -311,10 +131,6 @@ for i = 1:6
|
|||||||
leg_vectors(i,:) = legs(i,:) / leg_length(i);
|
leg_vectors(i,:) = legs(i,:) / leg_length(i);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% Then the shape of the bottom leg is estimated
|
|
||||||
|
|
||||||
stewart.Leg.lenght = leg_length(1)/1.5;
|
stewart.Leg.lenght = leg_length(1)/1.5;
|
||||||
stewart.Leg.shape.bot = ...
|
stewart.Leg.shape.bot = ...
|
||||||
[0 0; ...
|
[0 0; ...
|
||||||
@ -324,11 +140,6 @@ stewart.Leg.shape.bot = ...
|
|||||||
stewart.Leg.Rtop 0.2*stewart.Leg.lenght; ...
|
stewart.Leg.Rtop 0.2*stewart.Leg.lenght; ...
|
||||||
0 0.2*stewart.Leg.lenght];
|
0 0.2*stewart.Leg.lenght];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% We compute rotation matrices to have the orientation of the legs.
|
|
||||||
% The rotation matrix transforms the $z$ axis to the axis of the leg. The other axis are not important here.
|
|
||||||
|
|
||||||
stewart.Rm = struct('R', eye(3));
|
stewart.Rm = struct('R', eye(3));
|
||||||
|
|
||||||
for i = 1:6
|
for i = 1:6
|
||||||
@ -344,10 +155,6 @@ for i = 1:6
|
|||||||
stewart.Rm(i).R = [sx', sy', sz'];
|
stewart.Rm(i).R = [sx', sy', sz'];
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% Compute Jacobian Matrix
|
|
||||||
|
|
||||||
J = zeros(6);
|
J = zeros(6);
|
||||||
|
|
||||||
for i = 1:6
|
for i = 1:6
|
||||||
|
94
src/initializeMechanicalElements.m
Normal file
94
src/initializeMechanicalElements.m
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
function [stewart] = initializeMechanicalElements(stewart, opts_param)
|
||||||
|
|
||||||
|
opts = struct(...
|
||||||
|
'thickness', 10, ... % Thickness of the base and platform [mm]
|
||||||
|
'density', 1000, ... % Density of the material used for the hexapod [kg/m3]
|
||||||
|
'k_ax', 1e8, ... % Stiffness of each actuator [N/m]
|
||||||
|
'c_ax', 1000, ... % Damping of each actuator [N/(m/s)]
|
||||||
|
'stroke', 50e-6 ... % Maximum stroke of each actuator [m]
|
||||||
|
);
|
||||||
|
|
||||||
|
if exist('opts_param','var')
|
||||||
|
for opt = fieldnames(opts_param)'
|
||||||
|
opts.(opt{1}) = opts_param.(opt{1});
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
BP = struct();
|
||||||
|
|
||||||
|
BP.Rint = 0; % Internal Radius [mm]
|
||||||
|
BP.Rext = 150; % External Radius [mm]
|
||||||
|
|
||||||
|
BP.H = opts.thickness; % Thickness of the Bottom Plate [mm]
|
||||||
|
|
||||||
|
BP.density = opts.density; % Density of the material [kg/m3]
|
||||||
|
|
||||||
|
BP.color = [0.7 0.7 0.7]; % Color [RGB]
|
||||||
|
|
||||||
|
BP.shape = [BP.Rint BP.H; BP.Rint 0; BP.Rext 0; BP.Rext BP.H]; % [mm]
|
||||||
|
|
||||||
|
stewart.BP = BP;
|
||||||
|
|
||||||
|
TP = struct();
|
||||||
|
|
||||||
|
TP.Rint = 0; % [mm]
|
||||||
|
TP.Rext = 100; % [mm]
|
||||||
|
|
||||||
|
TP.H = 10; % [mm]
|
||||||
|
|
||||||
|
TP.density = opts.density; % Density of the material [kg/m3]
|
||||||
|
|
||||||
|
TP.color = [0.7 0.7 0.7]; % Color [RGB]
|
||||||
|
|
||||||
|
TP.shape = [TP.Rint TP.H; TP.Rint 0; TP.Rext 0; TP.Rext TP.H];
|
||||||
|
|
||||||
|
stewart.TP = TP;
|
||||||
|
|
||||||
|
Leg = struct();
|
||||||
|
|
||||||
|
Leg.stroke = opts.stroke; % [m]
|
||||||
|
|
||||||
|
Leg.k_ax = opts.k_ax; % Stiffness of each leg [N/m]
|
||||||
|
Leg.c_ax = opts.c_ax; % Damping of each leg [N/(m/s)]
|
||||||
|
|
||||||
|
Leg.Rtop = 10; % Radius of the cylinder of the top part of the leg[mm]
|
||||||
|
Leg.Rbot = 12; % Radius of the cylinder of the bottom part of the leg [mm]
|
||||||
|
|
||||||
|
Leg.density = opts.density; % Density of the material used for the legs [kg/m3]
|
||||||
|
|
||||||
|
Leg.color = [0.5 0.5 0.5]; % Color of the top part of the leg [RGB]
|
||||||
|
|
||||||
|
Leg.R = 1.3*Leg.Rbot; % Size of the sphere at the extremity of the leg [mm]
|
||||||
|
|
||||||
|
legs = stewart.Ab - stewart.Aa;
|
||||||
|
Leg.lenght = norm(legs(1,:))/1.5;
|
||||||
|
|
||||||
|
Leg.shape.bot = ...
|
||||||
|
[0 0; ...
|
||||||
|
Leg.Rbot 0; ...
|
||||||
|
Leg.Rbot Leg.lenght; ...
|
||||||
|
Leg.Rtop Leg.lenght; ...
|
||||||
|
Leg.Rtop 0.2*Leg.lenght; ...
|
||||||
|
0 0.2*Leg.lenght];
|
||||||
|
|
||||||
|
stewart.Leg = Leg;
|
||||||
|
|
||||||
|
SP = struct();
|
||||||
|
|
||||||
|
SP.k = 0; % [N*m/deg]
|
||||||
|
SP.c = 0; % [N*m/deg]
|
||||||
|
|
||||||
|
SP.H = stewart.Aa(1, 3) - BP.H; % [mm]
|
||||||
|
|
||||||
|
SP.R = Leg.R; % [mm]
|
||||||
|
|
||||||
|
SP.section = [0 SP.H-SP.R;
|
||||||
|
0 0;
|
||||||
|
SP.R 0;
|
||||||
|
SP.R SP.H];
|
||||||
|
|
||||||
|
SP.density = opts.density; % [kg/m^3]
|
||||||
|
|
||||||
|
SP.color = [0.7 0.7 0.7]; % [RGB]
|
||||||
|
|
||||||
|
stewart.SP = SP;
|
@ -1,6 +1,6 @@
|
|||||||
function [] = initializeSample(opts_param)
|
function [] = initializeSample(opts_param)
|
||||||
%% Default values for opts
|
|
||||||
sample = struct( ...
|
sample = struct( ...
|
||||||
'radius', 100, ... % radius of the cylinder [mm]
|
'radius', 100, ... % radius of the cylinder [mm]
|
||||||
'height', 100, ... % height of the cylinder [mm]
|
'height', 100, ... % height of the cylinder [mm]
|
||||||
'mass', 10, ... % mass of the cylinder [kg]
|
'mass', 10, ... % mass of the cylinder [kg]
|
||||||
@ -9,13 +9,12 @@ function [] = initializeSample(opts_param)
|
|||||||
'color', [0.9 0.1 0.1] ...
|
'color', [0.9 0.1 0.1] ...
|
||||||
);
|
);
|
||||||
|
|
||||||
%% Populate opts with input parameters
|
if exist('opts_param','var')
|
||||||
if exist('opts_param','var')
|
|
||||||
for opt = fieldnames(opts_param)'
|
for opt = fieldnames(opts_param)'
|
||||||
sample.(opt{1}) = opts_param.(opt{1});
|
sample.(opt{1}) = opts_param.(opt{1});
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
%% Save
|
save('./mat/sample.mat', 'sample');
|
||||||
save('./mat/sample.mat', 'sample');
|
|
||||||
end
|
end
|
||||||
|
59
src/initializeSimscapeData.m
Normal file
59
src/initializeSimscapeData.m
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
function [stewart] = initializeSimscapeData(stewart, opts_param)
|
||||||
|
|
||||||
|
opts = struct(...
|
||||||
|
'Jd_pos', [0, 0, 30], ... % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]
|
||||||
|
'Jf_pos', [0, 0, 30] ... % Position of the Jacobian for force location from the top of the mobile platform [mm]
|
||||||
|
);
|
||||||
|
|
||||||
|
if exist('opts_param','var')
|
||||||
|
for opt = fieldnames(opts_param)'
|
||||||
|
opts.(opt{1}) = opts_param.(opt{1});
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
leg_length = zeros(6, 1); % [mm]
|
||||||
|
leg_vectors = zeros(6, 3);
|
||||||
|
|
||||||
|
legs = stewart.Ab - stewart.Aa;
|
||||||
|
|
||||||
|
for i = 1:6
|
||||||
|
leg_length(i) = norm(legs(i,:));
|
||||||
|
leg_vectors(i,:) = legs(i,:) / leg_length(i);
|
||||||
|
end
|
||||||
|
|
||||||
|
stewart.Rm = struct('R', eye(3));
|
||||||
|
|
||||||
|
for i = 1:6
|
||||||
|
sx = cross(leg_vectors(i,:), [1 0 0]);
|
||||||
|
sx = sx/norm(sx);
|
||||||
|
|
||||||
|
sy = -cross(sx, leg_vectors(i,:));
|
||||||
|
sy = sy/norm(sy);
|
||||||
|
|
||||||
|
sz = leg_vectors(i,:);
|
||||||
|
sz = sz/norm(sz);
|
||||||
|
|
||||||
|
stewart.Rm(i).R = [sx', sy', sz'];
|
||||||
|
end
|
||||||
|
|
||||||
|
Jd = zeros(6);
|
||||||
|
|
||||||
|
for i = 1:6
|
||||||
|
Jd(i, 1:3) = leg_vectors(i, :);
|
||||||
|
Jd(i, 4:6) = cross(0.001*(stewart.Bb(i, :) - opts.Jd_pos), leg_vectors(i, :));
|
||||||
|
end
|
||||||
|
|
||||||
|
stewart.Jd = Jd;
|
||||||
|
stewart.Jd_inv = inv(Jd);
|
||||||
|
|
||||||
|
Jf = zeros(6);
|
||||||
|
|
||||||
|
for i = 1:6
|
||||||
|
Jf(i, 1:3) = leg_vectors(i, :);
|
||||||
|
Jf(i, 4:6) = cross(0.001*(stewart.Bb(i, :) - opts.Jf_pos), leg_vectors(i, :));
|
||||||
|
end
|
||||||
|
|
||||||
|
stewart.Jf = Jf;
|
||||||
|
stewart.Jf_inv = inv(Jf);
|
||||||
|
|
||||||
|
end
|
94
src/initializeStewartPlatform.m
Normal file
94
src/initializeStewartPlatform.m
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
function [stewart] = initializeStewartPlatform(stewart, opts_param)
|
||||||
|
|
||||||
|
opts = struct(...
|
||||||
|
'thickness', 10, ... % Thickness of the base and platform [mm]
|
||||||
|
'density', 1000, ... % Density of the material used for the hexapod [kg/m3]
|
||||||
|
'k_ax', 1e8, ... % Stiffness of each actuator [N/m]
|
||||||
|
'c_ax', 1000, ... % Damping of each actuator [N/(m/s)]
|
||||||
|
'stroke', 50e-6 ... % Maximum stroke of each actuator [m]
|
||||||
|
);
|
||||||
|
|
||||||
|
if exist('opts_param','var')
|
||||||
|
for opt = fieldnames(opts_param)'
|
||||||
|
opts.(opt{1}) = opts_param.(opt{1});
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
BP = struct();
|
||||||
|
|
||||||
|
BP.Rint = 0; % Internal Radius [mm]
|
||||||
|
BP.Rext = 150; % External Radius [mm]
|
||||||
|
|
||||||
|
BP.H = opts.thickness; % Thickness of the Bottom Plate [mm]
|
||||||
|
|
||||||
|
BP.density = opts.density; % Density of the material [kg/m3]
|
||||||
|
|
||||||
|
BP.color = [0.7 0.7 0.7]; % Color [RGB]
|
||||||
|
|
||||||
|
BP.shape = [BP.Rint BP.H; BP.Rint 0; BP.Rext 0; BP.Rext BP.H]; % [mm]
|
||||||
|
|
||||||
|
stewart.BP = BP;
|
||||||
|
|
||||||
|
TP = struct();
|
||||||
|
|
||||||
|
TP.Rint = 0; % [mm]
|
||||||
|
TP.Rext = 100; % [mm]
|
||||||
|
|
||||||
|
TP.H = 10; % [mm]
|
||||||
|
|
||||||
|
TP.density = opts.density; % Density of the material [kg/m3]
|
||||||
|
|
||||||
|
TP.color = [0.7 0.7 0.7]; % Color [RGB]
|
||||||
|
|
||||||
|
TP.shape = [TP.Rint TP.H; TP.Rint 0; TP.Rext 0; TP.Rext TP.H];
|
||||||
|
|
||||||
|
stewart.TP = TP;
|
||||||
|
|
||||||
|
Leg = struct();
|
||||||
|
|
||||||
|
Leg.stroke = opts.stroke; % [m]
|
||||||
|
|
||||||
|
Leg.k_ax = opts.k_ax; % Stiffness of each leg [N/m]
|
||||||
|
Leg.c_ax = opts.c_ax; % Damping of each leg [N/(m/s)]
|
||||||
|
|
||||||
|
Leg.Rtop = 10; % Radius of the cylinder of the top part of the leg[mm]
|
||||||
|
Leg.Rbot = 12; % Radius of the cylinder of the bottom part of the leg [mm]
|
||||||
|
|
||||||
|
Leg.density = opts.density; % Density of the material used for the legs [kg/m3]
|
||||||
|
|
||||||
|
Leg.color = [0.5 0.5 0.5]; % Color of the top part of the leg [RGB]
|
||||||
|
|
||||||
|
Leg.R = 1.3*Leg.Rbot; % Size of the sphere at the extremity of the leg [mm]
|
||||||
|
|
||||||
|
legs = stewart.Ab - stewart.Aa;
|
||||||
|
Leg.lenght = norm(legs(1,:))/1.5;
|
||||||
|
|
||||||
|
Leg.shape.bot = ...
|
||||||
|
[0 0; ...
|
||||||
|
Leg.Rbot 0; ...
|
||||||
|
Leg.Rbot Leg.lenght; ...
|
||||||
|
Leg.Rtop Leg.lenght; ...
|
||||||
|
Leg.Rtop 0.2*Leg.lenght; ...
|
||||||
|
0 0.2*Leg.lenght];
|
||||||
|
|
||||||
|
stewart.Leg = Leg;
|
||||||
|
|
||||||
|
SP = struct();
|
||||||
|
|
||||||
|
SP.k = 0; % [N*m/deg]
|
||||||
|
SP.c = 0; % [N*m/deg]
|
||||||
|
|
||||||
|
SP.H = stewart.Aa(1, 3) - BP.H; % [mm]
|
||||||
|
|
||||||
|
SP.R = Leg.R; % [mm]
|
||||||
|
|
||||||
|
SP.section = [0 SP.H-SP.R;
|
||||||
|
0 0;
|
||||||
|
SP.R 0;
|
||||||
|
SP.R SP.H];
|
||||||
|
|
||||||
|
SP.density = opts.density; % [kg/m^3]
|
||||||
|
|
||||||
|
SP.color = [0.7 0.7 0.7]; % [RGB]
|
||||||
|
|
||||||
|
stewart.SP = SP;
|
BIN
stewart.slx
BIN
stewart.slx
Binary file not shown.
@ -1,4 +1,28 @@
|
|||||||
#+TITLE: Stiffness of the Stewart Platform
|
#+TITLE: Stiffness of the Stewart Platform
|
||||||
|
:DRAWER:
|
||||||
|
#+STARTUP: overview
|
||||||
|
|
||||||
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="css/htmlize.css"/>
|
||||||
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="css/readtheorg.css"/>
|
||||||
|
#+HTML_HEAD: <script src="js/jquery.min.js"></script>
|
||||||
|
#+HTML_HEAD: <script src="js/bootstrap.min.js"></script>
|
||||||
|
#+HTML_HEAD: <script type="text/javascript" src="js/jquery.stickytableheaders.min.js"></script>
|
||||||
|
#+HTML_HEAD: <script type="text/javascript" src="js/readtheorg.js"></script>
|
||||||
|
|
||||||
|
#+LATEX_CLASS: cleanreport
|
||||||
|
#+LaTeX_CLASS_OPTIONS: [tocnp, secbreak, minted]
|
||||||
|
#+LaTeX_HEADER: \usepackage{svg}
|
||||||
|
#+LaTeX_HEADER: \newcommand{\authorFirstName}{Thomas}
|
||||||
|
#+LaTeX_HEADER: \newcommand{\authorLastName}{Dehaeze}
|
||||||
|
#+LaTeX_HEADER: \newcommand{\authorEmail}{dehaeze.thomas@gmail.com}
|
||||||
|
|
||||||
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
|
#+PROPERTY: header-args:matlab+ :exports both
|
||||||
|
#+PROPERTY: header-args:matlab+ :eval no-export
|
||||||
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
|
:END:
|
||||||
|
|
||||||
* Functions
|
* Functions
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
|
Loading…
Reference in New Issue
Block a user