Different Cubic Architecture study
This commit is contained in:
		@@ -40,13 +40,18 @@
 | 
			
		||||
 | 
			
		||||
* Introduction                                                        :ignore:
 | 
			
		||||
The discovery of the Cubic configuration is done in cite:geng94_six_degree_of_freed_activ.
 | 
			
		||||
Further analysis is conducted in
 | 
			
		||||
 | 
			
		||||
The specificity of the Cubic configuration is that each actuator is orthogonal with the others.
 | 
			
		||||
The specificity of the Cubic configuration is that each actuator is orthogonal with the others:
 | 
			
		||||
#+begin_quote
 | 
			
		||||
the active struts are arranged in a mutually orthogonal configuration connecting the corners of a cube.
 | 
			
		||||
#+end_quote
 | 
			
		||||
 | 
			
		||||
The cubic (or orthogonal) configuration of the Stewart platform is now widely used (cite:preumont07_six_axis_singl_stage_activ,jafari03_orthog_gough_stewar_platf_microm).
 | 
			
		||||
 | 
			
		||||
According to cite:preumont07_six_axis_singl_stage_activ, the cubic configuration provides a uniform stiffness in all directions and *minimizes the crosscoupling* from actuator to sensor of different legs (being orthogonal to each other).
 | 
			
		||||
According to cite:preumont07_six_axis_singl_stage_activ:
 | 
			
		||||
#+begin_quote
 | 
			
		||||
This topology provides a uniform control capability and a uniform stiffness in all directions, and it minimizes the cross-coupling amongst actuators and sensors of different legs (being orthogonal to each other).
 | 
			
		||||
#+end_quote
 | 
			
		||||
 | 
			
		||||
To generate and study the Cubic configuration, =generateCubicConfiguration= is used (description in section [[sec:generateCubicConfiguration]]).
 | 
			
		||||
The goal is to study the benefits of using a cubic configuration:
 | 
			
		||||
@@ -55,6 +60,23 @@ The goal is to study the benefits of using a cubic configuration:
 | 
			
		||||
- Is the center of the cube an important point?
 | 
			
		||||
 | 
			
		||||
* Configuration Analysis - Stiffness Matrix
 | 
			
		||||
** Introduction                                                      :ignore:
 | 
			
		||||
First, we have to understand what is the physical meaning of the Stiffness matrix $\bm{K}$.
 | 
			
		||||
 | 
			
		||||
The Stiffness matrix links forces $\bm{f}$ and torques $\bm{n}$ applied on the mobile platform at $\{B\}$ to the displacement $\Delta\bm{\mathcal{X}}$ of the mobile platform represented by $\{B\}$ with respect to $\{A\}$:
 | 
			
		||||
\[ \bm{\mathcal{F}} = \bm{K} \Delta\bm{\mathcal{X}} \]
 | 
			
		||||
 | 
			
		||||
with:
 | 
			
		||||
- $\bm{\mathcal{F}} = [\bm{f}\ \bm{n}]^{T}$
 | 
			
		||||
- $\Delta\bm{\mathcal{X}} = [\delta x, \delta y, \delta z, \delta \theta_{x}, \delta \theta_{y}, \delta \theta_{z}]^{T}$
 | 
			
		||||
 | 
			
		||||
If the stiffness matrix is inversible, its inverse is the compliance matrix: $\bm{C} = \bm{K}^{-1$ and:
 | 
			
		||||
\[ \Delta \bm{\mathcal{X}} = C \bm{\mathcal{F}} \]
 | 
			
		||||
 | 
			
		||||
Thus, if the stiffness matrix is diagonal, the compliance matrix is also diagonal and a force (resp. torque) $\bm{\mathcal{F}}_i$ applied on the mobile platform at $\{B\}$ will induce a pure translation (resp. rotation) of the mobile platform represented by $\{B\}$ with respect to $\{A\}$.
 | 
			
		||||
 | 
			
		||||
One has to note that this is only valid in a static way.
 | 
			
		||||
 | 
			
		||||
** Matlab Init                                              :noexport:ignore:
 | 
			
		||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
 | 
			
		||||
  <<matlab-dir>>
 | 
			
		||||
@@ -72,12 +94,19 @@ The goal is to study the benefits of using a cubic configuration:
 | 
			
		||||
We create a cubic Stewart platform (figure [[fig:3d-cubic-stewart-aligned]]) in such a way that the center of the cube (black dot) is located at the center of the Stewart platform (blue dot).
 | 
			
		||||
The Jacobian matrix is estimated at the location of the center of the cube.
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  H = 100e-3;     % height of the Stewart platform [m]
 | 
			
		||||
  MO_B = -H/2;     % Position {B} with respect to {M} [m]
 | 
			
		||||
  Hc = H;         % Size of the useful part of the cube [m]
 | 
			
		||||
  FOc = H + MO_B; % Center of the cube with respect to {F}
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  stewart = initializeStewartPlatform();
 | 
			
		||||
  stewart = initializeFramesPositions(stewart, 'H', 100e-3, 'MO_B', -50e-3);
 | 
			
		||||
  stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0);
 | 
			
		||||
  stewart = initializeFramesPositions(stewart, 'H', H, 'MO_B', MO_B);
 | 
			
		||||
  stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 0, 'MHb', 0);
 | 
			
		||||
  stewart = computeJointsPose(stewart);
 | 
			
		||||
  stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1));
 | 
			
		||||
  stewart = initializeStrutDynamics(stewart, 'K', ones(6,1));
 | 
			
		||||
  stewart = computeJacobian(stewart);
 | 
			
		||||
  stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 175e-3, 'Mpr', 150e-3);
 | 
			
		||||
#+end_src
 | 
			
		||||
@@ -88,7 +117,7 @@ The Jacobian matrix is estimated at the location of the center of the cube.
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  displayArchitecture(stewart, 'labels', false);
 | 
			
		||||
  scatter3(0, 0, 50e-3, 200, 'kh');
 | 
			
		||||
  scatter3(0, 0, FOc, 200, 'kh');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+header: :tangle no :exports results :results none :noweb yes
 | 
			
		||||
@@ -101,7 +130,7 @@ The Jacobian matrix is estimated at the location of the center of the cube.
 | 
			
		||||
[[file:figs/cubic_conf_centered_J_center.png]]
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports results :results value table replace :tangle no
 | 
			
		||||
  data2orgtable(stewart.K, {}, {}, ' %.2g ');
 | 
			
		||||
  data2orgtable(stewart.kinematics.K, {}, {}, ' %.2g ');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
@@ -116,19 +145,26 @@ The Jacobian matrix is estimated at the location of the center of the cube.
 | 
			
		||||
We create a cubic Stewart platform with center of the cube located at the center of the Stewart platform (figure [[fig:3d-cubic-stewart-aligned]]).
 | 
			
		||||
The Jacobian matrix is not estimated at the location of the center of the cube.
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  H    = 100e-3; % height of the Stewart platform [m]
 | 
			
		||||
  MO_B = 20e-3;  % Position {B} with respect to {M} [m]
 | 
			
		||||
  Hc   = H;      % Size of the useful part of the cube [m]
 | 
			
		||||
  FOc  = H/2;    % Center of the cube with respect to {F}
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  stewart = initializeStewartPlatform();
 | 
			
		||||
  stewart = initializeFramesPositions(stewart, 'H', 100e-3, 'MO_B', 0);
 | 
			
		||||
  stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0);
 | 
			
		||||
  stewart = initializeFramesPositions(stewart, 'H', H, 'MO_B', MO_B);
 | 
			
		||||
  stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 0, 'MHb', 0);
 | 
			
		||||
  stewart = computeJointsPose(stewart);
 | 
			
		||||
  stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1));
 | 
			
		||||
  stewart = initializeStrutDynamics(stewart, 'K', ones(6,1));
 | 
			
		||||
  stewart = computeJacobian(stewart);
 | 
			
		||||
  stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 175e-3, 'Mpr', 150e-3);
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  displayArchitecture(stewart, 'labels', false);
 | 
			
		||||
  scatter3(0, 0, 50e-3, 200, 'kh');
 | 
			
		||||
  scatter3(0, 0, FOc, 200, 'kh');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+header: :tangle no :exports results :results none :noweb yes
 | 
			
		||||
@@ -141,38 +177,41 @@ The Jacobian matrix is not estimated at the location of the center of the cube.
 | 
			
		||||
[[file:figs/cubic_conf_centered_J_not_center.png]]
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports results :results value table replace :tangle no
 | 
			
		||||
  data2orgtable(stewart.K, {}, {}, ' %.2g ');
 | 
			
		||||
  data2orgtable(stewart.kinematics.K, {}, {}, ' %.2g ');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
|        2 |        0 | -2.5e-16 | 1.4e-17 |     -0.1 |        0 |
 | 
			
		||||
|        0 |        2 |        0 |     0.1 |        0 |        0 |
 | 
			
		||||
| -2.5e-16 |        0 |        2 | 3.4e-18 | -1.4e-17 |        0 |
 | 
			
		||||
|  1.4e-17 |      0.1 |  3.4e-18 |    0.02 |  1.1e-20 |  3.4e-18 |
 | 
			
		||||
|     -0.1 |        0 | -1.4e-17 | 1.4e-19 |     0.02 | -1.7e-18 |
 | 
			
		||||
|  6.6e-18 | -3.3e-18 |        0 | 3.6e-18 | -1.7e-18 |     0.06 |
 | 
			
		||||
|        2 |        0 | -2.5e-16 |        0 | -0.14 |       0 |
 | 
			
		||||
|        0 |        2 |        0 |     0.14 |     0 |       0 |
 | 
			
		||||
| -2.5e-16 |        0 |        2 | -5.3e-19 |     0 |       0 |
 | 
			
		||||
|        0 |     0.14 | -5.3e-19 |    0.025 |     0 | 8.7e-19 |
 | 
			
		||||
|    -0.14 |        0 |  2.6e-18 |  1.6e-19 | 0.025 |       0 |
 | 
			
		||||
|  6.6e-18 | -3.3e-18 |        0 |  8.9e-19 |     0 |    0.06 |
 | 
			
		||||
 | 
			
		||||
** Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center
 | 
			
		||||
Here, the "center" of the Stewart platform is not at the cube center (figure [[fig:3d-cubic-stewart-misaligned]]).
 | 
			
		||||
Here, the "center" of the Stewart platform is not at the cube center (figure [[fig:cubic_conf_not_centered_J_center]]).
 | 
			
		||||
The Jacobian is estimated at the cube center.
 | 
			
		||||
 | 
			
		||||
#+name: fig:3d-cubic-stewart-misaligned
 | 
			
		||||
#+caption: Not centered cubic configuration
 | 
			
		||||
[[file:figs/3d-cubic-stewart-misaligned.png]]
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  H    = 80e-3; % height of the Stewart platform [m]
 | 
			
		||||
  MO_B = -30e-3;  % Position {B} with respect to {M} [m]
 | 
			
		||||
  Hc   = 100e-3;      % Size of the useful part of the cube [m]
 | 
			
		||||
  FOc  = H + MO_B;    % Center of the cube with respect to {F}
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  stewart = initializeStewartPlatform();
 | 
			
		||||
  stewart = initializeFramesPositions(stewart, 'H', 80e-3, 'MO_B', -40e-3);
 | 
			
		||||
  stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0);
 | 
			
		||||
  stewart = initializeFramesPositions(stewart, 'H', H, 'MO_B', MO_B);
 | 
			
		||||
  stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 0, 'MHb', 0);
 | 
			
		||||
  stewart = computeJointsPose(stewart);
 | 
			
		||||
  stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1));
 | 
			
		||||
  stewart = initializeStrutDynamics(stewart, 'K', ones(6,1));
 | 
			
		||||
  stewart = computeJacobian(stewart);
 | 
			
		||||
  stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 175e-3, 'Mpr', 150e-3);
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  displayArchitecture(stewart, 'labels', false);
 | 
			
		||||
  scatter3(0, 0, 50e-3, 200, 'kh');
 | 
			
		||||
  scatter3(0, 0, FOc, 200, 'kh');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+header: :tangle no :exports results :results none :noweb yes
 | 
			
		||||
@@ -185,16 +224,16 @@ The Jacobian is estimated at the cube center.
 | 
			
		||||
[[file:figs/cubic_conf_not_centered_J_center.png]]
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports results :results value table replace :tangle no
 | 
			
		||||
  data2orgtable(stewart.K, {}, {}, ' %.2g ');
 | 
			
		||||
  data2orgtable(stewart.kinematics.K, {}, {}, ' %.2g ');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
|        2 |       0 | -1.7e-16 |        0 |     0.02 |       0 |
 | 
			
		||||
|        0 |       2 |        0 |    -0.02 |        0 | 2.8e-17 |
 | 
			
		||||
| -1.7e-16 |       0 |        2 |  1.2e-19 | -1.4e-17 | 1.4e-17 |
 | 
			
		||||
|        0 |   -0.02 |  1.2e-19 |    0.015 | -4.3e-19 | 1.7e-18 |
 | 
			
		||||
|     0.02 |       0 | -7.3e-18 | -3.3e-21 |    0.015 |       0 |
 | 
			
		||||
|  6.6e-18 | 2.5e-17 |        0 |    2e-18 |        0 |    0.06 |
 | 
			
		||||
|        2 |        0 | -1.7e-16 |        0 |  4.9e-17 |        0 |
 | 
			
		||||
|        0 |        2 |        0 | -2.2e-17 |        0 |  2.8e-17 |
 | 
			
		||||
| -1.7e-16 |        0 |        2 |  1.1e-18 | -1.4e-17 |  1.4e-17 |
 | 
			
		||||
|        0 | -2.2e-17 |  1.1e-18 |    0.015 |        0 |  3.5e-18 |
 | 
			
		||||
|  4.4e-17 |        0 | -1.4e-17 | -5.7e-20 |    0.015 | -8.7e-19 |
 | 
			
		||||
|  6.6e-18 |  2.5e-17 |        0 |  3.5e-18 | -8.7e-19 |     0.06 |
 | 
			
		||||
 | 
			
		||||
We obtain $k_x = k_y = k_z$ and $k_{\theta_x} = k_{\theta_y}$, but the Stiffness matrix is not diagonal.
 | 
			
		||||
 | 
			
		||||
@@ -207,19 +246,26 @@ The Stewart platform is from $z = H_0 = 75$ to $z = H_0 + H_{tot} = 175$.
 | 
			
		||||
The center height of the Stewart platform is then at $z = \frac{175-75}{2} = 50$.
 | 
			
		||||
The center of the cube from the top platform is at $z = 110 - 175 = -65$.
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  H    = 100e-3; % height of the Stewart platform [m]
 | 
			
		||||
  MO_B = -H/2;  % Position {B} with respect to {M} [m]
 | 
			
		||||
  Hc   = 1.5*H;      % Size of the useful part of the cube [m]
 | 
			
		||||
  FOc  = H/2 + 10e-3;    % Center of the cube with respect to {F}
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  stewart = initializeStewartPlatform();
 | 
			
		||||
  stewart = initializeFramesPositions(stewart, 'H', 80e-3, 'MO_B', -40e-3);
 | 
			
		||||
  stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0);
 | 
			
		||||
  stewart = initializeFramesPositions(stewart, 'H', H, 'MO_B', MO_B);
 | 
			
		||||
  stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 0, 'MHb', 0);
 | 
			
		||||
  stewart = computeJointsPose(stewart);
 | 
			
		||||
  stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1));
 | 
			
		||||
  stewart = initializeStrutDynamics(stewart, 'K', ones(6,1));
 | 
			
		||||
  stewart = computeJacobian(stewart);
 | 
			
		||||
  stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 175e-3, 'Mpr', 150e-3);
 | 
			
		||||
  stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 215e-3, 'Mpr', 195e-3);
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  displayArchitecture(stewart, 'labels', false);
 | 
			
		||||
  scatter3(0, 0, 50e-3, 200, 'kh');
 | 
			
		||||
  scatter3(0, 0, FOc, 200, 'kh');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+header: :tangle no :exports results :results none :noweb yes
 | 
			
		||||
@@ -232,64 +278,158 @@ The center of the cube from the top platform is at $z = 110 - 175 = -65$.
 | 
			
		||||
[[file:figs/cubic_conf_not_centered_J_stewart_center.png]]
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports results :results value table replace :tangle no
 | 
			
		||||
  data2orgtable(stewart.K, {}, {}, ' %.2g ');
 | 
			
		||||
  data2orgtable(stewart.kinematics.K, {}, {}, ' %.2g ');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
|        2 |       0 | -1.7e-16 |        0 |     0.02 |       0 |
 | 
			
		||||
|        0 |       2 |        0 |    -0.02 |        0 | 2.8e-17 |
 | 
			
		||||
| -1.7e-16 |       0 |        2 |  1.2e-19 | -1.4e-17 | 1.4e-17 |
 | 
			
		||||
|        0 |   -0.02 |  1.2e-19 |    0.015 | -4.3e-19 | 1.7e-18 |
 | 
			
		||||
|     0.02 |       0 | -7.3e-18 | -3.3e-21 |    0.015 |       0 |
 | 
			
		||||
|  6.6e-18 | 2.5e-17 |        0 |    2e-18 |        0 |    0.06 |
 | 
			
		||||
|       2 |        0 |  1.5e-16 |        0 |     0.02 |       0 |
 | 
			
		||||
|       0 |        2 |        0 |    -0.02 |        0 |       0 |
 | 
			
		||||
| 1.5e-16 |        0 |        2 |   -3e-18 | -2.8e-17 |       0 |
 | 
			
		||||
|       0 |    -0.02 |   -3e-18 |    0.034 | -8.7e-19 | 5.2e-18 |
 | 
			
		||||
|    0.02 |        0 | -2.2e-17 | -4.4e-19 |    0.034 |       0 |
 | 
			
		||||
| 5.9e-18 | -7.5e-18 |        0 |  3.5e-18 |        0 |    0.14 |
 | 
			
		||||
 | 
			
		||||
** Conclusion
 | 
			
		||||
#+begin_important
 | 
			
		||||
  - The cubic configuration permits to have $k_x = k_y = k_z$ and $k_{\theta_x} = k_{\theta_y}$
 | 
			
		||||
  - The stiffness matrix $K$ is diagonal for the cubic configuration if the Jacobian is estimated at the cube center.
 | 
			
		||||
Here are the conclusion about the Stiffness matrix for the Cubic configuration:
 | 
			
		||||
- The cubic configuration permits to have $k_x = k_y = k_z$ and $k_{\theta_x} = k_{\theta_y}$
 | 
			
		||||
- The stiffness matrix $K$ is diagonal for the cubic configuration if the Jacobian is estimated at the cube center.
 | 
			
		||||
#+end_important
 | 
			
		||||
 | 
			
		||||
** Having Cube's center above the top platform
 | 
			
		||||
Let's say we want to have a decouple dynamics above the top platform.
 | 
			
		||||
Let's say we want to have a diagonal stiffness matrix when $\{A\}$ and $\{B\}$ are located above the top platform.
 | 
			
		||||
Thus, we want the cube's center to be located above the top center.
 | 
			
		||||
This is possible, to do so:
 | 
			
		||||
- The position of the center of the cube should be positioned at A
 | 
			
		||||
- The Height of the "useful" part of the cube should be at least equal to two times the distance from F to A.
 | 
			
		||||
  It is possible to have small cube, but then to configuration is a little bit strange.
 | 
			
		||||
 | 
			
		||||
Let's fix the Height of the Stewart platform and the position of frames $\{A\}$ and $\{B\}$:
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  H    = 100e-3; % height of the Stewart platform [m]
 | 
			
		||||
  MO_B = 20e-3;  % Position {B} with respect to {M} [m]
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
We find the several Cubic configuration for the Stewart platform where the center of the cube is located at frame $\{A\}$.
 | 
			
		||||
The differences between the configuration are the cube's size:
 | 
			
		||||
- Small Cube Size in Figure [[fig:stewart_cubic_conf_type_1]]
 | 
			
		||||
- Medium Cube Size in Figure [[fig:stewart_cubic_conf_type_2]]
 | 
			
		||||
- Large Cube Size in Figure [[fig:stewart_cubic_conf_type_3]]
 | 
			
		||||
 | 
			
		||||
For each of the configuration, the Stiffness matrix is diagonal with $k_x = k_y = k_y = 2k$ with $k$ is the stiffness of each strut.
 | 
			
		||||
However, the rotational stiffnesses are increasing with the cube's size but the required size of the platform is also increasing, so there is a trade-off here.
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  stewart = initializeStewartPlatform();
 | 
			
		||||
  stewart = initializeFramesPositions(stewart, 'H', 100e-3, 'MO_B', 50e-3);
 | 
			
		||||
  FOc = stewart.H + stewart.MO_B(3);
 | 
			
		||||
  Hc = 2*(stewart.H + stewart.MO_B(3));
 | 
			
		||||
  stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 10e-3, 'MHb', 10e-3);
 | 
			
		||||
  stewart = computeJointsPose(stewart);
 | 
			
		||||
  stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1));
 | 
			
		||||
  stewart = initializeJointDynamics(stewart, 'disable', true);
 | 
			
		||||
  stewart = initializeCylindricalPlatforms(stewart);
 | 
			
		||||
  stewart = initializeCylindricalStruts(stewart);
 | 
			
		||||
  stewart = computeJacobian(stewart);
 | 
			
		||||
  stewart = initializeStewartPose(stewart);
 | 
			
		||||
  Hc   = 0.4*H;    % Size of the useful part of the cube [m]
 | 
			
		||||
  FOc  = H + MO_B; % Center of the cube with respect to {F}
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  stewart = initializeStewartPlatform();
 | 
			
		||||
  stewart = initializeFramesPositions(stewart, 'H', H, 'MO_B', MO_B);
 | 
			
		||||
  stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 0, 'MHb', 0);
 | 
			
		||||
  stewart = computeJointsPose(stewart);
 | 
			
		||||
  stewart = initializeStrutDynamics(stewart, 'K', ones(6,1));
 | 
			
		||||
  stewart = computeJacobian(stewart);
 | 
			
		||||
  stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 1.2*max(vecnorm(stewart.platform_F.Fa)), 'Mpr', 1.2*max(vecnorm(stewart.platform_M.Mb)));
 | 
			
		||||
  displayArchitecture(stewart, 'labels', false);
 | 
			
		||||
  scatter3(0, 0, 50e-3, 200, 'kh');
 | 
			
		||||
  scatter3(0, 0, FOc, 200, 'kh');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+header: :tangle no :exports results :results none :noweb yes
 | 
			
		||||
#+begin_src matlab :var filepath="figs/stewart_cubic_conf_type_1.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
 | 
			
		||||
<<plt-matlab>>
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+name: fig:stewart_cubic_conf_type_1
 | 
			
		||||
#+caption: Cubic Configuration for the Stewart Platform - Small Cube Size ([[./figs/stewart_cubic_conf_type_1.png][png]], [[./figs/stewart_cubic_conf_type_1.pdf][pdf]])
 | 
			
		||||
[[file:figs/stewart_cubic_conf_type_1.png]]
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports results :results value table replace :tangle no
 | 
			
		||||
  data2orgtable(stewart.K, {}, {}, ' %.2g ');
 | 
			
		||||
  data2orgtable(stewart.kinematics.K, {}, {}, ' %.2g ');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
|        2 |        0 | -3.2e-16 |        0 |  3.1e-16 |        0 |
 | 
			
		||||
|        0 |        2 |        0 | -1.2e-16 |        0 |        0 |
 | 
			
		||||
| -3.2e-16 |        0 |        2 |    5e-18 | -5.6e-17 |        0 |
 | 
			
		||||
|        0 | -1.2e-16 |    5e-18 |     0.14 |  3.5e-18 |  1.4e-17 |
 | 
			
		||||
|    3e-16 |        0 | -5.4e-17 |  2.1e-19 |     0.14 | -6.9e-18 |
 | 
			
		||||
|  7.4e-19 | -2.6e-17 |        0 |  1.3e-17 | -6.9e-18 |     0.54 |
 | 
			
		||||
|        2 |        0 | -2.8e-16 |        0 |  2.4e-17 |       0 |
 | 
			
		||||
|        0 |        2 |        0 | -2.3e-17 |        0 |       0 |
 | 
			
		||||
| -2.8e-16 |        0 |        2 | -2.1e-19 |        0 |       0 |
 | 
			
		||||
|        0 | -2.3e-17 | -2.1e-19 |   0.0024 | -5.4e-20 | 6.5e-19 |
 | 
			
		||||
|  2.4e-17 |        0 |  4.9e-19 | -2.3e-20 |   0.0024 |       0 |
 | 
			
		||||
| -1.2e-18 |  1.1e-18 |        0 |  6.2e-19 |        0 |  0.0096 |
 | 
			
		||||
 | 
			
		||||
We obtain $k_x = k_y = k_z$ and $k_{\theta_x} = k_{\theta_y}$, but the Stiffness matrix is not diagonal.
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  Hc   = 1.5*H;    % Size of the useful part of the cube [m]
 | 
			
		||||
  FOc  = H + MO_B; % Center of the cube with respect to {F}
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  stewart = initializeStewartPlatform();
 | 
			
		||||
  stewart = initializeFramesPositions(stewart, 'H', H, 'MO_B', MO_B);
 | 
			
		||||
  stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 0, 'MHb', 0);
 | 
			
		||||
  stewart = computeJointsPose(stewart);
 | 
			
		||||
  stewart = initializeStrutDynamics(stewart, 'K', ones(6,1));
 | 
			
		||||
  stewart = computeJacobian(stewart);
 | 
			
		||||
  stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 1.2*max(vecnorm(stewart.platform_F.Fa)), 'Mpr', 1.2*max(vecnorm(stewart.platform_M.Mb)));
 | 
			
		||||
  displayArchitecture(stewart, 'labels', false);
 | 
			
		||||
  scatter3(0, 0, FOc, 200, 'kh');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+header: :tangle no :exports results :results none :noweb yes
 | 
			
		||||
#+begin_src matlab :var filepath="figs/stewart_cubic_conf_type_2.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
 | 
			
		||||
<<plt-matlab>>
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+name: fig:stewart_cubic_conf_type_2
 | 
			
		||||
#+caption: Cubic Configuration for the Stewart Platform - Medium Cube Size ([[./figs/stewart_cubic_conf_type_2.png][png]], [[./figs/stewart_cubic_conf_type_2.pdf][pdf]])
 | 
			
		||||
[[file:figs/stewart_cubic_conf_type_2.png]]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports results :results value table replace :tangle no
 | 
			
		||||
  data2orgtable(stewart.kinematics.K, {}, {}, ' %.2g ');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
|        2 |        0 | -1.9e-16 |        0 | 5.6e-17 |       0 |
 | 
			
		||||
|        0 |        2 |        0 | -7.6e-17 |       0 |       0 |
 | 
			
		||||
| -1.9e-16 |        0 |        2 |  2.5e-18 | 2.8e-17 |       0 |
 | 
			
		||||
|        0 | -7.6e-17 |  2.5e-18 |    0.034 | 8.7e-19 | 8.7e-18 |
 | 
			
		||||
|  5.7e-17 |        0 |  3.2e-17 |  2.9e-19 |   0.034 |       0 |
 | 
			
		||||
|   -1e-18 | -1.3e-17 |  5.6e-17 |  8.4e-18 |       0 |    0.14 |
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  Hc   = 2.5*H;    % Size of the useful part of the cube [m]
 | 
			
		||||
  FOc  = H + MO_B; % Center of the cube with respect to {F}
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  stewart = initializeStewartPlatform();
 | 
			
		||||
  stewart = initializeFramesPositions(stewart, 'H', H, 'MO_B', MO_B);
 | 
			
		||||
  stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 0, 'MHb', 0);
 | 
			
		||||
  stewart = computeJointsPose(stewart);
 | 
			
		||||
  stewart = initializeStrutDynamics(stewart, 'K', ones(6,1));
 | 
			
		||||
  stewart = computeJacobian(stewart);
 | 
			
		||||
  stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 1.2*max(vecnorm(stewart.platform_F.Fa)), 'Mpr', 1.2*max(vecnorm(stewart.platform_M.Mb)));
 | 
			
		||||
  displayArchitecture(stewart, 'labels', false);
 | 
			
		||||
  scatter3(0, 0, FOc, 200, 'kh');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+header: :tangle no :exports results :results none :noweb yes
 | 
			
		||||
#+begin_src matlab :var filepath="figs/stewart_cubic_conf_type_3.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
 | 
			
		||||
<<plt-matlab>>
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+name: fig:stewart_cubic_conf_type_3
 | 
			
		||||
#+caption: Cubic Configuration for the Stewart Platform - Large Cube Size ([[./figs/stewart_cubic_conf_type_3.png][png]], [[./figs/stewart_cubic_conf_type_3.pdf][pdf]])
 | 
			
		||||
[[file:figs/stewart_cubic_conf_type_3.png]]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports results :results value table replace :tangle no
 | 
			
		||||
  data2orgtable(stewart.kinematics.K, {}, {}, ' %.2g ');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
|        2 |        0 |   -3e-16 |        0 | -8.3e-17 |       0 |
 | 
			
		||||
|        0 |        2 |        0 | -2.2e-17 |        0 | 5.6e-17 |
 | 
			
		||||
|   -3e-16 |        0 |        2 | -9.3e-19 | -2.8e-17 |       0 |
 | 
			
		||||
|        0 | -2.2e-17 | -9.3e-19 |    0.094 |        0 | 2.1e-17 |
 | 
			
		||||
|   -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.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user