Add analysis of the cube's size
This commit is contained in:
parent
747fe5549c
commit
f4abfbe85c
@ -4,7 +4,7 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-02-12 mer. 10:22 -->
|
||||
<!-- 2020-02-12 mer. 10:37 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Cubic configuration for the Stewart Platform</title>
|
||||
@ -278,9 +278,10 @@ for the JavaScript code in this tag.
|
||||
<li><a href="#org8afa645">1.6. Having Cube’s center above the top platform</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org3044455">2. Functions</a>
|
||||
<li><a href="#orgcc4ecce">2. Cubic size analysis</a></li>
|
||||
<li><a href="#org3044455">3. Functions</a>
|
||||
<ul>
|
||||
<li><a href="#org56504f1">2.1. <code>generateCubicConfiguration</code>: Generate a Cubic Configuration</a>
|
||||
<li><a href="#org56504f1">3.1. <code>generateCubicConfiguration</code>: Generate a Cubic Configuration</a>
|
||||
<ul>
|
||||
<li><a href="#orga5a9ba8">Function description</a></li>
|
||||
<li><a href="#org3253792">Documentation</a></li>
|
||||
@ -324,7 +325,7 @@ This topology provides a uniform control capability and a uniform stiffness in a
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
To generate and study the Cubic configuration, <code>generateCubicConfiguration</code> is used (description in section <a href="#orga8311d3">2.1</a>).
|
||||
To generate and study the Cubic configuration, <code>generateCubicConfiguration</code> is used (description in section <a href="#orga8311d3">3.1</a>).
|
||||
The goal is to study the benefits of using a cubic configuration:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
@ -1132,17 +1133,105 @@ FOc = H <span class="org-type">+</span> MO_B; <span class="org-comment">% Cente
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3044455" class="outline-2">
|
||||
<h2 id="org3044455"><span class="section-number-2">2</span> Functions</h2>
|
||||
<div id="outline-container-orgcc4ecce" class="outline-2">
|
||||
<h2 id="orgcc4ecce"><span class="section-number-2">2</span> Cubic size analysis</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
We here study the effect of the size of the cube used for the Stewart Cubic configuration.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We fix the height of the Stewart platform, the center of the cube is at the center of the Stewart platform and the frames \(\{A\}\) and \(\{B\}\) are also taken at the center of the cube.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We only vary the size of the cube.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Hcs = 1e<span class="org-type">-</span>3<span class="org-type">*</span>[250<span class="org-type">:</span>20<span class="org-type">:</span>350]; <span class="org-comment">% Heights for the Cube [m]</span>
|
||||
Ks = zeros(6, 6, length(Hcs));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The height of the Stewart platform is fixed:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">H = 100e<span class="org-type">-</span>3; <span class="org-comment">% height of the Stewart platform [m]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The frames \(\{A\}\) and \(\{B\}\) are positioned at the Stewart platform center as well as the cube’s center:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">MO_B = <span class="org-type">-</span>50e<span class="org-type">-</span>3; <span class="org-comment">% Position {B} with respect to {M} [m]</span>
|
||||
FOc = H <span class="org-type">+</span> MO_B; <span class="org-comment">% Center of the cube with respect to {F}</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
||||
stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>, H, <span class="org-string">'MO_B'</span>, MO_B);
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:length(Hcs)</span>
|
||||
Hc = Hcs(<span class="org-constant">i</span>);
|
||||
stewart = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, Hc, <span class="org-string">'FOc'</span>, FOc, <span class="org-string">'FHa'</span>, 0, <span class="org-string">'MHb'</span>, 0);
|
||||
stewart = computeJointsPose(stewart);
|
||||
stewart = initializeStrutDynamics(stewart, <span class="org-string">'K'</span>, ones(6,1));
|
||||
stewart = computeJacobian(stewart);
|
||||
Ks(<span class="org-type">:</span>,<span class="org-type">:</span>,<span class="org-constant">i</span>) = stewart.kinematics.K;
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We find that for all the cube’s size, \(k_x = k_y = k_z = k\) where \(k\) is the strut stiffness.
|
||||
We also find that \(k_{\theta_x} = k_{\theta_y}\) and \(k_{\theta_z}\) are varying with the cube’s size (figure <a href="#orgf5b4a80">9</a>).
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
plot(Hcs, squeeze(Ks(4, 4, <span class="org-type">:</span>)), <span class="org-string">'DisplayName'</span>, <span class="org-string">'$k_{\theta_x} = k_{\theta_y}$'</span>);
|
||||
plot(Hcs, squeeze(Ks(6, 6, <span class="org-type">:</span>)), <span class="org-string">'DisplayName'</span>, <span class="org-string">'$k_{\theta_z}$'</span>);
|
||||
hold off;
|
||||
legend(<span class="org-string">'location'</span>, <span class="org-string">'northwest'</span>);
|
||||
xlabel(<span class="org-string">'Cube Size [m]'</span>); ylabel(<span class="org-string">'Rotational stiffnes [normalized]'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgf5b4a80" class="figure">
|
||||
<p><img src="figs/stiffness_cube_size.png" alt="stiffness_cube_size.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>\(k_{\theta_x} = k_{\theta_y}\) and \(k_{\theta_z}\) function of the size of the cube</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We observe that \(k_{\theta_x} = k_{\theta_y}\) and \(k_{\theta_z}\) increase linearly with the cube size.
|
||||
</p>
|
||||
|
||||
<div class="important">
|
||||
<p>
|
||||
In order to maximize the rotational stiffness of the Stewart platform, the size of the cube should be the highest possible.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3044455" class="outline-2">
|
||||
<h2 id="org3044455"><span class="section-number-2">3</span> Functions</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
<a id="org28ba607"></a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org56504f1" class="outline-3">
|
||||
<h3 id="org56504f1"><span class="section-number-3">2.1</span> <code>generateCubicConfiguration</code>: Generate a Cubic Configuration</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<h3 id="org56504f1"><span class="section-number-3">3.1</span> <code>generateCubicConfiguration</code>: Generate a Cubic Configuration</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<p>
|
||||
<a id="orga8311d3"></a>
|
||||
</p>
|
||||
@ -1186,7 +1275,7 @@ This Matlab function is accessible <a href="../src/generateCubicConfiguration.m"
|
||||
<div id="org8a7f3d8" class="figure">
|
||||
<p><img src="figs/cubic-configuration-definition.png" alt="cubic-configuration-definition.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Cubic Configuration</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Cubic Configuration</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -1291,7 +1380,7 @@ stewart.platform_M.Mb = Mb;
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-02-12 mer. 10:22</p>
|
||||
<p class="date">Created: 2020-02-12 mer. 10:37</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 25 KiB |
@ -431,60 +431,53 @@ However, the rotational stiffnesses are increasing with the cube's size but the
|
||||
| -8e-17 | 0 | -3e-17 | -6.1e-19 | 0.094 | 0 |
|
||||
| -6.2e-18 | 7.2e-17 | 5.6e-17 | 2.3e-17 | 0 | 0.37 |
|
||||
|
||||
* TODO Cubic size analysis :noexport:
|
||||
We here study the effect of the size of the cube used for the Stewart configuration.
|
||||
* Cubic size analysis
|
||||
We here study the effect of the size of the cube used for the Stewart Cubic configuration.
|
||||
|
||||
We fix the height of the Stewart platform, the center of the cube is at the center of the Stewart platform.
|
||||
We fix the height of the Stewart platform, the center of the cube is at the center of the Stewart platform and the frames $\{A\}$ and $\{B\}$ are also taken at the center of the cube.
|
||||
|
||||
We only vary the size of the cube.
|
||||
|
||||
#+begin_src matlab :results silent
|
||||
H_cubes = 250:20:350;
|
||||
stewarts = {zeros(length(H_cubes), 1)};
|
||||
Hcs = 1e-3*[250:20:350]; % Heights for the Cube [m]
|
||||
Ks = zeros(6, 6, length(Hcs));
|
||||
#+end_src
|
||||
|
||||
The height of the Stewart platform is fixed:
|
||||
#+begin_src matlab
|
||||
H = 100e-3; % height of the Stewart platform [m]
|
||||
#+end_src
|
||||
|
||||
The frames $\{A\}$ and $\{B\}$ are positioned at the Stewart platform center as well as the cube's center:
|
||||
#+begin_src matlab
|
||||
MO_B = -50e-3; % Position {B} with respect to {M} [m]
|
||||
FOc = H + MO_B; % Center of the cube with respect to {F}
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results silent
|
||||
for i = 1:length(H_cubes)
|
||||
H_cube = H_cubes(i);
|
||||
H_tot = 100;
|
||||
H = 80;
|
||||
|
||||
opts = struct(...
|
||||
'H_tot', H_tot, ... % Total height of the Hexapod [mm]
|
||||
'L', H_cube/sqrt(3), ... % Size of the Cube [mm]
|
||||
'H', H, ... % Height between base joints and platform joints [mm]
|
||||
'H0', H_cube/2-H/2 ... % Height between the corner of the cube and the plane containing the base joints [mm]
|
||||
);
|
||||
stewart = initializeCubicConfiguration(opts);
|
||||
|
||||
opts = struct(...
|
||||
'Jd_pos', [0, 0, H_cube/2-opts.H0-opts.H_tot], ... % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]
|
||||
'Jf_pos', [0, 0, H_cube/2-opts.H0-opts.H_tot] ... % Position of the Jacobian for force location from the top of the mobile platform [mm]
|
||||
);
|
||||
stewart = computeGeometricalProperties(stewart, opts);
|
||||
stewarts(i) = {stewart};
|
||||
stewart = initializeStewartPlatform();
|
||||
stewart = initializeFramesPositions(stewart, 'H', H, 'MO_B', MO_B);
|
||||
for i = 1:length(Hcs)
|
||||
Hc = Hcs(i);
|
||||
stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 0, 'MHb', 0);
|
||||
stewart = computeJointsPose(stewart);
|
||||
stewart = initializeStrutDynamics(stewart, 'K', ones(6,1));
|
||||
stewart = computeJacobian(stewart);
|
||||
Ks(:,:,i) = stewart.kinematics.K;
|
||||
end
|
||||
#+end_src
|
||||
|
||||
The Stiffness matrix is computed for all generated Stewart platforms.
|
||||
#+begin_src matlab :results none :exports code
|
||||
Ks = zeros(6, 6, length(H_cube));
|
||||
for i = 1:length(H_cubes)
|
||||
Ks(:, :, i) = stewarts{i}.Jd'*stewarts{i}.Jd;
|
||||
end
|
||||
#+end_src
|
||||
We find that for all the cube's size, $k_x = k_y = k_z = k$ where $k$ is the strut stiffness.
|
||||
We also find that $k_{\theta_x} = k_{\theta_y}$ and $k_{\theta_z}$ are varying with the cube's size (figure [[fig:stiffness_cube_size]]).
|
||||
|
||||
The only elements of $K$ that vary are $k_{\theta_x} = k_{\theta_y}$ and $k_{\theta_z}$.
|
||||
|
||||
Finally, we plot $k_{\theta_x} = k_{\theta_y}$ and $k_{\theta_z}$
|
||||
#+begin_src matlab :results none :exports code
|
||||
figure;
|
||||
hold on;
|
||||
plot(H_cubes, squeeze(Ks(4, 4, :)), 'DisplayName', '$k_{\theta_x}$');
|
||||
plot(H_cubes, squeeze(Ks(6, 6, :)), 'DisplayName', '$k_{\theta_z}$');
|
||||
plot(Hcs, squeeze(Ks(4, 4, :)), 'DisplayName', '$k_{\theta_x} = k_{\theta_y}$');
|
||||
plot(Hcs, squeeze(Ks(6, 6, :)), 'DisplayName', '$k_{\theta_z}$');
|
||||
hold off;
|
||||
legend('location', 'northwest');
|
||||
xlabel('Cube Size [mm]'); ylabel('Rotational stiffnes [normalized]');
|
||||
xlabel('Cube Size [m]'); ylabel('Rotational stiffnes [normalized]');
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:stiffness_cube_size
|
||||
@ -498,12 +491,10 @@ Finally, we plot $k_{\theta_x} = k_{\theta_y}$ and $k_{\theta_z}$
|
||||
#+RESULTS: fig:stiffness_cube_size
|
||||
[[file:figs/stiffness_cube_size.png]]
|
||||
|
||||
|
||||
We observe that $k_{\theta_x} = k_{\theta_y}$ and $k_{\theta_z}$ increase linearly with the cube size.
|
||||
|
||||
#+begin_important
|
||||
In order to maximize the rotational stiffness of the Stewart platform, the size of the cube should be the highest possible.
|
||||
In that case, the legs will the further separated. Size of the cube is then limited by allowed space.
|
||||
#+end_important
|
||||
|
||||
* Functions
|
||||
|
Loading…
Reference in New Issue
Block a user