Change CSS/JS location + publish all

This commit is contained in:
Thomas Dehaeze 2021-01-08 15:34:53 +01:00
parent 32330b92f0
commit 240d113062
31 changed files with 5074 additions and 7624 deletions

View File

@ -3,17 +3,13 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-08-05 mer. 13:27 --> <!-- 2021-01-08 ven. 15:30 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Stewart Platform - Bibliography</title> <title>Stewart Platform - Bibliography</title>
<meta name="generator" content="Org mode" /> <meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" /> <meta name="author" content="Dehaeze Thomas" />
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
<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>
</head> </head>
<body> <body>
<div id="org-div-home-and-up"> <div id="org-div-home-and-up">
@ -26,12 +22,12 @@
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#org53a1e55">1. Books</a></li> <li><a href="#orgdb4a638">1. Books</a></li>
<li><a href="#org91d3f32">2. Thesis</a></li> <li><a href="#orgaf171ea">2. Thesis</a></li>
<li><a href="#org51f3fcf">3. Articles - Reviews</a></li> <li><a href="#org5ca95b9">3. Articles - Reviews</a></li>
<li><a href="#orga1d46df">4. Articles - Design Related</a></li> <li><a href="#org029f6ba">4. Articles - Design Related</a></li>
<li><a href="#org0126727">5. Articles - Control Related</a></li> <li><a href="#org16381e0">5. Articles - Control Related</a></li>
<li><a href="#orgddb9870">6. Articles - Other architectures</a></li> <li><a href="#org2e3cc9f">6. Articles - Other architectures</a></li>
</ul> </ul>
</div> </div>
</div> </div>
@ -50,8 +46,8 @@ Things to add:
<li>(<a href="#citeproc_bib_item_108">Zheng et al. 2018</a>)</li> <li>(<a href="#citeproc_bib_item_108">Zheng et al. 2018</a>)</li>
</ul> </ul>
<div id="outline-container-org53a1e55" class="outline-2"> <div id="outline-container-orgdb4a638" class="outline-2">
<h2 id="org53a1e55"><span class="section-number-2">1</span> Books</h2> <h2 id="orgdb4a638"><span class="section-number-2">1</span> Books</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-1">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -92,8 +88,8 @@ Things to add:
</div> </div>
</div> </div>
<div id="outline-container-org91d3f32" class="outline-2"> <div id="outline-container-orgaf171ea" class="outline-2">
<h2 id="org91d3f32"><span class="section-number-2">2</span> Thesis</h2> <h2 id="orgaf171ea"><span class="section-number-2">2</span> Thesis</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-2">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -134,8 +130,8 @@ Things to add:
</div> </div>
</div> </div>
<div id="outline-container-org51f3fcf" class="outline-2"> <div id="outline-container-org5ca95b9" class="outline-2">
<h2 id="org51f3fcf"><span class="section-number-2">3</span> Articles - Reviews</h2> <h2 id="org5ca95b9"><span class="section-number-2">3</span> Articles - Reviews</h2>
<div class="outline-text-2" id="text-3"> <div class="outline-text-2" id="text-3">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -181,8 +177,8 @@ Things to add:
</div> </div>
</div> </div>
<div id="outline-container-orga1d46df" class="outline-2"> <div id="outline-container-org029f6ba" class="outline-2">
<h2 id="orga1d46df"><span class="section-number-2">4</span> Articles - Design Related</h2> <h2 id="org029f6ba"><span class="section-number-2">4</span> Articles - Design Related</h2>
<div class="outline-text-2" id="text-4"> <div class="outline-text-2" id="text-4">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -258,8 +254,8 @@ Things to add:
</div> </div>
</div> </div>
<div id="outline-container-org0126727" class="outline-2"> <div id="outline-container-org16381e0" class="outline-2">
<h2 id="org0126727"><span class="section-number-2">5</span> Articles - Control Related</h2> <h2 id="org16381e0"><span class="section-number-2">5</span> Articles - Control Related</h2>
<div class="outline-text-2" id="text-5"> <div class="outline-text-2" id="text-5">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -1273,8 +1269,8 @@ Things to add:
</div> </div>
</div> </div>
<div id="outline-container-orgddb9870" class="outline-2"> <div id="outline-container-org2e3cc9f" class="outline-2">
<h2 id="orgddb9870"><span class="section-number-2">6</span> Articles - Other architectures</h2> <h2 id="org2e3cc9f"><span class="section-number-2">6</span> Articles - Other architectures</h2>
<div class="outline-text-2" id="text-6"> <div class="outline-text-2" id="text-6">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -1418,7 +1414,7 @@ Things to add:
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-08-05 mer. 13:27</p> <p class="date">Created: 2021-01-08 ven. 15:30</p>
</div> </div>
</body> </body>
</html> </html>

View File

@ -3,25 +3,30 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-08-05 mer. 13:27 --> <!-- 2021-01-08 ven. 15:30 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Stewart Platform - Decentralized Active Damping</title> <title>Stewart Platform - Decentralized Active Damping</title>
<meta name="generator" content="Org mode" /> <meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" /> <meta name="author" content="Dehaeze Thomas" />
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
<script src="./js/jquery.min.js"></script> <script>
<script src="./js/bootstrap.min.js"></script> MathJax = {
<script src="./js/jquery.stickytableheaders.min.js"></script> svg: {
<script src="./js/readtheorg.js"></script> scale: 1,
<script>MathJax = { fontCache: "global"
tex: { },
tags: 'ams', tex: {
macros: {bm: ["\\boldsymbol{#1}",1],} tags: "ams",
} multlineWidth: "%MULTLINEWIDTH",
}; tagSide: "right",
</script> macros: {bm: ["\\boldsymbol{#1}",1],},
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> tagIndent: ".8em"
}
};
</script>
<script id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
</head> </head>
<body> <body>
<div id="org-div-home-and-up"> <div id="org-div-home-and-up">
@ -34,35 +39,35 @@
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#orgc22d5d6">1. Inertial Control</a> <li><a href="#orgddaf52f">1. Inertial Control</a>
<ul> <ul>
<li><a href="#org1671c0b">1.1. Identification of the Dynamics</a></li> <li><a href="#org933440d">1.1. Identification of the Dynamics</a></li>
<li><a href="#orgdae44ba">1.2. Effect of the Flexible Joint stiffness and Actuator amplification on 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="#org89e2002">1.3. Obtained Damping</a></li> <li><a href="#org533c409">1.3. Obtained Damping</a></li>
<li><a href="#org3904320">1.4. Conclusion</a></li> <li><a href="#orgc76021e">1.4. Conclusion</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org89e426a">2. Integral Force Feedback</a> <li><a href="#orgf8ed544">2. Integral Force Feedback</a>
<ul> <ul>
<li><a href="#orgcb85703">2.1. Identification of the Dynamics with perfect Joints</a></li> <li><a href="#org7b81fe5">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="#org3dca396">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="#org7044ed4">2.3. Obtained Damping</a></li>
<li><a href="#orgca67baa">2.4. Conclusion</a></li> <li><a href="#org9c769b9">2.4. Conclusion</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org47a29be">3. Direct Velocity Feedback</a> <li><a href="#orgabec4e1">3. Direct Velocity Feedback</a>
<ul> <ul>
<li><a href="#orgc82a6a7">3.1. Identification of the Dynamics with perfect Joints</a></li> <li><a href="#orga2d019b">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="#org2875dd1">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="#org0cea759">3.3. Obtained Damping</a></li>
<li><a href="#org61c422b">3.4. Conclusion</a></li> <li><a href="#orga866100">3.4. Conclusion</a></li>
</ul> </ul>
</li> </li>
<li><a href="#orgc84bb75">4. Compliance and Transmissibility Comparison</a> <li><a href="#orgc7e2089">4. Compliance and Transmissibility Comparison</a>
<ul> <ul>
<li><a href="#orgebeb03b">4.1. Initialization</a></li> <li><a href="#org6ec3b9e">4.1. Initialization</a></li>
<li><a href="#orgdde930c">4.2. Identification</a></li> <li><a href="#orge87554a">4.2. Identification</a></li>
<li><a href="#orgcfd0381">4.3. Results</a></li> <li><a href="#org1d70ccd">4.3. Results</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
@ -73,19 +78,19 @@
The following decentralized active damping techniques are briefly studied: The following decentralized active damping techniques are briefly studied:
</p> </p>
<ul class="org-ul"> <ul class="org-ul">
<li>Inertial Control (proportional feedback of the absolute velocity): Section <a href="#orgb2aa4b3">1</a></li> <li>Inertial Control (proportional feedback of the absolute velocity): Section <a href="#org709d56c">1</a></li>
<li>Integral Force Feedback: Section <a href="#org44cadc6">2</a></li> <li>Integral Force Feedback: Section <a href="#org1f0d316">2</a></li>
<li>Direct feedback of the relative velocity of each strut: Section <a href="#orgbdd1eba">3</a></li> <li>Direct feedback of the relative velocity of each strut: Section <a href="#org63027d0">3</a></li>
</ul> </ul>
<div id="outline-container-orgc22d5d6" class="outline-2"> <div id="outline-container-orgddaf52f" class="outline-2">
<h2 id="orgc22d5d6"><span class="section-number-2">1</span> Inertial Control</h2> <h2 id="orgddaf52f"><span class="section-number-2">1</span> Inertial Control</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-1">
<p> <p>
<a id="orgb2aa4b3"></a> <a id="org709d56c"></a>
</p> </p>
<div class="note"> <div class="note" id="org8a14d8c">
<p> <p>
The Matlab script corresponding to this section is accessible <a href="../matlab/active_damping_inertial.m">here</a>. The Matlab script corresponding to this section is accessible <a href="../matlab/active_damping_inertial.m">here</a>.
</p> </p>
@ -97,56 +102,56 @@ To run the script, open the Simulink Project, and type <code>run active_damping_
</div> </div>
</div> </div>
<div id="outline-container-org1671c0b" class="outline-3"> <div id="outline-container-org933440d" class="outline-3">
<h3 id="org1671c0b"><span class="section-number-3">1.1</span> Identification of the Dynamics</h3> <h3 id="org933440d"><span class="section-number-3">1.1</span> Identification of the Dynamics</h3>
<div class="outline-text-3" id="text-1-1"> <div class="outline-text-3" id="text-1-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform(); <pre class="src src-matlab"> stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 45e-3); 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 = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, 'type_F', 'universal_p', 'type_M', 'spherical_p'); 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 = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart); stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, 'type', 'accelerometer', 'freq', 5e3); stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'accelerometer'</span>, <span class="org-string">'freq'</span>, 5e3);
</pre> </pre>
</div> </div>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">ground = initializeGround('type', 'rigid', 'rot_point', stewart.platform_F.FO_A); <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('type', 'none'); payload = initializePayload(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
controller = initializeController('type', 'open-loop'); controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
</pre> </pre>
</div> </div>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">%% Options for Linearized <pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
options = linearizeOptions; options = linearizeOptions;
options.SampleTime = 0; options.SampleTime = 0;
%% Name of the Simulink File <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = 'stewart_platform_model'; mdl = <span class="org-string">'stewart_platform_model'</span>;
%% Input/Output definition <span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
clear io; io_i = 1; 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, <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, '/Stewart Platform'], 1, 'openoutput', [], 'Vm'); io_i = io_i + 1; % Absolute velocity of each leg [m/s] 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 <span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
G = linearize(mdl, io, options); G = linearize(mdl, io, options);
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; 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 = {'Vm1', 'Vm2', 'Vm3', 'Vm4', 'Vm5', 'Vm6'}; 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> </pre>
</div> </div>
<p> <p>
The transfer function from actuator forces to force sensors is shown in Figure <a href="#org116ea42">1</a>. The transfer function from actuator forces to force sensors is shown in Figure <a href="#org5cd47c9">1</a>.
</p> </p>
<div id="org116ea42" class="figure"> <div id="org5cd47c9" class="figure">
<p><img src="figs/inertial_plant_coupling.png" alt="inertial_plant_coupling.png" /> <p><img src="figs/inertial_plant_coupling.png" alt="inertial_plant_coupling.png" />
</p> </p>
<p><span class="figure-number">Figure 1: </span>Transfer function from the Actuator force \(F_{i}\) to the absolute velocity of the same leg \(v_{m,i}\) and to the absolute velocity of the other legs \(v_{m,j}\) with \(i \neq j\) in grey (<a href="./figs/inertial_plant_coupling.png">png</a>, <a href="./figs/inertial_plant_coupling.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 1: </span>Transfer function from the Actuator force \(F_{i}\) to the absolute velocity of the same leg \(v_{m,i}\) and to the absolute velocity of the other legs \(v_{m,j}\) with \(i \neq j\) in grey (<a href="./figs/inertial_plant_coupling.png">png</a>, <a href="./figs/inertial_plant_coupling.pdf">pdf</a>)</p>
@ -154,17 +159,17 @@ The transfer function from actuator forces to force sensors is shown in Figure <
</div> </div>
</div> </div>
<div id="outline-container-orgdae44ba" class="outline-3"> <div id="outline-container-orged6d23c" 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> <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"> <div class="outline-text-3" id="text-1-2">
<p> <p>
We add some stiffness and damping in the flexible joints and we re-identify the dynamics. We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeJointDynamics(stewart, 'type_F', 'universal', 'type_M', 'spherical'); <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 = linearize(mdl, io, options);
Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; 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 = {'Vm1', 'Vm2', 'Vm3', 'Vm4', 'Vm5', 'Vm6'}; 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> </pre>
</div> </div>
@ -172,18 +177,18 @@ Gf.OutputName = {'Vm1', 'Vm2', 'Vm3', 'Vm4', 'Vm5', 'Vm6'};
We now use the amplified actuators and re-identify the dynamics We now use the amplified actuators and re-identify the dynamics
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeAmplifiedStrutDynamics(stewart); <pre class="src src-matlab"> stewart = initializeAmplifiedStrutDynamics(stewart);
Ga = linearize(mdl, io, options); Ga = linearize(mdl, io, options);
Ga.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; 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 = {'Vm1', 'Vm2', 'Vm3', 'Vm4', 'Vm5', 'Vm6'}; 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> </pre>
</div> </div>
<p> <p>
The new dynamics from force actuator to force sensor is shown in Figure <a href="#org620efcd">2</a>. The new dynamics from force actuator to force sensor is shown in Figure <a href="#org8fcc87b">2</a>.
</p> </p>
<div id="org620efcd" class="figure"> <div id="org8fcc87b" class="figure">
<p><img src="figs/inertial_plant_flexible_joint_decentralized.png" alt="inertial_plant_flexible_joint_decentralized.png" /> <p><img src="figs/inertial_plant_flexible_joint_decentralized.png" alt="inertial_plant_flexible_joint_decentralized.png" />
</p> </p>
<p><span class="figure-number">Figure 2: </span>Transfer function from the Actuator force \(F_{i}\) to the absolute velocity sensor \(v_{m,i}\) (<a href="./figs/inertial_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/inertial_plant_flexible_joint_decentralized.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 2: </span>Transfer function from the Actuator force \(F_{i}\) to the absolute velocity sensor \(v_{m,i}\) (<a href="./figs/inertial_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/inertial_plant_flexible_joint_decentralized.pdf">pdf</a>)</p>
@ -191,8 +196,8 @@ The new dynamics from force actuator to force sensor is shown in Figure <a href=
</div> </div>
</div> </div>
<div id="outline-container-org89e2002" class="outline-3"> <div id="outline-container-org533c409" class="outline-3">
<h3 id="org89e2002"><span class="section-number-3">1.3</span> Obtained Damping</h3> <h3 id="org533c409"><span class="section-number-3">1.3</span> Obtained Damping</h3>
<div class="outline-text-3" id="text-1-3"> <div class="outline-text-3" id="text-1-3">
<p> <p>
The control is a performed in a decentralized manner. The control is a performed in a decentralized manner.
@ -206,10 +211,10 @@ The \(6 \times 6\) control is a diagonal matrix with pure proportional action on
</p> </p>
<p> <p>
The root locus is shown in figure <a href="#org9cabaee">3</a>. The root locus is shown in figure <a href="#orgaea8656">3</a>.
</p> </p>
<div id="org9cabaee" class="figure"> <div id="orgaea8656" class="figure">
<p><img src="figs/root_locus_inertial_rot_stiffness.png" alt="root_locus_inertial_rot_stiffness.png" /> <p><img src="figs/root_locus_inertial_rot_stiffness.png" alt="root_locus_inertial_rot_stiffness.png" />
</p> </p>
<p><span class="figure-number">Figure 3: </span>Root Locus plot with Decentralized Inertial Control when considering the stiffness of flexible joints (<a href="./figs/root_locus_inertial_rot_stiffness.png">png</a>, <a href="./figs/root_locus_inertial_rot_stiffness.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 3: </span>Root Locus plot with Decentralized Inertial Control when considering the stiffness of flexible joints (<a href="./figs/root_locus_inertial_rot_stiffness.png">png</a>, <a href="./figs/root_locus_inertial_rot_stiffness.pdf">pdf</a>)</p>
@ -217,10 +222,10 @@ The root locus is shown in figure <a href="#org9cabaee">3</a>.
</div> </div>
</div> </div>
<div id="outline-container-org3904320" class="outline-3"> <div id="outline-container-orgc76021e" class="outline-3">
<h3 id="org3904320"><span class="section-number-3">1.4</span> Conclusion</h3> <h3 id="orgc76021e"><span class="section-number-3">1.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-1-4"> <div class="outline-text-3" id="text-1-4">
<div class="important"> <div class="important" id="org37b8ef0">
<p> <p>
We do not have guaranteed stability with Inertial control. This is because of the flexibility inside the internal sensor. We do not have guaranteed stability with Inertial control. This is because of the flexibility inside the internal sensor.
</p> </p>
@ -230,14 +235,14 @@ We do not have guaranteed stability with Inertial control. This is because of th
</div> </div>
</div> </div>
<div id="outline-container-org89e426a" class="outline-2"> <div id="outline-container-orgf8ed544" class="outline-2">
<h2 id="org89e426a"><span class="section-number-2">2</span> Integral Force Feedback</h2> <h2 id="orgf8ed544"><span class="section-number-2">2</span> Integral Force Feedback</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-2">
<p> <p>
<a id="org44cadc6"></a> <a id="org1f0d316"></a>
</p> </p>
<div class="note"> <div class="note" id="org54cec4b">
<p> <p>
The Matlab script corresponding to this section is accessible <a href="../matlab/active_damping_iff.m">here</a>. The Matlab script corresponding to this section is accessible <a href="../matlab/active_damping_iff.m">here</a>.
</p> </p>
@ -249,31 +254,31 @@ To run the script, open the Simulink Project, and type <code>run active_damping_
</div> </div>
</div> </div>
<div id="outline-container-orgcb85703" class="outline-3"> <div id="outline-container-org7b81fe5" class="outline-3">
<h3 id="orgcb85703"><span class="section-number-3">2.1</span> Identification of the Dynamics with perfect Joints</h3> <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"> <div class="outline-text-3" id="text-2-1">
<p> <p>
We first initialize the Stewart platform without joint stiffness. We first initialize the Stewart platform without joint stiffness.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform(); <pre class="src src-matlab"> stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 45e-3); 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 = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, 'type_F', 'universal_p', 'type_M', 'spherical_p'); 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 = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart); stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, 'type', 'none'); stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
</pre> </pre>
</div> </div>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">ground = initializeGround('type', 'rigid', 'rot_point', stewart.platform_F.FO_A); <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('type', 'none'); payload = initializePayload(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
controller = initializeController('type', 'open-loop'); controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
</pre> </pre>
</div> </div>
@ -281,26 +286,26 @@ controller = initializeController('type', 'open-loop');
And we identify the dynamics from force actuators to force sensors. And we identify the dynamics from force actuators to force sensors.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File <pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = 'stewart_platform_model'; mdl = <span class="org-string">'stewart_platform_model'</span>;
%% Input/Output definition <span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
clear io; io_i = 1; 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, <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, '/Stewart Platform'], 1, 'openoutput', [], 'Taum'); io_i = io_i + 1; % Force Sensor Outputs [N] 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 <span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
G = linearize(mdl, io); G = linearize(mdl, io);
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; 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 = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'}; 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> </pre>
</div> </div>
<p> <p>
The transfer function from actuator forces to force sensors is shown in Figure <a href="#org8f016dc">4</a>. The transfer function from actuator forces to force sensors is shown in Figure <a href="#org3b3de64">4</a>.
</p> </p>
<div id="org8f016dc" class="figure"> <div id="org3b3de64" class="figure">
<p><img src="figs/iff_plant_coupling.png" alt="iff_plant_coupling.png" /> <p><img src="figs/iff_plant_coupling.png" alt="iff_plant_coupling.png" />
</p> </p>
<p><span class="figure-number">Figure 4: </span>Transfer function from the Actuator force \(F_{i}\) to the Force sensor of the same leg \(F_{m,i}\) and to the force sensor of the other legs \(F_{m,j}\) with \(i \neq j\) in grey (<a href="./figs/iff_plant_coupling.png">png</a>, <a href="./figs/iff_plant_coupling.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 4: </span>Transfer function from the Actuator force \(F_{i}\) to the Force sensor of the same leg \(F_{m,i}\) and to the force sensor of the other legs \(F_{m,j}\) with \(i \neq j\) in grey (<a href="./figs/iff_plant_coupling.png">png</a>, <a href="./figs/iff_plant_coupling.pdf">pdf</a>)</p>
@ -308,17 +313,17 @@ The transfer function from actuator forces to force sensors is shown in Figure <
</div> </div>
</div> </div>
<div id="outline-container-org4ca24f7" class="outline-3"> <div id="outline-container-org3dca396" 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> <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"> <div class="outline-text-3" id="text-2-2">
<p> <p>
We add some stiffness and damping in the flexible joints and we re-identify the dynamics. We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeJointDynamics(stewart, 'type_F', 'universal', 'type_M', 'spherical'); <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 = linearize(mdl, io);
Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; 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 = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'}; 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> </pre>
</div> </div>
@ -326,18 +331,18 @@ Gf.OutputName = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'};
We now use the amplified actuators and re-identify the dynamics We now use the amplified actuators and re-identify the dynamics
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeAmplifiedStrutDynamics(stewart); <pre class="src src-matlab"> stewart = initializeAmplifiedStrutDynamics(stewart);
Ga = linearize(mdl, io); Ga = linearize(mdl, io);
Ga.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; 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 = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'}; 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> </pre>
</div> </div>
<p> <p>
The new dynamics from force actuator to force sensor is shown in Figure <a href="#org4a92e1b">5</a>. The new dynamics from force actuator to force sensor is shown in Figure <a href="#org1902b8f">5</a>.
</p> </p>
<div id="org4a92e1b" class="figure"> <div id="org1902b8f" class="figure">
<p><img src="figs/iff_plant_flexible_joint_decentralized.png" alt="iff_plant_flexible_joint_decentralized.png" /> <p><img src="figs/iff_plant_flexible_joint_decentralized.png" alt="iff_plant_flexible_joint_decentralized.png" />
</p> </p>
<p><span class="figure-number">Figure 5: </span>Transfer function from the Actuator force \(F_{i}\) to the force sensor \(F_{m,i}\) (<a href="./figs/iff_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/iff_plant_flexible_joint_decentralized.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 5: </span>Transfer function from the Actuator force \(F_{i}\) to the force sensor \(F_{m,i}\) (<a href="./figs/iff_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/iff_plant_flexible_joint_decentralized.pdf">pdf</a>)</p>
@ -345,8 +350,8 @@ The new dynamics from force actuator to force sensor is shown in Figure <a href=
</div> </div>
</div> </div>
<div id="outline-container-org11e5ee2" class="outline-3"> <div id="outline-container-org7044ed4" class="outline-3">
<h3 id="org11e5ee2"><span class="section-number-3">2.3</span> Obtained Damping</h3> <h3 id="org7044ed4"><span class="section-number-3">2.3</span> Obtained Damping</h3>
<div class="outline-text-3" id="text-2-3"> <div class="outline-text-3" id="text-2-3">
<p> <p>
The control is a performed in a decentralized manner. The control is a performed in a decentralized manner.
@ -360,17 +365,17 @@ The \(6 \times 6\) control is a diagonal matrix with pure integration action on
</p> </p>
<p> <p>
The root locus is shown in figure <a href="#orgc8981ba">6</a> and the obtained pole damping function of the control gain is shown in figure <a href="#orgd7fefc7">7</a>. The root locus is shown in figure <a href="#orgce5d8d8">6</a> and the obtained pole damping function of the control gain is shown in figure <a href="#org67419cd">7</a>.
</p> </p>
<div id="orgc8981ba" class="figure"> <div id="orgce5d8d8" class="figure">
<p><img src="figs/root_locus_iff_rot_stiffness.png" alt="root_locus_iff_rot_stiffness.png" /> <p><img src="figs/root_locus_iff_rot_stiffness.png" alt="root_locus_iff_rot_stiffness.png" />
</p> </p>
<p><span class="figure-number">Figure 6: </span>Root Locus plot with Decentralized Integral Force Feedback when considering the stiffness of flexible joints (<a href="./figs/root_locus_iff_rot_stiffness.png">png</a>, <a href="./figs/root_locus_iff_rot_stiffness.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 6: </span>Root Locus plot with Decentralized Integral Force Feedback when considering the stiffness of flexible joints (<a href="./figs/root_locus_iff_rot_stiffness.png">png</a>, <a href="./figs/root_locus_iff_rot_stiffness.pdf">pdf</a>)</p>
</div> </div>
<div id="orgd7fefc7" class="figure"> <div id="org67419cd" class="figure">
<p><img src="figs/pole_damping_gain_iff_rot_stiffness.png" alt="pole_damping_gain_iff_rot_stiffness.png" /> <p><img src="figs/pole_damping_gain_iff_rot_stiffness.png" alt="pole_damping_gain_iff_rot_stiffness.png" />
</p> </p>
<p><span class="figure-number">Figure 7: </span>Damping of the poles with respect to the gain of the Decentralized Integral Force Feedback when considering the stiffness of flexible joints (<a href="./figs/pole_damping_gain_iff_rot_stiffness.png">png</a>, <a href="./figs/pole_damping_gain_iff_rot_stiffness.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 7: </span>Damping of the poles with respect to the gain of the Decentralized Integral Force Feedback when considering the stiffness of flexible joints (<a href="./figs/pole_damping_gain_iff_rot_stiffness.png">png</a>, <a href="./figs/pole_damping_gain_iff_rot_stiffness.pdf">pdf</a>)</p>
@ -378,10 +383,10 @@ The root locus is shown in figure <a href="#orgc8981ba">6</a> and the obtained p
</div> </div>
</div> </div>
<div id="outline-container-orgca67baa" class="outline-3"> <div id="outline-container-org9c769b9" class="outline-3">
<h3 id="orgca67baa"><span class="section-number-3">2.4</span> Conclusion</h3> <h3 id="org9c769b9"><span class="section-number-3">2.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-2-4"> <div class="outline-text-3" id="text-2-4">
<div class="important"> <div class="important" id="orged36719">
<p> <p>
The joint stiffness has a huge impact on the attainable active damping performance when using force sensors. The joint stiffness has a huge impact on the attainable active damping performance when using force sensors.
Thus, if Integral Force Feedback is to be used in a Stewart platform with flexible joints, the rotational stiffness of the joints should be minimized. Thus, if Integral Force Feedback is to be used in a Stewart platform with flexible joints, the rotational stiffness of the joints should be minimized.
@ -392,14 +397,14 @@ Thus, if Integral Force Feedback is to be used in a Stewart platform with flexib
</div> </div>
</div> </div>
<div id="outline-container-org47a29be" class="outline-2"> <div id="outline-container-orgabec4e1" class="outline-2">
<h2 id="org47a29be"><span class="section-number-2">3</span> Direct Velocity Feedback</h2> <h2 id="orgabec4e1"><span class="section-number-2">3</span> Direct Velocity Feedback</h2>
<div class="outline-text-2" id="text-3"> <div class="outline-text-2" id="text-3">
<p> <p>
<a id="orgbdd1eba"></a> <a id="org63027d0"></a>
</p> </p>
<div class="note"> <div class="note" id="orgfb739d8">
<p> <p>
The Matlab script corresponding to this section is accessible <a href="../matlab/active_damping_dvf.m">here</a>. The Matlab script corresponding to this section is accessible <a href="../matlab/active_damping_dvf.m">here</a>.
</p> </p>
@ -411,31 +416,31 @@ To run the script, open the Simulink Project, and type <code>run active_damping_
</div> </div>
</div> </div>
<div id="outline-container-orgc82a6a7" class="outline-3"> <div id="outline-container-orga2d019b" class="outline-3">
<h3 id="orgc82a6a7"><span class="section-number-3">3.1</span> Identification of the Dynamics with perfect Joints</h3> <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"> <div class="outline-text-3" id="text-3-1">
<p> <p>
We first initialize the Stewart platform without joint stiffness. We first initialize the Stewart platform without joint stiffness.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform(); <pre class="src src-matlab"> stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 45e-3); 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 = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, 'type_F', 'universal_p', 'type_M', 'spherical_p'); 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 = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart); stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, 'type', 'none'); stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
</pre> </pre>
</div> </div>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">ground = initializeGround('type', 'rigid', 'rot_point', stewart.platform_F.FO_A); <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('type', 'none'); payload = initializePayload(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
controller = initializeController('type', 'open-loop'); controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
</pre> </pre>
</div> </div>
@ -443,30 +448,30 @@ controller = initializeController('type', 'open-loop');
And we identify the dynamics from force actuators to force sensors. And we identify the dynamics from force actuators to force sensors.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">%% Options for Linearized <pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
options = linearizeOptions; options = linearizeOptions;
options.SampleTime = 0; options.SampleTime = 0;
%% Name of the Simulink File <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = 'stewart_platform_model'; mdl = <span class="org-string">'stewart_platform_model'</span>;
%% Input/Output definition <span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
clear io; io_i = 1; 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, <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, '/Stewart Platform'], 1, 'openoutput', [], 'dLm'); io_i = io_i + 1; % Relative Displacement Outputs [m] 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 <span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
G = linearize(mdl, io, options); G = linearize(mdl, io, options);
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; 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 = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6'}; 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> </pre>
</div> </div>
<p> <p>
The transfer function from actuator forces to relative motion sensors is shown in Figure <a href="#org6de423c">8</a>. The transfer function from actuator forces to relative motion sensors is shown in Figure <a href="#org34c24ba">8</a>.
</p> </p>
<div id="org6de423c" class="figure"> <div id="org34c24ba" class="figure">
<p><img src="figs/dvf_plant_coupling.png" alt="dvf_plant_coupling.png" /> <p><img src="figs/dvf_plant_coupling.png" alt="dvf_plant_coupling.png" />
</p> </p>
<p><span class="figure-number">Figure 8: </span>Transfer function from the Actuator force \(F_{i}\) to the Relative Motion Sensor \(D_{m,j}\) with \(i \neq j\) (<a href="./figs/dvf_plant_coupling.png">png</a>, <a href="./figs/dvf_plant_coupling.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 8: </span>Transfer function from the Actuator force \(F_{i}\) to the Relative Motion Sensor \(D_{m,j}\) with \(i \neq j\) (<a href="./figs/dvf_plant_coupling.png">png</a>, <a href="./figs/dvf_plant_coupling.pdf">pdf</a>)</p>
@ -475,17 +480,17 @@ The transfer function from actuator forces to relative motion sensors is shown i
</div> </div>
<div id="outline-container-org92d6cb1" class="outline-3"> <div id="outline-container-org2875dd1" 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> <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"> <div class="outline-text-3" id="text-3-2">
<p> <p>
We add some stiffness and damping in the flexible joints and we re-identify the dynamics. We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeJointDynamics(stewart, 'type_F', 'universal', 'type_M', 'spherical'); <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 = linearize(mdl, io, options);
Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; 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 = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6'}; 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> </pre>
</div> </div>
@ -493,18 +498,18 @@ Gf.OutputName = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6'};
We now use the amplified actuators and re-identify the dynamics We now use the amplified actuators and re-identify the dynamics
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeAmplifiedStrutDynamics(stewart); <pre class="src src-matlab"> stewart = initializeAmplifiedStrutDynamics(stewart);
Ga = linearize(mdl, io, options); Ga = linearize(mdl, io, options);
Ga.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; 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 = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6'}; 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> </pre>
</div> </div>
<p> <p>
The new dynamics from force actuator to relative motion sensor is shown in Figure <a href="#org5f559a9">9</a>. The new dynamics from force actuator to relative motion sensor is shown in Figure <a href="#orgba524e3">9</a>.
</p> </p>
<div id="org5f559a9" class="figure"> <div id="orgba524e3" class="figure">
<p><img src="figs/dvf_plant_flexible_joint_decentralized.png" alt="dvf_plant_flexible_joint_decentralized.png" /> <p><img src="figs/dvf_plant_flexible_joint_decentralized.png" alt="dvf_plant_flexible_joint_decentralized.png" />
</p> </p>
<p><span class="figure-number">Figure 9: </span>Transfer function from the Actuator force \(F_{i}\) to the relative displacement sensor \(D_{m,i}\) (<a href="./figs/dvf_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/dvf_plant_flexible_joint_decentralized.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 9: </span>Transfer function from the Actuator force \(F_{i}\) to the relative displacement sensor \(D_{m,i}\) (<a href="./figs/dvf_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/dvf_plant_flexible_joint_decentralized.pdf">pdf</a>)</p>
@ -512,8 +517,8 @@ The new dynamics from force actuator to relative motion sensor is shown in Figur
</div> </div>
</div> </div>
<div id="outline-container-org7497409" class="outline-3"> <div id="outline-container-org0cea759" class="outline-3">
<h3 id="org7497409"><span class="section-number-3">3.3</span> Obtained Damping</h3> <h3 id="org0cea759"><span class="section-number-3">3.3</span> Obtained Damping</h3>
<div class="outline-text-3" id="text-3-3"> <div class="outline-text-3" id="text-3-3">
<p> <p>
The control is a performed in a decentralized manner. The control is a performed in a decentralized manner.
@ -527,10 +532,10 @@ The \(6 \times 6\) control is a diagonal matrix with pure derivative action on t
</p> </p>
<p> <p>
The root locus is shown in figure <a href="#org5e168d0">10</a>. The root locus is shown in figure <a href="#org0436b4d">10</a>.
</p> </p>
<div id="org5e168d0" class="figure"> <div id="org0436b4d" class="figure">
<p><img src="figs/root_locus_dvf_rot_stiffness.png" alt="root_locus_dvf_rot_stiffness.png" /> <p><img src="figs/root_locus_dvf_rot_stiffness.png" alt="root_locus_dvf_rot_stiffness.png" />
</p> </p>
<p><span class="figure-number">Figure 10: </span>Root Locus plot with Direct Velocity Feedback when considering the Stiffness of flexible joints (<a href="./figs/root_locus_dvf_rot_stiffness.png">png</a>, <a href="./figs/root_locus_dvf_rot_stiffness.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 10: </span>Root Locus plot with Direct Velocity Feedback when considering the Stiffness of flexible joints (<a href="./figs/root_locus_dvf_rot_stiffness.png">png</a>, <a href="./figs/root_locus_dvf_rot_stiffness.pdf">pdf</a>)</p>
@ -538,10 +543,10 @@ The root locus is shown in figure <a href="#org5e168d0">10</a>.
</div> </div>
</div> </div>
<div id="outline-container-org61c422b" class="outline-3"> <div id="outline-container-orga866100" class="outline-3">
<h3 id="org61c422b"><span class="section-number-3">3.4</span> Conclusion</h3> <h3 id="orga866100"><span class="section-number-3">3.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-3-4"> <div class="outline-text-3" id="text-3-4">
<div class="important"> <div class="important" id="org2640d3c">
<p> <p>
Joint stiffness does increase the resonance frequencies of the system but does not change the attainable damping when using relative motion sensors. Joint stiffness does increase the resonance frequencies of the system but does not change the attainable damping when using relative motion sensors.
</p> </p>
@ -551,28 +556,28 @@ Joint stiffness does increase the resonance frequencies of the system but does n
</div> </div>
</div> </div>
<div id="outline-container-orgc84bb75" class="outline-2"> <div id="outline-container-orgc7e2089" class="outline-2">
<h2 id="orgc84bb75"><span class="section-number-2">4</span> Compliance and Transmissibility Comparison</h2> <h2 id="orgc7e2089"><span class="section-number-2">4</span> Compliance and Transmissibility Comparison</h2>
<div class="outline-text-2" id="text-4"> <div class="outline-text-2" id="text-4">
</div> </div>
<div id="outline-container-orgebeb03b" class="outline-3"> <div id="outline-container-org6ec3b9e" class="outline-3">
<h3 id="orgebeb03b"><span class="section-number-3">4.1</span> Initialization</h3> <h3 id="org6ec3b9e"><span class="section-number-3">4.1</span> Initialization</h3>
<div class="outline-text-3" id="text-4-1"> <div class="outline-text-3" id="text-4-1">
<p> <p>
We first initialize the Stewart platform without joint stiffness. We first initialize the Stewart platform without joint stiffness.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform(); <pre class="src src-matlab"> stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 45e-3); 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 = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, 'type_F', 'universal_p', 'type_M', 'spherical_p'); 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 = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart); stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, 'type', 'none'); stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
</pre> </pre>
</div> </div>
@ -580,24 +585,24 @@ stewart = initializeInertialSensor(stewart, 'type', 'none');
The rotation point of the ground is located at the origin of frame \(\{A\}\). The rotation point of the ground is located at the origin of frame \(\{A\}\).
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">ground = initializeGround('type', 'rigid', 'rot_point', stewart.platform_F.FO_A); <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('type', 'none'); payload = initializePayload(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
controller = initializeController('type', 'open-loop'); controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgdde930c" class="outline-3"> <div id="outline-container-orge87554a" class="outline-3">
<h3 id="orgdde930c"><span class="section-number-3">4.2</span> Identification</h3> <h3 id="orge87554a"><span class="section-number-3">4.2</span> Identification</h3>
<div class="outline-text-3" id="text-4-2"> <div class="outline-text-3" id="text-4-2">
<p> <p>
Let&rsquo;s first identify the transmissibility and compliance in the open-loop case. Let&rsquo;s first identify the transmissibility and compliance in the open-loop case.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">controller = initializeController('type', 'open-loop'); <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(); [T_ol, T_norm_ol, freqs] = computeTransmissibility();
[C_ol, C_norm_ol, freqs] = computeCompliance(); [C_ol, C_norm_ol, freqs] = computeCompliance();
</pre> </pre>
</div> </div>
@ -605,11 +610,11 @@ Let&rsquo;s first identify the transmissibility and compliance in the open-loop
Now, let&rsquo;s identify the transmissibility and compliance for the Integral Force Feedback architecture. Now, let&rsquo;s identify the transmissibility and compliance for the Integral Force Feedback architecture.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">controller = initializeController('type', 'iff'); <pre class="src src-matlab"> controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'iff'</span>);
K_iff = (1e4/s)*eye(6); K_iff = (1e4<span class="org-type">/</span>s)<span class="org-type">*</span>eye(6);
[T_iff, T_norm_iff, ~] = computeTransmissibility(); [T_iff, T_norm_iff, <span class="org-type">~</span>] = computeTransmissibility();
[C_iff, C_norm_iff, ~] = computeCompliance(); [C_iff, C_norm_iff, <span class="org-type">~</span>] = computeCompliance();
</pre> </pre>
</div> </div>
@ -617,35 +622,35 @@ K_iff = (1e4/s)*eye(6);
And for the Direct Velocity Feedback. And for the Direct Velocity Feedback.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">controller = initializeController('type', 'dvf'); <pre class="src src-matlab"> controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'dvf'</span>);
K_dvf = 1e4*s/(1+s/2/pi/5000)*eye(6); 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(); [T_dvf, T_norm_dvf, <span class="org-type">~</span>] = computeTransmissibility();
[C_dvf, C_norm_dvf, ~] = computeCompliance(); [C_dvf, C_norm_dvf, <span class="org-type">~</span>] = computeCompliance();
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgcfd0381" class="outline-3"> <div id="outline-container-org1d70ccd" class="outline-3">
<h3 id="orgcfd0381"><span class="section-number-3">4.3</span> Results</h3> <h3 id="org1d70ccd"><span class="section-number-3">4.3</span> Results</h3>
<div class="outline-text-3" id="text-4-3"> <div class="outline-text-3" id="text-4-3">
<div id="orgc1f4c92" class="figure"> <div id="org908e692" class="figure">
<p><img src="figs/transmissibility_iff_dvf.png" alt="transmissibility_iff_dvf.png" /> <p><img src="figs/transmissibility_iff_dvf.png" alt="transmissibility_iff_dvf.png" />
</p> </p>
<p><span class="figure-number">Figure 11: </span>Obtained transmissibility for Open-Loop Control (Blue), Integral Force Feedback (Red) and Direct Velocity Feedback (Yellow) (<a href="./figs/transmissibility_iff_dvf.png">png</a>, <a href="./figs/transmissibility_iff_dvf.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 11: </span>Obtained transmissibility for Open-Loop Control (Blue), Integral Force Feedback (Red) and Direct Velocity Feedback (Yellow) (<a href="./figs/transmissibility_iff_dvf.png">png</a>, <a href="./figs/transmissibility_iff_dvf.pdf">pdf</a>)</p>
</div> </div>
<div id="org2d1b516" class="figure"> <div id="orgc10c609" class="figure">
<p><img src="figs/compliance_iff_dvf.png" alt="compliance_iff_dvf.png" /> <p><img src="figs/compliance_iff_dvf.png" alt="compliance_iff_dvf.png" />
</p> </p>
<p><span class="figure-number">Figure 12: </span>Obtained compliance for Open-Loop Control (Blue), Integral Force Feedback (Red) and Direct Velocity Feedback (Yellow) (<a href="./figs/compliance_iff_dvf.png">png</a>, <a href="./figs/compliance_iff_dvf.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 12: </span>Obtained compliance for Open-Loop Control (Blue), Integral Force Feedback (Red) and Direct Velocity Feedback (Yellow) (<a href="./figs/compliance_iff_dvf.png">png</a>, <a href="./figs/compliance_iff_dvf.pdf">pdf</a>)</p>
</div> </div>
<div id="orgf9b6a2b" class="figure"> <div id="orgd54f179" class="figure">
<p><img src="figs/frobenius_norm_T_C_iff_dvf.png" alt="frobenius_norm_T_C_iff_dvf.png" /> <p><img src="figs/frobenius_norm_T_C_iff_dvf.png" alt="frobenius_norm_T_C_iff_dvf.png" />
</p> </p>
<p><span class="figure-number">Figure 13: </span>Frobenius norm of the Transmissibility and Compliance Matrices (<a href="./figs/frobenius_norm_T_C_iff_dvf.png">png</a>, <a href="./figs/frobenius_norm_T_C_iff_dvf.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 13: </span>Frobenius norm of the Transmissibility and Compliance Matrices (<a href="./figs/frobenius_norm_T_C_iff_dvf.png">png</a>, <a href="./figs/frobenius_norm_T_C_iff_dvf.pdf">pdf</a>)</p>
@ -656,7 +661,7 @@ K_dvf = 1e4*s/(1+s/2/pi/5000)*eye(6);
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-08-05 mer. 13:27</p> <p class="date">Created: 2021-01-08 ven. 15:30</p>
</div> </div>
</body> </body>
</html> </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

View File

@ -3,25 +3,30 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-08-05 mer. 13:27 --> <!-- 2021-01-08 ven. 15:30 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Stewart Platform - Dynamics Study</title> <title>Stewart Platform - Dynamics Study</title>
<meta name="generator" content="Org mode" /> <meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" /> <meta name="author" content="Dehaeze Thomas" />
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
<script src="./js/jquery.min.js"></script> <script>
<script src="./js/bootstrap.min.js"></script> MathJax = {
<script src="./js/jquery.stickytableheaders.min.js"></script> svg: {
<script src="./js/readtheorg.js"></script> scale: 1,
<script>MathJax = { fontCache: "global"
tex: { },
tags: 'ams', tex: {
macros: {bm: ["\\boldsymbol{#1}",1],} tags: "ams",
} multlineWidth: "%MULTLINEWIDTH",
}; tagSide: "right",
</script> macros: {bm: ["\\boldsymbol{#1}",1],},
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> tagIndent: ".8em"
}
};
</script>
<script id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
</head> </head>
<body> <body>
<div id="org-div-home-and-up"> <div id="org-div-home-and-up">
@ -34,49 +39,49 @@
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#orgc59e712">1. Compare external forces and forces applied by the actuators</a> <li><a href="#org7743c04">1. Compare external forces and forces applied by the actuators</a>
<ul> <ul>
<li><a href="#org4509b7d">1.1. Comparison with fixed support</a></li> <li><a href="#orgc730bef">1.1. Comparison with fixed support</a></li>
<li><a href="#org8662186">1.2. Comparison with a flexible support</a></li> <li><a href="#orgefde538">1.2. Comparison with a flexible support</a></li>
<li><a href="#org55e0dad">1.3. Conclusion</a></li> <li><a href="#org53765b8">1.3. Conclusion</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org81ab204">2. Comparison of the static transfer function and the Compliance matrix</a> <li><a href="#orgb6a1ef7">2. Comparison of the static transfer function and the Compliance matrix</a>
<ul> <ul>
<li><a href="#orge7e7242">2.1. Analysis</a></li> <li><a href="#org3f1c253">2.1. Analysis</a></li>
<li><a href="#org9ee3939">2.2. Conclusion</a></li> <li><a href="#orga9eb2fd">2.2. Conclusion</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="outline-container-orgc59e712" class="outline-2"> <div id="outline-container-org7743c04" class="outline-2">
<h2 id="orgc59e712"><span class="section-number-2">1</span> Compare external forces and forces applied by the actuators</h2> <h2 id="org7743c04"><span class="section-number-2">1</span> Compare external forces and forces applied by the actuators</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-1">
<p> <p>
In this section, we wish to compare the effect of forces/torques applied by the actuators with the effect of external forces/torques on the displacement of the mobile platform. In this section, we wish to compare the effect of forces/torques applied by the actuators with the effect of external forces/torques on the displacement of the mobile platform.
</p> </p>
</div> </div>
<div id="outline-container-org4509b7d" class="outline-3"> <div id="outline-container-orgc730bef" class="outline-3">
<h3 id="org4509b7d"><span class="section-number-3">1.1</span> Comparison with fixed support</h3> <h3 id="orgc730bef"><span class="section-number-3">1.1</span> Comparison with fixed support</h3>
<div class="outline-text-3" id="text-1-1"> <div class="outline-text-3" id="text-1-1">
<p> <p>
Let&rsquo;s generate a Stewart platform. Let&rsquo;s generate a Stewart platform.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform(); <pre class="src src-matlab"> stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 45e-3); 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 = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, 'type_F', 'universal_p', 'type_M', 'spherical_p'); 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 = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart); stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, 'type', 'none'); stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
</pre> </pre>
</div> </div>
@ -85,9 +90,9 @@ We don&rsquo;t put any flexibility below the Stewart platform such that <b>its b
We also don&rsquo;t put any payload on top of the Stewart platform. We also don&rsquo;t put any payload on top of the Stewart platform.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">ground = initializeGround('type', 'none'); <pre class="src src-matlab"> ground = initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
payload = initializePayload('type', 'none'); payload = initializePayload(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
controller = initializeController('type', 'open-loop'); controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
</pre> </pre>
</div> </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. The transfer function from actuator forces \(\bm{\tau}\) to the relative displacement of the mobile platform \(\mathcal{\bm{X}}\) is extracted.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">%% Options for Linearized <pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
options = linearizeOptions; options = linearizeOptions;
options.SampleTime = 0; options.SampleTime = 0;
%% Name of the Simulink File <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = 'stewart_platform_model'; mdl = <span class="org-string">'stewart_platform_model'</span>;
%% Input/Output definition <span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
clear io; io_i = 1; 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, <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, '/Relative Motion Sensor'], 1, 'openoutput'); io_i = io_i + 1; % Position/Orientation of {B} w.r.t. {A} 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 <span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
G = linearize(mdl, io, options); G = linearize(mdl, io, options);
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; 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 = {'Edx', 'Edy', 'Edz', 'Erx', 'Ery', 'Erz'}; 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> </pre>
</div> </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: 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> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">Gc = minreal(G*inv(stewart.kinematics.J')); <pre class="src src-matlab"> Gc = minreal(G<span class="org-type">*</span>inv(stewart.kinematics.J<span class="org-type">'</span>));
Gc.InputName = {'Fnx', 'Fny', 'Fnz', 'Mnx', 'Mny', 'Mnz'}; 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> </pre>
</div> </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\}\): 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> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">%% Input/Output definition <pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
clear io; io_i = 1; 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, <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, '/Relative Motion Sensor'], 1, 'openoutput'); io_i = io_i + 1; % Position/Orientation of {B} w.r.t. {A} 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 <span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
Gd = linearize(mdl, io, options); Gd = linearize(mdl, io, options);
Gd.InputName = {'Fex', 'Fey', 'Fez', 'Mex', 'Mey', 'Mez'}; 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 = {'Edx', 'Edy', 'Edz', 'Erx', 'Ery', 'Erz'}; 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> </pre>
</div> </div>
<p> <p>
The comparison of the two transfer functions is shown in Figure <a href="#orgbf9a54a">1</a>. The comparison of the two transfer functions is shown in Figure <a href="#org2de43b3">1</a>.
</p> </p>
<div id="orgbf9a54a" class="figure"> <div id="org2de43b3" class="figure">
<p><img src="figs/comparison_Fext_F_fixed_base.png" alt="comparison_Fext_F_fixed_base.png" /> <p><img src="figs/comparison_Fext_F_fixed_base.png" alt="comparison_Fext_F_fixed_base.png" />
</p> </p>
<p><span class="figure-number">Figure 1: </span>Comparison of the transfer functions from \(\bm{\mathcal{F}}\) to \(\mathcal{\bm{X}}\) and from \(\bm{\mathcal{F}}_{\text{ext}}\) to \(\mathcal{\bm{X}}\) (<a href="./figs/comparison_Fext_F_fixed_base.png">png</a>, <a href="./figs/comparison_Fext_F_fixed_base.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 1: </span>Comparison of the transfer functions from \(\bm{\mathcal{F}}\) to \(\mathcal{\bm{X}}\) and from \(\bm{\mathcal{F}}_{\text{ext}}\) to \(\mathcal{\bm{X}}\) (<a href="./figs/comparison_Fext_F_fixed_base.png">png</a>, <a href="./figs/comparison_Fext_F_fixed_base.pdf">pdf</a>)</p>
</div> </div>
<p> <p>
This can be understood from figure <a href="#org8bd3e63">2</a> where \(\mathcal{F}_{x}\) and \(\mathcal{F}_{x,\text{ext}}\) have clearly the same effect on \(\mathcal{X}_{x}\). This can be understood from figure <a href="#orgd6db375">2</a> where \(\mathcal{F}_{x}\) and \(\mathcal{F}_{x,\text{ext}}\) have clearly the same effect on \(\mathcal{X}_{x}\).
</p> </p>
<div id="org8bd3e63" class="figure"> <div id="orgd6db375" class="figure">
<p><img src="figs/1dof_actuator_external_forces.png" alt="1dof_actuator_external_forces.png" /> <p><img src="figs/1dof_actuator_external_forces.png" alt="1dof_actuator_external_forces.png" />
</p> </p>
<p><span class="figure-number">Figure 2: </span>Schematic representation of the stewart platform on a rigid support</p> <p><span class="figure-number">Figure 2: </span>Schematic representation of the stewart platform on a rigid support</p>
@ -163,14 +168,14 @@ This can be understood from figure <a href="#org8bd3e63">2</a> where \(\mathcal{
</div> </div>
</div> </div>
<div id="outline-container-org8662186" class="outline-3"> <div id="outline-container-orgefde538" class="outline-3">
<h3 id="org8662186"><span class="section-number-3">1.2</span> Comparison with a flexible support</h3> <h3 id="orgefde538"><span class="section-number-3">1.2</span> Comparison with a flexible support</h3>
<div class="outline-text-3" id="text-1-2"> <div class="outline-text-3" id="text-1-2">
<p> <p>
We now add a flexible support under the Stewart platform. We now add a flexible support under the Stewart platform.
</p> </p>
<div class="org-src-container"> <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> </pre>
</div> </div>
@ -178,50 +183,50 @@ We now add a flexible support under the Stewart platform.
And we perform again the identification. And we perform again the identification.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">%% Input/Output definition <pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
clear io; io_i = 1; 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, <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, '/Relative Motion Sensor'], 1, 'openoutput'); io_i = io_i + 1; % Position/Orientation of {B} w.r.t. {A} 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 <span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
G = linearize(mdl, io, options); G = linearize(mdl, io, options);
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; 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 = {'Edx', 'Edy', 'Edz', 'Erx', 'Ery', 'Erz'}; 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 = minreal(G<span class="org-type">*</span>inv(stewart.kinematics.J<span class="org-type">'</span>));
Gc.InputName = {'Fnx', 'Fny', 'Fnz', 'Mnx', 'Mny', 'Mnz'}; 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 <span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
clear io; io_i = 1; 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, <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, '/Relative Motion Sensor'], 1, 'openoutput'); io_i = io_i + 1; % Position/Orientation of {B} w.r.t. {A} 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 <span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
Gd = linearize(mdl, io, options); Gd = linearize(mdl, io, options);
Gd.InputName = {'Fex', 'Fey', 'Fez', 'Mex', 'Mey', 'Mez'}; 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 = {'Edx', 'Edy', 'Edz', 'Erx', 'Ery', 'Erz'}; 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> </pre>
</div> </div>
<p> <p>
The comparison between the obtained transfer functions is shown in Figure <a href="#orga2f2bd5">3</a>. The comparison between the obtained transfer functions is shown in Figure <a href="#org593368e">3</a>.
</p> </p>
<div id="orga2f2bd5" class="figure"> <div id="org593368e" class="figure">
<p><img src="figs/comparison_Fext_F_flexible_base.png" alt="comparison_Fext_F_flexible_base.png" /> <p><img src="figs/comparison_Fext_F_flexible_base.png" alt="comparison_Fext_F_flexible_base.png" />
</p> </p>
<p><span class="figure-number">Figure 3: </span>Comparison of the transfer functions from \(\bm{\mathcal{F}}\) to \(\mathcal{\bm{X}}\) and from \(\bm{\mathcal{F}}_{\text{ext}}\) to \(\mathcal{\bm{X}}\) (<a href="./figs/comparison_Fext_F_flexible_base.png">png</a>, <a href="./figs/comparison_Fext_F_flexible_base.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 3: </span>Comparison of the transfer functions from \(\bm{\mathcal{F}}\) to \(\mathcal{\bm{X}}\) and from \(\bm{\mathcal{F}}_{\text{ext}}\) to \(\mathcal{\bm{X}}\) (<a href="./figs/comparison_Fext_F_flexible_base.png">png</a>, <a href="./figs/comparison_Fext_F_flexible_base.pdf">pdf</a>)</p>
</div> </div>
<p> <p>
The addition of a flexible support can be schematically represented in Figure <a href="#orgee3ecbe">4</a>. The addition of a flexible support can be schematically represented in Figure <a href="#orga537ded">4</a>.
We see that \(\mathcal{F}_{x}\) applies a force both on \(m\) and \(m^{\prime}\) whereas \(\mathcal{F}_{x,\text{ext}}\) only applies a force on \(m\). We see that \(\mathcal{F}_{x}\) applies a force both on \(m\) and \(m^{\prime}\) whereas \(\mathcal{F}_{x,\text{ext}}\) only applies a force on \(m\).
And thus \(\mathcal{F}_{x}\) and \(\mathcal{F}_{x,\text{ext}}\) have clearly <b>not</b> the same effect on \(\mathcal{X}_{x}\). And thus \(\mathcal{F}_{x}\) and \(\mathcal{F}_{x,\text{ext}}\) have clearly <b>not</b> the same effect on \(\mathcal{X}_{x}\).
</p> </p>
<div id="orgee3ecbe" class="figure"> <div id="orga537ded" class="figure">
<p><img src="figs/2dof_actuator_external_forces.png" alt="2dof_actuator_external_forces.png" /> <p><img src="figs/2dof_actuator_external_forces.png" alt="2dof_actuator_external_forces.png" />
</p> </p>
<p><span class="figure-number">Figure 4: </span>Schematic representation of the stewart platform on top of a flexible support</p> <p><span class="figure-number">Figure 4: </span>Schematic representation of the stewart platform on top of a flexible support</p>
@ -230,10 +235,10 @@ And thus \(\mathcal{F}_{x}\) and \(\mathcal{F}_{x,\text{ext}}\) have clearly <b>
</div> </div>
<div id="outline-container-org55e0dad" class="outline-3"> <div id="outline-container-org53765b8" class="outline-3">
<h3 id="org55e0dad"><span class="section-number-3">1.3</span> Conclusion</h3> <h3 id="org53765b8"><span class="section-number-3">1.3</span> Conclusion</h3>
<div class="outline-text-3" id="text-1-3"> <div class="outline-text-3" id="text-1-3">
<div class="important"> <div class="important" id="org35e4b5f">
<p> <p>
The transfer function from forces/torques applied by the actuators on the payload \(\bm{\mathcal{F}} = \bm{J}^T \bm{\tau}\) to the pose of the mobile platform \(\bm{\mathcal{X}}\) is the same as the transfer function from external forces/torques to \(\bm{\mathcal{X}}\) as long as the Stewart platform&rsquo;s base is fixed. The transfer function from forces/torques applied by the actuators on the payload \(\bm{\mathcal{F}} = \bm{J}^T \bm{\tau}\) to the pose of the mobile platform \(\bm{\mathcal{X}}\) is the same as the transfer function from external forces/torques to \(\bm{\mathcal{X}}\) as long as the Stewart platform&rsquo;s base is fixed.
</p> </p>
@ -243,32 +248,32 @@ The transfer function from forces/torques applied by the actuators on the payloa
</div> </div>
</div> </div>
<div id="outline-container-org81ab204" class="outline-2"> <div id="outline-container-orgb6a1ef7" class="outline-2">
<h2 id="org81ab204"><span class="section-number-2">2</span> Comparison of the static transfer function and the Compliance matrix</h2> <h2 id="orgb6a1ef7"><span class="section-number-2">2</span> Comparison of the static transfer function and the Compliance matrix</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-2">
<p> <p>
In this section, we see how the Compliance matrix of the Stewart platform is linked to the static relation between \(\mathcal{\bm{F}}\) to \(\mathcal{\bm{X}}\). In this section, we see how the Compliance matrix of the Stewart platform is linked to the static relation between \(\mathcal{\bm{F}}\) to \(\mathcal{\bm{X}}\).
</p> </p>
</div> </div>
<div id="outline-container-orge7e7242" class="outline-3"> <div id="outline-container-org3f1c253" class="outline-3">
<h3 id="orge7e7242"><span class="section-number-3">2.1</span> Analysis</h3> <h3 id="org3f1c253"><span class="section-number-3">2.1</span> Analysis</h3>
<div class="outline-text-3" id="text-2-1"> <div class="outline-text-3" id="text-2-1">
<p> <p>
Initialization of the Stewart platform. Initialization of the Stewart platform.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform(); <pre class="src src-matlab"> stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 45e-3); 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 = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, 'type_F', 'universal_p', 'type_M', 'spherical_p'); 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 = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart); stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, 'type', 'none'); stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
</pre> </pre>
</div> </div>
@ -276,9 +281,9 @@ stewart = initializeInertialSensor(stewart, 'type', 'none');
No flexibility below the Stewart platform and no payload. No flexibility below the Stewart platform and no payload.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">ground = initializeGround('type', 'none'); <pre class="src src-matlab"> ground = initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
payload = initializePayload('type', 'none'); payload = initializePayload(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
controller = initializeController('type', 'open-loop'); controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
</pre> </pre>
</div> </div>
@ -286,28 +291,28 @@ controller = initializeController('type', 'open-loop');
Estimation of the transfer function from \(\mathcal{\bm{F}}\) to \(\mathcal{\bm{X}}\): Estimation of the transfer function from \(\mathcal{\bm{F}}\) to \(\mathcal{\bm{X}}\):
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">%% Options for Linearized <pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
options = linearizeOptions; options = linearizeOptions;
options.SampleTime = 0; options.SampleTime = 0;
%% Name of the Simulink File <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = 'stewart_platform_model'; mdl = <span class="org-string">'stewart_platform_model'</span>;
%% Input/Output definition <span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
clear io; io_i = 1; 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, <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, '/Relative Motion Sensor'], 1, 'openoutput'); io_i = io_i + 1; % Position/Orientation of {B} w.r.t. {A} 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 <span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
G = linearize(mdl, io, options); G = linearize(mdl, io, options);
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; 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 = {'Edx', 'Edy', 'Edz', 'Erx', 'Ery', 'Erz'}; 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> </pre>
</div> </div>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">Gc = minreal(G*inv(stewart.kinematics.J')); <pre class="src src-matlab"> Gc = minreal(G<span class="org-type">*</span>inv(stewart.kinematics.J<span class="org-type">'</span>));
Gc.InputName = {'Fnx', 'Fny', 'Fnz', 'Mnx', 'Mny', 'Mnz'}; 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> </pre>
</div> </div>
@ -465,10 +470,10 @@ And now at the Compliance matrix.
</div> </div>
</div> </div>
<div id="outline-container-org9ee3939" class="outline-3"> <div id="outline-container-orga9eb2fd" class="outline-3">
<h3 id="org9ee3939"><span class="section-number-3">2.2</span> Conclusion</h3> <h3 id="orga9eb2fd"><span class="section-number-3">2.2</span> Conclusion</h3>
<div class="outline-text-3" id="text-2-2"> <div class="outline-text-3" id="text-2-2">
<div class="important"> <div class="important" id="orgcecc007">
<p> <p>
The low frequency transfer function matrix from \(\mathcal{\bm{F}}\) to \(\mathcal{\bm{X}}\) corresponds to the compliance matrix of the Stewart platform. The low frequency transfer function matrix from \(\mathcal{\bm{F}}\) to \(\mathcal{\bm{X}}\) corresponds to the compliance matrix of the Stewart platform.
</p> </p>
@ -480,7 +485,7 @@ The low frequency transfer function matrix from \(\mathcal{\bm{F}}\) to \(\mathc
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-08-05 mer. 13:27</p> <p class="date">Created: 2021-01-08 ven. 15:30</p>
</div> </div>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3,37 +3,33 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-09-07 lun. 23:16 --> <!-- 2021-01-08 ven. 15:30 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Stewart Platforms</title> <title>Stewart Platforms</title>
<meta name="generator" content="Org mode" /> <meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" /> <meta name="author" content="Dehaeze Thomas" />
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
<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>
</head> </head>
<body> <body>
<div id="org-div-home-and-up"> <div id="org-div-home-and-up">
<a accesskey="h" href="index.html"> UP </a> <a accesskey="h" href="https://research.tdehaeze.xyz/"> UP </a>
| |
<a accesskey="H" href="index.html"> HOME </a> <a accesskey="H" href="https://research.tdehaeze.xyz/"> HOME </a>
</div><div id="content"> </div><div id="content">
<h1 class="title">Stewart Platforms</h1> <h1 class="title">Stewart Platforms</h1>
<div id="table-of-contents"> <div id="table-of-contents">
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#orgff0bfd7">1. Simulink Project (link)</a></li> <li><a href="#orgad01eeb">1. Simulink Project (link)</a></li>
<li><a href="#org38b9089">2. Stewart Platform Architecture Definition (link)</a></li> <li><a href="#orgf0936f9">2. Stewart Platform Architecture Definition (link)</a></li>
<li><a href="#orgf1c7b3b">3. Simscape Model of the Stewart Platform (link)</a></li> <li><a href="#org4bef8ba">3. Simscape Model of the Stewart Platform (link)</a></li>
<li><a href="#org369c8bb">4. Kinematic Analysis (link)</a></li> <li><a href="#orgfd134cc">4. Kinematic Analysis (link)</a></li>
<li><a href="#org2e3169e">5. Identification of the Stewart Dynamics (link)</a></li> <li><a href="#org2e5eede">5. Identification of the Stewart Dynamics (link)</a></li>
<li><a href="#org0fdb910">6. Control</a></li> <li><a href="#orgb272d52">6. Control</a></li>
<li><a href="#org1f468b1">7. Cubic Configuration (link)</a></li> <li><a href="#org7c7008e">7. Cubic Configuration (link)</a></li>
<li><a href="#orga2bd0e9">8. Bibliography (link)</a></li> <li><a href="#org1f2f2c6">8. Bibliography (link)</a></li>
</ul> </ul>
</div> </div>
</div> </div>
@ -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>. The git repository of the project is accessible <a href="https://git.tdehaeze.xyz/tdehaeze/stewart-simscape">here</a>.
</p> </p>
<div id="outline-container-orgff0bfd7" class="outline-2"> <div id="outline-container-orgad01eeb" class="outline-2">
<h2 id="orgff0bfd7"><span class="section-number-2">1</span> Simulink Project (<a href="simulink-project.html">link</a>)</h2> <h2 id="orgad01eeb"><span class="section-number-2">1</span> Simulink Project (<a href="simulink-project.html">link</a>)</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-1">
<p> <p>
The project is managed with a <b>Simulink Project</b>. The project is managed with a <b>Simulink Project</b>.
@ -54,8 +50,8 @@ Such project is briefly presented <a href="simulink-project.html">here</a>.
</div> </div>
</div> </div>
<div id="outline-container-org38b9089" class="outline-2"> <div id="outline-container-orgf0936f9" class="outline-2">
<h2 id="org38b9089"><span class="section-number-2">2</span> Stewart Platform Architecture Definition (<a href="stewart-architecture.html">link</a>)</h2> <h2 id="orgf0936f9"><span class="section-number-2">2</span> Stewart Platform Architecture Definition (<a href="stewart-architecture.html">link</a>)</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-2">
<p> <p>
The way the Stewart Platform is defined is explained <a href="stewart-architecture.html">here</a>. 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> </div>
<div id="outline-container-orgf1c7b3b" class="outline-2"> <div id="outline-container-org4bef8ba" class="outline-2">
<h2 id="orgf1c7b3b"><span class="section-number-2">3</span> Simscape Model of the Stewart Platform (<a href="simscape-model.html">link</a>)</h2> <h2 id="org4bef8ba"><span class="section-number-2">3</span> Simscape Model of the Stewart Platform (<a href="simscape-model.html">link</a>)</h2>
<div class="outline-text-2" id="text-3"> <div class="outline-text-2" id="text-3">
<p> <p>
The Stewart Platform is then modeled using <a href="https://www.mathworks.com/products/simscape.html">Simscape</a>. The Stewart Platform is then modeled using <a href="https://www.mathworks.com/products/simscape.html">Simscape</a>.
@ -93,8 +89,8 @@ The way to model is build and works is explained <a href="simscape-model.html">h
</div> </div>
</div> </div>
<div id="outline-container-org369c8bb" class="outline-2"> <div id="outline-container-orgfd134cc" class="outline-2">
<h2 id="org369c8bb"><span class="section-number-2">4</span> Kinematic Analysis (<a href="kinematic-study.html">link</a>)</h2> <h2 id="orgfd134cc"><span class="section-number-2">4</span> Kinematic Analysis (<a href="kinematic-study.html">link</a>)</h2>
<div class="outline-text-2" id="text-4"> <div class="outline-text-2" id="text-4">
<p> <p>
From the defined geometry of the Stewart platform, we can perform static analysis such as: From the defined geometry of the Stewart platform, we can perform static analysis such as:
@ -114,8 +110,8 @@ All these analysis are described <a href="kinematic-study.html">here</a>.
</div> </div>
</div> </div>
<div id="outline-container-org2e3169e" class="outline-2"> <div id="outline-container-org2e5eede" class="outline-2">
<h2 id="org2e3169e"><span class="section-number-2">5</span> Identification of the Stewart Dynamics (<a href="identification.html">link</a>)</h2> <h2 id="org2e5eede"><span class="section-number-2">5</span> Identification of the Stewart Dynamics (<a href="identification.html">link</a>)</h2>
<div class="outline-text-2" id="text-5"> <div class="outline-text-2" id="text-5">
<p> <p>
The Dynamics of the Stewart platform can be identified using the Simscape model. The Dynamics of the Stewart platform can be identified using the Simscape model.
@ -136,8 +132,8 @@ The code that is used for identification is explained <a href="identification.ht
</div> </div>
</div> </div>
<div id="outline-container-org0fdb910" class="outline-2"> <div id="outline-container-orgb272d52" class="outline-2">
<h2 id="org0fdb910"><span class="section-number-2">6</span> Control</h2> <h2 id="orgb272d52"><span class="section-number-2">6</span> Control</h2>
<div class="outline-text-2" id="text-6"> <div class="outline-text-2" id="text-6">
<p> <p>
The use of active control for Stewart platforms is a wide subject. The use of active control for Stewart platforms is a wide subject.
@ -180,8 +176,8 @@ Different control architectures (centralized and decentralized) are compared for
</div> </div>
</div> </div>
<div id="outline-container-org1f468b1" class="outline-2"> <div id="outline-container-org7c7008e" class="outline-2">
<h2 id="org1f468b1"><span class="section-number-2">7</span> Cubic Configuration (<a href="cubic-configuration.html">link</a>)</h2> <h2 id="org7c7008e"><span class="section-number-2">7</span> Cubic Configuration (<a href="cubic-configuration.html">link</a>)</h2>
<div class="outline-text-2" id="text-7"> <div class="outline-text-2" id="text-7">
<p> <p>
The cubic configuration is a special class of Stewart platform that has interesting properties. The cubic configuration is a special class of Stewart platform that has interesting properties.
@ -193,8 +189,8 @@ These properties are studied in <a href="cubic-configuration.html">this</a> docu
</div> </div>
</div> </div>
<div id="outline-container-orga2bd0e9" class="outline-2"> <div id="outline-container-org1f2f2c6" class="outline-2">
<h2 id="orga2bd0e9"><span class="section-number-2">8</span> Bibliography (<a href="bibliography.html">link</a>)</h2> <h2 id="org1f2f2c6"><span class="section-number-2">8</span> Bibliography (<a href="bibliography.html">link</a>)</h2>
<div class="outline-text-2" id="text-8"> <div class="outline-text-2" id="text-8">
<p> <p>
Many text books, PhD thesis and articles related to parallel robots and Stewart platforms are gathered in <a href="bibliography.html">this</a> document. Many text books, PhD thesis and articles related to parallel robots and Stewart platforms are gathered in <a href="bibliography.html">this</a> document.
@ -204,7 +200,7 @@ Many text books, PhD thesis and articles related to parallel robots and Stewart
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-09-07 lun. 23:16</p> <p class="date">Created: 2021-01-08 ven. 15:30</p>
</div> </div>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

View File

@ -3,17 +3,13 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-09-01 mar. 13:18 --> <!-- 2021-01-08 ven. 15:30 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Stewart Platform - NASS</title> <title>Stewart Platform - NASS</title>
<meta name="generator" content="Org mode" /> <meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" /> <meta name="author" content="Dehaeze Thomas" />
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
<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>
</head> </head>
<body> <body>
<div id="org-div-home-and-up"> <div id="org-div-home-and-up">
@ -26,53 +22,53 @@
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#orgcfc8288">1. NASS</a> <li><a href="#org07676ec">1. NASS</a>
<ul> <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> </ul>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="outline-container-orgcfc8288" class="outline-2"> <div id="outline-container-org07676ec" class="outline-2">
<h2 id="orgcfc8288"><span class="section-number-2">1</span> NASS</h2> <h2 id="org07676ec"><span class="section-number-2">1</span> NASS</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-1">
</div> </div>
<div id="outline-container-org278a89b" class="outline-3"> <div id="outline-container-org0167386" class="outline-3">
<h3 id="org278a89b"><span class="section-number-3">1.1</span> Identification of the Dynamics</h3> <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="outline-text-3" id="text-1-1">
<div class="org-src-container"> <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'); <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('./mat/flexor_ID16.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K'); 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> </pre>
</div> </div>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform(); <pre class="src src-matlab"> stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 175e-3); 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, '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 = 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 = 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 = 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, '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 = 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, 'Fpr', 150e-3, 'Mpr', 125e-3); 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, 'type_F', 'none', 'type_M', 'none'); 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 = computeJacobian(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart); stewart = initializeInertialSensor(stewart);
</pre> </pre>
</div> </div>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">ground = initializeGround('type', 'none'); <pre class="src src-matlab"> ground = initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
payload = initializePayload('type', 'rigid', 'm', 50); payload = initializePayload(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'m'</span>, 50);
controller = initializeController('type', 'open-loop'); controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
</pre> </pre>
</div> </div>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">disturbances = initializeDisturbances(); <pre class="src src-matlab"> disturbances = initializeDisturbances();
references = initializeReferences(stewart); references = initializeReferences(stewart);
</pre> </pre>
</div> </div>
</div> </div>
@ -81,7 +77,7 @@ references = initializeReferences(stewart);
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-09-01 mar. 13:18</p> <p class="date">Created: 2021-01-08 ven. 15:30</p>
</div> </div>
</body> </body>
</html> </html>

View File

@ -3,25 +3,30 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-08-05 mer. 13:27 --> <!-- 2021-01-08 ven. 15:29 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Stewart Platform - Simscape Model</title> <title>Stewart Platform - Simscape Model</title>
<meta name="generator" content="Org mode" /> <meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" /> <meta name="author" content="Dehaeze Thomas" />
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
<script src="./js/jquery.min.js"></script> <script>
<script src="./js/bootstrap.min.js"></script> MathJax = {
<script src="./js/jquery.stickytableheaders.min.js"></script> svg: {
<script src="./js/readtheorg.js"></script> scale: 1,
<script>MathJax = { fontCache: "global"
tex: { },
tags: 'ams', tex: {
macros: {bm: ["\\boldsymbol{#1}",1],} tags: "ams",
} multlineWidth: "%MULTLINEWIDTH",
}; tagSide: "right",
</script> macros: {bm: ["\\boldsymbol{#1}",1],},
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> tagIndent: ".8em"
}
};
</script>
<script id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
</head> </head>
<body> <body>
<div id="org-div-home-and-up"> <div id="org-div-home-and-up">
@ -34,47 +39,47 @@
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#orgc6e0b93">1. Parameters used for the Simscape Model</a></li> <li><a href="#org79eeba1">1. Parameters used for the Simscape Model</a></li>
<li><a href="#org66977e8">2. Simulation Configuration - Configuration reference</a></li> <li><a href="#org677dd01">2. Simulation Configuration - Configuration reference</a></li>
<li><a href="#orgb2362eb">3. Subsystem Reference</a></li> <li><a href="#orge89e3e7">3. Subsystem Reference</a></li>
<li><a href="#orgdfad86d">4. Subsystem - Fixed base and Mobile Platform</a></li> <li><a href="#org5f42d80">4. Subsystem - Fixed base and Mobile Platform</a></li>
<li><a href="#org9d4af75">5. Subsystem - Struts</a></li> <li><a href="#orgbec2976">5. Subsystem - Struts</a></li>
<li><a href="#org7e2c432">6. Other Elements</a> <li><a href="#org806ecc3">6. Other Elements</a>
<ul> <ul>
<li><a href="#org3535b6d">6.1. Payload</a> <li><a href="#orgf4bef70">6.1. Payload</a>
<ul> <ul>
<li><a href="#orgd38089d">Function description</a></li> <li><a href="#org9c0e404">Function description</a></li>
<li><a href="#org5518a84">Optional Parameters</a></li> <li><a href="#orgabc81c1">Optional Parameters</a></li>
<li><a href="#orgeeb8d35">Add Payload Type</a></li> <li><a href="#org4ef4a9f">Add Payload Type</a></li>
<li><a href="#org6d52ffc">Add Stiffness, Damping and Mass properties of the Payload</a></li> <li><a href="#org3243d76">Add Stiffness, Damping and Mass properties of the Payload</a></li>
</ul> </ul>
</li> </li>
<li><a href="#orgaaed406">6.2. Ground</a> <li><a href="#orgd9e12ef">6.2. Ground</a>
<ul> <ul>
<li><a href="#org7732939">Function description</a></li> <li><a href="#org920bdd0">Function description</a></li>
<li><a href="#org480f36e">Optional Parameters</a></li> <li><a href="#orgfa4bbf4">Optional Parameters</a></li>
<li><a href="#orgef7035d">Add Ground Type</a></li> <li><a href="#org2d22970">Add Ground Type</a></li>
<li><a href="#org95633e8">Add Stiffness and Damping properties of the Ground</a></li> <li><a href="#orgf76def4">Add Stiffness and Damping properties of the Ground</a></li>
<li><a href="#org14ff2fc">Rotation Point</a></li> <li><a href="#orgdb67a68">Rotation Point</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </li>
<li><a href="#orgae6907a">7. Initialize Disturbances</a> <li><a href="#org6d3b61e">7. Initialize Disturbances</a>
<ul> <ul>
<li><a href="#orge2fa859">Function Declaration and Documentation</a></li> <li><a href="#orgf14752d">Function Declaration and Documentation</a></li>
<li><a href="#org6adb628">Optional Parameters</a></li> <li><a href="#orga64679c">Optional Parameters</a></li>
<li><a href="#org30dc07c">Structure initialization</a></li> <li><a href="#org0f7e4dd">Structure initialization</a></li>
<li><a href="#org0755155">Ground Motion</a></li> <li><a href="#org1a28fcd">Ground Motion</a></li>
<li><a href="#org7617a55">Direct Forces</a></li> <li><a href="#org90b72d6">Direct Forces</a></li>
</ul> </ul>
</li> </li>
<li><a href="#orgd45a07f">8. Initialize References</a> <li><a href="#org93f2d30">8. Initialize References</a>
<ul> <ul>
<li><a href="#orge5deaa1">Function Declaration and Documentation</a></li> <li><a href="#orgf124972">Function Declaration and Documentation</a></li>
<li><a href="#orgeebb364">Optional Parameters</a></li> <li><a href="#orgbc7950f">Optional Parameters</a></li>
<li><a href="#orgc274320">8.1. Compute the corresponding strut length</a></li> <li><a href="#org6f05adc">8.1. Compute the corresponding strut length</a></li>
<li><a href="#org36ac3fa">References</a></li> <li><a href="#orgda73a50">References</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
@ -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: It is divided in the following sections:
</p> </p>
<ul class="org-ul"> <ul class="org-ul">
<li>section <a href="#org8d965c3">1</a>: is explained how the parameters of the Stewart platform are set for the Simscape model</li> <li>section <a href="#orge8daba9">1</a>: is explained how the parameters of the Stewart platform are set for the Simscape model</li>
<li>section <a href="#org354bfdb">2</a>: the Simulink configuration (solver, simulation time, &#x2026;) is shared among all the Simulink files. It is explain how this is done.</li> <li>section <a href="#org11ed7ef">2</a>: the Simulink configuration (solver, simulation time, &#x2026;) 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, &#x2026;) are saved in separate files and imported in Simulink files using &ldquo;subsystem referenced&rdquo;.</li> <li>section <a href="#org1a0307c">3</a>: All the elements (platforms, struts, sensors, &#x2026;) are saved in separate files and imported in Simulink files using &ldquo;subsystem referenced&rdquo;.</li>
<li>section <a href="#orga4915c4">4</a>: The simscape model for the fixed base and mobile platform are described in this section.</li> <li>section <a href="#org5fac181">4</a>: The simscape model for the fixed base and mobile platform are described in this section.</li>
<li>section <a href="#orgdb5206f">5</a>: The simscape model for the Stewart platform struts is described in this section.</li> <li>section <a href="#org793a5c7">5</a>: The simscape model for the Stewart platform struts is described in this section.</li>
</ul> </ul>
<div id="outline-container-orgc6e0b93" class="outline-2"> <div id="outline-container-org79eeba1" class="outline-2">
<h2 id="orgc6e0b93"><span class="section-number-2">1</span> Parameters used for the Simscape Model</h2> <h2 id="org79eeba1"><span class="section-number-2">1</span> Parameters used for the Simscape Model</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-1">
<p> <p>
<a id="org8d965c3"></a> <a id="orge8daba9"></a>
The Simscape Model of the Stewart Platform is working with the <code>stewart</code> structure generated using the functions described <a href="stewart-architecture.html">here</a>. The Simscape Model of the Stewart Platform is working with the <code>stewart</code> structure generated using the functions described <a href="stewart-architecture.html">here</a>.
</p> </p>
@ -122,11 +127,11 @@ The main advantage to have all the parameters defined in one structure (and not
</div> </div>
</div> </div>
<div id="outline-container-org66977e8" class="outline-2"> <div id="outline-container-org677dd01" class="outline-2">
<h2 id="org66977e8"><span class="section-number-2">2</span> Simulation Configuration - Configuration reference</h2> <h2 id="org677dd01"><span class="section-number-2">2</span> Simulation Configuration - Configuration reference</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-2">
<p> <p>
<a id="org354bfdb"></a> <a id="org11ed7ef"></a>
As multiple simulink files will be used for simulation and tests, it is very useful to determine good simulation configuration that will be <b>shared</b> among all the simulink files. As multiple simulink files will be used for simulation and tests, it is very useful to determine good simulation configuration that will be <b>shared</b> among all the simulink files.
</p> </p>
@ -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: It is automatically loaded when the Simulink project is open. It can be loaded manually with the command:
</p> </p>
<div class="org-src-container"> <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> </pre>
</div> </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: It is however possible to modify specific parameters just for one simulation using the <code>set_param</code> command:
</p> </p>
<div class="org-src-container"> <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> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgb2362eb" class="outline-2"> <div id="outline-container-orge89e3e7" class="outline-2">
<h2 id="orgb2362eb"><span class="section-number-2">3</span> Subsystem Reference</h2> <h2 id="orge89e3e7"><span class="section-number-2">3</span> Subsystem Reference</h2>
<div class="outline-text-2" id="text-3"> <div class="outline-text-2" id="text-3">
<p> <p>
<a id="org66bbae2"></a> <a id="org1a0307c"></a>
Several Stewart platform models are used, for instance one is use to study the dynamics while the other is used to apply active damping techniques. Several Stewart platform models are used, for instance one is use to study the dynamics while the other is used to apply active damping techniques.
</p> </p>
@ -175,12 +180,12 @@ These shared subsystems are:
</ul> </ul>
<p> <p>
These subsystems are referenced from another subsystem called <code>Stewart_Platform.slx</code> shown in figure <a href="#orgf687c71">1</a>, that basically connect them correctly. These subsystems are referenced from another subsystem called <code>Stewart_Platform.slx</code> shown in figure <a href="#org18dcfb1">1</a>, that basically connect them correctly.
This subsystem is then referenced in other simulink models for various purposes (control, analysis, simulation, &#x2026;). This subsystem is then referenced in other simulink models for various purposes (control, analysis, simulation, &#x2026;).
</p> </p>
<div id="orgf687c71" class="figure"> <div id="org18dcfb1" class="figure">
<p><img src="figs/simscape_stewart_platform.png" alt="simscape_stewart_platform.png" /> <p><img src="figs/simscape_stewart_platform.png" alt="simscape_stewart_platform.png" />
</p> </p>
<p><span class="figure-number">Figure 1: </span>Simscape Subsystem of the Stewart platform. Encapsulate the Subsystems corresponding to the fixed base, mobile platform and all the struts.</p> <p><span class="figure-number">Figure 1: </span>Simscape Subsystem of the Stewart platform. Encapsulate the Subsystems corresponding to the fixed base, mobile platform and all the struts.</p>
@ -188,11 +193,11 @@ This subsystem is then referenced in other simulink models for various purposes
</div> </div>
</div> </div>
<div id="outline-container-orgdfad86d" class="outline-2"> <div id="outline-container-org5f42d80" class="outline-2">
<h2 id="orgdfad86d"><span class="section-number-2">4</span> Subsystem - Fixed base and Mobile Platform</h2> <h2 id="org5f42d80"><span class="section-number-2">4</span> Subsystem - Fixed base and Mobile Platform</h2>
<div class="outline-text-2" id="text-4"> <div class="outline-text-2" id="text-4">
<p> <p>
<a id="orga4915c4"></a> <a id="org5fac181"></a>
Both the fixed base and the mobile platform simscape models share many similarities. Both the fixed base and the mobile platform simscape models share many similarities.
</p> </p>
@ -210,14 +215,14 @@ As always, the parameters that define the geometry are taken from the <code>stew
</p> </p>
<div id="org858f0b4" class="figure"> <div id="org7b43415" class="figure">
<p><img src="figs/simscape_fixed_base.png" alt="simscape_fixed_base.png" width="1000px" /> <p><img src="figs/simscape_fixed_base.png" alt="simscape_fixed_base.png" width="1000px" />
</p> </p>
<p><span class="figure-number">Figure 2: </span>Simscape Model of the Fixed base</p> <p><span class="figure-number">Figure 2: </span>Simscape Model of the Fixed base</p>
</div> </div>
<div id="org4b31aa3" class="figure"> <div id="org7ed0d98" class="figure">
<p><img src="figs/simscape_mobile_platform.png" alt="simscape_mobile_platform.png" width="800px" /> <p><img src="figs/simscape_mobile_platform.png" alt="simscape_mobile_platform.png" width="800px" />
</p> </p>
<p><span class="figure-number">Figure 3: </span>Simscape Model of the Mobile platform</p> <p><span class="figure-number">Figure 3: </span>Simscape Model of the Mobile platform</p>
@ -225,13 +230,13 @@ As always, the parameters that define the geometry are taken from the <code>stew
</div> </div>
</div> </div>
<div id="outline-container-org9d4af75" class="outline-2"> <div id="outline-container-orgbec2976" class="outline-2">
<h2 id="org9d4af75"><span class="section-number-2">5</span> Subsystem - Struts</h2> <h2 id="orgbec2976"><span class="section-number-2">5</span> Subsystem - Struts</h2>
<div class="outline-text-2" id="text-5"> <div class="outline-text-2" id="text-5">
<p> <p>
<a id="orgdb5206f"></a> <a id="org793a5c7"></a>
For the Stewart platform, the 6 struts are identical. For the Stewart platform, the 6 struts are identical.
Thus, all the struts used in the Stewart platform are referring to the same subsystem called <code>stewart_strut.slx</code> and shown in Figure <a href="#org1dc8fce">4</a>. Thus, all the struts used in the Stewart platform are referring to the same subsystem called <code>stewart_strut.slx</code> and shown in Figure <a href="#org96a73eb">4</a>.
</p> </p>
<p> <p>
@ -253,7 +258,7 @@ This is why the <b>UPS</b> configuration is used, but other configuration can be
</p> </p>
<div id="org1dc8fce" class="figure"> <div id="org96a73eb" class="figure">
<p><img src="figs/simscape_strut.png" alt="simscape_strut.png" width="800px" /> <p><img src="figs/simscape_strut.png" alt="simscape_strut.png" width="800px" />
</p> </p>
<p><span class="figure-number">Figure 4: </span>Simscape model of the Stewart platform&rsquo;s strut</p> <p><span class="figure-number">Figure 4: </span>Simscape model of the Stewart platform&rsquo;s strut</p>
@ -282,15 +287,15 @@ Both inertial sensors are described bellow.
</div> </div>
</div> </div>
<div id="outline-container-org7e2c432" class="outline-2"> <div id="outline-container-org806ecc3" class="outline-2">
<h2 id="org7e2c432"><span class="section-number-2">6</span> Other Elements</h2> <h2 id="org806ecc3"><span class="section-number-2">6</span> Other Elements</h2>
<div class="outline-text-2" id="text-6"> <div class="outline-text-2" id="text-6">
</div> </div>
<div id="outline-container-org3535b6d" class="outline-3"> <div id="outline-container-orgf4bef70" class="outline-3">
<h3 id="org3535b6d"><span class="section-number-3">6.1</span> Payload</h3> <h3 id="orgf4bef70"><span class="section-number-3">6.1</span> Payload</h3>
<div class="outline-text-3" id="text-6-1"> <div class="outline-text-3" id="text-6-1">
<p> <p>
<a id="org3a56808"></a> <a id="orgdd9802d"></a>
</p> </p>
<p> <p>
@ -298,95 +303,95 @@ This Matlab function is accessible <a href="../src/initializePayload.m">here</a>
</p> </p>
</div> </div>
<div id="outline-container-orgd38089d" class="outline-4"> <div id="outline-container-org9c0e404" class="outline-4">
<h4 id="orgd38089d">Function description</h4> <h4 id="org9c0e404">Function description</h4>
<div class="outline-text-4" id="text-orgd38089d"> <div class="outline-text-4" id="text-org9c0e404">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">function [payload] = initializePayload(args) <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>)
% initializePayload - Initialize the Payload that can then be used for simulations and analysis <span class="org-comment">% initializePayload - Initialize the Payload that can then be used for simulations and analysis</span>
% <span class="org-comment">%</span>
% Syntax: [payload] = initializePayload(args) <span class="org-comment">% Syntax: [payload] = initializePayload(args)</span>
% <span class="org-comment">%</span>
% Inputs: <span class="org-comment">% Inputs:</span>
% - args - Structure with the following fields: <span class="org-comment">% - args - Structure with the following fields:</span>
% - type - 'none', 'rigid', 'flexible', 'cartesian' <span class="org-comment">% - type - 'none', 'rigid', 'flexible', 'cartesian'</span>
% - h [1x1] - Height of the CoM of the payload w.r.t {M} [m] <span class="org-comment">% - h [1x1] - Height of the CoM of the payload w.r.t {M} [m]</span>
% This also the position where K and C are defined <span class="org-comment">% This also the position where K and C are defined</span>
% - K [6x1] - Stiffness of the Payload [N/m, N/rad] <span class="org-comment">% - K [6x1] - Stiffness of the Payload [N/m, N/rad]</span>
% - C [6x1] - Damping of the Payload [N/(m/s), N/(rad/s)] <span class="org-comment">% - C [6x1] - Damping of the Payload [N/(m/s), N/(rad/s)]</span>
% - m [1x1] - Mass of the Payload [kg] <span class="org-comment">% - m [1x1] - Mass of the Payload [kg]</span>
% - I [3x3] - Inertia matrix for the Payload [kg*m2] <span class="org-comment">% - I [3x3] - Inertia matrix for the Payload [kg*m2]</span>
% <span class="org-comment">%</span>
% Outputs: <span class="org-comment">% Outputs:</span>
% - payload - Struture with the following properties: <span class="org-comment">% - payload - Struture with the following properties:</span>
% - type - 1 (none), 2 (rigid), 3 (flexible) <span class="org-comment">% - type - 1 (none), 2 (rigid), 3 (flexible)</span>
% - h [1x1] - Height of the CoM of the payload w.r.t {M} [m] <span class="org-comment">% - h [1x1] - Height of the CoM of the payload w.r.t {M} [m]</span>
% - K [6x1] - Stiffness of the Payload [N/m, N/rad] <span class="org-comment">% - K [6x1] - Stiffness of the Payload [N/m, N/rad]</span>
% - C [6x1] - Stiffness of the Payload [N/(m/s), N/(rad/s)] <span class="org-comment">% - C [6x1] - Stiffness of the Payload [N/(m/s), N/(rad/s)]</span>
% - m [1x1] - Mass of the Payload [kg] <span class="org-comment">% - m [1x1] - Mass of the Payload [kg]</span>
% - I [3x3] - Inertia matrix for the Payload [kg*m2] <span class="org-comment">% - I [3x3] - Inertia matrix for the Payload [kg*m2]</span>
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org5518a84" class="outline-4"> <div id="outline-container-orgabc81c1" class="outline-4">
<h4 id="org5518a84">Optional Parameters</h4> <h4 id="orgabc81c1">Optional Parameters</h4>
<div class="outline-text-4" id="text-org5518a84"> <div class="outline-text-4" id="text-orgabc81c1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab"> <span class="org-keyword">arguments</span>
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'cartesian'})} = 'none' <span class="org-variable-name">args</span>.type char {mustBeMember(args.type,{<span class="org-string">'none'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'flexible'</span>, <span class="org-string">'cartesian'</span>})} = <span class="org-string">'none'</span>
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e8*ones(6,1) <span class="org-variable-name">args</span>.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e8<span class="org-type">*</span>ones(6,1)
args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1) <span class="org-variable-name">args</span>.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1<span class="org-type">*</span>ones(6,1)
args.h (1,1) double {mustBeNumeric, mustBeNonnegative} = 100e-3 <span class="org-variable-name">args</span>.h (1,1) double {mustBeNumeric, mustBeNonnegative} = 100e<span class="org-type">-</span>3
args.m (1,1) double {mustBeNumeric, mustBeNonnegative} = 10 <span class="org-variable-name">args</span>.m (1,1) double {mustBeNumeric, mustBeNonnegative} = 10
args.I (3,3) double {mustBeNumeric, mustBeNonnegative} = 1*eye(3) <span class="org-variable-name">args</span>.I (3,3) double {mustBeNumeric, mustBeNonnegative} = 1<span class="org-type">*</span>eye(3)
end <span class="org-keyword">end</span>
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgeeb8d35" class="outline-4"> <div id="outline-container-org4ef4a9f" class="outline-4">
<h4 id="orgeeb8d35">Add Payload Type</h4> <h4 id="org4ef4a9f">Add Payload Type</h4>
<div class="outline-text-4" id="text-orgeeb8d35"> <div class="outline-text-4" id="text-org4ef4a9f">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">switch args.type <pre class="src src-matlab"> <span class="org-keyword">switch</span> <span class="org-constant">args.type</span>
case 'none' <span class="org-keyword">case</span> <span class="org-string">'none'</span>
payload.type = 1; payload.type = 1;
case 'rigid' <span class="org-keyword">case</span> <span class="org-string">'rigid'</span>
payload.type = 2; payload.type = 2;
case 'flexible' <span class="org-keyword">case</span> <span class="org-string">'flexible'</span>
payload.type = 3; payload.type = 3;
case 'cartesian' <span class="org-keyword">case</span> <span class="org-string">'cartesian'</span>
payload.type = 4; payload.type = 4;
end <span class="org-keyword">end</span>
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org6d52ffc" class="outline-4"> <div id="outline-container-org3243d76" class="outline-4">
<h4 id="org6d52ffc">Add Stiffness, Damping and Mass properties of the Payload</h4> <h4 id="org3243d76">Add Stiffness, Damping and Mass properties of the Payload</h4>
<div class="outline-text-4" id="text-org6d52ffc"> <div class="outline-text-4" id="text-org3243d76">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">payload.K = args.K; <pre class="src src-matlab"> payload.K = args.K;
payload.C = args.C; payload.C = args.C;
payload.m = args.m; payload.m = args.m;
payload.I = args.I; payload.I = args.I;
payload.h = args.h; payload.h = args.h;
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgaaed406" class="outline-3"> <div id="outline-container-orgd9e12ef" class="outline-3">
<h3 id="orgaaed406"><span class="section-number-3">6.2</span> Ground</h3> <h3 id="orgd9e12ef"><span class="section-number-3">6.2</span> Ground</h3>
<div class="outline-text-3" id="text-6-2"> <div class="outline-text-3" id="text-6-2">
<p> <p>
<a id="orge64ba82"></a> <a id="org140423a"></a>
</p> </p>
<p> <p>
@ -394,228 +399,228 @@ This Matlab function is accessible <a href="../src/initializeGround.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-org7732939" class="outline-4"> <div id="outline-container-org920bdd0" class="outline-4">
<h4 id="org7732939">Function description</h4> <h4 id="org920bdd0">Function description</h4>
<div class="outline-text-4" id="text-org7732939"> <div class="outline-text-4" id="text-org920bdd0">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">function [ground] = initializeGround(args) <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>)
% initializeGround - Initialize the Ground that can then be used for simulations and analysis <span class="org-comment">% initializeGround - Initialize the Ground that can then be used for simulations and analysis</span>
% <span class="org-comment">%</span>
% Syntax: [ground] = initializeGround(args) <span class="org-comment">% Syntax: [ground] = initializeGround(args)</span>
% <span class="org-comment">%</span>
% Inputs: <span class="org-comment">% Inputs:</span>
% - args - Structure with the following fields: <span class="org-comment">% - args - Structure with the following fields:</span>
% - type - 'none', 'solid', 'flexible' <span class="org-comment">% - type - 'none', 'solid', 'flexible'</span>
% - rot_point [3x1] - Rotation point for the ground motion [m] <span class="org-comment">% - rot_point [3x1] - Rotation point for the ground motion [m]</span>
% - K [3x1] - Translation Stiffness of the Ground [N/m] <span class="org-comment">% - K [3x1] - Translation Stiffness of the Ground [N/m]</span>
% - C [3x1] - Translation Damping of the Ground [N/(m/s)] <span class="org-comment">% - C [3x1] - Translation Damping of the Ground [N/(m/s)]</span>
% <span class="org-comment">%</span>
% Outputs: <span class="org-comment">% Outputs:</span>
% - ground - Struture with the following properties: <span class="org-comment">% - ground - Struture with the following properties:</span>
% - type - 1 (none), 2 (rigid), 3 (flexible) <span class="org-comment">% - type - 1 (none), 2 (rigid), 3 (flexible)</span>
% - K [3x1] - Translation Stiffness of the Ground [N/m] <span class="org-comment">% - K [3x1] - Translation Stiffness of the Ground [N/m]</span>
% - C [3x1] - Translation Damping of the Ground [N/(m/s)] <span class="org-comment">% - C [3x1] - Translation Damping of the Ground [N/(m/s)]</span>
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org480f36e" class="outline-4"> <div id="outline-container-orgfa4bbf4" class="outline-4">
<h4 id="org480f36e">Optional Parameters</h4> <h4 id="orgfa4bbf4">Optional Parameters</h4>
<div class="outline-text-4" id="text-org480f36e"> <div class="outline-text-4" id="text-orgfa4bbf4">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab"> <span class="org-keyword">arguments</span>
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible'})} = 'none' <span class="org-variable-name">args</span>.type char {mustBeMember(args.type,{<span class="org-string">'none'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'flexible'</span>})} = <span class="org-string">'none'</span>
args.rot_point (3,1) double {mustBeNumeric} = zeros(3,1) <span class="org-variable-name">args</span>.rot_point (3,1) double {mustBeNumeric} = zeros(3,1)
args.K (3,1) double {mustBeNumeric, mustBeNonnegative} = 1e8*ones(3,1) <span class="org-variable-name">args</span>.K (3,1) double {mustBeNumeric, mustBeNonnegative} = 1e8<span class="org-type">*</span>ones(3,1)
args.C (3,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*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)
end <span class="org-keyword">end</span>
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgef7035d" class="outline-4"> <div id="outline-container-org2d22970" class="outline-4">
<h4 id="orgef7035d">Add Ground Type</h4> <h4 id="org2d22970">Add Ground Type</h4>
<div class="outline-text-4" id="text-orgef7035d"> <div class="outline-text-4" id="text-org2d22970">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">switch args.type <pre class="src src-matlab"> <span class="org-keyword">switch</span> <span class="org-constant">args.type</span>
case 'none' <span class="org-keyword">case</span> <span class="org-string">'none'</span>
ground.type = 1; ground.type = 1;
case 'rigid' <span class="org-keyword">case</span> <span class="org-string">'rigid'</span>
ground.type = 2; ground.type = 2;
case 'flexible' <span class="org-keyword">case</span> <span class="org-string">'flexible'</span>
ground.type = 3; ground.type = 3;
end <span class="org-keyword">end</span>
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org95633e8" class="outline-4"> <div id="outline-container-orgf76def4" class="outline-4">
<h4 id="org95633e8">Add Stiffness and Damping properties of the Ground</h4> <h4 id="orgf76def4">Add Stiffness and Damping properties of the Ground</h4>
<div class="outline-text-4" id="text-org95633e8"> <div class="outline-text-4" id="text-orgf76def4">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">ground.K = args.K; <pre class="src src-matlab"> ground.K = args.K;
ground.C = args.C; ground.C = args.C;
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org14ff2fc" class="outline-4"> <div id="outline-container-orgdb67a68" class="outline-4">
<h4 id="org14ff2fc">Rotation Point</h4> <h4 id="orgdb67a68">Rotation Point</h4>
<div class="outline-text-4" id="text-org14ff2fc"> <div class="outline-text-4" id="text-orgdb67a68">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">ground.rot_point = args.rot_point; <pre class="src src-matlab"> ground.rot_point = args.rot_point;
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgae6907a" class="outline-2"> <div id="outline-container-org6d3b61e" class="outline-2">
<h2 id="orgae6907a"><span class="section-number-2">7</span> Initialize Disturbances</h2> <h2 id="org6d3b61e"><span class="section-number-2">7</span> Initialize Disturbances</h2>
<div class="outline-text-2" id="text-7"> <div class="outline-text-2" id="text-7">
<p> <p>
<a id="org96254bf"></a> <a id="org5c942ea"></a>
</p> </p>
</div> </div>
<div id="outline-container-orge2fa859" class="outline-3"> <div id="outline-container-orgf14752d" class="outline-3">
<h3 id="orge2fa859">Function Declaration and Documentation</h3> <h3 id="orgf14752d">Function Declaration and Documentation</h3>
<div class="outline-text-3" id="text-orge2fa859"> <div class="outline-text-3" id="text-orgf14752d">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">function [disturbances] = initializeDisturbances(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>)
% initializeDisturbances - Initialize the disturbances <span class="org-comment">% initializeDisturbances - Initialize the disturbances</span>
% <span class="org-comment">%</span>
% Syntax: [disturbances] = initializeDisturbances(args) <span class="org-comment">% Syntax: [disturbances] = initializeDisturbances(args)</span>
% <span class="org-comment">%</span>
% Inputs: <span class="org-comment">% Inputs:</span>
% - args - <span class="org-comment">% - args -</span>
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org6adb628" class="outline-3"> <div id="outline-container-orga64679c" class="outline-3">
<h3 id="org6adb628">Optional Parameters</h3> <h3 id="orga64679c">Optional Parameters</h3>
<div class="outline-text-3" id="text-org6adb628"> <div class="outline-text-3" id="text-orga64679c">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab"> <span class="org-keyword">arguments</span>
args.Fd double {mustBeNumeric, mustBeReal} = zeros(6,1) <span class="org-variable-name">args</span>.Fd double {mustBeNumeric, mustBeReal} = zeros(6,1)
args.Fd_t double {mustBeNumeric, mustBeReal} = 0 <span class="org-variable-name">args</span>.Fd_t double {mustBeNumeric, mustBeReal} = 0
args.Dw double {mustBeNumeric, mustBeReal} = zeros(6,1) <span class="org-variable-name">args</span>.Dw double {mustBeNumeric, mustBeReal} = zeros(6,1)
args.Dw_t double {mustBeNumeric, mustBeReal} = 0 <span class="org-variable-name">args</span>.Dw_t double {mustBeNumeric, mustBeReal} = 0
end <span class="org-keyword">end</span>
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org30dc07c" class="outline-3"> <div id="outline-container-org0f7e4dd" class="outline-3">
<h3 id="org30dc07c">Structure initialization</h3> <h3 id="org0f7e4dd">Structure initialization</h3>
<div class="outline-text-3" id="text-org30dc07c"> <div class="outline-text-3" id="text-org0f7e4dd">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">disturbances = struct(); <pre class="src src-matlab"> disturbances = struct();
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org0755155" class="outline-3"> <div id="outline-container-org1a28fcd" class="outline-3">
<h3 id="org0755155">Ground Motion</h3> <h3 id="org1a28fcd">Ground Motion</h3>
<div class="outline-text-3" id="text-org0755155"> <div class="outline-text-3" id="text-org1a28fcd">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">disturbances.Dw = timeseries([args.Dw], args.Dw_t); <pre class="src src-matlab"> disturbances.Dw = timeseries([args.Dw], args.Dw_t);
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org7617a55" class="outline-3"> <div id="outline-container-org90b72d6" class="outline-3">
<h3 id="org7617a55">Direct Forces</h3> <h3 id="org90b72d6">Direct Forces</h3>
<div class="outline-text-3" id="text-org7617a55"> <div class="outline-text-3" id="text-org90b72d6">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">disturbances.Fd = timeseries([args.Fd], args.Fd_t); <pre class="src src-matlab"> disturbances.Fd = timeseries([args.Fd], args.Fd_t);
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgd45a07f" class="outline-2"> <div id="outline-container-org93f2d30" class="outline-2">
<h2 id="orgd45a07f"><span class="section-number-2">8</span> Initialize References</h2> <h2 id="org93f2d30"><span class="section-number-2">8</span> Initialize References</h2>
<div class="outline-text-2" id="text-8"> <div class="outline-text-2" id="text-8">
<p> <p>
<a id="org7e762f4"></a> <a id="orge24eeb5"></a>
</p> </p>
</div> </div>
<div id="outline-container-orge5deaa1" class="outline-3"> <div id="outline-container-orgf124972" class="outline-3">
<h3 id="orge5deaa1">Function Declaration and Documentation</h3> <h3 id="orgf124972">Function Declaration and Documentation</h3>
<div class="outline-text-3" id="text-orge5deaa1"> <div class="outline-text-3" id="text-orgf124972">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">function [references] = initializeReferences(stewart, 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>)
% initializeReferences - Initialize the references <span class="org-comment">% initializeReferences - Initialize the references</span>
% <span class="org-comment">%</span>
% Syntax: [references] = initializeReferences(args) <span class="org-comment">% Syntax: [references] = initializeReferences(args)</span>
% <span class="org-comment">%</span>
% Inputs: <span class="org-comment">% Inputs:</span>
% - args - <span class="org-comment">% - args -</span>
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgeebb364" class="outline-3"> <div id="outline-container-orgbc7950f" class="outline-3">
<h3 id="orgeebb364">Optional Parameters</h3> <h3 id="orgbc7950f">Optional Parameters</h3>
<div class="outline-text-3" id="text-orgeebb364"> <div class="outline-text-3" id="text-orgbc7950f">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab"> <span class="org-keyword">arguments</span>
stewart <span class="org-variable-name">stewart</span>
args.t double {mustBeNumeric, mustBeReal} = 0 <span class="org-variable-name">args</span>.t double {mustBeNumeric, mustBeReal} = 0
args.r double {mustBeNumeric, mustBeReal} = zeros(6, 1) <span class="org-variable-name">args</span>.r double {mustBeNumeric, mustBeReal} = zeros(6, 1)
end <span class="org-keyword">end</span>
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgc274320" class="outline-3"> <div id="outline-container-org6f05adc" class="outline-3">
<h3 id="orgc274320"><span class="section-number-3">8.1</span> Compute the corresponding strut length</h3> <h3 id="org6f05adc"><span class="section-number-3">8.1</span> Compute the corresponding strut length</h3>
<div class="outline-text-3" id="text-8-1"> <div class="outline-text-3" id="text-8-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">rL = zeros(6, length(args.t)); <pre class="src src-matlab"> rL = zeros(6, length(args.t));
for i = 1:length(args.t) <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,i)) -sin(args.r(6,i)) 0; 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,i)) cos(args.r(6,i)) 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] * ... 0 0 1] <span class="org-type">*</span> ...
[cos(args.r(5,i)) 0 sin(args.r(5,i)); [cos(args.r(5,<span class="org-constant">i</span>)) 0 sin(args.r(5,<span class="org-constant">i</span>));
0 1 0; 0 1 0;
-sin(args.r(5,i)) 0 cos(args.r(5,i))] * ... <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; [1 0 0;
0 cos(args.r(4,i)) -sin(args.r(4,i)); 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,i)) cos(args.r(4,i))]; 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); [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(:, i) = dLi; rL(<span class="org-type">:</span>, <span class="org-constant">i</span>) = dLi;
end <span class="org-keyword">end</span>
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org36ac3fa" class="outline-3"> <div id="outline-container-orgda73a50" class="outline-3">
<h3 id="org36ac3fa">References</h3> <h3 id="orgda73a50">References</h3>
<div class="outline-text-3" id="text-org36ac3fa"> <div class="outline-text-3" id="text-orgda73a50">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">references.r = timeseries(args.r, args.t); <pre class="src src-matlab"> references.r = timeseries(args.r, args.t);
references.rL = timeseries(rL, args.t); references.rL = timeseries(rL, args.t);
</pre> </pre>
</div> </div>
</div> </div>
@ -624,7 +629,7 @@ references.rL = timeseries(rL, args.t);
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-08-05 mer. 13:27</p> <p class="date">Created: 2021-01-08 ven. 15:29</p>
</div> </div>
</body> </body>
</html> </html>

View File

@ -3,17 +3,13 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-08-05 mer. 13:27 --> <!-- 2021-01-08 ven. 15:30 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Simulink Project for the Stewart Simscape folder</title> <title>Simulink Project for the Stewart Simscape folder</title>
<meta name="generator" content="Org mode" /> <meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" /> <meta name="author" content="Dehaeze Thomas" />
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
<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>
</head> </head>
<body> <body>
<div id="org-div-home-and-up"> <div id="org-div-home-and-up">
@ -49,7 +45,7 @@ The project can be opened using the <code>simulinkproject</code> function:
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">simulinkproject('../'); <pre class="src src-matlab"> simulinkproject(<span class="org-string">'../'</span>);
</pre> </pre>
</div> </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. The startup script is defined below and is exported to the <code>project_startup.m</code> script.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">project = simulinkproject; <pre class="src src-matlab"> project = simulinkproject;
projectRoot = project.RootFolder; projectRoot = project.RootFolder;
myCacheFolder = fullfile(projectRoot, '.SimulinkCache'); myCacheFolder = fullfile(projectRoot, <span class="org-string">'.SimulinkCache'</span>);
myCodeFolder = fullfile(projectRoot, '.SimulinkCode'); myCodeFolder = fullfile(projectRoot, <span class="org-string">'.SimulinkCode'</span>);
Simulink.fileGenControl('set',... Simulink.fileGenControl(<span class="org-string">'set'</span>,...
'CacheFolder', myCacheFolder,... <span class="org-string">'CacheFolder'</span>, myCacheFolder,...
'CodeGenFolder', myCodeFolder,... <span class="org-string">'CodeGenFolder'</span>, myCodeFolder,...
'createDir', true); <span class="org-string">'createDir'</span>, <span class="org-constant">true</span>);
%% Load the Simscape Configuration <span class="org-matlab-cellbreak"><span class="org-comment">%% Load the Simscape Configuration</span></span>
load('mat/conf_simscape.mat'); load(<span class="org-string">'mat/conf_simscape.mat'</span>);
</pre> </pre>
</div> </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. When the project closes, it runs the <code>project_shutdown.m</code> script defined below.
</p> </p>
<div class="org-src-container"> <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> </pre>
</div> </div>
@ -88,7 +84,7 @@ The project also permits to automatically add defined folder to the path when th
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-08-05 mer. 13:27</p> <p class="date">Created: 2021-01-08 ven. 15:30</p>
</div> </div>
</body> </body>
</html> </html>

View File

@ -3,25 +3,30 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-08-05 mer. 13:27 --> <!-- 2021-01-08 ven. 15:30 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Stewart Platform - Static Analysis</title> <title>Stewart Platform - Static Analysis</title>
<meta name="generator" content="Org mode" /> <meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" /> <meta name="author" content="Dehaeze Thomas" />
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
<script src="./js/jquery.min.js"></script> <script>
<script src="./js/bootstrap.min.js"></script> MathJax = {
<script src="./js/jquery.stickytableheaders.min.js"></script> svg: {
<script src="./js/readtheorg.js"></script> scale: 1,
<script>MathJax = { fontCache: "global"
tex: { },
tags: 'ams', tex: {
macros: {bm: ["\\boldsymbol{#1}",1],} tags: "ams",
} multlineWidth: "%MULTLINEWIDTH",
}; tagSide: "right",
</script> macros: {bm: ["\\boldsymbol{#1}",1],},
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> tagIndent: ".8em"
}
};
</script>
<script id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
</head> </head>
<body> <body>
<div id="org-div-home-and-up"> <div id="org-div-home-and-up">
@ -34,20 +39,20 @@
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#orgc502e97">1. Coupling</a></li> <li><a href="#org5d87fd3">1. Coupling</a></li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="outline-container-orgc502e97" class="outline-2"> <div id="outline-container-org5d87fd3" class="outline-2">
<h2 id="orgc502e97"><span class="section-number-2">1</span> Coupling</h2> <h2 id="org5d87fd3"><span class="section-number-2">1</span> Coupling</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-1">
<p> <p>
What causes the coupling from \(F_i\) to \(X_i\) ? What causes the coupling from \(F_i\) to \(X_i\) ?
</p> </p>
<div id="org41430df" class="figure"> <div id="orgd94ead3" class="figure">
<p><img src="figs/coupling.png" alt="coupling.png" /> <p><img src="figs/coupling.png" alt="coupling.png" />
</p> </p>
<p><span class="figure-number">Figure 1: </span>Block diagram to control an hexapod</p> <p><span class="figure-number">Figure 1: </span>Block diagram to control an hexapod</p>
@ -69,7 +74,7 @@ Thus, the system is uncoupled if \(G\) and \(K\) are diagonal.
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-08-05 mer. 13:27</p> <p class="date">Created: 2021-01-08 ven. 15:30</p>
</div> </div>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

View File

@ -9,12 +9,8 @@
#+HTML_LINK_HOME: ./index.html #+HTML_LINK_HOME: ./index.html
#+HTML_LINK_UP: ./index.html #+HTML_LINK_UP: ./index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> #+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
#+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :comments org

View File

@ -9,12 +9,8 @@
#+HTML_LINK_HOME: ./index.html #+HTML_LINK_HOME: ./index.html
#+HTML_LINK_UP: ./index.html #+HTML_LINK_UP: ./index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> #+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
#+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :comments org

View File

@ -9,12 +9,8 @@
#+HTML_LINK_HOME: ./index.html #+HTML_LINK_HOME: ./index.html
#+HTML_LINK_UP: ./index.html #+HTML_LINK_UP: ./index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> #+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
#+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :comments org

View File

@ -9,12 +9,8 @@
#+HTML_LINK_HOME: ./index.html #+HTML_LINK_HOME: ./index.html
#+HTML_LINK_UP: ./index.html #+HTML_LINK_UP: ./index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> #+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
#+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :comments org

View File

@ -9,12 +9,8 @@
#+HTML_LINK_HOME: ./index.html #+HTML_LINK_HOME: ./index.html
#+HTML_LINK_UP: ./index.html #+HTML_LINK_UP: ./index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> #+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
#+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :comments org

View File

@ -9,12 +9,8 @@
#+HTML_LINK_HOME: ./index.html #+HTML_LINK_HOME: ./index.html
#+HTML_LINK_UP: ./index.html #+HTML_LINK_UP: ./index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> #+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
#+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :comments org

View File

@ -9,12 +9,8 @@
#+HTML_LINK_HOME: ./index.html #+HTML_LINK_HOME: ./index.html
#+HTML_LINK_UP: ./index.html #+HTML_LINK_UP: ./index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> #+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
#+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :comments org

View File

@ -9,12 +9,8 @@
#+HTML_LINK_HOME: ./index.html #+HTML_LINK_HOME: ./index.html
#+HTML_LINK_UP: ./index.html #+HTML_LINK_UP: ./index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> #+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
#+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :comments org

View File

@ -1,11 +1,10 @@
#+TITLE: Stewart Platforms #+TITLE: Stewart Platforms
:DRAWER: :DRAWER:
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> #+HTML_LINK_HOME: https://research.tdehaeze.xyz/
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> #+HTML_LINK_UP: https://research.tdehaeze.xyz/
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script> #+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}") #+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes #+PROPERTY: header-args:latex+ :imagemagick t :fit yes

View File

@ -9,12 +9,8 @@
#+HTML_LINK_HOME: ./index.html #+HTML_LINK_HOME: ./index.html
#+HTML_LINK_UP: ./index.html #+HTML_LINK_UP: ./index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> #+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
#+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :comments org

View File

@ -9,12 +9,8 @@
#+HTML_LINK_HOME: ./index.html #+HTML_LINK_HOME: ./index.html
#+HTML_LINK_UP: ./index.html #+HTML_LINK_UP: ./index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> #+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
#+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :comments org

View File

@ -9,12 +9,8 @@
#+HTML_LINK_HOME: ./index.html #+HTML_LINK_HOME: ./index.html
#+HTML_LINK_UP: ./index.html #+HTML_LINK_UP: ./index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> #+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
#+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :comments org

View File

@ -9,12 +9,8 @@
#+HTML_LINK_HOME: ./index.html #+HTML_LINK_HOME: ./index.html
#+HTML_LINK_UP: ./index.html #+HTML_LINK_UP: ./index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> #+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
#+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :comments org

View File

@ -9,12 +9,8 @@
#+HTML_LINK_HOME: ./index.html #+HTML_LINK_HOME: ./index.html
#+HTML_LINK_UP: ./index.html #+HTML_LINK_UP: ./index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> #+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
#+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :comments org

File diff suppressed because it is too large Load Diff

View File

@ -9,12 +9,8 @@
#+HTML_LINK_HOME: ./index.html #+HTML_LINK_HOME: ./index.html
#+HTML_LINK_UP: ./index.html #+HTML_LINK_UP: ./index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/> #+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
#+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :comments org