Change CSS/JS location + publish all
This commit is contained in:
parent
32330b92f0
commit
240d113062
@ -3,17 +3,13 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-08-05 mer. 13:27 -->
|
||||
<!-- 2021-01-08 ven. 15:30 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Stewart Platform - Bibliography</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<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>
|
||||
<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">
|
||||
@ -26,12 +22,12 @@
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org53a1e55">1. Books</a></li>
|
||||
<li><a href="#org91d3f32">2. Thesis</a></li>
|
||||
<li><a href="#org51f3fcf">3. Articles - Reviews</a></li>
|
||||
<li><a href="#orga1d46df">4. Articles - Design Related</a></li>
|
||||
<li><a href="#org0126727">5. Articles - Control Related</a></li>
|
||||
<li><a href="#orgddb9870">6. Articles - Other architectures</a></li>
|
||||
<li><a href="#orgdb4a638">1. Books</a></li>
|
||||
<li><a href="#orgaf171ea">2. Thesis</a></li>
|
||||
<li><a href="#org5ca95b9">3. Articles - Reviews</a></li>
|
||||
<li><a href="#org029f6ba">4. Articles - Design Related</a></li>
|
||||
<li><a href="#org16381e0">5. Articles - Control Related</a></li>
|
||||
<li><a href="#org2e3cc9f">6. Articles - Other architectures</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -50,8 +46,8 @@ Things to add:
|
||||
<li>(<a href="#citeproc_bib_item_108">Zheng et al. 2018</a>)</li>
|
||||
</ul>
|
||||
|
||||
<div id="outline-container-org53a1e55" class="outline-2">
|
||||
<h2 id="org53a1e55"><span class="section-number-2">1</span> Books</h2>
|
||||
<div id="outline-container-orgdb4a638" class="outline-2">
|
||||
<h2 id="orgdb4a638"><span class="section-number-2">1</span> Books</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
@ -92,8 +88,8 @@ Things to add:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org91d3f32" class="outline-2">
|
||||
<h2 id="org91d3f32"><span class="section-number-2">2</span> Thesis</h2>
|
||||
<div id="outline-container-orgaf171ea" class="outline-2">
|
||||
<h2 id="orgaf171ea"><span class="section-number-2">2</span> Thesis</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
@ -134,8 +130,8 @@ Things to add:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org51f3fcf" class="outline-2">
|
||||
<h2 id="org51f3fcf"><span class="section-number-2">3</span> Articles - Reviews</h2>
|
||||
<div id="outline-container-org5ca95b9" class="outline-2">
|
||||
<h2 id="org5ca95b9"><span class="section-number-2">3</span> Articles - Reviews</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
@ -181,8 +177,8 @@ Things to add:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga1d46df" class="outline-2">
|
||||
<h2 id="orga1d46df"><span class="section-number-2">4</span> Articles - Design Related</h2>
|
||||
<div id="outline-container-org029f6ba" class="outline-2">
|
||||
<h2 id="org029f6ba"><span class="section-number-2">4</span> Articles - Design Related</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
@ -258,8 +254,8 @@ Things to add:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0126727" class="outline-2">
|
||||
<h2 id="org0126727"><span class="section-number-2">5</span> Articles - Control Related</h2>
|
||||
<div id="outline-container-org16381e0" class="outline-2">
|
||||
<h2 id="org16381e0"><span class="section-number-2">5</span> Articles - Control Related</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
@ -1273,8 +1269,8 @@ Things to add:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgddb9870" class="outline-2">
|
||||
<h2 id="orgddb9870"><span class="section-number-2">6</span> Articles - Other architectures</h2>
|
||||
<div id="outline-container-org2e3cc9f" class="outline-2">
|
||||
<h2 id="org2e3cc9f"><span class="section-number-2">6</span> Articles - Other architectures</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
@ -1418,7 +1414,7 @@ Things to add:
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-08-05 mer. 13:27</p>
|
||||
<p class="date">Created: 2021-01-08 ven. 15:30</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -3,25 +3,30 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-08-05 mer. 13:27 -->
|
||||
<!-- 2021-01-08 ven. 15:30 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Stewart Platform - Decentralized Active Damping</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<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>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<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>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
@ -34,35 +39,35 @@
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgc22d5d6">1. Inertial Control</a>
|
||||
<li><a href="#orgddaf52f">1. Inertial Control</a>
|
||||
<ul>
|
||||
<li><a href="#org1671c0b">1.1. Identification of the Dynamics</a></li>
|
||||
<li><a href="#orgdae44ba">1.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
|
||||
<li><a href="#org89e2002">1.3. Obtained Damping</a></li>
|
||||
<li><a href="#org3904320">1.4. Conclusion</a></li>
|
||||
<li><a href="#org933440d">1.1. Identification of the Dynamics</a></li>
|
||||
<li><a href="#orged6d23c">1.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
|
||||
<li><a href="#org533c409">1.3. Obtained Damping</a></li>
|
||||
<li><a href="#orgc76021e">1.4. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org89e426a">2. Integral Force Feedback</a>
|
||||
<li><a href="#orgf8ed544">2. Integral Force Feedback</a>
|
||||
<ul>
|
||||
<li><a href="#orgcb85703">2.1. Identification of the Dynamics with perfect Joints</a></li>
|
||||
<li><a href="#org4ca24f7">2.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
|
||||
<li><a href="#org11e5ee2">2.3. Obtained Damping</a></li>
|
||||
<li><a href="#orgca67baa">2.4. Conclusion</a></li>
|
||||
<li><a href="#org7b81fe5">2.1. Identification of the Dynamics with perfect Joints</a></li>
|
||||
<li><a href="#org3dca396">2.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
|
||||
<li><a href="#org7044ed4">2.3. Obtained Damping</a></li>
|
||||
<li><a href="#org9c769b9">2.4. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org47a29be">3. Direct Velocity Feedback</a>
|
||||
<li><a href="#orgabec4e1">3. Direct Velocity Feedback</a>
|
||||
<ul>
|
||||
<li><a href="#orgc82a6a7">3.1. Identification of the Dynamics with perfect Joints</a></li>
|
||||
<li><a href="#org92d6cb1">3.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
|
||||
<li><a href="#org7497409">3.3. Obtained Damping</a></li>
|
||||
<li><a href="#org61c422b">3.4. Conclusion</a></li>
|
||||
<li><a href="#orga2d019b">3.1. Identification of the Dynamics with perfect Joints</a></li>
|
||||
<li><a href="#org2875dd1">3.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
|
||||
<li><a href="#org0cea759">3.3. Obtained Damping</a></li>
|
||||
<li><a href="#orga866100">3.4. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgc84bb75">4. Compliance and Transmissibility Comparison</a>
|
||||
<li><a href="#orgc7e2089">4. Compliance and Transmissibility Comparison</a>
|
||||
<ul>
|
||||
<li><a href="#orgebeb03b">4.1. Initialization</a></li>
|
||||
<li><a href="#orgdde930c">4.2. Identification</a></li>
|
||||
<li><a href="#orgcfd0381">4.3. Results</a></li>
|
||||
<li><a href="#org6ec3b9e">4.1. Initialization</a></li>
|
||||
<li><a href="#orge87554a">4.2. Identification</a></li>
|
||||
<li><a href="#org1d70ccd">4.3. Results</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -73,19 +78,19 @@
|
||||
The following decentralized active damping techniques are briefly studied:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Inertial Control (proportional feedback of the absolute velocity): Section <a href="#orgb2aa4b3">1</a></li>
|
||||
<li>Integral Force Feedback: Section <a href="#org44cadc6">2</a></li>
|
||||
<li>Direct feedback of the relative velocity of each strut: Section <a href="#orgbdd1eba">3</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="#org1f0d316">2</a></li>
|
||||
<li>Direct feedback of the relative velocity of each strut: Section <a href="#org63027d0">3</a></li>
|
||||
</ul>
|
||||
|
||||
<div id="outline-container-orgc22d5d6" class="outline-2">
|
||||
<h2 id="orgc22d5d6"><span class="section-number-2">1</span> Inertial Control</h2>
|
||||
<div id="outline-container-orgddaf52f" class="outline-2">
|
||||
<h2 id="orgddaf52f"><span class="section-number-2">1</span> Inertial Control</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
<a id="orgb2aa4b3"></a>
|
||||
<a id="org709d56c"></a>
|
||||
</p>
|
||||
|
||||
<div class="note">
|
||||
<div class="note" id="org8a14d8c">
|
||||
<p>
|
||||
The Matlab script corresponding to this section is accessible <a href="../matlab/active_damping_inertial.m">here</a>.
|
||||
</p>
|
||||
@ -97,56 +102,56 @@ To run the script, open the Simulink Project, and type <code>run active_damping_
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1671c0b" class="outline-3">
|
||||
<h3 id="org1671c0b"><span class="section-number-3">1.1</span> Identification of the Dynamics</h3>
|
||||
<div id="outline-container-org933440d" class="outline-3">
|
||||
<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="org-src-container">
|
||||
<pre class="src 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);
|
||||
<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>, 45e<span class="org-type">-</span>3);
|
||||
stewart = generateGeneralConfiguration(stewart);
|
||||
stewart = computeJointsPose(stewart);
|
||||
stewart = initializeStrutDynamics(stewart);
|
||||
stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'universal_p'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical_p'</span>);
|
||||
stewart = initializeCylindricalPlatforms(stewart);
|
||||
stewart = initializeCylindricalStruts(stewart);
|
||||
stewart = computeJacobian(stewart);
|
||||
stewart = initializeStewartPose(stewart);
|
||||
stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'accelerometer'</span>, <span class="org-string">'freq'</span>, 5e3);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ground = initializeGround('type', 'rigid', 'rot_point', stewart.platform_F.FO_A);
|
||||
payload = initializePayload('type', 'none');
|
||||
controller = initializeController('type', 'open-loop');
|
||||
<pre class="src src-matlab"> ground = initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'rot_point'</span>, stewart.platform_F.FO_A);
|
||||
payload = initializePayload(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
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">%% Options for Linearized
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
|
||||
%% Name of the Simulink File
|
||||
mdl = 'stewart_platform_model';
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||
mdl = <span class="org-string">'stewart_platform_model'</span>;
|
||||
|
||||
%% 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', [], 'Vm'); io_i = io_i + 1; % Absolute velocity of each leg [m/s]
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Controller'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Actuator Force Inputs [N]</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Stewart Platform'</span>], 1, <span class="org-string">'openoutput'</span>, [], <span class="org-string">'Vm'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Absolute velocity of each leg [m/s]</span>
|
||||
|
||||
%% Run the linearization
|
||||
G = linearize(mdl, io, options);
|
||||
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||
G.OutputName = {'Vm1', 'Vm2', 'Vm3', 'Vm4', 'Vm5', 'Vm6'};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
G = linearize(mdl, io, options);
|
||||
G.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
|
||||
G.OutputName = {<span class="org-string">'Vm1'</span>, <span class="org-string">'Vm2'</span>, <span class="org-string">'Vm3'</span>, <span class="org-string">'Vm4'</span>, <span class="org-string">'Vm5'</span>, <span class="org-string">'Vm6'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<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>
|
||||
|
||||
<div id="org116ea42" class="figure">
|
||||
<div id="org5cd47c9" class="figure">
|
||||
<p><img src="figs/inertial_plant_coupling.png" alt="inertial_plant_coupling.png" />
|
||||
</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>
|
||||
@ -154,17 +159,17 @@ The transfer function from actuator forces to force sensors is shown in Figure <
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdae44ba" class="outline-3">
|
||||
<h3 id="orgdae44ba"><span class="section-number-3">1.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
|
||||
<div id="outline-container-orged6d23c" class="outline-3">
|
||||
<h3 id="orged6d23c"><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">
|
||||
<p>
|
||||
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeJointDynamics(stewart, 'type_F', 'universal', 'type_M', 'spherical');
|
||||
Gf = linearize(mdl, io, options);
|
||||
Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||
Gf.OutputName = {'Vm1', 'Vm2', 'Vm3', 'Vm4', 'Vm5', 'Vm6'};
|
||||
<pre class="src src-matlab"> stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'universal'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical'</span>);
|
||||
Gf = linearize(mdl, io, options);
|
||||
Gf.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
|
||||
Gf.OutputName = {<span class="org-string">'Vm1'</span>, <span class="org-string">'Vm2'</span>, <span class="org-string">'Vm3'</span>, <span class="org-string">'Vm4'</span>, <span class="org-string">'Vm5'</span>, <span class="org-string">'Vm6'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -172,18 +177,18 @@ Gf.OutputName = {'Vm1', 'Vm2', 'Vm3', 'Vm4', 'Vm5', 'Vm6'};
|
||||
We now use the amplified actuators and re-identify the dynamics
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeAmplifiedStrutDynamics(stewart);
|
||||
Ga = linearize(mdl, io, options);
|
||||
Ga.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||
Ga.OutputName = {'Vm1', 'Vm2', 'Vm3', 'Vm4', 'Vm5', 'Vm6'};
|
||||
<pre class="src src-matlab"> stewart = initializeAmplifiedStrutDynamics(stewart);
|
||||
Ga = linearize(mdl, io, options);
|
||||
Ga.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
|
||||
Ga.OutputName = {<span class="org-string">'Vm1'</span>, <span class="org-string">'Vm2'</span>, <span class="org-string">'Vm3'</span>, <span class="org-string">'Vm4'</span>, <span class="org-string">'Vm5'</span>, <span class="org-string">'Vm6'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
<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>
|
||||
@ -191,8 +196,8 @@ The new dynamics from force actuator to force sensor is shown in Figure <a href=
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org89e2002" class="outline-3">
|
||||
<h3 id="org89e2002"><span class="section-number-3">1.3</span> Obtained Damping</h3>
|
||||
<div id="outline-container-org533c409" class="outline-3">
|
||||
<h3 id="org533c409"><span class="section-number-3">1.3</span> Obtained Damping</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<p>
|
||||
The control is a performed in a decentralized manner.
|
||||
@ -206,10 +211,10 @@ The \(6 \times 6\) control is a diagonal matrix with pure proportional action on
|
||||
</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>
|
||||
|
||||
<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>
|
||||
<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>
|
||||
@ -217,10 +222,10 @@ The root locus is shown in figure <a href="#org9cabaee">3</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3904320" class="outline-3">
|
||||
<h3 id="org3904320"><span class="section-number-3">1.4</span> Conclusion</h3>
|
||||
<div id="outline-container-orgc76021e" class="outline-3">
|
||||
<h3 id="orgc76021e"><span class="section-number-3">1.4</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-1-4">
|
||||
<div class="important">
|
||||
<div class="important" id="org37b8ef0">
|
||||
<p>
|
||||
We do not have guaranteed stability with Inertial control. This is because of the flexibility inside the internal sensor.
|
||||
</p>
|
||||
@ -230,14 +235,14 @@ We do not have guaranteed stability with Inertial control. This is because of th
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org89e426a" class="outline-2">
|
||||
<h2 id="org89e426a"><span class="section-number-2">2</span> Integral Force Feedback</h2>
|
||||
<div id="outline-container-orgf8ed544" class="outline-2">
|
||||
<h2 id="orgf8ed544"><span class="section-number-2">2</span> Integral Force Feedback</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
<a id="org44cadc6"></a>
|
||||
<a id="org1f0d316"></a>
|
||||
</p>
|
||||
|
||||
<div class="note">
|
||||
<div class="note" id="org54cec4b">
|
||||
<p>
|
||||
The Matlab script corresponding to this section is accessible <a href="../matlab/active_damping_iff.m">here</a>.
|
||||
</p>
|
||||
@ -249,31 +254,31 @@ To run the script, open the Simulink Project, and type <code>run active_damping_
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcb85703" class="outline-3">
|
||||
<h3 id="orgcb85703"><span class="section-number-3">2.1</span> Identification of the Dynamics with perfect Joints</h3>
|
||||
<div id="outline-container-org7b81fe5" class="outline-3">
|
||||
<h3 id="org7b81fe5"><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">
|
||||
<p>
|
||||
We first initialize the Stewart platform without joint stiffness.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src 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', 'none');
|
||||
<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>, 45e<span class="org-type">-</span>3);
|
||||
stewart = generateGeneralConfiguration(stewart);
|
||||
stewart = computeJointsPose(stewart);
|
||||
stewart = initializeStrutDynamics(stewart);
|
||||
stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'universal_p'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical_p'</span>);
|
||||
stewart = initializeCylindricalPlatforms(stewart);
|
||||
stewart = initializeCylindricalStruts(stewart);
|
||||
stewart = computeJacobian(stewart);
|
||||
stewart = initializeStewartPose(stewart);
|
||||
stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ground = initializeGround('type', 'rigid', 'rot_point', stewart.platform_F.FO_A);
|
||||
payload = initializePayload('type', 'none');
|
||||
controller = initializeController('type', 'open-loop');
|
||||
<pre class="src src-matlab"> ground = initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'rot_point'</span>, stewart.platform_F.FO_A);
|
||||
payload = initializePayload(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -281,26 +286,26 @@ controller = initializeController('type', 'open-loop');
|
||||
And we identify the dynamics from force actuators to force sensors.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Name of the Simulink File
|
||||
mdl = 'stewart_platform_model';
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||
mdl = <span class="org-string">'stewart_platform_model'</span>;
|
||||
|
||||
%% 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', [], 'Taum'); io_i = io_i + 1; % Force Sensor Outputs [N]
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Controller'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Actuator Force Inputs [N]</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Stewart Platform'</span>], 1, <span class="org-string">'openoutput'</span>, [], <span class="org-string">'Taum'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Force Sensor Outputs [N]</span>
|
||||
|
||||
%% Run the linearization
|
||||
G = linearize(mdl, io);
|
||||
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||
G.OutputName = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
G = linearize(mdl, io);
|
||||
G.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
|
||||
G.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string">'Fm2'</span>, <span class="org-string">'Fm3'</span>, <span class="org-string">'Fm4'</span>, <span class="org-string">'Fm5'</span>, <span class="org-string">'Fm6'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<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>
|
||||
|
||||
<div id="org8f016dc" class="figure">
|
||||
<div id="org3b3de64" class="figure">
|
||||
<p><img src="figs/iff_plant_coupling.png" alt="iff_plant_coupling.png" />
|
||||
</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>
|
||||
@ -308,17 +313,17 @@ The transfer function from actuator forces to force sensors is shown in Figure <
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4ca24f7" class="outline-3">
|
||||
<h3 id="org4ca24f7"><span class="section-number-3">2.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
|
||||
<div id="outline-container-org3dca396" class="outline-3">
|
||||
<h3 id="org3dca396"><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">
|
||||
<p>
|
||||
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeJointDynamics(stewart, 'type_F', 'universal', 'type_M', 'spherical');
|
||||
Gf = linearize(mdl, io);
|
||||
Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||
Gf.OutputName = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'};
|
||||
<pre class="src src-matlab"> stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'universal'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical'</span>);
|
||||
Gf = linearize(mdl, io);
|
||||
Gf.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
|
||||
Gf.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string">'Fm2'</span>, <span class="org-string">'Fm3'</span>, <span class="org-string">'Fm4'</span>, <span class="org-string">'Fm5'</span>, <span class="org-string">'Fm6'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -326,18 +331,18 @@ Gf.OutputName = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'};
|
||||
We now use the amplified actuators and re-identify the dynamics
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeAmplifiedStrutDynamics(stewart);
|
||||
Ga = linearize(mdl, io);
|
||||
Ga.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||
Ga.OutputName = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'};
|
||||
<pre class="src src-matlab"> stewart = initializeAmplifiedStrutDynamics(stewart);
|
||||
Ga = linearize(mdl, io);
|
||||
Ga.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
|
||||
Ga.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string">'Fm2'</span>, <span class="org-string">'Fm3'</span>, <span class="org-string">'Fm4'</span>, <span class="org-string">'Fm5'</span>, <span class="org-string">'Fm6'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
<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>
|
||||
@ -345,8 +350,8 @@ The new dynamics from force actuator to force sensor is shown in Figure <a href=
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org11e5ee2" class="outline-3">
|
||||
<h3 id="org11e5ee2"><span class="section-number-3">2.3</span> Obtained Damping</h3>
|
||||
<div id="outline-container-org7044ed4" class="outline-3">
|
||||
<h3 id="org7044ed4"><span class="section-number-3">2.3</span> Obtained Damping</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<p>
|
||||
The control is a performed in a decentralized manner.
|
||||
@ -360,17 +365,17 @@ The \(6 \times 6\) control is a diagonal matrix with pure integration action on
|
||||
</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>
|
||||
|
||||
<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>
|
||||
<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 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>
|
||||
<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>
|
||||
@ -378,10 +383,10 @@ The root locus is shown in figure <a href="#orgc8981ba">6</a> and the obtained p
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgca67baa" class="outline-3">
|
||||
<h3 id="orgca67baa"><span class="section-number-3">2.4</span> Conclusion</h3>
|
||||
<div id="outline-container-org9c769b9" class="outline-3">
|
||||
<h3 id="org9c769b9"><span class="section-number-3">2.4</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
<div class="important">
|
||||
<div class="important" id="orged36719">
|
||||
<p>
|
||||
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.
|
||||
@ -392,14 +397,14 @@ Thus, if Integral Force Feedback is to be used in a Stewart platform with flexib
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org47a29be" class="outline-2">
|
||||
<h2 id="org47a29be"><span class="section-number-2">3</span> Direct Velocity Feedback</h2>
|
||||
<div id="outline-container-orgabec4e1" class="outline-2">
|
||||
<h2 id="orgabec4e1"><span class="section-number-2">3</span> Direct Velocity Feedback</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
<a id="orgbdd1eba"></a>
|
||||
<a id="org63027d0"></a>
|
||||
</p>
|
||||
|
||||
<div class="note">
|
||||
<div class="note" id="orgfb739d8">
|
||||
<p>
|
||||
The Matlab script corresponding to this section is accessible <a href="../matlab/active_damping_dvf.m">here</a>.
|
||||
</p>
|
||||
@ -411,31 +416,31 @@ To run the script, open the Simulink Project, and type <code>run active_damping_
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc82a6a7" class="outline-3">
|
||||
<h3 id="orgc82a6a7"><span class="section-number-3">3.1</span> Identification of the Dynamics with perfect Joints</h3>
|
||||
<div id="outline-container-orga2d019b" class="outline-3">
|
||||
<h3 id="orga2d019b"><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">
|
||||
<p>
|
||||
We first initialize the Stewart platform without joint stiffness.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src 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', 'none');
|
||||
<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>, 45e<span class="org-type">-</span>3);
|
||||
stewart = generateGeneralConfiguration(stewart);
|
||||
stewart = computeJointsPose(stewart);
|
||||
stewart = initializeStrutDynamics(stewart);
|
||||
stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'universal_p'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical_p'</span>);
|
||||
stewart = initializeCylindricalPlatforms(stewart);
|
||||
stewart = initializeCylindricalStruts(stewart);
|
||||
stewart = computeJacobian(stewart);
|
||||
stewart = initializeStewartPose(stewart);
|
||||
stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ground = initializeGround('type', 'rigid', 'rot_point', stewart.platform_F.FO_A);
|
||||
payload = initializePayload('type', 'none');
|
||||
controller = initializeController('type', 'open-loop');
|
||||
<pre class="src src-matlab"> ground = initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'rot_point'</span>, stewart.platform_F.FO_A);
|
||||
payload = initializePayload(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -443,30 +448,30 @@ controller = initializeController('type', 'open-loop');
|
||||
And we identify the dynamics from force actuators to force sensors.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Options for Linearized
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
|
||||
%% Name of the Simulink File
|
||||
mdl = 'stewart_platform_model';
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||
mdl = <span class="org-string">'stewart_platform_model'</span>;
|
||||
|
||||
%% 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]
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Controller'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Actuator Force Inputs [N]</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Stewart Platform'</span>], 1, <span class="org-string">'openoutput'</span>, [], <span class="org-string">'dLm'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Relative Displacement Outputs [m]</span>
|
||||
|
||||
%% Run the linearization
|
||||
G = linearize(mdl, io, options);
|
||||
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||
G.OutputName = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6'};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
G = linearize(mdl, io, options);
|
||||
G.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
|
||||
G.OutputName = {<span class="org-string">'Dm1'</span>, <span class="org-string">'Dm2'</span>, <span class="org-string">'Dm3'</span>, <span class="org-string">'Dm4'</span>, <span class="org-string">'Dm5'</span>, <span class="org-string">'Dm6'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<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>
|
||||
|
||||
<div id="org6de423c" class="figure">
|
||||
<div id="org34c24ba" class="figure">
|
||||
<p><img src="figs/dvf_plant_coupling.png" alt="dvf_plant_coupling.png" />
|
||||
</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>
|
||||
@ -475,17 +480,17 @@ The transfer function from actuator forces to relative motion sensors is shown i
|
||||
</div>
|
||||
|
||||
|
||||
<div id="outline-container-org92d6cb1" class="outline-3">
|
||||
<h3 id="org92d6cb1"><span class="section-number-3">3.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
|
||||
<div id="outline-container-org2875dd1" class="outline-3">
|
||||
<h3 id="org2875dd1"><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">
|
||||
<p>
|
||||
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeJointDynamics(stewart, 'type_F', 'universal', 'type_M', 'spherical');
|
||||
Gf = linearize(mdl, io, options);
|
||||
Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||
Gf.OutputName = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6'};
|
||||
<pre class="src src-matlab"> stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'universal'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical'</span>);
|
||||
Gf = linearize(mdl, io, options);
|
||||
Gf.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
|
||||
Gf.OutputName = {<span class="org-string">'Dm1'</span>, <span class="org-string">'Dm2'</span>, <span class="org-string">'Dm3'</span>, <span class="org-string">'Dm4'</span>, <span class="org-string">'Dm5'</span>, <span class="org-string">'Dm6'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -493,18 +498,18 @@ Gf.OutputName = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6'};
|
||||
We now use the amplified actuators and re-identify the dynamics
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeAmplifiedStrutDynamics(stewart);
|
||||
Ga = linearize(mdl, io, options);
|
||||
Ga.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||
Ga.OutputName = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6'};
|
||||
<pre class="src src-matlab"> stewart = initializeAmplifiedStrutDynamics(stewart);
|
||||
Ga = linearize(mdl, io, options);
|
||||
Ga.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
|
||||
Ga.OutputName = {<span class="org-string">'Dm1'</span>, <span class="org-string">'Dm2'</span>, <span class="org-string">'Dm3'</span>, <span class="org-string">'Dm4'</span>, <span class="org-string">'Dm5'</span>, <span class="org-string">'Dm6'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
<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>
|
||||
@ -512,8 +517,8 @@ The new dynamics from force actuator to relative motion sensor is shown in Figur
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7497409" class="outline-3">
|
||||
<h3 id="org7497409"><span class="section-number-3">3.3</span> Obtained Damping</h3>
|
||||
<div id="outline-container-org0cea759" class="outline-3">
|
||||
<h3 id="org0cea759"><span class="section-number-3">3.3</span> Obtained Damping</h3>
|
||||
<div class="outline-text-3" id="text-3-3">
|
||||
<p>
|
||||
The control is a performed in a decentralized manner.
|
||||
@ -527,10 +532,10 @@ The \(6 \times 6\) control is a diagonal matrix with pure derivative action on t
|
||||
</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>
|
||||
|
||||
<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>
|
||||
<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>
|
||||
@ -538,10 +543,10 @@ The root locus is shown in figure <a href="#org5e168d0">10</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org61c422b" class="outline-3">
|
||||
<h3 id="org61c422b"><span class="section-number-3">3.4</span> Conclusion</h3>
|
||||
<div id="outline-container-orga866100" class="outline-3">
|
||||
<h3 id="orga866100"><span class="section-number-3">3.4</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-3-4">
|
||||
<div class="important">
|
||||
<div class="important" id="org2640d3c">
|
||||
<p>
|
||||
Joint stiffness does increase the resonance frequencies of the system but does not change the attainable damping when using relative motion sensors.
|
||||
</p>
|
||||
@ -551,28 +556,28 @@ Joint stiffness does increase the resonance frequencies of the system but does n
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc84bb75" class="outline-2">
|
||||
<h2 id="orgc84bb75"><span class="section-number-2">4</span> Compliance and Transmissibility Comparison</h2>
|
||||
<div id="outline-container-orgc7e2089" class="outline-2">
|
||||
<h2 id="orgc7e2089"><span class="section-number-2">4</span> Compliance and Transmissibility Comparison</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
</div>
|
||||
<div id="outline-container-orgebeb03b" class="outline-3">
|
||||
<h3 id="orgebeb03b"><span class="section-number-3">4.1</span> Initialization</h3>
|
||||
<div id="outline-container-org6ec3b9e" class="outline-3">
|
||||
<h3 id="org6ec3b9e"><span class="section-number-3">4.1</span> Initialization</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<p>
|
||||
We first initialize the Stewart platform without joint stiffness.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src 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', 'none');
|
||||
<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>, 45e<span class="org-type">-</span>3);
|
||||
stewart = generateGeneralConfiguration(stewart);
|
||||
stewart = computeJointsPose(stewart);
|
||||
stewart = initializeStrutDynamics(stewart);
|
||||
stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'universal_p'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical_p'</span>);
|
||||
stewart = initializeCylindricalPlatforms(stewart);
|
||||
stewart = initializeCylindricalStruts(stewart);
|
||||
stewart = computeJacobian(stewart);
|
||||
stewart = initializeStewartPose(stewart);
|
||||
stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -580,24 +585,24 @@ stewart = initializeInertialSensor(stewart, 'type', 'none');
|
||||
The rotation point of the ground is located at the origin of frame \(\{A\}\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ground = initializeGround('type', 'rigid', 'rot_point', stewart.platform_F.FO_A);
|
||||
payload = initializePayload('type', 'none');
|
||||
controller = initializeController('type', 'open-loop');
|
||||
<pre class="src src-matlab"> ground = initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'rot_point'</span>, stewart.platform_F.FO_A);
|
||||
payload = initializePayload(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdde930c" class="outline-3">
|
||||
<h3 id="orgdde930c"><span class="section-number-3">4.2</span> Identification</h3>
|
||||
<div id="outline-container-orge87554a" class="outline-3">
|
||||
<h3 id="orge87554a"><span class="section-number-3">4.2</span> Identification</h3>
|
||||
<div class="outline-text-3" id="text-4-2">
|
||||
<p>
|
||||
Let’s first identify the transmissibility and compliance in the open-loop case.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">controller = initializeController('type', 'open-loop');
|
||||
[T_ol, T_norm_ol, freqs] = computeTransmissibility();
|
||||
[C_ol, C_norm_ol, freqs] = computeCompliance();
|
||||
<pre class="src src-matlab"> controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
[T_ol, T_norm_ol, freqs] = computeTransmissibility();
|
||||
[C_ol, C_norm_ol, freqs] = computeCompliance();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -605,11 +610,11 @@ Let’s first identify the transmissibility and compliance in the open-loop
|
||||
Now, let’s identify the transmissibility and compliance for the Integral Force Feedback architecture.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">controller = initializeController('type', 'iff');
|
||||
K_iff = (1e4/s)*eye(6);
|
||||
<pre class="src src-matlab"> controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'iff'</span>);
|
||||
K_iff = (1e4<span class="org-type">/</span>s)<span class="org-type">*</span>eye(6);
|
||||
|
||||
[T_iff, T_norm_iff, ~] = computeTransmissibility();
|
||||
[C_iff, C_norm_iff, ~] = computeCompliance();
|
||||
[T_iff, T_norm_iff, <span class="org-type">~</span>] = computeTransmissibility();
|
||||
[C_iff, C_norm_iff, <span class="org-type">~</span>] = computeCompliance();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -617,35 +622,35 @@ K_iff = (1e4/s)*eye(6);
|
||||
And for the Direct Velocity Feedback.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">controller = initializeController('type', 'dvf');
|
||||
K_dvf = 1e4*s/(1+s/2/pi/5000)*eye(6);
|
||||
<pre class="src src-matlab"> controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'dvf'</span>);
|
||||
K_dvf = 1e4<span class="org-type">*</span>s<span class="org-type">/</span>(1<span class="org-type">+</span>s<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">/</span>5000)<span class="org-type">*</span>eye(6);
|
||||
|
||||
[T_dvf, T_norm_dvf, ~] = computeTransmissibility();
|
||||
[C_dvf, C_norm_dvf, ~] = computeCompliance();
|
||||
[T_dvf, T_norm_dvf, <span class="org-type">~</span>] = computeTransmissibility();
|
||||
[C_dvf, C_norm_dvf, <span class="org-type">~</span>] = computeCompliance();
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcfd0381" class="outline-3">
|
||||
<h3 id="orgcfd0381"><span class="section-number-3">4.3</span> Results</h3>
|
||||
<div id="outline-container-org1d70ccd" class="outline-3">
|
||||
<h3 id="org1d70ccd"><span class="section-number-3">4.3</span> Results</h3>
|
||||
<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>
|
||||
<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 id="org2d1b516" class="figure">
|
||||
<div id="orgc10c609" class="figure">
|
||||
<p><img src="figs/compliance_iff_dvf.png" alt="compliance_iff_dvf.png" />
|
||||
</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 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>
|
||||
<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>
|
||||
@ -656,7 +661,7 @@ K_dvf = 1e4*s/(1+s/2/pi/5000)*eye(6);
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-08-05 mer. 13:27</p>
|
||||
<p class="date">Created: 2021-01-08 ven. 15:30</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -3,25 +3,30 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-08-05 mer. 13:27 -->
|
||||
<!-- 2021-01-08 ven. 15:30 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Stewart Platform - Dynamics Study</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<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>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<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>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
@ -34,49 +39,49 @@
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<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>
|
||||
<li><a href="#org4509b7d">1.1. Comparison with fixed support</a></li>
|
||||
<li><a href="#org8662186">1.2. Comparison with a flexible support</a></li>
|
||||
<li><a href="#org55e0dad">1.3. Conclusion</a></li>
|
||||
<li><a href="#orgc730bef">1.1. Comparison with fixed support</a></li>
|
||||
<li><a href="#orgefde538">1.2. Comparison with a flexible support</a></li>
|
||||
<li><a href="#org53765b8">1.3. Conclusion</a></li>
|
||||
</ul>
|
||||
</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>
|
||||
<li><a href="#orge7e7242">2.1. Analysis</a></li>
|
||||
<li><a href="#org9ee3939">2.2. Conclusion</a></li>
|
||||
<li><a href="#org3f1c253">2.1. Analysis</a></li>
|
||||
<li><a href="#orga9eb2fd">2.2. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc59e712" class="outline-2">
|
||||
<h2 id="orgc59e712"><span class="section-number-2">1</span> Compare external forces and forces applied by the actuators</h2>
|
||||
<div id="outline-container-org7743c04" class="outline-2">
|
||||
<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">
|
||||
<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.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4509b7d" class="outline-3">
|
||||
<h3 id="org4509b7d"><span class="section-number-3">1.1</span> Comparison with fixed support</h3>
|
||||
<div id="outline-container-orgc730bef" class="outline-3">
|
||||
<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">
|
||||
<p>
|
||||
Let’s generate a Stewart platform.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src 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', 'none');
|
||||
<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>, 45e<span class="org-type">-</span>3);
|
||||
stewart = generateGeneralConfiguration(stewart);
|
||||
stewart = computeJointsPose(stewart);
|
||||
stewart = initializeStrutDynamics(stewart);
|
||||
stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'universal_p'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical_p'</span>);
|
||||
stewart = initializeCylindricalPlatforms(stewart);
|
||||
stewart = initializeCylindricalStruts(stewart);
|
||||
stewart = computeJacobian(stewart);
|
||||
stewart = initializeStewartPose(stewart);
|
||||
stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -85,9 +90,9 @@ We don’t put any flexibility below the Stewart platform such that <b>its b
|
||||
We also don’t put any payload on top of the Stewart platform.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ground = initializeGround('type', 'none');
|
||||
payload = initializePayload('type', 'none');
|
||||
controller = initializeController('type', 'open-loop');
|
||||
<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">'none'</span>);
|
||||
controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -95,22 +100,22 @@ controller = initializeController('type', 'open-loop');
|
||||
The transfer function from actuator forces \(\bm{\tau}\) to the relative displacement of the mobile platform \(\mathcal{\bm{X}}\) is extracted.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Options for Linearized
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
|
||||
%% Name of the Simulink File
|
||||
mdl = 'stewart_platform_model';
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||
mdl = <span class="org-string">'stewart_platform_model'</span>;
|
||||
|
||||
%% 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, '/Relative Motion Sensor'], 1, 'openoutput'); io_i = io_i + 1; % Position/Orientation of {B} w.r.t. {A}
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Controller'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Actuator Force Inputs [N]</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Relative Motion Sensor'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Position/Orientation of {B} w.r.t. {A}</span>
|
||||
|
||||
%% Run the linearization
|
||||
G = linearize(mdl, io, options);
|
||||
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||
G.OutputName = {'Edx', 'Edy', 'Edz', 'Erx', 'Ery', 'Erz'};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
G = linearize(mdl, io, options);
|
||||
G.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
|
||||
G.OutputName = {<span class="org-string">'Edx'</span>, <span class="org-string">'Edy'</span>, <span class="org-string">'Edz'</span>, <span class="org-string">'Erx'</span>, <span class="org-string">'Ery'</span>, <span class="org-string">'Erz'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -118,8 +123,8 @@ G.OutputName = {'Edx', 'Edy', 'Edz', 'Erx', 'Ery', 'Erz'};
|
||||
Using the Jacobian matrix, we compute the transfer function from force/torques applied by the actuators on the frame \(\{B\}\) fixed to the mobile platform:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Gc = minreal(G*inv(stewart.kinematics.J'));
|
||||
Gc.InputName = {'Fnx', 'Fny', 'Fnz', 'Mnx', 'Mny', 'Mnz'};
|
||||
<pre class="src src-matlab"> Gc = minreal(G<span class="org-type">*</span>inv(stewart.kinematics.J<span class="org-type">'</span>));
|
||||
Gc.InputName = {<span class="org-string">'Fnx'</span>, <span class="org-string">'Fny'</span>, <span class="org-string">'Fnz'</span>, <span class="org-string">'Mnx'</span>, <span class="org-string">'Mny'</span>, <span class="org-string">'Mnz'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -127,35 +132,35 @@ Gc.InputName = {'Fnx', 'Fny', 'Fnz', 'Mnx', 'Mny', 'Mnz'};
|
||||
We also extract the transfer function from external forces \(\bm{\mathcal{F}}_{\text{ext}}\) on the frame \(\{B\}\) fixed to the mobile platform to the relative displacement \(\mathcal{\bm{X}}\) of \(\{B\}\) with respect to frame \(\{A\}\):
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'F_ext'); io_i = io_i + 1; % External forces/torques applied on {B}
|
||||
io(io_i) = linio([mdl, '/Relative Motion Sensor'], 1, 'openoutput'); io_i = io_i + 1; % Position/Orientation of {B} w.r.t. {A}
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Disturbances'</span>], 1, <span class="org-string">'openinput'</span>, [], <span class="org-string">'F_ext'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% External forces/torques applied on {B}</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Relative Motion Sensor'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Position/Orientation of {B} w.r.t. {A}</span>
|
||||
|
||||
%% Run the linearization
|
||||
Gd = linearize(mdl, io, options);
|
||||
Gd.InputName = {'Fex', 'Fey', 'Fez', 'Mex', 'Mey', 'Mez'};
|
||||
Gd.OutputName = {'Edx', 'Edy', 'Edz', 'Erx', 'Ery', 'Erz'};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
Gd = linearize(mdl, io, options);
|
||||
Gd.InputName = {<span class="org-string">'Fex'</span>, <span class="org-string">'Fey'</span>, <span class="org-string">'Fez'</span>, <span class="org-string">'Mex'</span>, <span class="org-string">'Mey'</span>, <span class="org-string">'Mez'</span>};
|
||||
Gd.OutputName = {<span class="org-string">'Edx'</span>, <span class="org-string">'Edy'</span>, <span class="org-string">'Edz'</span>, <span class="org-string">'Erx'</span>, <span class="org-string">'Ery'</span>, <span class="org-string">'Erz'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
<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>
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
<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>
|
||||
<p><span class="figure-number">Figure 2: </span>Schematic representation of the stewart platform on a rigid support</p>
|
||||
@ -163,14 +168,14 @@ This can be understood from figure <a href="#org8bd3e63">2</a> where \(\mathcal{
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8662186" class="outline-3">
|
||||
<h3 id="org8662186"><span class="section-number-3">1.2</span> Comparison with a flexible support</h3>
|
||||
<div id="outline-container-orgefde538" class="outline-3">
|
||||
<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">
|
||||
<p>
|
||||
We now add a flexible support under the Stewart platform.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ground = initializeGround('type', 'flexible');
|
||||
<pre class="src src-matlab"> ground = initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'flexible'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -178,50 +183,50 @@ We now add a flexible support under the Stewart platform.
|
||||
And we perform again the identification.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% 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, '/Relative Motion Sensor'], 1, 'openoutput'); io_i = io_i + 1; % Position/Orientation of {B} w.r.t. {A}
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Controller'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Actuator Force Inputs [N]</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Relative Motion Sensor'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Position/Orientation of {B} w.r.t. {A}</span>
|
||||
|
||||
%% Run the linearization
|
||||
G = linearize(mdl, io, options);
|
||||
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||
G.OutputName = {'Edx', 'Edy', 'Edz', 'Erx', 'Ery', 'Erz'};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
G = linearize(mdl, io, options);
|
||||
G.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
|
||||
G.OutputName = {<span class="org-string">'Edx'</span>, <span class="org-string">'Edy'</span>, <span class="org-string">'Edz'</span>, <span class="org-string">'Erx'</span>, <span class="org-string">'Ery'</span>, <span class="org-string">'Erz'</span>};
|
||||
|
||||
Gc = minreal(G*inv(stewart.kinematics.J'));
|
||||
Gc.InputName = {'Fnx', 'Fny', 'Fnz', 'Mnx', 'Mny', 'Mnz'};
|
||||
Gc = minreal(G<span class="org-type">*</span>inv(stewart.kinematics.J<span class="org-type">'</span>));
|
||||
Gc.InputName = {<span class="org-string">'Fnx'</span>, <span class="org-string">'Fny'</span>, <span class="org-string">'Fnz'</span>, <span class="org-string">'Mnx'</span>, <span class="org-string">'Mny'</span>, <span class="org-string">'Mnz'</span>};
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'F_ext'); io_i = io_i + 1; % External forces/torques applied on {B}
|
||||
io(io_i) = linio([mdl, '/Relative Motion Sensor'], 1, 'openoutput'); io_i = io_i + 1; % Position/Orientation of {B} w.r.t. {A}
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Disturbances'</span>], 1, <span class="org-string">'openinput'</span>, [], <span class="org-string">'F_ext'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% External forces/torques applied on {B}</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Relative Motion Sensor'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Position/Orientation of {B} w.r.t. {A}</span>
|
||||
|
||||
%% Run the linearization
|
||||
Gd = linearize(mdl, io, options);
|
||||
Gd.InputName = {'Fex', 'Fey', 'Fez', 'Mex', 'Mey', 'Mez'};
|
||||
Gd.OutputName = {'Edx', 'Edy', 'Edz', 'Erx', 'Ery', 'Erz'};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
Gd = linearize(mdl, io, options);
|
||||
Gd.InputName = {<span class="org-string">'Fex'</span>, <span class="org-string">'Fey'</span>, <span class="org-string">'Fez'</span>, <span class="org-string">'Mex'</span>, <span class="org-string">'Mey'</span>, <span class="org-string">'Mez'</span>};
|
||||
Gd.OutputName = {<span class="org-string">'Edx'</span>, <span class="org-string">'Edy'</span>, <span class="org-string">'Edz'</span>, <span class="org-string">'Erx'</span>, <span class="org-string">'Ery'</span>, <span class="org-string">'Erz'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
<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>
|
||||
<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>
|
||||
|
||||
<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\).
|
||||
And thus \(\mathcal{F}_{x}\) and \(\mathcal{F}_{x,\text{ext}}\) have clearly <b>not</b> the same effect on \(\mathcal{X}_{x}\).
|
||||
</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>
|
||||
<p><span class="figure-number">Figure 4: </span>Schematic representation of the stewart platform on top of a flexible support</p>
|
||||
@ -230,10 +235,10 @@ And thus \(\mathcal{F}_{x}\) and \(\mathcal{F}_{x,\text{ext}}\) have clearly <b>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="outline-container-org55e0dad" class="outline-3">
|
||||
<h3 id="org55e0dad"><span class="section-number-3">1.3</span> Conclusion</h3>
|
||||
<div id="outline-container-org53765b8" class="outline-3">
|
||||
<h3 id="org53765b8"><span class="section-number-3">1.3</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<div class="important">
|
||||
<div class="important" id="org35e4b5f">
|
||||
<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.
|
||||
</p>
|
||||
@ -243,32 +248,32 @@ The transfer function from forces/torques applied by the actuators on the payloa
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org81ab204" class="outline-2">
|
||||
<h2 id="org81ab204"><span class="section-number-2">2</span> Comparison of the static transfer function and the Compliance matrix</h2>
|
||||
<div id="outline-container-orgb6a1ef7" class="outline-2">
|
||||
<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">
|
||||
<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}}\).
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge7e7242" class="outline-3">
|
||||
<h3 id="orge7e7242"><span class="section-number-3">2.1</span> Analysis</h3>
|
||||
<div id="outline-container-org3f1c253" class="outline-3">
|
||||
<h3 id="org3f1c253"><span class="section-number-3">2.1</span> Analysis</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
Initialization of the Stewart platform.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src 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', 'none');
|
||||
<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>, 45e<span class="org-type">-</span>3);
|
||||
stewart = generateGeneralConfiguration(stewart);
|
||||
stewart = computeJointsPose(stewart);
|
||||
stewart = initializeStrutDynamics(stewart);
|
||||
stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'universal_p'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical_p'</span>);
|
||||
stewart = initializeCylindricalPlatforms(stewart);
|
||||
stewart = initializeCylindricalStruts(stewart);
|
||||
stewart = computeJacobian(stewart);
|
||||
stewart = initializeStewartPose(stewart);
|
||||
stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -276,9 +281,9 @@ stewart = initializeInertialSensor(stewart, 'type', 'none');
|
||||
No flexibility below the Stewart platform and no payload.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ground = initializeGround('type', 'none');
|
||||
payload = initializePayload('type', 'none');
|
||||
controller = initializeController('type', 'open-loop');
|
||||
<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">'none'</span>);
|
||||
controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -286,28 +291,28 @@ controller = initializeController('type', 'open-loop');
|
||||
Estimation of the transfer function from \(\mathcal{\bm{F}}\) to \(\mathcal{\bm{X}}\):
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Options for Linearized
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
|
||||
%% Name of the Simulink File
|
||||
mdl = 'stewart_platform_model';
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||
mdl = <span class="org-string">'stewart_platform_model'</span>;
|
||||
|
||||
%% 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, '/Relative Motion Sensor'], 1, 'openoutput'); io_i = io_i + 1; % Position/Orientation of {B} w.r.t. {A}
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Controller'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Actuator Force Inputs [N]</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Relative Motion Sensor'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Position/Orientation of {B} w.r.t. {A}</span>
|
||||
|
||||
%% Run the linearization
|
||||
G = linearize(mdl, io, options);
|
||||
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||
G.OutputName = {'Edx', 'Edy', 'Edz', 'Erx', 'Ery', 'Erz'};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
G = linearize(mdl, io, options);
|
||||
G.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
|
||||
G.OutputName = {<span class="org-string">'Edx'</span>, <span class="org-string">'Edy'</span>, <span class="org-string">'Edz'</span>, <span class="org-string">'Erx'</span>, <span class="org-string">'Ery'</span>, <span class="org-string">'Erz'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Gc = minreal(G*inv(stewart.kinematics.J'));
|
||||
Gc.InputName = {'Fnx', 'Fny', 'Fnz', 'Mnx', 'Mny', 'Mnz'};
|
||||
<pre class="src src-matlab"> Gc = minreal(G<span class="org-type">*</span>inv(stewart.kinematics.J<span class="org-type">'</span>));
|
||||
Gc.InputName = {<span class="org-string">'Fnx'</span>, <span class="org-string">'Fny'</span>, <span class="org-string">'Fnz'</span>, <span class="org-string">'Mnx'</span>, <span class="org-string">'Mny'</span>, <span class="org-string">'Mnz'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -465,10 +470,10 @@ And now at the Compliance matrix.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9ee3939" class="outline-3">
|
||||
<h3 id="org9ee3939"><span class="section-number-3">2.2</span> Conclusion</h3>
|
||||
<div id="outline-container-orga9eb2fd" class="outline-3">
|
||||
<h3 id="orga9eb2fd"><span class="section-number-3">2.2</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<div class="important">
|
||||
<div class="important" id="orgcecc007">
|
||||
<p>
|
||||
The low frequency transfer function matrix from \(\mathcal{\bm{F}}\) to \(\mathcal{\bm{X}}\) corresponds to the compliance matrix of the Stewart platform.
|
||||
</p>
|
||||
@ -480,7 +485,7 @@ The low frequency transfer function matrix from \(\mathcal{\bm{F}}\) to \(\mathc
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-08-05 mer. 13:27</p>
|
||||
<p class="date">Created: 2021-01-08 ven. 15:30</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -3,37 +3,33 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-09-07 lun. 23:16 -->
|
||||
<!-- 2021-01-08 ven. 15:30 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Stewart Platforms</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<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>
|
||||
<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="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">
|
||||
<h1 class="title">Stewart Platforms</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgff0bfd7">1. Simulink Project (link)</a></li>
|
||||
<li><a href="#org38b9089">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="#org369c8bb">4. Kinematic Analysis (link)</a></li>
|
||||
<li><a href="#org2e3169e">5. Identification of the Stewart Dynamics (link)</a></li>
|
||||
<li><a href="#org0fdb910">6. Control</a></li>
|
||||
<li><a href="#org1f468b1">7. Cubic Configuration (link)</a></li>
|
||||
<li><a href="#orga2bd0e9">8. Bibliography (link)</a></li>
|
||||
<li><a href="#orgad01eeb">1. Simulink Project (link)</a></li>
|
||||
<li><a href="#orgf0936f9">2. Stewart Platform Architecture Definition (link)</a></li>
|
||||
<li><a href="#org4bef8ba">3. Simscape Model of the Stewart Platform (link)</a></li>
|
||||
<li><a href="#orgfd134cc">4. Kinematic Analysis (link)</a></li>
|
||||
<li><a href="#org2e5eede">5. Identification of the Stewart Dynamics (link)</a></li>
|
||||
<li><a href="#orgb272d52">6. Control</a></li>
|
||||
<li><a href="#org7c7008e">7. Cubic Configuration (link)</a></li>
|
||||
<li><a href="#org1f2f2c6">8. Bibliography (link)</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -44,8 +40,8 @@ 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>
|
||||
|
||||
<div id="outline-container-orgff0bfd7" class="outline-2">
|
||||
<h2 id="orgff0bfd7"><span class="section-number-2">1</span> Simulink Project (<a href="simulink-project.html">link</a>)</h2>
|
||||
<div id="outline-container-orgad01eeb" class="outline-2">
|
||||
<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">
|
||||
<p>
|
||||
The project is managed with a <b>Simulink Project</b>.
|
||||
@ -54,8 +50,8 @@ Such project is briefly presented <a href="simulink-project.html">here</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org38b9089" 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>
|
||||
<div id="outline-container-orgf0936f9" class="outline-2">
|
||||
<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">
|
||||
<p>
|
||||
The way the Stewart Platform is defined is explained <a href="stewart-architecture.html">here</a>.
|
||||
@ -80,8 +76,8 @@ Other parameters are also defined such as:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf1c7b3b" 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>
|
||||
<div id="outline-container-org4bef8ba" class="outline-2">
|
||||
<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">
|
||||
<p>
|
||||
The Stewart Platform is then modeled using <a href="https://www.mathworks.com/products/simscape.html">Simscape</a>.
|
||||
@ -93,8 +89,8 @@ The way to model is build and works is explained <a href="simscape-model.html">h
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org369c8bb" class="outline-2">
|
||||
<h2 id="org369c8bb"><span class="section-number-2">4</span> Kinematic Analysis (<a href="kinematic-study.html">link</a>)</h2>
|
||||
<div id="outline-container-orgfd134cc" class="outline-2">
|
||||
<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">
|
||||
<p>
|
||||
From the defined geometry of the Stewart platform, we can perform static analysis such as:
|
||||
@ -114,8 +110,8 @@ All these analysis are described <a href="kinematic-study.html">here</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2e3169e" 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>
|
||||
<div id="outline-container-org2e5eede" class="outline-2">
|
||||
<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">
|
||||
<p>
|
||||
The Dynamics of the Stewart platform can be identified using the Simscape model.
|
||||
@ -136,8 +132,8 @@ The code that is used for identification is explained <a href="identification.ht
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0fdb910" class="outline-2">
|
||||
<h2 id="org0fdb910"><span class="section-number-2">6</span> Control</h2>
|
||||
<div id="outline-container-orgb272d52" class="outline-2">
|
||||
<h2 id="orgb272d52"><span class="section-number-2">6</span> Control</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<p>
|
||||
The use of active control for Stewart platforms is a wide subject.
|
||||
@ -180,8 +176,8 @@ Different control architectures (centralized and decentralized) are compared for
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1f468b1" class="outline-2">
|
||||
<h2 id="org1f468b1"><span class="section-number-2">7</span> Cubic Configuration (<a href="cubic-configuration.html">link</a>)</h2>
|
||||
<div id="outline-container-org7c7008e" class="outline-2">
|
||||
<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">
|
||||
<p>
|
||||
The cubic configuration is a special class of Stewart platform that has interesting properties.
|
||||
@ -193,8 +189,8 @@ These properties are studied in <a href="cubic-configuration.html">this</a> docu
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga2bd0e9" class="outline-2">
|
||||
<h2 id="orga2bd0e9"><span class="section-number-2">8</span> Bibliography (<a href="bibliography.html">link</a>)</h2>
|
||||
<div id="outline-container-org1f2f2c6" class="outline-2">
|
||||
<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">
|
||||
<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.
|
||||
@ -204,7 +200,7 @@ Many text books, PhD thesis and articles related to parallel robots and Stewart
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-09-07 lun. 23:16</p>
|
||||
<p class="date">Created: 2021-01-08 ven. 15:30</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -3,17 +3,13 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-09-01 mar. 13:18 -->
|
||||
<!-- 2021-01-08 ven. 15:30 -->
|
||||
<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="./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>
|
||||
<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">
|
||||
@ -26,53 +22,53 @@
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgcfc8288">1. NASS</a>
|
||||
<li><a href="#org07676ec">1. NASS</a>
|
||||
<ul>
|
||||
<li><a href="#org278a89b">1.1. Identification of the Dynamics</a></li>
|
||||
<li><a href="#org0167386">1.1. Identification of the Dynamics</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcfc8288" class="outline-2">
|
||||
<h2 id="orgcfc8288"><span class="section-number-2">1</span> NASS</h2>
|
||||
<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-org278a89b" class="outline-3">
|
||||
<h3 id="org278a89b"><span class="section-number-3">1.1</span> Identification of the Dynamics</h3>
|
||||
<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('./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');
|
||||
<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, '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);
|
||||
<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('type', 'none');
|
||||
payload = initializePayload('type', 'rigid', 'm', 50);
|
||||
controller = initializeController('type', 'open-loop');
|
||||
<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 class="src src-matlab"> disturbances = initializeDisturbances();
|
||||
references = initializeReferences(stewart);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@ -81,7 +77,7 @@ references = initializeReferences(stewart);
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-09-01 mar. 13:18</p>
|
||||
<p class="date">Created: 2021-01-08 ven. 15:30</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -3,25 +3,30 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-08-05 mer. 13:27 -->
|
||||
<!-- 2021-01-08 ven. 15:29 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Stewart Platform - Simscape Model</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<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>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<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>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
@ -34,47 +39,47 @@
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgc6e0b93">1. Parameters used for the Simscape Model</a></li>
|
||||
<li><a href="#org66977e8">2. Simulation Configuration - Configuration reference</a></li>
|
||||
<li><a href="#orgb2362eb">3. Subsystem Reference</a></li>
|
||||
<li><a href="#orgdfad86d">4. Subsystem - Fixed base and Mobile Platform</a></li>
|
||||
<li><a href="#org9d4af75">5. Subsystem - Struts</a></li>
|
||||
<li><a href="#org7e2c432">6. Other Elements</a>
|
||||
<li><a href="#org79eeba1">1. Parameters used for the Simscape Model</a></li>
|
||||
<li><a href="#org677dd01">2. Simulation Configuration - Configuration reference</a></li>
|
||||
<li><a href="#orge89e3e7">3. Subsystem Reference</a></li>
|
||||
<li><a href="#org5f42d80">4. Subsystem - Fixed base and Mobile Platform</a></li>
|
||||
<li><a href="#orgbec2976">5. Subsystem - Struts</a></li>
|
||||
<li><a href="#org806ecc3">6. Other Elements</a>
|
||||
<ul>
|
||||
<li><a href="#org3535b6d">6.1. Payload</a>
|
||||
<li><a href="#orgf4bef70">6.1. Payload</a>
|
||||
<ul>
|
||||
<li><a href="#orgd38089d">Function description</a></li>
|
||||
<li><a href="#org5518a84">Optional Parameters</a></li>
|
||||
<li><a href="#orgeeb8d35">Add Payload Type</a></li>
|
||||
<li><a href="#org6d52ffc">Add Stiffness, Damping and Mass properties of the Payload</a></li>
|
||||
<li><a href="#org9c0e404">Function description</a></li>
|
||||
<li><a href="#orgabc81c1">Optional Parameters</a></li>
|
||||
<li><a href="#org4ef4a9f">Add Payload Type</a></li>
|
||||
<li><a href="#org3243d76">Add Stiffness, Damping and Mass properties of the Payload</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgaaed406">6.2. Ground</a>
|
||||
<li><a href="#orgd9e12ef">6.2. Ground</a>
|
||||
<ul>
|
||||
<li><a href="#org7732939">Function description</a></li>
|
||||
<li><a href="#org480f36e">Optional Parameters</a></li>
|
||||
<li><a href="#orgef7035d">Add Ground Type</a></li>
|
||||
<li><a href="#org95633e8">Add Stiffness and Damping properties of the Ground</a></li>
|
||||
<li><a href="#org14ff2fc">Rotation Point</a></li>
|
||||
<li><a href="#org920bdd0">Function description</a></li>
|
||||
<li><a href="#orgfa4bbf4">Optional Parameters</a></li>
|
||||
<li><a href="#org2d22970">Add Ground Type</a></li>
|
||||
<li><a href="#orgf76def4">Add Stiffness and Damping properties of the Ground</a></li>
|
||||
<li><a href="#orgdb67a68">Rotation Point</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgae6907a">7. Initialize Disturbances</a>
|
||||
<li><a href="#org6d3b61e">7. Initialize Disturbances</a>
|
||||
<ul>
|
||||
<li><a href="#orge2fa859">Function Declaration and Documentation</a></li>
|
||||
<li><a href="#org6adb628">Optional Parameters</a></li>
|
||||
<li><a href="#org30dc07c">Structure initialization</a></li>
|
||||
<li><a href="#org0755155">Ground Motion</a></li>
|
||||
<li><a href="#org7617a55">Direct Forces</a></li>
|
||||
<li><a href="#orgf14752d">Function Declaration and Documentation</a></li>
|
||||
<li><a href="#orga64679c">Optional Parameters</a></li>
|
||||
<li><a href="#org0f7e4dd">Structure initialization</a></li>
|
||||
<li><a href="#org1a28fcd">Ground Motion</a></li>
|
||||
<li><a href="#org90b72d6">Direct Forces</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgd45a07f">8. Initialize References</a>
|
||||
<li><a href="#org93f2d30">8. Initialize References</a>
|
||||
<ul>
|
||||
<li><a href="#orge5deaa1">Function Declaration and Documentation</a></li>
|
||||
<li><a href="#orgeebb364">Optional Parameters</a></li>
|
||||
<li><a href="#orgc274320">8.1. Compute the corresponding strut length</a></li>
|
||||
<li><a href="#org36ac3fa">References</a></li>
|
||||
<li><a href="#orgf124972">Function Declaration and Documentation</a></li>
|
||||
<li><a href="#orgbc7950f">Optional Parameters</a></li>
|
||||
<li><a href="#org6f05adc">8.1. Compute the corresponding strut length</a></li>
|
||||
<li><a href="#orgda73a50">References</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -89,18 +94,18 @@ In this document is explained how the Simscape model of the Stewart Platform is
|
||||
It is divided in the following sections:
|
||||
</p>
|
||||
<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="#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="#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="#orga4915c4">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="#orge8daba9">1</a>: is explained how the parameters of the Stewart platform are set for the Simscape model</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="#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="#org5fac181">4</a>: The simscape model for the fixed base and mobile platform are 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>
|
||||
|
||||
<div id="outline-container-orgc6e0b93" class="outline-2">
|
||||
<h2 id="orgc6e0b93"><span class="section-number-2">1</span> Parameters used for the Simscape Model</h2>
|
||||
<div id="outline-container-org79eeba1" class="outline-2">
|
||||
<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">
|
||||
<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>.
|
||||
</p>
|
||||
|
||||
@ -122,11 +127,11 @@ The main advantage to have all the parameters defined in one structure (and not
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org66977e8" class="outline-2">
|
||||
<h2 id="org66977e8"><span class="section-number-2">2</span> Simulation Configuration - Configuration reference</h2>
|
||||
<div id="outline-container-org677dd01" class="outline-2">
|
||||
<h2 id="org677dd01"><span class="section-number-2">2</span> Simulation Configuration - Configuration reference</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<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.
|
||||
</p>
|
||||
|
||||
@ -139,7 +144,7 @@ Basically, the configuration is stored in a mat file <code>conf_simscape.mat</co
|
||||
It is automatically loaded when the Simulink project is open. It can be loaded manually with the command:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('mat/conf_simscape.mat');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'mat/conf_simscape.mat'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -147,17 +152,17 @@ It is automatically loaded when the Simulink project is open. It can be loaded m
|
||||
It is however possible to modify specific parameters just for one simulation using the <code>set_param</code> command:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">set_param(conf_simscape, 'StopTime', 1);
|
||||
<pre class="src src-matlab"> <span class="org-matlab-simulink-keyword">set_param</span>(<span class="org-variable-name">conf_simscape</span>, <span class="org-string">'StopTime'</span>, 1);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb2362eb" class="outline-2">
|
||||
<h2 id="orgb2362eb"><span class="section-number-2">3</span> Subsystem Reference</h2>
|
||||
<div id="outline-container-orge89e3e7" class="outline-2">
|
||||
<h2 id="orge89e3e7"><span class="section-number-2">3</span> Subsystem Reference</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<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.
|
||||
</p>
|
||||
|
||||
@ -175,12 +180,12 @@ These shared subsystems are:
|
||||
</ul>
|
||||
|
||||
<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, …).
|
||||
</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>
|
||||
<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>
|
||||
@ -188,11 +193,11 @@ This subsystem is then referenced in other simulink models for various purposes
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdfad86d" class="outline-2">
|
||||
<h2 id="orgdfad86d"><span class="section-number-2">4</span> Subsystem - Fixed base and Mobile Platform</h2>
|
||||
<div id="outline-container-org5f42d80" class="outline-2">
|
||||
<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">
|
||||
<p>
|
||||
<a id="orga4915c4"></a>
|
||||
<a id="org5fac181"></a>
|
||||
Both the fixed base and the mobile platform simscape models share many similarities.
|
||||
</p>
|
||||
|
||||
@ -210,14 +215,14 @@ As always, the parameters that define the geometry are taken from the <code>stew
|
||||
</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>
|
||||
<p><span class="figure-number">Figure 2: </span>Simscape Model of the Fixed base</p>
|
||||
</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>
|
||||
<p><span class="figure-number">Figure 3: </span>Simscape Model of the Mobile platform</p>
|
||||
@ -225,13 +230,13 @@ As always, the parameters that define the geometry are taken from the <code>stew
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9d4af75" class="outline-2">
|
||||
<h2 id="org9d4af75"><span class="section-number-2">5</span> Subsystem - Struts</h2>
|
||||
<div id="outline-container-orgbec2976" class="outline-2">
|
||||
<h2 id="orgbec2976"><span class="section-number-2">5</span> Subsystem - Struts</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<p>
|
||||
<a id="orgdb5206f"></a>
|
||||
<a id="org793a5c7"></a>
|
||||
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>
|
||||
@ -253,7 +258,7 @@ This is why the <b>UPS</b> configuration is used, but other configuration can be
|
||||
</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>
|
||||
<p><span class="figure-number">Figure 4: </span>Simscape model of the Stewart platform’s strut</p>
|
||||
@ -282,15 +287,15 @@ Both inertial sensors are described bellow.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7e2c432" class="outline-2">
|
||||
<h2 id="org7e2c432"><span class="section-number-2">6</span> Other Elements</h2>
|
||||
<div id="outline-container-org806ecc3" class="outline-2">
|
||||
<h2 id="org806ecc3"><span class="section-number-2">6</span> Other Elements</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
</div>
|
||||
<div id="outline-container-org3535b6d" class="outline-3">
|
||||
<h3 id="org3535b6d"><span class="section-number-3">6.1</span> Payload</h3>
|
||||
<div id="outline-container-orgf4bef70" class="outline-3">
|
||||
<h3 id="orgf4bef70"><span class="section-number-3">6.1</span> Payload</h3>
|
||||
<div class="outline-text-3" id="text-6-1">
|
||||
<p>
|
||||
<a id="org3a56808"></a>
|
||||
<a id="orgdd9802d"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -298,95 +303,95 @@ This Matlab function is accessible <a href="../src/initializePayload.m">here</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd38089d" class="outline-4">
|
||||
<h4 id="orgd38089d">Function description</h4>
|
||||
<div class="outline-text-4" id="text-orgd38089d">
|
||||
<div id="outline-container-org9c0e404" class="outline-4">
|
||||
<h4 id="org9c0e404">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org9c0e404">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [payload] = initializePayload(args)
|
||||
% initializePayload - Initialize the Payload that can then be used for simulations and analysis
|
||||
%
|
||||
% Syntax: [payload] = initializePayload(args)
|
||||
%
|
||||
% Inputs:
|
||||
% - args - Structure with the following fields:
|
||||
% - type - 'none', 'rigid', 'flexible', 'cartesian'
|
||||
% - h [1x1] - Height of the CoM of the payload w.r.t {M} [m]
|
||||
% This also the position where K and C are defined
|
||||
% - K [6x1] - Stiffness of the Payload [N/m, N/rad]
|
||||
% - C [6x1] - Damping of the Payload [N/(m/s), N/(rad/s)]
|
||||
% - m [1x1] - Mass of the Payload [kg]
|
||||
% - I [3x3] - Inertia matrix for the Payload [kg*m2]
|
||||
%
|
||||
% Outputs:
|
||||
% - payload - Struture with the following properties:
|
||||
% - type - 1 (none), 2 (rigid), 3 (flexible)
|
||||
% - h [1x1] - Height of the CoM of the payload w.r.t {M} [m]
|
||||
% - K [6x1] - Stiffness of the Payload [N/m, N/rad]
|
||||
% - C [6x1] - Stiffness of the Payload [N/(m/s), N/(rad/s)]
|
||||
% - m [1x1] - Mass of the Payload [kg]
|
||||
% - I [3x3] - Inertia matrix for the Payload [kg*m2]
|
||||
<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">%</span>
|
||||
<span class="org-comment">% Syntax: [payload] = initializePayload(args)</span>
|
||||
<span class="org-comment">%</span>
|
||||
<span class="org-comment">% Inputs:</span>
|
||||
<span class="org-comment">% - args - Structure with the following fields:</span>
|
||||
<span class="org-comment">% - type - 'none', 'rigid', 'flexible', 'cartesian'</span>
|
||||
<span class="org-comment">% - h [1x1] - Height of the CoM of the payload w.r.t {M} [m]</span>
|
||||
<span class="org-comment">% This also the position where K and C are defined</span>
|
||||
<span class="org-comment">% - K [6x1] - Stiffness of the Payload [N/m, N/rad]</span>
|
||||
<span class="org-comment">% - C [6x1] - Damping of the Payload [N/(m/s), N/(rad/s)]</span>
|
||||
<span class="org-comment">% - m [1x1] - Mass of the Payload [kg]</span>
|
||||
<span class="org-comment">% - I [3x3] - Inertia matrix for the Payload [kg*m2]</span>
|
||||
<span class="org-comment">%</span>
|
||||
<span class="org-comment">% Outputs:</span>
|
||||
<span class="org-comment">% - payload - Struture with the following properties:</span>
|
||||
<span class="org-comment">% - type - 1 (none), 2 (rigid), 3 (flexible)</span>
|
||||
<span class="org-comment">% - h [1x1] - Height of the CoM of the payload w.r.t {M} [m]</span>
|
||||
<span class="org-comment">% - K [6x1] - Stiffness of the Payload [N/m, N/rad]</span>
|
||||
<span class="org-comment">% - C [6x1] - Stiffness of the Payload [N/(m/s), N/(rad/s)]</span>
|
||||
<span class="org-comment">% - m [1x1] - Mass of the Payload [kg]</span>
|
||||
<span class="org-comment">% - I [3x3] - Inertia matrix for the Payload [kg*m2]</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org5518a84" class="outline-4">
|
||||
<h4 id="org5518a84">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-org5518a84">
|
||||
<div id="outline-container-orgabc81c1" class="outline-4">
|
||||
<h4 id="orgabc81c1">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-orgabc81c1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'cartesian'})} = 'none'
|
||||
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e8*ones(6,1)
|
||||
args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.h (1,1) double {mustBeNumeric, mustBeNonnegative} = 100e-3
|
||||
args.m (1,1) double {mustBeNumeric, mustBeNonnegative} = 10
|
||||
args.I (3,3) double {mustBeNumeric, mustBeNonnegative} = 1*eye(3)
|
||||
end
|
||||
<pre class="src src-matlab"> <span class="org-keyword">arguments</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>
|
||||
<span class="org-variable-name">args</span>.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e8<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)
|
||||
<span class="org-variable-name">args</span>.h (1,1) double {mustBeNumeric, mustBeNonnegative} = 100e<span class="org-type">-</span>3
|
||||
<span class="org-variable-name">args</span>.m (1,1) double {mustBeNumeric, mustBeNonnegative} = 10
|
||||
<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>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgeeb8d35" class="outline-4">
|
||||
<h4 id="orgeeb8d35">Add Payload Type</h4>
|
||||
<div class="outline-text-4" id="text-orgeeb8d35">
|
||||
<div id="outline-container-org4ef4a9f" class="outline-4">
|
||||
<h4 id="org4ef4a9f">Add Payload Type</h4>
|
||||
<div class="outline-text-4" id="text-org4ef4a9f">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">switch args.type
|
||||
case 'none'
|
||||
payload.type = 1;
|
||||
case 'rigid'
|
||||
payload.type = 2;
|
||||
case 'flexible'
|
||||
payload.type = 3;
|
||||
case 'cartesian'
|
||||
payload.type = 4;
|
||||
end
|
||||
<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>
|
||||
payload.type = 1;
|
||||
<span class="org-keyword">case</span> <span class="org-string">'rigid'</span>
|
||||
payload.type = 2;
|
||||
<span class="org-keyword">case</span> <span class="org-string">'flexible'</span>
|
||||
payload.type = 3;
|
||||
<span class="org-keyword">case</span> <span class="org-string">'cartesian'</span>
|
||||
payload.type = 4;
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org6d52ffc" class="outline-4">
|
||||
<h4 id="org6d52ffc">Add Stiffness, Damping and Mass properties of the Payload</h4>
|
||||
<div class="outline-text-4" id="text-org6d52ffc">
|
||||
<div id="outline-container-org3243d76" class="outline-4">
|
||||
<h4 id="org3243d76">Add Stiffness, Damping and Mass properties of the Payload</h4>
|
||||
<div class="outline-text-4" id="text-org3243d76">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">payload.K = args.K;
|
||||
payload.C = args.C;
|
||||
payload.m = args.m;
|
||||
payload.I = args.I;
|
||||
<pre class="src src-matlab"> payload.K = args.K;
|
||||
payload.C = args.C;
|
||||
payload.m = args.m;
|
||||
payload.I = args.I;
|
||||
|
||||
payload.h = args.h;
|
||||
payload.h = args.h;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgaaed406" class="outline-3">
|
||||
<h3 id="orgaaed406"><span class="section-number-3">6.2</span> Ground</h3>
|
||||
<div id="outline-container-orgd9e12ef" class="outline-3">
|
||||
<h3 id="orgd9e12ef"><span class="section-number-3">6.2</span> Ground</h3>
|
||||
<div class="outline-text-3" id="text-6-2">
|
||||
<p>
|
||||
<a id="orge64ba82"></a>
|
||||
<a id="org140423a"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -394,228 +399,228 @@ This Matlab function is accessible <a href="../src/initializeGround.m">here</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7732939" class="outline-4">
|
||||
<h4 id="org7732939">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org7732939">
|
||||
<div id="outline-container-org920bdd0" class="outline-4">
|
||||
<h4 id="org920bdd0">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org920bdd0">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [ground] = initializeGround(args)
|
||||
% initializeGround - Initialize the Ground that can then be used for simulations and analysis
|
||||
%
|
||||
% Syntax: [ground] = initializeGround(args)
|
||||
%
|
||||
% Inputs:
|
||||
% - args - Structure with the following fields:
|
||||
% - type - 'none', 'solid', 'flexible'
|
||||
% - rot_point [3x1] - Rotation point for the ground motion [m]
|
||||
% - K [3x1] - Translation Stiffness of the Ground [N/m]
|
||||
% - C [3x1] - Translation Damping of the Ground [N/(m/s)]
|
||||
%
|
||||
% Outputs:
|
||||
% - ground - Struture with the following properties:
|
||||
% - type - 1 (none), 2 (rigid), 3 (flexible)
|
||||
% - K [3x1] - Translation Stiffness of the Ground [N/m]
|
||||
% - C [3x1] - Translation Damping of the Ground [N/(m/s)]
|
||||
<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">%</span>
|
||||
<span class="org-comment">% Syntax: [ground] = initializeGround(args)</span>
|
||||
<span class="org-comment">%</span>
|
||||
<span class="org-comment">% Inputs:</span>
|
||||
<span class="org-comment">% - args - Structure with the following fields:</span>
|
||||
<span class="org-comment">% - type - 'none', 'solid', 'flexible'</span>
|
||||
<span class="org-comment">% - rot_point [3x1] - Rotation point for the ground motion [m]</span>
|
||||
<span class="org-comment">% - K [3x1] - Translation Stiffness of the Ground [N/m]</span>
|
||||
<span class="org-comment">% - C [3x1] - Translation Damping of the Ground [N/(m/s)]</span>
|
||||
<span class="org-comment">%</span>
|
||||
<span class="org-comment">% Outputs:</span>
|
||||
<span class="org-comment">% - ground - Struture with the following properties:</span>
|
||||
<span class="org-comment">% - type - 1 (none), 2 (rigid), 3 (flexible)</span>
|
||||
<span class="org-comment">% - K [3x1] - Translation Stiffness of the Ground [N/m]</span>
|
||||
<span class="org-comment">% - C [3x1] - Translation Damping of the Ground [N/(m/s)]</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org480f36e" class="outline-4">
|
||||
<h4 id="org480f36e">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-org480f36e">
|
||||
<div id="outline-container-orgfa4bbf4" class="outline-4">
|
||||
<h4 id="orgfa4bbf4">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-orgfa4bbf4">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible'})} = 'none'
|
||||
args.rot_point (3,1) double {mustBeNumeric} = zeros(3,1)
|
||||
args.K (3,1) double {mustBeNumeric, mustBeNonnegative} = 1e8*ones(3,1)
|
||||
args.C (3,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(3,1)
|
||||
end
|
||||
<pre class="src src-matlab"> <span class="org-keyword">arguments</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>
|
||||
<span class="org-variable-name">args</span>.rot_point (3,1) double {mustBeNumeric} = zeros(3,1)
|
||||
<span class="org-variable-name">args</span>.K (3,1) double {mustBeNumeric, mustBeNonnegative} = 1e8<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>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgef7035d" class="outline-4">
|
||||
<h4 id="orgef7035d">Add Ground Type</h4>
|
||||
<div class="outline-text-4" id="text-orgef7035d">
|
||||
<div id="outline-container-org2d22970" class="outline-4">
|
||||
<h4 id="org2d22970">Add Ground Type</h4>
|
||||
<div class="outline-text-4" id="text-org2d22970">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">switch args.type
|
||||
case 'none'
|
||||
ground.type = 1;
|
||||
case 'rigid'
|
||||
ground.type = 2;
|
||||
case 'flexible'
|
||||
ground.type = 3;
|
||||
end
|
||||
<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>
|
||||
ground.type = 1;
|
||||
<span class="org-keyword">case</span> <span class="org-string">'rigid'</span>
|
||||
ground.type = 2;
|
||||
<span class="org-keyword">case</span> <span class="org-string">'flexible'</span>
|
||||
ground.type = 3;
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org95633e8" class="outline-4">
|
||||
<h4 id="org95633e8">Add Stiffness and Damping properties of the Ground</h4>
|
||||
<div class="outline-text-4" id="text-org95633e8">
|
||||
<div id="outline-container-orgf76def4" class="outline-4">
|
||||
<h4 id="orgf76def4">Add Stiffness and Damping properties of the Ground</h4>
|
||||
<div class="outline-text-4" id="text-orgf76def4">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ground.K = args.K;
|
||||
ground.C = args.C;
|
||||
<pre class="src src-matlab"> ground.K = args.K;
|
||||
ground.C = args.C;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org14ff2fc" class="outline-4">
|
||||
<h4 id="org14ff2fc">Rotation Point</h4>
|
||||
<div class="outline-text-4" id="text-org14ff2fc">
|
||||
<div id="outline-container-orgdb67a68" class="outline-4">
|
||||
<h4 id="orgdb67a68">Rotation Point</h4>
|
||||
<div class="outline-text-4" id="text-orgdb67a68">
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orgae6907a" class="outline-2">
|
||||
<h2 id="orgae6907a"><span class="section-number-2">7</span> Initialize Disturbances</h2>
|
||||
<div id="outline-container-org6d3b61e" class="outline-2">
|
||||
<h2 id="org6d3b61e"><span class="section-number-2">7</span> Initialize Disturbances</h2>
|
||||
<div class="outline-text-2" id="text-7">
|
||||
<p>
|
||||
<a id="org96254bf"></a>
|
||||
<a id="org5c942ea"></a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge2fa859" class="outline-3">
|
||||
<h3 id="orge2fa859">Function Declaration and Documentation</h3>
|
||||
<div class="outline-text-3" id="text-orge2fa859">
|
||||
<div id="outline-container-orgf14752d" class="outline-3">
|
||||
<h3 id="orgf14752d">Function Declaration and Documentation</h3>
|
||||
<div class="outline-text-3" id="text-orgf14752d">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [disturbances] = initializeDisturbances(args)
|
||||
% initializeDisturbances - Initialize the disturbances
|
||||
%
|
||||
% Syntax: [disturbances] = initializeDisturbances(args)
|
||||
%
|
||||
% Inputs:
|
||||
% - args -
|
||||
<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">%</span>
|
||||
<span class="org-comment">% Syntax: [disturbances] = initializeDisturbances(args)</span>
|
||||
<span class="org-comment">%</span>
|
||||
<span class="org-comment">% Inputs:</span>
|
||||
<span class="org-comment">% - args -</span>
|
||||
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org6adb628" class="outline-3">
|
||||
<h3 id="org6adb628">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org6adb628">
|
||||
<div id="outline-container-orga64679c" class="outline-3">
|
||||
<h3 id="orga64679c">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-orga64679c">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
args.Fd double {mustBeNumeric, mustBeReal} = zeros(6,1)
|
||||
args.Fd_t double {mustBeNumeric, mustBeReal} = 0
|
||||
args.Dw double {mustBeNumeric, mustBeReal} = zeros(6,1)
|
||||
args.Dw_t double {mustBeNumeric, mustBeReal} = 0
|
||||
end
|
||||
<pre class="src src-matlab"> <span class="org-keyword">arguments</span>
|
||||
<span class="org-variable-name">args</span>.Fd double {mustBeNumeric, mustBeReal} = zeros(6,1)
|
||||
<span class="org-variable-name">args</span>.Fd_t double {mustBeNumeric, mustBeReal} = 0
|
||||
<span class="org-variable-name">args</span>.Dw double {mustBeNumeric, mustBeReal} = zeros(6,1)
|
||||
<span class="org-variable-name">args</span>.Dw_t double {mustBeNumeric, mustBeReal} = 0
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="outline-container-org30dc07c" class="outline-3">
|
||||
<h3 id="org30dc07c">Structure initialization</h3>
|
||||
<div class="outline-text-3" id="text-org30dc07c">
|
||||
<div id="outline-container-org0f7e4dd" class="outline-3">
|
||||
<h3 id="org0f7e4dd">Structure initialization</h3>
|
||||
<div class="outline-text-3" id="text-org0f7e4dd">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">disturbances = struct();
|
||||
<pre class="src src-matlab"> disturbances = struct();
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0755155" class="outline-3">
|
||||
<h3 id="org0755155">Ground Motion</h3>
|
||||
<div class="outline-text-3" id="text-org0755155">
|
||||
<div id="outline-container-org1a28fcd" class="outline-3">
|
||||
<h3 id="org1a28fcd">Ground Motion</h3>
|
||||
<div class="outline-text-3" id="text-org1a28fcd">
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7617a55" class="outline-3">
|
||||
<h3 id="org7617a55">Direct Forces</h3>
|
||||
<div class="outline-text-3" id="text-org7617a55">
|
||||
<div id="outline-container-org90b72d6" class="outline-3">
|
||||
<h3 id="org90b72d6">Direct Forces</h3>
|
||||
<div class="outline-text-3" id="text-org90b72d6">
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd45a07f" class="outline-2">
|
||||
<h2 id="orgd45a07f"><span class="section-number-2">8</span> Initialize References</h2>
|
||||
<div id="outline-container-org93f2d30" class="outline-2">
|
||||
<h2 id="org93f2d30"><span class="section-number-2">8</span> Initialize References</h2>
|
||||
<div class="outline-text-2" id="text-8">
|
||||
<p>
|
||||
<a id="org7e762f4"></a>
|
||||
<a id="orge24eeb5"></a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge5deaa1" class="outline-3">
|
||||
<h3 id="orge5deaa1">Function Declaration and Documentation</h3>
|
||||
<div class="outline-text-3" id="text-orge5deaa1">
|
||||
<div id="outline-container-orgf124972" class="outline-3">
|
||||
<h3 id="orgf124972">Function Declaration and Documentation</h3>
|
||||
<div class="outline-text-3" id="text-orgf124972">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [references] = initializeReferences(stewart, args)
|
||||
% initializeReferences - Initialize the references
|
||||
%
|
||||
% Syntax: [references] = initializeReferences(args)
|
||||
%
|
||||
% Inputs:
|
||||
% - args -
|
||||
<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">%</span>
|
||||
<span class="org-comment">% Syntax: [references] = initializeReferences(args)</span>
|
||||
<span class="org-comment">%</span>
|
||||
<span class="org-comment">% Inputs:</span>
|
||||
<span class="org-comment">% - args -</span>
|
||||
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgeebb364" class="outline-3">
|
||||
<h3 id="orgeebb364">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-orgeebb364">
|
||||
<div id="outline-container-orgbc7950f" class="outline-3">
|
||||
<h3 id="orgbc7950f">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-orgbc7950f">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
args.t double {mustBeNumeric, mustBeReal} = 0
|
||||
args.r double {mustBeNumeric, mustBeReal} = zeros(6, 1)
|
||||
end
|
||||
<pre class="src src-matlab"> <span class="org-keyword">arguments</span>
|
||||
<span class="org-variable-name">stewart</span>
|
||||
<span class="org-variable-name">args</span>.t double {mustBeNumeric, mustBeReal} = 0
|
||||
<span class="org-variable-name">args</span>.r double {mustBeNumeric, mustBeReal} = zeros(6, 1)
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc274320" class="outline-3">
|
||||
<h3 id="orgc274320"><span class="section-number-3">8.1</span> Compute the corresponding strut length</h3>
|
||||
<div id="outline-container-org6f05adc" class="outline-3">
|
||||
<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="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));
|
||||
|
||||
for i = 1:length(args.t)
|
||||
R = [cos(args.r(6,i)) -sin(args.r(6,i)) 0;
|
||||
sin(args.r(6,i)) cos(args.r(6,i)) 0;
|
||||
0 0 1] * ...
|
||||
[cos(args.r(5,i)) 0 sin(args.r(5,i));
|
||||
0 1 0;
|
||||
-sin(args.r(5,i)) 0 cos(args.r(5,i))] * ...
|
||||
[1 0 0;
|
||||
0 cos(args.r(4,i)) -sin(args.r(4,i));
|
||||
0 sin(args.r(4,i)) cos(args.r(4,i))];
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:length(args.t)</span>
|
||||
R = [cos(args.r(6,<span class="org-constant">i</span>)) <span class="org-type">-</span>sin(args.r(6,<span class="org-constant">i</span>)) 0;
|
||||
sin(args.r(6,<span class="org-constant">i</span>)) cos(args.r(6,<span class="org-constant">i</span>)) 0;
|
||||
0 0 1] <span class="org-type">*</span> ...
|
||||
[cos(args.r(5,<span class="org-constant">i</span>)) 0 sin(args.r(5,<span class="org-constant">i</span>));
|
||||
0 1 0;
|
||||
<span class="org-type">-</span>sin(args.r(5,<span class="org-constant">i</span>)) 0 cos(args.r(5,<span class="org-constant">i</span>))] <span class="org-type">*</span> ...
|
||||
[1 0 0;
|
||||
0 cos(args.r(4,<span class="org-constant">i</span>)) <span class="org-type">-</span>sin(args.r(4,<span class="org-constant">i</span>));
|
||||
0 sin(args.r(4,<span class="org-constant">i</span>)) cos(args.r(4,<span class="org-constant">i</span>))];
|
||||
|
||||
[Li, dLi] = inverseKinematics(stewart, 'AP', [args.r(1,i); args.r(2,i); args.r(3,i)], 'ARB', R);
|
||||
rL(:, i) = dLi;
|
||||
end
|
||||
[Li, dLi] = inverseKinematics(stewart, <span class="org-string">'AP'</span>, [args.r(1,<span class="org-constant">i</span>); args.r(2,<span class="org-constant">i</span>); args.r(3,<span class="org-constant">i</span>)], <span class="org-string">'ARB'</span>, R);
|
||||
rL(<span class="org-type">:</span>, <span class="org-constant">i</span>) = dLi;
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org36ac3fa" class="outline-3">
|
||||
<h3 id="org36ac3fa">References</h3>
|
||||
<div class="outline-text-3" id="text-org36ac3fa">
|
||||
<div id="outline-container-orgda73a50" class="outline-3">
|
||||
<h3 id="orgda73a50">References</h3>
|
||||
<div class="outline-text-3" id="text-orgda73a50">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">references.r = timeseries(args.r, args.t);
|
||||
references.rL = timeseries(rL, args.t);
|
||||
<pre class="src src-matlab"> references.r = timeseries(args.r, args.t);
|
||||
references.rL = timeseries(rL, args.t);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@ -624,7 +629,7 @@ references.rL = timeseries(rL, args.t);
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-08-05 mer. 13:27</p>
|
||||
<p class="date">Created: 2021-01-08 ven. 15:29</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -3,17 +3,13 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-08-05 mer. 13:27 -->
|
||||
<!-- 2021-01-08 ven. 15:30 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Simulink Project for the Stewart Simscape folder</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<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>
|
||||
<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">
|
||||
@ -49,7 +45,7 @@ The project can be opened using the <code>simulinkproject</code> function:
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">simulinkproject('../');
|
||||
<pre class="src src-matlab"> simulinkproject(<span class="org-string">'../'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -58,19 +54,19 @@ When the project opens, a startup script is ran.
|
||||
The startup script is defined below and is exported to the <code>project_startup.m</code> script.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">project = simulinkproject;
|
||||
projectRoot = project.RootFolder;
|
||||
<pre class="src src-matlab"> project = simulinkproject;
|
||||
projectRoot = project.RootFolder;
|
||||
|
||||
myCacheFolder = fullfile(projectRoot, '.SimulinkCache');
|
||||
myCodeFolder = fullfile(projectRoot, '.SimulinkCode');
|
||||
myCacheFolder = fullfile(projectRoot, <span class="org-string">'.SimulinkCache'</span>);
|
||||
myCodeFolder = fullfile(projectRoot, <span class="org-string">'.SimulinkCode'</span>);
|
||||
|
||||
Simulink.fileGenControl('set',...
|
||||
'CacheFolder', myCacheFolder,...
|
||||
'CodeGenFolder', myCodeFolder,...
|
||||
'createDir', true);
|
||||
Simulink.fileGenControl(<span class="org-string">'set'</span>,...
|
||||
<span class="org-string">'CacheFolder'</span>, myCacheFolder,...
|
||||
<span class="org-string">'CodeGenFolder'</span>, myCodeFolder,...
|
||||
<span class="org-string">'createDir'</span>, <span class="org-constant">true</span>);
|
||||
|
||||
%% Load the Simscape Configuration
|
||||
load('mat/conf_simscape.mat');
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Load the Simscape Configuration</span></span>
|
||||
load(<span class="org-string">'mat/conf_simscape.mat'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -78,7 +74,7 @@ load('mat/conf_simscape.mat');
|
||||
When the project closes, it runs the <code>project_shutdown.m</code> script defined below.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Simulink.fileGenControl('reset');
|
||||
<pre class="src src-matlab"> Simulink.fileGenControl(<span class="org-string">'reset'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -88,7 +84,7 @@ The project also permits to automatically add defined folder to the path when th
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-08-05 mer. 13:27</p>
|
||||
<p class="date">Created: 2021-01-08 ven. 15:30</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -3,25 +3,30 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-08-05 mer. 13:27 -->
|
||||
<!-- 2021-01-08 ven. 15:30 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Stewart Platform - Static Analysis</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<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>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<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>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
@ -34,20 +39,20 @@
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgc502e97">1. Coupling</a></li>
|
||||
<li><a href="#org5d87fd3">1. Coupling</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc502e97" class="outline-2">
|
||||
<h2 id="orgc502e97"><span class="section-number-2">1</span> Coupling</h2>
|
||||
<div id="outline-container-org5d87fd3" class="outline-2">
|
||||
<h2 id="org5d87fd3"><span class="section-number-2">1</span> Coupling</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
What causes the coupling from \(F_i\) to \(X_i\) ?
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org41430df" class="figure">
|
||||
<div id="orgd94ead3" class="figure">
|
||||
<p><img src="figs/coupling.png" alt="coupling.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Block diagram to control an hexapod</p>
|
||||
@ -69,7 +74,7 @@ Thus, the system is uncoupled if \(G\) and \(K\) are diagonal.
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-08-05 mer. 13:27</p>
|
||||
<p class="date">Created: 2021-01-08 ven. 15:30</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -9,12 +9,8 @@
|
||||
#+HTML_LINK_HOME: ./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="./css/readtheorg.css"/>
|
||||
#+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>
|
||||
#+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
|
||||
|
@ -9,12 +9,8 @@
|
||||
#+HTML_LINK_HOME: ./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="./css/readtheorg.css"/>
|
||||
#+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>
|
||||
#+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
|
||||
|
@ -9,12 +9,8 @@
|
||||
#+HTML_LINK_HOME: ./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="./css/readtheorg.css"/>
|
||||
#+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>
|
||||
#+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
|
||||
|
@ -9,12 +9,8 @@
|
||||
#+HTML_LINK_HOME: ./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="./css/readtheorg.css"/>
|
||||
#+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>
|
||||
#+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
|
||||
|
@ -9,12 +9,8 @@
|
||||
#+HTML_LINK_HOME: ./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="./css/readtheorg.css"/>
|
||||
#+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>
|
||||
#+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
|
||||
|
@ -9,12 +9,8 @@
|
||||
#+HTML_LINK_HOME: ./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="./css/readtheorg.css"/>
|
||||
#+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>
|
||||
#+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
|
||||
|
@ -9,12 +9,8 @@
|
||||
#+HTML_LINK_HOME: ./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="./css/readtheorg.css"/>
|
||||
#+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>
|
||||
#+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
|
||||
|
@ -9,12 +9,8 @@
|
||||
#+HTML_LINK_HOME: ./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="./css/readtheorg.css"/>
|
||||
#+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>
|
||||
#+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
|
||||
|
@ -1,11 +1,10 @@
|
||||
#+TITLE: Stewart Platforms
|
||||
:DRAWER:
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
|
||||
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
|
||||
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
|
||||
#+HTML_LINK_HOME: https://research.tdehaeze.xyz/
|
||||
#+HTML_LINK_UP: https://research.tdehaeze.xyz/
|
||||
|
||||
#+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
|
||||
|
@ -9,12 +9,8 @@
|
||||
#+HTML_LINK_HOME: ./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="./css/readtheorg.css"/>
|
||||
#+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>
|
||||
#+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
|
||||
|
@ -9,12 +9,8 @@
|
||||
#+HTML_LINK_HOME: ./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="./css/readtheorg.css"/>
|
||||
#+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>
|
||||
#+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
|
||||
|
@ -9,12 +9,8 @@
|
||||
#+HTML_LINK_HOME: ./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="./css/readtheorg.css"/>
|
||||
#+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>
|
||||
#+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
|
||||
|
@ -9,12 +9,8 @@
|
||||
#+HTML_LINK_HOME: ./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="./css/readtheorg.css"/>
|
||||
#+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>
|
||||
#+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
|
||||
|
@ -9,12 +9,8 @@
|
||||
#+HTML_LINK_HOME: ./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="./css/readtheorg.css"/>
|
||||
#+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>
|
||||
#+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
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -9,12 +9,8 @@
|
||||
#+HTML_LINK_HOME: ./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="./css/readtheorg.css"/>
|
||||
#+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>
|
||||
#+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
|
||||
|
Loading…
Reference in New Issue
Block a user