Compare commits
16 Commits
36b236958a
...
master
Author | SHA1 | Date | |
---|---|---|---|
13c6750b15 | |||
ed0c18829b | |||
f5922ca970 | |||
240d113062 | |||
32330b92f0 | |||
58cd2026dc | |||
7fad722181 | |||
0faaef06e6 | |||
8173db25fb | |||
1fd35e9449 | |||
009481ff75 | |||
09dad1482c | |||
ebb928b890 | |||
08f3f2faea | |||
fbabac3c5c | |||
c330fe9475 |
@@ -1,240 +1,32 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"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>
|
||||||
<!-- 2020-03-13 ven. 10:34 -->
|
<!-- 2021-01-08 ven. 15:53 -->
|
||||||
<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" />
|
|
||||||
<title>Stewart Platform - Decentralized Active Damping</title>
|
<title>Stewart Platform - Decentralized Active Damping</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<style type="text/css">
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<!--/*--><![CDATA[/*><!--*/
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
.title { text-align: center;
|
|
||||||
margin-bottom: .2em; }
|
|
||||||
.subtitle { text-align: center;
|
|
||||||
font-size: medium;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-top:0; }
|
|
||||||
.todo { font-family: monospace; color: red; }
|
|
||||||
.done { font-family: monospace; color: green; }
|
|
||||||
.priority { font-family: monospace; color: orange; }
|
|
||||||
.tag { background-color: #eee; font-family: monospace;
|
|
||||||
padding: 2px; font-size: 80%; font-weight: normal; }
|
|
||||||
.timestamp { color: #bebebe; }
|
|
||||||
.timestamp-kwd { color: #5f9ea0; }
|
|
||||||
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
|
|
||||||
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
|
|
||||||
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
|
|
||||||
.underline { text-decoration: underline; }
|
|
||||||
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
|
||||||
p.verse { margin-left: 3%; }
|
|
||||||
pre {
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
box-shadow: 3px 3px 3px #eee;
|
|
||||||
padding: 8pt;
|
|
||||||
font-family: monospace;
|
|
||||||
overflow: auto;
|
|
||||||
margin: 1.2em;
|
|
||||||
}
|
|
||||||
pre.src {
|
|
||||||
position: relative;
|
|
||||||
overflow: visible;
|
|
||||||
padding-top: 1.2em;
|
|
||||||
}
|
|
||||||
pre.src:before {
|
|
||||||
display: none;
|
|
||||||
position: absolute;
|
|
||||||
background-color: white;
|
|
||||||
top: -10px;
|
|
||||||
right: 10px;
|
|
||||||
padding: 3px;
|
|
||||||
border: 1px solid black;
|
|
||||||
}
|
|
||||||
pre.src:hover:before { display: inline;}
|
|
||||||
/* Languages per Org manual */
|
|
||||||
pre.src-asymptote:before { content: 'Asymptote'; }
|
|
||||||
pre.src-awk:before { content: 'Awk'; }
|
|
||||||
pre.src-C:before { content: 'C'; }
|
|
||||||
/* pre.src-C++ doesn't work in CSS */
|
|
||||||
pre.src-clojure:before { content: 'Clojure'; }
|
|
||||||
pre.src-css:before { content: 'CSS'; }
|
|
||||||
pre.src-D:before { content: 'D'; }
|
|
||||||
pre.src-ditaa:before { content: 'ditaa'; }
|
|
||||||
pre.src-dot:before { content: 'Graphviz'; }
|
|
||||||
pre.src-calc:before { content: 'Emacs Calc'; }
|
|
||||||
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
|
||||||
pre.src-fortran:before { content: 'Fortran'; }
|
|
||||||
pre.src-gnuplot:before { content: 'gnuplot'; }
|
|
||||||
pre.src-haskell:before { content: 'Haskell'; }
|
|
||||||
pre.src-hledger:before { content: 'hledger'; }
|
|
||||||
pre.src-java:before { content: 'Java'; }
|
|
||||||
pre.src-js:before { content: 'Javascript'; }
|
|
||||||
pre.src-latex:before { content: 'LaTeX'; }
|
|
||||||
pre.src-ledger:before { content: 'Ledger'; }
|
|
||||||
pre.src-lisp:before { content: 'Lisp'; }
|
|
||||||
pre.src-lilypond:before { content: 'Lilypond'; }
|
|
||||||
pre.src-lua:before { content: 'Lua'; }
|
|
||||||
pre.src-matlab:before { content: 'MATLAB'; }
|
|
||||||
pre.src-mscgen:before { content: 'Mscgen'; }
|
|
||||||
pre.src-ocaml:before { content: 'Objective Caml'; }
|
|
||||||
pre.src-octave:before { content: 'Octave'; }
|
|
||||||
pre.src-org:before { content: 'Org mode'; }
|
|
||||||
pre.src-oz:before { content: 'OZ'; }
|
|
||||||
pre.src-plantuml:before { content: 'Plantuml'; }
|
|
||||||
pre.src-processing:before { content: 'Processing.js'; }
|
|
||||||
pre.src-python:before { content: 'Python'; }
|
|
||||||
pre.src-R:before { content: 'R'; }
|
|
||||||
pre.src-ruby:before { content: 'Ruby'; }
|
|
||||||
pre.src-sass:before { content: 'Sass'; }
|
|
||||||
pre.src-scheme:before { content: 'Scheme'; }
|
|
||||||
pre.src-screen:before { content: 'Gnu Screen'; }
|
|
||||||
pre.src-sed:before { content: 'Sed'; }
|
|
||||||
pre.src-sh:before { content: 'shell'; }
|
|
||||||
pre.src-sql:before { content: 'SQL'; }
|
|
||||||
pre.src-sqlite:before { content: 'SQLite'; }
|
|
||||||
/* additional languages in org.el's org-babel-load-languages alist */
|
|
||||||
pre.src-forth:before { content: 'Forth'; }
|
|
||||||
pre.src-io:before { content: 'IO'; }
|
|
||||||
pre.src-J:before { content: 'J'; }
|
|
||||||
pre.src-makefile:before { content: 'Makefile'; }
|
|
||||||
pre.src-maxima:before { content: 'Maxima'; }
|
|
||||||
pre.src-perl:before { content: 'Perl'; }
|
|
||||||
pre.src-picolisp:before { content: 'Pico Lisp'; }
|
|
||||||
pre.src-scala:before { content: 'Scala'; }
|
|
||||||
pre.src-shell:before { content: 'Shell Script'; }
|
|
||||||
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
|
|
||||||
/* additional language identifiers per "defun org-babel-execute"
|
|
||||||
in ob-*.el */
|
|
||||||
pre.src-cpp:before { content: 'C++'; }
|
|
||||||
pre.src-abc:before { content: 'ABC'; }
|
|
||||||
pre.src-coq:before { content: 'Coq'; }
|
|
||||||
pre.src-groovy:before { content: 'Groovy'; }
|
|
||||||
/* additional language identifiers from org-babel-shell-names in
|
|
||||||
ob-shell.el: ob-shell is the only babel language using a lambda to put
|
|
||||||
the execution function name together. */
|
|
||||||
pre.src-bash:before { content: 'bash'; }
|
|
||||||
pre.src-csh:before { content: 'csh'; }
|
|
||||||
pre.src-ash:before { content: 'ash'; }
|
|
||||||
pre.src-dash:before { content: 'dash'; }
|
|
||||||
pre.src-ksh:before { content: 'ksh'; }
|
|
||||||
pre.src-mksh:before { content: 'mksh'; }
|
|
||||||
pre.src-posh:before { content: 'posh'; }
|
|
||||||
/* Additional Emacs modes also supported by the LaTeX listings package */
|
|
||||||
pre.src-ada:before { content: 'Ada'; }
|
|
||||||
pre.src-asm:before { content: 'Assembler'; }
|
|
||||||
pre.src-caml:before { content: 'Caml'; }
|
|
||||||
pre.src-delphi:before { content: 'Delphi'; }
|
|
||||||
pre.src-html:before { content: 'HTML'; }
|
|
||||||
pre.src-idl:before { content: 'IDL'; }
|
|
||||||
pre.src-mercury:before { content: 'Mercury'; }
|
|
||||||
pre.src-metapost:before { content: 'MetaPost'; }
|
|
||||||
pre.src-modula-2:before { content: 'Modula-2'; }
|
|
||||||
pre.src-pascal:before { content: 'Pascal'; }
|
|
||||||
pre.src-ps:before { content: 'PostScript'; }
|
|
||||||
pre.src-prolog:before { content: 'Prolog'; }
|
|
||||||
pre.src-simula:before { content: 'Simula'; }
|
|
||||||
pre.src-tcl:before { content: 'tcl'; }
|
|
||||||
pre.src-tex:before { content: 'TeX'; }
|
|
||||||
pre.src-plain-tex:before { content: 'Plain TeX'; }
|
|
||||||
pre.src-verilog:before { content: 'Verilog'; }
|
|
||||||
pre.src-vhdl:before { content: 'VHDL'; }
|
|
||||||
pre.src-xml:before { content: 'XML'; }
|
|
||||||
pre.src-nxml:before { content: 'XML'; }
|
|
||||||
/* add a generic configuration mode; LaTeX export needs an additional
|
|
||||||
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
|
|
||||||
pre.src-conf:before { content: 'Configuration File'; }
|
|
||||||
|
|
||||||
table { border-collapse:collapse; }
|
|
||||||
caption.t-above { caption-side: top; }
|
|
||||||
caption.t-bottom { caption-side: bottom; }
|
|
||||||
td, th { vertical-align:top; }
|
|
||||||
th.org-right { text-align: center; }
|
|
||||||
th.org-left { text-align: center; }
|
|
||||||
th.org-center { text-align: center; }
|
|
||||||
td.org-right { text-align: right; }
|
|
||||||
td.org-left { text-align: left; }
|
|
||||||
td.org-center { text-align: center; }
|
|
||||||
dt { font-weight: bold; }
|
|
||||||
.footpara { display: inline; }
|
|
||||||
.footdef { margin-bottom: 1em; }
|
|
||||||
.figure { padding: 1em; }
|
|
||||||
.figure p { text-align: center; }
|
|
||||||
.equation-container {
|
|
||||||
display: table;
|
|
||||||
text-align: center;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.equation {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.equation-label {
|
|
||||||
display: table-cell;
|
|
||||||
text-align: right;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.inlinetask {
|
|
||||||
padding: 10px;
|
|
||||||
border: 2px solid gray;
|
|
||||||
margin: 10px;
|
|
||||||
background: #ffffcc;
|
|
||||||
}
|
|
||||||
#org-div-home-and-up
|
|
||||||
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
|
||||||
textarea { overflow-x: auto; }
|
|
||||||
.linenr { font-size: smaller }
|
|
||||||
.code-highlighted { background-color: #ffff00; }
|
|
||||||
.org-info-js_info-navigation { border-style: none; }
|
|
||||||
#org-info-js_console-label
|
|
||||||
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
|
||||||
.org-info-js_search-highlight
|
|
||||||
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
|
||||||
.org-svg { width: 90%; }
|
|
||||||
/*]]>*/-->
|
|
||||||
</style>
|
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
|
||||||
<script src="./js/jquery.min.js"></script>
|
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
<script src="./js/readtheorg.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
|
|
||||||
<!--/*--><![CDATA[/*><!--*/
|
|
||||||
function CodeHighlightOn(elem, id)
|
|
||||||
{
|
|
||||||
var target = document.getElementById(id);
|
|
||||||
if(null != target) {
|
|
||||||
elem.cacheClassElem = elem.className;
|
|
||||||
elem.cacheClassTarget = target.className;
|
|
||||||
target.className = "code-highlighted";
|
|
||||||
elem.className = "code-highlighted";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function CodeHighlightOff(elem, id)
|
|
||||||
{
|
|
||||||
var target = document.getElementById(id);
|
|
||||||
if(elem.cacheClassElem)
|
|
||||||
elem.className = elem.cacheClassElem;
|
|
||||||
if(elem.cacheClassTarget)
|
|
||||||
target.className = elem.cacheClassTarget;
|
|
||||||
}
|
|
||||||
/*]]>*///-->
|
|
||||||
// @license-end
|
|
||||||
</script>
|
|
||||||
<script>
|
<script>
|
||||||
MathJax = {
|
MathJax = {
|
||||||
tex: { macros: {
|
svg: {
|
||||||
bm: ["\\boldsymbol{#1}",1],
|
scale: 1,
|
||||||
}
|
fontCache: "global"
|
||||||
|
},
|
||||||
|
tex: {
|
||||||
|
tags: "ams",
|
||||||
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript"
|
<script id="MathJax-script" async
|
||||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
@@ -247,35 +39,35 @@
|
|||||||
<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="#orgc22d5d6">1. Inertial Control</a>
|
<li><a href="#orgddaf52f">1. Inertial Control</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org1671c0b">1.1. Identification of the Dynamics</a></li>
|
<li><a href="#org933440d">1.1. Identification of the Dynamics</a></li>
|
||||||
<li><a href="#org89b6ab8">1.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
|
<li><a href="#org2875dd1">1.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
|
||||||
<li><a href="#orgf4665ef">1.3. Obtained Damping</a></li>
|
<li><a href="#org0cea759">1.3. Obtained Damping</a></li>
|
||||||
<li><a href="#orgf2dd409">1.4. Conclusion</a></li>
|
<li><a href="#orga866100">1.4. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org89e426a">2. Integral Force Feedback</a>
|
<li><a href="#orgf8ed544">2. Integral Force Feedback</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgbcaaa33">2.1. Identification of the Dynamics with perfect Joints</a></li>
|
<li><a href="#orga2d019b">2.1. Identification of the Dynamics with perfect Joints</a></li>
|
||||||
<li><a href="#org422d0e7">2.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
|
<li><a href="#org6ac04ee">2.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
|
||||||
<li><a href="#orgbf1f2d6">2.3. Obtained Damping</a></li>
|
<li><a href="#org06e1086">2.3. Obtained Damping</a></li>
|
||||||
<li><a href="#orgb9ae491">2.4. Conclusion</a></li>
|
<li><a href="#orgfa832d6">2.4. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org47a29be">3. Direct Velocity Feedback</a>
|
<li><a href="#orgabec4e1">3. Direct Velocity Feedback</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orge88ed78">3.1. Identification of the Dynamics with perfect Joints</a></li>
|
<li><a href="#org19cbcee">3.1. Identification of the Dynamics with perfect Joints</a></li>
|
||||||
<li><a href="#org8ebebbc">3.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
|
<li><a href="#org0fabf01">3.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
|
||||||
<li><a href="#org9dac8fd">3.3. Obtained Damping</a></li>
|
<li><a href="#org6c74c9a">3.3. Obtained Damping</a></li>
|
||||||
<li><a href="#org8c078af">3.4. Conclusion</a></li>
|
<li><a href="#org81b2156">3.4. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgc84bb75">4. Compliance and Transmissibility Comparison</a>
|
<li><a href="#orgc7e2089">4. Compliance and Transmissibility Comparison</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgebeb03b">4.1. Initialization</a></li>
|
<li><a href="#org6ec3b9e">4.1. Initialization</a></li>
|
||||||
<li><a href="#orgdde930c">4.2. Identification</a></li>
|
<li><a href="#orge87554a">4.2. Identification</a></li>
|
||||||
<li><a href="#orgcfd0381">4.3. Results</a></li>
|
<li><a href="#org1d70ccd">4.3. Results</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -286,19 +78,19 @@
|
|||||||
The following decentralized active damping techniques are briefly studied:
|
The following decentralized active damping techniques are briefly studied:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>Inertial Control (proportional feedback of the absolute velocity): Section <a href="#orgb2aa4b3">1</a></li>
|
<li>Inertial Control (proportional feedback of the absolute velocity): Section <a href="#org709d56c">1</a></li>
|
||||||
<li>Integral Force Feedback: Section <a href="#org44cadc6">2</a></li>
|
<li>Integral Force Feedback: Section <a href="#org1f0d316">2</a></li>
|
||||||
<li>Direct feedback of the relative velocity of each strut: Section <a href="#orgbdd1eba">3</a></li>
|
<li>Direct feedback of the relative velocity of each strut: Section <a href="#org63027d0">3</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div id="outline-container-orgc22d5d6" class="outline-2">
|
<div id="outline-container-orgddaf52f" class="outline-2">
|
||||||
<h2 id="orgc22d5d6"><span class="section-number-2">1</span> Inertial Control</h2>
|
<h2 id="orgddaf52f"><span class="section-number-2">1</span> Inertial Control</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgb2aa4b3"></a>
|
<a id="org709d56c"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="note">
|
<div class="note" id="org1ae7526">
|
||||||
<p>
|
<p>
|
||||||
The Matlab script corresponding to this section is accessible <a href="../matlab/active_damping_inertial.m">here</a>.
|
The Matlab script corresponding to this section is accessible <a href="../matlab/active_damping_inertial.m">here</a>.
|
||||||
</p>
|
</p>
|
||||||
@@ -310,8 +102,8 @@ To run the script, open the Simulink Project, and type <code>run active_damping_
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1671c0b" class="outline-3">
|
<div id="outline-container-org933440d" class="outline-3">
|
||||||
<h3 id="org1671c0b"><span class="section-number-3">1.1</span> Identification of the Dynamics</h3>
|
<h3 id="org933440d"><span class="section-number-3">1.1</span> Identification of the Dynamics</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
||||||
@@ -356,10 +148,10 @@ G.OutputName = {<span class="org-string">'Vm1'</span>, <span class="org-string">
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The transfer function from actuator forces to force sensors is shown in Figure <a href="#org116ea42">1</a>.
|
The transfer function from actuator forces to force sensors is shown in Figure <a href="#org5cd47c9">1</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="org116ea42" class="figure">
|
<div id="org5cd47c9" class="figure">
|
||||||
<p><img src="figs/inertial_plant_coupling.png" alt="inertial_plant_coupling.png" />
|
<p><img src="figs/inertial_plant_coupling.png" alt="inertial_plant_coupling.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Transfer function from the Actuator force \(F_{i}\) to the absolute velocity of the same leg \(v_{m,i}\) and to the absolute velocity of the other legs \(v_{m,j}\) with \(i \neq j\) in grey (<a href="./figs/inertial_plant_coupling.png">png</a>, <a href="./figs/inertial_plant_coupling.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 1: </span>Transfer function from the Actuator force \(F_{i}\) to the absolute velocity of the same leg \(v_{m,i}\) and to the absolute velocity of the other legs \(v_{m,j}\) with \(i \neq j\) in grey (<a href="./figs/inertial_plant_coupling.png">png</a>, <a href="./figs/inertial_plant_coupling.pdf">pdf</a>)</p>
|
||||||
@@ -367,8 +159,8 @@ The transfer function from actuator forces to force sensors is shown in Figure <
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org89b6ab8" class="outline-3">
|
<div id="outline-container-org2875dd1" class="outline-3">
|
||||||
<h3 id="org89b6ab8"><span class="section-number-3">1.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
|
<h3 id="org2875dd1"><span class="section-number-3">1.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
|
||||||
<div class="outline-text-3" id="text-1-2">
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<p>
|
<p>
|
||||||
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
|
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
|
||||||
@@ -393,10 +185,10 @@ Ga.OutputName = {<span class="org-string">'Vm1'</span>, <span class="org-string"
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The new dynamics from force actuator to force sensor is shown in Figure <a href="#org620efcd">2</a>.
|
The new dynamics from force actuator to force sensor is shown in Figure <a href="#org8fcc87b">2</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="org620efcd" class="figure">
|
<div id="org8fcc87b" class="figure">
|
||||||
<p><img src="figs/inertial_plant_flexible_joint_decentralized.png" alt="inertial_plant_flexible_joint_decentralized.png" />
|
<p><img src="figs/inertial_plant_flexible_joint_decentralized.png" alt="inertial_plant_flexible_joint_decentralized.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 2: </span>Transfer function from the Actuator force \(F_{i}\) to the absolute velocity sensor \(v_{m,i}\) (<a href="./figs/inertial_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/inertial_plant_flexible_joint_decentralized.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 2: </span>Transfer function from the Actuator force \(F_{i}\) to the absolute velocity sensor \(v_{m,i}\) (<a href="./figs/inertial_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/inertial_plant_flexible_joint_decentralized.pdf">pdf</a>)</p>
|
||||||
@@ -404,8 +196,8 @@ The new dynamics from force actuator to force sensor is shown in Figure <a href=
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf4665ef" class="outline-3">
|
<div id="outline-container-org0cea759" class="outline-3">
|
||||||
<h3 id="orgf4665ef"><span class="section-number-3">1.3</span> Obtained Damping</h3>
|
<h3 id="org0cea759"><span class="section-number-3">1.3</span> Obtained Damping</h3>
|
||||||
<div class="outline-text-3" id="text-1-3">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
<p>
|
<p>
|
||||||
The control is a performed in a decentralized manner.
|
The control is a performed in a decentralized manner.
|
||||||
@@ -419,10 +211,10 @@ The \(6 \times 6\) control is a diagonal matrix with pure proportional action on
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The root locus is shown in figure <a href="#org9cabaee">3</a>.
|
The root locus is shown in figure <a href="#orgaea8656">3</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="org9cabaee" class="figure">
|
<div id="orgaea8656" class="figure">
|
||||||
<p><img src="figs/root_locus_inertial_rot_stiffness.png" alt="root_locus_inertial_rot_stiffness.png" />
|
<p><img src="figs/root_locus_inertial_rot_stiffness.png" alt="root_locus_inertial_rot_stiffness.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 3: </span>Root Locus plot with Decentralized Inertial Control when considering the stiffness of flexible joints (<a href="./figs/root_locus_inertial_rot_stiffness.png">png</a>, <a href="./figs/root_locus_inertial_rot_stiffness.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 3: </span>Root Locus plot with Decentralized Inertial Control when considering the stiffness of flexible joints (<a href="./figs/root_locus_inertial_rot_stiffness.png">png</a>, <a href="./figs/root_locus_inertial_rot_stiffness.pdf">pdf</a>)</p>
|
||||||
@@ -430,10 +222,10 @@ The root locus is shown in figure <a href="#org9cabaee">3</a>.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf2dd409" class="outline-3">
|
<div id="outline-container-orga866100" class="outline-3">
|
||||||
<h3 id="orgf2dd409"><span class="section-number-3">1.4</span> Conclusion</h3>
|
<h3 id="orga866100"><span class="section-number-3">1.4</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-1-4">
|
<div class="outline-text-3" id="text-1-4">
|
||||||
<div class="important">
|
<div class="important" id="org91c21ee">
|
||||||
<p>
|
<p>
|
||||||
We do not have guaranteed stability with Inertial control. This is because of the flexibility inside the internal sensor.
|
We do not have guaranteed stability with Inertial control. This is because of the flexibility inside the internal sensor.
|
||||||
</p>
|
</p>
|
||||||
@@ -443,14 +235,14 @@ We do not have guaranteed stability with Inertial control. This is because of th
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org89e426a" class="outline-2">
|
<div id="outline-container-orgf8ed544" class="outline-2">
|
||||||
<h2 id="org89e426a"><span class="section-number-2">2</span> Integral Force Feedback</h2>
|
<h2 id="orgf8ed544"><span class="section-number-2">2</span> Integral Force Feedback</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="org44cadc6"></a>
|
<a id="org1f0d316"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="note">
|
<div class="note" id="org30f755d">
|
||||||
<p>
|
<p>
|
||||||
The Matlab script corresponding to this section is accessible <a href="../matlab/active_damping_iff.m">here</a>.
|
The Matlab script corresponding to this section is accessible <a href="../matlab/active_damping_iff.m">here</a>.
|
||||||
</p>
|
</p>
|
||||||
@@ -462,8 +254,8 @@ To run the script, open the Simulink Project, and type <code>run active_damping_
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgbcaaa33" class="outline-3">
|
<div id="outline-container-orga2d019b" class="outline-3">
|
||||||
<h3 id="orgbcaaa33"><span class="section-number-3">2.1</span> Identification of the Dynamics with perfect Joints</h3>
|
<h3 id="orga2d019b"><span class="section-number-3">2.1</span> Identification of the Dynamics with perfect Joints</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<p>
|
||||||
We first initialize the Stewart platform without joint stiffness.
|
We first initialize the Stewart platform without joint stiffness.
|
||||||
@@ -510,10 +302,10 @@ G.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string">
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The transfer function from actuator forces to force sensors is shown in Figure <a href="#org8f016dc">4</a>.
|
The transfer function from actuator forces to force sensors is shown in Figure <a href="#org3b3de64">4</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="org8f016dc" class="figure">
|
<div id="org3b3de64" class="figure">
|
||||||
<p><img src="figs/iff_plant_coupling.png" alt="iff_plant_coupling.png" />
|
<p><img src="figs/iff_plant_coupling.png" alt="iff_plant_coupling.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 4: </span>Transfer function from the Actuator force \(F_{i}\) to the Force sensor of the same leg \(F_{m,i}\) and to the force sensor of the other legs \(F_{m,j}\) with \(i \neq j\) in grey (<a href="./figs/iff_plant_coupling.png">png</a>, <a href="./figs/iff_plant_coupling.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 4: </span>Transfer function from the Actuator force \(F_{i}\) to the Force sensor of the same leg \(F_{m,i}\) and to the force sensor of the other legs \(F_{m,j}\) with \(i \neq j\) in grey (<a href="./figs/iff_plant_coupling.png">png</a>, <a href="./figs/iff_plant_coupling.pdf">pdf</a>)</p>
|
||||||
@@ -521,8 +313,8 @@ The transfer function from actuator forces to force sensors is shown in Figure <
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org422d0e7" class="outline-3">
|
<div id="outline-container-org6ac04ee" class="outline-3">
|
||||||
<h3 id="org422d0e7"><span class="section-number-3">2.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
|
<h3 id="org6ac04ee"><span class="section-number-3">2.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
|
||||||
<div class="outline-text-3" id="text-2-2">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<p>
|
<p>
|
||||||
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
|
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
|
||||||
@@ -547,10 +339,10 @@ Ga.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string"
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The new dynamics from force actuator to force sensor is shown in Figure <a href="#org4a92e1b">5</a>.
|
The new dynamics from force actuator to force sensor is shown in Figure <a href="#org1902b8f">5</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="org4a92e1b" class="figure">
|
<div id="org1902b8f" class="figure">
|
||||||
<p><img src="figs/iff_plant_flexible_joint_decentralized.png" alt="iff_plant_flexible_joint_decentralized.png" />
|
<p><img src="figs/iff_plant_flexible_joint_decentralized.png" alt="iff_plant_flexible_joint_decentralized.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 5: </span>Transfer function from the Actuator force \(F_{i}\) to the force sensor \(F_{m,i}\) (<a href="./figs/iff_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/iff_plant_flexible_joint_decentralized.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 5: </span>Transfer function from the Actuator force \(F_{i}\) to the force sensor \(F_{m,i}\) (<a href="./figs/iff_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/iff_plant_flexible_joint_decentralized.pdf">pdf</a>)</p>
|
||||||
@@ -558,8 +350,8 @@ The new dynamics from force actuator to force sensor is shown in Figure <a href=
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgbf1f2d6" class="outline-3">
|
<div id="outline-container-org06e1086" class="outline-3">
|
||||||
<h3 id="orgbf1f2d6"><span class="section-number-3">2.3</span> Obtained Damping</h3>
|
<h3 id="org06e1086"><span class="section-number-3">2.3</span> Obtained Damping</h3>
|
||||||
<div class="outline-text-3" id="text-2-3">
|
<div class="outline-text-3" id="text-2-3">
|
||||||
<p>
|
<p>
|
||||||
The control is a performed in a decentralized manner.
|
The control is a performed in a decentralized manner.
|
||||||
@@ -573,17 +365,17 @@ The \(6 \times 6\) control is a diagonal matrix with pure integration action on
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The root locus is shown in figure <a href="#orgc8981ba">6</a> and the obtained pole damping function of the control gain is shown in figure <a href="#orgd7fefc7">7</a>.
|
The root locus is shown in figure <a href="#orgce5d8d8">6</a> and the obtained pole damping function of the control gain is shown in figure <a href="#org67419cd">7</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="orgc8981ba" class="figure">
|
<div id="orgce5d8d8" class="figure">
|
||||||
<p><img src="figs/root_locus_iff_rot_stiffness.png" alt="root_locus_iff_rot_stiffness.png" />
|
<p><img src="figs/root_locus_iff_rot_stiffness.png" alt="root_locus_iff_rot_stiffness.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 6: </span>Root Locus plot with Decentralized Integral Force Feedback when considering the stiffness of flexible joints (<a href="./figs/root_locus_iff_rot_stiffness.png">png</a>, <a href="./figs/root_locus_iff_rot_stiffness.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 6: </span>Root Locus plot with Decentralized Integral Force Feedback when considering the stiffness of flexible joints (<a href="./figs/root_locus_iff_rot_stiffness.png">png</a>, <a href="./figs/root_locus_iff_rot_stiffness.pdf">pdf</a>)</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgd7fefc7" class="figure">
|
<div id="org67419cd" class="figure">
|
||||||
<p><img src="figs/pole_damping_gain_iff_rot_stiffness.png" alt="pole_damping_gain_iff_rot_stiffness.png" />
|
<p><img src="figs/pole_damping_gain_iff_rot_stiffness.png" alt="pole_damping_gain_iff_rot_stiffness.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 7: </span>Damping of the poles with respect to the gain of the Decentralized Integral Force Feedback when considering the stiffness of flexible joints (<a href="./figs/pole_damping_gain_iff_rot_stiffness.png">png</a>, <a href="./figs/pole_damping_gain_iff_rot_stiffness.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 7: </span>Damping of the poles with respect to the gain of the Decentralized Integral Force Feedback when considering the stiffness of flexible joints (<a href="./figs/pole_damping_gain_iff_rot_stiffness.png">png</a>, <a href="./figs/pole_damping_gain_iff_rot_stiffness.pdf">pdf</a>)</p>
|
||||||
@@ -591,10 +383,10 @@ The root locus is shown in figure <a href="#orgc8981ba">6</a> and the obtained p
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb9ae491" class="outline-3">
|
<div id="outline-container-orgfa832d6" class="outline-3">
|
||||||
<h3 id="orgb9ae491"><span class="section-number-3">2.4</span> Conclusion</h3>
|
<h3 id="orgfa832d6"><span class="section-number-3">2.4</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-2-4">
|
<div class="outline-text-3" id="text-2-4">
|
||||||
<div class="important">
|
<div class="important" id="orgad0c17b">
|
||||||
<p>
|
<p>
|
||||||
The joint stiffness has a huge impact on the attainable active damping performance when using force sensors.
|
The joint stiffness has a huge impact on the attainable active damping performance when using force sensors.
|
||||||
Thus, if Integral Force Feedback is to be used in a Stewart platform with flexible joints, the rotational stiffness of the joints should be minimized.
|
Thus, if Integral Force Feedback is to be used in a Stewart platform with flexible joints, the rotational stiffness of the joints should be minimized.
|
||||||
@@ -605,14 +397,14 @@ Thus, if Integral Force Feedback is to be used in a Stewart platform with flexib
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org47a29be" class="outline-2">
|
<div id="outline-container-orgabec4e1" class="outline-2">
|
||||||
<h2 id="org47a29be"><span class="section-number-2">3</span> Direct Velocity Feedback</h2>
|
<h2 id="orgabec4e1"><span class="section-number-2">3</span> Direct Velocity Feedback</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgbdd1eba"></a>
|
<a id="org63027d0"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="note">
|
<div class="note" id="orgadea9d6">
|
||||||
<p>
|
<p>
|
||||||
The Matlab script corresponding to this section is accessible <a href="../matlab/active_damping_dvf.m">here</a>.
|
The Matlab script corresponding to this section is accessible <a href="../matlab/active_damping_dvf.m">here</a>.
|
||||||
</p>
|
</p>
|
||||||
@@ -624,8 +416,8 @@ To run the script, open the Simulink Project, and type <code>run active_damping_
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge88ed78" class="outline-3">
|
<div id="outline-container-org19cbcee" class="outline-3">
|
||||||
<h3 id="orge88ed78"><span class="section-number-3">3.1</span> Identification of the Dynamics with perfect Joints</h3>
|
<h3 id="org19cbcee"><span class="section-number-3">3.1</span> Identification of the Dynamics with perfect Joints</h3>
|
||||||
<div class="outline-text-3" id="text-3-1">
|
<div class="outline-text-3" id="text-3-1">
|
||||||
<p>
|
<p>
|
||||||
We first initialize the Stewart platform without joint stiffness.
|
We first initialize the Stewart platform without joint stiffness.
|
||||||
@@ -676,10 +468,10 @@ G.OutputName = {<span class="org-string">'Dm1'</span>, <span class="org-string">
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The transfer function from actuator forces to relative motion sensors is shown in Figure <a href="#org6de423c">8</a>.
|
The transfer function from actuator forces to relative motion sensors is shown in Figure <a href="#org34c24ba">8</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="org6de423c" class="figure">
|
<div id="org34c24ba" class="figure">
|
||||||
<p><img src="figs/dvf_plant_coupling.png" alt="dvf_plant_coupling.png" />
|
<p><img src="figs/dvf_plant_coupling.png" alt="dvf_plant_coupling.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 8: </span>Transfer function from the Actuator force \(F_{i}\) to the Relative Motion Sensor \(D_{m,j}\) with \(i \neq j\) (<a href="./figs/dvf_plant_coupling.png">png</a>, <a href="./figs/dvf_plant_coupling.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 8: </span>Transfer function from the Actuator force \(F_{i}\) to the Relative Motion Sensor \(D_{m,j}\) with \(i \neq j\) (<a href="./figs/dvf_plant_coupling.png">png</a>, <a href="./figs/dvf_plant_coupling.pdf">pdf</a>)</p>
|
||||||
@@ -688,8 +480,8 @@ The transfer function from actuator forces to relative motion sensors is shown i
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-org8ebebbc" class="outline-3">
|
<div id="outline-container-org0fabf01" class="outline-3">
|
||||||
<h3 id="org8ebebbc"><span class="section-number-3">3.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
|
<h3 id="org0fabf01"><span class="section-number-3">3.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
|
||||||
<div class="outline-text-3" id="text-3-2">
|
<div class="outline-text-3" id="text-3-2">
|
||||||
<p>
|
<p>
|
||||||
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
|
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
|
||||||
@@ -714,10 +506,10 @@ Ga.OutputName = {<span class="org-string">'Dm1'</span>, <span class="org-string"
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The new dynamics from force actuator to relative motion sensor is shown in Figure <a href="#org5f559a9">9</a>.
|
The new dynamics from force actuator to relative motion sensor is shown in Figure <a href="#orgba524e3">9</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="org5f559a9" class="figure">
|
<div id="orgba524e3" class="figure">
|
||||||
<p><img src="figs/dvf_plant_flexible_joint_decentralized.png" alt="dvf_plant_flexible_joint_decentralized.png" />
|
<p><img src="figs/dvf_plant_flexible_joint_decentralized.png" alt="dvf_plant_flexible_joint_decentralized.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 9: </span>Transfer function from the Actuator force \(F_{i}\) to the relative displacement sensor \(D_{m,i}\) (<a href="./figs/dvf_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/dvf_plant_flexible_joint_decentralized.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 9: </span>Transfer function from the Actuator force \(F_{i}\) to the relative displacement sensor \(D_{m,i}\) (<a href="./figs/dvf_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/dvf_plant_flexible_joint_decentralized.pdf">pdf</a>)</p>
|
||||||
@@ -725,8 +517,8 @@ The new dynamics from force actuator to relative motion sensor is shown in Figur
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org9dac8fd" class="outline-3">
|
<div id="outline-container-org6c74c9a" class="outline-3">
|
||||||
<h3 id="org9dac8fd"><span class="section-number-3">3.3</span> Obtained Damping</h3>
|
<h3 id="org6c74c9a"><span class="section-number-3">3.3</span> Obtained Damping</h3>
|
||||||
<div class="outline-text-3" id="text-3-3">
|
<div class="outline-text-3" id="text-3-3">
|
||||||
<p>
|
<p>
|
||||||
The control is a performed in a decentralized manner.
|
The control is a performed in a decentralized manner.
|
||||||
@@ -740,10 +532,10 @@ The \(6 \times 6\) control is a diagonal matrix with pure derivative action on t
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The root locus is shown in figure <a href="#org5e168d0">10</a>.
|
The root locus is shown in figure <a href="#org0436b4d">10</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="org5e168d0" class="figure">
|
<div id="org0436b4d" class="figure">
|
||||||
<p><img src="figs/root_locus_dvf_rot_stiffness.png" alt="root_locus_dvf_rot_stiffness.png" />
|
<p><img src="figs/root_locus_dvf_rot_stiffness.png" alt="root_locus_dvf_rot_stiffness.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 10: </span>Root Locus plot with Direct Velocity Feedback when considering the Stiffness of flexible joints (<a href="./figs/root_locus_dvf_rot_stiffness.png">png</a>, <a href="./figs/root_locus_dvf_rot_stiffness.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 10: </span>Root Locus plot with Direct Velocity Feedback when considering the Stiffness of flexible joints (<a href="./figs/root_locus_dvf_rot_stiffness.png">png</a>, <a href="./figs/root_locus_dvf_rot_stiffness.pdf">pdf</a>)</p>
|
||||||
@@ -751,10 +543,10 @@ The root locus is shown in figure <a href="#org5e168d0">10</a>.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8c078af" class="outline-3">
|
<div id="outline-container-org81b2156" class="outline-3">
|
||||||
<h3 id="org8c078af"><span class="section-number-3">3.4</span> Conclusion</h3>
|
<h3 id="org81b2156"><span class="section-number-3">3.4</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-3-4">
|
<div class="outline-text-3" id="text-3-4">
|
||||||
<div class="important">
|
<div class="important" id="orgb486ca9">
|
||||||
<p>
|
<p>
|
||||||
Joint stiffness does increase the resonance frequencies of the system but does not change the attainable damping when using relative motion sensors.
|
Joint stiffness does increase the resonance frequencies of the system but does not change the attainable damping when using relative motion sensors.
|
||||||
</p>
|
</p>
|
||||||
@@ -764,12 +556,12 @@ Joint stiffness does increase the resonance frequencies of the system but does n
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc84bb75" class="outline-2">
|
<div id="outline-container-orgc7e2089" class="outline-2">
|
||||||
<h2 id="orgc84bb75"><span class="section-number-2">4</span> Compliance and Transmissibility Comparison</h2>
|
<h2 id="orgc7e2089"><span class="section-number-2">4</span> Compliance and Transmissibility Comparison</h2>
|
||||||
<div class="outline-text-2" id="text-4">
|
<div class="outline-text-2" id="text-4">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgebeb03b" class="outline-3">
|
<div id="outline-container-org6ec3b9e" class="outline-3">
|
||||||
<h3 id="orgebeb03b"><span class="section-number-3">4.1</span> Initialization</h3>
|
<h3 id="org6ec3b9e"><span class="section-number-3">4.1</span> Initialization</h3>
|
||||||
<div class="outline-text-3" id="text-4-1">
|
<div class="outline-text-3" id="text-4-1">
|
||||||
<p>
|
<p>
|
||||||
We first initialize the Stewart platform without joint stiffness.
|
We first initialize the Stewart platform without joint stiffness.
|
||||||
@@ -801,8 +593,8 @@ controller = initializeController(<span class="org-string">'type'</span>, <span
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgdde930c" class="outline-3">
|
<div id="outline-container-orge87554a" class="outline-3">
|
||||||
<h3 id="orgdde930c"><span class="section-number-3">4.2</span> Identification</h3>
|
<h3 id="orge87554a"><span class="section-number-3">4.2</span> Identification</h3>
|
||||||
<div class="outline-text-3" id="text-4-2">
|
<div class="outline-text-3" id="text-4-2">
|
||||||
<p>
|
<p>
|
||||||
Let’s first identify the transmissibility and compliance in the open-loop case.
|
Let’s first identify the transmissibility and compliance in the open-loop case.
|
||||||
@@ -840,25 +632,25 @@ K_dvf = 1e4<span class="org-type">*</span>s<span class="org-type">/</span>(1<spa
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgcfd0381" class="outline-3">
|
<div id="outline-container-org1d70ccd" class="outline-3">
|
||||||
<h3 id="orgcfd0381"><span class="section-number-3">4.3</span> Results</h3>
|
<h3 id="org1d70ccd"><span class="section-number-3">4.3</span> Results</h3>
|
||||||
<div class="outline-text-3" id="text-4-3">
|
<div class="outline-text-3" id="text-4-3">
|
||||||
|
|
||||||
<div id="orgc1f4c92" class="figure">
|
<div id="org908e692" class="figure">
|
||||||
<p><img src="figs/transmissibility_iff_dvf.png" alt="transmissibility_iff_dvf.png" />
|
<p><img src="figs/transmissibility_iff_dvf.png" alt="transmissibility_iff_dvf.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 11: </span>Obtained transmissibility for Open-Loop Control (Blue), Integral Force Feedback (Red) and Direct Velocity Feedback (Yellow) (<a href="./figs/transmissibility_iff_dvf.png">png</a>, <a href="./figs/transmissibility_iff_dvf.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 11: </span>Obtained transmissibility for Open-Loop Control (Blue), Integral Force Feedback (Red) and Direct Velocity Feedback (Yellow) (<a href="./figs/transmissibility_iff_dvf.png">png</a>, <a href="./figs/transmissibility_iff_dvf.pdf">pdf</a>)</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org2d1b516" class="figure">
|
<div id="orgc10c609" class="figure">
|
||||||
<p><img src="figs/compliance_iff_dvf.png" alt="compliance_iff_dvf.png" />
|
<p><img src="figs/compliance_iff_dvf.png" alt="compliance_iff_dvf.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 12: </span>Obtained compliance for Open-Loop Control (Blue), Integral Force Feedback (Red) and Direct Velocity Feedback (Yellow) (<a href="./figs/compliance_iff_dvf.png">png</a>, <a href="./figs/compliance_iff_dvf.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 12: </span>Obtained compliance for Open-Loop Control (Blue), Integral Force Feedback (Red) and Direct Velocity Feedback (Yellow) (<a href="./figs/compliance_iff_dvf.png">png</a>, <a href="./figs/compliance_iff_dvf.pdf">pdf</a>)</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgf9b6a2b" class="figure">
|
<div id="orgd54f179" class="figure">
|
||||||
<p><img src="figs/frobenius_norm_T_C_iff_dvf.png" alt="frobenius_norm_T_C_iff_dvf.png" />
|
<p><img src="figs/frobenius_norm_T_C_iff_dvf.png" alt="frobenius_norm_T_C_iff_dvf.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 13: </span>Frobenius norm of the Transmissibility and Compliance Matrices (<a href="./figs/frobenius_norm_T_C_iff_dvf.png">png</a>, <a href="./figs/frobenius_norm_T_C_iff_dvf.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 13: </span>Frobenius norm of the Transmissibility and Compliance Matrices (<a href="./figs/frobenius_norm_T_C_iff_dvf.png">png</a>, <a href="./figs/frobenius_norm_T_C_iff_dvf.pdf">pdf</a>)</p>
|
||||||
@@ -869,7 +661,7 @@ K_dvf = 1e4<span class="org-type">*</span>s<span class="org-type">/</span>(1<spa
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
<p class="date">Created: 2020-03-13 ven. 10:34</p>
|
<p class="date">Created: 2021-01-08 ven. 15:53</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,239 +1,32 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"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>
|
||||||
<!-- 2020-03-16 lun. 11:21 -->
|
<!-- 2021-01-08 ven. 15:52 -->
|
||||||
<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" />
|
|
||||||
<title>Stewart Platform - Vibration Isolation</title>
|
<title>Stewart Platform - Vibration Isolation</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<style type="text/css">
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<!--/*--><![CDATA[/*><!--*/
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
.title { text-align: center;
|
|
||||||
margin-bottom: .2em; }
|
|
||||||
.subtitle { text-align: center;
|
|
||||||
font-size: medium;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-top:0; }
|
|
||||||
.todo { font-family: monospace; color: red; }
|
|
||||||
.done { font-family: monospace; color: green; }
|
|
||||||
.priority { font-family: monospace; color: orange; }
|
|
||||||
.tag { background-color: #eee; font-family: monospace;
|
|
||||||
padding: 2px; font-size: 80%; font-weight: normal; }
|
|
||||||
.timestamp { color: #bebebe; }
|
|
||||||
.timestamp-kwd { color: #5f9ea0; }
|
|
||||||
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
|
|
||||||
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
|
|
||||||
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
|
|
||||||
.underline { text-decoration: underline; }
|
|
||||||
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
|
||||||
p.verse { margin-left: 3%; }
|
|
||||||
pre {
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
box-shadow: 3px 3px 3px #eee;
|
|
||||||
padding: 8pt;
|
|
||||||
font-family: monospace;
|
|
||||||
overflow: auto;
|
|
||||||
margin: 1.2em;
|
|
||||||
}
|
|
||||||
pre.src {
|
|
||||||
position: relative;
|
|
||||||
overflow: visible;
|
|
||||||
padding-top: 1.2em;
|
|
||||||
}
|
|
||||||
pre.src:before {
|
|
||||||
display: none;
|
|
||||||
position: absolute;
|
|
||||||
background-color: white;
|
|
||||||
top: -10px;
|
|
||||||
right: 10px;
|
|
||||||
padding: 3px;
|
|
||||||
border: 1px solid black;
|
|
||||||
}
|
|
||||||
pre.src:hover:before { display: inline;}
|
|
||||||
/* Languages per Org manual */
|
|
||||||
pre.src-asymptote:before { content: 'Asymptote'; }
|
|
||||||
pre.src-awk:before { content: 'Awk'; }
|
|
||||||
pre.src-C:before { content: 'C'; }
|
|
||||||
/* pre.src-C++ doesn't work in CSS */
|
|
||||||
pre.src-clojure:before { content: 'Clojure'; }
|
|
||||||
pre.src-css:before { content: 'CSS'; }
|
|
||||||
pre.src-D:before { content: 'D'; }
|
|
||||||
pre.src-ditaa:before { content: 'ditaa'; }
|
|
||||||
pre.src-dot:before { content: 'Graphviz'; }
|
|
||||||
pre.src-calc:before { content: 'Emacs Calc'; }
|
|
||||||
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
|
||||||
pre.src-fortran:before { content: 'Fortran'; }
|
|
||||||
pre.src-gnuplot:before { content: 'gnuplot'; }
|
|
||||||
pre.src-haskell:before { content: 'Haskell'; }
|
|
||||||
pre.src-hledger:before { content: 'hledger'; }
|
|
||||||
pre.src-java:before { content: 'Java'; }
|
|
||||||
pre.src-js:before { content: 'Javascript'; }
|
|
||||||
pre.src-latex:before { content: 'LaTeX'; }
|
|
||||||
pre.src-ledger:before { content: 'Ledger'; }
|
|
||||||
pre.src-lisp:before { content: 'Lisp'; }
|
|
||||||
pre.src-lilypond:before { content: 'Lilypond'; }
|
|
||||||
pre.src-lua:before { content: 'Lua'; }
|
|
||||||
pre.src-matlab:before { content: 'MATLAB'; }
|
|
||||||
pre.src-mscgen:before { content: 'Mscgen'; }
|
|
||||||
pre.src-ocaml:before { content: 'Objective Caml'; }
|
|
||||||
pre.src-octave:before { content: 'Octave'; }
|
|
||||||
pre.src-org:before { content: 'Org mode'; }
|
|
||||||
pre.src-oz:before { content: 'OZ'; }
|
|
||||||
pre.src-plantuml:before { content: 'Plantuml'; }
|
|
||||||
pre.src-processing:before { content: 'Processing.js'; }
|
|
||||||
pre.src-python:before { content: 'Python'; }
|
|
||||||
pre.src-R:before { content: 'R'; }
|
|
||||||
pre.src-ruby:before { content: 'Ruby'; }
|
|
||||||
pre.src-sass:before { content: 'Sass'; }
|
|
||||||
pre.src-scheme:before { content: 'Scheme'; }
|
|
||||||
pre.src-screen:before { content: 'Gnu Screen'; }
|
|
||||||
pre.src-sed:before { content: 'Sed'; }
|
|
||||||
pre.src-sh:before { content: 'shell'; }
|
|
||||||
pre.src-sql:before { content: 'SQL'; }
|
|
||||||
pre.src-sqlite:before { content: 'SQLite'; }
|
|
||||||
/* additional languages in org.el's org-babel-load-languages alist */
|
|
||||||
pre.src-forth:before { content: 'Forth'; }
|
|
||||||
pre.src-io:before { content: 'IO'; }
|
|
||||||
pre.src-J:before { content: 'J'; }
|
|
||||||
pre.src-makefile:before { content: 'Makefile'; }
|
|
||||||
pre.src-maxima:before { content: 'Maxima'; }
|
|
||||||
pre.src-perl:before { content: 'Perl'; }
|
|
||||||
pre.src-picolisp:before { content: 'Pico Lisp'; }
|
|
||||||
pre.src-scala:before { content: 'Scala'; }
|
|
||||||
pre.src-shell:before { content: 'Shell Script'; }
|
|
||||||
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
|
|
||||||
/* additional language identifiers per "defun org-babel-execute"
|
|
||||||
in ob-*.el */
|
|
||||||
pre.src-cpp:before { content: 'C++'; }
|
|
||||||
pre.src-abc:before { content: 'ABC'; }
|
|
||||||
pre.src-coq:before { content: 'Coq'; }
|
|
||||||
pre.src-groovy:before { content: 'Groovy'; }
|
|
||||||
/* additional language identifiers from org-babel-shell-names in
|
|
||||||
ob-shell.el: ob-shell is the only babel language using a lambda to put
|
|
||||||
the execution function name together. */
|
|
||||||
pre.src-bash:before { content: 'bash'; }
|
|
||||||
pre.src-csh:before { content: 'csh'; }
|
|
||||||
pre.src-ash:before { content: 'ash'; }
|
|
||||||
pre.src-dash:before { content: 'dash'; }
|
|
||||||
pre.src-ksh:before { content: 'ksh'; }
|
|
||||||
pre.src-mksh:before { content: 'mksh'; }
|
|
||||||
pre.src-posh:before { content: 'posh'; }
|
|
||||||
/* Additional Emacs modes also supported by the LaTeX listings package */
|
|
||||||
pre.src-ada:before { content: 'Ada'; }
|
|
||||||
pre.src-asm:before { content: 'Assembler'; }
|
|
||||||
pre.src-caml:before { content: 'Caml'; }
|
|
||||||
pre.src-delphi:before { content: 'Delphi'; }
|
|
||||||
pre.src-html:before { content: 'HTML'; }
|
|
||||||
pre.src-idl:before { content: 'IDL'; }
|
|
||||||
pre.src-mercury:before { content: 'Mercury'; }
|
|
||||||
pre.src-metapost:before { content: 'MetaPost'; }
|
|
||||||
pre.src-modula-2:before { content: 'Modula-2'; }
|
|
||||||
pre.src-pascal:before { content: 'Pascal'; }
|
|
||||||
pre.src-ps:before { content: 'PostScript'; }
|
|
||||||
pre.src-prolog:before { content: 'Prolog'; }
|
|
||||||
pre.src-simula:before { content: 'Simula'; }
|
|
||||||
pre.src-tcl:before { content: 'tcl'; }
|
|
||||||
pre.src-tex:before { content: 'TeX'; }
|
|
||||||
pre.src-plain-tex:before { content: 'Plain TeX'; }
|
|
||||||
pre.src-verilog:before { content: 'Verilog'; }
|
|
||||||
pre.src-vhdl:before { content: 'VHDL'; }
|
|
||||||
pre.src-xml:before { content: 'XML'; }
|
|
||||||
pre.src-nxml:before { content: 'XML'; }
|
|
||||||
/* add a generic configuration mode; LaTeX export needs an additional
|
|
||||||
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
|
|
||||||
pre.src-conf:before { content: 'Configuration File'; }
|
|
||||||
|
|
||||||
table { border-collapse:collapse; }
|
|
||||||
caption.t-above { caption-side: top; }
|
|
||||||
caption.t-bottom { caption-side: bottom; }
|
|
||||||
td, th { vertical-align:top; }
|
|
||||||
th.org-right { text-align: center; }
|
|
||||||
th.org-left { text-align: center; }
|
|
||||||
th.org-center { text-align: center; }
|
|
||||||
td.org-right { text-align: right; }
|
|
||||||
td.org-left { text-align: left; }
|
|
||||||
td.org-center { text-align: center; }
|
|
||||||
dt { font-weight: bold; }
|
|
||||||
.footpara { display: inline; }
|
|
||||||
.footdef { margin-bottom: 1em; }
|
|
||||||
.figure { padding: 1em; }
|
|
||||||
.figure p { text-align: center; }
|
|
||||||
.equation-container {
|
|
||||||
display: table;
|
|
||||||
text-align: center;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.equation {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.equation-label {
|
|
||||||
display: table-cell;
|
|
||||||
text-align: right;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.inlinetask {
|
|
||||||
padding: 10px;
|
|
||||||
border: 2px solid gray;
|
|
||||||
margin: 10px;
|
|
||||||
background: #ffffcc;
|
|
||||||
}
|
|
||||||
#org-div-home-and-up
|
|
||||||
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
|
||||||
textarea { overflow-x: auto; }
|
|
||||||
.linenr { font-size: smaller }
|
|
||||||
.code-highlighted { background-color: #ffff00; }
|
|
||||||
.org-info-js_info-navigation { border-style: none; }
|
|
||||||
#org-info-js_console-label
|
|
||||||
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
|
||||||
.org-info-js_search-highlight
|
|
||||||
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
|
||||||
.org-svg { width: 90%; }
|
|
||||||
/*]]>*/-->
|
|
||||||
</style>
|
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
|
||||||
<script src="./js/jquery.min.js"></script>
|
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
<script src="./js/readtheorg.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
|
|
||||||
<!--/*--><![CDATA[/*><!--*/
|
|
||||||
function CodeHighlightOn(elem, id)
|
|
||||||
{
|
|
||||||
var target = document.getElementById(id);
|
|
||||||
if(null != target) {
|
|
||||||
elem.cacheClassElem = elem.className;
|
|
||||||
elem.cacheClassTarget = target.className;
|
|
||||||
target.className = "code-highlighted";
|
|
||||||
elem.className = "code-highlighted";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function CodeHighlightOff(elem, id)
|
|
||||||
{
|
|
||||||
var target = document.getElementById(id);
|
|
||||||
if(elem.cacheClassElem)
|
|
||||||
elem.className = elem.cacheClassElem;
|
|
||||||
if(elem.cacheClassTarget)
|
|
||||||
target.className = elem.cacheClassTarget;
|
|
||||||
}
|
|
||||||
/*]]>*///-->
|
|
||||||
// @license-end
|
|
||||||
</script>
|
|
||||||
<script>
|
<script>
|
||||||
MathJax = {
|
MathJax = {
|
||||||
tex: { macros: {
|
svg: {
|
||||||
bm: ["\\boldsymbol{#1}",1],
|
scale: 1,
|
||||||
}
|
fontCache: "global"
|
||||||
|
},
|
||||||
|
tex: {
|
||||||
|
tags: "ams",
|
||||||
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript"
|
<script id="MathJax-script" async
|
||||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
@@ -246,79 +39,79 @@
|
|||||||
<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="#orgf86b757">1. HAC-LAC (Cascade) Control - Integral Control</a>
|
<li><a href="#org4b4dce5">1. HAC-LAC (Cascade) Control - Integral Control</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org3a9f4d4">1.1. Introduction</a></li>
|
<li><a href="#org9a6463e">1.1. Introduction</a></li>
|
||||||
<li><a href="#org58e2ab0">1.2. Initialization</a></li>
|
<li><a href="#org2308492">1.2. Initialization</a></li>
|
||||||
<li><a href="#orgab56a44">1.3. Identification</a>
|
<li><a href="#orgb5e88a6">1.3. Identification</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org2309d71">1.3.1. HAC - Without LAC</a></li>
|
<li><a href="#org7e602f6">1.3.1. HAC - Without LAC</a></li>
|
||||||
<li><a href="#orgd3d2942">1.3.2. HAC - IFF</a></li>
|
<li><a href="#org49dd47c">1.3.2. HAC - IFF</a></li>
|
||||||
<li><a href="#org492aabc">1.3.3. HAC - DVF</a></li>
|
<li><a href="#orgc4bf514">1.3.3. HAC - DVF</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org4d7a6d8">1.4. Control Architecture</a></li>
|
<li><a href="#org68ac3ce">1.4. Control Architecture</a></li>
|
||||||
<li><a href="#org3e1b1b7">1.5. 6x6 Plant Comparison</a></li>
|
<li><a href="#org668a952">1.5. 6x6 Plant Comparison</a></li>
|
||||||
<li><a href="#org14108ef">1.6. HAC - DVF</a>
|
<li><a href="#orgc2cdba3">1.6. HAC - DVF</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org71d45ac">1.6.1. Plant</a></li>
|
<li><a href="#orgff953e4">1.6.1. Plant</a></li>
|
||||||
<li><a href="#org8236bd6">1.6.2. Controller Design</a></li>
|
<li><a href="#orgbd635c1">1.6.2. Controller Design</a></li>
|
||||||
<li><a href="#org7810516">1.6.3. Obtained Performance</a></li>
|
<li><a href="#org83c15a9">1.6.3. Obtained Performance</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org55f17b6">1.7. HAC - IFF</a>
|
<li><a href="#org5dfa0fd">1.7. HAC - IFF</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org87cf3a4">1.7.1. Plant</a></li>
|
<li><a href="#orgeedcb6b">1.7.1. Plant</a></li>
|
||||||
<li><a href="#org6d26667">1.7.2. Controller Design</a></li>
|
<li><a href="#orgd723b75">1.7.2. Controller Design</a></li>
|
||||||
<li><a href="#orgef0abff">1.7.3. Obtained Performance</a></li>
|
<li><a href="#org54813bf">1.7.3. Obtained Performance</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org81c1767">1.8. Comparison</a></li>
|
<li><a href="#org8e15485">1.8. Comparison</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org6f94eba">2. MIMO Analysis</a>
|
<li><a href="#orgdc1bcf2">2. MIMO Analysis</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org925bb20">2.1. Initialization</a></li>
|
<li><a href="#org7fd66be">2.1. Initialization</a></li>
|
||||||
<li><a href="#org57c87f0">2.2. Identification</a>
|
<li><a href="#org06a70cd">2.2. Identification</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org661b495">2.2.1. HAC - Without LAC</a></li>
|
<li><a href="#org88e17f4">2.2.1. HAC - Without LAC</a></li>
|
||||||
<li><a href="#orgdd8b824">2.2.2. HAC - DVF</a></li>
|
<li><a href="#orgb75c6b7">2.2.2. HAC - DVF</a></li>
|
||||||
<li><a href="#orgf606814">2.2.3. Cartesian Frame</a></li>
|
<li><a href="#orgba8c7bf">2.2.3. Cartesian Frame</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org8349fa6">2.3. Singular Value Decomposition</a></li>
|
<li><a href="#orgf9d0420">2.3. Singular Value Decomposition</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgc8479b7">3. Diagonal Control based on the damped plant</a>
|
<li><a href="#orga095fa8">3. Diagonal Control based on the damped plant</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org99665a2">3.1. Initialization</a></li>
|
<li><a href="#orge901603">3.1. Initialization</a></li>
|
||||||
<li><a href="#org42a5e98">3.2. Identification</a></li>
|
<li><a href="#orgce73f0c">3.2. Identification</a></li>
|
||||||
<li><a href="#orgae85e0d">3.3. Steady State Decoupling</a>
|
<li><a href="#orgb5a063b">3.3. Steady State Decoupling</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org1e2bbe7">3.3.1. Pre-Compensator Design</a></li>
|
<li><a href="#orgd0ce552">3.3.1. Pre-Compensator Design</a></li>
|
||||||
<li><a href="#org077e6f6">3.3.2. Diagonal Control Design</a></li>
|
<li><a href="#org41b76c6">3.3.2. Diagonal Control Design</a></li>
|
||||||
<li><a href="#orgf7c304f">3.3.3. Results</a></li>
|
<li><a href="#org3228759">3.3.3. Results</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgad35bf9">3.4. Decoupling at Crossover</a></li>
|
<li><a href="#orgb53dd48">3.4. Decoupling at Crossover</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org846cef9">4. Time Domain Simulation</a>
|
<li><a href="#org639412c">4. Time Domain Simulation</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org2a9e89f">4.1. Initialization</a></li>
|
<li><a href="#orgc332811">4.1. Initialization</a></li>
|
||||||
<li><a href="#org8dbc004">4.2. HAC IFF</a></li>
|
<li><a href="#orgc72e6b5">4.2. HAC IFF</a></li>
|
||||||
<li><a href="#org7dc4716">4.3. HAC-DVF</a></li>
|
<li><a href="#org757f9e9">4.3. HAC-DVF</a></li>
|
||||||
<li><a href="#org65730fb">4.4. Results</a></li>
|
<li><a href="#org620278d">4.4. Results</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org69ebad1">5. Functions</a>
|
<li><a href="#org6a9c87c">5. Functions</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgc7bcc65">5.1. <code>initializeController</code>: Initialize the Controller</a>
|
<li><a href="#orgd1492e7">5.1. <code>initializeController</code>: Initialize the Controller</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgf672f64">Function description</a></li>
|
<li><a href="#orgae5eed0">Function description</a></li>
|
||||||
<li><a href="#org941466e">Optional Parameters</a></li>
|
<li><a href="#orgda07b57">Optional Parameters</a></li>
|
||||||
<li><a href="#org65d3a7d">Structure initialization</a></li>
|
<li><a href="#orgdb009ab">Structure initialization</a></li>
|
||||||
<li><a href="#org32be93f">Add Type</a></li>
|
<li><a href="#org056c578">Add Type</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -327,19 +120,19 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf86b757" class="outline-2">
|
<div id="outline-container-org4b4dce5" class="outline-2">
|
||||||
<h2 id="orgf86b757"><span class="section-number-2">1</span> HAC-LAC (Cascade) Control - Integral Control</h2>
|
<h2 id="org4b4dce5"><span class="section-number-2">1</span> HAC-LAC (Cascade) Control - Integral Control</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org3a9f4d4" class="outline-3">
|
<div id="outline-container-org9a6463e" class="outline-3">
|
||||||
<h3 id="org3a9f4d4"><span class="section-number-3">1.1</span> Introduction</h3>
|
<h3 id="org9a6463e"><span class="section-number-3">1.1</span> Introduction</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<p>
|
<p>
|
||||||
In this section, we wish to study the use of the High Authority Control - Low Authority Control (HAC-LAC) architecture on the Stewart platform.
|
In this section, we wish to study the use of the High Authority Control - Low Authority Control (HAC-LAC) architecture on the Stewart platform.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The control architectures are shown in Figures <a href="#org63523c7">1</a> and <a href="#org7ad8618">2</a>.
|
The control architectures are shown in Figures <a href="#org000f34d">1</a> and <a href="#orgeaed076">2</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@@ -347,7 +140,7 @@ First, the LAC loop is closed (the LAC control is described <a href="active-damp
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="org63523c7" class="figure">
|
<div id="org000f34d" class="figure">
|
||||||
<p><img src="figs/control_arch_hac_iff.png" alt="control_arch_hac_iff.png" />
|
<p><img src="figs/control_arch_hac_iff.png" alt="control_arch_hac_iff.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>HAC-LAC architecture with IFF</p>
|
<p><span class="figure-number">Figure 1: </span>HAC-LAC architecture with IFF</p>
|
||||||
@@ -355,7 +148,7 @@ First, the LAC loop is closed (the LAC control is described <a href="active-damp
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div id="org7ad8618" class="figure">
|
<div id="orgeaed076" class="figure">
|
||||||
<p><img src="figs/control_arch_hac_dvf.png" alt="control_arch_hac_dvf.png" />
|
<p><img src="figs/control_arch_hac_dvf.png" alt="control_arch_hac_dvf.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 2: </span>HAC-LAC architecture with DVF</p>
|
<p><span class="figure-number">Figure 2: </span>HAC-LAC architecture with DVF</p>
|
||||||
@@ -363,8 +156,8 @@ First, the LAC loop is closed (the LAC control is described <a href="active-damp
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org58e2ab0" class="outline-3">
|
<div id="outline-container-org2308492" class="outline-3">
|
||||||
<h3 id="org58e2ab0"><span class="section-number-3">1.2</span> Initialization</h3>
|
<h3 id="org2308492"><span class="section-number-3">1.2</span> Initialization</h3>
|
||||||
<div class="outline-text-3" id="text-1-2">
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<p>
|
<p>
|
||||||
We first initialize the Stewart platform.
|
We first initialize the Stewart platform.
|
||||||
@@ -395,8 +188,8 @@ payload = initializePayload(<span class="org-string">'type'</span>, <span class=
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgab56a44" class="outline-3">
|
<div id="outline-container-orgb5e88a6" class="outline-3">
|
||||||
<h3 id="orgab56a44"><span class="section-number-3">1.3</span> Identification</h3>
|
<h3 id="orgb5e88a6"><span class="section-number-3">1.3</span> Identification</h3>
|
||||||
<div class="outline-text-3" id="text-1-3">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
<p>
|
<p>
|
||||||
We identify the transfer function from the actuator forces \(\bm{\tau}\) to the absolute displacement of the mobile platform \(\bm{\mathcal{X}}\) in three different cases:
|
We identify the transfer function from the actuator forces \(\bm{\tau}\) to the absolute displacement of the mobile platform \(\bm{\mathcal{X}}\) in three different cases:
|
||||||
@@ -408,8 +201,8 @@ We identify the transfer function from the actuator forces \(\bm{\tau}\) to the
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org2309d71" class="outline-4">
|
<div id="outline-container-org7e602f6" class="outline-4">
|
||||||
<h4 id="org2309d71"><span class="section-number-4">1.3.1</span> HAC - Without LAC</h4>
|
<h4 id="org7e602f6"><span class="section-number-4">1.3.1</span> HAC - Without LAC</h4>
|
||||||
<div class="outline-text-4" id="text-1-3-1">
|
<div class="outline-text-4" id="text-1-3-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||||
@@ -434,8 +227,8 @@ G_ol.OutputName = {<span class="org-string">'Dx'</span>, <span class="org-string
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd3d2942" class="outline-4">
|
<div id="outline-container-org49dd47c" class="outline-4">
|
||||||
<h4 id="orgd3d2942"><span class="section-number-4">1.3.2</span> HAC - IFF</h4>
|
<h4 id="org49dd47c"><span class="section-number-4">1.3.2</span> HAC - IFF</h4>
|
||||||
<div class="outline-text-4" id="text-1-3-2">
|
<div class="outline-text-4" id="text-1-3-2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'iff'</span>);
|
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'iff'</span>);
|
||||||
@@ -461,8 +254,8 @@ G_iff.OutputName = {<span class="org-string">'Dx'</span>, <span class="org-strin
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org492aabc" class="outline-4">
|
<div id="outline-container-orgc4bf514" class="outline-4">
|
||||||
<h4 id="org492aabc"><span class="section-number-4">1.3.3</span> HAC - DVF</h4>
|
<h4 id="orgc4bf514"><span class="section-number-4">1.3.3</span> HAC - DVF</h4>
|
||||||
<div class="outline-text-4" id="text-1-3-3">
|
<div class="outline-text-4" id="text-1-3-3">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'dvf'</span>);
|
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'dvf'</span>);
|
||||||
@@ -489,8 +282,8 @@ G_dvf.OutputName = {<span class="org-string">'Dx'</span>, <span class="org-strin
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4d7a6d8" class="outline-3">
|
<div id="outline-container-org68ac3ce" class="outline-3">
|
||||||
<h3 id="org4d7a6d8"><span class="section-number-3">1.4</span> Control Architecture</h3>
|
<h3 id="org68ac3ce"><span class="section-number-3">1.4</span> Control Architecture</h3>
|
||||||
<div class="outline-text-3" id="text-1-4">
|
<div class="outline-text-3" id="text-1-4">
|
||||||
<p>
|
<p>
|
||||||
We use the Jacobian to express the actuator forces in the cartesian frame, and thus we obtain the transfer functions from \(\bm{\mathcal{F}}\) to \(\bm{\mathcal{X}}\).
|
We use the Jacobian to express the actuator forces in the cartesian frame, and thus we obtain the transfer functions from \(\bm{\mathcal{F}}\) to \(\bm{\mathcal{X}}\).
|
||||||
@@ -514,11 +307,11 @@ We then design a controller based on the transfer functions from \(\bm{\mathcal{
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3e1b1b7" class="outline-3">
|
<div id="outline-container-org668a952" class="outline-3">
|
||||||
<h3 id="org3e1b1b7"><span class="section-number-3">1.5</span> 6x6 Plant Comparison</h3>
|
<h3 id="org668a952"><span class="section-number-3">1.5</span> 6x6 Plant Comparison</h3>
|
||||||
<div class="outline-text-3" id="text-1-5">
|
<div class="outline-text-3" id="text-1-5">
|
||||||
|
|
||||||
<div id="orgbee4071" class="figure">
|
<div id="orgcf3a190" class="figure">
|
||||||
<p><img src="figs/hac_lac_coupling_jacobian.png" alt="hac_lac_coupling_jacobian.png" />
|
<p><img src="figs/hac_lac_coupling_jacobian.png" alt="hac_lac_coupling_jacobian.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 3: </span>Norm of the transfer functions from \(\bm{\mathcal{F}}\) to \(\bm{\mathcal{X}}\) (<a href="./figs/hac_lac_coupling_jacobian.png">png</a>, <a href="./figs/hac_lac_coupling_jacobian.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 3: </span>Norm of the transfer functions from \(\bm{\mathcal{F}}\) to \(\bm{\mathcal{X}}\) (<a href="./figs/hac_lac_coupling_jacobian.png">png</a>, <a href="./figs/hac_lac_coupling_jacobian.pdf">pdf</a>)</p>
|
||||||
@@ -526,15 +319,15 @@ We then design a controller based on the transfer functions from \(\bm{\mathcal{
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org14108ef" class="outline-3">
|
<div id="outline-container-orgc2cdba3" class="outline-3">
|
||||||
<h3 id="org14108ef"><span class="section-number-3">1.6</span> HAC - DVF</h3>
|
<h3 id="orgc2cdba3"><span class="section-number-3">1.6</span> HAC - DVF</h3>
|
||||||
<div class="outline-text-3" id="text-1-6">
|
<div class="outline-text-3" id="text-1-6">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org71d45ac" class="outline-4">
|
<div id="outline-container-orgff953e4" class="outline-4">
|
||||||
<h4 id="org71d45ac"><span class="section-number-4">1.6.1</span> Plant</h4>
|
<h4 id="orgff953e4"><span class="section-number-4">1.6.1</span> Plant</h4>
|
||||||
<div class="outline-text-4" id="text-1-6-1">
|
<div class="outline-text-4" id="text-1-6-1">
|
||||||
|
|
||||||
<div id="org487a558" class="figure">
|
<div id="orgc08547a" class="figure">
|
||||||
<p><img src="figs/hac_lac_plant_dvf.png" alt="hac_lac_plant_dvf.png" />
|
<p><img src="figs/hac_lac_plant_dvf.png" alt="hac_lac_plant_dvf.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 4: </span>Diagonal elements of the plant for HAC control when DVF is previously applied (<a href="./figs/hac_lac_plant_dvf.png">png</a>, <a href="./figs/hac_lac_plant_dvf.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 4: </span>Diagonal elements of the plant for HAC control when DVF is previously applied (<a href="./figs/hac_lac_plant_dvf.png">png</a>, <a href="./figs/hac_lac_plant_dvf.pdf">pdf</a>)</p>
|
||||||
@@ -542,8 +335,8 @@ We then design a controller based on the transfer functions from \(\bm{\mathcal{
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8236bd6" class="outline-4">
|
<div id="outline-container-orgbd635c1" class="outline-4">
|
||||||
<h4 id="org8236bd6"><span class="section-number-4">1.6.2</span> Controller Design</h4>
|
<h4 id="orgbd635c1"><span class="section-number-4">1.6.2</span> Controller Design</h4>
|
||||||
<div class="outline-text-4" id="text-1-6-2">
|
<div class="outline-text-4" id="text-1-6-2">
|
||||||
<p>
|
<p>
|
||||||
We design a diagonal controller with equal bandwidth for the 6 terms.
|
We design a diagonal controller with equal bandwidth for the 6 terms.
|
||||||
@@ -561,7 +354,7 @@ Kd_dvf = diag(1<span class="org-type">./</span>abs(diag(freqresp(1<span class="o
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org5d0e2e3" class="figure">
|
<div id="org8108913" class="figure">
|
||||||
<p><img src="figs/hac_lac_loop_gain_dvf.png" alt="hac_lac_loop_gain_dvf.png" />
|
<p><img src="figs/hac_lac_loop_gain_dvf.png" alt="hac_lac_loop_gain_dvf.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 5: </span>Diagonal elements of the Loop Gain for the HAC control (<a href="./figs/hac_lac_loop_gain_dvf.png">png</a>, <a href="./figs/hac_lac_loop_gain_dvf.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 5: </span>Diagonal elements of the Loop Gain for the HAC control (<a href="./figs/hac_lac_loop_gain_dvf.png">png</a>, <a href="./figs/hac_lac_loop_gain_dvf.pdf">pdf</a>)</p>
|
||||||
@@ -578,8 +371,8 @@ Finally, we pre-multiply the diagonal controller by \(\bm{J}^{-T}\) prior implem
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7810516" class="outline-4">
|
<div id="outline-container-org83c15a9" class="outline-4">
|
||||||
<h4 id="org7810516"><span class="section-number-4">1.6.3</span> Obtained Performance</h4>
|
<h4 id="org83c15a9"><span class="section-number-4">1.6.3</span> Obtained Performance</h4>
|
||||||
<div class="outline-text-4" id="text-1-6-3">
|
<div class="outline-text-4" id="text-1-6-3">
|
||||||
<p>
|
<p>
|
||||||
We identify the transmissibility and compliance of the system.
|
We identify the transmissibility and compliance of the system.
|
||||||
@@ -607,7 +400,7 @@ We identify the transmissibility and compliance of the system.
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="orga06a318" class="figure">
|
<div id="orgf16f5f2" class="figure">
|
||||||
<p><img src="figs/hac_lac_C_T_dvf.png" alt="hac_lac_C_T_dvf.png" />
|
<p><img src="figs/hac_lac_C_T_dvf.png" alt="hac_lac_C_T_dvf.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 6: </span>Obtained Compliance and Transmissibility (<a href="./figs/hac_lac_C_T_dvf.png">png</a>, <a href="./figs/hac_lac_C_T_dvf.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 6: </span>Obtained Compliance and Transmissibility (<a href="./figs/hac_lac_C_T_dvf.png">png</a>, <a href="./figs/hac_lac_C_T_dvf.pdf">pdf</a>)</p>
|
||||||
@@ -616,15 +409,15 @@ We identify the transmissibility and compliance of the system.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org55f17b6" class="outline-3">
|
<div id="outline-container-org5dfa0fd" class="outline-3">
|
||||||
<h3 id="org55f17b6"><span class="section-number-3">1.7</span> HAC - IFF</h3>
|
<h3 id="org5dfa0fd"><span class="section-number-3">1.7</span> HAC - IFF</h3>
|
||||||
<div class="outline-text-3" id="text-1-7">
|
<div class="outline-text-3" id="text-1-7">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org87cf3a4" class="outline-4">
|
<div id="outline-container-orgeedcb6b" class="outline-4">
|
||||||
<h4 id="org87cf3a4"><span class="section-number-4">1.7.1</span> Plant</h4>
|
<h4 id="orgeedcb6b"><span class="section-number-4">1.7.1</span> Plant</h4>
|
||||||
<div class="outline-text-4" id="text-1-7-1">
|
<div class="outline-text-4" id="text-1-7-1">
|
||||||
|
|
||||||
<div id="org0fc8dea" class="figure">
|
<div id="org66710a7" class="figure">
|
||||||
<p><img src="figs/hac_lac_plant_iff.png" alt="hac_lac_plant_iff.png" />
|
<p><img src="figs/hac_lac_plant_iff.png" alt="hac_lac_plant_iff.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 7: </span>Diagonal elements of the plant for HAC control when IFF is previously applied (<a href="./figs/hac_lac_plant_iff.png">png</a>, <a href="./figs/hac_lac_plant_iff.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 7: </span>Diagonal elements of the plant for HAC control when IFF is previously applied (<a href="./figs/hac_lac_plant_iff.png">png</a>, <a href="./figs/hac_lac_plant_iff.pdf">pdf</a>)</p>
|
||||||
@@ -632,8 +425,8 @@ We identify the transmissibility and compliance of the system.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org6d26667" class="outline-4">
|
<div id="outline-container-orgd723b75" class="outline-4">
|
||||||
<h4 id="org6d26667"><span class="section-number-4">1.7.2</span> Controller Design</h4>
|
<h4 id="orgd723b75"><span class="section-number-4">1.7.2</span> Controller Design</h4>
|
||||||
<div class="outline-text-4" id="text-1-7-2">
|
<div class="outline-text-4" id="text-1-7-2">
|
||||||
<p>
|
<p>
|
||||||
We design a diagonal controller with equal bandwidth for the 6 terms.
|
We design a diagonal controller with equal bandwidth for the 6 terms.
|
||||||
@@ -651,7 +444,7 @@ Kd_iff = diag(1<span class="org-type">./</span>abs(diag(freqresp(1<span class="o
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org211b595" class="figure">
|
<div id="org0b7f4f2" class="figure">
|
||||||
<p><img src="figs/hac_lac_loop_gain_iff.png" alt="hac_lac_loop_gain_iff.png" />
|
<p><img src="figs/hac_lac_loop_gain_iff.png" alt="hac_lac_loop_gain_iff.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 8: </span>Diagonal elements of the Loop Gain for the HAC control (<a href="./figs/hac_lac_loop_gain_iff.png">png</a>, <a href="./figs/hac_lac_loop_gain_iff.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 8: </span>Diagonal elements of the Loop Gain for the HAC control (<a href="./figs/hac_lac_loop_gain_iff.png">png</a>, <a href="./figs/hac_lac_loop_gain_iff.pdf">pdf</a>)</p>
|
||||||
@@ -668,8 +461,8 @@ Finally, we pre-multiply the diagonal controller by \(\bm{J}^{-T}\) prior implem
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgef0abff" class="outline-4">
|
<div id="outline-container-org54813bf" class="outline-4">
|
||||||
<h4 id="orgef0abff"><span class="section-number-4">1.7.3</span> Obtained Performance</h4>
|
<h4 id="org54813bf"><span class="section-number-4">1.7.3</span> Obtained Performance</h4>
|
||||||
<div class="outline-text-4" id="text-1-7-3">
|
<div class="outline-text-4" id="text-1-7-3">
|
||||||
<p>
|
<p>
|
||||||
We identify the transmissibility and compliance of the system.
|
We identify the transmissibility and compliance of the system.
|
||||||
@@ -697,7 +490,7 @@ We identify the transmissibility and compliance of the system.
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgc47bfe0" class="figure">
|
<div id="org6c57f46" class="figure">
|
||||||
<p><img src="figs/hac_lac_C_T_iff.png" alt="hac_lac_C_T_iff.png" />
|
<p><img src="figs/hac_lac_C_T_iff.png" alt="hac_lac_C_T_iff.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 9: </span>Obtained Compliance and Transmissibility (<a href="./figs/hac_lac_C_T_iff.png">png</a>, <a href="./figs/hac_lac_C_T_iff.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 9: </span>Obtained Compliance and Transmissibility (<a href="./figs/hac_lac_C_T_iff.png">png</a>, <a href="./figs/hac_lac_C_T_iff.pdf">pdf</a>)</p>
|
||||||
@@ -706,25 +499,25 @@ We identify the transmissibility and compliance of the system.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org81c1767" class="outline-3">
|
<div id="outline-container-org8e15485" class="outline-3">
|
||||||
<h3 id="org81c1767"><span class="section-number-3">1.8</span> Comparison</h3>
|
<h3 id="org8e15485"><span class="section-number-3">1.8</span> Comparison</h3>
|
||||||
<div class="outline-text-3" id="text-1-8">
|
<div class="outline-text-3" id="text-1-8">
|
||||||
|
|
||||||
<div id="orgf042a3f" class="figure">
|
<div id="org34035be" class="figure">
|
||||||
<p><img src="figs/hac_lac_C_full_comparison.png" alt="hac_lac_C_full_comparison.png" />
|
<p><img src="figs/hac_lac_C_full_comparison.png" alt="hac_lac_C_full_comparison.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 10: </span>Comparison of the norm of the Compliance matrices for the HAC-LAC architecture (<a href="./figs/hac_lac_C_full_comparison.png">png</a>, <a href="./figs/hac_lac_C_full_comparison.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 10: </span>Comparison of the norm of the Compliance matrices for the HAC-LAC architecture (<a href="./figs/hac_lac_C_full_comparison.png">png</a>, <a href="./figs/hac_lac_C_full_comparison.pdf">pdf</a>)</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org5a9df7e" class="figure">
|
<div id="org6db2ceb" class="figure">
|
||||||
<p><img src="figs/hac_lac_T_full_comparison.png" alt="hac_lac_T_full_comparison.png" />
|
<p><img src="figs/hac_lac_T_full_comparison.png" alt="hac_lac_T_full_comparison.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 11: </span>Comparison of the norm of the Transmissibility matrices for the HAC-LAC architecture (<a href="./figs/hac_lac_T_full_comparison.png">png</a>, <a href="./figs/hac_lac_T_full_comparison.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 11: </span>Comparison of the norm of the Transmissibility matrices for the HAC-LAC architecture (<a href="./figs/hac_lac_T_full_comparison.png">png</a>, <a href="./figs/hac_lac_T_full_comparison.pdf">pdf</a>)</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgdc12a99" class="figure">
|
<div id="orga195621" class="figure">
|
||||||
<p><img src="figs/hac_lac_C_T_comparison.png" alt="hac_lac_C_T_comparison.png" />
|
<p><img src="figs/hac_lac_C_T_comparison.png" alt="hac_lac_C_T_comparison.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 12: </span>Comparison of the Frobenius norm of the Compliance and Transmissibility for the HAC-LAC architecture with both IFF and DVF (<a href="./figs/hac_lac_C_T_comparison.png">png</a>, <a href="./figs/hac_lac_C_T_comparison.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 12: </span>Comparison of the Frobenius norm of the Compliance and Transmissibility for the HAC-LAC architecture with both IFF and DVF (<a href="./figs/hac_lac_C_T_comparison.png">png</a>, <a href="./figs/hac_lac_C_T_comparison.pdf">pdf</a>)</p>
|
||||||
@@ -733,21 +526,21 @@ We identify the transmissibility and compliance of the system.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org6f94eba" class="outline-2">
|
<div id="outline-container-orgdc1bcf2" class="outline-2">
|
||||||
<h2 id="org6f94eba"><span class="section-number-2">2</span> MIMO Analysis</h2>
|
<h2 id="orgdc1bcf2"><span class="section-number-2">2</span> MIMO Analysis</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
Let’s define the system as shown in figure <a href="#orgac8f77c">13</a>.
|
Let’s define the system as shown in figure <a href="#org6f95566">13</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgac8f77c" class="figure">
|
<div id="org6f95566" class="figure">
|
||||||
<p><img src="figs/general_control_names.png" alt="general_control_names.png" />
|
<p><img src="figs/general_control_names.png" alt="general_control_names.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 13: </span>General Control Architecture</p>
|
<p><span class="figure-number">Figure 13: </span>General Control Architecture</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<table id="orgc2ee4b0" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
<table id="org8568d41" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||||
<caption class="t-above"><span class="table-number">Table 1:</span> Signals definition for the generalized plant</caption>
|
<caption class="t-above"><span class="table-number">Table 1:</span> Signals definition for the generalized plant</caption>
|
||||||
|
|
||||||
<colgroup>
|
<colgroup>
|
||||||
@@ -825,8 +618,8 @@ Let’s define the system as shown in figure <a href="#orgac8f77c">13</a>.
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org925bb20" class="outline-3">
|
<div id="outline-container-org7fd66be" class="outline-3">
|
||||||
<h3 id="org925bb20"><span class="section-number-3">2.1</span> Initialization</h3>
|
<h3 id="org7fd66be"><span class="section-number-3">2.1</span> Initialization</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<p>
|
||||||
We first initialize the Stewart platform.
|
We first initialize the Stewart platform.
|
||||||
@@ -857,12 +650,12 @@ payload = initializePayload(<span class="org-string">'type'</span>, <span class=
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org57c87f0" class="outline-3">
|
<div id="outline-container-org06a70cd" class="outline-3">
|
||||||
<h3 id="org57c87f0"><span class="section-number-3">2.2</span> Identification</h3>
|
<h3 id="org06a70cd"><span class="section-number-3">2.2</span> Identification</h3>
|
||||||
<div class="outline-text-3" id="text-2-2">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org661b495" class="outline-4">
|
<div id="outline-container-org88e17f4" class="outline-4">
|
||||||
<h4 id="org661b495"><span class="section-number-4">2.2.1</span> HAC - Without LAC</h4>
|
<h4 id="org88e17f4"><span class="section-number-4">2.2.1</span> HAC - Without LAC</h4>
|
||||||
<div class="outline-text-4" id="text-2-2-1">
|
<div class="outline-text-4" id="text-2-2-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||||
@@ -887,8 +680,8 @@ G_ol.OutputName = {<span class="org-string">'Dx'</span>, <span class="org-string
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgdd8b824" class="outline-4">
|
<div id="outline-container-orgb75c6b7" class="outline-4">
|
||||||
<h4 id="orgdd8b824"><span class="section-number-4">2.2.2</span> HAC - DVF</h4>
|
<h4 id="orgb75c6b7"><span class="section-number-4">2.2.2</span> HAC - DVF</h4>
|
||||||
<div class="outline-text-4" id="text-2-2-2">
|
<div class="outline-text-4" id="text-2-2-2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'dvf'</span>);
|
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'dvf'</span>);
|
||||||
@@ -914,8 +707,8 @@ G_dvf.OutputName = {<span class="org-string">'Dx'</span>, <span class="org-strin
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf606814" class="outline-4">
|
<div id="outline-container-orgba8c7bf" class="outline-4">
|
||||||
<h4 id="orgf606814"><span class="section-number-4">2.2.3</span> Cartesian Frame</h4>
|
<h4 id="orgba8c7bf"><span class="section-number-4">2.2.3</span> Cartesian Frame</h4>
|
||||||
<div class="outline-text-4" id="text-2-2-3">
|
<div class="outline-text-4" id="text-2-2-3">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">Gc_ol = minreal(G_ol)<span class="org-type">/</span>stewart.kinematics.J<span class="org-type">'</span>;
|
<pre class="src src-matlab">Gc_ol = minreal(G_ol)<span class="org-type">/</span>stewart.kinematics.J<span class="org-type">'</span>;
|
||||||
@@ -929,8 +722,8 @@ Gc_dvf.InputName = {<span class="org-string">'Fx'</span>, <span class="org-strin
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8349fa6" class="outline-3">
|
<div id="outline-container-orgf9d0420" class="outline-3">
|
||||||
<h3 id="org8349fa6"><span class="section-number-3">2.3</span> Singular Value Decomposition</h3>
|
<h3 id="orgf9d0420"><span class="section-number-3">2.3</span> Singular Value Decomposition</h3>
|
||||||
<div class="outline-text-3" id="text-2-3">
|
<div class="outline-text-3" id="text-2-3">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">freqs = logspace(1, 4, 1000);
|
<pre class="src src-matlab">freqs = logspace(1, 4, 1000);
|
||||||
@@ -960,11 +753,11 @@ V_dvf = zeros(6,6,length(freqs));
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc8479b7" class="outline-2">
|
<div id="outline-container-orga095fa8" class="outline-2">
|
||||||
<h2 id="orgc8479b7"><span class="section-number-2">3</span> Diagonal Control based on the damped plant</h2>
|
<h2 id="orga095fa8"><span class="section-number-2">3</span> Diagonal Control based on the damped plant</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
From <a class='org-ref-reference' href="#skogestad07_multiv_feedb_contr">skogestad07_multiv_feedb_contr</a>, a simple approach to multivariable control is the following two-step procedure:
|
From (<a href="#citeproc_bib_item_1">Skogestad and Postlethwaite 2007</a>), a simple approach to multivariable control is the following two-step procedure:
|
||||||
</p>
|
</p>
|
||||||
<ol class="org-ol">
|
<ol class="org-ol">
|
||||||
<li><b>Design a pre-compensator</b> \(W_1\), which counteracts the interactions in the plant and results in a new <b>shaped plant</b> \(G_S(s) = G(s) W_1(s)\) which is <b>more diagonal and easier to control</b> than the original plant \(G(s)\).</li>
|
<li><b>Design a pre-compensator</b> \(W_1\), which counteracts the interactions in the plant and results in a new <b>shaped plant</b> \(G_S(s) = G(s) W_1(s)\) which is <b>more diagonal and easier to control</b> than the original plant \(G(s)\).</li>
|
||||||
@@ -986,8 +779,8 @@ There are mainly three different cases:
|
|||||||
</ol>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org99665a2" class="outline-3">
|
<div id="outline-container-orge901603" class="outline-3">
|
||||||
<h3 id="org99665a2"><span class="section-number-3">3.1</span> Initialization</h3>
|
<h3 id="orge901603"><span class="section-number-3">3.1</span> Initialization</h3>
|
||||||
<div class="outline-text-3" id="text-3-1">
|
<div class="outline-text-3" id="text-3-1">
|
||||||
<p>
|
<p>
|
||||||
We first initialize the Stewart platform.
|
We first initialize the Stewart platform.
|
||||||
@@ -1018,8 +811,8 @@ payload = initializePayload(<span class="org-string">'type'</span>, <span class=
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org42a5e98" class="outline-3">
|
<div id="outline-container-orgce73f0c" class="outline-3">
|
||||||
<h3 id="org42a5e98"><span class="section-number-3">3.2</span> Identification</h3>
|
<h3 id="orgce73f0c"><span class="section-number-3">3.2</span> Identification</h3>
|
||||||
<div class="outline-text-3" id="text-3-2">
|
<div class="outline-text-3" id="text-3-2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'dvf'</span>);
|
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'dvf'</span>);
|
||||||
@@ -1045,12 +838,12 @@ G_dvf.OutputName = {<span class="org-string">'Dx'</span>, <span class="org-strin
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgae85e0d" class="outline-3">
|
<div id="outline-container-orgb5a063b" class="outline-3">
|
||||||
<h3 id="orgae85e0d"><span class="section-number-3">3.3</span> Steady State Decoupling</h3>
|
<h3 id="orgb5a063b"><span class="section-number-3">3.3</span> Steady State Decoupling</h3>
|
||||||
<div class="outline-text-3" id="text-3-3">
|
<div class="outline-text-3" id="text-3-3">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org1e2bbe7" class="outline-4">
|
<div id="outline-container-orgd0ce552" class="outline-4">
|
||||||
<h4 id="org1e2bbe7"><span class="section-number-4">3.3.1</span> Pre-Compensator Design</h4>
|
<h4 id="orgd0ce552"><span class="section-number-4">3.3.1</span> Pre-Compensator Design</h4>
|
||||||
<div class="outline-text-4" id="text-3-3-1">
|
<div class="outline-text-4" id="text-3-3-1">
|
||||||
<p>
|
<p>
|
||||||
We choose \(W_1 = G^{-1}(0)\).
|
We choose \(W_1 = G^{-1}(0)\).
|
||||||
@@ -1080,18 +873,18 @@ In the case of the Stewart platform, the pre-compensator for static decoupling i
|
|||||||
\end{align*}
|
\end{align*}
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The static decoupled plant is schematic shown in Figure <a href="#org76617c6">14</a> and the bode plots of its diagonal elements are shown in Figure <a href="#org96093e0">15</a>.
|
The static decoupled plant is schematic shown in Figure <a href="#org6f0c40d">14</a> and the bode plots of its diagonal elements are shown in Figure <a href="#orgd6f1b1d">15</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="org76617c6" class="figure">
|
<div id="org6f0c40d" class="figure">
|
||||||
<p><img src="figs/control_arch_static_decoupling.png" alt="control_arch_static_decoupling.png" />
|
<p><img src="figs/control_arch_static_decoupling.png" alt="control_arch_static_decoupling.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 14: </span>Static Decoupling of the Stewart platform</p>
|
<p><span class="figure-number">Figure 14: </span>Static Decoupling of the Stewart platform</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org96093e0" class="figure">
|
<div id="orgd6f1b1d" class="figure">
|
||||||
<p><img src="figs/static_decoupling_diagonal_plant.png" alt="static_decoupling_diagonal_plant.png" />
|
<p><img src="figs/static_decoupling_diagonal_plant.png" alt="static_decoupling_diagonal_plant.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 15: </span>Bode plot of the diagonal elements of \(G_s(s)\) (<a href="./figs/static_decoupling_diagonal_plant.png">png</a>, <a href="./figs/static_decoupling_diagonal_plant.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 15: </span>Bode plot of the diagonal elements of \(G_s(s)\) (<a href="./figs/static_decoupling_diagonal_plant.png">png</a>, <a href="./figs/static_decoupling_diagonal_plant.pdf">pdf</a>)</p>
|
||||||
@@ -1099,8 +892,8 @@ The static decoupled plant is schematic shown in Figure <a href="#org76617c6">14
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org077e6f6" class="outline-4">
|
<div id="outline-container-org41b76c6" class="outline-4">
|
||||||
<h4 id="org077e6f6"><span class="section-number-4">3.3.2</span> Diagonal Control Design</h4>
|
<h4 id="org41b76c6"><span class="section-number-4">3.3.2</span> Diagonal Control Design</h4>
|
||||||
<div class="outline-text-4" id="text-3-3-2">
|
<div class="outline-text-4" id="text-3-3-2">
|
||||||
<p>
|
<p>
|
||||||
We design a diagonal controller \(K_s(s)\) that consist of a pure integrator and a lead around the crossover.
|
We design a diagonal controller \(K_s(s)\) that consist of a pure integrator and a lead around the crossover.
|
||||||
@@ -1117,7 +910,7 @@ Ks_dvf = diag(1<span class="org-type">./</span>abs(diag(freqresp(1<span class="o
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The overall controller is then \(K(s) = W_1 K_s(s)\) as shown in Figure <a href="#org4d1ce48">16</a>.
|
The overall controller is then \(K(s) = W_1 K_s(s)\) as shown in Figure <a href="#org2d2d9e8">16</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
@@ -1126,7 +919,7 @@ The overall controller is then \(K(s) = W_1 K_s(s)\) as shown in Figure <a href=
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org4d1ce48" class="figure">
|
<div id="org2d2d9e8" class="figure">
|
||||||
<p><img src="figs/control_arch_static_decoupling_K.png" alt="control_arch_static_decoupling_K.png" />
|
<p><img src="figs/control_arch_static_decoupling_K.png" alt="control_arch_static_decoupling_K.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 16: </span>Controller including the static decoupling matrix</p>
|
<p><span class="figure-number">Figure 16: </span>Controller including the static decoupling matrix</p>
|
||||||
@@ -1134,8 +927,8 @@ The overall controller is then \(K(s) = W_1 K_s(s)\) as shown in Figure <a href=
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf7c304f" class="outline-4">
|
<div id="outline-container-org3228759" class="outline-4">
|
||||||
<h4 id="orgf7c304f"><span class="section-number-4">3.3.3</span> Results</h4>
|
<h4 id="org3228759"><span class="section-number-4">3.3.3</span> Results</h4>
|
||||||
<div class="outline-text-4" id="text-3-3-3">
|
<div class="outline-text-4" id="text-3-3-3">
|
||||||
<p>
|
<p>
|
||||||
We identify the transmissibility and compliance of the Stewart platform under open-loop and closed-loop control.
|
We identify the transmissibility and compliance of the Stewart platform under open-loop and closed-loop control.
|
||||||
@@ -1160,7 +953,7 @@ The results are shown in figure
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="orge29798b" class="figure">
|
<div id="orgb6c4828" class="figure">
|
||||||
<p><img src="figs/static_decoupling_C_T_frobenius_norm.png" alt="static_decoupling_C_T_frobenius_norm.png" />
|
<p><img src="figs/static_decoupling_C_T_frobenius_norm.png" alt="static_decoupling_C_T_frobenius_norm.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 17: </span>Frobenius norm of the Compliance and transmissibility matrices (<a href="./figs/static_decoupling_C_T_frobenius_norm.png">png</a>, <a href="./figs/static_decoupling_C_T_frobenius_norm.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 17: </span>Frobenius norm of the Compliance and transmissibility matrices (<a href="./figs/static_decoupling_C_T_frobenius_norm.png">png</a>, <a href="./figs/static_decoupling_C_T_frobenius_norm.pdf">pdf</a>)</p>
|
||||||
@@ -1169,8 +962,8 @@ The results are shown in figure
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgad35bf9" class="outline-3">
|
<div id="outline-container-orgb53dd48" class="outline-3">
|
||||||
<h3 id="orgad35bf9"><span class="section-number-3">3.4</span> Decoupling at Crossover</h3>
|
<h3 id="orgb53dd48"><span class="section-number-3">3.4</span> Decoupling at Crossover</h3>
|
||||||
<div class="outline-text-3" id="text-3-4">
|
<div class="outline-text-3" id="text-3-4">
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li class="off"><code>[ ]</code> Find a method for real approximation of a complex matrix</li>
|
<li class="off"><code>[ ]</code> Find a method for real approximation of a complex matrix</li>
|
||||||
@@ -1179,12 +972,12 @@ The results are shown in figure
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org846cef9" class="outline-2">
|
<div id="outline-container-org639412c" class="outline-2">
|
||||||
<h2 id="org846cef9"><span class="section-number-2">4</span> Time Domain Simulation</h2>
|
<h2 id="org639412c"><span class="section-number-2">4</span> Time Domain Simulation</h2>
|
||||||
<div class="outline-text-2" id="text-4">
|
<div class="outline-text-2" id="text-4">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org2a9e89f" class="outline-3">
|
<div id="outline-container-orgc332811" class="outline-3">
|
||||||
<h3 id="org2a9e89f"><span class="section-number-3">4.1</span> Initialization</h3>
|
<h3 id="orgc332811"><span class="section-number-3">4.1</span> Initialization</h3>
|
||||||
<div class="outline-text-3" id="text-4-1">
|
<div class="outline-text-3" id="text-4-1">
|
||||||
<p>
|
<p>
|
||||||
We first initialize the Stewart platform.
|
We first initialize the Stewart platform.
|
||||||
@@ -1220,8 +1013,8 @@ payload = initializePayload(<span class="org-string">'type'</span>, <span class=
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8dbc004" class="outline-3">
|
<div id="outline-container-orgc72e6b5" class="outline-3">
|
||||||
<h3 id="org8dbc004"><span class="section-number-3">4.2</span> HAC IFF</h3>
|
<h3 id="orgc72e6b5"><span class="section-number-3">4.2</span> HAC IFF</h3>
|
||||||
<div class="outline-text-3" id="text-4-2">
|
<div class="outline-text-3" id="text-4-2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'iff'</span>);
|
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'iff'</span>);
|
||||||
@@ -1263,8 +1056,8 @@ K_hac_iff = inv(stewart.kinematics.J<span class="org-type">'</span>)<span class=
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7dc4716" class="outline-3">
|
<div id="outline-container-org757f9e9" class="outline-3">
|
||||||
<h3 id="org7dc4716"><span class="section-number-3">4.3</span> HAC-DVF</h3>
|
<h3 id="org757f9e9"><span class="section-number-3">4.3</span> HAC-DVF</h3>
|
||||||
<div class="outline-text-3" id="text-4-3">
|
<div class="outline-text-3" id="text-4-3">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'dvf'</span>);
|
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'dvf'</span>);
|
||||||
@@ -1307,8 +1100,8 @@ K_hac_dvf = inv(stewart.kinematics.J<span class="org-type">'</span>)<span class=
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org65730fb" class="outline-3">
|
<div id="outline-container-org620278d" class="outline-3">
|
||||||
<h3 id="org65730fb"><span class="section-number-3">4.4</span> Results</h3>
|
<h3 id="org620278d"><span class="section-number-3">4.4</span> Results</h3>
|
||||||
<div class="outline-text-3" id="text-4-4">
|
<div class="outline-text-3" id="text-4-4">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||||
@@ -1336,21 +1129,21 @@ ylabel(<span class="org-string">'Orientation error [rad]'</span>);
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org69ebad1" class="outline-2">
|
<div id="outline-container-org6a9c87c" class="outline-2">
|
||||||
<h2 id="org69ebad1"><span class="section-number-2">5</span> Functions</h2>
|
<h2 id="org6a9c87c"><span class="section-number-2">5</span> Functions</h2>
|
||||||
<div class="outline-text-2" id="text-5">
|
<div class="outline-text-2" id="text-5">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgc7bcc65" class="outline-3">
|
<div id="outline-container-orgd1492e7" class="outline-3">
|
||||||
<h3 id="orgc7bcc65"><span class="section-number-3">5.1</span> <code>initializeController</code>: Initialize the Controller</h3>
|
<h3 id="orgd1492e7"><span class="section-number-3">5.1</span> <code>initializeController</code>: Initialize the Controller</h3>
|
||||||
<div class="outline-text-3" id="text-5-1">
|
<div class="outline-text-3" id="text-5-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="org33a5401"></a>
|
<a id="orgc575d0d"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf672f64" class="outline-4">
|
<div id="outline-container-orgae5eed0" class="outline-4">
|
||||||
<h4 id="orgf672f64">Function description</h4>
|
<h4 id="orgae5eed0">Function description</h4>
|
||||||
<div class="outline-text-4" id="text-orgf672f64">
|
<div class="outline-text-4" id="text-orgae5eed0">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[controller]</span> = <span class="org-function-name">initializeController</span>(<span class="org-variable-name">args</span>)
|
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[controller]</span> = <span class="org-function-name">initializeController</span>(<span class="org-variable-name">args</span>)
|
||||||
<span class="org-comment">% initializeController - Initialize the Controller</span>
|
<span class="org-comment">% initializeController - Initialize the Controller</span>
|
||||||
@@ -1364,21 +1157,21 @@ ylabel(<span class="org-string">'Orientation error [rad]'</span>);
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org941466e" class="outline-4">
|
<div id="outline-container-orgda07b57" class="outline-4">
|
||||||
<h4 id="org941466e">Optional Parameters</h4>
|
<h4 id="orgda07b57">Optional Parameters</h4>
|
||||||
<div class="outline-text-4" id="text-org941466e">
|
<div class="outline-text-4" id="text-orgda07b57">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab"><span class="org-keyword">arguments</span>
|
||||||
args.type char {mustBeMember(args.type, {<span class="org-string">'open-loop'</span>, <span class="org-string">'iff'</span>, <span class="org-string">'dvf'</span>, <span class="org-string">'hac-iff'</span>, <span class="org-string">'hac-dvf'</span>, <span class="org-string">'ref-track-L'</span>, <span class="org-string">'ref-track-X'</span>, <span class="org-string">'ref-track-hac-dvf'</span>})} = <span class="org-string">'open-loop'</span>
|
<span class="org-variable-name">args</span>.type char {mustBeMember(args.type, {<span class="org-string">'open-loop'</span>, <span class="org-string">'iff'</span>, <span class="org-string">'dvf'</span>, <span class="org-string">'hac-iff'</span>, <span class="org-string">'hac-dvf'</span>, <span class="org-string">'ref-track-L'</span>, <span class="org-string">'ref-track-X'</span>, <span class="org-string">'ref-track-hac-dvf'</span>})} = <span class="org-string">'open-loop'</span>
|
||||||
<span class="org-keyword">end</span>
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org65d3a7d" class="outline-4">
|
<div id="outline-container-orgdb009ab" class="outline-4">
|
||||||
<h4 id="org65d3a7d">Structure initialization</h4>
|
<h4 id="orgdb009ab">Structure initialization</h4>
|
||||||
<div class="outline-text-4" id="text-org65d3a7d">
|
<div class="outline-text-4" id="text-orgdb009ab">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">controller = struct();
|
<pre class="src src-matlab">controller = struct();
|
||||||
</pre>
|
</pre>
|
||||||
@@ -1386,9 +1179,9 @@ ylabel(<span class="org-string">'Orientation error [rad]'</span>);
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org32be93f" class="outline-4">
|
<div id="outline-container-org056c578" class="outline-4">
|
||||||
<h4 id="org32be93f">Add Type</h4>
|
<h4 id="org056c578">Add Type</h4>
|
||||||
<div class="outline-text-4" id="text-org32be93f">
|
<div class="outline-text-4" id="text-org056c578">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-keyword">switch</span> <span class="org-constant">args.type</span>
|
<pre class="src src-matlab"><span class="org-keyword">switch</span> <span class="org-constant">args.type</span>
|
||||||
<span class="org-keyword">case</span> <span class="org-string">'open-loop'</span>
|
<span class="org-keyword">case</span> <span class="org-string">'open-loop'</span>
|
||||||
@@ -1410,6 +1203,11 @@ ylabel(<span class="org-string">'Orientation error [rad]'</span>);
|
|||||||
<span class="org-keyword">end</span>
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><h2 class='citeproc-org-bib-h2'>Bibliography</h2>
|
||||||
|
<div class="csl-bib-body">
|
||||||
|
<div class="csl-entry"><a name="citeproc_bib_item_1"></a>Skogestad, Sigurd, and Ian Postlethwaite. 2007. <i>Multivariable Feedback Control: Analysis and Design</i>. John Wiley.</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1417,7 +1215,7 @@ ylabel(<span class="org-string">'Orientation error [rad]'</span>);
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
<p class="date">Created: 2020-03-16 lun. 11:21</p>
|
<p class="date">Created: 2021-01-08 ven. 15:52</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,145 +0,0 @@
|
|||||||
.org-bold { /* bold */ font-weight: bold; }
|
|
||||||
.org-bold-italic { /* bold-italic */ font-weight: bold; font-style: italic; }
|
|
||||||
.org-buffer-menu-buffer { /* buffer-menu-buffer */ font-weight: bold; }
|
|
||||||
.org-builtin { /* font-lock-builtin-face */ color: #7a378b; }
|
|
||||||
.org-button { /* button */ text-decoration: underline; }
|
|
||||||
.org-calendar-today { /* calendar-today */ text-decoration: underline; }
|
|
||||||
.org-change-log-acknowledgement { /* change-log-acknowledgement */ color: #b22222; }
|
|
||||||
.org-change-log-conditionals { /* change-log-conditionals */ color: #a0522d; }
|
|
||||||
.org-change-log-date { /* change-log-date */ color: #8b2252; }
|
|
||||||
.org-change-log-email { /* change-log-email */ color: #a0522d; }
|
|
||||||
.org-change-log-file { /* change-log-file */ color: #0000ff; }
|
|
||||||
.org-change-log-function { /* change-log-function */ color: #a0522d; }
|
|
||||||
.org-change-log-list { /* change-log-list */ color: #a020f0; }
|
|
||||||
.org-change-log-name { /* change-log-name */ color: #008b8b; }
|
|
||||||
.org-comint-highlight-input { /* comint-highlight-input */ font-weight: bold; }
|
|
||||||
.org-comint-highlight-prompt { /* comint-highlight-prompt */ color: #00008b; }
|
|
||||||
.org-comment { /* font-lock-comment-face */ color: #999988; font-style: italic; }
|
|
||||||
.org-comment-delimiter { /* font-lock-comment-delimiter-face */ color: #999988; font-style: italic; }
|
|
||||||
.org-completions-annotations { /* completions-annotations */ font-style: italic; }
|
|
||||||
.org-completions-common-part { /* completions-common-part */ color: #000000; background-color: #ffffff; }
|
|
||||||
.org-completions-first-difference { /* completions-first-difference */ font-weight: bold; }
|
|
||||||
.org-constant { /* font-lock-constant-face */ color: #008b8b; }
|
|
||||||
.org-diary { /* diary */ color: #ff0000; }
|
|
||||||
.org-diff-context { /* diff-context */ color: #7f7f7f; }
|
|
||||||
.org-diff-file-header { /* diff-file-header */ background-color: #b3b3b3; font-weight: bold; }
|
|
||||||
.org-diff-function { /* diff-function */ background-color: #cccccc; }
|
|
||||||
.org-diff-header { /* diff-header */ background-color: #cccccc; }
|
|
||||||
.org-diff-hunk-header { /* diff-hunk-header */ background-color: #cccccc; }
|
|
||||||
.org-diff-index { /* diff-index */ background-color: #b3b3b3; font-weight: bold; }
|
|
||||||
.org-diff-nonexistent { /* diff-nonexistent */ background-color: #b3b3b3; font-weight: bold; }
|
|
||||||
.org-diff-refine-change { /* diff-refine-change */ background-color: #d9d9d9; }
|
|
||||||
.org-dired-directory { /* dired-directory */ color: #0000ff; }
|
|
||||||
.org-dired-flagged { /* dired-flagged */ color: #ff0000; font-weight: bold; }
|
|
||||||
.org-dired-header { /* dired-header */ color: #228b22; }
|
|
||||||
.org-dired-ignored { /* dired-ignored */ color: #7f7f7f; }
|
|
||||||
.org-dired-mark { /* dired-mark */ color: #008b8b; }
|
|
||||||
.org-dired-marked { /* dired-marked */ color: #ff0000; font-weight: bold; }
|
|
||||||
.org-dired-perm-write { /* dired-perm-write */ color: #b22222; }
|
|
||||||
.org-dired-symlink { /* dired-symlink */ color: #a020f0; }
|
|
||||||
.org-dired-warning { /* dired-warning */ color: #ff0000; font-weight: bold; }
|
|
||||||
.org-doc { /* font-lock-doc-face */ color: #8b2252; }
|
|
||||||
.org-escape-glyph { /* escape-glyph */ color: #a52a2a; }
|
|
||||||
.org-file-name-shadow { /* file-name-shadow */ color: #7f7f7f; }
|
|
||||||
.org-flyspell-duplicate { /* flyspell-duplicate */ color: #cdad00; font-weight: bold; text-decoration: underline; }
|
|
||||||
.org-flyspell-incorrect { /* flyspell-incorrect */ color: #ff4500; font-weight: bold; text-decoration: underline; }
|
|
||||||
.org-fringe { /* fringe */ background-color: #f2f2f2; }
|
|
||||||
.org-function-name { /* font-lock-function-name-face */ color: teal; }
|
|
||||||
.org-header-line { /* header-line */ color: #333333; background-color: #e5e5e5; }
|
|
||||||
.org-help-argument-name { /* help-argument-name */ font-style: italic; }
|
|
||||||
.org-highlight { /* highlight */ background-color: #b4eeb4; }
|
|
||||||
.org-holiday { /* holiday */ background-color: #ffc0cb; }
|
|
||||||
.org-isearch { /* isearch */ color: #b0e2ff; background-color: #cd00cd; }
|
|
||||||
.org-isearch-fail { /* isearch-fail */ background-color: #ffc1c1; }
|
|
||||||
.org-italic { /* italic */ font-style: italic; }
|
|
||||||
.org-keyword { /* font-lock-keyword-face */ color: #0086b3; }
|
|
||||||
.org-lazy-highlight { /* lazy-highlight */ background-color: #afeeee; }
|
|
||||||
.org-link { /* link */ color: #0000ff; text-decoration: underline; }
|
|
||||||
.org-link-visited { /* link-visited */ color: #8b008b; text-decoration: underline; }
|
|
||||||
.org-log-edit-header { /* log-edit-header */ color: #a020f0; }
|
|
||||||
.org-log-edit-summary { /* log-edit-summary */ color: #0000ff; }
|
|
||||||
.org-log-edit-unknown-header { /* log-edit-unknown-header */ color: #b22222; }
|
|
||||||
.org-match { /* match */ background-color: #ffff00; }
|
|
||||||
.org-next-error { /* next-error */ background-color: #eedc82; }
|
|
||||||
.org-nobreak-space { /* nobreak-space */ color: #a52a2a; text-decoration: underline; }
|
|
||||||
.org-org-archived { /* org-archived */ color: #7f7f7f; }
|
|
||||||
.org-org-block { /* org-block */ color: #7f7f7f; }
|
|
||||||
.org-org-block-begin-line { /* org-block-begin-line */ color: #b22222; }
|
|
||||||
.org-org-block-end-line { /* org-block-end-line */ color: #b22222; }
|
|
||||||
.org-org-checkbox { /* org-checkbox */ font-weight: bold; }
|
|
||||||
.org-org-checkbox-statistics-done { /* org-checkbox-statistics-done */ color: #228b22; font-weight: bold; }
|
|
||||||
.org-org-checkbox-statistics-todo { /* org-checkbox-statistics-todo */ color: #ff0000; font-weight: bold; }
|
|
||||||
.org-org-clock-overlay { /* org-clock-overlay */ background-color: #ffff00; }
|
|
||||||
.org-org-code { /* org-code */ color: #7f7f7f; }
|
|
||||||
.org-org-column { /* org-column */ background-color: #e5e5e5; }
|
|
||||||
.org-org-column-title { /* org-column-title */ background-color: #e5e5e5; font-weight: bold; text-decoration: underline; }
|
|
||||||
.org-org-date { /* org-date */ color: #a020f0; text-decoration: underline; }
|
|
||||||
.org-org-document-info { /* org-document-info */ color: #191970; }
|
|
||||||
.org-org-document-info-keyword { /* org-document-info-keyword */ color: #7f7f7f; }
|
|
||||||
.org-org-document-title { /* org-document-title */ color: #191970; font-size: 144%; font-weight: bold; }
|
|
||||||
.org-org-done { /* org-done */ color: #228b22; font-weight: bold; }
|
|
||||||
.org-org-drawer { /* org-drawer */ color: #0000ff; }
|
|
||||||
.org-org-ellipsis { /* org-ellipsis */ color: #b8860b; text-decoration: underline; }
|
|
||||||
.org-org-footnote { /* org-footnote */ color: #a020f0; text-decoration: underline; }
|
|
||||||
.org-org-formula { /* org-formula */ color: #b22222; }
|
|
||||||
.org-org-headline-done { /* org-headline-done */ color: #bc8f8f; }
|
|
||||||
.org-org-hide { /* org-hide */ color: #ffffff; }
|
|
||||||
.org-org-latex-and-export-specials { /* org-latex-and-export-specials */ color: #8b4513; }
|
|
||||||
.org-org-level-1 { /* org-level-1 */ color: #0000ff; }
|
|
||||||
.org-org-level-2 { /* org-level-2 */ color: #a0522d; }
|
|
||||||
.org-org-level-3 { /* org-level-3 */ color: #a020f0; }
|
|
||||||
.org-org-level-4 { /* org-level-4 */ color: #b22222; }
|
|
||||||
.org-org-level-5 { /* org-level-5 */ color: #228b22; }
|
|
||||||
.org-org-level-6 { /* org-level-6 */ color: #008b8b; }
|
|
||||||
.org-org-level-7 { /* org-level-7 */ color: #7a378b; }
|
|
||||||
.org-org-level-8 { /* org-level-8 */ color: #8b2252; }
|
|
||||||
.org-org-link { /* org-link */ color: #0000ff; text-decoration: underline; }
|
|
||||||
.org-org-meta-line { /* org-meta-line */ color: #b22222; }
|
|
||||||
.org-org-mode-line-clock { /* org-mode-line-clock */ color: #000000; background-color: #bfbfbf; }
|
|
||||||
.org-org-mode-line-clock-overrun { /* org-mode-line-clock-overrun */ color: #000000; background-color: #ff0000; }
|
|
||||||
.org-org-quote { /* org-quote */ color: #7f7f7f; }
|
|
||||||
.org-org-scheduled { /* org-scheduled */ color: #006400; }
|
|
||||||
.org-org-scheduled-previously { /* org-scheduled-previously */ color: #b22222; }
|
|
||||||
.org-org-scheduled-today { /* org-scheduled-today */ color: #006400; }
|
|
||||||
.org-org-sexp-date { /* org-sexp-date */ color: #a020f0; }
|
|
||||||
.org-org-special-keyword { /* org-special-keyword */ color: #a020f0; }
|
|
||||||
.org-org-table { /* org-table */ color: #0000ff; }
|
|
||||||
.org-org-tag { /* org-tag */ font-weight: bold; }
|
|
||||||
.org-org-target { /* org-target */ text-decoration: underline; }
|
|
||||||
.org-org-time-grid { /* org-time-grid */ color: #b8860b; }
|
|
||||||
.org-org-todo { /* org-todo */ color: #ff0000; font-weight: bold; }
|
|
||||||
.org-org-upcoming-deadline { /* org-upcoming-deadline */ color: #b22222; }
|
|
||||||
.org-org-verbatim { /* org-verbatim */ color: #7f7f7f; }
|
|
||||||
.org-org-verse { /* org-verse */ color: #7f7f7f; }
|
|
||||||
.org-org-warning { /* org-warning */ color: #ff0000; font-weight: bold; }
|
|
||||||
.org-outline-1 { /* outline-1 */ color: #0000ff; }
|
|
||||||
.org-outline-2 { /* outline-2 */ color: #a0522d; }
|
|
||||||
.org-outline-3 { /* outline-3 */ color: #a020f0; }
|
|
||||||
.org-outline-4 { /* outline-4 */ color: #b22222; }
|
|
||||||
.org-outline-5 { /* outline-5 */ color: #228b22; }
|
|
||||||
.org-outline-6 { /* outline-6 */ color: #008b8b; }
|
|
||||||
.org-outline-7 { /* outline-7 */ color: #7a378b; }
|
|
||||||
.org-outline-8 { /* outline-8 */ color: #8b2252; }
|
|
||||||
.org-preprocessor { /* font-lock-preprocessor-face */ color: #7a378b; }
|
|
||||||
.org-query-replace { /* query-replace */ color: #b0e2ff; background-color: #cd00cd; }
|
|
||||||
.org-regexp-grouping-backslash { /* font-lock-regexp-grouping-backslash */ font-weight: bold; }
|
|
||||||
.org-regexp-grouping-construct { /* font-lock-regexp-grouping-construct */ font-weight: bold; }
|
|
||||||
.org-region { /* region */ background-color: #eedc82; }
|
|
||||||
.org-secondary-selection { /* secondary-selection */ background-color: #ffff00; }
|
|
||||||
.org-shadow { /* shadow */ color: #7f7f7f; }
|
|
||||||
.org-show-paren-match { /* show-paren-match */ background-color: #40e0d0; }
|
|
||||||
.org-show-paren-mismatch { /* show-paren-mismatch */ color: #ffffff; background-color: #a020f0; }
|
|
||||||
.org-string { /* font-lock-string-face */ color: #dd1144; }
|
|
||||||
.org-tool-bar { /* tool-bar */ color: #000000; background-color: #bfbfbf; }
|
|
||||||
.org-tooltip { /* tooltip */ color: #000000; background-color: #ffffe0; }
|
|
||||||
.org-trailing-whitespace { /* trailing-whitespace */ background-color: #ff0000; }
|
|
||||||
.org-type { /* font-lock-type-face */ color: #228b22; }
|
|
||||||
.org-underline { /* underline */ text-decoration: underline; }
|
|
||||||
.org-variable-name { /* font-lock-variable-name-face */ color: teal; }
|
|
||||||
.org-warning { /* font-lock-warning-face */ color: #ff0000; font-weight: bold; }
|
|
||||||
.org-widget-button { /* widget-button */ font-weight: bold; }
|
|
||||||
.org-widget-button-pressed { /* widget-button-pressed */ color: #ff0000; }
|
|
||||||
.org-widget-documentation { /* widget-documentation */ color: #006400; }
|
|
||||||
.org-widget-field { /* widget-field */ background-color: #d9d9d9; }
|
|
||||||
.org-widget-inactive { /* widget-inactive */ color: #7f7f7f; }
|
|
||||||
.org-widget-single-line-field { /* widget-single-line-field */ background-color: #d9d9d9; }
|
|
@@ -1,239 +1,32 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"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>
|
||||||
<!-- 2020-03-02 lun. 17:57 -->
|
<!-- 2021-01-08 ven. 15:52 -->
|
||||||
<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" />
|
|
||||||
<title>Stewart Platform - Dynamics Study</title>
|
<title>Stewart Platform - Dynamics Study</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<style type="text/css">
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<!--/*--><![CDATA[/*><!--*/
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
.title { text-align: center;
|
|
||||||
margin-bottom: .2em; }
|
|
||||||
.subtitle { text-align: center;
|
|
||||||
font-size: medium;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-top:0; }
|
|
||||||
.todo { font-family: monospace; color: red; }
|
|
||||||
.done { font-family: monospace; color: green; }
|
|
||||||
.priority { font-family: monospace; color: orange; }
|
|
||||||
.tag { background-color: #eee; font-family: monospace;
|
|
||||||
padding: 2px; font-size: 80%; font-weight: normal; }
|
|
||||||
.timestamp { color: #bebebe; }
|
|
||||||
.timestamp-kwd { color: #5f9ea0; }
|
|
||||||
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
|
|
||||||
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
|
|
||||||
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
|
|
||||||
.underline { text-decoration: underline; }
|
|
||||||
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
|
||||||
p.verse { margin-left: 3%; }
|
|
||||||
pre {
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
box-shadow: 3px 3px 3px #eee;
|
|
||||||
padding: 8pt;
|
|
||||||
font-family: monospace;
|
|
||||||
overflow: auto;
|
|
||||||
margin: 1.2em;
|
|
||||||
}
|
|
||||||
pre.src {
|
|
||||||
position: relative;
|
|
||||||
overflow: visible;
|
|
||||||
padding-top: 1.2em;
|
|
||||||
}
|
|
||||||
pre.src:before {
|
|
||||||
display: none;
|
|
||||||
position: absolute;
|
|
||||||
background-color: white;
|
|
||||||
top: -10px;
|
|
||||||
right: 10px;
|
|
||||||
padding: 3px;
|
|
||||||
border: 1px solid black;
|
|
||||||
}
|
|
||||||
pre.src:hover:before { display: inline;}
|
|
||||||
/* Languages per Org manual */
|
|
||||||
pre.src-asymptote:before { content: 'Asymptote'; }
|
|
||||||
pre.src-awk:before { content: 'Awk'; }
|
|
||||||
pre.src-C:before { content: 'C'; }
|
|
||||||
/* pre.src-C++ doesn't work in CSS */
|
|
||||||
pre.src-clojure:before { content: 'Clojure'; }
|
|
||||||
pre.src-css:before { content: 'CSS'; }
|
|
||||||
pre.src-D:before { content: 'D'; }
|
|
||||||
pre.src-ditaa:before { content: 'ditaa'; }
|
|
||||||
pre.src-dot:before { content: 'Graphviz'; }
|
|
||||||
pre.src-calc:before { content: 'Emacs Calc'; }
|
|
||||||
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
|
||||||
pre.src-fortran:before { content: 'Fortran'; }
|
|
||||||
pre.src-gnuplot:before { content: 'gnuplot'; }
|
|
||||||
pre.src-haskell:before { content: 'Haskell'; }
|
|
||||||
pre.src-hledger:before { content: 'hledger'; }
|
|
||||||
pre.src-java:before { content: 'Java'; }
|
|
||||||
pre.src-js:before { content: 'Javascript'; }
|
|
||||||
pre.src-latex:before { content: 'LaTeX'; }
|
|
||||||
pre.src-ledger:before { content: 'Ledger'; }
|
|
||||||
pre.src-lisp:before { content: 'Lisp'; }
|
|
||||||
pre.src-lilypond:before { content: 'Lilypond'; }
|
|
||||||
pre.src-lua:before { content: 'Lua'; }
|
|
||||||
pre.src-matlab:before { content: 'MATLAB'; }
|
|
||||||
pre.src-mscgen:before { content: 'Mscgen'; }
|
|
||||||
pre.src-ocaml:before { content: 'Objective Caml'; }
|
|
||||||
pre.src-octave:before { content: 'Octave'; }
|
|
||||||
pre.src-org:before { content: 'Org mode'; }
|
|
||||||
pre.src-oz:before { content: 'OZ'; }
|
|
||||||
pre.src-plantuml:before { content: 'Plantuml'; }
|
|
||||||
pre.src-processing:before { content: 'Processing.js'; }
|
|
||||||
pre.src-python:before { content: 'Python'; }
|
|
||||||
pre.src-R:before { content: 'R'; }
|
|
||||||
pre.src-ruby:before { content: 'Ruby'; }
|
|
||||||
pre.src-sass:before { content: 'Sass'; }
|
|
||||||
pre.src-scheme:before { content: 'Scheme'; }
|
|
||||||
pre.src-screen:before { content: 'Gnu Screen'; }
|
|
||||||
pre.src-sed:before { content: 'Sed'; }
|
|
||||||
pre.src-sh:before { content: 'shell'; }
|
|
||||||
pre.src-sql:before { content: 'SQL'; }
|
|
||||||
pre.src-sqlite:before { content: 'SQLite'; }
|
|
||||||
/* additional languages in org.el's org-babel-load-languages alist */
|
|
||||||
pre.src-forth:before { content: 'Forth'; }
|
|
||||||
pre.src-io:before { content: 'IO'; }
|
|
||||||
pre.src-J:before { content: 'J'; }
|
|
||||||
pre.src-makefile:before { content: 'Makefile'; }
|
|
||||||
pre.src-maxima:before { content: 'Maxima'; }
|
|
||||||
pre.src-perl:before { content: 'Perl'; }
|
|
||||||
pre.src-picolisp:before { content: 'Pico Lisp'; }
|
|
||||||
pre.src-scala:before { content: 'Scala'; }
|
|
||||||
pre.src-shell:before { content: 'Shell Script'; }
|
|
||||||
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
|
|
||||||
/* additional language identifiers per "defun org-babel-execute"
|
|
||||||
in ob-*.el */
|
|
||||||
pre.src-cpp:before { content: 'C++'; }
|
|
||||||
pre.src-abc:before { content: 'ABC'; }
|
|
||||||
pre.src-coq:before { content: 'Coq'; }
|
|
||||||
pre.src-groovy:before { content: 'Groovy'; }
|
|
||||||
/* additional language identifiers from org-babel-shell-names in
|
|
||||||
ob-shell.el: ob-shell is the only babel language using a lambda to put
|
|
||||||
the execution function name together. */
|
|
||||||
pre.src-bash:before { content: 'bash'; }
|
|
||||||
pre.src-csh:before { content: 'csh'; }
|
|
||||||
pre.src-ash:before { content: 'ash'; }
|
|
||||||
pre.src-dash:before { content: 'dash'; }
|
|
||||||
pre.src-ksh:before { content: 'ksh'; }
|
|
||||||
pre.src-mksh:before { content: 'mksh'; }
|
|
||||||
pre.src-posh:before { content: 'posh'; }
|
|
||||||
/* Additional Emacs modes also supported by the LaTeX listings package */
|
|
||||||
pre.src-ada:before { content: 'Ada'; }
|
|
||||||
pre.src-asm:before { content: 'Assembler'; }
|
|
||||||
pre.src-caml:before { content: 'Caml'; }
|
|
||||||
pre.src-delphi:before { content: 'Delphi'; }
|
|
||||||
pre.src-html:before { content: 'HTML'; }
|
|
||||||
pre.src-idl:before { content: 'IDL'; }
|
|
||||||
pre.src-mercury:before { content: 'Mercury'; }
|
|
||||||
pre.src-metapost:before { content: 'MetaPost'; }
|
|
||||||
pre.src-modula-2:before { content: 'Modula-2'; }
|
|
||||||
pre.src-pascal:before { content: 'Pascal'; }
|
|
||||||
pre.src-ps:before { content: 'PostScript'; }
|
|
||||||
pre.src-prolog:before { content: 'Prolog'; }
|
|
||||||
pre.src-simula:before { content: 'Simula'; }
|
|
||||||
pre.src-tcl:before { content: 'tcl'; }
|
|
||||||
pre.src-tex:before { content: 'TeX'; }
|
|
||||||
pre.src-plain-tex:before { content: 'Plain TeX'; }
|
|
||||||
pre.src-verilog:before { content: 'Verilog'; }
|
|
||||||
pre.src-vhdl:before { content: 'VHDL'; }
|
|
||||||
pre.src-xml:before { content: 'XML'; }
|
|
||||||
pre.src-nxml:before { content: 'XML'; }
|
|
||||||
/* add a generic configuration mode; LaTeX export needs an additional
|
|
||||||
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
|
|
||||||
pre.src-conf:before { content: 'Configuration File'; }
|
|
||||||
|
|
||||||
table { border-collapse:collapse; }
|
|
||||||
caption.t-above { caption-side: top; }
|
|
||||||
caption.t-bottom { caption-side: bottom; }
|
|
||||||
td, th { vertical-align:top; }
|
|
||||||
th.org-right { text-align: center; }
|
|
||||||
th.org-left { text-align: center; }
|
|
||||||
th.org-center { text-align: center; }
|
|
||||||
td.org-right { text-align: right; }
|
|
||||||
td.org-left { text-align: left; }
|
|
||||||
td.org-center { text-align: center; }
|
|
||||||
dt { font-weight: bold; }
|
|
||||||
.footpara { display: inline; }
|
|
||||||
.footdef { margin-bottom: 1em; }
|
|
||||||
.figure { padding: 1em; }
|
|
||||||
.figure p { text-align: center; }
|
|
||||||
.equation-container {
|
|
||||||
display: table;
|
|
||||||
text-align: center;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.equation {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.equation-label {
|
|
||||||
display: table-cell;
|
|
||||||
text-align: right;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.inlinetask {
|
|
||||||
padding: 10px;
|
|
||||||
border: 2px solid gray;
|
|
||||||
margin: 10px;
|
|
||||||
background: #ffffcc;
|
|
||||||
}
|
|
||||||
#org-div-home-and-up
|
|
||||||
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
|
||||||
textarea { overflow-x: auto; }
|
|
||||||
.linenr { font-size: smaller }
|
|
||||||
.code-highlighted { background-color: #ffff00; }
|
|
||||||
.org-info-js_info-navigation { border-style: none; }
|
|
||||||
#org-info-js_console-label
|
|
||||||
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
|
||||||
.org-info-js_search-highlight
|
|
||||||
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
|
||||||
.org-svg { width: 90%; }
|
|
||||||
/*]]>*/-->
|
|
||||||
</style>
|
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
|
||||||
<script src="./js/jquery.min.js"></script>
|
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
<script src="./js/readtheorg.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
|
|
||||||
<!--/*--><![CDATA[/*><!--*/
|
|
||||||
function CodeHighlightOn(elem, id)
|
|
||||||
{
|
|
||||||
var target = document.getElementById(id);
|
|
||||||
if(null != target) {
|
|
||||||
elem.cacheClassElem = elem.className;
|
|
||||||
elem.cacheClassTarget = target.className;
|
|
||||||
target.className = "code-highlighted";
|
|
||||||
elem.className = "code-highlighted";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function CodeHighlightOff(elem, id)
|
|
||||||
{
|
|
||||||
var target = document.getElementById(id);
|
|
||||||
if(elem.cacheClassElem)
|
|
||||||
elem.className = elem.cacheClassElem;
|
|
||||||
if(elem.cacheClassTarget)
|
|
||||||
target.className = elem.cacheClassTarget;
|
|
||||||
}
|
|
||||||
/*]]>*///-->
|
|
||||||
// @license-end
|
|
||||||
</script>
|
|
||||||
<script>
|
<script>
|
||||||
MathJax = {
|
MathJax = {
|
||||||
tex: { macros: {
|
svg: {
|
||||||
bm: ["\\boldsymbol{#1}",1],
|
scale: 1,
|
||||||
}
|
fontCache: "global"
|
||||||
|
},
|
||||||
|
tex: {
|
||||||
|
tags: "ams",
|
||||||
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript"
|
<script id="MathJax-script" async
|
||||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
@@ -246,33 +39,33 @@
|
|||||||
<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="#orgc59e712">1. Compare external forces and forces applied by the actuators</a>
|
<li><a href="#org7743c04">1. Compare external forces and forces applied by the actuators</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org4509b7d">1.1. Comparison with fixed support</a></li>
|
<li><a href="#orgc730bef">1.1. Comparison with fixed support</a></li>
|
||||||
<li><a href="#org8662186">1.2. Comparison with a flexible support</a></li>
|
<li><a href="#orgefde538">1.2. Comparison with a flexible support</a></li>
|
||||||
<li><a href="#orgbb930ae">1.3. Conclusion</a></li>
|
<li><a href="#orga9eb2fd">1.3. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org81ab204">2. Comparison of the static transfer function and the Compliance matrix</a>
|
<li><a href="#orgb6a1ef7">2. Comparison of the static transfer function and the Compliance matrix</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orge7e7242">2.1. Analysis</a></li>
|
<li><a href="#org3f1c253">2.1. Analysis</a></li>
|
||||||
<li><a href="#org5acc4c0">2.2. Conclusion</a></li>
|
<li><a href="#orge261263">2.2. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc59e712" class="outline-2">
|
<div id="outline-container-org7743c04" class="outline-2">
|
||||||
<h2 id="orgc59e712"><span class="section-number-2">1</span> Compare external forces and forces applied by the actuators</h2>
|
<h2 id="org7743c04"><span class="section-number-2">1</span> Compare external forces and forces applied by the actuators</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
In this section, we wish to compare the effect of forces/torques applied by the actuators with the effect of external forces/torques on the displacement of the mobile platform.
|
In this section, we wish to compare the effect of forces/torques applied by the actuators with the effect of external forces/torques on the displacement of the mobile platform.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4509b7d" class="outline-3">
|
<div id="outline-container-orgc730bef" class="outline-3">
|
||||||
<h3 id="org4509b7d"><span class="section-number-3">1.1</span> Comparison with fixed support</h3>
|
<h3 id="orgc730bef"><span class="section-number-3">1.1</span> Comparison with fixed support</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<p>
|
<p>
|
||||||
Let’s generate a Stewart platform.
|
Let’s generate a Stewart platform.
|
||||||
@@ -352,22 +145,22 @@ Gd.OutputName = {<span class="org-string">'Edx'</span>, <span class="org-string"
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The comparison of the two transfer functions is shown in Figure <a href="#orgbf9a54a">1</a>.
|
The comparison of the two transfer functions is shown in Figure <a href="#org2de43b3">1</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgbf9a54a" class="figure">
|
<div id="org2de43b3" class="figure">
|
||||||
<p><img src="figs/comparison_Fext_F_fixed_base.png" alt="comparison_Fext_F_fixed_base.png" />
|
<p><img src="figs/comparison_Fext_F_fixed_base.png" alt="comparison_Fext_F_fixed_base.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Comparison of the transfer functions from \(\bm{\mathcal{F}}\) to \(\mathcal{\bm{X}}\) and from \(\bm{\mathcal{F}}_{\text{ext}}\) to \(\mathcal{\bm{X}}\) (<a href="./figs/comparison_Fext_F_fixed_base.png">png</a>, <a href="./figs/comparison_Fext_F_fixed_base.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 1: </span>Comparison of the transfer functions from \(\bm{\mathcal{F}}\) to \(\mathcal{\bm{X}}\) and from \(\bm{\mathcal{F}}_{\text{ext}}\) to \(\mathcal{\bm{X}}\) (<a href="./figs/comparison_Fext_F_fixed_base.png">png</a>, <a href="./figs/comparison_Fext_F_fixed_base.pdf">pdf</a>)</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
This can be understood from figure <a href="#org8bd3e63">2</a> where \(\mathcal{F}_{x}\) and \(\mathcal{F}_{x,\text{ext}}\) have clearly the same effect on \(\mathcal{X}_{x}\).
|
This can be understood from figure <a href="#orgd6db375">2</a> where \(\mathcal{F}_{x}\) and \(\mathcal{F}_{x,\text{ext}}\) have clearly the same effect on \(\mathcal{X}_{x}\).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="org8bd3e63" class="figure">
|
<div id="orgd6db375" class="figure">
|
||||||
<p><img src="figs/1dof_actuator_external_forces.png" alt="1dof_actuator_external_forces.png" />
|
<p><img src="figs/1dof_actuator_external_forces.png" alt="1dof_actuator_external_forces.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 2: </span>Schematic representation of the stewart platform on a rigid support</p>
|
<p><span class="figure-number">Figure 2: </span>Schematic representation of the stewart platform on a rigid support</p>
|
||||||
@@ -375,8 +168,8 @@ This can be understood from figure <a href="#org8bd3e63">2</a> where \(\mathcal{
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8662186" class="outline-3">
|
<div id="outline-container-orgefde538" class="outline-3">
|
||||||
<h3 id="org8662186"><span class="section-number-3">1.2</span> Comparison with a flexible support</h3>
|
<h3 id="orgefde538"><span class="section-number-3">1.2</span> Comparison with a flexible support</h3>
|
||||||
<div class="outline-text-3" id="text-1-2">
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<p>
|
<p>
|
||||||
We now add a flexible support under the Stewart platform.
|
We now add a flexible support under the Stewart platform.
|
||||||
@@ -416,24 +209,24 @@ Gd.OutputName = {<span class="org-string">'Edx'</span>, <span class="org-string"
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The comparison between the obtained transfer functions is shown in Figure <a href="#orga2f2bd5">3</a>.
|
The comparison between the obtained transfer functions is shown in Figure <a href="#org593368e">3</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="orga2f2bd5" class="figure">
|
<div id="org593368e" class="figure">
|
||||||
<p><img src="figs/comparison_Fext_F_flexible_base.png" alt="comparison_Fext_F_flexible_base.png" />
|
<p><img src="figs/comparison_Fext_F_flexible_base.png" alt="comparison_Fext_F_flexible_base.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 3: </span>Comparison of the transfer functions from \(\bm{\mathcal{F}}\) to \(\mathcal{\bm{X}}\) and from \(\bm{\mathcal{F}}_{\text{ext}}\) to \(\mathcal{\bm{X}}\) (<a href="./figs/comparison_Fext_F_flexible_base.png">png</a>, <a href="./figs/comparison_Fext_F_flexible_base.pdf">pdf</a>)</p>
|
<p><span class="figure-number">Figure 3: </span>Comparison of the transfer functions from \(\bm{\mathcal{F}}\) to \(\mathcal{\bm{X}}\) and from \(\bm{\mathcal{F}}_{\text{ext}}\) to \(\mathcal{\bm{X}}\) (<a href="./figs/comparison_Fext_F_flexible_base.png">png</a>, <a href="./figs/comparison_Fext_F_flexible_base.pdf">pdf</a>)</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The addition of a flexible support can be schematically represented in Figure <a href="#orgee3ecbe">4</a>.
|
The addition of a flexible support can be schematically represented in Figure <a href="#orga537ded">4</a>.
|
||||||
We see that \(\mathcal{F}_{x}\) applies a force both on \(m\) and \(m^{\prime}\) whereas \(\mathcal{F}_{x,\text{ext}}\) only applies a force on \(m\).
|
We see that \(\mathcal{F}_{x}\) applies a force both on \(m\) and \(m^{\prime}\) whereas \(\mathcal{F}_{x,\text{ext}}\) only applies a force on \(m\).
|
||||||
And thus \(\mathcal{F}_{x}\) and \(\mathcal{F}_{x,\text{ext}}\) have clearly <b>not</b> the same effect on \(\mathcal{X}_{x}\).
|
And thus \(\mathcal{F}_{x}\) and \(\mathcal{F}_{x,\text{ext}}\) have clearly <b>not</b> the same effect on \(\mathcal{X}_{x}\).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgee3ecbe" class="figure">
|
<div id="orga537ded" class="figure">
|
||||||
<p><img src="figs/2dof_actuator_external_forces.png" alt="2dof_actuator_external_forces.png" />
|
<p><img src="figs/2dof_actuator_external_forces.png" alt="2dof_actuator_external_forces.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 4: </span>Schematic representation of the stewart platform on top of a flexible support</p>
|
<p><span class="figure-number">Figure 4: </span>Schematic representation of the stewart platform on top of a flexible support</p>
|
||||||
@@ -442,10 +235,10 @@ And thus \(\mathcal{F}_{x}\) and \(\mathcal{F}_{x,\text{ext}}\) have clearly <b>
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-orgbb930ae" class="outline-3">
|
<div id="outline-container-orga9eb2fd" class="outline-3">
|
||||||
<h3 id="orgbb930ae"><span class="section-number-3">1.3</span> Conclusion</h3>
|
<h3 id="orga9eb2fd"><span class="section-number-3">1.3</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-1-3">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
<div class="important">
|
<div class="important" id="org4878fef">
|
||||||
<p>
|
<p>
|
||||||
The transfer function from forces/torques applied by the actuators on the payload \(\bm{\mathcal{F}} = \bm{J}^T \bm{\tau}\) to the pose of the mobile platform \(\bm{\mathcal{X}}\) is the same as the transfer function from external forces/torques to \(\bm{\mathcal{X}}\) as long as the Stewart platform’s base is fixed.
|
The transfer function from forces/torques applied by the actuators on the payload \(\bm{\mathcal{F}} = \bm{J}^T \bm{\tau}\) to the pose of the mobile platform \(\bm{\mathcal{X}}\) is the same as the transfer function from external forces/torques to \(\bm{\mathcal{X}}\) as long as the Stewart platform’s base is fixed.
|
||||||
</p>
|
</p>
|
||||||
@@ -455,16 +248,16 @@ The transfer function from forces/torques applied by the actuators on the payloa
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org81ab204" class="outline-2">
|
<div id="outline-container-orgb6a1ef7" class="outline-2">
|
||||||
<h2 id="org81ab204"><span class="section-number-2">2</span> Comparison of the static transfer function and the Compliance matrix</h2>
|
<h2 id="orgb6a1ef7"><span class="section-number-2">2</span> Comparison of the static transfer function and the Compliance matrix</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
In this section, we see how the Compliance matrix of the Stewart platform is linked to the static relation between \(\mathcal{\bm{F}}\) to \(\mathcal{\bm{X}}\).
|
In this section, we see how the Compliance matrix of the Stewart platform is linked to the static relation between \(\mathcal{\bm{F}}\) to \(\mathcal{\bm{X}}\).
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge7e7242" class="outline-3">
|
<div id="outline-container-org3f1c253" class="outline-3">
|
||||||
<h3 id="orge7e7242"><span class="section-number-3">2.1</span> Analysis</h3>
|
<h3 id="org3f1c253"><span class="section-number-3">2.1</span> Analysis</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<p>
|
||||||
Initialization of the Stewart platform.
|
Initialization of the Stewart platform.
|
||||||
@@ -677,10 +470,10 @@ And now at the Compliance matrix.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org5acc4c0" class="outline-3">
|
<div id="outline-container-orge261263" class="outline-3">
|
||||||
<h3 id="org5acc4c0"><span class="section-number-3">2.2</span> Conclusion</h3>
|
<h3 id="orge261263"><span class="section-number-3">2.2</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-2-2">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<div class="important">
|
<div class="important" id="org2428297">
|
||||||
<p>
|
<p>
|
||||||
The low frequency transfer function matrix from \(\mathcal{\bm{F}}\) to \(\mathcal{\bm{X}}\) corresponds to the compliance matrix of the Stewart platform.
|
The low frequency transfer function matrix from \(\mathcal{\bm{F}}\) to \(\mathcal{\bm{X}}\) corresponds to the compliance matrix of the Stewart platform.
|
||||||
</p>
|
</p>
|
||||||
@@ -692,7 +485,7 @@ The low frequency transfer function matrix from \(\mathcal{\bm{F}}\) to \(\mathc
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
<p class="date">Created: 2020-03-02 lun. 17:57</p>
|
<p class="date">Created: 2021-01-08 ven. 15:52</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
BIN
docs/figs/afzali_parametrization_hexapod.png
Normal file
After Width: | Height: | Size: 179 KiB |
BIN
docs/figs/afzali_stewart_platform_characteristics.png
Normal file
After Width: | Height: | Size: 168 KiB |
BIN
docs/figs/afzali_top_view.png
Normal file
After Width: | Height: | Size: 120 KiB |
BIN
docs/figs/comp_relative_motion_sensor_act_leg.pdf
Normal file
BIN
docs/figs/comp_relative_motion_sensor_act_leg.png
Normal file
After Width: | Height: | Size: 97 KiB |
BIN
docs/figs/comp_relative_motion_sensor_act_leg_encoder.pdf
Normal file
BIN
docs/figs/comp_relative_motion_sensor_act_leg_encoder.png
Normal file
After Width: | Height: | Size: 121 KiB |
BIN
docs/figs/flexible_elements_effect_dvf.pdf
Normal file
BIN
docs/figs/flexible_elements_effect_dvf.png
Normal file
After Width: | Height: | Size: 116 KiB |
2494
docs/figs/flexible_elements_effect_iff.pdf
Normal file
BIN
docs/figs/flexible_elements_effect_iff.png
Normal file
After Width: | Height: | Size: 163 KiB |
BIN
docs/figs/introduction_stewart_mov_pos.pdf
Normal file
BIN
docs/figs/introduction_stewart_mov_pos.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
docs/figs/introduction_stewart_rest_pos.pdf
Normal file
BIN
docs/figs/introduction_stewart_rest_pos.png
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
docs/figs/simscape_flex_apa.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
docs/figs/simscape_flex_joints.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
docs/figs/simscape_flexible.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
docs/figs/souleille18_model_piezo.png
Normal file
After Width: | Height: | Size: 191 KiB |
BIN
docs/figs/stewart_examples/stewart_beijen.jpg
Normal file
After Width: | Height: | Size: 81 KiB |
BIN
docs/figs/stewart_examples/stewart_cleary.jpg
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
docs/figs/stewart_examples/stewart_czech.jpg
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
docs/figs/stewart_examples/stewart_dong07.jpg
Normal file
After Width: | Height: | Size: 125 KiB |
BIN
docs/figs/stewart_examples/stewart_du14.jpg
Normal file
After Width: | Height: | Size: 91 KiB |
BIN
docs/figs/stewart_examples/stewart_furutani.jpg
Normal file
After Width: | Height: | Size: 94 KiB |
BIN
docs/figs/stewart_examples/stewart_geng.jpg
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
docs/figs/stewart_examples/stewart_ht_uw.jpg
Normal file
After Width: | Height: | Size: 82 KiB |
BIN
docs/figs/stewart_examples/stewart_iran.jpg
Normal file
After Width: | Height: | Size: 52 KiB |
BIN
docs/figs/stewart_examples/stewart_jpl.jpg
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
docs/figs/stewart_examples/stewart_kim00.jpg
Normal file
After Width: | Height: | Size: 43 KiB |
BIN
docs/figs/stewart_examples/stewart_mais.jpg
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
docs/figs/stewart_examples/stewart_nanoscale.jpg
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
docs/figs/stewart_examples/stewart_naval.jpg
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
docs/figs/stewart_examples/stewart_naves.jpg
Normal file
After Width: | Height: | Size: 119 KiB |
BIN
docs/figs/stewart_examples/stewart_pph.jpg
Normal file
After Width: | Height: | Size: 99 KiB |
BIN
docs/figs/stewart_examples/stewart_satra.jpg
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
docs/figs/stewart_examples/stewart_su04.jpg
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
docs/figs/stewart_examples/stewart_tang18.jpg
Normal file
After Width: | Height: | Size: 102 KiB |
BIN
docs/figs/stewart_examples/stewart_ting07.jpg
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
docs/figs/stewart_examples/stewart_torii.jpg
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
docs/figs/stewart_examples/stewart_ulb_pz.jpg
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
docs/figs/stewart_examples/stewart_ulb_vc.jpg
Normal file
After Width: | Height: | Size: 87 KiB |
BIN
docs/figs/stewart_examples/stewart_uqp.jpg
Normal file
After Width: | Height: | Size: 107 KiB |
BIN
docs/figs/stewart_examples/stewart_uw_gsp.jpg
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
docs/figs/stewart_examples/stewart_wang16.jpg
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
docs/figs/stewart_examples/stewart_yang19.jpg
Normal file
After Width: | Height: | Size: 111 KiB |
BIN
docs/figs/stewart_examples/stewart_zhang11.jpg
Normal file
After Width: | Height: | Size: 25 KiB |
1222
docs/flexible-stewart-platform.html
Normal file
@@ -1,239 +1,32 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"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>
|
||||||
<!-- 2020-03-02 lun. 17:57 -->
|
<!-- 2021-01-08 ven. 15:52 -->
|
||||||
<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" />
|
|
||||||
<title>Identification of the Stewart Platform using Simscape</title>
|
<title>Identification of the Stewart Platform using Simscape</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<style type="text/css">
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<!--/*--><![CDATA[/*><!--*/
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
.title { text-align: center;
|
|
||||||
margin-bottom: .2em; }
|
|
||||||
.subtitle { text-align: center;
|
|
||||||
font-size: medium;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-top:0; }
|
|
||||||
.todo { font-family: monospace; color: red; }
|
|
||||||
.done { font-family: monospace; color: green; }
|
|
||||||
.priority { font-family: monospace; color: orange; }
|
|
||||||
.tag { background-color: #eee; font-family: monospace;
|
|
||||||
padding: 2px; font-size: 80%; font-weight: normal; }
|
|
||||||
.timestamp { color: #bebebe; }
|
|
||||||
.timestamp-kwd { color: #5f9ea0; }
|
|
||||||
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
|
|
||||||
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
|
|
||||||
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
|
|
||||||
.underline { text-decoration: underline; }
|
|
||||||
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
|
||||||
p.verse { margin-left: 3%; }
|
|
||||||
pre {
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
box-shadow: 3px 3px 3px #eee;
|
|
||||||
padding: 8pt;
|
|
||||||
font-family: monospace;
|
|
||||||
overflow: auto;
|
|
||||||
margin: 1.2em;
|
|
||||||
}
|
|
||||||
pre.src {
|
|
||||||
position: relative;
|
|
||||||
overflow: visible;
|
|
||||||
padding-top: 1.2em;
|
|
||||||
}
|
|
||||||
pre.src:before {
|
|
||||||
display: none;
|
|
||||||
position: absolute;
|
|
||||||
background-color: white;
|
|
||||||
top: -10px;
|
|
||||||
right: 10px;
|
|
||||||
padding: 3px;
|
|
||||||
border: 1px solid black;
|
|
||||||
}
|
|
||||||
pre.src:hover:before { display: inline;}
|
|
||||||
/* Languages per Org manual */
|
|
||||||
pre.src-asymptote:before { content: 'Asymptote'; }
|
|
||||||
pre.src-awk:before { content: 'Awk'; }
|
|
||||||
pre.src-C:before { content: 'C'; }
|
|
||||||
/* pre.src-C++ doesn't work in CSS */
|
|
||||||
pre.src-clojure:before { content: 'Clojure'; }
|
|
||||||
pre.src-css:before { content: 'CSS'; }
|
|
||||||
pre.src-D:before { content: 'D'; }
|
|
||||||
pre.src-ditaa:before { content: 'ditaa'; }
|
|
||||||
pre.src-dot:before { content: 'Graphviz'; }
|
|
||||||
pre.src-calc:before { content: 'Emacs Calc'; }
|
|
||||||
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
|
||||||
pre.src-fortran:before { content: 'Fortran'; }
|
|
||||||
pre.src-gnuplot:before { content: 'gnuplot'; }
|
|
||||||
pre.src-haskell:before { content: 'Haskell'; }
|
|
||||||
pre.src-hledger:before { content: 'hledger'; }
|
|
||||||
pre.src-java:before { content: 'Java'; }
|
|
||||||
pre.src-js:before { content: 'Javascript'; }
|
|
||||||
pre.src-latex:before { content: 'LaTeX'; }
|
|
||||||
pre.src-ledger:before { content: 'Ledger'; }
|
|
||||||
pre.src-lisp:before { content: 'Lisp'; }
|
|
||||||
pre.src-lilypond:before { content: 'Lilypond'; }
|
|
||||||
pre.src-lua:before { content: 'Lua'; }
|
|
||||||
pre.src-matlab:before { content: 'MATLAB'; }
|
|
||||||
pre.src-mscgen:before { content: 'Mscgen'; }
|
|
||||||
pre.src-ocaml:before { content: 'Objective Caml'; }
|
|
||||||
pre.src-octave:before { content: 'Octave'; }
|
|
||||||
pre.src-org:before { content: 'Org mode'; }
|
|
||||||
pre.src-oz:before { content: 'OZ'; }
|
|
||||||
pre.src-plantuml:before { content: 'Plantuml'; }
|
|
||||||
pre.src-processing:before { content: 'Processing.js'; }
|
|
||||||
pre.src-python:before { content: 'Python'; }
|
|
||||||
pre.src-R:before { content: 'R'; }
|
|
||||||
pre.src-ruby:before { content: 'Ruby'; }
|
|
||||||
pre.src-sass:before { content: 'Sass'; }
|
|
||||||
pre.src-scheme:before { content: 'Scheme'; }
|
|
||||||
pre.src-screen:before { content: 'Gnu Screen'; }
|
|
||||||
pre.src-sed:before { content: 'Sed'; }
|
|
||||||
pre.src-sh:before { content: 'shell'; }
|
|
||||||
pre.src-sql:before { content: 'SQL'; }
|
|
||||||
pre.src-sqlite:before { content: 'SQLite'; }
|
|
||||||
/* additional languages in org.el's org-babel-load-languages alist */
|
|
||||||
pre.src-forth:before { content: 'Forth'; }
|
|
||||||
pre.src-io:before { content: 'IO'; }
|
|
||||||
pre.src-J:before { content: 'J'; }
|
|
||||||
pre.src-makefile:before { content: 'Makefile'; }
|
|
||||||
pre.src-maxima:before { content: 'Maxima'; }
|
|
||||||
pre.src-perl:before { content: 'Perl'; }
|
|
||||||
pre.src-picolisp:before { content: 'Pico Lisp'; }
|
|
||||||
pre.src-scala:before { content: 'Scala'; }
|
|
||||||
pre.src-shell:before { content: 'Shell Script'; }
|
|
||||||
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
|
|
||||||
/* additional language identifiers per "defun org-babel-execute"
|
|
||||||
in ob-*.el */
|
|
||||||
pre.src-cpp:before { content: 'C++'; }
|
|
||||||
pre.src-abc:before { content: 'ABC'; }
|
|
||||||
pre.src-coq:before { content: 'Coq'; }
|
|
||||||
pre.src-groovy:before { content: 'Groovy'; }
|
|
||||||
/* additional language identifiers from org-babel-shell-names in
|
|
||||||
ob-shell.el: ob-shell is the only babel language using a lambda to put
|
|
||||||
the execution function name together. */
|
|
||||||
pre.src-bash:before { content: 'bash'; }
|
|
||||||
pre.src-csh:before { content: 'csh'; }
|
|
||||||
pre.src-ash:before { content: 'ash'; }
|
|
||||||
pre.src-dash:before { content: 'dash'; }
|
|
||||||
pre.src-ksh:before { content: 'ksh'; }
|
|
||||||
pre.src-mksh:before { content: 'mksh'; }
|
|
||||||
pre.src-posh:before { content: 'posh'; }
|
|
||||||
/* Additional Emacs modes also supported by the LaTeX listings package */
|
|
||||||
pre.src-ada:before { content: 'Ada'; }
|
|
||||||
pre.src-asm:before { content: 'Assembler'; }
|
|
||||||
pre.src-caml:before { content: 'Caml'; }
|
|
||||||
pre.src-delphi:before { content: 'Delphi'; }
|
|
||||||
pre.src-html:before { content: 'HTML'; }
|
|
||||||
pre.src-idl:before { content: 'IDL'; }
|
|
||||||
pre.src-mercury:before { content: 'Mercury'; }
|
|
||||||
pre.src-metapost:before { content: 'MetaPost'; }
|
|
||||||
pre.src-modula-2:before { content: 'Modula-2'; }
|
|
||||||
pre.src-pascal:before { content: 'Pascal'; }
|
|
||||||
pre.src-ps:before { content: 'PostScript'; }
|
|
||||||
pre.src-prolog:before { content: 'Prolog'; }
|
|
||||||
pre.src-simula:before { content: 'Simula'; }
|
|
||||||
pre.src-tcl:before { content: 'tcl'; }
|
|
||||||
pre.src-tex:before { content: 'TeX'; }
|
|
||||||
pre.src-plain-tex:before { content: 'Plain TeX'; }
|
|
||||||
pre.src-verilog:before { content: 'Verilog'; }
|
|
||||||
pre.src-vhdl:before { content: 'VHDL'; }
|
|
||||||
pre.src-xml:before { content: 'XML'; }
|
|
||||||
pre.src-nxml:before { content: 'XML'; }
|
|
||||||
/* add a generic configuration mode; LaTeX export needs an additional
|
|
||||||
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
|
|
||||||
pre.src-conf:before { content: 'Configuration File'; }
|
|
||||||
|
|
||||||
table { border-collapse:collapse; }
|
|
||||||
caption.t-above { caption-side: top; }
|
|
||||||
caption.t-bottom { caption-side: bottom; }
|
|
||||||
td, th { vertical-align:top; }
|
|
||||||
th.org-right { text-align: center; }
|
|
||||||
th.org-left { text-align: center; }
|
|
||||||
th.org-center { text-align: center; }
|
|
||||||
td.org-right { text-align: right; }
|
|
||||||
td.org-left { text-align: left; }
|
|
||||||
td.org-center { text-align: center; }
|
|
||||||
dt { font-weight: bold; }
|
|
||||||
.footpara { display: inline; }
|
|
||||||
.footdef { margin-bottom: 1em; }
|
|
||||||
.figure { padding: 1em; }
|
|
||||||
.figure p { text-align: center; }
|
|
||||||
.equation-container {
|
|
||||||
display: table;
|
|
||||||
text-align: center;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.equation {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.equation-label {
|
|
||||||
display: table-cell;
|
|
||||||
text-align: right;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.inlinetask {
|
|
||||||
padding: 10px;
|
|
||||||
border: 2px solid gray;
|
|
||||||
margin: 10px;
|
|
||||||
background: #ffffcc;
|
|
||||||
}
|
|
||||||
#org-div-home-and-up
|
|
||||||
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
|
||||||
textarea { overflow-x: auto; }
|
|
||||||
.linenr { font-size: smaller }
|
|
||||||
.code-highlighted { background-color: #ffff00; }
|
|
||||||
.org-info-js_info-navigation { border-style: none; }
|
|
||||||
#org-info-js_console-label
|
|
||||||
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
|
||||||
.org-info-js_search-highlight
|
|
||||||
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
|
||||||
.org-svg { width: 90%; }
|
|
||||||
/*]]>*/-->
|
|
||||||
</style>
|
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
|
||||||
<script src="./js/jquery.min.js"></script>
|
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
<script src="./js/readtheorg.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
|
|
||||||
<!--/*--><![CDATA[/*><!--*/
|
|
||||||
function CodeHighlightOn(elem, id)
|
|
||||||
{
|
|
||||||
var target = document.getElementById(id);
|
|
||||||
if(null != target) {
|
|
||||||
elem.cacheClassElem = elem.className;
|
|
||||||
elem.cacheClassTarget = target.className;
|
|
||||||
target.className = "code-highlighted";
|
|
||||||
elem.className = "code-highlighted";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function CodeHighlightOff(elem, id)
|
|
||||||
{
|
|
||||||
var target = document.getElementById(id);
|
|
||||||
if(elem.cacheClassElem)
|
|
||||||
elem.className = elem.cacheClassElem;
|
|
||||||
if(elem.cacheClassTarget)
|
|
||||||
target.className = elem.cacheClassTarget;
|
|
||||||
}
|
|
||||||
/*]]>*///-->
|
|
||||||
// @license-end
|
|
||||||
</script>
|
|
||||||
<script>
|
<script>
|
||||||
MathJax = {
|
MathJax = {
|
||||||
tex: { macros: {
|
svg: {
|
||||||
bm: ["\\boldsymbol{#1}",1],
|
scale: 1,
|
||||||
}
|
fontCache: "global"
|
||||||
|
},
|
||||||
|
tex: {
|
||||||
|
tags: "ams",
|
||||||
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript"
|
<script id="MathJax-script" async
|
||||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
@@ -246,43 +39,43 @@
|
|||||||
<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="#orgcb2f4c2">1. Modal Analysis of the Stewart Platform</a>
|
<li><a href="#orge8b6206">1. Modal Analysis of the Stewart Platform</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org66d09e9">1.1. Initialize the Stewart Platform</a></li>
|
<li><a href="#org40f9c57">1.1. Initialize the Stewart Platform</a></li>
|
||||||
<li><a href="#org8b1c587">1.2. Identification</a></li>
|
<li><a href="#orgd9529ee">1.2. Identification</a></li>
|
||||||
<li><a href="#orge68adea">1.3. Coordinate transformation</a></li>
|
<li><a href="#orgbdba4a6">1.3. Coordinate transformation</a></li>
|
||||||
<li><a href="#org4973ae1">1.4. Analysis</a></li>
|
<li><a href="#org11e3698">1.4. Analysis</a></li>
|
||||||
<li><a href="#orge7b97c8">1.5. Visualizing the modes</a></li>
|
<li><a href="#org1db5fc4">1.5. Visualizing the modes</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org2891722">2. Transmissibility Analysis</a>
|
<li><a href="#orgfeed9a3">2. Transmissibility Analysis</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org55d2544">2.1. Initialize the Stewart platform</a></li>
|
<li><a href="#org5ba3096">2.1. Initialize the Stewart platform</a></li>
|
||||||
<li><a href="#org5338f20">2.2. Transmissibility</a></li>
|
<li><a href="#org279dcc8">2.2. Transmissibility</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgc94edbd">3. Compliance Analysis</a>
|
<li><a href="#org3ad92e9">3. Compliance Analysis</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org499fd6a">3.1. Initialize the Stewart platform</a></li>
|
<li><a href="#orgc957431">3.1. Initialize the Stewart platform</a></li>
|
||||||
<li><a href="#org1177029">3.2. Compliance</a></li>
|
<li><a href="#org26cb46a">3.2. Compliance</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org68ca336">4. Functions</a>
|
<li><a href="#org51e266f">4. Functions</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org487c4d4">4.1. Compute the Transmissibility</a>
|
<li><a href="#org25ca725">4.1. Compute the Transmissibility</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org3cf1d13">Function description</a></li>
|
<li><a href="#orgafb57d0">Function description</a></li>
|
||||||
<li><a href="#org726b57d">Optional Parameters</a></li>
|
<li><a href="#orga00af61">Optional Parameters</a></li>
|
||||||
<li><a href="#org4629501">Identification of the Transmissibility Matrix</a></li>
|
<li><a href="#org17a8811">Identification of the Transmissibility Matrix</a></li>
|
||||||
<li><a href="#org1019eaf">Computation of the Frobenius norm</a></li>
|
<li><a href="#orgbc9a383">Computation of the Frobenius norm</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org50e35a6">4.2. Compute the Compliance</a>
|
<li><a href="#orgb6e05b3">4.2. Compute the Compliance</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgf1e6c32">Function description</a></li>
|
<li><a href="#org210c0ca">Function description</a></li>
|
||||||
<li><a href="#orgda14a2f">Optional Parameters</a></li>
|
<li><a href="#org24feeb1">Optional Parameters</a></li>
|
||||||
<li><a href="#orgef06b63">Identification of the Compliance Matrix</a></li>
|
<li><a href="#org2c35042">Identification of the Compliance Matrix</a></li>
|
||||||
<li><a href="#orgc21ec39">Computation of the Frobenius norm</a></li>
|
<li><a href="#orgb002200">Computation of the Frobenius norm</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -296,20 +89,20 @@ In this document, we discuss the various methods to identify the behavior of the
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li><a href="#org7981e88">1</a></li>
|
<li><a href="#orgd142bb4">1</a></li>
|
||||||
<li><a href="#orga989615">2</a></li>
|
<li><a href="#org5213401">2</a></li>
|
||||||
<li><a href="#org4579374">3</a></li>
|
<li><a href="#org39baa25">3</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div id="outline-container-orgcb2f4c2" class="outline-2">
|
<div id="outline-container-orge8b6206" class="outline-2">
|
||||||
<h2 id="orgcb2f4c2"><span class="section-number-2">1</span> Modal Analysis of the Stewart Platform</h2>
|
<h2 id="orge8b6206"><span class="section-number-2">1</span> Modal Analysis of the Stewart Platform</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="org7981e88"></a>
|
<a id="orgd142bb4"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org66d09e9" class="outline-3">
|
<div id="outline-container-org40f9c57" class="outline-3">
|
||||||
<h3 id="org66d09e9"><span class="section-number-3">1.1</span> Initialize the Stewart Platform</h3>
|
<h3 id="org40f9c57"><span class="section-number-3">1.1</span> Initialize the Stewart Platform</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
||||||
@@ -335,8 +128,8 @@ controller = initializeController(<span class="org-string">'type'</span>, <span
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8b1c587" class="outline-3">
|
<div id="outline-container-orgd9529ee" class="outline-3">
|
||||||
<h3 id="org8b1c587"><span class="section-number-3">1.2</span> Identification</h3>
|
<h3 id="orgd9529ee"><span class="section-number-3">1.2</span> Identification</h3>
|
||||||
<div class="outline-text-3" id="text-1-2">
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||||||
@@ -396,8 +189,8 @@ And indeed, we obtain 12 states.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge68adea" class="outline-3">
|
<div id="outline-container-orgbdba4a6" class="outline-3">
|
||||||
<h3 id="orge68adea"><span class="section-number-3">1.3</span> Coordinate transformation</h3>
|
<h3 id="orgbdba4a6"><span class="section-number-3">1.3</span> Coordinate transformation</h3>
|
||||||
<div class="outline-text-3" id="text-1-3">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
<p>
|
<p>
|
||||||
We can perform the following transformation using the <code>ss2ss</code> command.
|
We can perform the following transformation using the <code>ss2ss</code> command.
|
||||||
@@ -432,8 +225,8 @@ Gt = ss(At, Bt, Ct, Dt);
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4973ae1" class="outline-3">
|
<div id="outline-container-org11e3698" class="outline-3">
|
||||||
<h3 id="org4973ae1"><span class="section-number-3">1.4</span> Analysis</h3>
|
<h3 id="org11e3698"><span class="section-number-3">1.4</span> Analysis</h3>
|
||||||
<div class="outline-text-3" id="text-1-4">
|
<div class="outline-text-3" id="text-1-4">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">[V,D] = eig(Gt.A);
|
<pre class="src src-matlab">[V,D] = eig(Gt.A);
|
||||||
@@ -498,8 +291,8 @@ Gt = ss(At, Bt, Ct, Dt);
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge7b97c8" class="outline-3">
|
<div id="outline-container-org1db5fc4" class="outline-3">
|
||||||
<h3 id="orge7b97c8"><span class="section-number-3">1.5</span> Visualizing the modes</h3>
|
<h3 id="org1db5fc4"><span class="section-number-3">1.5</span> Visualizing the modes</h3>
|
||||||
<div class="outline-text-3" id="text-1-5">
|
<div class="outline-text-3" id="text-1-5">
|
||||||
<p>
|
<p>
|
||||||
To visualize the i’th mode, we may excite the system using the inputs \(U_i\) such that \(B U_i\) is co-linear to \(\xi_i\) (the mode we want to excite).
|
To visualize the i’th mode, we may excite the system using the inputs \(U_i\) such that \(B U_i\) is co-linear to \(\xi_i\) (the mode we want to excite).
|
||||||
@@ -579,21 +372,21 @@ Save the movie of the mode shape.
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgb15855a" class="figure">
|
<div id="orgd5bd1cd" class="figure">
|
||||||
<p><img src="figs/mode1.gif" alt="mode1.gif" />
|
<p><img src="figs/mode1.gif" alt="mode1.gif" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Identified mode - 1</p>
|
<p><span class="figure-number">Figure 1: </span>Identified mode - 1</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org1816e59" class="figure">
|
<div id="org5c59f9a" class="figure">
|
||||||
<p><img src="figs/mode3.gif" alt="mode3.gif" />
|
<p><img src="figs/mode3.gif" alt="mode3.gif" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 2: </span>Identified mode - 3</p>
|
<p><span class="figure-number">Figure 2: </span>Identified mode - 3</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org01c8dca" class="figure">
|
<div id="org0f2e8c4" class="figure">
|
||||||
<p><img src="figs/mode5.gif" alt="mode5.gif" />
|
<p><img src="figs/mode5.gif" alt="mode5.gif" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 3: </span>Identified mode - 5</p>
|
<p><span class="figure-number">Figure 3: </span>Identified mode - 5</p>
|
||||||
@@ -602,15 +395,15 @@ Save the movie of the mode shape.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org2891722" class="outline-2">
|
<div id="outline-container-orgfeed9a3" class="outline-2">
|
||||||
<h2 id="org2891722"><span class="section-number-2">2</span> Transmissibility Analysis</h2>
|
<h2 id="orgfeed9a3"><span class="section-number-2">2</span> Transmissibility Analysis</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="orga989615"></a>
|
<a id="org5213401"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org55d2544" class="outline-3">
|
<div id="outline-container-org5ba3096" class="outline-3">
|
||||||
<h3 id="org55d2544"><span class="section-number-3">2.1</span> Initialize the Stewart platform</h3>
|
<h3 id="org5ba3096"><span class="section-number-3">2.1</span> Initialize the Stewart platform</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
||||||
@@ -639,8 +432,8 @@ controller = initializeController(<span class="org-string">'type'</span>, <span
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org5338f20" class="outline-3">
|
<div id="outline-container-org279dcc8" class="outline-3">
|
||||||
<h3 id="org5338f20"><span class="section-number-3">2.2</span> Transmissibility</h3>
|
<h3 id="org279dcc8"><span class="section-number-3">2.2</span> Transmissibility</h3>
|
||||||
<div class="outline-text-3" id="text-2-2">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||||||
@@ -686,7 +479,7 @@ T.OutputName = {<span class="org-string">'Edx'</span>, <span class="org-string">
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
From <a class='org-ref-reference' href="#preumont07_six_axis_singl_stage_activ">preumont07_six_axis_singl_stage_activ</a>, one can use the Frobenius norm of the transmissibility matrix to obtain a scalar indicator of the transmissibility performance of the system:
|
From (<a href="#citeproc_bib_item_1">Preumont et al. 2007</a>), one can use the Frobenius norm of the transmissibility matrix to obtain a scalar indicator of the transmissibility performance of the system:
|
||||||
</p>
|
</p>
|
||||||
\begin{align*}
|
\begin{align*}
|
||||||
\| \bm{T}(\omega) \| &= \sqrt{\text{Trace}[\bm{T}(\omega) \bm{T}(\omega)^H]}\\
|
\| \bm{T}(\omega) \| &= \sqrt{\text{Trace}[\bm{T}(\omega) \bm{T}(\omega)^H]}\\
|
||||||
@@ -724,15 +517,15 @@ plot(freqs, Gamma)
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc94edbd" class="outline-2">
|
<div id="outline-container-org3ad92e9" class="outline-2">
|
||||||
<h2 id="orgc94edbd"><span class="section-number-2">3</span> Compliance Analysis</h2>
|
<h2 id="org3ad92e9"><span class="section-number-2">3</span> Compliance Analysis</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
<a id="org4579374"></a>
|
<a id="org39baa25"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org499fd6a" class="outline-3">
|
<div id="outline-container-orgc957431" class="outline-3">
|
||||||
<h3 id="org499fd6a"><span class="section-number-3">3.1</span> Initialize the Stewart platform</h3>
|
<h3 id="orgc957431"><span class="section-number-3">3.1</span> Initialize the Stewart platform</h3>
|
||||||
<div class="outline-text-3" id="text-3-1">
|
<div class="outline-text-3" id="text-3-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
||||||
@@ -761,8 +554,8 @@ controller = initializeController(<span class="org-string">'type'</span>, <span
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1177029" class="outline-3">
|
<div id="outline-container-org26cb46a" class="outline-3">
|
||||||
<h3 id="org1177029"><span class="section-number-3">3.2</span> Compliance</h3>
|
<h3 id="org26cb46a"><span class="section-number-3">3.2</span> Compliance</h3>
|
||||||
<div class="outline-text-3" id="text-3-2">
|
<div class="outline-text-3" id="text-3-2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||||||
@@ -832,21 +625,21 @@ plot(freqs, C_norm)
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org68ca336" class="outline-2">
|
<div id="outline-container-org51e266f" class="outline-2">
|
||||||
<h2 id="org68ca336"><span class="section-number-2">4</span> Functions</h2>
|
<h2 id="org51e266f"><span class="section-number-2">4</span> Functions</h2>
|
||||||
<div class="outline-text-2" id="text-4">
|
<div class="outline-text-2" id="text-4">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org487c4d4" class="outline-3">
|
<div id="outline-container-org25ca725" class="outline-3">
|
||||||
<h3 id="org487c4d4"><span class="section-number-3">4.1</span> Compute the Transmissibility</h3>
|
<h3 id="org25ca725"><span class="section-number-3">4.1</span> Compute the Transmissibility</h3>
|
||||||
<div class="outline-text-3" id="text-4-1">
|
<div class="outline-text-3" id="text-4-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgbca579c"></a>
|
<a id="org78f2be2"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3cf1d13" class="outline-4">
|
<div id="outline-container-orgafb57d0" class="outline-4">
|
||||||
<h4 id="org3cf1d13">Function description</h4>
|
<h4 id="orgafb57d0">Function description</h4>
|
||||||
<div class="outline-text-4" id="text-org3cf1d13">
|
<div class="outline-text-4" id="text-orgafb57d0">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[T, T_norm, freqs]</span> = <span class="org-function-name">computeTransmissibility</span>(<span class="org-variable-name">args</span>)
|
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[T, T_norm, freqs]</span> = <span class="org-function-name">computeTransmissibility</span>(<span class="org-variable-name">args</span>)
|
||||||
<span class="org-comment">% computeTransmissibility -</span>
|
<span class="org-comment">% computeTransmissibility -</span>
|
||||||
@@ -867,13 +660,13 @@ plot(freqs, C_norm)
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org726b57d" class="outline-4">
|
<div id="outline-container-orga00af61" class="outline-4">
|
||||||
<h4 id="org726b57d">Optional Parameters</h4>
|
<h4 id="orga00af61">Optional Parameters</h4>
|
||||||
<div class="outline-text-4" id="text-org726b57d">
|
<div class="outline-text-4" id="text-orga00af61">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab"><span class="org-keyword">arguments</span>
|
||||||
args.plots logical {mustBeNumericOrLogical} = <span class="org-constant">false</span>
|
<span class="org-variable-name">args</span>.plots logical {mustBeNumericOrLogical} = <span class="org-constant">false</span>
|
||||||
args.freqs double {mustBeNumeric, mustBeNonnegative} = logspace(1,4,1000)
|
<span class="org-variable-name">args</span>.freqs double {mustBeNumeric, mustBeNonnegative} = logspace(1,4,1000)
|
||||||
<span class="org-keyword">end</span>
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
@@ -885,9 +678,9 @@ plot(freqs, C_norm)
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4629501" class="outline-4">
|
<div id="outline-container-org17a8811" class="outline-4">
|
||||||
<h4 id="org4629501">Identification of the Transmissibility Matrix</h4>
|
<h4 id="org17a8811">Identification of the Transmissibility Matrix</h4>
|
||||||
<div class="outline-text-4" id="text-org4629501">
|
<div class="outline-text-4" id="text-org17a8811">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||||||
options = linearizeOptions;
|
options = linearizeOptions;
|
||||||
@@ -946,9 +739,9 @@ If wanted, the 6x6 transmissibility matrix is plotted.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1019eaf" class="outline-4">
|
<div id="outline-container-orgbc9a383" class="outline-4">
|
||||||
<h4 id="org1019eaf">Computation of the Frobenius norm</h4>
|
<h4 id="orgbc9a383">Computation of the Frobenius norm</h4>
|
||||||
<div class="outline-text-4" id="text-org1019eaf">
|
<div class="outline-text-4" id="text-orgbc9a383">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">T_norm = zeros(length(freqs), 1);
|
<pre class="src src-matlab">T_norm = zeros(length(freqs), 1);
|
||||||
|
|
||||||
@@ -977,17 +770,17 @@ If wanted, the 6x6 transmissibility matrix is plotted.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org50e35a6" class="outline-3">
|
<div id="outline-container-orgb6e05b3" class="outline-3">
|
||||||
<h3 id="org50e35a6"><span class="section-number-3">4.2</span> Compute the Compliance</h3>
|
<h3 id="orgb6e05b3"><span class="section-number-3">4.2</span> Compute the Compliance</h3>
|
||||||
<div class="outline-text-3" id="text-4-2">
|
<div class="outline-text-3" id="text-4-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="org0a73574"></a>
|
<a id="org13d7e8a"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf1e6c32" class="outline-4">
|
<div id="outline-container-org210c0ca" class="outline-4">
|
||||||
<h4 id="orgf1e6c32">Function description</h4>
|
<h4 id="org210c0ca">Function description</h4>
|
||||||
<div class="outline-text-4" id="text-orgf1e6c32">
|
<div class="outline-text-4" id="text-org210c0ca">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[C, C_norm, freqs]</span> = <span class="org-function-name">computeCompliance</span>(<span class="org-variable-name">args</span>)
|
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[C, C_norm, freqs]</span> = <span class="org-function-name">computeCompliance</span>(<span class="org-variable-name">args</span>)
|
||||||
<span class="org-comment">% computeCompliance -</span>
|
<span class="org-comment">% computeCompliance -</span>
|
||||||
@@ -1008,13 +801,13 @@ If wanted, the 6x6 transmissibility matrix is plotted.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgda14a2f" class="outline-4">
|
<div id="outline-container-org24feeb1" class="outline-4">
|
||||||
<h4 id="orgda14a2f">Optional Parameters</h4>
|
<h4 id="org24feeb1">Optional Parameters</h4>
|
||||||
<div class="outline-text-4" id="text-orgda14a2f">
|
<div class="outline-text-4" id="text-org24feeb1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab"><span class="org-keyword">arguments</span>
|
||||||
args.plots logical {mustBeNumericOrLogical} = <span class="org-constant">false</span>
|
<span class="org-variable-name">args</span>.plots logical {mustBeNumericOrLogical} = <span class="org-constant">false</span>
|
||||||
args.freqs double {mustBeNumeric, mustBeNonnegative} = logspace(1,4,1000)
|
<span class="org-variable-name">args</span>.freqs double {mustBeNumeric, mustBeNonnegative} = logspace(1,4,1000)
|
||||||
<span class="org-keyword">end</span>
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
@@ -1026,9 +819,9 @@ If wanted, the 6x6 transmissibility matrix is plotted.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgef06b63" class="outline-4">
|
<div id="outline-container-org2c35042" class="outline-4">
|
||||||
<h4 id="orgef06b63">Identification of the Compliance Matrix</h4>
|
<h4 id="org2c35042">Identification of the Compliance Matrix</h4>
|
||||||
<div class="outline-text-4" id="text-orgef06b63">
|
<div class="outline-text-4" id="text-org2c35042">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||||||
options = linearizeOptions;
|
options = linearizeOptions;
|
||||||
@@ -1086,9 +879,9 @@ If wanted, the 6x6 transmissibility matrix is plotted.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc21ec39" class="outline-4">
|
<div id="outline-container-orgb002200" class="outline-4">
|
||||||
<h4 id="orgc21ec39">Computation of the Frobenius norm</h4>
|
<h4 id="orgb002200">Computation of the Frobenius norm</h4>
|
||||||
<div class="outline-text-4" id="text-orgc21ec39">
|
<div class="outline-text-4" id="text-orgb002200">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">freqs = args.freqs;
|
<pre class="src src-matlab">freqs = args.freqs;
|
||||||
|
|
||||||
@@ -1110,6 +903,11 @@ C_norm = zeros(length(freqs), 1);
|
|||||||
<span class="org-keyword">end</span>
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><h2 class='citeproc-org-bib-h2'>Bibliography</h2>
|
||||||
|
<div class="csl-bib-body">
|
||||||
|
<div class="csl-entry"><a name="citeproc_bib_item_1"></a>Preumont, A., M. Horodinca, I. Romanescu, B. de Marneffe, M. Avraam, A. Deraemaeker, F. Bossens, and A. Abu Hanieh. 2007. “A Six-Axis Single-Stage Active Vibration Isolator Based on Stewart Platform.” <i>Journal of Sound and Vibration</i> 300 (3-5):644–61. <a href="https://doi.org/10.1016/j.jsv.2006.07.050">https://doi.org/10.1016/j.jsv.2006.07.050</a>.</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1117,7 +915,7 @@ C_norm = zeros(length(freqs), 1);
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
<p class="date">Created: 2020-03-02 lun. 17:57</p>
|
<p class="date">Created: 2021-01-08 ven. 15:52</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
280
docs/index.html
@@ -1,263 +1,47 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"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>
|
||||||
<!-- 2020-03-13 ven. 10:34 -->
|
<!-- 2021-01-08 ven. 15:30 -->
|
||||||
<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" />
|
|
||||||
<title>Stewart Platforms</title>
|
<title>Stewart Platforms</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<style type="text/css">
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<!--/*--><![CDATA[/*><!--*/
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
.title { text-align: center;
|
|
||||||
margin-bottom: .2em; }
|
|
||||||
.subtitle { text-align: center;
|
|
||||||
font-size: medium;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-top:0; }
|
|
||||||
.todo { font-family: monospace; color: red; }
|
|
||||||
.done { font-family: monospace; color: green; }
|
|
||||||
.priority { font-family: monospace; color: orange; }
|
|
||||||
.tag { background-color: #eee; font-family: monospace;
|
|
||||||
padding: 2px; font-size: 80%; font-weight: normal; }
|
|
||||||
.timestamp { color: #bebebe; }
|
|
||||||
.timestamp-kwd { color: #5f9ea0; }
|
|
||||||
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
|
|
||||||
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
|
|
||||||
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
|
|
||||||
.underline { text-decoration: underline; }
|
|
||||||
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
|
||||||
p.verse { margin-left: 3%; }
|
|
||||||
pre {
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
box-shadow: 3px 3px 3px #eee;
|
|
||||||
padding: 8pt;
|
|
||||||
font-family: monospace;
|
|
||||||
overflow: auto;
|
|
||||||
margin: 1.2em;
|
|
||||||
}
|
|
||||||
pre.src {
|
|
||||||
position: relative;
|
|
||||||
overflow: visible;
|
|
||||||
padding-top: 1.2em;
|
|
||||||
}
|
|
||||||
pre.src:before {
|
|
||||||
display: none;
|
|
||||||
position: absolute;
|
|
||||||
background-color: white;
|
|
||||||
top: -10px;
|
|
||||||
right: 10px;
|
|
||||||
padding: 3px;
|
|
||||||
border: 1px solid black;
|
|
||||||
}
|
|
||||||
pre.src:hover:before { display: inline;}
|
|
||||||
/* Languages per Org manual */
|
|
||||||
pre.src-asymptote:before { content: 'Asymptote'; }
|
|
||||||
pre.src-awk:before { content: 'Awk'; }
|
|
||||||
pre.src-C:before { content: 'C'; }
|
|
||||||
/* pre.src-C++ doesn't work in CSS */
|
|
||||||
pre.src-clojure:before { content: 'Clojure'; }
|
|
||||||
pre.src-css:before { content: 'CSS'; }
|
|
||||||
pre.src-D:before { content: 'D'; }
|
|
||||||
pre.src-ditaa:before { content: 'ditaa'; }
|
|
||||||
pre.src-dot:before { content: 'Graphviz'; }
|
|
||||||
pre.src-calc:before { content: 'Emacs Calc'; }
|
|
||||||
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
|
||||||
pre.src-fortran:before { content: 'Fortran'; }
|
|
||||||
pre.src-gnuplot:before { content: 'gnuplot'; }
|
|
||||||
pre.src-haskell:before { content: 'Haskell'; }
|
|
||||||
pre.src-hledger:before { content: 'hledger'; }
|
|
||||||
pre.src-java:before { content: 'Java'; }
|
|
||||||
pre.src-js:before { content: 'Javascript'; }
|
|
||||||
pre.src-latex:before { content: 'LaTeX'; }
|
|
||||||
pre.src-ledger:before { content: 'Ledger'; }
|
|
||||||
pre.src-lisp:before { content: 'Lisp'; }
|
|
||||||
pre.src-lilypond:before { content: 'Lilypond'; }
|
|
||||||
pre.src-lua:before { content: 'Lua'; }
|
|
||||||
pre.src-matlab:before { content: 'MATLAB'; }
|
|
||||||
pre.src-mscgen:before { content: 'Mscgen'; }
|
|
||||||
pre.src-ocaml:before { content: 'Objective Caml'; }
|
|
||||||
pre.src-octave:before { content: 'Octave'; }
|
|
||||||
pre.src-org:before { content: 'Org mode'; }
|
|
||||||
pre.src-oz:before { content: 'OZ'; }
|
|
||||||
pre.src-plantuml:before { content: 'Plantuml'; }
|
|
||||||
pre.src-processing:before { content: 'Processing.js'; }
|
|
||||||
pre.src-python:before { content: 'Python'; }
|
|
||||||
pre.src-R:before { content: 'R'; }
|
|
||||||
pre.src-ruby:before { content: 'Ruby'; }
|
|
||||||
pre.src-sass:before { content: 'Sass'; }
|
|
||||||
pre.src-scheme:before { content: 'Scheme'; }
|
|
||||||
pre.src-screen:before { content: 'Gnu Screen'; }
|
|
||||||
pre.src-sed:before { content: 'Sed'; }
|
|
||||||
pre.src-sh:before { content: 'shell'; }
|
|
||||||
pre.src-sql:before { content: 'SQL'; }
|
|
||||||
pre.src-sqlite:before { content: 'SQLite'; }
|
|
||||||
/* additional languages in org.el's org-babel-load-languages alist */
|
|
||||||
pre.src-forth:before { content: 'Forth'; }
|
|
||||||
pre.src-io:before { content: 'IO'; }
|
|
||||||
pre.src-J:before { content: 'J'; }
|
|
||||||
pre.src-makefile:before { content: 'Makefile'; }
|
|
||||||
pre.src-maxima:before { content: 'Maxima'; }
|
|
||||||
pre.src-perl:before { content: 'Perl'; }
|
|
||||||
pre.src-picolisp:before { content: 'Pico Lisp'; }
|
|
||||||
pre.src-scala:before { content: 'Scala'; }
|
|
||||||
pre.src-shell:before { content: 'Shell Script'; }
|
|
||||||
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
|
|
||||||
/* additional language identifiers per "defun org-babel-execute"
|
|
||||||
in ob-*.el */
|
|
||||||
pre.src-cpp:before { content: 'C++'; }
|
|
||||||
pre.src-abc:before { content: 'ABC'; }
|
|
||||||
pre.src-coq:before { content: 'Coq'; }
|
|
||||||
pre.src-groovy:before { content: 'Groovy'; }
|
|
||||||
/* additional language identifiers from org-babel-shell-names in
|
|
||||||
ob-shell.el: ob-shell is the only babel language using a lambda to put
|
|
||||||
the execution function name together. */
|
|
||||||
pre.src-bash:before { content: 'bash'; }
|
|
||||||
pre.src-csh:before { content: 'csh'; }
|
|
||||||
pre.src-ash:before { content: 'ash'; }
|
|
||||||
pre.src-dash:before { content: 'dash'; }
|
|
||||||
pre.src-ksh:before { content: 'ksh'; }
|
|
||||||
pre.src-mksh:before { content: 'mksh'; }
|
|
||||||
pre.src-posh:before { content: 'posh'; }
|
|
||||||
/* Additional Emacs modes also supported by the LaTeX listings package */
|
|
||||||
pre.src-ada:before { content: 'Ada'; }
|
|
||||||
pre.src-asm:before { content: 'Assembler'; }
|
|
||||||
pre.src-caml:before { content: 'Caml'; }
|
|
||||||
pre.src-delphi:before { content: 'Delphi'; }
|
|
||||||
pre.src-html:before { content: 'HTML'; }
|
|
||||||
pre.src-idl:before { content: 'IDL'; }
|
|
||||||
pre.src-mercury:before { content: 'Mercury'; }
|
|
||||||
pre.src-metapost:before { content: 'MetaPost'; }
|
|
||||||
pre.src-modula-2:before { content: 'Modula-2'; }
|
|
||||||
pre.src-pascal:before { content: 'Pascal'; }
|
|
||||||
pre.src-ps:before { content: 'PostScript'; }
|
|
||||||
pre.src-prolog:before { content: 'Prolog'; }
|
|
||||||
pre.src-simula:before { content: 'Simula'; }
|
|
||||||
pre.src-tcl:before { content: 'tcl'; }
|
|
||||||
pre.src-tex:before { content: 'TeX'; }
|
|
||||||
pre.src-plain-tex:before { content: 'Plain TeX'; }
|
|
||||||
pre.src-verilog:before { content: 'Verilog'; }
|
|
||||||
pre.src-vhdl:before { content: 'VHDL'; }
|
|
||||||
pre.src-xml:before { content: 'XML'; }
|
|
||||||
pre.src-nxml:before { content: 'XML'; }
|
|
||||||
/* add a generic configuration mode; LaTeX export needs an additional
|
|
||||||
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
|
|
||||||
pre.src-conf:before { content: 'Configuration File'; }
|
|
||||||
|
|
||||||
table { border-collapse:collapse; }
|
|
||||||
caption.t-above { caption-side: top; }
|
|
||||||
caption.t-bottom { caption-side: bottom; }
|
|
||||||
td, th { vertical-align:top; }
|
|
||||||
th.org-right { text-align: center; }
|
|
||||||
th.org-left { text-align: center; }
|
|
||||||
th.org-center { text-align: center; }
|
|
||||||
td.org-right { text-align: right; }
|
|
||||||
td.org-left { text-align: left; }
|
|
||||||
td.org-center { text-align: center; }
|
|
||||||
dt { font-weight: bold; }
|
|
||||||
.footpara { display: inline; }
|
|
||||||
.footdef { margin-bottom: 1em; }
|
|
||||||
.figure { padding: 1em; }
|
|
||||||
.figure p { text-align: center; }
|
|
||||||
.equation-container {
|
|
||||||
display: table;
|
|
||||||
text-align: center;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.equation {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.equation-label {
|
|
||||||
display: table-cell;
|
|
||||||
text-align: right;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.inlinetask {
|
|
||||||
padding: 10px;
|
|
||||||
border: 2px solid gray;
|
|
||||||
margin: 10px;
|
|
||||||
background: #ffffcc;
|
|
||||||
}
|
|
||||||
#org-div-home-and-up
|
|
||||||
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
|
||||||
textarea { overflow-x: auto; }
|
|
||||||
.linenr { font-size: smaller }
|
|
||||||
.code-highlighted { background-color: #ffff00; }
|
|
||||||
.org-info-js_info-navigation { border-style: none; }
|
|
||||||
#org-info-js_console-label
|
|
||||||
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
|
||||||
.org-info-js_search-highlight
|
|
||||||
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
|
||||||
.org-svg { width: 90%; }
|
|
||||||
/*]]>*/-->
|
|
||||||
</style>
|
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
|
||||||
<script src="./js/jquery.min.js"></script>
|
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
<script src="./js/readtheorg.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
|
|
||||||
<!--/*--><![CDATA[/*><!--*/
|
|
||||||
function CodeHighlightOn(elem, id)
|
|
||||||
{
|
|
||||||
var target = document.getElementById(id);
|
|
||||||
if(null != target) {
|
|
||||||
elem.cacheClassElem = elem.className;
|
|
||||||
elem.cacheClassTarget = target.className;
|
|
||||||
target.className = "code-highlighted";
|
|
||||||
elem.className = "code-highlighted";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function CodeHighlightOff(elem, id)
|
|
||||||
{
|
|
||||||
var target = document.getElementById(id);
|
|
||||||
if(elem.cacheClassElem)
|
|
||||||
elem.className = elem.cacheClassElem;
|
|
||||||
if(elem.cacheClassTarget)
|
|
||||||
target.className = elem.cacheClassTarget;
|
|
||||||
}
|
|
||||||
/*]]>*///-->
|
|
||||||
// @license-end
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="index.html"> UP </a>
|
<a accesskey="h" href="https://research.tdehaeze.xyz/"> UP </a>
|
||||||
|
|
|
|
||||||
<a accesskey="H" href="index.html"> HOME </a>
|
<a accesskey="H" href="https://research.tdehaeze.xyz/"> HOME </a>
|
||||||
</div><div id="content">
|
</div><div id="content">
|
||||||
<h1 class="title">Stewart Platforms</h1>
|
<h1 class="title">Stewart Platforms</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<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="#orgff0bfd7">1. Simulink Project (link)</a></li>
|
<li><a href="#orgad01eeb">1. Simulink Project (link)</a></li>
|
||||||
<li><a href="#org38b9089">2. Stewart Platform Architecture Definition (link)</a></li>
|
<li><a href="#orgf0936f9">2. Stewart Platform Architecture Definition (link)</a></li>
|
||||||
<li><a href="#orgf1c7b3b">3. Simscape Model of the Stewart Platform (link)</a></li>
|
<li><a href="#org4bef8ba">3. Simscape Model of the Stewart Platform (link)</a></li>
|
||||||
<li><a href="#org369c8bb">4. Kinematic Analysis (link)</a></li>
|
<li><a href="#orgfd134cc">4. Kinematic Analysis (link)</a></li>
|
||||||
<li><a href="#org2e3169e">5. Identification of the Stewart Dynamics (link)</a></li>
|
<li><a href="#org2e5eede">5. Identification of the Stewart Dynamics (link)</a></li>
|
||||||
<li><a href="#org0fdb910">6. Control</a></li>
|
<li><a href="#orgb272d52">6. Control</a></li>
|
||||||
<li><a href="#org1f468b1">7. Cubic Configuration (link)</a></li>
|
<li><a href="#org7c7008e">7. Cubic Configuration (link)</a></li>
|
||||||
<li><a href="#orga2bd0e9">8. Bibliography (link)</a></li>
|
<li><a href="#org1f2f2c6">8. Bibliography (link)</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The goal of this project is to provide a Matlab/Simscape Toolbox to study Stewart platforms.
|
The goal of this project is to provide a Matlab/Simscape Toolbox to study Stewart platforms.
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
The project is divided into several section listed below.
|
The project is divided into several section listed below.
|
||||||
|
The git repository of the project is accessible <a href="https://git.tdehaeze.xyz/tdehaeze/stewart-simscape">here</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="outline-container-orgff0bfd7" class="outline-2">
|
<div id="outline-container-orgad01eeb" class="outline-2">
|
||||||
<h2 id="orgff0bfd7"><span class="section-number-2">1</span> Simulink Project (<a href="simulink-project.html">link</a>)</h2>
|
<h2 id="orgad01eeb"><span class="section-number-2">1</span> Simulink Project (<a href="simulink-project.html">link</a>)</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
The project is managed with a <b>Simulink Project</b>.
|
The project is managed with a <b>Simulink Project</b>.
|
||||||
@@ -266,11 +50,11 @@ Such project is briefly presented <a href="simulink-project.html">here</a>.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org38b9089" class="outline-2">
|
<div id="outline-container-orgf0936f9" class="outline-2">
|
||||||
<h2 id="org38b9089"><span class="section-number-2">2</span> Stewart Platform Architecture Definition (<a href="stewart-architecture.html">link</a>)</h2>
|
<h2 id="orgf0936f9"><span class="section-number-2">2</span> Stewart Platform Architecture Definition (<a href="stewart-architecture.html">link</a>)</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
The way the Stewart Platform is defined <a href="stewart-architecture.html">here</a>.
|
The way the Stewart Platform is defined is explained <a href="stewart-architecture.html">here</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@@ -292,8 +76,8 @@ Other parameters are also defined such as:
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf1c7b3b" class="outline-2">
|
<div id="outline-container-org4bef8ba" class="outline-2">
|
||||||
<h2 id="orgf1c7b3b"><span class="section-number-2">3</span> Simscape Model of the Stewart Platform (<a href="simscape-model.html">link</a>)</h2>
|
<h2 id="org4bef8ba"><span class="section-number-2">3</span> Simscape Model of the Stewart Platform (<a href="simscape-model.html">link</a>)</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
The Stewart Platform is then modeled using <a href="https://www.mathworks.com/products/simscape.html">Simscape</a>.
|
The Stewart Platform is then modeled using <a href="https://www.mathworks.com/products/simscape.html">Simscape</a>.
|
||||||
@@ -305,8 +89,8 @@ The way to model is build and works is explained <a href="simscape-model.html">h
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org369c8bb" class="outline-2">
|
<div id="outline-container-orgfd134cc" class="outline-2">
|
||||||
<h2 id="org369c8bb"><span class="section-number-2">4</span> Kinematic Analysis (<a href="kinematic-study.html">link</a>)</h2>
|
<h2 id="orgfd134cc"><span class="section-number-2">4</span> Kinematic Analysis (<a href="kinematic-study.html">link</a>)</h2>
|
||||||
<div class="outline-text-2" id="text-4">
|
<div class="outline-text-2" id="text-4">
|
||||||
<p>
|
<p>
|
||||||
From the defined geometry of the Stewart platform, we can perform static analysis such as:
|
From the defined geometry of the Stewart platform, we can perform static analysis such as:
|
||||||
@@ -326,8 +110,8 @@ All these analysis are described <a href="kinematic-study.html">here</a>.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org2e3169e" class="outline-2">
|
<div id="outline-container-org2e5eede" class="outline-2">
|
||||||
<h2 id="org2e3169e"><span class="section-number-2">5</span> Identification of the Stewart Dynamics (<a href="identification.html">link</a>)</h2>
|
<h2 id="org2e5eede"><span class="section-number-2">5</span> Identification of the Stewart Dynamics (<a href="identification.html">link</a>)</h2>
|
||||||
<div class="outline-text-2" id="text-5">
|
<div class="outline-text-2" id="text-5">
|
||||||
<p>
|
<p>
|
||||||
The Dynamics of the Stewart platform can be identified using the Simscape model.
|
The Dynamics of the Stewart platform can be identified using the Simscape model.
|
||||||
@@ -348,8 +132,8 @@ The code that is used for identification is explained <a href="identification.ht
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org0fdb910" class="outline-2">
|
<div id="outline-container-orgb272d52" class="outline-2">
|
||||||
<h2 id="org0fdb910"><span class="section-number-2">6</span> Control</h2>
|
<h2 id="orgb272d52"><span class="section-number-2">6</span> Control</h2>
|
||||||
<div class="outline-text-2" id="text-6">
|
<div class="outline-text-2" id="text-6">
|
||||||
<p>
|
<p>
|
||||||
The use of active control for Stewart platforms is a wide subject.
|
The use of active control for Stewart platforms is a wide subject.
|
||||||
@@ -392,8 +176,8 @@ Different control architectures (centralized and decentralized) are compared for
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1f468b1" class="outline-2">
|
<div id="outline-container-org7c7008e" class="outline-2">
|
||||||
<h2 id="org1f468b1"><span class="section-number-2">7</span> Cubic Configuration (<a href="cubic-configuration.html">link</a>)</h2>
|
<h2 id="org7c7008e"><span class="section-number-2">7</span> Cubic Configuration (<a href="cubic-configuration.html">link</a>)</h2>
|
||||||
<div class="outline-text-2" id="text-7">
|
<div class="outline-text-2" id="text-7">
|
||||||
<p>
|
<p>
|
||||||
The cubic configuration is a special class of Stewart platform that has interesting properties.
|
The cubic configuration is a special class of Stewart platform that has interesting properties.
|
||||||
@@ -405,8 +189,8 @@ These properties are studied in <a href="cubic-configuration.html">this</a> docu
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orga2bd0e9" class="outline-2">
|
<div id="outline-container-org1f2f2c6" class="outline-2">
|
||||||
<h2 id="orga2bd0e9"><span class="section-number-2">8</span> Bibliography (<a href="bibliography.html">link</a>)</h2>
|
<h2 id="org1f2f2c6"><span class="section-number-2">8</span> Bibliography (<a href="bibliography.html">link</a>)</h2>
|
||||||
<div class="outline-text-2" id="text-8">
|
<div class="outline-text-2" id="text-8">
|
||||||
<p>
|
<p>
|
||||||
Many text books, PhD thesis and articles related to parallel robots and Stewart platforms are gathered in <a href="bibliography.html">this</a> document.
|
Many text books, PhD thesis and articles related to parallel robots and Stewart platforms are gathered in <a href="bibliography.html">this</a> document.
|
||||||
@@ -416,7 +200,7 @@ Many text books, PhD thesis and articles related to parallel robots and Stewart
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
<p class="date">Created: 2020-03-13 ven. 10:34</p>
|
<p class="date">Created: 2021-01-08 ven. 15:30</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
7
docs/js/bootstrap.min.js
vendored
4
docs/js/jquery.min.js
vendored
1
docs/js/jquery.stickytableheaders.min.js
vendored
@@ -1 +0,0 @@
|
|||||||
!function(a,b){"use strict";function c(c,g){var h=this;h.$el=a(c),h.el=c,h.id=e++,h.$window=a(b),h.$document=a(document),h.$el.bind("destroyed",a.proxy(h.teardown,h)),h.$clonedHeader=null,h.$originalHeader=null,h.isSticky=!1,h.hasBeenSticky=!1,h.leftOffset=null,h.topOffset=null,h.init=function(){h.$el.each(function(){var b=a(this);b.css("padding",0),h.$originalHeader=a("thead:first",this),h.$clonedHeader=h.$originalHeader.clone(),b.trigger("clonedHeader."+d,[h.$clonedHeader]),h.$clonedHeader.addClass("tableFloatingHeader"),h.$clonedHeader.css("display","none"),h.$originalHeader.addClass("tableFloatingHeaderOriginal"),h.$originalHeader.after(h.$clonedHeader),h.$printStyle=a('<style type="text/css" media="print">.tableFloatingHeader{display:none !important;}.tableFloatingHeaderOriginal{position:static !important;}</style>'),a("head").append(h.$printStyle)}),h.setOptions(g),h.updateWidth(),h.toggleHeaders(),h.bind()},h.destroy=function(){h.$el.unbind("destroyed",h.teardown),h.teardown()},h.teardown=function(){h.isSticky&&h.$originalHeader.css("position","static"),a.removeData(h.el,"plugin_"+d),h.unbind(),h.$clonedHeader.remove(),h.$originalHeader.removeClass("tableFloatingHeaderOriginal"),h.$originalHeader.css("visibility","visible"),h.$printStyle.remove(),h.el=null,h.$el=null},h.bind=function(){h.$scrollableArea.on("scroll."+d,h.toggleHeaders),h.isWindowScrolling||(h.$window.on("scroll."+d+h.id,h.setPositionValues),h.$window.on("resize."+d+h.id,h.toggleHeaders)),h.$scrollableArea.on("resize."+d,h.toggleHeaders),h.$scrollableArea.on("resize."+d,h.updateWidth)},h.unbind=function(){h.$scrollableArea.off("."+d,h.toggleHeaders),h.isWindowScrolling||(h.$window.off("."+d+h.id,h.setPositionValues),h.$window.off("."+d+h.id,h.toggleHeaders)),h.$scrollableArea.off("."+d,h.updateWidth)},h.toggleHeaders=function(){h.$el&&h.$el.each(function(){var b,c=a(this),d=h.isWindowScrolling?isNaN(h.options.fixedOffset)?h.options.fixedOffset.outerHeight():h.options.fixedOffset:h.$scrollableArea.offset().top+(isNaN(h.options.fixedOffset)?0:h.options.fixedOffset),e=c.offset(),f=h.$scrollableArea.scrollTop()+d,g=h.$scrollableArea.scrollLeft(),i=h.isWindowScrolling?f>e.top:d>e.top,j=(h.isWindowScrolling?f:0)<e.top+c.height()-h.$clonedHeader.height()-(h.isWindowScrolling?0:d);i&&j?(b=e.left-g+h.options.leftOffset,h.$originalHeader.css({position:"fixed","margin-top":h.options.marginTop,left:b,"z-index":3}),h.leftOffset=b,h.topOffset=d,h.$clonedHeader.css("display",""),h.isSticky||(h.isSticky=!0,h.updateWidth()),h.setPositionValues()):h.isSticky&&(h.$originalHeader.css("position","static"),h.$clonedHeader.css("display","none"),h.isSticky=!1,h.resetWidth(a("td,th",h.$clonedHeader),a("td,th",h.$originalHeader)))})},h.setPositionValues=function(){var a=h.$window.scrollTop(),b=h.$window.scrollLeft();!h.isSticky||0>a||a+h.$window.height()>h.$document.height()||0>b||b+h.$window.width()>h.$document.width()||h.$originalHeader.css({top:h.topOffset-(h.isWindowScrolling?0:a),left:h.leftOffset-(h.isWindowScrolling?0:b)})},h.updateWidth=function(){if(h.isSticky){h.$originalHeaderCells||(h.$originalHeaderCells=a("th,td",h.$originalHeader)),h.$clonedHeaderCells||(h.$clonedHeaderCells=a("th,td",h.$clonedHeader));var b=h.getWidth(h.$clonedHeaderCells);h.setWidth(b,h.$clonedHeaderCells,h.$originalHeaderCells),h.$originalHeader.css("width",h.$clonedHeader.width())}},h.getWidth=function(c){var d=[];return c.each(function(c){var e,f=a(this);if("border-box"===f.css("box-sizing"))e=f[0].getBoundingClientRect().width;else{var g=a("th",h.$originalHeader);if("collapse"===g.css("border-collapse"))if(b.getComputedStyle)e=parseFloat(b.getComputedStyle(this,null).width);else{var i=parseFloat(f.css("padding-left")),j=parseFloat(f.css("padding-right")),k=parseFloat(f.css("border-width"));e=f.outerWidth()-i-j-k}else e=f.width()}d[c]=e}),d},h.setWidth=function(a,b,c){b.each(function(b){var d=a[b];c.eq(b).css({"min-width":d,"max-width":d})})},h.resetWidth=function(b,c){b.each(function(b){var d=a(this);c.eq(b).css({"min-width":d.css("min-width"),"max-width":d.css("max-width")})})},h.setOptions=function(c){h.options=a.extend({},f,c),h.$scrollableArea=a(h.options.scrollableArea),h.isWindowScrolling=h.$scrollableArea[0]===b},h.updateOptions=function(a){h.setOptions(a),h.unbind(),h.bind(),h.updateWidth(),h.toggleHeaders()},h.init()}var d="stickyTableHeaders",e=0,f={fixedOffset:0,leftOffset:0,marginTop:0,scrollableArea:b};a.fn[d]=function(b){return this.each(function(){var e=a.data(this,"plugin_"+d);e?"string"==typeof b?e[b].apply(e):e.updateOptions(b):"destroy"!==b&&a.data(this,"plugin_"+d,new c(this,b))})}}(jQuery,window);
|
|
@@ -1,85 +0,0 @@
|
|||||||
$(function() {
|
|
||||||
$('.note').before("<p class='admonition-title note'>Note</p>");
|
|
||||||
$('.seealso').before("<p class='admonition-title seealso'>See also</p>");
|
|
||||||
$('.warning').before("<p class='admonition-title warning'>Warning</p>");
|
|
||||||
$('.caution').before("<p class='admonition-title caution'>Caution</p>");
|
|
||||||
$('.attention').before("<p class='admonition-title attention'>Attention</p>");
|
|
||||||
$('.tip').before("<p class='admonition-title tip'>Tip</p>");
|
|
||||||
$('.important').before("<p class='admonition-title important'>Important</p>");
|
|
||||||
$('.hint').before("<p class='admonition-title hint'>Hint</p>");
|
|
||||||
$('.error').before("<p class='admonition-title error'>Error</p>");
|
|
||||||
$('.danger').before("<p class='admonition-title danger'>Danger</p>");
|
|
||||||
});
|
|
||||||
|
|
||||||
$( document ).ready(function() {
|
|
||||||
|
|
||||||
// Shift nav in mobile when clicking the menu.
|
|
||||||
$(document).on('click', "[data-toggle='wy-nav-top']", function() {
|
|
||||||
$("[data-toggle='wy-nav-shift']").toggleClass("shift");
|
|
||||||
$("[data-toggle='rst-versions']").toggleClass("shift");
|
|
||||||
});
|
|
||||||
// Close menu when you click a link.
|
|
||||||
$(document).on('click', ".wy-menu-vertical .current ul li a", function() {
|
|
||||||
$("[data-toggle='wy-nav-shift']").removeClass("shift");
|
|
||||||
$("[data-toggle='rst-versions']").toggleClass("shift");
|
|
||||||
});
|
|
||||||
$(document).on('click', "[data-toggle='rst-current-version']", function() {
|
|
||||||
$("[data-toggle='rst-versions']").toggleClass("shift-up");
|
|
||||||
});
|
|
||||||
// Make tables responsive
|
|
||||||
$("table.docutils:not(.field-list)").wrap("<div class='wy-table-responsive'></div>");
|
|
||||||
});
|
|
||||||
|
|
||||||
$( document ).ready(function() {
|
|
||||||
$('#text-table-of-contents ul').first().addClass('nav');
|
|
||||||
// ScrollSpy also requires that we use
|
|
||||||
// a Bootstrap nav component.
|
|
||||||
$('body').scrollspy({target: '#text-table-of-contents'});
|
|
||||||
|
|
||||||
// add sticky table headers
|
|
||||||
$('table').stickyTableHeaders();
|
|
||||||
|
|
||||||
// set the height of tableOfContents
|
|
||||||
var $postamble = $('#postamble');
|
|
||||||
var $tableOfContents = $('#table-of-contents');
|
|
||||||
$tableOfContents.css({paddingBottom: $postamble.outerHeight()});
|
|
||||||
|
|
||||||
// add TOC button
|
|
||||||
var toggleSidebar = $('<div id="toggle-sidebar"><a href="#table-of-contents"><h2>Table of Contents</h2></a></div>');
|
|
||||||
$('#content').prepend(toggleSidebar);
|
|
||||||
|
|
||||||
// add close button when sidebar showed in mobile screen
|
|
||||||
var closeBtn = $('<a class="close-sidebar" href="#">Close</a>');
|
|
||||||
var tocTitle = $('#table-of-contents').find('h2');
|
|
||||||
tocTitle.append(closeBtn);
|
|
||||||
});
|
|
||||||
|
|
||||||
window.SphinxRtdTheme = (function (jquery) {
|
|
||||||
var stickyNav = (function () {
|
|
||||||
var navBar,
|
|
||||||
win,
|
|
||||||
stickyNavCssClass = 'stickynav',
|
|
||||||
applyStickNav = function () {
|
|
||||||
if (navBar.height() <= win.height()) {
|
|
||||||
navBar.addClass(stickyNavCssClass);
|
|
||||||
} else {
|
|
||||||
navBar.removeClass(stickyNavCssClass);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
enable = function () {
|
|
||||||
applyStickNav();
|
|
||||||
win.on('resize', applyStickNav);
|
|
||||||
},
|
|
||||||
init = function () {
|
|
||||||
navBar = jquery('nav.wy-nav-side:first');
|
|
||||||
win = jquery(window);
|
|
||||||
};
|
|
||||||
jquery(init);
|
|
||||||
return {
|
|
||||||
enable : enable
|
|
||||||
};
|
|
||||||
}());
|
|
||||||
return {
|
|
||||||
StickyNav : stickyNav
|
|
||||||
};
|
|
||||||
}($));
|
|
83
docs/nass.html
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
|
<head>
|
||||||
|
<!-- 2021-01-08 ven. 15:53 -->
|
||||||
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
|
<title>Stewart Platform - NASS</title>
|
||||||
|
<meta name="generator" content="Org mode" />
|
||||||
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="org-div-home-and-up">
|
||||||
|
<a accesskey="h" href="./index.html"> UP </a>
|
||||||
|
|
|
||||||
|
<a accesskey="H" href="./index.html"> HOME </a>
|
||||||
|
</div><div id="content">
|
||||||
|
<h1 class="title">Stewart Platform - NASS</h1>
|
||||||
|
<div id="table-of-contents">
|
||||||
|
<h2>Table of Contents</h2>
|
||||||
|
<div id="text-table-of-contents">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#org07676ec">1. NASS</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#org0167386">1.1. Identification of the Dynamics</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-org07676ec" class="outline-2">
|
||||||
|
<h2 id="org07676ec"><span class="section-number-2">1</span> NASS</h2>
|
||||||
|
<div class="outline-text-2" id="text-1">
|
||||||
|
</div>
|
||||||
|
<div id="outline-container-org0167386" class="outline-3">
|
||||||
|
<h3 id="org0167386"><span class="section-number-3">1.1</span> Identification of the Dynamics</h3>
|
||||||
|
<div class="outline-text-3" id="text-1-1">
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">apa = load(<span class="org-string">'./mat/APA300ML.mat'</span>, <span class="org-string">'int_xyz'</span>, <span class="org-string">'int_i'</span>, <span class="org-string">'n_xyz'</span>, <span class="org-string">'n_i'</span>, <span class="org-string">'nodes'</span>, <span class="org-string">'M'</span>, <span class="org-string">'K'</span>);
|
||||||
|
flex_joint = load(<span class="org-string">'./mat/flexor_ID16.mat'</span>, <span class="org-string">'int_xyz'</span>, <span class="org-string">'int_i'</span>, <span class="org-string">'n_xyz'</span>, <span class="org-string">'n_i'</span>, <span class="org-string">'nodes'</span>, <span class="org-string">'M'</span>, <span class="org-string">'K'</span>);
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
||||||
|
stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 175e<span class="org-type">-</span>3);
|
||||||
|
stewart = generateGeneralConfiguration(stewart, <span class="org-string">'FH'</span>, 20e<span class="org-type">-</span>3, <span class="org-string">'MH'</span>, 20e<span class="org-type">-</span>3, <span class="org-string">'FR'</span>, 228e<span class="org-type">-</span>3<span class="org-type">/</span>2, <span class="org-string">'MR'</span>, 220e<span class="org-type">-</span>3<span class="org-type">/</span>2, <span class="org-string">'FTh'</span>, [<span class="org-type">-</span>9, 9, 120<span class="org-type">-</span>9, 120<span class="org-type">+</span>9, 240<span class="org-type">-</span>9, 240<span class="org-type">+</span>9]<span class="org-type">*</span>(<span class="org-constant">pi</span><span class="org-type">/</span>180), <span class="org-string">'MTh'</span>, [<span class="org-type">-</span>60<span class="org-type">+</span>15, 60<span class="org-type">-</span>15, 60<span class="org-type">+</span>15, 180<span class="org-type">-</span>15, 180<span class="org-type">+</span>15, <span class="org-type">-</span>60<span class="org-type">-</span>15]<span class="org-type">*</span>(<span class="org-constant">pi</span><span class="org-type">/</span>180));
|
||||||
|
stewart = computeJointsPose(stewart);
|
||||||
|
stewart = initializeFlexibleStrutDynamics(stewart, <span class="org-string">'H'</span>, 0.03, <span class="org-string">'K'</span>, apa.K, <span class="org-string">'M'</span>, apa.M, <span class="org-string">'n_xyz'</span>, apa.n_xyz, <span class="org-string">'xi'</span>, 0.1, <span class="org-string">'step_file'</span>, <span class="org-string">'mat/APA300ML.STEP'</span>);
|
||||||
|
stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'flexible'</span>, <span class="org-string">'K_F'</span>, flex_joint.K, <span class="org-string">'M_F'</span>, flex_joint.M, <span class="org-string">'n_xyz_F'</span>, flex_joint.n_xyz, <span class="org-string">'xi_F'</span>, 0.1, <span class="org-string">'step_file_F'</span>, <span class="org-string">'mat/flexor_ID16.STEP'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'flexible'</span>, <span class="org-string">'K_M'</span>, flex_joint.K, <span class="org-string">'M_M'</span>, flex_joint.M, <span class="org-string">'n_xyz_M'</span>, flex_joint.n_xyz, <span class="org-string">'xi_M'</span>, 0.1, <span class="org-string">'step_file_M'</span>, <span class="org-string">'mat/flexor_ID16.STEP'</span>);
|
||||||
|
stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'</span>, 150e<span class="org-type">-</span>3, <span class="org-string">'Mpr'</span>, 125e<span class="org-type">-</span>3);
|
||||||
|
stewart = initializeCylindricalStruts(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'none'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'none'</span>);
|
||||||
|
stewart = computeJacobian(stewart);
|
||||||
|
stewart = initializeStewartPose(stewart);
|
||||||
|
stewart = initializeInertialSensor(stewart);
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">ground = initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||||
|
payload = initializePayload(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'m'</span>, 50);
|
||||||
|
controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">disturbances = initializeDisturbances();
|
||||||
|
references = initializeReferences(stewart);
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="postamble" class="status">
|
||||||
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
|
<p class="date">Created: 2021-01-08 ven. 15:53</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@@ -1,239 +1,32 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"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>
|
||||||
<!-- 2020-03-11 mer. 18:59 -->
|
<!-- 2021-01-08 ven. 15:52 -->
|
||||||
<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" />
|
|
||||||
<title>Stewart Platform - Simscape Model</title>
|
<title>Stewart Platform - Simscape Model</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<style type="text/css">
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<!--/*--><![CDATA[/*><!--*/
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
.title { text-align: center;
|
|
||||||
margin-bottom: .2em; }
|
|
||||||
.subtitle { text-align: center;
|
|
||||||
font-size: medium;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-top:0; }
|
|
||||||
.todo { font-family: monospace; color: red; }
|
|
||||||
.done { font-family: monospace; color: green; }
|
|
||||||
.priority { font-family: monospace; color: orange; }
|
|
||||||
.tag { background-color: #eee; font-family: monospace;
|
|
||||||
padding: 2px; font-size: 80%; font-weight: normal; }
|
|
||||||
.timestamp { color: #bebebe; }
|
|
||||||
.timestamp-kwd { color: #5f9ea0; }
|
|
||||||
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
|
|
||||||
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
|
|
||||||
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
|
|
||||||
.underline { text-decoration: underline; }
|
|
||||||
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
|
||||||
p.verse { margin-left: 3%; }
|
|
||||||
pre {
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
box-shadow: 3px 3px 3px #eee;
|
|
||||||
padding: 8pt;
|
|
||||||
font-family: monospace;
|
|
||||||
overflow: auto;
|
|
||||||
margin: 1.2em;
|
|
||||||
}
|
|
||||||
pre.src {
|
|
||||||
position: relative;
|
|
||||||
overflow: visible;
|
|
||||||
padding-top: 1.2em;
|
|
||||||
}
|
|
||||||
pre.src:before {
|
|
||||||
display: none;
|
|
||||||
position: absolute;
|
|
||||||
background-color: white;
|
|
||||||
top: -10px;
|
|
||||||
right: 10px;
|
|
||||||
padding: 3px;
|
|
||||||
border: 1px solid black;
|
|
||||||
}
|
|
||||||
pre.src:hover:before { display: inline;}
|
|
||||||
/* Languages per Org manual */
|
|
||||||
pre.src-asymptote:before { content: 'Asymptote'; }
|
|
||||||
pre.src-awk:before { content: 'Awk'; }
|
|
||||||
pre.src-C:before { content: 'C'; }
|
|
||||||
/* pre.src-C++ doesn't work in CSS */
|
|
||||||
pre.src-clojure:before { content: 'Clojure'; }
|
|
||||||
pre.src-css:before { content: 'CSS'; }
|
|
||||||
pre.src-D:before { content: 'D'; }
|
|
||||||
pre.src-ditaa:before { content: 'ditaa'; }
|
|
||||||
pre.src-dot:before { content: 'Graphviz'; }
|
|
||||||
pre.src-calc:before { content: 'Emacs Calc'; }
|
|
||||||
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
|
||||||
pre.src-fortran:before { content: 'Fortran'; }
|
|
||||||
pre.src-gnuplot:before { content: 'gnuplot'; }
|
|
||||||
pre.src-haskell:before { content: 'Haskell'; }
|
|
||||||
pre.src-hledger:before { content: 'hledger'; }
|
|
||||||
pre.src-java:before { content: 'Java'; }
|
|
||||||
pre.src-js:before { content: 'Javascript'; }
|
|
||||||
pre.src-latex:before { content: 'LaTeX'; }
|
|
||||||
pre.src-ledger:before { content: 'Ledger'; }
|
|
||||||
pre.src-lisp:before { content: 'Lisp'; }
|
|
||||||
pre.src-lilypond:before { content: 'Lilypond'; }
|
|
||||||
pre.src-lua:before { content: 'Lua'; }
|
|
||||||
pre.src-matlab:before { content: 'MATLAB'; }
|
|
||||||
pre.src-mscgen:before { content: 'Mscgen'; }
|
|
||||||
pre.src-ocaml:before { content: 'Objective Caml'; }
|
|
||||||
pre.src-octave:before { content: 'Octave'; }
|
|
||||||
pre.src-org:before { content: 'Org mode'; }
|
|
||||||
pre.src-oz:before { content: 'OZ'; }
|
|
||||||
pre.src-plantuml:before { content: 'Plantuml'; }
|
|
||||||
pre.src-processing:before { content: 'Processing.js'; }
|
|
||||||
pre.src-python:before { content: 'Python'; }
|
|
||||||
pre.src-R:before { content: 'R'; }
|
|
||||||
pre.src-ruby:before { content: 'Ruby'; }
|
|
||||||
pre.src-sass:before { content: 'Sass'; }
|
|
||||||
pre.src-scheme:before { content: 'Scheme'; }
|
|
||||||
pre.src-screen:before { content: 'Gnu Screen'; }
|
|
||||||
pre.src-sed:before { content: 'Sed'; }
|
|
||||||
pre.src-sh:before { content: 'shell'; }
|
|
||||||
pre.src-sql:before { content: 'SQL'; }
|
|
||||||
pre.src-sqlite:before { content: 'SQLite'; }
|
|
||||||
/* additional languages in org.el's org-babel-load-languages alist */
|
|
||||||
pre.src-forth:before { content: 'Forth'; }
|
|
||||||
pre.src-io:before { content: 'IO'; }
|
|
||||||
pre.src-J:before { content: 'J'; }
|
|
||||||
pre.src-makefile:before { content: 'Makefile'; }
|
|
||||||
pre.src-maxima:before { content: 'Maxima'; }
|
|
||||||
pre.src-perl:before { content: 'Perl'; }
|
|
||||||
pre.src-picolisp:before { content: 'Pico Lisp'; }
|
|
||||||
pre.src-scala:before { content: 'Scala'; }
|
|
||||||
pre.src-shell:before { content: 'Shell Script'; }
|
|
||||||
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
|
|
||||||
/* additional language identifiers per "defun org-babel-execute"
|
|
||||||
in ob-*.el */
|
|
||||||
pre.src-cpp:before { content: 'C++'; }
|
|
||||||
pre.src-abc:before { content: 'ABC'; }
|
|
||||||
pre.src-coq:before { content: 'Coq'; }
|
|
||||||
pre.src-groovy:before { content: 'Groovy'; }
|
|
||||||
/* additional language identifiers from org-babel-shell-names in
|
|
||||||
ob-shell.el: ob-shell is the only babel language using a lambda to put
|
|
||||||
the execution function name together. */
|
|
||||||
pre.src-bash:before { content: 'bash'; }
|
|
||||||
pre.src-csh:before { content: 'csh'; }
|
|
||||||
pre.src-ash:before { content: 'ash'; }
|
|
||||||
pre.src-dash:before { content: 'dash'; }
|
|
||||||
pre.src-ksh:before { content: 'ksh'; }
|
|
||||||
pre.src-mksh:before { content: 'mksh'; }
|
|
||||||
pre.src-posh:before { content: 'posh'; }
|
|
||||||
/* Additional Emacs modes also supported by the LaTeX listings package */
|
|
||||||
pre.src-ada:before { content: 'Ada'; }
|
|
||||||
pre.src-asm:before { content: 'Assembler'; }
|
|
||||||
pre.src-caml:before { content: 'Caml'; }
|
|
||||||
pre.src-delphi:before { content: 'Delphi'; }
|
|
||||||
pre.src-html:before { content: 'HTML'; }
|
|
||||||
pre.src-idl:before { content: 'IDL'; }
|
|
||||||
pre.src-mercury:before { content: 'Mercury'; }
|
|
||||||
pre.src-metapost:before { content: 'MetaPost'; }
|
|
||||||
pre.src-modula-2:before { content: 'Modula-2'; }
|
|
||||||
pre.src-pascal:before { content: 'Pascal'; }
|
|
||||||
pre.src-ps:before { content: 'PostScript'; }
|
|
||||||
pre.src-prolog:before { content: 'Prolog'; }
|
|
||||||
pre.src-simula:before { content: 'Simula'; }
|
|
||||||
pre.src-tcl:before { content: 'tcl'; }
|
|
||||||
pre.src-tex:before { content: 'TeX'; }
|
|
||||||
pre.src-plain-tex:before { content: 'Plain TeX'; }
|
|
||||||
pre.src-verilog:before { content: 'Verilog'; }
|
|
||||||
pre.src-vhdl:before { content: 'VHDL'; }
|
|
||||||
pre.src-xml:before { content: 'XML'; }
|
|
||||||
pre.src-nxml:before { content: 'XML'; }
|
|
||||||
/* add a generic configuration mode; LaTeX export needs an additional
|
|
||||||
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
|
|
||||||
pre.src-conf:before { content: 'Configuration File'; }
|
|
||||||
|
|
||||||
table { border-collapse:collapse; }
|
|
||||||
caption.t-above { caption-side: top; }
|
|
||||||
caption.t-bottom { caption-side: bottom; }
|
|
||||||
td, th { vertical-align:top; }
|
|
||||||
th.org-right { text-align: center; }
|
|
||||||
th.org-left { text-align: center; }
|
|
||||||
th.org-center { text-align: center; }
|
|
||||||
td.org-right { text-align: right; }
|
|
||||||
td.org-left { text-align: left; }
|
|
||||||
td.org-center { text-align: center; }
|
|
||||||
dt { font-weight: bold; }
|
|
||||||
.footpara { display: inline; }
|
|
||||||
.footdef { margin-bottom: 1em; }
|
|
||||||
.figure { padding: 1em; }
|
|
||||||
.figure p { text-align: center; }
|
|
||||||
.equation-container {
|
|
||||||
display: table;
|
|
||||||
text-align: center;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.equation {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.equation-label {
|
|
||||||
display: table-cell;
|
|
||||||
text-align: right;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.inlinetask {
|
|
||||||
padding: 10px;
|
|
||||||
border: 2px solid gray;
|
|
||||||
margin: 10px;
|
|
||||||
background: #ffffcc;
|
|
||||||
}
|
|
||||||
#org-div-home-and-up
|
|
||||||
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
|
||||||
textarea { overflow-x: auto; }
|
|
||||||
.linenr { font-size: smaller }
|
|
||||||
.code-highlighted { background-color: #ffff00; }
|
|
||||||
.org-info-js_info-navigation { border-style: none; }
|
|
||||||
#org-info-js_console-label
|
|
||||||
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
|
||||||
.org-info-js_search-highlight
|
|
||||||
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
|
||||||
.org-svg { width: 90%; }
|
|
||||||
/*]]>*/-->
|
|
||||||
</style>
|
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
|
||||||
<script src="./js/jquery.min.js"></script>
|
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
<script src="./js/readtheorg.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
|
|
||||||
<!--/*--><![CDATA[/*><!--*/
|
|
||||||
function CodeHighlightOn(elem, id)
|
|
||||||
{
|
|
||||||
var target = document.getElementById(id);
|
|
||||||
if(null != target) {
|
|
||||||
elem.cacheClassElem = elem.className;
|
|
||||||
elem.cacheClassTarget = target.className;
|
|
||||||
target.className = "code-highlighted";
|
|
||||||
elem.className = "code-highlighted";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function CodeHighlightOff(elem, id)
|
|
||||||
{
|
|
||||||
var target = document.getElementById(id);
|
|
||||||
if(elem.cacheClassElem)
|
|
||||||
elem.className = elem.cacheClassElem;
|
|
||||||
if(elem.cacheClassTarget)
|
|
||||||
target.className = elem.cacheClassTarget;
|
|
||||||
}
|
|
||||||
/*]]>*///-->
|
|
||||||
// @license-end
|
|
||||||
</script>
|
|
||||||
<script>
|
<script>
|
||||||
MathJax = {
|
MathJax = {
|
||||||
tex: { macros: {
|
svg: {
|
||||||
bm: ["\\boldsymbol{#1}",1],
|
scale: 1,
|
||||||
}
|
fontCache: "global"
|
||||||
|
},
|
||||||
|
tex: {
|
||||||
|
tags: "ams",
|
||||||
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript"
|
<script id="MathJax-script" async
|
||||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
@@ -246,47 +39,47 @@
|
|||||||
<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="#orgc6e0b93">1. Parameters used for the Simscape Model</a></li>
|
<li><a href="#org79eeba1">1. Parameters used for the Simscape Model</a></li>
|
||||||
<li><a href="#org66977e8">2. Simulation Configuration - Configuration reference</a></li>
|
<li><a href="#org677dd01">2. Simulation Configuration - Configuration reference</a></li>
|
||||||
<li><a href="#orgb2362eb">3. Subsystem Reference</a></li>
|
<li><a href="#orge89e3e7">3. Subsystem Reference</a></li>
|
||||||
<li><a href="#orgdfad86d">4. Subsystem - Fixed base and Mobile Platform</a></li>
|
<li><a href="#org5f42d80">4. Subsystem - Fixed base and Mobile Platform</a></li>
|
||||||
<li><a href="#org9d4af75">5. Subsystem - Struts</a></li>
|
<li><a href="#orgbec2976">5. Subsystem - Struts</a></li>
|
||||||
<li><a href="#org7e2c432">6. Other Elements</a>
|
<li><a href="#org806ecc3">6. Other Elements</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org3535b6d">6.1. Payload</a>
|
<li><a href="#orgf4bef70">6.1. Payload</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org1211163">Function description</a></li>
|
<li><a href="#org920bdd0">Function description</a></li>
|
||||||
<li><a href="#org0d8dc7e">Optional Parameters</a></li>
|
<li><a href="#orgbc7950f">Optional Parameters</a></li>
|
||||||
<li><a href="#orgeeb8d35">Add Payload Type</a></li>
|
<li><a href="#org4ef4a9f">Add Payload Type</a></li>
|
||||||
<li><a href="#org6d52ffc">Add Stiffness, Damping and Mass properties of the Payload</a></li>
|
<li><a href="#org3243d76">Add Stiffness, Damping and Mass properties of the Payload</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgaaed406">6.2. Ground</a>
|
<li><a href="#orgd9e12ef">6.2. Ground</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org0bee981">Function description</a></li>
|
<li><a href="#orgc300ecf">Function description</a></li>
|
||||||
<li><a href="#orgeaeb9aa">Optional Parameters</a></li>
|
<li><a href="#org1ee272a">Optional Parameters</a></li>
|
||||||
<li><a href="#orgef7035d">Add Ground Type</a></li>
|
<li><a href="#org2d22970">Add Ground Type</a></li>
|
||||||
<li><a href="#org95633e8">Add Stiffness and Damping properties of the Ground</a></li>
|
<li><a href="#orgf76def4">Add Stiffness and Damping properties of the Ground</a></li>
|
||||||
<li><a href="#org14ff2fc">Rotation Point</a></li>
|
<li><a href="#orgdb67a68">Rotation Point</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgae6907a">7. Initialize Disturbances</a>
|
<li><a href="#org6d3b61e">7. Initialize Disturbances</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org0eae33e">Function Declaration and Documentation</a></li>
|
<li><a href="#orgf124972">Function Declaration and Documentation</a></li>
|
||||||
<li><a href="#orge03b19d">Optional Parameters</a></li>
|
<li><a href="#org668f4bb">Optional Parameters</a></li>
|
||||||
<li><a href="#org30dc07c">Structure initialization</a></li>
|
<li><a href="#org0f7e4dd">Structure initialization</a></li>
|
||||||
<li><a href="#org0755155">Ground Motion</a></li>
|
<li><a href="#org1a28fcd">Ground Motion</a></li>
|
||||||
<li><a href="#org7617a55">Direct Forces</a></li>
|
<li><a href="#org90b72d6">Direct Forces</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgd45a07f">8. Initialize References</a>
|
<li><a href="#org93f2d30">8. Initialize References</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org7f187c4">Function Declaration and Documentation</a></li>
|
<li><a href="#org81500bb">Function Declaration and Documentation</a></li>
|
||||||
<li><a href="#org28b782e">Optional Parameters</a></li>
|
<li><a href="#org05322ee">Optional Parameters</a></li>
|
||||||
<li><a href="#orgc274320">8.1. Compute the corresponding strut length</a></li>
|
<li><a href="#org6f05adc">8.1. Compute the corresponding strut length</a></li>
|
||||||
<li><a href="#org36ac3fa">References</a></li>
|
<li><a href="#orgda73a50">References</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -301,18 +94,18 @@ In this document is explained how the Simscape model of the Stewart Platform is
|
|||||||
It is divided in the following sections:
|
It is divided in the following sections:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>section <a href="#org8d965c3">1</a>: is explained how the parameters of the Stewart platform are set for the Simscape model</li>
|
<li>section <a href="#orge8daba9">1</a>: is explained how the parameters of the Stewart platform are set for the Simscape model</li>
|
||||||
<li>section <a href="#org354bfdb">2</a>: the Simulink configuration (solver, simulation time, …) is shared among all the Simulink files. It is explain how this is done.</li>
|
<li>section <a href="#org11ed7ef">2</a>: the Simulink configuration (solver, simulation time, …) is shared among all the Simulink files. It is explain how this is done.</li>
|
||||||
<li>section <a href="#org66bbae2">3</a>: All the elements (platforms, struts, sensors, …) are saved in separate files and imported in Simulink files using “subsystem referenced”.</li>
|
<li>section <a href="#org1a0307c">3</a>: All the elements (platforms, struts, sensors, …) are saved in separate files and imported in Simulink files using “subsystem referenced”.</li>
|
||||||
<li>section <a href="#orga4915c4">4</a>: The simscape model for the fixed base and mobile platform are described in this section.</li>
|
<li>section <a href="#org5fac181">4</a>: The simscape model for the fixed base and mobile platform are described in this section.</li>
|
||||||
<li>section <a href="#orgdb5206f">5</a>: The simscape model for the Stewart platform struts is described in this section.</li>
|
<li>section <a href="#org793a5c7">5</a>: The simscape model for the Stewart platform struts is described in this section.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div id="outline-container-orgc6e0b93" class="outline-2">
|
<div id="outline-container-org79eeba1" class="outline-2">
|
||||||
<h2 id="orgc6e0b93"><span class="section-number-2">1</span> Parameters used for the Simscape Model</h2>
|
<h2 id="org79eeba1"><span class="section-number-2">1</span> Parameters used for the Simscape Model</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="org8d965c3"></a>
|
<a id="orge8daba9"></a>
|
||||||
The Simscape Model of the Stewart Platform is working with the <code>stewart</code> structure generated using the functions described <a href="stewart-architecture.html">here</a>.
|
The Simscape Model of the Stewart Platform is working with the <code>stewart</code> structure generated using the functions described <a href="stewart-architecture.html">here</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -334,11 +127,11 @@ The main advantage to have all the parameters defined in one structure (and not
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org66977e8" class="outline-2">
|
<div id="outline-container-org677dd01" class="outline-2">
|
||||||
<h2 id="org66977e8"><span class="section-number-2">2</span> Simulation Configuration - Configuration reference</h2>
|
<h2 id="org677dd01"><span class="section-number-2">2</span> Simulation Configuration - Configuration reference</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="org354bfdb"></a>
|
<a id="org11ed7ef"></a>
|
||||||
As multiple simulink files will be used for simulation and tests, it is very useful to determine good simulation configuration that will be <b>shared</b> among all the simulink files.
|
As multiple simulink files will be used for simulation and tests, it is very useful to determine good simulation configuration that will be <b>shared</b> among all the simulink files.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -365,11 +158,11 @@ It is however possible to modify specific parameters just for one simulation usi
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb2362eb" class="outline-2">
|
<div id="outline-container-orge89e3e7" class="outline-2">
|
||||||
<h2 id="orgb2362eb"><span class="section-number-2">3</span> Subsystem Reference</h2>
|
<h2 id="orge89e3e7"><span class="section-number-2">3</span> Subsystem Reference</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
<a id="org66bbae2"></a>
|
<a id="org1a0307c"></a>
|
||||||
Several Stewart platform models are used, for instance one is use to study the dynamics while the other is used to apply active damping techniques.
|
Several Stewart platform models are used, for instance one is use to study the dynamics while the other is used to apply active damping techniques.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -387,12 +180,12 @@ These shared subsystems are:
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
These subsystems are referenced from another subsystem called <code>Stewart_Platform.slx</code> shown in figure <a href="#orgf687c71">1</a>, that basically connect them correctly.
|
These subsystems are referenced from another subsystem called <code>Stewart_Platform.slx</code> shown in figure <a href="#org18dcfb1">1</a>, that basically connect them correctly.
|
||||||
This subsystem is then referenced in other simulink models for various purposes (control, analysis, simulation, …).
|
This subsystem is then referenced in other simulink models for various purposes (control, analysis, simulation, …).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgf687c71" class="figure">
|
<div id="org18dcfb1" class="figure">
|
||||||
<p><img src="figs/simscape_stewart_platform.png" alt="simscape_stewart_platform.png" />
|
<p><img src="figs/simscape_stewart_platform.png" alt="simscape_stewart_platform.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Simscape Subsystem of the Stewart platform. Encapsulate the Subsystems corresponding to the fixed base, mobile platform and all the struts.</p>
|
<p><span class="figure-number">Figure 1: </span>Simscape Subsystem of the Stewart platform. Encapsulate the Subsystems corresponding to the fixed base, mobile platform and all the struts.</p>
|
||||||
@@ -400,11 +193,11 @@ This subsystem is then referenced in other simulink models for various purposes
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgdfad86d" class="outline-2">
|
<div id="outline-container-org5f42d80" class="outline-2">
|
||||||
<h2 id="orgdfad86d"><span class="section-number-2">4</span> Subsystem - Fixed base and Mobile Platform</h2>
|
<h2 id="org5f42d80"><span class="section-number-2">4</span> Subsystem - Fixed base and Mobile Platform</h2>
|
||||||
<div class="outline-text-2" id="text-4">
|
<div class="outline-text-2" id="text-4">
|
||||||
<p>
|
<p>
|
||||||
<a id="orga4915c4"></a>
|
<a id="org5fac181"></a>
|
||||||
Both the fixed base and the mobile platform simscape models share many similarities.
|
Both the fixed base and the mobile platform simscape models share many similarities.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -422,14 +215,14 @@ As always, the parameters that define the geometry are taken from the <code>stew
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="org858f0b4" class="figure">
|
<div id="org7b43415" class="figure">
|
||||||
<p><img src="figs/simscape_fixed_base.png" alt="simscape_fixed_base.png" width="1000px" />
|
<p><img src="figs/simscape_fixed_base.png" alt="simscape_fixed_base.png" width="1000px" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 2: </span>Simscape Model of the Fixed base</p>
|
<p><span class="figure-number">Figure 2: </span>Simscape Model of the Fixed base</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org4b31aa3" class="figure">
|
<div id="org7ed0d98" class="figure">
|
||||||
<p><img src="figs/simscape_mobile_platform.png" alt="simscape_mobile_platform.png" width="800px" />
|
<p><img src="figs/simscape_mobile_platform.png" alt="simscape_mobile_platform.png" width="800px" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 3: </span>Simscape Model of the Mobile platform</p>
|
<p><span class="figure-number">Figure 3: </span>Simscape Model of the Mobile platform</p>
|
||||||
@@ -437,13 +230,13 @@ As always, the parameters that define the geometry are taken from the <code>stew
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org9d4af75" class="outline-2">
|
<div id="outline-container-orgbec2976" class="outline-2">
|
||||||
<h2 id="org9d4af75"><span class="section-number-2">5</span> Subsystem - Struts</h2>
|
<h2 id="orgbec2976"><span class="section-number-2">5</span> Subsystem - Struts</h2>
|
||||||
<div class="outline-text-2" id="text-5">
|
<div class="outline-text-2" id="text-5">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgdb5206f"></a>
|
<a id="org793a5c7"></a>
|
||||||
For the Stewart platform, the 6 struts are identical.
|
For the Stewart platform, the 6 struts are identical.
|
||||||
Thus, all the struts used in the Stewart platform are referring to the same subsystem called <code>stewart_strut.slx</code> and shown in Figure <a href="#org1dc8fce">4</a>.
|
Thus, all the struts used in the Stewart platform are referring to the same subsystem called <code>stewart_strut.slx</code> and shown in Figure <a href="#org96a73eb">4</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@@ -465,7 +258,7 @@ This is why the <b>UPS</b> configuration is used, but other configuration can be
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="org1dc8fce" class="figure">
|
<div id="org96a73eb" class="figure">
|
||||||
<p><img src="figs/simscape_strut.png" alt="simscape_strut.png" width="800px" />
|
<p><img src="figs/simscape_strut.png" alt="simscape_strut.png" width="800px" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 4: </span>Simscape model of the Stewart platform’s strut</p>
|
<p><span class="figure-number">Figure 4: </span>Simscape model of the Stewart platform’s strut</p>
|
||||||
@@ -494,15 +287,15 @@ Both inertial sensors are described bellow.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7e2c432" class="outline-2">
|
<div id="outline-container-org806ecc3" class="outline-2">
|
||||||
<h2 id="org7e2c432"><span class="section-number-2">6</span> Other Elements</h2>
|
<h2 id="org806ecc3"><span class="section-number-2">6</span> Other Elements</h2>
|
||||||
<div class="outline-text-2" id="text-6">
|
<div class="outline-text-2" id="text-6">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org3535b6d" class="outline-3">
|
<div id="outline-container-orgf4bef70" class="outline-3">
|
||||||
<h3 id="org3535b6d"><span class="section-number-3">6.1</span> Payload</h3>
|
<h3 id="orgf4bef70"><span class="section-number-3">6.1</span> Payload</h3>
|
||||||
<div class="outline-text-3" id="text-6-1">
|
<div class="outline-text-3" id="text-6-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="org3a56808"></a>
|
<a id="orgdd9802d"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@@ -510,9 +303,9 @@ This Matlab function is accessible <a href="../src/initializePayload.m">here</a>
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1211163" class="outline-4">
|
<div id="outline-container-org920bdd0" class="outline-4">
|
||||||
<h4 id="org1211163">Function description</h4>
|
<h4 id="org920bdd0">Function description</h4>
|
||||||
<div class="outline-text-4" id="text-org1211163">
|
<div class="outline-text-4" id="text-org920bdd0">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[payload]</span> = <span class="org-function-name">initializePayload</span>(<span class="org-variable-name">args</span>)
|
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[payload]</span> = <span class="org-function-name">initializePayload</span>(<span class="org-variable-name">args</span>)
|
||||||
<span class="org-comment">% initializePayload - Initialize the Payload that can then be used for simulations and analysis</span>
|
<span class="org-comment">% initializePayload - Initialize the Payload that can then be used for simulations and analysis</span>
|
||||||
@@ -542,26 +335,26 @@ This Matlab function is accessible <a href="../src/initializePayload.m">here</a>
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org0d8dc7e" class="outline-4">
|
<div id="outline-container-orgbc7950f" class="outline-4">
|
||||||
<h4 id="org0d8dc7e">Optional Parameters</h4>
|
<h4 id="orgbc7950f">Optional Parameters</h4>
|
||||||
<div class="outline-text-4" id="text-org0d8dc7e">
|
<div class="outline-text-4" id="text-orgbc7950f">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab"><span class="org-keyword">arguments</span>
|
||||||
args.type char {mustBeMember(args.type,{<span class="org-string">'none'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'flexible'</span>, <span class="org-string">'cartesian'</span>})} = <span class="org-string">'none'</span>
|
<span class="org-variable-name">args</span>.type char {mustBeMember(args.type,{<span class="org-string">'none'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'flexible'</span>, <span class="org-string">'cartesian'</span>})} = <span class="org-string">'none'</span>
|
||||||
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e8<span class="org-type">*</span>ones(6,1)
|
<span class="org-variable-name">args</span>.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e8<span class="org-type">*</span>ones(6,1)
|
||||||
args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1<span class="org-type">*</span>ones(6,1)
|
<span class="org-variable-name">args</span>.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1<span class="org-type">*</span>ones(6,1)
|
||||||
args.h (1,1) double {mustBeNumeric, mustBeNonnegative} = 100e<span class="org-type">-</span>3
|
<span class="org-variable-name">args</span>.h (1,1) double {mustBeNumeric, mustBeNonnegative} = 100e<span class="org-type">-</span>3
|
||||||
args.m (1,1) double {mustBeNumeric, mustBeNonnegative} = 10
|
<span class="org-variable-name">args</span>.m (1,1) double {mustBeNumeric, mustBeNonnegative} = 10
|
||||||
args.I (3,3) double {mustBeNumeric, mustBeNonnegative} = 1<span class="org-type">*</span>eye(3)
|
<span class="org-variable-name">args</span>.I (3,3) double {mustBeNumeric, mustBeNonnegative} = 1<span class="org-type">*</span>eye(3)
|
||||||
<span class="org-keyword">end</span>
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgeeb8d35" class="outline-4">
|
<div id="outline-container-org4ef4a9f" class="outline-4">
|
||||||
<h4 id="orgeeb8d35">Add Payload Type</h4>
|
<h4 id="org4ef4a9f">Add Payload Type</h4>
|
||||||
<div class="outline-text-4" id="text-orgeeb8d35">
|
<div class="outline-text-4" id="text-org4ef4a9f">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-keyword">switch</span> <span class="org-constant">args.type</span>
|
<pre class="src src-matlab"><span class="org-keyword">switch</span> <span class="org-constant">args.type</span>
|
||||||
<span class="org-keyword">case</span> <span class="org-string">'none'</span>
|
<span class="org-keyword">case</span> <span class="org-string">'none'</span>
|
||||||
@@ -578,9 +371,9 @@ This Matlab function is accessible <a href="../src/initializePayload.m">here</a>
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org6d52ffc" class="outline-4">
|
<div id="outline-container-org3243d76" class="outline-4">
|
||||||
<h4 id="org6d52ffc">Add Stiffness, Damping and Mass properties of the Payload</h4>
|
<h4 id="org3243d76">Add Stiffness, Damping and Mass properties of the Payload</h4>
|
||||||
<div class="outline-text-4" id="text-org6d52ffc">
|
<div class="outline-text-4" id="text-org3243d76">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">payload.K = args.K;
|
<pre class="src src-matlab">payload.K = args.K;
|
||||||
payload.C = args.C;
|
payload.C = args.C;
|
||||||
@@ -594,11 +387,11 @@ payload.h = args.h;
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgaaed406" class="outline-3">
|
<div id="outline-container-orgd9e12ef" class="outline-3">
|
||||||
<h3 id="orgaaed406"><span class="section-number-3">6.2</span> Ground</h3>
|
<h3 id="orgd9e12ef"><span class="section-number-3">6.2</span> Ground</h3>
|
||||||
<div class="outline-text-3" id="text-6-2">
|
<div class="outline-text-3" id="text-6-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="orge64ba82"></a>
|
<a id="org140423a"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@@ -606,9 +399,9 @@ This Matlab function is accessible <a href="../src/initializeGround.m">here</a>.
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org0bee981" class="outline-4">
|
<div id="outline-container-orgc300ecf" class="outline-4">
|
||||||
<h4 id="org0bee981">Function description</h4>
|
<h4 id="orgc300ecf">Function description</h4>
|
||||||
<div class="outline-text-4" id="text-org0bee981">
|
<div class="outline-text-4" id="text-orgc300ecf">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[ground]</span> = <span class="org-function-name">initializeGround</span>(<span class="org-variable-name">args</span>)
|
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[ground]</span> = <span class="org-function-name">initializeGround</span>(<span class="org-variable-name">args</span>)
|
||||||
<span class="org-comment">% initializeGround - Initialize the Ground that can then be used for simulations and analysis</span>
|
<span class="org-comment">% initializeGround - Initialize the Ground that can then be used for simulations and analysis</span>
|
||||||
@@ -632,24 +425,24 @@ This Matlab function is accessible <a href="../src/initializeGround.m">here</a>.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgeaeb9aa" class="outline-4">
|
<div id="outline-container-org1ee272a" class="outline-4">
|
||||||
<h4 id="orgeaeb9aa">Optional Parameters</h4>
|
<h4 id="org1ee272a">Optional Parameters</h4>
|
||||||
<div class="outline-text-4" id="text-orgeaeb9aa">
|
<div class="outline-text-4" id="text-org1ee272a">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab"><span class="org-keyword">arguments</span>
|
||||||
args.type char {mustBeMember(args.type,{<span class="org-string">'none'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'flexible'</span>})} = <span class="org-string">'none'</span>
|
<span class="org-variable-name">args</span>.type char {mustBeMember(args.type,{<span class="org-string">'none'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'flexible'</span>})} = <span class="org-string">'none'</span>
|
||||||
args.rot_point (3,1) double {mustBeNumeric} = zeros(3,1)
|
<span class="org-variable-name">args</span>.rot_point (3,1) double {mustBeNumeric} = zeros(3,1)
|
||||||
args.K (3,1) double {mustBeNumeric, mustBeNonnegative} = 1e8<span class="org-type">*</span>ones(3,1)
|
<span class="org-variable-name">args</span>.K (3,1) double {mustBeNumeric, mustBeNonnegative} = 1e8<span class="org-type">*</span>ones(3,1)
|
||||||
args.C (3,1) double {mustBeNumeric, mustBeNonnegative} = 1e1<span class="org-type">*</span>ones(3,1)
|
<span class="org-variable-name">args</span>.C (3,1) double {mustBeNumeric, mustBeNonnegative} = 1e1<span class="org-type">*</span>ones(3,1)
|
||||||
<span class="org-keyword">end</span>
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgef7035d" class="outline-4">
|
<div id="outline-container-org2d22970" class="outline-4">
|
||||||
<h4 id="orgef7035d">Add Ground Type</h4>
|
<h4 id="org2d22970">Add Ground Type</h4>
|
||||||
<div class="outline-text-4" id="text-orgef7035d">
|
<div class="outline-text-4" id="text-org2d22970">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-keyword">switch</span> <span class="org-constant">args.type</span>
|
<pre class="src src-matlab"><span class="org-keyword">switch</span> <span class="org-constant">args.type</span>
|
||||||
<span class="org-keyword">case</span> <span class="org-string">'none'</span>
|
<span class="org-keyword">case</span> <span class="org-string">'none'</span>
|
||||||
@@ -664,9 +457,9 @@ This Matlab function is accessible <a href="../src/initializeGround.m">here</a>.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org95633e8" class="outline-4">
|
<div id="outline-container-orgf76def4" class="outline-4">
|
||||||
<h4 id="org95633e8">Add Stiffness and Damping properties of the Ground</h4>
|
<h4 id="orgf76def4">Add Stiffness and Damping properties of the Ground</h4>
|
||||||
<div class="outline-text-4" id="text-org95633e8">
|
<div class="outline-text-4" id="text-orgf76def4">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">ground.K = args.K;
|
<pre class="src src-matlab">ground.K = args.K;
|
||||||
ground.C = args.C;
|
ground.C = args.C;
|
||||||
@@ -675,9 +468,9 @@ ground.C = args.C;
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org14ff2fc" class="outline-4">
|
<div id="outline-container-orgdb67a68" class="outline-4">
|
||||||
<h4 id="org14ff2fc">Rotation Point</h4>
|
<h4 id="orgdb67a68">Rotation Point</h4>
|
||||||
<div class="outline-text-4" id="text-org14ff2fc">
|
<div class="outline-text-4" id="text-orgdb67a68">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">ground.rot_point = args.rot_point;
|
<pre class="src src-matlab">ground.rot_point = args.rot_point;
|
||||||
</pre>
|
</pre>
|
||||||
@@ -686,17 +479,17 @@ ground.C = args.C;
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgae6907a" class="outline-2">
|
<div id="outline-container-org6d3b61e" class="outline-2">
|
||||||
<h2 id="orgae6907a"><span class="section-number-2">7</span> Initialize Disturbances</h2>
|
<h2 id="org6d3b61e"><span class="section-number-2">7</span> Initialize Disturbances</h2>
|
||||||
<div class="outline-text-2" id="text-7">
|
<div class="outline-text-2" id="text-7">
|
||||||
<p>
|
<p>
|
||||||
<a id="org96254bf"></a>
|
<a id="org5c942ea"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org0eae33e" class="outline-3">
|
<div id="outline-container-orgf124972" class="outline-3">
|
||||||
<h3 id="org0eae33e">Function Declaration and Documentation</h3>
|
<h3 id="orgf124972">Function Declaration and Documentation</h3>
|
||||||
<div class="outline-text-3" id="text-org0eae33e">
|
<div class="outline-text-3" id="text-orgf124972">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[disturbances]</span> = <span class="org-function-name">initializeDisturbances</span>(<span class="org-variable-name">args</span>)
|
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[disturbances]</span> = <span class="org-function-name">initializeDisturbances</span>(<span class="org-variable-name">args</span>)
|
||||||
<span class="org-comment">% initializeDisturbances - Initialize the disturbances</span>
|
<span class="org-comment">% initializeDisturbances - Initialize the disturbances</span>
|
||||||
@@ -711,15 +504,15 @@ ground.C = args.C;
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge03b19d" class="outline-3">
|
<div id="outline-container-org668f4bb" class="outline-3">
|
||||||
<h3 id="orge03b19d">Optional Parameters</h3>
|
<h3 id="org668f4bb">Optional Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-orge03b19d">
|
<div class="outline-text-3" id="text-org668f4bb">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab"><span class="org-keyword">arguments</span>
|
||||||
args.Fd double {mustBeNumeric, mustBeReal} = zeros(6,1)
|
<span class="org-variable-name">args</span>.Fd double {mustBeNumeric, mustBeReal} = zeros(6,1)
|
||||||
args.Fd_t double {mustBeNumeric, mustBeReal} = 0
|
<span class="org-variable-name">args</span>.Fd_t double {mustBeNumeric, mustBeReal} = 0
|
||||||
args.Dw double {mustBeNumeric, mustBeReal} = zeros(6,1)
|
<span class="org-variable-name">args</span>.Dw double {mustBeNumeric, mustBeReal} = zeros(6,1)
|
||||||
args.Dw_t double {mustBeNumeric, mustBeReal} = 0
|
<span class="org-variable-name">args</span>.Dw_t double {mustBeNumeric, mustBeReal} = 0
|
||||||
<span class="org-keyword">end</span>
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
@@ -727,9 +520,9 @@ ground.C = args.C;
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-org30dc07c" class="outline-3">
|
<div id="outline-container-org0f7e4dd" class="outline-3">
|
||||||
<h3 id="org30dc07c">Structure initialization</h3>
|
<h3 id="org0f7e4dd">Structure initialization</h3>
|
||||||
<div class="outline-text-3" id="text-org30dc07c">
|
<div class="outline-text-3" id="text-org0f7e4dd">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">disturbances = struct();
|
<pre class="src src-matlab">disturbances = struct();
|
||||||
</pre>
|
</pre>
|
||||||
@@ -737,9 +530,9 @@ ground.C = args.C;
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org0755155" class="outline-3">
|
<div id="outline-container-org1a28fcd" class="outline-3">
|
||||||
<h3 id="org0755155">Ground Motion</h3>
|
<h3 id="org1a28fcd">Ground Motion</h3>
|
||||||
<div class="outline-text-3" id="text-org0755155">
|
<div class="outline-text-3" id="text-org1a28fcd">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">disturbances.Dw = timeseries([args.Dw], args.Dw_t);
|
<pre class="src src-matlab">disturbances.Dw = timeseries([args.Dw], args.Dw_t);
|
||||||
</pre>
|
</pre>
|
||||||
@@ -747,9 +540,9 @@ ground.C = args.C;
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7617a55" class="outline-3">
|
<div id="outline-container-org90b72d6" class="outline-3">
|
||||||
<h3 id="org7617a55">Direct Forces</h3>
|
<h3 id="org90b72d6">Direct Forces</h3>
|
||||||
<div class="outline-text-3" id="text-org7617a55">
|
<div class="outline-text-3" id="text-org90b72d6">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">disturbances.Fd = timeseries([args.Fd], args.Fd_t);
|
<pre class="src src-matlab">disturbances.Fd = timeseries([args.Fd], args.Fd_t);
|
||||||
</pre>
|
</pre>
|
||||||
@@ -758,17 +551,17 @@ ground.C = args.C;
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd45a07f" class="outline-2">
|
<div id="outline-container-org93f2d30" class="outline-2">
|
||||||
<h2 id="orgd45a07f"><span class="section-number-2">8</span> Initialize References</h2>
|
<h2 id="org93f2d30"><span class="section-number-2">8</span> Initialize References</h2>
|
||||||
<div class="outline-text-2" id="text-8">
|
<div class="outline-text-2" id="text-8">
|
||||||
<p>
|
<p>
|
||||||
<a id="org7e762f4"></a>
|
<a id="orge24eeb5"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7f187c4" class="outline-3">
|
<div id="outline-container-org81500bb" class="outline-3">
|
||||||
<h3 id="org7f187c4">Function Declaration and Documentation</h3>
|
<h3 id="org81500bb">Function Declaration and Documentation</h3>
|
||||||
<div class="outline-text-3" id="text-org7f187c4">
|
<div class="outline-text-3" id="text-org81500bb">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[references]</span> = <span class="org-function-name">initializeReferences</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
|
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[references]</span> = <span class="org-function-name">initializeReferences</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
|
||||||
<span class="org-comment">% initializeReferences - Initialize the references</span>
|
<span class="org-comment">% initializeReferences - Initialize the references</span>
|
||||||
@@ -783,22 +576,22 @@ ground.C = args.C;
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org28b782e" class="outline-3">
|
<div id="outline-container-org05322ee" class="outline-3">
|
||||||
<h3 id="org28b782e">Optional Parameters</h3>
|
<h3 id="org05322ee">Optional Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-org28b782e">
|
<div class="outline-text-3" id="text-org05322ee">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab"><span class="org-keyword">arguments</span>
|
||||||
stewart
|
<span class="org-variable-name">stewart</span>
|
||||||
args.t double {mustBeNumeric, mustBeReal} = 0
|
<span class="org-variable-name">args</span>.t double {mustBeNumeric, mustBeReal} = 0
|
||||||
args.r double {mustBeNumeric, mustBeReal} = zeros(6, 1)
|
<span class="org-variable-name">args</span>.r double {mustBeNumeric, mustBeReal} = zeros(6, 1)
|
||||||
<span class="org-keyword">end</span>
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc274320" class="outline-3">
|
<div id="outline-container-org6f05adc" class="outline-3">
|
||||||
<h3 id="orgc274320"><span class="section-number-3">8.1</span> Compute the corresponding strut length</h3>
|
<h3 id="org6f05adc"><span class="section-number-3">8.1</span> Compute the corresponding strut length</h3>
|
||||||
<div class="outline-text-3" id="text-8-1">
|
<div class="outline-text-3" id="text-8-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">rL = zeros(6, length(args.t));
|
<pre class="src src-matlab">rL = zeros(6, length(args.t));
|
||||||
@@ -822,9 +615,9 @@ ground.C = args.C;
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org36ac3fa" class="outline-3">
|
<div id="outline-container-orgda73a50" class="outline-3">
|
||||||
<h3 id="org36ac3fa">References</h3>
|
<h3 id="orgda73a50">References</h3>
|
||||||
<div class="outline-text-3" id="text-org36ac3fa">
|
<div class="outline-text-3" id="text-orgda73a50">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">references.r = timeseries(args.r, args.t);
|
<pre class="src src-matlab">references.r = timeseries(args.r, args.t);
|
||||||
references.rL = timeseries(rL, args.t);
|
references.rL = timeseries(rL, args.t);
|
||||||
@@ -836,7 +629,7 @@ references.rL = timeseries(rL, args.t);
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
<p class="date">Created: 2020-03-11 mer. 18:59</p>
|
<p class="date">Created: 2021-01-08 ven. 15:52</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,229 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"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>
|
||||||
<!-- 2020-03-02 lun. 17:57 -->
|
<!-- 2021-01-08 ven. 15:52 -->
|
||||||
<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" />
|
|
||||||
<title>Simulink Project for the Stewart Simscape folder</title>
|
<title>Simulink Project for the Stewart Simscape folder</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<style type="text/css">
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<!--/*--><![CDATA[/*><!--*/
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
.title { text-align: center;
|
|
||||||
margin-bottom: .2em; }
|
|
||||||
.subtitle { text-align: center;
|
|
||||||
font-size: medium;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-top:0; }
|
|
||||||
.todo { font-family: monospace; color: red; }
|
|
||||||
.done { font-family: monospace; color: green; }
|
|
||||||
.priority { font-family: monospace; color: orange; }
|
|
||||||
.tag { background-color: #eee; font-family: monospace;
|
|
||||||
padding: 2px; font-size: 80%; font-weight: normal; }
|
|
||||||
.timestamp { color: #bebebe; }
|
|
||||||
.timestamp-kwd { color: #5f9ea0; }
|
|
||||||
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
|
|
||||||
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
|
|
||||||
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
|
|
||||||
.underline { text-decoration: underline; }
|
|
||||||
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
|
||||||
p.verse { margin-left: 3%; }
|
|
||||||
pre {
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
box-shadow: 3px 3px 3px #eee;
|
|
||||||
padding: 8pt;
|
|
||||||
font-family: monospace;
|
|
||||||
overflow: auto;
|
|
||||||
margin: 1.2em;
|
|
||||||
}
|
|
||||||
pre.src {
|
|
||||||
position: relative;
|
|
||||||
overflow: visible;
|
|
||||||
padding-top: 1.2em;
|
|
||||||
}
|
|
||||||
pre.src:before {
|
|
||||||
display: none;
|
|
||||||
position: absolute;
|
|
||||||
background-color: white;
|
|
||||||
top: -10px;
|
|
||||||
right: 10px;
|
|
||||||
padding: 3px;
|
|
||||||
border: 1px solid black;
|
|
||||||
}
|
|
||||||
pre.src:hover:before { display: inline;}
|
|
||||||
/* Languages per Org manual */
|
|
||||||
pre.src-asymptote:before { content: 'Asymptote'; }
|
|
||||||
pre.src-awk:before { content: 'Awk'; }
|
|
||||||
pre.src-C:before { content: 'C'; }
|
|
||||||
/* pre.src-C++ doesn't work in CSS */
|
|
||||||
pre.src-clojure:before { content: 'Clojure'; }
|
|
||||||
pre.src-css:before { content: 'CSS'; }
|
|
||||||
pre.src-D:before { content: 'D'; }
|
|
||||||
pre.src-ditaa:before { content: 'ditaa'; }
|
|
||||||
pre.src-dot:before { content: 'Graphviz'; }
|
|
||||||
pre.src-calc:before { content: 'Emacs Calc'; }
|
|
||||||
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
|
||||||
pre.src-fortran:before { content: 'Fortran'; }
|
|
||||||
pre.src-gnuplot:before { content: 'gnuplot'; }
|
|
||||||
pre.src-haskell:before { content: 'Haskell'; }
|
|
||||||
pre.src-hledger:before { content: 'hledger'; }
|
|
||||||
pre.src-java:before { content: 'Java'; }
|
|
||||||
pre.src-js:before { content: 'Javascript'; }
|
|
||||||
pre.src-latex:before { content: 'LaTeX'; }
|
|
||||||
pre.src-ledger:before { content: 'Ledger'; }
|
|
||||||
pre.src-lisp:before { content: 'Lisp'; }
|
|
||||||
pre.src-lilypond:before { content: 'Lilypond'; }
|
|
||||||
pre.src-lua:before { content: 'Lua'; }
|
|
||||||
pre.src-matlab:before { content: 'MATLAB'; }
|
|
||||||
pre.src-mscgen:before { content: 'Mscgen'; }
|
|
||||||
pre.src-ocaml:before { content: 'Objective Caml'; }
|
|
||||||
pre.src-octave:before { content: 'Octave'; }
|
|
||||||
pre.src-org:before { content: 'Org mode'; }
|
|
||||||
pre.src-oz:before { content: 'OZ'; }
|
|
||||||
pre.src-plantuml:before { content: 'Plantuml'; }
|
|
||||||
pre.src-processing:before { content: 'Processing.js'; }
|
|
||||||
pre.src-python:before { content: 'Python'; }
|
|
||||||
pre.src-R:before { content: 'R'; }
|
|
||||||
pre.src-ruby:before { content: 'Ruby'; }
|
|
||||||
pre.src-sass:before { content: 'Sass'; }
|
|
||||||
pre.src-scheme:before { content: 'Scheme'; }
|
|
||||||
pre.src-screen:before { content: 'Gnu Screen'; }
|
|
||||||
pre.src-sed:before { content: 'Sed'; }
|
|
||||||
pre.src-sh:before { content: 'shell'; }
|
|
||||||
pre.src-sql:before { content: 'SQL'; }
|
|
||||||
pre.src-sqlite:before { content: 'SQLite'; }
|
|
||||||
/* additional languages in org.el's org-babel-load-languages alist */
|
|
||||||
pre.src-forth:before { content: 'Forth'; }
|
|
||||||
pre.src-io:before { content: 'IO'; }
|
|
||||||
pre.src-J:before { content: 'J'; }
|
|
||||||
pre.src-makefile:before { content: 'Makefile'; }
|
|
||||||
pre.src-maxima:before { content: 'Maxima'; }
|
|
||||||
pre.src-perl:before { content: 'Perl'; }
|
|
||||||
pre.src-picolisp:before { content: 'Pico Lisp'; }
|
|
||||||
pre.src-scala:before { content: 'Scala'; }
|
|
||||||
pre.src-shell:before { content: 'Shell Script'; }
|
|
||||||
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
|
|
||||||
/* additional language identifiers per "defun org-babel-execute"
|
|
||||||
in ob-*.el */
|
|
||||||
pre.src-cpp:before { content: 'C++'; }
|
|
||||||
pre.src-abc:before { content: 'ABC'; }
|
|
||||||
pre.src-coq:before { content: 'Coq'; }
|
|
||||||
pre.src-groovy:before { content: 'Groovy'; }
|
|
||||||
/* additional language identifiers from org-babel-shell-names in
|
|
||||||
ob-shell.el: ob-shell is the only babel language using a lambda to put
|
|
||||||
the execution function name together. */
|
|
||||||
pre.src-bash:before { content: 'bash'; }
|
|
||||||
pre.src-csh:before { content: 'csh'; }
|
|
||||||
pre.src-ash:before { content: 'ash'; }
|
|
||||||
pre.src-dash:before { content: 'dash'; }
|
|
||||||
pre.src-ksh:before { content: 'ksh'; }
|
|
||||||
pre.src-mksh:before { content: 'mksh'; }
|
|
||||||
pre.src-posh:before { content: 'posh'; }
|
|
||||||
/* Additional Emacs modes also supported by the LaTeX listings package */
|
|
||||||
pre.src-ada:before { content: 'Ada'; }
|
|
||||||
pre.src-asm:before { content: 'Assembler'; }
|
|
||||||
pre.src-caml:before { content: 'Caml'; }
|
|
||||||
pre.src-delphi:before { content: 'Delphi'; }
|
|
||||||
pre.src-html:before { content: 'HTML'; }
|
|
||||||
pre.src-idl:before { content: 'IDL'; }
|
|
||||||
pre.src-mercury:before { content: 'Mercury'; }
|
|
||||||
pre.src-metapost:before { content: 'MetaPost'; }
|
|
||||||
pre.src-modula-2:before { content: 'Modula-2'; }
|
|
||||||
pre.src-pascal:before { content: 'Pascal'; }
|
|
||||||
pre.src-ps:before { content: 'PostScript'; }
|
|
||||||
pre.src-prolog:before { content: 'Prolog'; }
|
|
||||||
pre.src-simula:before { content: 'Simula'; }
|
|
||||||
pre.src-tcl:before { content: 'tcl'; }
|
|
||||||
pre.src-tex:before { content: 'TeX'; }
|
|
||||||
pre.src-plain-tex:before { content: 'Plain TeX'; }
|
|
||||||
pre.src-verilog:before { content: 'Verilog'; }
|
|
||||||
pre.src-vhdl:before { content: 'VHDL'; }
|
|
||||||
pre.src-xml:before { content: 'XML'; }
|
|
||||||
pre.src-nxml:before { content: 'XML'; }
|
|
||||||
/* add a generic configuration mode; LaTeX export needs an additional
|
|
||||||
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
|
|
||||||
pre.src-conf:before { content: 'Configuration File'; }
|
|
||||||
|
|
||||||
table { border-collapse:collapse; }
|
|
||||||
caption.t-above { caption-side: top; }
|
|
||||||
caption.t-bottom { caption-side: bottom; }
|
|
||||||
td, th { vertical-align:top; }
|
|
||||||
th.org-right { text-align: center; }
|
|
||||||
th.org-left { text-align: center; }
|
|
||||||
th.org-center { text-align: center; }
|
|
||||||
td.org-right { text-align: right; }
|
|
||||||
td.org-left { text-align: left; }
|
|
||||||
td.org-center { text-align: center; }
|
|
||||||
dt { font-weight: bold; }
|
|
||||||
.footpara { display: inline; }
|
|
||||||
.footdef { margin-bottom: 1em; }
|
|
||||||
.figure { padding: 1em; }
|
|
||||||
.figure p { text-align: center; }
|
|
||||||
.equation-container {
|
|
||||||
display: table;
|
|
||||||
text-align: center;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.equation {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.equation-label {
|
|
||||||
display: table-cell;
|
|
||||||
text-align: right;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.inlinetask {
|
|
||||||
padding: 10px;
|
|
||||||
border: 2px solid gray;
|
|
||||||
margin: 10px;
|
|
||||||
background: #ffffcc;
|
|
||||||
}
|
|
||||||
#org-div-home-and-up
|
|
||||||
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
|
||||||
textarea { overflow-x: auto; }
|
|
||||||
.linenr { font-size: smaller }
|
|
||||||
.code-highlighted { background-color: #ffff00; }
|
|
||||||
.org-info-js_info-navigation { border-style: none; }
|
|
||||||
#org-info-js_console-label
|
|
||||||
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
|
||||||
.org-info-js_search-highlight
|
|
||||||
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
|
||||||
.org-svg { width: 90%; }
|
|
||||||
/*]]>*/-->
|
|
||||||
</style>
|
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
|
||||||
<script src="./js/jquery.min.js"></script>
|
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
<script src="./js/readtheorg.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
|
|
||||||
<!--/*--><![CDATA[/*><!--*/
|
|
||||||
function CodeHighlightOn(elem, id)
|
|
||||||
{
|
|
||||||
var target = document.getElementById(id);
|
|
||||||
if(null != target) {
|
|
||||||
elem.cacheClassElem = elem.className;
|
|
||||||
elem.cacheClassTarget = target.className;
|
|
||||||
target.className = "code-highlighted";
|
|
||||||
elem.className = "code-highlighted";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function CodeHighlightOff(elem, id)
|
|
||||||
{
|
|
||||||
var target = document.getElementById(id);
|
|
||||||
if(elem.cacheClassElem)
|
|
||||||
elem.className = elem.cacheClassElem;
|
|
||||||
if(elem.cacheClassTarget)
|
|
||||||
target.className = elem.cacheClassTarget;
|
|
||||||
}
|
|
||||||
/*]]>*///-->
|
|
||||||
// @license-end
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
@@ -232,7 +18,6 @@
|
|||||||
<a accesskey="H" href="./index.html"> HOME </a>
|
<a accesskey="H" href="./index.html"> HOME </a>
|
||||||
</div><div id="content">
|
</div><div id="content">
|
||||||
<h1 class="title">Simulink Project for the Stewart Simscape folder</h1>
|
<h1 class="title">Simulink Project for the Stewart Simscape folder</h1>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
A Simulink Project is used for the study of Stewart platforms using Simscape.
|
A Simulink Project is used for the study of Stewart platforms using Simscape.
|
||||||
</p>
|
</p>
|
||||||
@@ -299,7 +84,7 @@ The project also permits to automatically add defined folder to the path when th
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
<p class="date">Created: 2020-03-02 lun. 17:57</p>
|
<p class="date">Created: 2021-01-08 ven. 15:52</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,239 +1,32 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"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>
|
||||||
<!-- 2020-03-02 lun. 17:57 -->
|
<!-- 2021-01-08 ven. 15:53 -->
|
||||||
<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" />
|
|
||||||
<title>Stewart Platform - Static Analysis</title>
|
<title>Stewart Platform - Static Analysis</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<style type="text/css">
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<!--/*--><![CDATA[/*><!--*/
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
.title { text-align: center;
|
|
||||||
margin-bottom: .2em; }
|
|
||||||
.subtitle { text-align: center;
|
|
||||||
font-size: medium;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-top:0; }
|
|
||||||
.todo { font-family: monospace; color: red; }
|
|
||||||
.done { font-family: monospace; color: green; }
|
|
||||||
.priority { font-family: monospace; color: orange; }
|
|
||||||
.tag { background-color: #eee; font-family: monospace;
|
|
||||||
padding: 2px; font-size: 80%; font-weight: normal; }
|
|
||||||
.timestamp { color: #bebebe; }
|
|
||||||
.timestamp-kwd { color: #5f9ea0; }
|
|
||||||
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
|
|
||||||
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
|
|
||||||
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
|
|
||||||
.underline { text-decoration: underline; }
|
|
||||||
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
|
||||||
p.verse { margin-left: 3%; }
|
|
||||||
pre {
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
box-shadow: 3px 3px 3px #eee;
|
|
||||||
padding: 8pt;
|
|
||||||
font-family: monospace;
|
|
||||||
overflow: auto;
|
|
||||||
margin: 1.2em;
|
|
||||||
}
|
|
||||||
pre.src {
|
|
||||||
position: relative;
|
|
||||||
overflow: visible;
|
|
||||||
padding-top: 1.2em;
|
|
||||||
}
|
|
||||||
pre.src:before {
|
|
||||||
display: none;
|
|
||||||
position: absolute;
|
|
||||||
background-color: white;
|
|
||||||
top: -10px;
|
|
||||||
right: 10px;
|
|
||||||
padding: 3px;
|
|
||||||
border: 1px solid black;
|
|
||||||
}
|
|
||||||
pre.src:hover:before { display: inline;}
|
|
||||||
/* Languages per Org manual */
|
|
||||||
pre.src-asymptote:before { content: 'Asymptote'; }
|
|
||||||
pre.src-awk:before { content: 'Awk'; }
|
|
||||||
pre.src-C:before { content: 'C'; }
|
|
||||||
/* pre.src-C++ doesn't work in CSS */
|
|
||||||
pre.src-clojure:before { content: 'Clojure'; }
|
|
||||||
pre.src-css:before { content: 'CSS'; }
|
|
||||||
pre.src-D:before { content: 'D'; }
|
|
||||||
pre.src-ditaa:before { content: 'ditaa'; }
|
|
||||||
pre.src-dot:before { content: 'Graphviz'; }
|
|
||||||
pre.src-calc:before { content: 'Emacs Calc'; }
|
|
||||||
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
|
||||||
pre.src-fortran:before { content: 'Fortran'; }
|
|
||||||
pre.src-gnuplot:before { content: 'gnuplot'; }
|
|
||||||
pre.src-haskell:before { content: 'Haskell'; }
|
|
||||||
pre.src-hledger:before { content: 'hledger'; }
|
|
||||||
pre.src-java:before { content: 'Java'; }
|
|
||||||
pre.src-js:before { content: 'Javascript'; }
|
|
||||||
pre.src-latex:before { content: 'LaTeX'; }
|
|
||||||
pre.src-ledger:before { content: 'Ledger'; }
|
|
||||||
pre.src-lisp:before { content: 'Lisp'; }
|
|
||||||
pre.src-lilypond:before { content: 'Lilypond'; }
|
|
||||||
pre.src-lua:before { content: 'Lua'; }
|
|
||||||
pre.src-matlab:before { content: 'MATLAB'; }
|
|
||||||
pre.src-mscgen:before { content: 'Mscgen'; }
|
|
||||||
pre.src-ocaml:before { content: 'Objective Caml'; }
|
|
||||||
pre.src-octave:before { content: 'Octave'; }
|
|
||||||
pre.src-org:before { content: 'Org mode'; }
|
|
||||||
pre.src-oz:before { content: 'OZ'; }
|
|
||||||
pre.src-plantuml:before { content: 'Plantuml'; }
|
|
||||||
pre.src-processing:before { content: 'Processing.js'; }
|
|
||||||
pre.src-python:before { content: 'Python'; }
|
|
||||||
pre.src-R:before { content: 'R'; }
|
|
||||||
pre.src-ruby:before { content: 'Ruby'; }
|
|
||||||
pre.src-sass:before { content: 'Sass'; }
|
|
||||||
pre.src-scheme:before { content: 'Scheme'; }
|
|
||||||
pre.src-screen:before { content: 'Gnu Screen'; }
|
|
||||||
pre.src-sed:before { content: 'Sed'; }
|
|
||||||
pre.src-sh:before { content: 'shell'; }
|
|
||||||
pre.src-sql:before { content: 'SQL'; }
|
|
||||||
pre.src-sqlite:before { content: 'SQLite'; }
|
|
||||||
/* additional languages in org.el's org-babel-load-languages alist */
|
|
||||||
pre.src-forth:before { content: 'Forth'; }
|
|
||||||
pre.src-io:before { content: 'IO'; }
|
|
||||||
pre.src-J:before { content: 'J'; }
|
|
||||||
pre.src-makefile:before { content: 'Makefile'; }
|
|
||||||
pre.src-maxima:before { content: 'Maxima'; }
|
|
||||||
pre.src-perl:before { content: 'Perl'; }
|
|
||||||
pre.src-picolisp:before { content: 'Pico Lisp'; }
|
|
||||||
pre.src-scala:before { content: 'Scala'; }
|
|
||||||
pre.src-shell:before { content: 'Shell Script'; }
|
|
||||||
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
|
|
||||||
/* additional language identifiers per "defun org-babel-execute"
|
|
||||||
in ob-*.el */
|
|
||||||
pre.src-cpp:before { content: 'C++'; }
|
|
||||||
pre.src-abc:before { content: 'ABC'; }
|
|
||||||
pre.src-coq:before { content: 'Coq'; }
|
|
||||||
pre.src-groovy:before { content: 'Groovy'; }
|
|
||||||
/* additional language identifiers from org-babel-shell-names in
|
|
||||||
ob-shell.el: ob-shell is the only babel language using a lambda to put
|
|
||||||
the execution function name together. */
|
|
||||||
pre.src-bash:before { content: 'bash'; }
|
|
||||||
pre.src-csh:before { content: 'csh'; }
|
|
||||||
pre.src-ash:before { content: 'ash'; }
|
|
||||||
pre.src-dash:before { content: 'dash'; }
|
|
||||||
pre.src-ksh:before { content: 'ksh'; }
|
|
||||||
pre.src-mksh:before { content: 'mksh'; }
|
|
||||||
pre.src-posh:before { content: 'posh'; }
|
|
||||||
/* Additional Emacs modes also supported by the LaTeX listings package */
|
|
||||||
pre.src-ada:before { content: 'Ada'; }
|
|
||||||
pre.src-asm:before { content: 'Assembler'; }
|
|
||||||
pre.src-caml:before { content: 'Caml'; }
|
|
||||||
pre.src-delphi:before { content: 'Delphi'; }
|
|
||||||
pre.src-html:before { content: 'HTML'; }
|
|
||||||
pre.src-idl:before { content: 'IDL'; }
|
|
||||||
pre.src-mercury:before { content: 'Mercury'; }
|
|
||||||
pre.src-metapost:before { content: 'MetaPost'; }
|
|
||||||
pre.src-modula-2:before { content: 'Modula-2'; }
|
|
||||||
pre.src-pascal:before { content: 'Pascal'; }
|
|
||||||
pre.src-ps:before { content: 'PostScript'; }
|
|
||||||
pre.src-prolog:before { content: 'Prolog'; }
|
|
||||||
pre.src-simula:before { content: 'Simula'; }
|
|
||||||
pre.src-tcl:before { content: 'tcl'; }
|
|
||||||
pre.src-tex:before { content: 'TeX'; }
|
|
||||||
pre.src-plain-tex:before { content: 'Plain TeX'; }
|
|
||||||
pre.src-verilog:before { content: 'Verilog'; }
|
|
||||||
pre.src-vhdl:before { content: 'VHDL'; }
|
|
||||||
pre.src-xml:before { content: 'XML'; }
|
|
||||||
pre.src-nxml:before { content: 'XML'; }
|
|
||||||
/* add a generic configuration mode; LaTeX export needs an additional
|
|
||||||
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
|
|
||||||
pre.src-conf:before { content: 'Configuration File'; }
|
|
||||||
|
|
||||||
table { border-collapse:collapse; }
|
|
||||||
caption.t-above { caption-side: top; }
|
|
||||||
caption.t-bottom { caption-side: bottom; }
|
|
||||||
td, th { vertical-align:top; }
|
|
||||||
th.org-right { text-align: center; }
|
|
||||||
th.org-left { text-align: center; }
|
|
||||||
th.org-center { text-align: center; }
|
|
||||||
td.org-right { text-align: right; }
|
|
||||||
td.org-left { text-align: left; }
|
|
||||||
td.org-center { text-align: center; }
|
|
||||||
dt { font-weight: bold; }
|
|
||||||
.footpara { display: inline; }
|
|
||||||
.footdef { margin-bottom: 1em; }
|
|
||||||
.figure { padding: 1em; }
|
|
||||||
.figure p { text-align: center; }
|
|
||||||
.equation-container {
|
|
||||||
display: table;
|
|
||||||
text-align: center;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.equation {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.equation-label {
|
|
||||||
display: table-cell;
|
|
||||||
text-align: right;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.inlinetask {
|
|
||||||
padding: 10px;
|
|
||||||
border: 2px solid gray;
|
|
||||||
margin: 10px;
|
|
||||||
background: #ffffcc;
|
|
||||||
}
|
|
||||||
#org-div-home-and-up
|
|
||||||
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
|
||||||
textarea { overflow-x: auto; }
|
|
||||||
.linenr { font-size: smaller }
|
|
||||||
.code-highlighted { background-color: #ffff00; }
|
|
||||||
.org-info-js_info-navigation { border-style: none; }
|
|
||||||
#org-info-js_console-label
|
|
||||||
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
|
||||||
.org-info-js_search-highlight
|
|
||||||
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
|
||||||
.org-svg { width: 90%; }
|
|
||||||
/*]]>*/-->
|
|
||||||
</style>
|
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
|
||||||
<script src="./js/jquery.min.js"></script>
|
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
<script src="./js/readtheorg.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
|
|
||||||
<!--/*--><![CDATA[/*><!--*/
|
|
||||||
function CodeHighlightOn(elem, id)
|
|
||||||
{
|
|
||||||
var target = document.getElementById(id);
|
|
||||||
if(null != target) {
|
|
||||||
elem.cacheClassElem = elem.className;
|
|
||||||
elem.cacheClassTarget = target.className;
|
|
||||||
target.className = "code-highlighted";
|
|
||||||
elem.className = "code-highlighted";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function CodeHighlightOff(elem, id)
|
|
||||||
{
|
|
||||||
var target = document.getElementById(id);
|
|
||||||
if(elem.cacheClassElem)
|
|
||||||
elem.className = elem.cacheClassElem;
|
|
||||||
if(elem.cacheClassTarget)
|
|
||||||
target.className = elem.cacheClassTarget;
|
|
||||||
}
|
|
||||||
/*]]>*///-->
|
|
||||||
// @license-end
|
|
||||||
</script>
|
|
||||||
<script>
|
<script>
|
||||||
MathJax = {
|
MathJax = {
|
||||||
tex: { macros: {
|
svg: {
|
||||||
bm: ["\\boldsymbol{#1}",1],
|
scale: 1,
|
||||||
}
|
fontCache: "global"
|
||||||
|
},
|
||||||
|
tex: {
|
||||||
|
tags: "ams",
|
||||||
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript"
|
<script id="MathJax-script" async
|
||||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
@@ -246,20 +39,20 @@
|
|||||||
<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="#orgc502e97">1. Coupling</a></li>
|
<li><a href="#org5d87fd3">1. Coupling</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc502e97" class="outline-2">
|
<div id="outline-container-org5d87fd3" class="outline-2">
|
||||||
<h2 id="orgc502e97"><span class="section-number-2">1</span> Coupling</h2>
|
<h2 id="org5d87fd3"><span class="section-number-2">1</span> Coupling</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
What causes the coupling from \(F_i\) to \(X_i\) ?
|
What causes the coupling from \(F_i\) to \(X_i\) ?
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="org41430df" class="figure">
|
<div id="orgd94ead3" class="figure">
|
||||||
<p><img src="figs/coupling.png" alt="coupling.png" />
|
<p><img src="figs/coupling.png" alt="coupling.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Block diagram to control an hexapod</p>
|
<p><span class="figure-number">Figure 1: </span>Block diagram to control an hexapod</p>
|
||||||
@@ -281,7 +74,7 @@ Thus, the system is uncoupled if \(G\) and \(K\) are diagonal.
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
<p class="date">Created: 2020-03-02 lun. 17:57</p>
|
<p class="date">Created: 2021-01-08 ven. 15:53</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
1755
mat/APA300ML.STEP
Normal file
BIN
mat/APA300ML.mat
Normal file
12918
mat/base_plate.STEP
Normal file
BIN
mat/flexor_025.mat
Normal file
4118
mat/flexor_025.step
Executable file
2147
mat/flexor_ID16.STEP
Normal file
BIN
mat/flexor_ID16.mat
Normal file
BIN
mat/motion_error_ol.mat
Normal file
BIN
mat/strut_encoder.mat
Normal file
63197
mat/strut_encoder.step
Normal file
11895
mat/top_plate.STEP
Normal file
@@ -23,8 +23,9 @@ stewart = computeJacobian(stewart);
|
|||||||
stewart = initializeStewartPose(stewart);
|
stewart = initializeStewartPose(stewart);
|
||||||
stewart = initializeInertialSensor(stewart, 'type', 'none');
|
stewart = initializeInertialSensor(stewart, 'type', 'none');
|
||||||
|
|
||||||
ground = initializeGround('type', 'none');
|
ground = initializeGround('type', 'rigid', 'rot_point', stewart.platform_F.FO_A);
|
||||||
payload = initializePayload('type', 'none');
|
payload = initializePayload('type', 'none');
|
||||||
|
controller = initializeController('type', 'open-loop');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -23,17 +23,14 @@ stewart = computeJacobian(stewart);
|
|||||||
stewart = initializeStewartPose(stewart);
|
stewart = initializeStewartPose(stewart);
|
||||||
stewart = initializeInertialSensor(stewart, 'type', 'none');
|
stewart = initializeInertialSensor(stewart, 'type', 'none');
|
||||||
|
|
||||||
ground = initializeGround('type', 'none');
|
ground = initializeGround('type', 'rigid', 'rot_point', stewart.platform_F.FO_A);
|
||||||
payload = initializePayload('type', 'none');
|
payload = initializePayload('type', 'none');
|
||||||
|
controller = initializeController('type', 'open-loop');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% And we identify the dynamics from force actuators to force sensors.
|
% And we identify the dynamics from force actuators to force sensors.
|
||||||
|
|
||||||
%% Options for Linearized
|
|
||||||
options = linearizeOptions;
|
|
||||||
options.SampleTime = 0;
|
|
||||||
|
|
||||||
%% Name of the Simulink File
|
%% Name of the Simulink File
|
||||||
mdl = 'stewart_platform_model';
|
mdl = 'stewart_platform_model';
|
||||||
|
|
||||||
@@ -43,7 +40,7 @@ io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1;
|
|||||||
io(io_i) = linio([mdl, '/Stewart Platform'], 1, 'openoutput', [], 'Taum'); io_i = io_i + 1; % Force Sensor Outputs [N]
|
io(io_i) = linio([mdl, '/Stewart Platform'], 1, 'openoutput', [], 'Taum'); io_i = io_i + 1; % Force Sensor Outputs [N]
|
||||||
|
|
||||||
%% Run the linearization
|
%% Run the linearization
|
||||||
G = linearize(mdl, io, options);
|
G = linearize(mdl, io);
|
||||||
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||||
G.OutputName = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'};
|
G.OutputName = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'};
|
||||||
|
|
||||||
@@ -88,7 +85,7 @@ linkaxes([ax1,ax2],'x');
|
|||||||
% We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
|
% We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
|
||||||
|
|
||||||
stewart = initializeJointDynamics(stewart, 'type_F', 'universal', 'type_M', 'spherical');
|
stewart = initializeJointDynamics(stewart, 'type_F', 'universal', 'type_M', 'spherical');
|
||||||
Gf = linearize(mdl, io, options);
|
Gf = linearize(mdl, io);
|
||||||
Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||||
Gf.OutputName = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'};
|
Gf.OutputName = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'};
|
||||||
|
|
||||||
@@ -97,7 +94,7 @@ Gf.OutputName = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'};
|
|||||||
% We now use the amplified actuators and re-identify the dynamics
|
% We now use the amplified actuators and re-identify the dynamics
|
||||||
|
|
||||||
stewart = initializeAmplifiedStrutDynamics(stewart);
|
stewart = initializeAmplifiedStrutDynamics(stewart);
|
||||||
Ga = linearize(mdl, io, options);
|
Ga = linearize(mdl, io);
|
||||||
Ga.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
Ga.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||||
Ga.OutputName = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'};
|
Ga.OutputName = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'};
|
||||||
|
|
||||||
|
@@ -22,8 +22,9 @@ stewart = computeJacobian(stewart);
|
|||||||
stewart = initializeStewartPose(stewart);
|
stewart = initializeStewartPose(stewart);
|
||||||
stewart = initializeInertialSensor(stewart, 'type', 'accelerometer', 'freq', 5e3);
|
stewart = initializeInertialSensor(stewart, 'type', 'accelerometer', 'freq', 5e3);
|
||||||
|
|
||||||
ground = initializeGround('type', 'none');
|
ground = initializeGround('type', 'rigid', 'rot_point', stewart.platform_F.FO_A);
|
||||||
payload = initializePayload('type', 'none');
|
payload = initializePayload('type', 'none');
|
||||||
|
controller = initializeController('type', 'open-loop');
|
||||||
|
|
||||||
%% Options for Linearized
|
%% Options for Linearized
|
||||||
options = linearizeOptions;
|
options = linearizeOptions;
|
||||||
|
@@ -9,12 +9,8 @@
|
|||||||
#+HTML_LINK_HOME: ./index.html
|
#+HTML_LINK_HOME: ./index.html
|
||||||
#+HTML_LINK_UP: ./index.html
|
#+HTML_LINK_UP: ./index.html
|
||||||
|
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
|
|
||||||
|
|
||||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
#+PROPERTY: header-args:matlab+ :comments org
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
@@ -25,7 +21,7 @@
|
|||||||
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
|
||||||
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}")
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
||||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||||
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||||
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||||
|
@@ -9,12 +9,8 @@
|
|||||||
#+HTML_LINK_HOME: ./index.html
|
#+HTML_LINK_HOME: ./index.html
|
||||||
#+HTML_LINK_UP: ./index.html
|
#+HTML_LINK_UP: ./index.html
|
||||||
|
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
|
|
||||||
|
|
||||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
#+PROPERTY: header-args:matlab+ :comments org
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
@@ -25,7 +21,7 @@
|
|||||||
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
|
||||||
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}")
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
||||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||||
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||||
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||||
|
@@ -9,12 +9,8 @@
|
|||||||
#+HTML_LINK_HOME: ./index.html
|
#+HTML_LINK_HOME: ./index.html
|
||||||
#+HTML_LINK_UP: ./index.html
|
#+HTML_LINK_UP: ./index.html
|
||||||
|
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
|
|
||||||
|
|
||||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
#+PROPERTY: header-args:matlab+ :comments org
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
@@ -25,7 +21,7 @@
|
|||||||
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
|
||||||
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}")
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
||||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||||
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||||
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||||
|
@@ -9,12 +9,8 @@
|
|||||||
#+HTML_LINK_HOME: ./index.html
|
#+HTML_LINK_HOME: ./index.html
|
||||||
#+HTML_LINK_UP: ./index.html
|
#+HTML_LINK_UP: ./index.html
|
||||||
|
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
|
|
||||||
|
|
||||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
#+PROPERTY: header-args:matlab+ :comments org
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
@@ -25,7 +21,7 @@
|
|||||||
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
|
||||||
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}")
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
||||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||||
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||||
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||||
|
@@ -9,12 +9,8 @@
|
|||||||
#+HTML_LINK_HOME: ./index.html
|
#+HTML_LINK_HOME: ./index.html
|
||||||
#+HTML_LINK_UP: ./index.html
|
#+HTML_LINK_UP: ./index.html
|
||||||
|
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
|
|
||||||
|
|
||||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
#+PROPERTY: header-args:matlab+ :comments org
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
@@ -25,7 +21,7 @@
|
|||||||
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
|
||||||
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}")
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
||||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||||
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||||
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||||
|
@@ -9,12 +9,8 @@
|
|||||||
#+HTML_LINK_HOME: ./index.html
|
#+HTML_LINK_HOME: ./index.html
|
||||||
#+HTML_LINK_UP: ./index.html
|
#+HTML_LINK_UP: ./index.html
|
||||||
|
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
|
|
||||||
|
|
||||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
#+PROPERTY: header-args:matlab+ :comments org
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
@@ -25,7 +21,7 @@
|
|||||||
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
|
||||||
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}")
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
||||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||||
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||||
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||||
|
1718
org/flexible-stewart-platform.org
Normal file
@@ -9,12 +9,8 @@
|
|||||||
#+HTML_LINK_HOME: ./index.html
|
#+HTML_LINK_HOME: ./index.html
|
||||||
#+HTML_LINK_UP: ./index.html
|
#+HTML_LINK_UP: ./index.html
|
||||||
|
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
|
|
||||||
|
|
||||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
#+PROPERTY: header-args:matlab+ :comments org
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
@@ -25,7 +21,7 @@
|
|||||||
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
|
||||||
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}")
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
||||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||||
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||||
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||||
|
@@ -1,13 +1,12 @@
|
|||||||
#+TITLE: Stewart Platforms
|
#+TITLE: Stewart Platforms
|
||||||
:DRAWER:
|
:DRAWER:
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
#+HTML_LINK_HOME: https://research.tdehaeze.xyz/
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
#+HTML_LINK_UP: https://research.tdehaeze.xyz/
|
||||||
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
|
|
||||||
|
|
||||||
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}")
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
|
|
||||||
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
||||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||||
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||||
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||||
@@ -20,15 +19,15 @@
|
|||||||
|
|
||||||
* Introduction :ignore:
|
* Introduction :ignore:
|
||||||
The goal of this project is to provide a Matlab/Simscape Toolbox to study Stewart platforms.
|
The goal of this project is to provide a Matlab/Simscape Toolbox to study Stewart platforms.
|
||||||
|
|
||||||
The project is divided into several section listed below.
|
The project is divided into several section listed below.
|
||||||
|
The git repository of the project is accessible [[https://git.tdehaeze.xyz/tdehaeze/stewart-simscape][here]].
|
||||||
|
|
||||||
* Simulink Project ([[file:simulink-project.org][link]])
|
* Simulink Project ([[file:simulink-project.org][link]])
|
||||||
The project is managed with a *Simulink Project*.
|
The project is managed with a *Simulink Project*.
|
||||||
Such project is briefly presented [[file:simulink-project.org][here]].
|
Such project is briefly presented [[file:simulink-project.org][here]].
|
||||||
|
|
||||||
* Stewart Platform Architecture Definition ([[file:stewart-architecture.org][link]])
|
* Stewart Platform Architecture Definition ([[file:stewart-architecture.org][link]])
|
||||||
The way the Stewart Platform is defined [[file:stewart-architecture.org][here]].
|
The way the Stewart Platform is defined is explained [[file:stewart-architecture.org][here]].
|
||||||
|
|
||||||
All the geometrical parameters are defined including:
|
All the geometrical parameters are defined including:
|
||||||
- Definition of the location of the frames
|
- Definition of the location of the frames
|
||||||
|
@@ -9,12 +9,8 @@
|
|||||||
#+HTML_LINK_HOME: ./index.html
|
#+HTML_LINK_HOME: ./index.html
|
||||||
#+HTML_LINK_UP: ./index.html
|
#+HTML_LINK_UP: ./index.html
|
||||||
|
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
|
|
||||||
|
|
||||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
#+PROPERTY: header-args:matlab+ :comments org
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
@@ -25,7 +21,7 @@
|
|||||||
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
|
||||||
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}")
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
||||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||||
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||||
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||||
@@ -130,6 +126,7 @@ The amount of these deflections are a function of the applied wrench as well as
|
|||||||
As explain in [[file:stewart-architecture.org][this]] document, each Actuator is modeled by 3 elements in parallel:
|
As explain in [[file:stewart-architecture.org][this]] document, each Actuator is modeled by 3 elements in parallel:
|
||||||
- A spring with a stiffness $k_{i}$
|
- A spring with a stiffness $k_{i}$
|
||||||
- A dashpot with a damping $c_{i}$
|
- A dashpot with a damping $c_{i}$
|
||||||
|
- A force source $\tau_i$
|
||||||
|
|
||||||
The stiffness of the actuator $k_i$ links the applied actuator force $\delta \tau_i$ and the corresponding small deflection $\delta l_i$:
|
The stiffness of the actuator $k_i$ links the applied actuator force $\delta \tau_i$ and the corresponding small deflection $\delta l_i$:
|
||||||
\begin{equation*}
|
\begin{equation*}
|
||||||
@@ -612,6 +609,207 @@ data2orgtable([1e6*L_min, 1e6*L_max, 1e6*(min(min(rs)))], {}, {'=L_min= [$\mu m$
|
|||||||
*** TODO Do that by slice :noexport:
|
*** TODO Do that by slice :noexport:
|
||||||
using this function https://fr.mathworks.com/help/matlab/ref/contour3.html
|
using this function https://fr.mathworks.com/help/matlab/ref/contour3.html
|
||||||
|
|
||||||
|
* Estimation of the Joint required Stroke
|
||||||
|
** Introduction :ignore:
|
||||||
|
** Matlab Init :noexport:ignore:
|
||||||
|
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||||
|
<<matlab-dir>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none :results silent :noweb yes
|
||||||
|
<<matlab-init>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none :exports none
|
||||||
|
simulinkproject('../');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Estimation with an analytical model
|
||||||
|
Let's first define the Stewart Platform Geometry.
|
||||||
|
#+begin_src matlab
|
||||||
|
stewart = initializeStewartPlatform();
|
||||||
|
stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 150e-3);
|
||||||
|
stewart = generateGeneralConfiguration(stewart);
|
||||||
|
stewart = computeJointsPose(stewart, 'AP', [0; 0; 0]);
|
||||||
|
|
||||||
|
As_init = stewart.geometry.As;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
Tx_max = 60e-6; % Translation [m]
|
||||||
|
Ty_max = 60e-6; % Translation [m]
|
||||||
|
Tz_max = 60e-6; % Translation [m]
|
||||||
|
Rx_max = 30e-6; % Rotation [rad]
|
||||||
|
Ry_max = 30e-6; % Rotation [rad]
|
||||||
|
Rz_max = 0; % Rotation [rad]
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
Ps = [2*(dec2bin(0:5^2-1,5)-'0')-1, zeros(5^2, 1)].*[Tx_max Ty_max Tz_max Rx_max Ry_max Rz_max];
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
flex_ang = zeros(size(Ps, 1), 6);
|
||||||
|
Rxs = zeros(size(Ps, 1), 6)
|
||||||
|
Rys = zeros(size(Ps, 1), 6)
|
||||||
|
Rzs = zeros(size(Ps, 1), 6)
|
||||||
|
|
||||||
|
for Ps_i = 1:size(Ps, 1)
|
||||||
|
Rx = [1 0 0;
|
||||||
|
0 cos(Ps(Ps_i, 4)) -sin(Ps(Ps_i, 4));
|
||||||
|
0 sin(Ps(Ps_i, 4)) cos(Ps(Ps_i, 4))];
|
||||||
|
|
||||||
|
Ry = [ cos(Ps(Ps_i, 5)) 0 sin(Ps(Ps_i, 5));
|
||||||
|
0 1 0;
|
||||||
|
-sin(Ps(Ps_i, 5)) 0 cos(Ps(Ps_i, 5))];
|
||||||
|
|
||||||
|
Rz = [cos(Ps(Ps_i, 6)) -sin(Ps(Ps_i, 6)) 0;
|
||||||
|
sin(Ps(Ps_i, 6)) cos(Ps(Ps_i, 6)) 0;
|
||||||
|
0 0 1];
|
||||||
|
|
||||||
|
ARB = Rz*Ry*Rx;
|
||||||
|
|
||||||
|
stewart = computeJointsPose(stewart, 'AP', Ps(Ps_i, 1:3)', 'ARB', ARB);
|
||||||
|
|
||||||
|
flex_ang(Ps_i, :) = acos(sum(As_init.*stewart.geometry.As));
|
||||||
|
|
||||||
|
for l_i = 1:6
|
||||||
|
MRf = stewart.platform_M.MRb(:,:,l_i)*(ARB')*(stewart.platform_F.FRa(:,:,l_i)');
|
||||||
|
|
||||||
|
Rys(Ps_i, l_i) = atan2(MRf(1,3), sqrt(MRf(1,1)^2 + MRf(2,2)^2));
|
||||||
|
Rxs(Ps_i, l_i) = atan2(-MRf(2,3)/cos(Rys(Ps_i, l_i)), MRf(3,3)/cos(Rys(Ps_i, l_i)));
|
||||||
|
Rzs(Ps_i, l_i) = atan2(-MRf(1,2)/cos(Rys(Ps_i, l_i)), MRf(1,1)/cos(Rys(Ps_i, l_i)));
|
||||||
|
end
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And the maximum bending of the flexible joints is: (in [mrad])
|
||||||
|
#+begin_src matlab :results replace value
|
||||||
|
1e3*max(max(abs(flex_ang)))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
: 1.1704
|
||||||
|
|
||||||
|
#+begin_src matlab :results replace value
|
||||||
|
1e3*max(max(sqrt(Rxs.^2 + Rys.^2)))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
: 0.075063
|
||||||
|
|
||||||
|
#+begin_src matlab :results replace value
|
||||||
|
1e3*max(max(Rzs))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
: 0.04666
|
||||||
|
|
||||||
|
** Estimation using the Simscape Model
|
||||||
|
*** Model Init
|
||||||
|
#+begin_src matlab
|
||||||
|
open('stewart_platform_model.slx')
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
stewart = initializeStewartPlatform();
|
||||||
|
stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 45e-3);
|
||||||
|
stewart = generateGeneralConfiguration(stewart);
|
||||||
|
stewart = computeJointsPose(stewart);
|
||||||
|
stewart = initializeStrutDynamics(stewart);
|
||||||
|
stewart = initializeJointDynamics(stewart, 'type_F', 'universal_p', 'type_M', 'spherical_p');
|
||||||
|
stewart = initializeCylindricalPlatforms(stewart);
|
||||||
|
stewart = initializeCylindricalStruts(stewart);
|
||||||
|
stewart = computeJacobian(stewart);
|
||||||
|
stewart = initializeStewartPose(stewart);
|
||||||
|
stewart = initializeInertialSensor(stewart, 'type', 'accelerometer', 'freq', 5e3);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
ground = initializeGround('type', 'rigid');
|
||||||
|
payload = initializePayload('type', 'none');
|
||||||
|
controller = initializeController('type', 'open-loop');
|
||||||
|
disturbances = initializeDisturbances();
|
||||||
|
references = initializeReferences(stewart);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Controller design to be close to the wanted displacement
|
||||||
|
#+begin_src matlab
|
||||||
|
%% Name of the Simulink File
|
||||||
|
mdl = 'stewart_platform_model';
|
||||||
|
|
||||||
|
%% Input/Output definition
|
||||||
|
clear io; io_i = 1;
|
||||||
|
io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Force Inputs [N]
|
||||||
|
io(io_i) = linio([mdl, '/Stewart Platform'], 1, 'openoutput', [], 'dLm'); io_i = io_i + 1; % Relative Displacement Outputs [m]
|
||||||
|
|
||||||
|
%% Run the linearization
|
||||||
|
G = linearize(mdl, io);
|
||||||
|
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||||
|
G.OutputName = {'L1', 'L2', 'L3', 'L4', 'L5', 'L6'};
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
wc = 2*pi*30;
|
||||||
|
Kl = diag(1./diag(abs(freqresp(G, wc)))) * wc/s * 1/(1 + s/3/wc);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
controller = initializeController('type', 'ref-track-L');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Simulations
|
||||||
|
#+begin_src matlab
|
||||||
|
Tx_max = 60e-6; % Translation [m]
|
||||||
|
Ty_max = 60e-6; % Translation [m]
|
||||||
|
Tz_max = 60e-6; % Translation [m]
|
||||||
|
Rx_max = 30e-6; % Rotation [rad]
|
||||||
|
Ry_max = 30e-6; % Rotation [rad]
|
||||||
|
Rz_max = 0; % Rotation [rad]
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
Ps = [2*(dec2bin(0:5^2-1,5)-'0')-1, zeros(5^2, 1)].*[Tx_max Ty_max Tz_max Rx_max Ry_max Rz_max];
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
cl_perf = zeros(size(Ps, 1), 1); % Closed loop performance [percentage]
|
||||||
|
Rs = zeros(size(Ps, 1), 5); % Max Flexor angles for the 6 legs [mrad]
|
||||||
|
|
||||||
|
for Ps_i = 1:size(Ps, 1)
|
||||||
|
fprintf('Experiment %i over %i', Ps_i, size(Ps, 1));
|
||||||
|
|
||||||
|
references = initializeReferences(stewart, 't', 0, 'r', Ps(Ps_i, :)');
|
||||||
|
set_param('stewart_platform_model','StopTime','0.1');
|
||||||
|
sim('stewart_platform_model');
|
||||||
|
|
||||||
|
cl_perf(Ps_i) = 100*max(abs((simout.y.dLm.Data(end, :) - references.rL.Data(:,1,1)')./simout.y.dLm.Data(end, :)));
|
||||||
|
Rs(Ps_i, :) = [max(abs(1e3*simout.y.Rf.Data(end, 1:2:end))), max(abs(1e3*simout.y.Rf.Data(end, 2:2:end))), max(abs(1e3*simout.y.Rm.Data(end, 1:3:end))), max(abs(1e3*simout.y.Rm.Data(end, 2:3:end))), max(abs(1e3*simout.y.Rm.Data(end, 3:3:end)))]';
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Verify that the simulations are all correct:
|
||||||
|
#+begin_src matlab :results replace value
|
||||||
|
max(cl_perf)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
: 8.1147
|
||||||
|
|
||||||
|
*** Results
|
||||||
|
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
|
||||||
|
data2orgtable(max(Rs)', {'Rx bot', 'Ry bot', 'Rx top', 'Ry top', 'Rz top'}, {'Stroke [mrad]'}, ' %.2f ');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
| | Stroke [mrad] |
|
||||||
|
|--------+---------------|
|
||||||
|
| Rx bot | 1.03 |
|
||||||
|
| Ry bot | 0.93 |
|
||||||
|
| Rx top | 1.06 |
|
||||||
|
| Ry top | 0.95 |
|
||||||
|
| Rz top | 0.03 |
|
||||||
|
|
||||||
* Functions
|
* Functions
|
||||||
<<sec:functions>>
|
<<sec:functions>>
|
||||||
** =computeJacobian=: Compute the Jacobian Matrix
|
** =computeJacobian=: Compute the Jacobian Matrix
|
||||||
|
84
org/nass.org
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
#+TITLE: Stewart Platform - NASS
|
||||||
|
:DRAWER:
|
||||||
|
#+STARTUP: overview
|
||||||
|
|
||||||
|
#+LANGUAGE: en
|
||||||
|
#+EMAIL: dehaeze.thomas@gmail.com
|
||||||
|
#+AUTHOR: Dehaeze Thomas
|
||||||
|
|
||||||
|
#+HTML_LINK_HOME: ./index.html
|
||||||
|
#+HTML_LINK_UP: ./index.html
|
||||||
|
|
||||||
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
|
|
||||||
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
|
#+PROPERTY: header-args:matlab+ :exports both
|
||||||
|
#+PROPERTY: header-args:matlab+ :results none
|
||||||
|
#+PROPERTY: header-args:matlab+ :eval no-export
|
||||||
|
#+PROPERTY: header-args:matlab+ :noweb yes
|
||||||
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
|
||||||
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
||||||
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||||
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||||
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||||
|
#+PROPERTY: header-args:latex+ :results file raw replace
|
||||||
|
#+PROPERTY: header-args:latex+ :buffer no
|
||||||
|
#+PROPERTY: header-args:latex+ :eval no-export
|
||||||
|
#+PROPERTY: header-args:latex+ :exports results
|
||||||
|
#+PROPERTY: header-args:latex+ :mkdirp yes
|
||||||
|
#+PROPERTY: header-args:latex+ :output-dir figs
|
||||||
|
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
|
||||||
|
:END:
|
||||||
|
|
||||||
|
* NASS
|
||||||
|
** Matlab Init :noexport:ignore:
|
||||||
|
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||||
|
<<matlab-dir>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none :results silent :noweb yes
|
||||||
|
<<matlab-init>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
simulinkproject('../');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
open('stewart_platform_model.slx')
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Identification of the Dynamics
|
||||||
|
#+begin_src matlab
|
||||||
|
apa = load('./mat/APA300ML.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
|
||||||
|
flex_joint = load('./mat/flexor_ID16.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
stewart = initializeStewartPlatform();
|
||||||
|
stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 175e-3);
|
||||||
|
stewart = generateGeneralConfiguration(stewart, 'FH', 20e-3, 'MH', 20e-3, 'FR', 228e-3/2, 'MR', 220e-3/2, 'FTh', [-9, 9, 120-9, 120+9, 240-9, 240+9]*(pi/180), 'MTh', [-60+15, 60-15, 60+15, 180-15, 180+15, -60-15]*(pi/180));
|
||||||
|
stewart = computeJointsPose(stewart);
|
||||||
|
stewart = initializeFlexibleStrutDynamics(stewart, 'H', 0.03, 'K', apa.K, 'M', apa.M, 'n_xyz', apa.n_xyz, 'xi', 0.1, 'step_file', 'mat/APA300ML.STEP');
|
||||||
|
stewart = initializeJointDynamics(stewart, 'type_F', 'flexible', 'K_F', flex_joint.K, 'M_F', flex_joint.M, 'n_xyz_F', flex_joint.n_xyz, 'xi_F', 0.1, 'step_file_F', 'mat/flexor_ID16.STEP', 'type_M', 'flexible', 'K_M', flex_joint.K, 'M_M', flex_joint.M, 'n_xyz_M', flex_joint.n_xyz, 'xi_M', 0.1, 'step_file_M', 'mat/flexor_ID16.STEP');
|
||||||
|
stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 150e-3, 'Mpr', 125e-3);
|
||||||
|
stewart = initializeCylindricalStruts(stewart, 'type_F', 'none', 'type_M', 'none');
|
||||||
|
stewart = computeJacobian(stewart);
|
||||||
|
stewart = initializeStewartPose(stewart);
|
||||||
|
stewart = initializeInertialSensor(stewart);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
ground = initializeGround('type', 'none');
|
||||||
|
payload = initializePayload('type', 'rigid', 'm', 50);
|
||||||
|
controller = initializeController('type', 'open-loop');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
disturbances = initializeDisturbances();
|
||||||
|
references = initializeReferences(stewart);
|
||||||
|
#+end_src
|
@@ -9,12 +9,8 @@
|
|||||||
#+HTML_LINK_HOME: ./index.html
|
#+HTML_LINK_HOME: ./index.html
|
||||||
#+HTML_LINK_UP: ./index.html
|
#+HTML_LINK_UP: ./index.html
|
||||||
|
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
|
|
||||||
|
|
||||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
#+PROPERTY: header-args:matlab+ :comments org
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
@@ -25,7 +21,7 @@
|
|||||||
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
|
||||||
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}")
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
||||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||||
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||||
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||||
|
@@ -9,12 +9,8 @@
|
|||||||
#+HTML_LINK_HOME: ./index.html
|
#+HTML_LINK_HOME: ./index.html
|
||||||
#+HTML_LINK_UP: ./index.html
|
#+HTML_LINK_UP: ./index.html
|
||||||
|
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
|
|
||||||
|
|
||||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
#+PROPERTY: header-args:matlab+ :comments org
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
@@ -25,7 +21,7 @@
|
|||||||
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
|
||||||
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}")
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
||||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||||
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||||
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||||
|
@@ -9,12 +9,8 @@
|
|||||||
#+HTML_LINK_HOME: ./index.html
|
#+HTML_LINK_HOME: ./index.html
|
||||||
#+HTML_LINK_UP: ./index.html
|
#+HTML_LINK_UP: ./index.html
|
||||||
|
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
|
|
||||||
|
|
||||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
#+PROPERTY: header-args:matlab+ :comments org
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
@@ -25,7 +21,7 @@
|
|||||||
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
|
||||||
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}")
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
||||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||||
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||||
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||||
|
@@ -9,12 +9,8 @@
|
|||||||
#+HTML_LINK_HOME: ./index.html
|
#+HTML_LINK_HOME: ./index.html
|
||||||
#+HTML_LINK_UP: ./index.html
|
#+HTML_LINK_UP: ./index.html
|
||||||
|
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
|
|
||||||
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
|
|
||||||
|
|
||||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
#+PROPERTY: header-args:matlab+ :comments org
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
@@ -25,7 +21,7 @@
|
|||||||
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
|
|
||||||
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}")
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
||||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||||
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||||
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||||
@@ -632,10 +628,10 @@ This Matlab function is accessible [[file:../src/computeJointsPose.m][here]].
|
|||||||
:UNNUMBERED: t
|
:UNNUMBERED: t
|
||||||
:END:
|
:END:
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
function [stewart] = computeJointsPose(stewart)
|
function [stewart] = computeJointsPose(stewart, args)
|
||||||
% computeJointsPose -
|
% computeJointsPose -
|
||||||
%
|
%
|
||||||
% Syntax: [stewart] = computeJointsPose(stewart)
|
% Syntax: [stewart] = computeJointsPose(stewart, args)
|
||||||
%
|
%
|
||||||
% Inputs:
|
% Inputs:
|
||||||
% - stewart - A structure with the following fields
|
% - stewart - A structure with the following fields
|
||||||
@@ -644,6 +640,9 @@ This Matlab function is accessible [[file:../src/computeJointsPose.m][here]].
|
|||||||
% - platform_F.FO_A [3x1] - Position of {A} with respect to {F}
|
% - platform_F.FO_A [3x1] - Position of {A} with respect to {F}
|
||||||
% - platform_M.MO_B [3x1] - Position of {B} with respect to {M}
|
% - platform_M.MO_B [3x1] - Position of {B} with respect to {M}
|
||||||
% - geometry.FO_M [3x1] - Position of {M} with respect to {F}
|
% - geometry.FO_M [3x1] - Position of {M} with respect to {F}
|
||||||
|
% - args - Can have the following fields:
|
||||||
|
% - AP [3x1] - The wanted position of {B} with respect to {A}
|
||||||
|
% - ARB [3x3] - The rotation matrix that gives the wanted orientation of {B} with respect to {A}
|
||||||
%
|
%
|
||||||
% Outputs:
|
% Outputs:
|
||||||
% - stewart - A structure with the following added fields
|
% - stewart - A structure with the following added fields
|
||||||
@@ -660,6 +659,18 @@ This Matlab function is accessible [[file:../src/computeJointsPose.m][here]].
|
|||||||
% - platform_M.MRb [3x3x6] - The i'th 3x3 array is the rotation matrix to orientate the top of the i'th strut from {M}
|
% - platform_M.MRb [3x3x6] - The i'th 3x3 array is the rotation matrix to orientate the top of the i'th strut from {M}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
*** Optional Parameters
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
arguments
|
||||||
|
stewart
|
||||||
|
args.AP (3,1) double {mustBeNumeric} = zeros(3,1)
|
||||||
|
args.ARB (3,3) double {mustBeNumeric} = eye(3)
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** Check the =stewart= structure elements
|
*** Check the =stewart= structure elements
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:UNNUMBERED: t
|
:UNNUMBERED: t
|
||||||
@@ -688,11 +699,20 @@ This Matlab function is accessible [[file:../src/computeJointsPose.m][here]].
|
|||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
Aa = Fa - repmat(FO_A, [1, 6]);
|
Aa = Fa - repmat(FO_A, [1, 6]);
|
||||||
Bb = Mb - repmat(MO_B, [1, 6]);
|
Bb = Mb - repmat(MO_B, [1, 6]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Original:
|
||||||
|
#+begin_src matlab
|
||||||
Ab = Bb - repmat(-MO_B-FO_M+FO_A, [1, 6]);
|
Ab = Bb - repmat(-MO_B-FO_M+FO_A, [1, 6]);
|
||||||
Ba = Aa - repmat( MO_B+FO_M-FO_A, [1, 6]);
|
Ba = Aa - repmat( MO_B+FO_M-FO_A, [1, 6]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
Translation & Rotation: (Rotation and then translation)
|
||||||
|
#+begin_src matlab
|
||||||
|
Ab = args.ARB *Bb - repmat(-args.AP, [1, 6]);
|
||||||
|
Ba = args.ARB'*Aa - repmat( args.AP, [1, 6]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** Compute the strut length and orientation
|
*** Compute the strut length and orientation
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:UNNUMBERED: t
|
:UNNUMBERED: t
|
||||||
@@ -902,6 +922,66 @@ This Matlab function is accessible [[file:../src/initializeCylindricalPlatforms.
|
|||||||
stewart.platform_M.H = args.Mph;
|
stewart.platform_M.H = args.Mph;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
** =initializeSolidPlatforms=: Initialize the geometry of the Fixed and Mobile Platforms
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args:matlab+: :tangle ../src/initializeSolidPlatforms.m
|
||||||
|
:header-args:matlab+: :comments none :mkdirp yes :eval no
|
||||||
|
:END:
|
||||||
|
<<sec:initializeSolidPlatforms>>
|
||||||
|
|
||||||
|
This Matlab function is accessible [[file:../src/initializeSolidPlatforms.m][here]].
|
||||||
|
|
||||||
|
*** Function description
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
function [stewart] = initializeSolidPlatforms(stewart, args)
|
||||||
|
% initializeSolidPlatforms - Initialize the geometry of the Fixed and Mobile Platforms
|
||||||
|
%
|
||||||
|
% Syntax: [stewart] = initializeSolidPlatforms(args)
|
||||||
|
%
|
||||||
|
% Inputs:
|
||||||
|
% - args - Structure with the following fields:
|
||||||
|
% - density [1x1] - Density of the platforms [kg]
|
||||||
|
%
|
||||||
|
% Outputs:
|
||||||
|
% - stewart - updated Stewart structure with the added fields:
|
||||||
|
% - platform_F [struct] - structure with the following fields:
|
||||||
|
% - type = 2
|
||||||
|
% - M [1x1] - Fixed Platform Density [kg/m^3]
|
||||||
|
% - platform_M [struct] - structure with the following fields:
|
||||||
|
% - type = 2
|
||||||
|
% - M [1x1] - Mobile Platform Density [kg/m^3]
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Optional Parameters
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
arguments
|
||||||
|
stewart
|
||||||
|
args.density (1,1) double {mustBeNumeric, mustBePositive} = 7800
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Populate the =stewart= structure
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
stewart.platform_F.type = 2;
|
||||||
|
|
||||||
|
stewart.platform_F.density = args.density;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
stewart.platform_M.type = 2;
|
||||||
|
|
||||||
|
stewart.platform_M.density = args.density;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** =initializeCylindricalStruts=: Define the inertia of cylindrical struts
|
** =initializeCylindricalStruts=: Define the inertia of cylindrical struts
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args:matlab+: :tangle ../src/initializeCylindricalStruts.m
|
:header-args:matlab+: :tangle ../src/initializeCylindricalStruts.m
|
||||||
@@ -951,6 +1031,8 @@ This Matlab function is accessible [[file:../src/initializeCylindricalStruts.m][
|
|||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
arguments
|
arguments
|
||||||
stewart
|
stewart
|
||||||
|
args.type_F char {mustBeMember(args.type_F,{'cylindrical', 'none'})} = 'cylindrical'
|
||||||
|
args.type_M char {mustBeMember(args.type_M,{'cylindrical', 'none'})} = 'cylindrical'
|
||||||
args.Fsm (1,1) double {mustBeNumeric, mustBePositive} = 0.1
|
args.Fsm (1,1) double {mustBeNumeric, mustBePositive} = 0.1
|
||||||
args.Fsh (1,1) double {mustBeNumeric, mustBePositive} = 50e-3
|
args.Fsh (1,1) double {mustBeNumeric, mustBePositive} = 50e-3
|
||||||
args.Fsr (1,1) double {mustBeNumeric, mustBePositive} = 5e-3
|
args.Fsr (1,1) double {mustBeNumeric, mustBePositive} = 5e-3
|
||||||
@@ -995,7 +1077,12 @@ This Matlab function is accessible [[file:../src/initializeCylindricalStruts.m][
|
|||||||
:UNNUMBERED: t
|
:UNNUMBERED: t
|
||||||
:END:
|
:END:
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
|
switch args.type_M
|
||||||
|
case 'cylindrical'
|
||||||
stewart.struts_M.type = 1;
|
stewart.struts_M.type = 1;
|
||||||
|
case 'none'
|
||||||
|
stewart.struts_M.type = 2;
|
||||||
|
end
|
||||||
|
|
||||||
stewart.struts_M.I = I_M;
|
stewart.struts_M.I = I_M;
|
||||||
stewart.struts_M.M = Msm;
|
stewart.struts_M.M = Msm;
|
||||||
@@ -1004,7 +1091,12 @@ This Matlab function is accessible [[file:../src/initializeCylindricalStruts.m][
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
|
switch args.type_F
|
||||||
|
case 'cylindrical'
|
||||||
stewart.struts_F.type = 1;
|
stewart.struts_F.type = 1;
|
||||||
|
case 'none'
|
||||||
|
stewart.struts_F.type = 2;
|
||||||
|
end
|
||||||
|
|
||||||
stewart.struts_F.I = I_F;
|
stewart.struts_F.I = I_F;
|
||||||
stewart.struts_F.M = Fsm;
|
stewart.struts_F.M = Fsm;
|
||||||
@@ -1132,45 +1224,20 @@ An amplified piezoelectric actuator is shown in Figure [[fig:cedrat_apa95ml]].
|
|||||||
#+caption: Example of an Amplified piezoelectric actuator with an integrated displacement sensor (Cedrat Technologies)
|
#+caption: Example of an Amplified piezoelectric actuator with an integrated displacement sensor (Cedrat Technologies)
|
||||||
[[file:figs/amplified_piezo_with_displacement_sensor.jpg]]
|
[[file:figs/amplified_piezo_with_displacement_sensor.jpg]]
|
||||||
|
|
||||||
A simplistic model of such amplified actuator is shown in Figure [[fig:amplified_piezo_model]] where:
|
A simplistic model of such amplified actuator is shown in Figure [[fig:souleille18_model_piezo]] where the parameters are described in Table [[tab:parameters_amplified_piezo]].
|
||||||
- $K_{r}$ represent the vertical stiffness when the piezoelectric stack is removed
|
|
||||||
- $K_{a}$ is the vertical stiffness contribution of the piezoelectric stack
|
|
||||||
- $F_{i}$ represents the part of the piezoelectric stack that is used as a force actuator
|
|
||||||
- $F_{m,i}$ represents the remaining part of the piezoelectric stack that is used as a force sensor
|
|
||||||
- $v_{m,i}$ represents the absolute velocity of the top part of the actuator
|
|
||||||
- $d_{m,i}$ represents the total relative displacement of the actuator
|
|
||||||
|
|
||||||
#+begin_src latex :file iff_1dof.pdf
|
#+name: tab:parameters_amplified_piezo
|
||||||
\begin{tikzpicture}
|
#+caption: Parameters used for the model of the APA 100M
|
||||||
% Ground
|
| | Meaning |
|
||||||
\draw (-1.2, 0) -- (1, 0);
|
|-------+----------------------------------------------------------------|
|
||||||
|
| $k_e$ | Stiffness used to adjust the pole of the isolator |
|
||||||
|
| $k_1$ | Stiffness of the metallic suspension when the stack is removed |
|
||||||
|
| $k_a$ | Stiffness of the actuator |
|
||||||
|
| $c_1$ | Added viscous damping |
|
||||||
|
|
||||||
% Mass
|
#+name: fig:souleille18_model_piezo
|
||||||
\draw (-1.2, 1.4) -- ++(2.2, 0);
|
#+caption: Picture of an APA100M from Cedrat Technologies. Simplified model of a one DoF payload mounted on such isolator
|
||||||
\node[forcesensor={0.4}{0.4}] (fsensn) at (0, 1){};
|
[[file:./figs/souleille18_model_piezo.png]]
|
||||||
\draw[] (-0.4, 1) -- (0.4, 1);
|
|
||||||
\node[right] at (fsensn.east) {$F_{m}$};
|
|
||||||
|
|
||||||
% Spring, Damper, and Actuator
|
|
||||||
\draw[spring] (-0.4, 0) -- (-0.4, 1) node[midway, right=0.1]{$K_{a}$};
|
|
||||||
\draw[actuator={0.4}{0.2}] (0.4, 0) -- (0.4, 1) node[midway, right=0.1]{$F$};
|
|
||||||
|
|
||||||
\draw[spring] (-1, 0) -- (-1, 1.4) node[midway, left=0.1]{$K_{r}$};
|
|
||||||
|
|
||||||
\draw[dashed] (1, 0) -- ++(0.4, 0);
|
|
||||||
|
|
||||||
\draw[dashed] (1, 1.4) -- ++(0.4, 0);
|
|
||||||
|
|
||||||
\draw[->] (0, 1.4)node[]{$\bullet$} -- ++(0, 0.5) node[right]{$v_{m}$};
|
|
||||||
|
|
||||||
\draw[<->] (1.4, 0) -- ++(0, 1.4) node[midway, right]{$d_{m}$};
|
|
||||||
\end{tikzpicture}
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+name: fig:amplified_piezo_model
|
|
||||||
#+caption: Model of an amplified actuator
|
|
||||||
#+RESULTS:
|
|
||||||
[[file:figs/iff_1dof.png]]
|
|
||||||
|
|
||||||
*** Function description
|
*** Function description
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
@@ -1184,20 +1251,20 @@ A simplistic model of such amplified actuator is shown in Figure [[fig:amplified
|
|||||||
%
|
%
|
||||||
% Inputs:
|
% Inputs:
|
||||||
% - args - Structure with the following fields:
|
% - args - Structure with the following fields:
|
||||||
% - Ka [6x1] - Vertical stiffness contribution of the piezoelectric stack [N/m]
|
% - Ka [6x1] - Stiffness of the actuator [N/m]
|
||||||
% - Ca [6x1] - Vertical damping contribution of the piezoelectric stack [N/(m/s)]
|
% - Ke [6x1] - Stiffness used to adjust the pole of the isolator [N/m]
|
||||||
% - Kr [6x1] - Vertical (residual) stiffness when the piezoelectric stack is removed [N/m]
|
% - K1 [6x1] - Stiffness of the metallic suspension when the stack is removed [N/m]
|
||||||
% - Cr [6x1] - Vertical (residual) damping when the piezoelectric stack is removed [N/(m/s)]
|
% - C1 [6x1] - Added viscous damping [N/(m/s)]
|
||||||
%
|
%
|
||||||
% Outputs:
|
% Outputs:
|
||||||
% - stewart - updated Stewart structure with the added fields:
|
% - stewart - updated Stewart structure with the added fields:
|
||||||
% - actuators.type = 2
|
% - actuators.type = 2
|
||||||
% - actuators.K [6x1] - Total Stiffness of each strut [N/m]
|
% - actuators.K [6x1] - Total Stiffness of each strut [N/m]
|
||||||
% - actuators.C [6x1] - Total Damping of each strut [N/(m/s)]
|
% - actuators.C [6x1] - Total Damping of each strut [N/(m/s)]
|
||||||
% - actuators.Ka [6x1] - Vertical stiffness contribution of the piezoelectric stack [N/m]
|
% - actuators.Ka [6x1] - Stiffness of the actuator [N/m]
|
||||||
% - actuators.Ca [6x1] - Vertical damping contribution of the piezoelectric stack [N/(m/s)]
|
% - actuators.Ke [6x1] - Stiffness used to adjust the pole of the isolator [N/m]
|
||||||
% - actuators.Kr [6x1] - Vertical stiffness when the piezoelectric stack is removed [N/m]
|
% - actuators.K1 [6x1] - Stiffness of the metallic suspension when the stack is removed [N/m]
|
||||||
% - actuators.Cr [6x1] - Vertical damping when the piezoelectric stack is removed [N/(m/s)]
|
% - actuators.C1 [6x1] - Added viscous damping [N/(m/s)]
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Optional Parameters
|
*** Optional Parameters
|
||||||
@@ -1207,10 +1274,10 @@ A simplistic model of such amplified actuator is shown in Figure [[fig:amplified
|
|||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
arguments
|
arguments
|
||||||
stewart
|
stewart
|
||||||
args.Kr (6,1) double {mustBeNumeric, mustBeNonnegative} = 5e6*ones(6,1)
|
args.Ke (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.5e6*ones(6,1)
|
||||||
args.Cr (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
args.Ka (6,1) double {mustBeNumeric, mustBeNonnegative} = 43e6*ones(6,1)
|
||||||
args.Ka (6,1) double {mustBeNumeric, mustBeNonnegative} = 15e6*ones(6,1)
|
args.K1 (6,1) double {mustBeNumeric, mustBeNonnegative} = 0.4e6*ones(6,1)
|
||||||
args.Ca (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
args.C1 (6,1) double {mustBeNumeric, mustBeNonnegative} = 10*ones(6,1)
|
||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -1219,8 +1286,8 @@ A simplistic model of such amplified actuator is shown in Figure [[fig:amplified
|
|||||||
:UNNUMBERED: t
|
:UNNUMBERED: t
|
||||||
:END:
|
:END:
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
K = args.Ka + args.Kr;
|
K = args.K1 + args.Ka.*args.Ke./(args.Ka + args.Ke);
|
||||||
C = args.Ca + args.Cr;
|
C = args.C1;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Populate the =stewart= structure
|
*** Populate the =stewart= structure
|
||||||
@@ -1231,16 +1298,92 @@ A simplistic model of such amplified actuator is shown in Figure [[fig:amplified
|
|||||||
stewart.actuators.type = 2;
|
stewart.actuators.type = 2;
|
||||||
|
|
||||||
stewart.actuators.Ka = args.Ka;
|
stewart.actuators.Ka = args.Ka;
|
||||||
stewart.actuators.Ca = args.Ca;
|
stewart.actuators.Ke = args.Ke;
|
||||||
|
stewart.actuators.K1 = args.K1;
|
||||||
stewart.actuators.Kr = args.Kr;
|
stewart.actuators.C1 = args.C1;
|
||||||
stewart.actuators.Cr = args.Cr;
|
|
||||||
|
|
||||||
stewart.actuators.K = K;
|
stewart.actuators.K = K;
|
||||||
stewart.actuators.C = K;
|
stewart.actuators.C = C;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** =initializeJointDynamics=: Add Stiffness and Damping properties for spherical joints
|
** TODO =initializeFlexibleStrutDynamics=: Model each strut with a flexible element
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args:matlab+: :tangle ../src/initializeFlexibleStrutDynamics.m
|
||||||
|
:header-args:matlab+: :comments none :mkdirp yes :eval no
|
||||||
|
:END:
|
||||||
|
<<sec:initializeFlexibleStrutDynamics>>
|
||||||
|
|
||||||
|
This Matlab function is accessible [[file:../src/initializeFlexibleStrutDynamics.m][here]].
|
||||||
|
|
||||||
|
*** Function description
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
function [stewart] = initializeFlexibleStrutDynamics(stewart, args)
|
||||||
|
% initializeFlexibleStrutDynamics - Add Stiffness and Damping properties of each strut
|
||||||
|
%
|
||||||
|
% Syntax: [stewart] = initializeFlexibleStrutDynamics(args)
|
||||||
|
%
|
||||||
|
% Inputs:
|
||||||
|
% - args - Structure with the following fields:
|
||||||
|
% - K [nxn] - Vertical stiffness contribution of the piezoelectric stack [N/m]
|
||||||
|
% - M [nxn] - Vertical damping contribution of the piezoelectric stack [N/(m/s)]
|
||||||
|
% - xi [1x1] - Vertical (residual) stiffness when the piezoelectric stack is removed [N/m]
|
||||||
|
% - step_file [6x1] - Vertical (residual) damping when the piezoelectric stack is removed [N/(m/s)]
|
||||||
|
% - Gf [6x1] - Gain from strain in [m] to measured [N] such that it matches
|
||||||
|
%
|
||||||
|
% Outputs:
|
||||||
|
% - stewart - updated Stewart structure with the added fields:
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Optional Parameters
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
arguments
|
||||||
|
stewart
|
||||||
|
args.K double {mustBeNumeric} = zeros(6,6)
|
||||||
|
args.M double {mustBeNumeric} = zeros(6,6)
|
||||||
|
args.H double {mustBeNumeric} = 0
|
||||||
|
args.n_xyz double {mustBeNumeric} = zeros(2,3)
|
||||||
|
args.xi double {mustBeNumeric} = 0.1
|
||||||
|
args.Gf double {mustBeNumeric} = 1
|
||||||
|
args.step_file char {} = ''
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Compute the axial offset
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
stewart.actuators.ax_off = (stewart.geometry.l(1) - args.H)/2; % Axial Offset at the ends of the actuator
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Populate the =stewart= structure
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
stewart.actuators.type = 3;
|
||||||
|
|
||||||
|
stewart.actuators.Km = args.K;
|
||||||
|
stewart.actuators.Mm = args.M;
|
||||||
|
|
||||||
|
stewart.actuators.n_xyz = args.n_xyz;
|
||||||
|
stewart.actuators.xi = args.xi;
|
||||||
|
|
||||||
|
stewart.actuators.step_file = args.step_file;
|
||||||
|
|
||||||
|
stewart.actuators.K = args.K(3,3); % Axial Stiffness
|
||||||
|
|
||||||
|
stewart.actuators.Gf = args.Gf;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** TODO =initializeJointDynamics=: Add Stiffness and Damping properties for spherical joints
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args:matlab+: :tangle ../src/initializeJointDynamics.m
|
:header-args:matlab+: :tangle ../src/initializeJointDynamics.m
|
||||||
:header-args:matlab+: :comments none :mkdirp yes :eval no
|
:header-args:matlab+: :comments none :mkdirp yes :eval no
|
||||||
@@ -1291,16 +1434,34 @@ This Matlab function is accessible [[file:../src/initializeJointDynamics.m][here
|
|||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
arguments
|
arguments
|
||||||
stewart
|
stewart
|
||||||
args.type_F char {mustBeMember(args.type_F,{'universal', 'spherical', 'universal_p', 'spherical_p'})} = 'universal'
|
args.type_F char {mustBeMember(args.type_F,{'universal', 'spherical', 'universal_p', 'spherical_p', 'universal_3dof', 'spherical_3dof', 'flexible'})} = 'universal'
|
||||||
args.type_M char {mustBeMember(args.type_M,{'universal', 'spherical', 'universal_p', 'spherical_p'})} = 'spherical'
|
args.type_M char {mustBeMember(args.type_M,{'universal', 'spherical', 'universal_p', 'spherical_p', 'universal_3dof', 'spherical_3dof', 'flexible'})} = 'spherical'
|
||||||
args.Kf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 15*ones(6,1)
|
args.Kf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 33*ones(6,1)
|
||||||
args.Cf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1)
|
args.Cf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1)
|
||||||
args.Kt_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 20*ones(6,1)
|
args.Kt_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 236*ones(6,1)
|
||||||
args.Ct_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-3*ones(6,1)
|
args.Ct_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-3*ones(6,1)
|
||||||
args.Kf_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 15*ones(6,1)
|
args.Kf_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 33*ones(6,1)
|
||||||
args.Cf_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1)
|
args.Cf_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1)
|
||||||
args.Kt_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 20*ones(6,1)
|
args.Kt_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 236*ones(6,1)
|
||||||
args.Ct_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-3*ones(6,1)
|
args.Ct_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-3*ones(6,1)
|
||||||
|
args.Ka_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.2e8*ones(6,1)
|
||||||
|
args.Ca_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||||
|
args.Kr_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.1e7*ones(6,1)
|
||||||
|
args.Cr_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||||
|
args.Ka_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.2e8*ones(6,1)
|
||||||
|
args.Ca_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||||
|
args.Kr_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.1e7*ones(6,1)
|
||||||
|
args.Cr_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||||
|
args.K_M double {mustBeNumeric} = zeros(6,6)
|
||||||
|
args.M_M double {mustBeNumeric} = zeros(6,6)
|
||||||
|
args.n_xyz_M double {mustBeNumeric} = zeros(2,3)
|
||||||
|
args.xi_M double {mustBeNumeric} = 0.1
|
||||||
|
args.step_file_M char {} = ''
|
||||||
|
args.K_F double {mustBeNumeric} = zeros(6,6)
|
||||||
|
args.M_F double {mustBeNumeric} = zeros(6,6)
|
||||||
|
args.n_xyz_F double {mustBeNumeric} = zeros(2,3)
|
||||||
|
args.xi_F double {mustBeNumeric} = 0.1
|
||||||
|
args.step_file_F char {} = ''
|
||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -1318,6 +1479,12 @@ This Matlab function is accessible [[file:../src/initializeJointDynamics.m][here
|
|||||||
stewart.joints_F.type = 3;
|
stewart.joints_F.type = 3;
|
||||||
case 'spherical_p'
|
case 'spherical_p'
|
||||||
stewart.joints_F.type = 4;
|
stewart.joints_F.type = 4;
|
||||||
|
case 'flexible'
|
||||||
|
stewart.joints_F.type = 5;
|
||||||
|
case 'universal_3dof'
|
||||||
|
stewart.joints_F.type = 6;
|
||||||
|
case 'spherical_3dof'
|
||||||
|
stewart.joints_F.type = 7;
|
||||||
end
|
end
|
||||||
|
|
||||||
switch args.type_M
|
switch args.type_M
|
||||||
@@ -1329,6 +1496,12 @@ This Matlab function is accessible [[file:../src/initializeJointDynamics.m][here
|
|||||||
stewart.joints_M.type = 3;
|
stewart.joints_M.type = 3;
|
||||||
case 'spherical_p'
|
case 'spherical_p'
|
||||||
stewart.joints_M.type = 4;
|
stewart.joints_M.type = 4;
|
||||||
|
case 'flexible'
|
||||||
|
stewart.joints_M.type = 5;
|
||||||
|
case 'universal_3dof'
|
||||||
|
stewart.joints_M.type = 6;
|
||||||
|
case 'spherical_3dof'
|
||||||
|
stewart.joints_M.type = 7;
|
||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -1336,26 +1509,22 @@ This Matlab function is accessible [[file:../src/initializeJointDynamics.m][here
|
|||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:UNNUMBERED: t
|
:UNNUMBERED: t
|
||||||
:END:
|
:END:
|
||||||
Translation Stiffness
|
Axial and Radial (shear) Stiffness
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
stewart.joints_M.Kx = zeros(6,1);
|
stewart.joints_M.Ka = args.Ka_M;
|
||||||
stewart.joints_M.Ky = zeros(6,1);
|
stewart.joints_M.Kr = args.Kr_M;
|
||||||
stewart.joints_M.Kz = zeros(6,1);
|
|
||||||
|
|
||||||
stewart.joints_F.Kx = zeros(6,1);
|
stewart.joints_F.Ka = args.Ka_F;
|
||||||
stewart.joints_F.Ky = zeros(6,1);
|
stewart.joints_F.Kr = args.Kr_F;
|
||||||
stewart.joints_F.Kz = zeros(6,1);
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Translation Damping
|
Translation Damping
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
stewart.joints_M.Cx = zeros(6,1);
|
stewart.joints_M.Ca = args.Ca_M;
|
||||||
stewart.joints_M.Cy = zeros(6,1);
|
stewart.joints_M.Cr = args.Cr_M;
|
||||||
stewart.joints_M.Cz = zeros(6,1);
|
|
||||||
|
|
||||||
stewart.joints_F.Cx = zeros(6,1);
|
stewart.joints_F.Ca = args.Ca_F;
|
||||||
stewart.joints_F.Cy = zeros(6,1);
|
stewart.joints_F.Cr = args.Cr_F;
|
||||||
stewart.joints_F.Cz = zeros(6,1);
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Add Stiffness and Damping in Rotation of each strut
|
*** Add Stiffness and Damping in Rotation of each strut
|
||||||
@@ -1365,20 +1534,129 @@ Translation Damping
|
|||||||
Rotational Stiffness
|
Rotational Stiffness
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
stewart.joints_M.Kf = args.Kf_M;
|
stewart.joints_M.Kf = args.Kf_M;
|
||||||
stewart.joints_M.Kt = args.Kf_M;
|
stewart.joints_M.Kt = args.Kt_M;
|
||||||
|
|
||||||
stewart.joints_F.Kf = args.Kf_F;
|
stewart.joints_F.Kf = args.Kf_F;
|
||||||
stewart.joints_F.Kt = args.Kf_F;
|
stewart.joints_F.Kt = args.Kt_F;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
Rotational Damping
|
Rotational Damping
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
stewart.joints_M.Cf = args.Cf_M;
|
stewart.joints_M.Cf = args.Cf_M;
|
||||||
stewart.joints_M.Ct = args.Cf_M;
|
stewart.joints_M.Ct = args.Ct_M;
|
||||||
|
|
||||||
stewart.joints_F.Cf = args.Cf_F;
|
stewart.joints_F.Cf = args.Cf_F;
|
||||||
stewart.joints_F.Ct = args.Cf_F;
|
stewart.joints_F.Ct = args.Ct_F;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Stiffness and Mass matrices for flexible joint
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
stewart.joints_F.M = args.M_F;
|
||||||
|
stewart.joints_F.K = args.K_F;
|
||||||
|
stewart.joints_F.n_xyz = args.n_xyz_F;
|
||||||
|
stewart.joints_F.xi = args.xi_F;
|
||||||
|
stewart.joints_F.xi = args.xi_F;
|
||||||
|
stewart.joints_F.step_file = args.step_file_F;
|
||||||
|
|
||||||
|
stewart.joints_M.M = args.M_M;
|
||||||
|
stewart.joints_M.K = args.K_M;
|
||||||
|
stewart.joints_M.n_xyz = args.n_xyz_M;
|
||||||
|
stewart.joints_M.xi = args.xi_M;
|
||||||
|
stewart.joints_M.step_file = args.step_file_M;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** TODO =initializeFlexibleStrutAndJointDynamics=: Model each strut with a flexible element
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args:matlab+: :tangle ../src/initializeFlexibleStrutAndJointDynamics.m
|
||||||
|
:header-args:matlab+: :comments none :mkdirp yes :eval no
|
||||||
|
:END:
|
||||||
|
<<sec:initializeFlexibleStrutAndJointDynamics>>
|
||||||
|
|
||||||
|
This Matlab function is accessible [[file:../src/initializeFlexibleStrutAndJointDynamics.m][here]].
|
||||||
|
|
||||||
|
*** Function description
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
function [stewart] = initializeFlexibleStrutAndJointDynamics(stewart, args)
|
||||||
|
% initializeFlexibleStrutAndJointDynamics - Add Stiffness and Damping properties of each strut
|
||||||
|
%
|
||||||
|
% Syntax: [stewart] = initializeFlexibleStrutAndJointDynamics(args)
|
||||||
|
%
|
||||||
|
% Inputs:
|
||||||
|
% - args - Structure with the following fields:
|
||||||
|
% - K [nxn] - Vertical stiffness contribution of the piezoelectric stack [N/m]
|
||||||
|
% - M [nxn] - Vertical damping contribution of the piezoelectric stack [N/(m/s)]
|
||||||
|
% - xi [1x1] - Vertical (residual) stiffness when the piezoelectric stack is removed [N/m]
|
||||||
|
% - step_file [6x1] - Vertical (residual) damping when the piezoelectric stack is removed [N/(m/s)]
|
||||||
|
% - Gf [6x1] - Gain from strain in [m] to measured [N] such that it matches
|
||||||
|
%
|
||||||
|
% Outputs:
|
||||||
|
% - stewart - updated Stewart structure with the added fields:
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Optional Parameters
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
arguments
|
||||||
|
stewart
|
||||||
|
args.K double {mustBeNumeric} = zeros(6,6)
|
||||||
|
args.M double {mustBeNumeric} = zeros(6,6)
|
||||||
|
args.H double {mustBeNumeric} = 0
|
||||||
|
args.n_xyz double {mustBeNumeric} = zeros(2,3)
|
||||||
|
args.xi double {mustBeNumeric} = 0.1
|
||||||
|
args.Gf double {mustBeNumeric} = 1
|
||||||
|
args.step_file char {} = ''
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Compute the axial offset
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
stewart.actuators.ax_off = (stewart.geometry.l(1) - args.H)/2; % Axial Offset at the ends of the actuator
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Populate the =stewart= structure
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
No discrete joints:
|
||||||
|
#+begin_src matlab
|
||||||
|
stewart.joints_F.type = 10;
|
||||||
|
stewart.joints_M.type = 10;
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
No discrete struts:
|
||||||
|
#+begin_src matlab
|
||||||
|
stewart.struts_F.type = 3;
|
||||||
|
stewart.struts_M.type = 3;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
stewart.actuators.type = 4;
|
||||||
|
|
||||||
|
stewart.actuators.Km = args.K;
|
||||||
|
stewart.actuators.Mm = args.M;
|
||||||
|
|
||||||
|
stewart.actuators.n_xyz = args.n_xyz;
|
||||||
|
stewart.actuators.xi = args.xi;
|
||||||
|
|
||||||
|
stewart.actuators.step_file = args.step_file;
|
||||||
|
|
||||||
|
stewart.actuators.K = args.K(3,3); % Axial Stiffness
|
||||||
|
|
||||||
|
stewart.actuators.Gf = args.Gf;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** =initializeInertialSensor=: Initialize the inertial sensor in each strut
|
** =initializeInertialSensor=: Initialize the inertial sensor in each strut
|
||||||
|