Stewart Platforms
Table of Contents
@@ -409,7 +413,7 @@ These properties are studied in this docuCreated: 2020-02-11 mar. 15:50
+Created: 2020-02-11 mar. 17:52
-
-
- 4.1. Stewart architecture definition +
- 4.1. Stewart architecture definition
- 4.2. Wanted translations and rotations
- 4.3. Needed stroke for “pure” rotations or translations
- 4.4. Needed stroke for “combined” rotations or translations @@ -304,7 +304,7 @@ for the JavaScript code in this tag.
- 6.1.
computeJacobian
: Compute the Jacobian Matrix-
-
- Function description -
- Check the
stewart
structure elements
+ - Function description +
- Check the
stewart
structure elements - Compute Jacobian Matrix
- Compute Stiffness Matrix
- Compute Compliance Matrix @@ -323,17 +323,17 @@ for the JavaScript code in this tag.
- 6.2.
inverseKinematics
: Compute Inverse Kinematics - 6.3.
forwardKinematicsApprox
: Compute the Approximate Forward Kinematics
@@ -666,8 +666,8 @@ This will also gives us the range for which the approximate forward kinematic is
3.4.1 Stewart architecture definition
+3.4.1 Stewart architecture definition
We first define some general Stewart architecture. @@ -753,8 +753,8 @@ One may want to determine the required actuator stroke required to obtain the sp This is what is analyzed in this section.
4.1 Stewart architecture definition
+4.1 Stewart architecture definition
Let’s first define the Stewart platform architecture that we want to study. @@ -1161,8 +1161,8 @@ As explained in section 3, the forward kinematic probl However, for small displacements, we can use the Jacobian as an approximate solution.
5.1 Stewart architecture definition
+5.1 Stewart architecture definition
Let’s first define the Stewart platform architecture that we want to study. @@ -1289,13 +1289,13 @@ We can also approximate the mobility by a sphere with a radius equal to the mini
-This Matlab function is accessible here. +This Matlab function is accessible here.
Function description
-Function description
+function [stewart] = computeJacobian(stewart) % computeJacobian - @@ -1318,9 +1318,9 @@ This Matlab function is accessible here.
Check the stewart
structure elements
-Check the stewart
structure elements
+Function description
-Function description
+function [Li, dLi] = inverseKinematics(stewart, args) % inverseKinematics - Compute the needed length of each strut to have the wanted position and orientation of {B} with respect to {A} @@ -1454,9 +1454,9 @@ Otherwise, when the limbs’ lengths derived yield complex numbers, then the
Optional Parameters
-Optional Parameters
+arguments stewart @@ -1468,9 +1468,9 @@ Otherwise, when the limbs’ lengths derived yield complex numbers, then the
Check the stewart
structure elements
-Check the stewart
structure elements
+assert(isfield(stewart.geometry, 'Aa'), 'stewart.geometry should have attribute Aa') Aa = stewart.geometry.Aa; @@ -1510,13 +1510,13 @@ l = stewart.geometry.l;-This Matlab function is accessible here. +This Matlab function is accessible here.
Function description
-Function description
+function [P, R] = forwardKinematicsApprox(stewart, args) % forwardKinematicsApprox - Computed the approximate pose of {B} with respect to {A} from the length of each strut and using @@ -1538,9 +1538,9 @@ This Matlab function is accessible here<
Optional Parameters
-Optional Parameters
+arguments stewart @@ -1551,9 +1551,9 @@ This Matlab function is accessible here<
Check the stewart
structure elements
-Check the stewart
structure elements
+assert(isfield(stewart.kinematics, 'J'), 'stewart.kinematics should have attribute J') J = stewart.kinematics.J; @@ -1616,7 +1616,7 @@ We then compute the corresponding rotation matrix.
Created: 2020-02-11 mar. 15:50
+Created: 2020-02-11 mar. 17:50
6.1 Z-Axis Geophone
6.1.1 Working Principle
+6.1.1 Working Principle
From the schematic of the Z-axis geophone shown in Figure 5, we can write the transfer function from the support velocity \(\dot{w}\) to the relative velocity of the inertial mass \(\dot{d}\): @@ -548,8 +548,8 @@ We generally want to have the smallest resonant frequency \(\omega_0\) to measur
6.1.2 Initialization function
+6.1.2 Initialization function
@@ -588,8 +588,8 @@ This Matlab function is accessible he
From the schematic of the Z-axis accelerometer shown in Figure 6, we can write the transfer function from the support acceleration \(\ddot{w}\) to the relative position of the inertial mass \(d\):
@@ -627,8 +627,8 @@ Note that there is trade-off between:
@@ -641,7 +641,7 @@ This Matlab function is accessible
Created: 2020-02-11 mar. 15:50 Created: 2020-02-11 mar. 17:51 Created: 2020-02-11 mar. 15:50 Created: 2020-02-11 mar. 17:52 Created: 2020-02-11 mar. 15:50 Created: 2020-02-11 mar. 17:52
-This Matlab function is accessible here.
+This Matlab function is accessible here.
Figure 7: Definition of the position of the frames
-This Matlab function is accessible here.
+This Matlab function is accessible here.
Figure 8: Definition of the position of the frames
-This Matlab function is accessible here.
+This Matlab function is accessible here.
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 9).
@@ -1025,9 +1025,9 @@ The radius of the circles can be chosen as well as the angles where the joints a
-This Matlab function is accessible here.
+This Matlab function is accessible here.
@@ -1125,9 +1125,9 @@ This Matlab function is accessible here.
-This Matlab function is accessible here.
+This Matlab function is accessible here.
-This Matlab function is accessible here.
+This Matlab function is accessible here.
-This Matlab function is accessible here.
+This Matlab function is accessible here.
-This Matlab function is accessible here.
+This Matlab function is accessible here.
@@ -1606,9 +1606,9 @@ A simplistic model of such amplified actuator is shown in Figure
-
-This Matlab function is accessible here.
+This Matlab function is accessible here.
An amplified piezoelectric actuator is shown in Figure 13.
-This Matlab function is accessible here.
+This Matlab function is accessible here.
-This Matlab function is accessible here.
+This Matlab function is accessible here.
-This Matlab function is accessible here.
+This Matlab function is accessible here.
Created: 2020-02-11 mar. 15:50 Created: 2020-02-11 mar. 17:526.2 Z-Axis Accelerometer
6.2.1 Working Principle
+6.2.1 Working Principle
6.2.2 Initialization function
+6.2.2 Initialization function
function [accelerometer] = initializeZAxisAccelerometer(args)
arguments
- args.mass (1,1) double {mustBeNumeric, mustBePositive} = 1e-3 % [kg]
+ args.mass (1,1) double {mustBeNumeric, mustBePositive} = 5e-3 % [kg]
args.freq (1,1) double {mustBeNumeric, mustBePositive} = 5e3 % [Hz]
end
@@ -669,7 +669,7 @@ This Matlab function is accessible
initializeStewartPlatform
: Initialize the Stewart Platform structure
initializeFramesPositions
: Initialize the positions of frames {A}, {B}, {F} and {M}
generateGeneralConfiguration
: Generate a Very General Configuration
computeJointsPose
: Compute the Pose of the Joints
-
stewart
structure elementsstewart
structure elementsstewart
structurestewart
structureinitializeStewartPose
: Determine the initial stroke in each leg to have the wanted pose
initializeCylindricalPlatforms
: Initialize the geometry of the Fixed and Mobile Platforms
initializeCylindricalStruts
: Define the inertia of cylindrical struts
initializeStrutDynamics
: Add Stiffness and Damping properties of each strut
initializeAmplifiedStrutDynamics
: Add Stiffness and Damping properties of each strut for an amplified piezoelectric actuator
initializeJointDynamics
: Add Stiffness and Damping properties for spherical joints
-
initializeInertialSensor
: Initialize the inertial sensor in each strut
displayArchitecture
: 3D plot of the Stewart platform architecture
-
stewart
structure elementsstewart
structure elementsDocumentation
-Documentation
+Function description
-Function description
+function [stewart] = initializeStewartPlatform()
% initializeStewartPlatform - Initialize the stewart structure
@@ -911,15 +911,15 @@ stewart.kinematics = struct();
Documentation
-Documentation
+Function description
-Function description
+function [stewart] = initializeFramesPositions(stewart, args)
% initializeFramesPositions - Initialize the positions of frames {A}, {B}, {F} and {M}
@@ -952,9 +952,9 @@ This Matlab function is accessible her
Optional Parameters
-Optional Parameters
+arguments
stewart
@@ -982,9 +982,9 @@ FO_A = MO_B + FO_M; % Po
Populate the
-stewart
structurePopulate the
+stewart
structurestewart.geometry.H = H;
stewart.geometry.FO_M = FO_M;
@@ -1004,13 +1004,13 @@ stewart.platform_F.FO_A = FO_A;
Documentation
-Documentation
+Function description
-Function description
+function [stewart] = generateGeneralConfiguration(stewart, args)
% generateGeneralConfiguration - Generate a Very General Configuration
@@ -1052,9 +1052,9 @@ The radius of the circles can be chosen as well as the angles where the joints a
Optional Parameters
-Optional Parameters
+arguments
stewart
@@ -1089,9 +1089,9 @@ Mb = zeros(3,6);
Populate the
-stewart
structurePopulate the
+stewart
structurestewart.platform_F.Fa = Fa;
stewart.platform_M.Mb = Mb;
@@ -1109,13 +1109,13 @@ stewart.platform_M.Mb = Mb;
Documentation
-Documentation
+Function description
-Function description
+function [stewart] = computeJointsPose(stewart)
% computeJointsPose -
@@ -1160,9 +1160,9 @@ This Matlab function is accessible here.
Check the
-stewart
structure elementsCheck the
+stewart
structure elementsassert(isfield(stewart.platform_F, 'Fa'), 'stewart.platform_F should have attribute Fa')
Fa = stewart.platform_F.Fa;
@@ -1233,9 +1233,9 @@ MRb = zeros(3,3,6);
Populate the
-stewart
structurePopulate the
+stewart
structurestewart.geometry.Aa = Aa;
stewart.geometry.Ab = Ab;
@@ -1264,13 +1264,13 @@ stewart.platform_M.MRb = MRb;
Function description
-Function description
+function [stewart] = initializeStewartPose(stewart, args)
% initializeStewartPose - Determine the initial stroke in each leg to have the wanted pose
@@ -1294,9 +1294,9 @@ This Matlab function is accessible here
Optional Parameters
-Optional Parameters
+arguments
stewart
@@ -1318,9 +1318,9 @@ This Matlab function is accessible here
Populate the
-stewart
structurePopulate the
+stewart
structurestewart.actuators.Leq = dLi;
@@ -1337,13 +1337,13 @@ This Matlab function is accessible here
Function description
-Function description
+function [stewart] = initializeCylindricalPlatforms(stewart, args)
% initializeCylindricalPlatforms - Initialize the geometry of the Fixed and Mobile Platforms
@@ -1377,9 +1377,9 @@ This Matlab function is accessible
-
Optional Parameters
-Optional Parameters
+arguments
stewart
@@ -1414,9 +1414,9 @@ This Matlab function is accessible
-
Populate the
-stewart
structurePopulate the
+stewart
structurestewart.platform_F.type = 1;
@@ -1448,13 +1448,13 @@ stewart.platform_M.H = args.Mph;
Function description
-Function description
+function [stewart] = initializeCylindricalStruts(stewart, args)
% initializeCylindricalStruts - Define the mass and moment of inertia of cylindrical struts
@@ -1487,9 +1487,9 @@ This Matlab function is accessible h
Optional Parameters
-Optional Parameters
+arguments
stewart
@@ -1537,9 +1537,9 @@ I_M = zeros(3, 3, 6); % Inertia of the "mobile" part o
Populate the
-stewart
structurePopulate the
+stewart
structurestewart.struts_M.type = 1;
@@ -1571,13 +1571,13 @@ stewart.struts_F.H = Fsh;
Documentation
-Documentation
+Function description
-Function description
+function [stewart] = initializeStrutDynamics(stewart, args)
% initializeStrutDynamics - Add Stiffness and Damping properties of each strut
@@ -1630,14 +1630,14 @@ A simplistic model of such amplified actuator is shown in Figure
-
Optional Parameters
-Optional Parameters
+arguments
stewart
- args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e6*ones(6,1)
- args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
+ args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 20e6*ones(6,1)
+ args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 2e1*ones(6,1)
end
Documentation
-Documentation
+Function description
-Function description
+function [stewart] = initializeAmplifiedStrutDynamics(stewart, args)
% initializeAmplifiedStrutDynamics - Add Stiffness and Damping properties of each strut
@@ -1735,9 +1735,9 @@ A simplistic model of such amplified actuator is shown in Figure
-
Optional Parameters
-Optional Parameters
+arguments
stewart
@@ -1762,9 +1762,9 @@ C = args.Ca + args.Cr;
Populate the
-stewart
structurePopulate the
+stewart
structurestewart.actuators.type = 2;
@@ -1790,13 +1790,13 @@ stewart.actuators.C = K;
Function description
-Function description
+function [stewart] = initializeJointDynamics(stewart, args)
% initializeJointDynamics - Add Stiffness and Damping properties for the spherical joints
@@ -1805,8 +1805,8 @@ This Matlab function is accessible here<
%
% Inputs:
% - args - Structure with the following fields:
-% - type_F - 'universal', 'spherical', 'univesal_p', 'spherical_p'
-% - type_M - 'universal', 'spherical', 'univesal_p', 'spherical_p'
+% - type_F - 'universal', 'spherical', 'universal_p', 'spherical_p'
+% - type_M - 'universal', 'spherical', 'universal_p', 'spherical_p'
% - Kf_M [6x1] - Bending (Rx, Ry) Stiffness for each top joints [(N.m)/rad]
% - Kt_M [6x1] - Torsion (Rz) Stiffness for each top joints [(N.m)/rad]
% - Cf_M [6x1] - Bending (Rx, Ry) Damping of each top joint [(N.m)/(rad/s)]
@@ -1831,14 +1831,14 @@ This Matlab function is accessible here<
Optional Parameters
-Optional Parameters
+arguments
stewart
- args.type_F char {mustBeMember(args.type_F,{'universal', 'spherical', 'univesal_p', 'spherical_p'})} = 'universal'
- args.type_M char {mustBeMember(args.type_M,{'universal', 'spherical', 'univesal_p', 'spherical_p'})} = 'spherical'
+ args.type_F char {mustBeMember(args.type_F,{'universal', 'spherical', 'universal_p', 'spherical_p'})} = 'universal'
+ args.type_M char {mustBeMember(args.type_M,{'universal', 'spherical', 'universal_p', 'spherical_p'})} = 'spherical'
args.Kf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 15*ones(6,1)
args.Cf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1)
args.Kt_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 20*ones(6,1)
@@ -1955,13 +1955,13 @@ stewart.joints_F.Ct = args.Cf_F;
Function description
-Function description
+function [stewart] = initializeInertialSensor(stewart, args)
% initializeInertialSensor - Initialize the inertial sensor in each strut
@@ -1987,9 +1987,9 @@ This Matlab function is accessible here
Optional Parameters
-Optional Parameters
+arguments
stewart
@@ -2030,9 +2030,9 @@ This Matlab function is accessible here
Populate the
-stewart
structurePopulate the
+stewart
structurestewart.sensors.inertial = sensor;
@@ -2049,13 +2049,13 @@ This Matlab function is accessible here
Function description
-Function description
+function [] = displayArchitecture(stewart, args)
% displayArchitecture - 3D plot of the Stewart platform architecture
@@ -2083,9 +2083,9 @@ This Matlab function is accessible here.
Optional Parameters
-Optional Parameters
+arguments
stewart
@@ -2105,9 +2105,9 @@ This Matlab function is accessible here.
Check the
-stewart
structure elementsCheck the
+stewart
structure elementsassert(isfield(stewart.platform_F, 'FO_A'), 'stewart.platform_F should have attribute FO_A')
FO_A = stewart.platform_F.FO_A;
@@ -2386,7 +2386,7 @@ Plot the legs connecting the joints of the fixed base to the joints of the mobil