From 69130d746c02edd266e0c6320b557b32a897e34d Mon Sep 17 00:00:00 2001 From: Thomas Dehaeze Date: Fri, 7 Feb 2020 17:12:26 +0100 Subject: [PATCH] Add function to display the Stewart configuration --- figs/stewart_architecture_example.pdf | Bin 0 -> 49283 bytes figs/stewart_architecture_example.png | Bin 0 -> 37449 bytes figs/stewart_architecture_example_pose.pdf | Bin 0 -> 46779 bytes figs/stewart_architecture_example_pose.png | Bin 0 -> 29132 bytes src/displayArchitecture.m | 171 +++++ stewart-architecture.html | 833 +++++++++++++++------ stewart-architecture.org | 306 +++++++- 7 files changed, 1079 insertions(+), 231 deletions(-) create mode 100644 figs/stewart_architecture_example.pdf create mode 100644 figs/stewart_architecture_example.png create mode 100644 figs/stewart_architecture_example_pose.pdf create mode 100644 figs/stewart_architecture_example_pose.png create mode 100644 src/displayArchitecture.m diff --git a/figs/stewart_architecture_example.pdf b/figs/stewart_architecture_example.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ab3e1034ff3141a748e656f2fe28a4175b28956c GIT binary patch literal 49283 zcmX_mV{~Op*L7@kY^P(}c1I_+ZQHh!KC#oW*|E{FJGO1-%f0t`zcJ2_J$9X{TD3U$ zT=iX1OoE=7ffMfg@L7BT-1qO&c5e2@hAx)&c09!9&cyVN#PlZe3W~z2%Hm&7BEl-7 zQpEJmV&ZDjqT>7xCT8wVmM*4WBVX$%i>s(e%S$TrGdeh#e*K)kraLRRx;VJHNLbpK z@(X_bOnHt-hm$ z;!8%{Iv4(mU*6eupSUI)x?@uLLBx+FS$zHUa_=wj5#Q}+VQ*TRAvim7*mCLn&$Ce> zy=v*Sy`T9&JZ49%<4Jhk#_Qx_o1xP)m80KF>0=jKT)*G>E)SGoW1>fVPN%zQ@r$EN zqQ_6*Hvt*R=qqL(vr|0Z$I>=8TZ2lXCIsJ>C7+)e7Qn448J{IoSMwyIYJ7Z7n4)ACy-?>$*mjkX z-Jk(x)~#V!C8x*l5Jdr$8c{ss z3p%|;zpr}p+-aVapj=F9G4&U^H(6z8cv0REihDnXMIDpvE41*2zP748e6jo^+TS+~rJz`^TX= z9>*=>*l1;dnjM@m%pgL{MHN!@n>nhz?}7GVSp7mq5L5md<}t2KUnhq8yZjdaKL<5F zIm`3?88h$V{tLOp$nsgEqB7ft?3$3@`!cLNp$H0HZR8xo%vwRAu z7rXLGTD|J$628N9ut2|1<_SQ^~`?xx0Bj(It}AvbqTrPK&bxURr*qgf zV8p|0T69RxY;@*pu~U^^&TouLB)7N|_dy;*%6qjyy}|7Nt%Xg% zDu6y7(@MVpo2);7GF{z0=kevEuY%oCu*Q~K8MZ6C&AaS>U-IAwweA&(1iyKnif;bq zL|+qk5r8O7SUt7*9R$|wCAadQ&j;3P{u-V!yQ}smCRc8l!7KjuPxvP19d01b*$|=5 zB~>M_LNt*MM>p|!z+U}(pmn_Rl6a|bKbXh(Zj$>-R$!A=IMqtTe+rK}Cts@!whVq9 zb6n2nE>%s^uxHyKv$$MWY&+o{&U61Ha(bc}xY=~UG8Io}1HOV#;GEU7R zRX2{~-`(s>GaT=cRd#S5Da84EGe^{_{=Z9>s}#l(^{Kwv62=OV!Bn;SpOJ4AnqRId z{ypeOSQwU+ZrNWEgJb}29CO;^hMTz+j8)~ zS#Z&=YMS&e7HZ<=c5@6YiS+0u%Ti7-E)ojb%uF&63_zQV)pV~OSOj@20ss_bq#SHJCym)q?3rdlm$jiD^BovdkKr+zBpe|K$!2S!J0FU z4gC=0&=AT(4@xK&J=Ch@fB@6bd}6Cgt*Z^q__%Dfjd6h`9=cxUz+$JzC|EkL-wWJ;GeAr2L2gc* zH%gF6&NtI`k>cXVg{hH)z&2> !oHNRH%dN@VAP6TtD<4prE}aw%FsGmDNI3Hrl` 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 literal 0 HcmV?d00001 diff --git a/figs/stewart_architecture_example_pose.pdf b/figs/stewart_architecture_example_pose.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2173ca7f9fe69bd87e0ee7ab298909a40f51ae07 GIT binary patch literal 46779 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

Z0@&IrC3kdKC@c)%5@F!D3 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 Or1VZ*u3W}6;Qs(a%L{t| literal 0 HcmV?d00001 diff --git a/src/displayArchitecture.m b/src/displayArchitecture.m new file mode 100644 index 0000000..3aa2073 --- /dev/null +++ b/src/displayArchitecture.m @@ -0,0 +1,171 @@ +function [] = displayArchitecture(stewart, args) +% displayArchitecture - 3D plot of the Stewart platform architecture +% +% Syntax: [] = displayArchitecture(args) +% +% Inputs: +% - stewart +% - args - Structure with the following fields: +% - AP [3x1] - The wanted position of {B} with respect to {A} +% - ARB [3x3] - The rotation matrix that gives the wanted orientation of {B} with respect to {A} +% - ARB [3x3] - The rotation matrix that gives the wanted orientation of {B} with respect to {A} +% - frames [true/false] - Display the Frames +% - legs [true/false] - Display the Legs +% - joints [true/false] - Display the Joints +% - labels [true/false] - Display the Labels +% - platforms [true/false] - Display the Platforms +% +% Outputs: + +arguments + stewart + args.AP (3,1) double {mustBeNumeric} = zeros(3,1) + args.ARB (3,3) double {mustBeNumeric} = eye(3) + args.frames logical {mustBeNumericOrLogical} = true + args.legs logical {mustBeNumericOrLogical} = true + args.joints logical {mustBeNumericOrLogical} = true + args.labels logical {mustBeNumericOrLogical} = true + args.platforms logical {mustBeNumericOrLogical} = true +end + +figure; +hold on; + +FTa = [eye(3), stewart.FO_A; ... + zeros(1,3), 1]; +ATb = [args.ARB, args.AP; ... + zeros(1,3), 1]; +BTm = [eye(3), -stewart.MO_B; ... + zeros(1,3), 1]; + +FTm = FTa*ATb*BTm; + +d_unit_vector = stewart.H/4; + +d_label = stewart.H/20; + +Ff = [0, 0, 0]; +if args.frames + quiver3(Ff(1)*ones(1,3), Ff(2)*ones(1,3), Ff(3)*ones(1,3), ... + [d_unit_vector 0 0], [0 d_unit_vector 0], [0 0 d_unit_vector], '-', 'Color', [0 0.4470 0.7410]) + + if args.labels + text(Ff(1) + d_label, ... + Ff(2) + d_label, ... + Ff(3) + d_label, '$\{F\}$', 'Color', [0 0.4470 0.7410]); + end +end + +Fa = stewart.FO_A; + +if args.frames + quiver3(Fa(1)*ones(1,3), Fa(2)*ones(1,3), Fa(3)*ones(1,3), ... + [d_unit_vector 0 0], [0 d_unit_vector 0], [0 0 d_unit_vector], '-', 'Color', [0 0.4470 0.7410]) + + if args.labels + text(Fa(1) + d_label, ... + Fa(2) + d_label, ... + Fa(3) + d_label, '$\{A\}$', 'Color', [0 0.4470 0.7410]); + end +end + +if args.platforms && isfield(stewart, 'platforms') && isfield(stewart.platforms, 'Fpr') + theta = [0:0.01:2*pi+0.01]; % Angles [rad] + v = null([0; 0; 1]'); % Two vectors that are perpendicular to the circle normal + center = [0; 0; 0]; % Center of the circle + radius = stewart.platforms.Fpr; % Radius of the circle [m] + + points = center*ones(1, length(theta)) + radius*(v(:,1)*cos(theta) + v(:,2)*sin(theta)); + + plot3(points(1,:), ... + points(2,:), ... + points(3,:), '-', 'Color', [0 0.4470 0.7410]); +end + +if args.joints + scatter3(stewart.Fa(1,:), ... + stewart.Fa(2,:), ... + stewart.Fa(3,:), 'MarkerEdgeColor', [0 0.4470 0.7410]); + if args.labels + for i = 1:size(stewart.Fa,2) + text(stewart.Fa(1,i) + d_label, ... + stewart.Fa(2,i), ... + stewart.Fa(3,i), sprintf('$a_{%i}$', i), 'Color', [0 0.4470 0.7410]); + end + end +end + +Fm = FTm*[0; 0; 0; 1]; % Get the position of frame {M} w.r.t. {F} + +if args.frames + FM_uv = FTm*[d_unit_vector*eye(3); zeros(1,3)]; % Rotated Unit vectors + quiver3(Fm(1)*ones(1,3), Fm(2)*ones(1,3), Fm(3)*ones(1,3), ... + FM_uv(1,1:3), FM_uv(2,1:3), FM_uv(3,1:3), '-', 'Color', [0.8500 0.3250 0.0980]) + + if args.labels + text(Fm(1) + d_label, ... + Fm(2) + d_label, ... + Fm(3) + d_label, '$\{M\}$', 'Color', [0.8500 0.3250 0.0980]); + end +end + +FB = stewart.FO_A + args.AP; + +if args.frames + FB_uv = FTm*[d_unit_vector*eye(3); zeros(1,3)]; % Rotated Unit vectors + quiver3(FB(1)*ones(1,3), FB(2)*ones(1,3), FB(3)*ones(1,3), ... + FB_uv(1,1:3), FB_uv(2,1:3), FB_uv(3,1:3), '-', 'Color', [0.8500 0.3250 0.0980]) + + if args.labels + text(FB(1) - d_label, ... + FB(2) + d_label, ... + FB(3) + d_label, '$\{B\}$', 'Color', [0.8500 0.3250 0.0980]); + end +end + +if args.platforms && isfield(stewart, 'platforms') && isfield(stewart.platforms, 'Mpr') + theta = [0:0.01:2*pi+0.01]; % Angles [rad] + v = null((FTm(1:3,1:3)*[0;0;1])'); % Two vectors that are perpendicular to the circle normal + center = Fm(1:3); % Center of the circle + radius = stewart.platforms.Mpr; % Radius of the circle [m] + + points = center*ones(1, length(theta)) + radius*(v(:,1)*cos(theta) + v(:,2)*sin(theta)); + + plot3(points(1,:), ... + points(2,:), ... + points(3,:), '-', 'Color', [0.8500 0.3250 0.0980]); +end + +if args.joints + Fb = FTm*[stewart.Mb;ones(1,6)]; + + scatter3(Fb(1,:), ... + Fb(2,:), ... + Fb(3,:), 'MarkerEdgeColor', [0.8500 0.3250 0.0980]); + + if args.labels + for i = 1:size(Fb,2) + text(Fb(1,i) + d_label, ... + Fb(2,i), ... + Fb(3,i), sprintf('$b_{%i}$', i), 'Color', [0.8500 0.3250 0.0980]); + end + end +end + +if args.legs + for i = 1:6 + plot3([stewart.Fa(1,i), Fb(1,i)], ... + [stewart.Fa(2,i), Fb(2,i)], ... + [stewart.Fa(3,i), Fb(3,i)], 'k-'); + + if args.labels + text((stewart.Fa(1,i)+Fb(1,i))/2 + d_label, ... + (stewart.Fa(2,i)+Fb(2,i))/2, ... + (stewart.Fa(3,i)+Fb(3,i))/2, sprintf('$%i$', i), 'Color', 'k'); + end + end +end + +view([1 -0.6 0.4]); +axis equal; +axis off; diff --git a/stewart-architecture.html b/stewart-architecture.html index db59585..5bb168c 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 @@ -268,93 +268,104 @@ for the JavaScript code in this tag.

Table of Contents

The obtained stewart Matlab structure contains all the information for analysis of the Stewart platform and for simulations using Simscape.

+ +

+The function displayArchitecture can be used to display the current Stewart configuration: +

+
+
displayArchitecture(stewart);
+
+
+ + +
+ +

+There are many options to show or hides elements such as labels and frames. +The documentation of the function is available here. +

+ +

+Let’s now move a little bit the top platform and re-display the configuration: +

+
+
tx = 0.1; % [rad]
+ty = 0.2; % [rad]
+tz = 0.05; % [rad]
+
+Rx = [1 0        0;
+      0 cos(tx) -sin(tx);
+      0 sin(tx)  cos(tx)];
+
+Ry = [ cos(ty) 0 sin(ty);
+      0        1 0;
+      -sin(ty) 0 cos(ty)];
+
+Rz = [cos(tz) -sin(tz) 0;
+      sin(tz)  cos(tz) 0;
+      0        0       1];
+
+ARB = Rz*Ry*Rx;
+AP = [0.08; 0; 0]; % [m]
+
+displayArchitecture(stewart, 'AP', AP, 'ARB', ARB);
+view([0 -1 0]);
+
+
+ + +
+

stewart_architecture_example_pose.png +

+

Figure 6: Display of the Stewart platform architecture at some defined pose (png, pdf)

+
-
-

5 Functions

+
+

5 Functions

- +

-
-

5.1 initializeFramesPositions: Initialize the positions of frames {A}, {B}, {F} and {M}

+
+

5.1 initializeFramesPositions: Initialize the positions of frames {A}, {B}, {F} and {M}

- +

@@ -732,9 +798,9 @@ This Matlab function is accessible her

-
-

Function description

-
+
+

Function description

+
-
-

Documentation

-
+
+

Documentation

+
-
+

stewart-frames-position.png

-

Figure 5: Definition of the position of the frames

+

Figure 7: Definition of the position of the frames

-
-

Optional Parameters

-
+
+

Optional Parameters

+
-
-

Initialize the Stewart structure

-
+
+

Initialize the Stewart structure

+
-
-

Compute the position of each frame

-
+
+

Compute the position of each frame

+
stewart.H = args.H; % Total Height of the Stewart Platform [m]
 
@@ -809,11 +875,11 @@ stewart.FO_A = stewart.MO_B + stewart.FO_M; 
 
-
-

5.2 generateGeneralConfiguration: Generate a Very General Configuration

+
+

5.2 generateGeneralConfiguration: Generate a Very General Configuration

- +

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

-
-

Function description

-
+
+

Function description

+
-
-

Documentation

-
+
+

Documentation

+
-
-

Optional Parameters

-
+
+

Optional Parameters

+
arguments
     stewart
@@ -883,9 +949,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);
@@ -903,11 +969,11 @@ stewart.Mb = zeros(3,6);
 
-
-

5.3 computeJointsPose: Compute the Pose of the Joints

+
+

5.3 computeJointsPose: Compute the Pose of the Joints

- +

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

-
-

Function description

-
+
+

Function description

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

Documentation

-
+
+

Documentation

+
-
+

stewart-struts.png

-

Figure 7: Position and orientation of the struts

+

Figure 9: Position and orientation of the struts

-
-

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]);
@@ -974,9 +1040,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
 
@@ -991,9 +1057,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);
@@ -1011,11 +1077,11 @@ stewart.MRb = zeros(3,3,6);
 
-
-

5.4 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

- +

@@ -1023,9 +1089,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
@@ -1049,9 +1115,9 @@ This Matlab function is accessible here
 
-
-

Optional Parameters

-
+
+

Optional Parameters

+
arguments
     stewart
@@ -1063,9 +1129,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);
 
@@ -1076,11 +1142,11 @@ stewart.dLi = dLi;
 
-
-

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

+
+

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

- +

@@ -1088,9 +1154,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
@@ -1122,9 +1188,9 @@ This Matlab function is accessible 
-

Optional Parameters

-
+
+

Optional Parameters

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

Create the platforms struct

-
+
+

Create the platforms struct

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

Save the platforms struct

-
+
+

Save the platforms struct

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

5.6 initializeCylindricalStruts: Define the inertia of cylindrical struts

+
+

5.6 initializeCylindricalStruts: Define the inertia of cylindrical struts

- +

@@ -1187,9 +1253,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();
 
@@ -1274,11 +1340,11 @@ struts.Msi = zeros(3, 3, 6);
 
-
-

5.7 initializeStrutDynamics: Add Stiffness and Damping properties of each strut

+
+

5.7 initializeStrutDynamics: Add Stiffness and Damping properties of each strut

- +

@@ -1286,9 +1352,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;
@@ -1335,11 +1401,11 @@ stewart.Ci = args.Ci;
 
-
-

5.8 initializeJointDynamics: Add Stiffness and Damping properties for spherical joints

+
+

5.8 initializeJointDynamics: Add Stiffness and Damping properties for spherical joints

- +

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

-
-

Function description

-
+
+

Function description

+
-
-

Optional Parameters

-
+
+

Optional Parameters

+
-
-

Add Stiffness and Damping properties of each strut

-
+ + +
+

5.9 displayArchitecture: 3D plot of the Stewart platform architecture

+
+

+ +

+ +

+This Matlab function is accessible here. +

+
+ +
+

Function description

+
+
+
function [] = displayArchitecture(stewart, args)
+% displayArchitecture - 3D plot of the Stewart platform architecture
+%
+% Syntax: [] = displayArchitecture(args)
+%
+% Inputs:
+%    - stewart
+%    - args - Structure with the following fields:
+%        - AP   [3x1] - The wanted position of {B} with respect to {A}
+%        - ARB  [3x3] - The rotation matrix that gives the wanted orientation of {B} with respect to {A}
+%        - ARB  [3x3] - The rotation matrix that gives the wanted orientation of {B} with respect to {A}
+%        - frames    [true/false] - Display the Frames
+%        - legs      [true/false] - Display the Legs
+%        - joints    [true/false] - Display the Joints
+%        - labels    [true/false] - Display the Labels
+%        - platforms [true/false] - Display the Platforms
+%
+% Outputs:
+
+
+
+
+ +
+

Optional Parameters

+
+
+
arguments
+    stewart
+    args.AP  (3,1) double {mustBeNumeric} = zeros(3,1)
+    args.ARB (3,3) double {mustBeNumeric} = eye(3)
+    args.frames logical {mustBeNumericOrLogical} = true
+    args.legs logical {mustBeNumericOrLogical} = true
+    args.joints logical {mustBeNumericOrLogical} = true
+    args.labels logical {mustBeNumericOrLogical} = true
+    args.platforms logical {mustBeNumericOrLogical} = true
+end
+
+
+
+
+ +
+

Figure Creation, Frames and Homogeneous transformations

+
+

+The reference frame of the 3d plot corresponds to the frame \(\{F\}\). +

+
+
figure;
+hold on;
+
+
+ +

+We first compute homogeneous matrices that will be useful to position elements on the figure where the reference frame is \(\{F\}\). +

+
+
FTa = [eye(3), stewart.FO_A; ...
+       zeros(1,3), 1];
+ATb = [args.ARB, args.AP; ...
+       zeros(1,3), 1];
+BTm = [eye(3), -stewart.MO_B; ...
+       zeros(1,3), 1];
+
+FTm = FTa*ATb*BTm;
+
+
+ +

+Let’s define a parameter that define the length of the unit vectors used to display the frames. +

+
+
d_unit_vector = stewart.H/4;
+
+
+ +

+Let’s define a parameter used to position the labels with respect to the center of the element. +

+
+
d_label = stewart.H/20;
+
+
+
+
+ +
+

Fixed Base elements

+
+

+Let’s first plot the frame \(\{F\}\). +

+
+
Ff = [0, 0, 0];
+if args.frames
+  quiver3(Ff(1)*ones(1,3), Ff(2)*ones(1,3), Ff(3)*ones(1,3), ...
+          [d_unit_vector 0 0], [0 d_unit_vector 0], [0 0 d_unit_vector], '-', 'Color', [0 0.4470 0.7410])
+
+  if args.labels
+    text(Ff(1) + d_label, ...
+        Ff(2) + d_label, ...
+        Ff(3) + d_label, '$\{F\}$', 'Color', [0 0.4470 0.7410]);
+  end
+end
+
+
+ +

+Now plot the frame \(\{A\}\) fixed to the Base. +

+
+
Fa = stewart.FO_A;
+
+if args.frames
+  quiver3(Fa(1)*ones(1,3), Fa(2)*ones(1,3), Fa(3)*ones(1,3), ...
+          [d_unit_vector 0 0], [0 d_unit_vector 0], [0 0 d_unit_vector], '-', 'Color', [0 0.4470 0.7410])
+
+  if args.labels
+    text(Fa(1) + d_label, ...
+         Fa(2) + d_label, ...
+         Fa(3) + d_label, '$\{A\}$', 'Color', [0 0.4470 0.7410]);
+  end
+end
+
+
+ +

+Let’s then plot the circle corresponding to the shape of the Fixed base. +

+
+
if args.platforms && isfield(stewart, 'platforms') && isfield(stewart.platforms, 'Fpr')
+  theta = [0:0.01:2*pi+0.01]; % Angles [rad]
+  v = null([0; 0; 1]'); % Two vectors that are perpendicular to the circle normal
+  center = [0; 0; 0]; % Center of the circle
+  radius = stewart.platforms.Fpr; % Radius of the circle [m]
+
+  points = center*ones(1, length(theta)) + radius*(v(:,1)*cos(theta) + v(:,2)*sin(theta));
+
+  plot3(points(1,:), ...
+        points(2,:), ...
+        points(3,:), '-', 'Color', [0 0.4470 0.7410]);
+end
+
+
+ +

+Let’s now plot the position and labels of the Fixed Joints +

+
+
if args.joints
+  scatter3(stewart.Fa(1,:), ...
+           stewart.Fa(2,:), ...
+           stewart.Fa(3,:), 'MarkerEdgeColor', [0 0.4470 0.7410]);
+  if args.labels
+    for i = 1:size(stewart.Fa,2)
+      text(stewart.Fa(1,i) + d_label, ...
+           stewart.Fa(2,i), ...
+           stewart.Fa(3,i), sprintf('$a_{%i}$', i), 'Color', [0 0.4470 0.7410]);
+    end
+  end
+end
+
+
+
+
+ +
+

Mobile Platform elements

+
+

+Plot the frame \(\{M\}\). +

+
+
Fm = FTm*[0; 0; 0; 1]; % Get the position of frame {M} w.r.t. {F}
+
+if args.frames
+  FM_uv = FTm*[d_unit_vector*eye(3); zeros(1,3)]; % Rotated Unit vectors
+  quiver3(Fm(1)*ones(1,3), Fm(2)*ones(1,3), Fm(3)*ones(1,3), ...
+          FM_uv(1,1:3), FM_uv(2,1:3), FM_uv(3,1:3), '-', 'Color', [0.8500 0.3250 0.0980])
+
+  if args.labels
+    text(Fm(1) + d_label, ...
+         Fm(2) + d_label, ...
+         Fm(3) + d_label, '$\{M\}$', 'Color', [0.8500 0.3250 0.0980]);
+  end
+end
+
+
+ +

+Plot the frame \(\{B\}\). +

+
+
FB = stewart.FO_A + args.AP;
+
+if args.frames
+  FB_uv = FTm*[d_unit_vector*eye(3); zeros(1,3)]; % Rotated Unit vectors
+  quiver3(FB(1)*ones(1,3), FB(2)*ones(1,3), FB(3)*ones(1,3), ...
+          FB_uv(1,1:3), FB_uv(2,1:3), FB_uv(3,1:3), '-', 'Color', [0.8500 0.3250 0.0980])
+
+  if args.labels
+    text(FB(1) - d_label, ...
+         FB(2) + d_label, ...
+         FB(3) + d_label, '$\{B\}$', 'Color', [0.8500 0.3250 0.0980]);
+  end
+end
+
+
+ +

+Let’s then plot the circle corresponding to the shape of the Mobile platform. +

+
+
if args.platforms && isfield(stewart, 'platforms') && isfield(stewart.platforms, 'Mpr')
+  theta = [0:0.01:2*pi+0.01]; % Angles [rad]
+  v = null((FTm(1:3,1:3)*[0;0;1])'); % Two vectors that are perpendicular to the circle normal
+  center = Fm(1:3); % Center of the circle
+  radius = stewart.platforms.Mpr; % Radius of the circle [m]
+
+  points = center*ones(1, length(theta)) + radius*(v(:,1)*cos(theta) + v(:,2)*sin(theta));
+
+  plot3(points(1,:), ...
+        points(2,:), ...
+        points(3,:), '-', 'Color', [0.8500 0.3250 0.0980]);
+end
+
+
+ +

+Plot the position and labels of the rotation joints fixed to the mobile platform. +

+
+
if args.joints
+  Fb = FTm*[stewart.Mb;ones(1,6)];
+
+  scatter3(Fb(1,:), ...
+           Fb(2,:), ...
+           Fb(3,:), 'MarkerEdgeColor', [0.8500 0.3250 0.0980]);
+
+  if args.labels
+    for i = 1:size(Fb,2)
+      text(Fb(1,i) + d_label, ...
+           Fb(2,i), ...
+           Fb(3,i), sprintf('$b_{%i}$', i), 'Color', [0.8500 0.3250 0.0980]);
+    end
+  end
+end
+
+
+
+
+ +
+

Legs

+
+

+Plot the legs connecting the joints of the fixed base to the joints of the mobile platform. +

+
+
if args.legs
+  for i = 1:6
+    plot3([stewart.Fa(1,i), Fb(1,i)], ...
+          [stewart.Fa(2,i), Fb(2,i)], ...
+          [stewart.Fa(3,i), Fb(3,i)], 'k-');
+
+    if args.labels
+      text((stewart.Fa(1,i)+Fb(1,i))/2 + d_label, ...
+           (stewart.Fa(2,i)+Fb(2,i))/2, ...
+           (stewart.Fa(3,i)+Fb(3,i))/2, sprintf('$%i$', i), 'Color', 'k');
+    end
+  end
+end
+
+
+
+
+ +
+

5.9.1 Figure parameters

+
+
+
view([1 -0.6 0.4]);
+axis equal;
+axis off;
+
+
+
+
+

@@ -1433,7 +1806,7 @@ This Matlab function is accessible here<

Author: Dehaeze Thomas

-

Created: 2020-02-06 jeu. 18:23

+

Created: 2020-02-07 ven. 17:11

diff --git a/stewart-architecture.org b/stewart-architecture.org index 86d8eae..a63dbb4 100644 --- a/stewart-architecture.org +++ b/stewart-architecture.org @@ -221,11 +221,62 @@ Then, define the inertia and geometry of the fixed base, mobile platform and str Finally, initialize the strut stiffness and damping properties. #+begin_src matlab stewart = initializeStrutDynamics(stewart, 'Ki', 1e6*ones(6,1), 'Ci', 1e2*ones(6,1)); - stewart = initializeJointDynamics(stewart, 'Ksi', zeros(6,1), 'Csi', zeros(6,1)); + stewart = initializeJointDynamics(stewart); #+end_src The obtained =stewart= Matlab structure contains all the information for analysis of the Stewart platform and for simulations using Simscape. +The function =displayArchitecture= can be used to display the current Stewart configuration: +#+begin_src matlab + displayArchitecture(stewart); +#+end_src + +#+header: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/stewart_architecture_example.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") +<> +#+end_src + +#+name: fig:stewart_architecture_example +#+caption: Display of the current Stewart platform architecture ([[./figs/stewart_architecture_example.png][png]], [[./figs/stewart_architecture_example.pdf][pdf]]) +[[file:figs/stewart_architecture_example.png]] + +There are many options to show or hides elements such as labels and frames. +The documentation of the function is available [[sec:displayArchitecture][here]]. + +Let's now move a little bit the top platform and re-display the configuration: +#+begin_src matlab + tx = 0.1; % [rad] + ty = 0.2; % [rad] + tz = 0.05; % [rad] + + Rx = [1 0 0; + 0 cos(tx) -sin(tx); + 0 sin(tx) cos(tx)]; + + Ry = [ cos(ty) 0 sin(ty); + 0 1 0; + -sin(ty) 0 cos(ty)]; + + Rz = [cos(tz) -sin(tz) 0; + sin(tz) cos(tz) 0; + 0 0 1]; + + ARB = Rz*Ry*Rx; + AP = [0.08; 0; 0]; % [m] + + displayArchitecture(stewart, 'AP', AP, 'ARB', ARB); + view([0 -1 0]); +#+end_src + +#+header: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/stewart_architecture_example_pose.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png") +<> +#+end_src + +#+name: fig:stewart_architecture_example_pose +#+caption: Display of the Stewart platform architecture at some defined pose ([[./figs/stewart_architecture_example_pose.png][png]], [[./figs/stewart_architecture_example_pose.pdf][pdf]]) +[[file:figs/stewart_architecture_example_pose.png]] + * Functions <> ** =initializeFramesPositions=: Initialize the positions of frames {A}, {B}, {F} and {M} @@ -874,6 +925,259 @@ This Matlab function is accessible [[file:src/initializeJointDynamics.m][here]]. end #+end_src +** =displayArchitecture=: 3D plot of the Stewart platform architecture +:PROPERTIES: +:header-args:matlab+: :tangle src/displayArchitecture.m +:header-args:matlab+: :comments none :mkdirp yes :eval no +:END: +<> + +This Matlab function is accessible [[file:src/displayArchitecture.m][here]]. + +*** Function description +:PROPERTIES: +:UNNUMBERED: t +:END: +#+begin_src matlab + function [] = displayArchitecture(stewart, args) + % displayArchitecture - 3D plot of the Stewart platform architecture + % + % Syntax: [] = displayArchitecture(args) + % + % Inputs: + % - stewart + % - args - Structure with the following fields: + % - AP [3x1] - The wanted position of {B} with respect to {A} + % - ARB [3x3] - The rotation matrix that gives the wanted orientation of {B} with respect to {A} + % - ARB [3x3] - The rotation matrix that gives the wanted orientation of {B} with respect to {A} + % - frames [true/false] - Display the Frames + % - legs [true/false] - Display the Legs + % - joints [true/false] - Display the Joints + % - labels [true/false] - Display the Labels + % - platforms [true/false] - Display the Platforms + % + % Outputs: +#+end_src + +*** Optional Parameters +:PROPERTIES: +:UNNUMBERED: t +:END: +#+begin_src matlab + arguments + stewart + args.AP (3,1) double {mustBeNumeric} = zeros(3,1) + args.ARB (3,3) double {mustBeNumeric} = eye(3) + args.frames logical {mustBeNumericOrLogical} = true + args.legs logical {mustBeNumericOrLogical} = true + args.joints logical {mustBeNumericOrLogical} = true + args.labels logical {mustBeNumericOrLogical} = true + args.platforms logical {mustBeNumericOrLogical} = true + end +#+end_src + +*** Figure Creation, Frames and Homogeneous transformations +:PROPERTIES: +:UNNUMBERED: t +:END: + +The reference frame of the 3d plot corresponds to the frame $\{F\}$. +#+begin_src matlab + figure; + hold on; +#+end_src + +We first compute homogeneous matrices that will be useful to position elements on the figure where the reference frame is $\{F\}$. +#+begin_src matlab + FTa = [eye(3), stewart.FO_A; ... + zeros(1,3), 1]; + ATb = [args.ARB, args.AP; ... + zeros(1,3), 1]; + BTm = [eye(3), -stewart.MO_B; ... + zeros(1,3), 1]; + + FTm = FTa*ATb*BTm; +#+end_src + +Let's define a parameter that define the length of the unit vectors used to display the frames. +#+begin_src matlab + d_unit_vector = stewart.H/4; +#+end_src + +Let's define a parameter used to position the labels with respect to the center of the element. +#+begin_src matlab + d_label = stewart.H/20; +#+end_src + +*** Fixed Base elements +:PROPERTIES: +:UNNUMBERED: t +:END: +Let's first plot the frame $\{F\}$. +#+begin_src matlab + Ff = [0, 0, 0]; + if args.frames + quiver3(Ff(1)*ones(1,3), Ff(2)*ones(1,3), Ff(3)*ones(1,3), ... + [d_unit_vector 0 0], [0 d_unit_vector 0], [0 0 d_unit_vector], '-', 'Color', [0 0.4470 0.7410]) + + if args.labels + text(Ff(1) + d_label, ... + Ff(2) + d_label, ... + Ff(3) + d_label, '$\{F\}$', 'Color', [0 0.4470 0.7410]); + end + end +#+end_src + +Now plot the frame $\{A\}$ fixed to the Base. +#+begin_src matlab + Fa = stewart.FO_A; + + if args.frames + quiver3(Fa(1)*ones(1,3), Fa(2)*ones(1,3), Fa(3)*ones(1,3), ... + [d_unit_vector 0 0], [0 d_unit_vector 0], [0 0 d_unit_vector], '-', 'Color', [0 0.4470 0.7410]) + + if args.labels + text(Fa(1) + d_label, ... + Fa(2) + d_label, ... + Fa(3) + d_label, '$\{A\}$', 'Color', [0 0.4470 0.7410]); + end + end +#+end_src + +Let's then plot the circle corresponding to the shape of the Fixed base. +#+begin_src matlab + if args.platforms && isfield(stewart, 'platforms') && isfield(stewart.platforms, 'Fpr') + theta = [0:0.01:2*pi+0.01]; % Angles [rad] + v = null([0; 0; 1]'); % Two vectors that are perpendicular to the circle normal + center = [0; 0; 0]; % Center of the circle + radius = stewart.platforms.Fpr; % Radius of the circle [m] + + points = center*ones(1, length(theta)) + radius*(v(:,1)*cos(theta) + v(:,2)*sin(theta)); + + plot3(points(1,:), ... + points(2,:), ... + points(3,:), '-', 'Color', [0 0.4470 0.7410]); + end +#+end_src + +Let's now plot the position and labels of the Fixed Joints +#+begin_src matlab + if args.joints + scatter3(stewart.Fa(1,:), ... + stewart.Fa(2,:), ... + stewart.Fa(3,:), 'MarkerEdgeColor', [0 0.4470 0.7410]); + if args.labels + for i = 1:size(stewart.Fa,2) + text(stewart.Fa(1,i) + d_label, ... + stewart.Fa(2,i), ... + stewart.Fa(3,i), sprintf('$a_{%i}$', i), 'Color', [0 0.4470 0.7410]); + end + end + end +#+end_src + +*** Mobile Platform elements +:PROPERTIES: +:UNNUMBERED: t +:END: + +Plot the frame $\{M\}$. +#+begin_src matlab + Fm = FTm*[0; 0; 0; 1]; % Get the position of frame {M} w.r.t. {F} + + if args.frames + FM_uv = FTm*[d_unit_vector*eye(3); zeros(1,3)]; % Rotated Unit vectors + quiver3(Fm(1)*ones(1,3), Fm(2)*ones(1,3), Fm(3)*ones(1,3), ... + FM_uv(1,1:3), FM_uv(2,1:3), FM_uv(3,1:3), '-', 'Color', [0.8500 0.3250 0.0980]) + + if args.labels + text(Fm(1) + d_label, ... + Fm(2) + d_label, ... + Fm(3) + d_label, '$\{M\}$', 'Color', [0.8500 0.3250 0.0980]); + end + end +#+end_src + +Plot the frame $\{B\}$. +#+begin_src matlab + FB = stewart.FO_A + args.AP; + + if args.frames + FB_uv = FTm*[d_unit_vector*eye(3); zeros(1,3)]; % Rotated Unit vectors + quiver3(FB(1)*ones(1,3), FB(2)*ones(1,3), FB(3)*ones(1,3), ... + FB_uv(1,1:3), FB_uv(2,1:3), FB_uv(3,1:3), '-', 'Color', [0.8500 0.3250 0.0980]) + + if args.labels + text(FB(1) - d_label, ... + FB(2) + d_label, ... + FB(3) + d_label, '$\{B\}$', 'Color', [0.8500 0.3250 0.0980]); + end + end +#+end_src + +Let's then plot the circle corresponding to the shape of the Mobile platform. +#+begin_src matlab + if args.platforms && isfield(stewart, 'platforms') && isfield(stewart.platforms, 'Mpr') + theta = [0:0.01:2*pi+0.01]; % Angles [rad] + v = null((FTm(1:3,1:3)*[0;0;1])'); % Two vectors that are perpendicular to the circle normal + center = Fm(1:3); % Center of the circle + radius = stewart.platforms.Mpr; % Radius of the circle [m] + + points = center*ones(1, length(theta)) + radius*(v(:,1)*cos(theta) + v(:,2)*sin(theta)); + + plot3(points(1,:), ... + points(2,:), ... + points(3,:), '-', 'Color', [0.8500 0.3250 0.0980]); + end +#+end_src + +Plot the position and labels of the rotation joints fixed to the mobile platform. +#+begin_src matlab + if args.joints + Fb = FTm*[stewart.Mb;ones(1,6)]; + + scatter3(Fb(1,:), ... + Fb(2,:), ... + Fb(3,:), 'MarkerEdgeColor', [0.8500 0.3250 0.0980]); + + if args.labels + for i = 1:size(Fb,2) + text(Fb(1,i) + d_label, ... + Fb(2,i), ... + Fb(3,i), sprintf('$b_{%i}$', i), 'Color', [0.8500 0.3250 0.0980]); + end + end + end +#+end_src + +*** Legs +:PROPERTIES: +:UNNUMBERED: t +:END: +Plot the legs connecting the joints of the fixed base to the joints of the mobile platform. +#+begin_src matlab + if args.legs + for i = 1:6 + plot3([stewart.Fa(1,i), Fb(1,i)], ... + [stewart.Fa(2,i), Fb(2,i)], ... + [stewart.Fa(3,i), Fb(3,i)], 'k-'); + + if args.labels + text((stewart.Fa(1,i)+Fb(1,i))/2 + d_label, ... + (stewart.Fa(2,i)+Fb(2,i))/2, ... + (stewart.Fa(3,i)+Fb(3,i))/2, sprintf('$%i$', i), 'Color', 'k'); + end + end + end +#+end_src + +*** Figure parameters +#+begin_src matlab + view([1 -0.6 0.4]); + axis equal; + axis off; +#+end_src + * Bibliography :ignore: bibliographystyle:unsrt bibliography:ref.bib