From c5e93db0103a616ceeb1ef85087d2e231536b04b Mon Sep 17 00:00:00 2001 From: Thomas Dehaeze Date: Thu, 6 Feb 2020 17:25:38 +0100 Subject: [PATCH] Change the location of the cubic conf function --- cubic-configuration.html | 353 +++++++++++++------- cubic-configuration.org | 112 ++++++- stewart-architecture.html | 668 ++++++++++++++++---------------------- stewart-architecture.org | 68 +++- 4 files changed, 693 insertions(+), 508 deletions(-) diff --git a/cubic-configuration.html b/cubic-configuration.html index 8f79349..c3cec35 100644 --- a/cubic-configuration.html +++ b/cubic-configuration.html @@ -4,7 +4,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Cubic configuration for the Stewart Platform @@ -246,31 +246,16 @@ for the JavaScript code in this tag. } /*]]>*///--> - - + +
@@ -283,33 +268,46 @@ for the JavaScript code in this tag.

Table of Contents

@@ -318,28 +316,27 @@ for the JavaScript code in this tag.

The discovery of the Cubic configuration is done in geng94_six_degree_of_freed_activ. -Further analysis is conducted in jafari03_orthog_gough_stewar_platf_microm. +Further analysis is conducted in

-

-People using orthogonal/cubic configuration: preumont07_six_axis_singl_stage_activ. -

- -

The specificity of the Cubic configuration is that each actuator is orthogonal with the others.

-To generate and study the Cubic configuration, initializeCubicConfiguration is used (description in section 4). +The cubic (or orthogonal) configuration of the Stewart platform is now widely used (preumont07_six_axis_singl_stage_activ,jafari03_orthog_gough_stewar_platf_microm).

According to 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).

-
-

1 Questions we wish to answer with this analysis

+

+To generate and study the Cubic configuration, initializeCubicConfiguration is used (description in section 5). +

+ +
+

1 Questions we wish to answer with this analysis

The goal is to study the benefits of using a cubic configuration: @@ -352,20 +349,20 @@ The goal is to study the benefits of using a cubic configuration:

-
-

2 TODO Configuration Analysis - Stiffness Matrix

+
+

2 TODO Configuration Analysis - Stiffness Matrix

-
-

2.1 Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center

+
+

2.1 Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center

-We create a cubic Stewart platform (figure 1) in such a way that the center of the cube (black dot) is located at the center of the Stewart platform (blue dot). +We create a cubic Stewart platform (figure 1) 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.

-
+

3d-cubic-stewart-aligned.png

Figure 1: Centered cubic configuration

@@ -469,11 +466,11 @@ save('./mat/stewart.mat', -

2.2 Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center

+
+

2.2 Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center

-We create a cubic Stewart platform with center of the cube located at the center of the Stewart platform (figure 1). +We create a cubic Stewart platform with center of the cube located at the center of the Stewart platform (figure 1). The Jacobian matrix is not estimated at the location of the center of the cube.

@@ -573,16 +570,16 @@ stewart = computeGeometricalProperties(stewart, opts);
-
-

2.3 Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center

+
+

2.3 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 2). +Here, the “center” of the Stewart platform is not at the cube center (figure 2). The Jacobian is estimated at the cube center.

-
+

3d-cubic-stewart-misaligned.png

Figure 2: Not centered cubic configuration

@@ -695,8 +692,8 @@ We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiff
-
-

2.4 Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center

+
+

2.4 Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center

Here, the “center” of the Stewart platform is not at the cube center. @@ -810,8 +807,8 @@ We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiff

-
-

2.5 Conclusion

+
+

2.5 Conclusion

    @@ -824,8 +821,8 @@ We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiff
-
-

3 TODO Cubic size analysis

+
+

3 TODO Cubic size analysis

We here study the effect of the size of the cube used for the Stewart configuration. @@ -900,7 +897,7 @@ xlabel('Cube Size [mm]'); ylabel( +

stiffness_cube_size.png

Figure 3: \(k_{\theta_x} = k_{\theta_y}\) and \(k_{\theta_z}\) function of the size of the cube

@@ -921,17 +918,143 @@ In that case, the legs will the further separated. Size of the cube is then limi
-
-

4 TODO initializeCubicConfiguration

+
+

4 Functions

- +

-
-

4.1 Function description

+
+

4.1 generateCubicConfiguration: Generate a Cubic Configuration

+

+ +

+ +

+This Matlab function is accessible here. +

+
+ +
+

Function description

+
+
+
function [stewart] = generateCubicConfiguration(stewart, args)
+% generateCubicConfiguration - Generate a Cubic Configuration
+%
+% Syntax: [stewart] = generateCubicConfiguration(stewart, args)
+%
+% Inputs:
+%    - stewart - A structure with the following fields
+%        - H   [1x1] - Total height of the platform [m]
+%    - args - Can have the following fields:
+%        - Hc  [1x1] - Height of the "useful" part of the cube [m]
+%        - FOc [1x1] - Height of the center of the cube with respect to {F} [m]
+%        - FHa [1x1] - Height of the plane joining the points ai with respect to the frame {F} [m]
+%        - MHb [1x1] - Height of the plane joining the points bi with respect to the frame {M} [m]
+%
+% Outputs:
+%    - stewart - updated Stewart structure with the added fields:
+%        - Fa  [3x6] - Its i'th column is the position vector of joint ai with respect to {F}
+%        - Mb  [3x6] - Its i'th column is the position vector of joint bi with respect to {M}
+
+
+
+
+ +
+

Documentation

+
+ +
+

cubic-configuration-definition.png +

+

Figure 4: Cubic Configuration

+
+
+
+ +
+

Optional Parameters

+
+
+
arguments
+    stewart
+    args.Hc  (1,1) double {mustBeNumeric, mustBePositive} = 60e-3
+    args.FOc (1,1) double {mustBeNumeric} = 50e-3
+    args.FHa (1,1) double {mustBeNumeric, mustBePositive} = 15e-3
+    args.MHb (1,1) double {mustBeNumeric, mustBePositive} = 15e-3
+end
+
+
+
+
+ +
+

Position of the Cube

+
+

+We define the useful points of the cube with respect to the Cube’s center. +\({}^{C}C\) are the 6 vertices of the cubes expressed in a frame {C} which is +located at the center of the cube and aligned with {F} and {M}. +

+ +
+
sx = [ 2; -1; -1];
+sy = [ 0;  1; -1];
+sz = [ 1;  1;  1];
+
+R = [sx, sy, sz]./vecnorm([sx, sy, sz]);
+
+L = args.Hc*sqrt(3);
+
+Cc = R'*[[0;0;L],[L;0;L],[L;0;0],[L;L;0],[0;L;0],[0;L;L]] - [0;0;1.5*args.Hc];
+
+CCf = [Cc(:,1), Cc(:,3), Cc(:,3), Cc(:,5), Cc(:,5), Cc(:,1)]; % CCf(:,i) corresponds to the bottom cube's vertice corresponding to the i'th leg
+CCm = [Cc(:,2), Cc(:,2), Cc(:,4), Cc(:,4), Cc(:,6), Cc(:,6)]; % CCm(:,i) corresponds to the top cube's vertice corresponding to the i'th leg
+
+
+
+
+ +
+

Compute the pose

+
+

+We can compute the vector of each leg \({}^{C}\hat{\bm{s}}_{i}\) (unit vector from \({}^{C}C_{f}\) to \({}^{C}C_{m}\)). +

+
+
CSi = (CCm - CCf)./vecnorm(CCm - CCf);
+
+
+ +

+We now which to compute the position of the joints \(a_{i}\) and \(b_{i}\). +

+
+
stewart.Fa = CCf + [0; 0; args.FOc] + ((args.FHa-(args.FOc-args.Hc/2))./CSi(3,:)).*CSi;
+stewart.Mb = CCf + [0; 0; args.FOc-stewart.H] + ((stewart.H-args.MHb-(args.FOc-args.Hc/2))./CSi(3,:)).*CSi;
+
+
+
+
+
+
+ +
+

5 TODO initializeCubicConfiguration

+
+

+ +

+
+ +
+

5.1 Function description

+
function [stewart] = initializeCubicConfiguration(opts_param)
 
@@ -939,9 +1062,9 @@ In that case, the legs will the further separated. Size of the cube is then limi
-
-

4.2 Optional Parameters

-
+
+

5.2 Optional Parameters

+

Default values for opts.

@@ -969,9 +1092,9 @@ Populate opts with input parameters
-
-

4.3 Cube Creation

-
+
+

5.3 Cube Creation

+
points = [0, 0, 0; ...
           0, 0, 1; ...
@@ -1015,9 +1138,9 @@ We use to rotation matrix to rotate the cube
 
-
-

4.4 Vectors of each leg

-
+
+

5.4 Vectors of each leg

+
leg_indices = [3, 4; ...
                2, 4; ...
@@ -1044,9 +1167,9 @@ legs_start = zeros(6, 3);
 
-
-

4.5 Verification of Height of the Stewart Platform

-
+
+

5.5 Verification of Height of the Stewart Platform

+

If the Stewart platform is not contained in the cube, throw an error.

@@ -1064,9 +1187,9 @@ If the Stewart platform is not contained in the cube, throw an error.
-
-

4.6 Determinate the location of the joints

-
+
+

5.6 Determinate the location of the joints

+

We now determine the location of the joints on the fixed platform w.r.t the fixed frame \(\{A\}\). \(\{A\}\) is fixed to the bottom of the base. @@ -1110,9 +1233,9 @@ Ab = Ab - h*[0, 0, 1

-
-

4.7 Returns Stewart Structure

-
+
+

5.7 Returns Stewart Structure

+
  stewart = struct();
   stewart.Aa = Aa;
@@ -1126,18 +1249,18 @@ Ab = Ab - h*[0, 0, 1
 
-
-

5 TODO Tests

-
+
+

6 TODO Tests

+
-
-

5.1 First attempt to parametrisation

-
+
+

6.1 First attempt to parametrisation

+
-
+

stewart_bottom_plate.png

-

Figure 4: Schematic of the bottom plates with all the parameters

+

Figure 5: Schematic of the bottom plates with all the parameters

@@ -1169,9 +1292,9 @@ Lets express \(a_i\), \(b_i\) and \(a_j\):

-
-

5.2 Second attempt

-
+
+

6.2 Second attempt

+

We start with the point of a cube in space:

@@ -1297,9 +1420,9 @@ Let’s then estimate the middle position of the platform
-
-

5.3 Generate the Stewart platform for a Cubic configuration

-
+
+

6.3 Generate the Stewart platform for a Cubic configuration

+

First we defined the height of the Hexapod.

@@ -1360,15 +1483,15 @@ zlim([0, 2]);

Bibliography

-
  • [geng94_six_degree_of_freed_activ] Geng & Haynes, Six Degree-Of-Freedom Active Vibration Control Using the Stewart Platforms, IEEE Transactions on Control Systems Technology, 2(1), 45-53 (1994). link. doi.
  • +
    • [geng94_six_degree_of_freed_activ] Geng & Haynes, Six Degree-Of-Freedom Active Vibration Control Using the Stewart Platforms, IEEE Transactions on Control Systems Technology, 2(1), 45-53 (1994). link. doi.
    • +
    • [preumont07_six_axis_singl_stage_activ] Preumont, Horodinca, Romanescu, de Marneffe, Avraam, Deraemaeker, Bossens & Abu Hanieh, A Six-Axis Single-Stage Active Vibration Isolator Based on Stewart Platform, Journal of Sound and Vibration, 300(3-5), 644-661 (2007). link. doi.
    • [jafari03_orthog_gough_stewar_platf_microm] Jafari & McInroy, Orthogonal Gough-Stewart Platforms for Micromanipulation, IEEE Transactions on Robotics and Automation, 19(4), 595-603 (2003). link. doi.
    • -
    • [preumont07_six_axis_singl_stage_activ] Preumont, Horodinca, Romanescu, de, Marneffe, Avraam, Deraemaeker, Bossens, & Abu Hanieh, A Six-Axis Single-Stage Active Vibration Isolator Based on Stewart Platform, Journal of Sound and Vibration, 300(3-5), 644-661 (2007). link. doi.

Author: Dehaeze Thomas

-

Created: 2020-01-27 lun. 17:41

+

Created: 2020-02-06 jeu. 17:25

diff --git a/cubic-configuration.org b/cubic-configuration.org index da10245..e48721c 100644 --- a/cubic-configuration.org +++ b/cubic-configuration.org @@ -22,19 +22,18 @@ :END: * Introduction :ignore: -The discovery of the Cubic configuration is done in citenum:geng94_six_degree_of_freed_activ. -Further analysis is conducted in cite:jafari03_orthog_gough_stewar_platf_microm. - -People using orthogonal/cubic configuration: cite:preumont07_six_axis_singl_stage_activ. - +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. -To generate and study the Cubic configuration, =initializeCubicConfiguration= is used (description in section [[sec:initializeCubicConfiguration]]). +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). -* Matlab Init :noexport:ignore: +To generate and study the Cubic configuration, =initializeCubicConfiguration= is used (description in section [[sec:initializeCubicConfiguration]]). + +* Matlab Init :noexport:ignore: #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) <> #+end_src @@ -304,6 +303,103 @@ We observe that $k_{\theta_x} = k_{\theta_y}$ and $k_{\theta_z}$ increase linear In that case, the legs will the further separated. Size of the cube is then limited by allowed space. #+end_important +* Functions +<> + +** =generateCubicConfiguration=: Generate a Cubic Configuration +:PROPERTIES: +:header-args:matlab+: :tangle src/generateCubicConfiguration.m +:header-args:matlab+: :comments none :mkdirp yes :eval no +:END: +<> + +This Matlab function is accessible [[file:src/generateCubicConfiguration.m][here]]. + +*** Function description +:PROPERTIES: +:UNNUMBERED: t +:END: +#+begin_src matlab + function [stewart] = generateCubicConfiguration(stewart, args) + % generateCubicConfiguration - Generate a Cubic Configuration + % + % Syntax: [stewart] = generateCubicConfiguration(stewart, args) + % + % Inputs: + % - stewart - A structure with the following fields + % - H [1x1] - Total height of the platform [m] + % - args - Can have the following fields: + % - Hc [1x1] - Height of the "useful" part of the cube [m] + % - FOc [1x1] - Height of the center of the cube with respect to {F} [m] + % - FHa [1x1] - Height of the plane joining the points ai with respect to the frame {F} [m] + % - MHb [1x1] - Height of the plane joining the points bi with respect to the frame {M} [m] + % + % Outputs: + % - stewart - updated Stewart structure with the added fields: + % - Fa [3x6] - Its i'th column is the position vector of joint ai with respect to {F} + % - Mb [3x6] - Its i'th column is the position vector of joint bi with respect to {M} +#+end_src + +*** Documentation +:PROPERTIES: +:UNNUMBERED: t +:END: +#+name: fig:cubic-configuration-definition +#+caption: Cubic Configuration +[[file:figs/cubic-configuration-definition.png]] + +*** Optional Parameters +:PROPERTIES: +:UNNUMBERED: t +:END: +#+begin_src matlab + arguments + stewart + args.Hc (1,1) double {mustBeNumeric, mustBePositive} = 60e-3 + args.FOc (1,1) double {mustBeNumeric} = 50e-3 + args.FHa (1,1) double {mustBeNumeric, mustBePositive} = 15e-3 + args.MHb (1,1) double {mustBeNumeric, mustBePositive} = 15e-3 + end +#+end_src + +*** Position of the Cube +:PROPERTIES: +:UNNUMBERED: t +:END: +We define the useful points of the cube with respect to the Cube's center. +${}^{C}C$ are the 6 vertices of the cubes expressed in a frame {C} which is +located at the center of the cube and aligned with {F} and {M}. + +#+begin_src matlab + sx = [ 2; -1; -1]; + sy = [ 0; 1; -1]; + sz = [ 1; 1; 1]; + + R = [sx, sy, sz]./vecnorm([sx, sy, sz]); + + L = args.Hc*sqrt(3); + + Cc = R'*[[0;0;L],[L;0;L],[L;0;0],[L;L;0],[0;L;0],[0;L;L]] - [0;0;1.5*args.Hc]; + + CCf = [Cc(:,1), Cc(:,3), Cc(:,3), Cc(:,5), Cc(:,5), Cc(:,1)]; % CCf(:,i) corresponds to the bottom cube's vertice corresponding to the i'th leg + CCm = [Cc(:,2), Cc(:,2), Cc(:,4), Cc(:,4), Cc(:,6), Cc(:,6)]; % CCm(:,i) corresponds to the top cube's vertice corresponding to the i'th leg +#+end_src + +*** Compute the pose +:PROPERTIES: +:UNNUMBERED: t +:END: +We can compute the vector of each leg ${}^{C}\hat{\bm{s}}_{i}$ (unit vector from ${}^{C}C_{f}$ to ${}^{C}C_{m}$). +#+begin_src matlab + CSi = (CCm - CCf)./vecnorm(CCm - CCf); +#+end_src + +We now which to compute the position of the joints $a_{i}$ and $b_{i}$. +#+begin_src matlab + stewart.Fa = CCf + [0; 0; args.FOc] + ((args.FHa-(args.FOc-args.Hc/2))./CSi(3,:)).*CSi; + stewart.Mb = CCf + [0; 0; args.FOc-stewart.H] + ((stewart.H-args.MHb-(args.FOc-args.Hc/2))./CSi(3,:)).*CSi; +#+end_src + * TODO initializeCubicConfiguration :PROPERTIES: :HEADER-ARGS:matlab+: :exports code @@ -615,5 +711,5 @@ And we plot the legs. #+end_src * Bibliography :ignore: -bibliographystyle:unsrt +bibliographystyle:unsrtnat bibliography:ref.bib diff --git a/stewart-architecture.html b/stewart-architecture.html index 30725ac..2818386 100644 --- a/stewart-architecture.html +++ b/stewart-architecture.html @@ -4,7 +4,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Stewart Platform - Definition of the Architecture @@ -247,15 +247,15 @@ for the JavaScript code in this tag. /*]]>*///--> - + }; + +
@@ -268,102 +268,93 @@ for the JavaScript code in this tag.

Table of Contents

-
-
- -
-

Documentation

-
- -
-

cubic-configuration-definition.png -

-

Figure 6: Cubic Configuration

-
-
-
- -
-

Optional Parameters

-
-
-
arguments
-    stewart
-    args.Hc  (1,1) double {mustBeNumeric, mustBePositive} = 60e-3
-    args.FOc (1,1) double {mustBeNumeric} = 50e-3
-    args.FHa (1,1) double {mustBeNumeric, mustBePositive} = 15e-3
-    args.MHb (1,1) double {mustBeNumeric, mustBePositive} = 15e-3
-end
-
-
-
-
- -
-

Position of the Cube

-
-

-We define the useful points of the cube with respect to the Cube’s center. -\({}^{C}C\) are the 6 vertices of the cubes expressed in a frame {C} which is -located at the center of the cube and aligned with {F} and {M}. -

- -
-
sx = [ 2; -1; -1];
-sy = [ 0;  1; -1];
-sz = [ 1;  1;  1];
-
-R = [sx, sy, sz]./vecnorm([sx, sy, sz]);
-
-L = args.Hc*sqrt(3);
-
-Cc = R'*[[0;0;L],[L;0;L],[L;0;0],[L;L;0],[0;L;0],[0;L;L]] - [0;0;1.5*args.Hc];
-
-CCf = [Cc(:,1), Cc(:,3), Cc(:,3), Cc(:,5), Cc(:,5), Cc(:,1)]; % CCf(:,i) corresponds to the bottom cube's vertice corresponding to the i'th leg
-CCm = [Cc(:,2), Cc(:,2), Cc(:,4), Cc(:,4), Cc(:,6), Cc(:,6)]; % CCm(:,i) corresponds to the top cube's vertice corresponding to the i'th leg
-
-
-
-
- -
-

Compute the pose

-
-

-We can compute the vector of each leg \({}^{C}\hat{\bm{s}}_{i}\) (unit vector from \({}^{C}C_{f}\) to \({}^{C}C_{m}\)). -

-
-
CSi = (CCm - CCf)./vecnorm(CCm - CCf);
-
-
- -

-We now which to compute the position of the joints \(a_{i}\) and \(b_{i}\). -

-
-
stewart.Fa = CCf + [0; 0; args.FOc] + ((args.FHa-(args.FOc-args.Hc/2))./CSi(3,:)).*CSi;
-stewart.Mb = CCf + [0; 0; args.FOc-stewart.H] + ((stewart.H-args.MHb-(args.FOc-args.Hc/2))./CSi(3,:)).*CSi;
-
-
-
-
-
- -
-

5.3 generateGeneralConfiguration: Generate a Very General Configuration

-
-

- +

@@ -943,9 +821,9 @@ This Matlab function is accessible

-
-

Function description

-
+
+

Function description

+
-
-

Documentation

-
+ -
-

Optional Parameters

-
+
+

Optional Parameters

+
arguments
     stewart
@@ -998,9 +883,9 @@ The radius of the circles can be chosen as well as the angles where the joints a
 
-
-

Compute the pose

-
+
+

Compute the pose

+
stewart.Fa = zeros(3,6);
 stewart.Mb = zeros(3,6);
@@ -1018,11 +903,11 @@ stewart.Mb = zeros(3,6);
 
-
-

5.4 computeJointsPose: Compute the Pose of the Joints

-
+
+

5.3 computeJointsPose: Compute the Pose of the Joints

+

- +

@@ -1030,9 +915,9 @@ This Matlab function is accessible here.

-
-

Function description

-
+
+

Function description

+
function [stewart] = computeJointsPose(stewart)
 % computeJointsPose -
@@ -1063,11 +948,11 @@ This Matlab function is accessible here.
 
-
-

Documentation

-
+
+

Documentation

+
-
+

stewart-struts.png

Figure 7: Position and orientation of the struts

@@ -1075,9 +960,9 @@ This Matlab function is accessible here.
-
-

Compute the position of the Joints

-
+
+

Compute the position of the Joints

+
stewart.Aa = stewart.Fa - repmat(stewart.FO_A, [1, 6]);
 stewart.Bb = stewart.Mb - repmat(stewart.MO_B, [1, 6]);
@@ -1089,9 +974,9 @@ stewart.Ba = stewart.Aa - repmat( stewart.MO_B
 
-
-

Compute the strut length and orientation

-
+
+

Compute the strut length and orientation

+
stewart.As = (stewart.Ab - stewart.Aa)./vecnorm(stewart.Ab - stewart.Aa); % As_i is the i'th vector of As
 
@@ -1106,9 +991,9 @@ stewart.l = vecnorm(stewart.Ab - stewart.Aa)
 
-
-

Compute the orientation of the Joints

-
+
+

Compute the orientation of the Joints

+
stewart.FRa = zeros(3,3,6);
 stewart.MRb = zeros(3,3,6);
@@ -1126,11 +1011,11 @@ stewart.MRb = zeros(3,3,6);
 
-
-

5.5 initializeStewartPose: Determine the initial stroke in each leg to have the wanted pose

-
+
+

5.4 initializeStewartPose: Determine the initial stroke in each leg to have the wanted pose

+

- +

@@ -1138,9 +1023,9 @@ This Matlab function is accessible here

-
-

Function description

-
+
+

Function description

+
function [stewart] = initializeStewartPose(stewart, args)
 % initializeStewartPose - Determine the initial stroke in each leg to have the wanted pose
@@ -1164,9 +1049,9 @@ This Matlab function is accessible here
 
-
-

Optional Parameters

-
+
+

Optional Parameters

+
arguments
     stewart
@@ -1178,9 +1063,9 @@ This Matlab function is accessible here
 
-
-

Use the Inverse Kinematic function

-
+
+

Use the Inverse Kinematic function

+
[Li, dLi] = inverseKinematics(stewart, 'AP', args.AP, 'ARB', args.ARB);
 
@@ -1191,11 +1076,11 @@ stewart.dLi = dLi;
 
-
-

5.6 initializeCylindricalPlatforms: Initialize the geometry of the Fixed and Mobile Platforms

-
+
+

5.5 initializeCylindricalPlatforms: Initialize the geometry of the Fixed and Mobile Platforms

+

- +

@@ -1203,9 +1088,9 @@ This Matlab function is accessible -

Function description

-
+
+

Function description

+
function [stewart] = initializeCylindricalPlatforms(stewart, args)
 % initializeCylindricalPlatforms - Initialize the geometry of the Fixed and Mobile Platforms
@@ -1237,9 +1122,9 @@ This Matlab function is accessible 
-

Optional Parameters

-
+
+

Optional Parameters

+
arguments
     stewart
@@ -1255,9 +1140,9 @@ This Matlab function is accessible 
-

Create the platforms struct

-
+
+

Create the platforms struct

+
platforms = struct();
 
@@ -1279,9 +1164,9 @@ platforms.Mpi = diag([1/12 
 
-
-

Save the platforms struct

-
+
+

Save the platforms struct

+
stewart.platforms = platforms;
 
@@ -1290,11 +1175,11 @@ platforms.Mpi = diag([1/12
-
-

5.7 initializeCylindricalStruts: Define the inertia of cylindrical struts

-
+
+

5.6 initializeCylindricalStruts: Define the inertia of cylindrical struts

+

- +

@@ -1302,9 +1187,9 @@ This Matlab function is accessible h

-
-

Function description

-
+
+

Function description

+
-
-

Optional Parameters

-
+
+

Optional Parameters

+
-
-

Create the struts structure

-
+
+

Create the struts structure

+
struts = struct();
 
@@ -1389,11 +1274,11 @@ struts.Msi = zeros(3, 3, 6);
 
-
-

5.8 initializeStrutDynamics: Add Stiffness and Damping properties of each strut

-
+
+

5.7 initializeStrutDynamics: Add Stiffness and Damping properties of each strut

+

- +

@@ -1401,9 +1286,9 @@ This Matlab function is accessible here<

-
-

Function description

-
+
+

Function description

+
-
-

Optional Parameters

-
+
+

Optional Parameters

+
-
-

Add Stiffness and Damping properties of each strut

-
+
+

Add Stiffness and Damping properties of each strut

+
stewart.Ki = args.Ki;
 stewart.Ci = args.Ci;
@@ -1450,11 +1335,11 @@ stewart.Ci = args.Ci;
 
-
-

5.9 initializeJointDynamics: Add Stiffness and Damping properties for spherical joints

-
+
+

5.8 initializeJointDynamics: Add Stiffness and Damping properties for spherical joints

+

- +

@@ -1462,9 +1347,9 @@ This Matlab function is accessible here<

-
-

Function description

-
+
+

Function description

+
function [stewart] = initializeJointDynamics(stewart, args)
 % initializeJointDynamics - Add Stiffness and Damping properties for the spherical joints
@@ -1473,46 +1358,65 @@ This Matlab function is accessible here<
 %
 % Inputs:
 %    - args - Structure with the following fields:
-%        - Kbi [6x1] - Rotational Stiffness for each top spherical joints [N/rad]
-%        - Cbi [6x1] - Damping of each top spherical joint [N/(rad/s)]
-%        - Kti [6x1] - Rotational Stiffness for each bottom universal joints [N/rad]
-%        - Cti [6x1] - Damping of each bottom universal joint [N/(rad/s)]
+%        - Ksbi [6x1] - Bending (Rx, Ry) Stiffness for each top Spherical joints [N/rad]
+%        - Csbi [6x1] - Bending (Rx, Ry) Damping of each top Spherical joint [N/(rad/s)]
+%        - Ksti [6x1] - Torsion (Rz) Stiffness for each top Spherical joints [N/rad]
+%        - Csti [6x1] - Torsion (Rz) Damping of each top Spherical joint [N/(rad/s)]
+%        - Kubi [6x1] - Bending (Rx, Ry) Stiffness for each bottom Universal joints [N/rad]
+%        - Cubi [6x1] - Bending (Rx, Ry) Damping of each bottom Universal joint [N/(rad/s)]
+%        - disable [true/false] - Sets all the stiffness/damping to zero
 %
 % Outputs:
 %    - stewart - updated Stewart structure with the added fields:
-%        - Kbi [6x1] - Rotational Stiffness for each top spherical joints [N/rad]
-%        - Cbi [6x1] - Damping of each top spherical joint [N/(rad/s)]
-%        - Kti [6x1] - Rotational Stiffness for each bottom universal joints [N/rad]
-%        - Cti [6x1] - Damping of each bottom universal joint [N/(rad/s)]
+%        - Ksbi [6x1] - Bending (Rx, Ry) Stiffness for each top Spherical joints [N/rad]
+%        - Csbi [6x1] - Bending (Rx, Ry) Damping of each top Spherical joint [N/(rad/s)]
+%        - Ksti [6x1] - Torsion (Rz) Stiffness for each top Spherical joints [N/rad]
+%        - Csti [6x1] - Torsion (Rz) Damping of each top Spherical joint [N/(rad/s)]
+%        - Kubi [6x1] - Bending (Rx, Ry) Stiffness for each bottom Universal joints [N/rad]
+%        - Cubi [6x1] - Bending (Rx, Ry) Damping of each bottom Universal joint [N/(rad/s)]
 
-
-

Optional Parameters

-
+
+

Optional Parameters

+
arguments
     stewart
-    args.Kti (6,1) double {mustBeNumeric, mustBeNonnegative} = zeros(6,1)
-    args.Cti (6,1) double {mustBeNumeric, mustBeNonnegative} = zeros(6,1)
-    args.Kbi (6,1) double {mustBeNumeric, mustBeNonnegative} = zeros(6,1)
-    args.Cbi (6,1) double {mustBeNumeric, mustBeNonnegative} = zeros(6,1)
+    args.Ksbi (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e+1*ones(6,1)
+    args.Csbi (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1)
+    args.Ksti (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e+0*ones(6,1)
+    args.Csti (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-3*ones(6,1)
+    args.Kubi (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e+1*ones(6,1)
+    args.Cubi (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1)
+    args.disable logical {mustBeNumericOrLogical} = false
 end
 
-
-

Add Stiffness and Damping properties of each strut

-
+
+

Add Stiffness and Damping properties of each strut

+
-
stewart.Kti = args.Kti;
-stewart.Cti = args.Cti;
-stewart.Kbi = args.Kbi;
-stewart.Cbi = args.Cbi;
+
if args.disable
+  stewart.Ksbi = zeros(6,1);
+  stewart.Csbi = zeros(6,1);
+  stewart.Ksti = zeros(6,1);
+  stewart.Csti = zeros(6,1);
+  stewart.Kubi = zeros(6,1);
+  stewart.Cubi = zeros(6,1);
+else
+  stewart.Ksbi = args.Ksbi;
+  stewart.Csbi = args.Csbi;
+  stewart.Ksti = args.Ksti;
+  stewart.Csti = args.Csti;
+  stewart.Kubi = args.Kubi;
+  stewart.Cubi = args.Cubi;
+end
 
@@ -1529,7 +1433,7 @@ stewart.Cbi = args.Cbi;

Author: Dehaeze Thomas

-

Created: 2020-01-29 mer. 16:49

+

Created: 2020-02-06 jeu. 17:25

diff --git a/stewart-architecture.org b/stewart-architecture.org index 553b2d5..d657f53 100644 --- a/stewart-architecture.org +++ b/stewart-architecture.org @@ -18,6 +18,18 @@ #+PROPERTY: header-args:matlab+ :noweb yes #+PROPERTY: header-args:matlab+ :mkdirp yes #+PROPERTY: header-args:matlab+ :output-dir figs + +#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/}{config.tex}") +#+PROPERTY: header-args:latex+ :imagemagick t :fit yes +#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 +#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 +#+PROPERTY: header-args:latex+ :results file raw replace +#+PROPERTY: header-args:latex+ :buffer no +#+PROPERTY: header-args:latex+ :eval no-export +#+PROPERTY: header-args:latex+ :exports results +#+PROPERTY: header-args:latex+ :mkdirp yes +#+PROPERTY: header-args:latex+ :output-dir figs +#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png") :END: * Introduction :ignore: @@ -82,10 +94,12 @@ Then, we define the *location of the spherical joints* (see Figure [[fig:joint_l The location of the joints will define the Geometry of the Stewart platform. Many characteristics of the platform depend on the location of the joints. -The location of the joints can be set to arbitrary positions (function =generateGeneralConfiguration= described [[sec:generateGeneralConfiguration][here]]) or can be computed to obtain specific configurations such as: -- A cubic configuration: function =generateCubicConfiguration= ([[sec:generateCubicConfiguration][link]]). +The location of the joints can be set to arbitrary positions or it can be computed to obtain specific configurations such as: +- A cubic configuration: function =generateCubicConfiguration= (described in [[file:cubic-configuration.org][this]] file) - A symmetrical configuration +A function (=generateGeneralConfiguration=) to set the position of the joints on a circle is described [[sec:generateGeneralConfiguration][here]]. + The location of the spherical joints are then given by ${}^{F}\bm{a}_{i}$ and ${}^{M}\bm{b}_{i}$. #+name: fig:joint_location @@ -421,7 +435,55 @@ This Matlab function is accessible [[file:src/generateGeneralConfiguration.m][he :UNNUMBERED: t :END: Joints are positions on a circle centered with the Z axis of {F} and {M} and at a chosen distance from {F} and {M}. -The radius of the circles can be chosen as well as the angles where the joints are located. +The radius of the circles can be chosen as well as the angles where the joints are located (see Figure [[fig:joint_position_general]]). + +#+begin_src latex :file stewart_bottom_plate.pdf :exports results + \begin{tikzpicture} + % Internal and external limit + \draw[fill=white!80!black] (0, 0) circle [radius=3]; + % Circle where the joints are located + \draw[dashed] (0, 0) circle [radius=2.5]; + + % Bullets for the positions of the joints + \node[] (J1) at ( 80:2.5){$\bullet$}; + \node[] (J2) at (100:2.5){$\bullet$}; + \node[] (J3) at (200:2.5){$\bullet$}; + \node[] (J4) at (220:2.5){$\bullet$}; + \node[] (J5) at (320:2.5){$\bullet$}; + \node[] (J6) at (340:2.5){$\bullet$}; + + % Name of the points + \node[above right] at (J1) {$a_{1}$}; + \node[above left] at (J2) {$a_{2}$}; + \node[above left] at (J3) {$a_{3}$}; + \node[right ] at (J4) {$a_{4}$}; + \node[left ] at (J5) {$a_{5}$}; + \node[above right] at (J6) {$a_{6}$}; + + % First 2 angles + \draw[dashed, ->] (0:1) arc [start angle=0, end angle=80, radius=1] node[below right]{$\theta_{1}$}; + \draw[dashed, ->] (0:1.5) arc [start angle=0, end angle=100, radius=1.5] node[left ]{$\theta_{2}$}; + + % Division of 360 degrees by 3 + \draw[dashed] (0, 0) -- ( 80:3.2); + \draw[dashed] (0, 0) -- (100:3.2); + \draw[dashed] (0, 0) -- (200:3.2); + \draw[dashed] (0, 0) -- (220:3.2); + \draw[dashed] (0, 0) -- (320:3.2); + \draw[dashed] (0, 0) -- (340:3.2); + + % Radius for the position of the joints + \draw[<->] (0, 0) --node[near end, above]{$R$} (180:2.5); + + \draw[->] (0, 0) -- ++(3.4, 0) node[above]{$x$}; + \draw[->] (0, 0) -- ++(0, 3.4) node[left]{$y$}; + \end{tikzpicture} +#+end_src + +#+name: fig:joint_position_general +#+caption: Position of the joints +#+RESULTS: +[[file:figs/stewart_bottom_plate.png]] *** Optional Parameters :PROPERTIES: