diff --git a/figs/actuator_model_simple.pdf b/figs/actuator_model_simple.pdf new file mode 100644 index 0000000..2b7782d Binary files /dev/null and b/figs/actuator_model_simple.pdf differ diff --git a/figs/actuator_model_simple.png b/figs/actuator_model_simple.png new file mode 100644 index 0000000..d064de7 Binary files /dev/null and b/figs/actuator_model_simple.png differ diff --git a/figs/amplified_piezo_with_displacement_sensor.jpg b/figs/amplified_piezo_with_displacement_sensor.jpg new file mode 100644 index 0000000..6ba0ad3 Binary files /dev/null and b/figs/amplified_piezo_with_displacement_sensor.jpg differ diff --git a/figs/cedrat_apa95ml.png b/figs/cedrat_apa95ml.png new file mode 100644 index 0000000..cc55ef1 Binary files /dev/null and b/figs/cedrat_apa95ml.png differ diff --git a/figs/iff_1dof.pdf b/figs/iff_1dof.pdf new file mode 100644 index 0000000..0964d4d Binary files /dev/null and b/figs/iff_1dof.pdf differ diff --git a/figs/iff_1dof.png b/figs/iff_1dof.png new file mode 100644 index 0000000..4eac8a8 Binary files /dev/null and b/figs/iff_1dof.png differ diff --git a/figs/piezoelectric_stack.jpg b/figs/piezoelectric_stack.jpg new file mode 100644 index 0000000..e0896dc Binary files /dev/null and b/figs/piezoelectric_stack.jpg differ diff --git a/simscape_subsystems/Stewart_Platform.slx b/simscape_subsystems/Stewart_Platform.slx index a9ccecb..e3670c2 100644 Binary files a/simscape_subsystems/Stewart_Platform.slx and b/simscape_subsystems/Stewart_Platform.slx differ diff --git a/simscape_subsystems/stewart_strut.slx b/simscape_subsystems/stewart_strut.slx index 172fc5b..33cc196 100644 Binary files a/simscape_subsystems/stewart_strut.slx and b/simscape_subsystems/stewart_strut.slx differ diff --git a/simulink/stewart_active_damping.slx b/simulink/stewart_active_damping.slx index d0183c1..07355f6 100644 Binary files a/simulink/stewart_active_damping.slx and b/simulink/stewart_active_damping.slx differ diff --git a/src/initializeAmplifiedStrutDynamics.m b/src/initializeAmplifiedStrutDynamics.m new file mode 100644 index 0000000..be9d3bc --- /dev/null +++ b/src/initializeAmplifiedStrutDynamics.m @@ -0,0 +1,39 @@ +function [stewart] = initializeAmplifiedStrutDynamics(stewart, args) +% initializeAmplifiedStrutDynamics - Add Stiffness and Damping properties of each strut +% +% Syntax: [stewart] = initializeAmplifiedStrutDynamics(args) +% +% Inputs: +% - args - Structure with the following fields: +% - Ksi [6x1] - Vertical stiffness contribution of the piezoelectric stack [N/m] +% - Csi [6x1] - Vertical damping contribution of the piezoelectric stack [N/(m/s)] +% - Kdi [6x1] - Vertical stiffness when the piezoelectric stack is removed [N/m] +% - Cdi [6x1] - Vertical damping when the piezoelectric stack is removed [N/(m/s)] +% +% Outputs: +% - stewart - updated Stewart structure with the added fields: +% - Ki [6x1] - Total Stiffness of each strut [N/m] +% - Ci [6x1] - Total Damping of each strut [N/(m/s)] +% - Ksi [6x1] - Vertical stiffness contribution of the piezoelectric stack [N/m] +% - Csi [6x1] - Vertical damping contribution of the piezoelectric stack [N/(m/s)] +% - Kdi [6x1] - Vertical stiffness when the piezoelectric stack is removed [N/m] +% - Cdi [6x1] - Vertical damping when the piezoelectric stack is removed [N/(m/s)] + +arguments + stewart + args.Kdi (6,1) double {mustBeNumeric, mustBeNonnegative} = 5e6*ones(6,1) + args.Cdi (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1) + args.Ksi (6,1) double {mustBeNumeric, mustBeNonnegative} = 15e6*ones(6,1) + args.Csi (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1) +end + +stewart.Ksi = args.Ksi; +stewart.Csi = args.Csi; + +stewart.Kdi = args.Kdi; +stewart.Cdi = args.Cdi; + +stewart.Ki = args.Ksi + args.Kdi; +stewart.Ci = args.Csi + args.Cdi; + +stewart.actuator_type = 2; diff --git a/src/initializeStrutDynamics.m b/src/initializeStrutDynamics.m index 0bfd7cb..8776bf8 100644 --- a/src/initializeStrutDynamics.m +++ b/src/initializeStrutDynamics.m @@ -21,3 +21,5 @@ end stewart.Ki = args.Ki; stewart.Ci = args.Ci; + +stewart.actuator_type = 1; diff --git a/stewart-architecture.html b/stewart-architecture.html index 43100e7..6c05161 100644 --- a/stewart-architecture.html +++ b/stewart-architecture.html @@ -4,7 +4,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- +initializeFramesPositions
: Initialize the positions of frames {A}, {B}, {F} and {M}
+initializeFramesPositions
: Initialize the positions of frames {A}, {B}, {F} and {M}
generateGeneralConfiguration
: Generate a Very General Configuration
+generateGeneralConfiguration
: Generate a Very General Configuration
computeJointsPose
: Compute the Pose of the Joints
+computeJointsPose
: Compute the Pose of the Joints
initializeStewartPose
: Determine the initial stroke in each leg to have the wanted pose
+initializeStewartPose
: Determine the initial stroke in each leg to have the wanted pose
initializeCylindricalPlatforms
: Initialize the geometry of the Fixed and Mobile Platforms
+initializeCylindricalPlatforms
: Initialize the geometry of the Fixed and Mobile Platforms
initializeCylindricalStruts
: Define the inertia of cylindrical struts
+initializeCylindricalStruts
: Define the inertia of cylindrical struts
initializeStrutDynamics
: Add Stiffness and Damping properties of each strut
+initializeStrutDynamics
: Add Stiffness and Damping properties of each strut
initializeJointDynamics
: Add Stiffness and Damping properties for spherical joints
+initializeAmplifiedStrutDynamics
: Add Stiffness and Damping properties of each strut for an amplified piezoelectric actuator
displayArchitecture
: 3D plot of the Stewart platform architecture
+initializeJointDynamics
: Add Stiffness and Damping properties for spherical joints
+displayArchitecture
: 3D plot of the Stewart platform architecture
+
displayArchitecture
can be used to display the current
-
Figure 5: Display of the current Stewart platform architecture (png, pdf)
@@ -738,7 +748,7 @@ The functiondisplayArchitecture
can be used to display the current
There are many options to show or hides elements such as labels and frames. -The documentation of the function is available here. +The documentation of the function is available here.
@@ -770,7 +780,7 @@ view([0 -1 0]);
initializeFramesPositions
: Initialize the positions of frames {A}, {B}, {F} and {M}initializeFramesPositions
: Initialize the positions of frames {A}, {B}, {F} and {M}@@ -798,9 +808,21 @@ This Matlab function is accessible her
+
+Figure 7: Definition of the position of the frames
+function [stewart] = initializeFramesPositions(args) % initializeFramesPositions - Initialize the positions of frames {A}, {B}, {F} and {M} @@ -823,21 +845,9 @@ This Matlab function is accessible her
-
-Figure 7: Definition of the position of the frames
-arguments args.H (1,1) double {mustBeNumeric, mustBePositive} = 90e-3 @@ -848,9 +858,9 @@ This Matlab function is accessible her
stewart = struct();@@ -858,9 +868,9 @@ This Matlab function is accessible her
stewart.H = args.H; % Total Height of the Stewart Platform [m] @@ -875,11 +885,11 @@ stewart.FO_A = stewart.MO_B + stewart.FO_M;
generateGeneralConfiguration
: Generate a Very General ConfigurationgenerateGeneralConfiguration
: Generate a Very General Configuration+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 (see Figure 8). +
+ + ++
+Figure 8: Position of the joints
+-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 (see Figure 8). -
- - --
-Figure 8: Position of the joints
-arguments stewart @@ -949,9 +959,9 @@ The radius of the circles can be chosen as well as the angles where the joints a
stewart.Fa = zeros(3,6); stewart.Mb = zeros(3,6); @@ -969,11 +979,11 @@ stewart.Mb = zeros(3,6);
computeJointsPose
: Compute the Pose of the JointscomputeJointsPose
: Compute the Pose of the Joints@@ -981,9 +991,21 @@ This Matlab function is accessible here.
+
+Figure 9: Position and orientation of the struts
+function [stewart] = computeJointsPose(stewart) % computeJointsPose - @@ -1014,21 +1036,9 @@ This Matlab function is accessible here.
-
-Figure 9: Position and orientation of the struts
-stewart.Aa = stewart.Fa - repmat(stewart.FO_A, [1, 6]); stewart.Bb = stewart.Mb - repmat(stewart.MO_B, [1, 6]); @@ -1040,9 +1050,9 @@ stewart.Ba = stewart.Aa - repmat( stewart.MO_B
stewart.As = (stewart.Ab - stewart.Aa)./vecnorm(stewart.Ab - stewart.Aa); % As_i is the i'th vector of As @@ -1057,9 +1067,9 @@ stewart.l = vecnorm(stewart.Ab - stewart.Aa)
stewart.FRa = zeros(3,3,6); stewart.MRb = zeros(3,3,6); @@ -1077,11 +1087,11 @@ stewart.MRb = zeros(3,3,6);
initializeStewartPose
: Determine the initial stroke in each leg to have the wanted poseinitializeStewartPose
: Determine the initial stroke in each leg to have the wanted pose@@ -1089,9 +1099,9 @@ This Matlab function is accessible here
function [stewart] = initializeStewartPose(stewart, args) % initializeStewartPose - Determine the initial stroke in each leg to have the wanted pose @@ -1115,9 +1125,9 @@ This Matlab function is accessible here
arguments stewart @@ -1129,9 +1139,9 @@ This Matlab function is accessible here
[Li, dLi] = inverseKinematics(stewart, 'AP', args.AP, 'ARB', args.ARB); @@ -1142,11 +1152,11 @@ stewart.dLi = dLi;
initializeCylindricalPlatforms
: Initialize the geometry of the Fixed and Mobile PlatformsinitializeCylindricalPlatforms
: Initialize the geometry of the Fixed and Mobile Platforms
@@ -1154,9 +1164,9 @@ This Matlab function is accessible
-
@@ -1253,9 +1263,9 @@ This Matlab function is accessible h
@@ -1352,9 +1362,39 @@ This Matlab function is accessible here<
+ Figure 10: Example of a piezoelectric stach actuator (PI)
+A simplistic model of such amplified actuator is shown in Figure 11 where:
+
+ Figure 11: Simple model of an Actuator
+This Matlab function is accessible here.
+
+An amplified piezoelectric actuator is shown in Figure 12.
+
+ Figure 12: Example of an Amplified piezoelectric actuator with an integrated displacement sensor (Cedrat Technologies)
+A simplistic model of such amplified actuator is shown in Figure 13 where:
+
+ Figure 13: Model of an amplified actuator
@@ -1413,9 +1567,9 @@ This Matlab function is accessible here<
@@ -1501,9 +1655,9 @@ This Matlab function is accessible here.
The reference frame of the 3d plot corresponds to the frame \(\{F\}\).
Let’s first plot the frame \(\{F\}\).
Plot the frame \(\{M\}\).
Plot the legs connecting the joints of the fixed base to the joints of the mobile platform.
Created: 2020-02-07 ven. 17:34 Created: 2020-02-10 lun. 18:17Function description
-Function description
+function [stewart] = initializeCylindricalPlatforms(stewart, args)
% initializeCylindricalPlatforms - Initialize the geometry of the Fixed and Mobile Platforms
@@ -1188,9 +1198,9 @@ This Matlab function is accessible
-
Optional Parameters
-Optional Parameters
+arguments
stewart
@@ -1206,9 +1216,9 @@ This Matlab function is accessible
-
Create the
-platforms
structCreate the
+platforms
structplatforms = struct();
@@ -1230,9 +1240,9 @@ platforms.Mpi = diag([1/12
Save the
-platforms
structSave the
+platforms
structstewart.platforms = platforms;
@@ -1241,11 +1251,11 @@ platforms.Mpi = diag([1/12
5.6
+initializeCylindricalStruts
: Define the inertia of cylindrical struts5.6
initializeCylindricalStruts
: Define the inertia of cylindrical strutsFunction description
-Function description
+function [stewart] = initializeCylindricalStruts(stewart, args)
% initializeCylindricalStruts - Define the mass and moment of inertia of cylindrical struts
@@ -1287,9 +1297,9 @@ This Matlab function is accessible h
Optional Parameters
-Optional Parameters
+arguments
stewart
@@ -1305,9 +1315,9 @@ This Matlab function is accessible h
Create the
-struts
structureCreate the
+struts
structurestruts = struct();
@@ -1340,11 +1350,11 @@ struts.Msi = zeros(3, 3, 6);
5.7
+initializeStrutDynamics
: Add Stiffness and Damping properties of each strut5.7
initializeStrutDynamics
: Add Stiffness and Damping properties of each strutFunction description
-Documentation
+
+
+
+
+Function description
+function [stewart] = initializeStrutDynamics(stewart, args)
% initializeStrutDynamics - Add Stiffness and Damping properties of each strut
@@ -1375,9 +1415,9 @@ This Matlab function is accessible here<
Optional Parameters
-Optional Parameters
+arguments
stewart
@@ -1389,23 +1429,137 @@ This Matlab function is accessible here<
Add Stiffness and Damping properties of each strut
-Add Stiffness and Damping properties of each strut
+stewart.Ki = args.Ki;
stewart.Ci = args.Ci;
+
+stewart.actuator_type = 1;
5.8
+initializeJointDynamics
: Add Stiffness and Damping properties for spherical joints5.8
initializeAmplifiedStrutDynamics
: Add Stiffness and Damping properties of each strut for an amplified piezoelectric actuatorDocumentation
+
+
+
+
+Function description
+function [stewart] = initializeAmplifiedStrutDynamics(stewart, args)
+% initializeAmplifiedStrutDynamics - Add Stiffness and Damping properties of each strut
+%
+% Syntax: [stewart] = initializeAmplifiedStrutDynamics(args)
+%
+% Inputs:
+% - args - Structure with the following fields:
+% - Ksi [6x1] - Vertical stiffness contribution of the piezoelectric stack [N/m]
+% - Csi [6x1] - Vertical damping contribution of the piezoelectric stack [N/(m/s)]
+% - Kdi [6x1] - Vertical stiffness when the piezoelectric stack is removed [N/m]
+% - Cdi [6x1] - Vertical damping when the piezoelectric stack is removed [N/(m/s)]
+%
+% Outputs:
+% - stewart - updated Stewart structure with the added fields:
+% - Ki [6x1] - Total Stiffness of each strut [N/m]
+% - Ci [6x1] - Total Damping of each strut [N/(m/s)]
+% - Ksi [6x1] - Vertical stiffness contribution of the piezoelectric stack [N/m]
+% - Csi [6x1] - Vertical damping contribution of the piezoelectric stack [N/(m/s)]
+% - Kdi [6x1] - Vertical stiffness when the piezoelectric stack is removed [N/m]
+% - Cdi [6x1] - Vertical damping when the piezoelectric stack is removed [N/(m/s)]
+
+Optional Parameters
+arguments
+ stewart
+ args.Kdi (6,1) double {mustBeNumeric, mustBeNonnegative} = 5e6*ones(6,1)
+ args.Cdi (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
+ args.Ksi (6,1) double {mustBeNumeric, mustBeNonnegative} = 15e6*ones(6,1)
+ args.Csi (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
+end
+
+Add Stiffness and Damping properties of each strut
+stewart.Ksi = args.Ksi;
+stewart.Csi = args.Csi;
+
+stewart.Kdi = args.Kdi;
+stewart.Cdi = args.Cdi;
+
+stewart.Ki = args.Ksi + args.Kdi;
+stewart.Ci = args.Csi + args.Cdi;
+
+stewart.actuator_type = 2;
+
+5.9
+initializeJointDynamics
: Add Stiffness and Damping properties for spherical jointsFunction description
-Function description
+function [stewart] = initializeJointDynamics(stewart, args)
% initializeJointDynamics - Add Stiffness and Damping properties for the spherical joints
@@ -1445,9 +1599,9 @@ This Matlab function is accessible here<
Optional Parameters
-Optional Parameters
+arguments
stewart
@@ -1464,9 +1618,9 @@ This Matlab function is accessible here<
Add Stiffness and Damping properties of each strut
-Add Stiffness and Damping properties of each strut
+if args.disable
stewart.Ksbi = zeros(6,1);
@@ -1489,11 +1643,11 @@ This Matlab function is accessible here<
5.9
-displayArchitecture
: 3D plot of the Stewart platform architecture5.10
+displayArchitecture
: 3D plot of the Stewart platform architectureFunction description
-Function description
+function [] = displayArchitecture(stewart, args)
% displayArchitecture - 3D plot of the Stewart platform architecture
@@ -1531,9 +1685,9 @@ This Matlab function is accessible here.
Optional Parameters
-Optional Parameters
+arguments
stewart
@@ -1553,9 +1707,9 @@ This Matlab function is accessible here.
Figure Creation, Frames and Homogeneous transformations
-Figure Creation, Frames and Homogeneous transformations
+Fixed Base elements
-Fixed Base elements
+Mobile Platform elements
-Mobile Platform elements
+Legs
-Legs
+5.9.1 Figure parameters
-5.10.1 Figure parameters
+view([1 -0.6 0.4]);
axis equal;
@@ -1812,7 +1966,7 @@ Plot the legs connecting the joints of the fixed base to the joints of the mobil