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