diff --git a/docs/active-damping.html b/docs/active-damping.html index 0aa17b4..5607b64 100644 --- a/docs/active-damping.html +++ b/docs/active-damping.html @@ -4,7 +4,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- +stewart = initializeStewartPlatform(); stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 45e-3); @@ -362,9 +362,9 @@ The transfer function from actuator forces to force sensors is shown in Figure <
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
@@ -388,9 +388,9 @@ The new dynamics from force actuator to force sensor is shown in FigureThe control is a performed in a decentralized manner. The \(6 \times 6\) control is a diagonal matrix with pure proportional action on the diagonal: @@ -421,9 +421,9 @@ The root locus is shown in figure 3 and the obtained p
Joint stiffness does increase the resonance frequencies of the system but does not change the attainable damping when using relative motion sensors. @@ -435,16 +435,16 @@ Joint stiffness does increase the resonance frequencies of the system but does n
We first initialize the Stewart platform without joint stiffness.
@@ -498,9 +498,9 @@ The transfer function from actuator forces to force sensors is shown in Figure <We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
@@ -524,9 +524,9 @@ The new dynamics from force actuator to force sensor is shown in FigureThe control is a performed in a decentralized manner. The \(6 \times 6\) control is a diagonal matrix with pure integration action on the diagonal: @@ -557,9 +557,9 @@ The root locus is shown in figure 7 and the obtained p
The joint stiffness has a huge impact on the attainable active damping performance when using force sensors. @@ -572,16 +572,16 @@ Thus, if Integral Force Feedback is to be used in a Stewart platform with flexib
We first initialize the Stewart platform without joint stiffness.
@@ -635,9 +635,9 @@ The transfer function from actuator forces to relative motion sensors is shown iWe add some stiffness and damping in the flexible joints and we re-identify the dynamics.
@@ -661,9 +661,9 @@ The new dynamics from force actuator to relative motion sensor is shown in FigurThe control is a performed in a decentralized manner. The \(6 \times 6\) control is a diagonal matrix with pure derivative action on the diagonal: @@ -694,9 +694,9 @@ The root locus is shown in figure 11 and the obtained
Joint stiffness does increase the resonance frequencies of the system but does not change the attainable damping when using relative motion sensors. @@ -709,7 +709,7 @@ Joint stiffness does increase the resonance frequencies of the system but does n
Created: 2020-02-11 mar. 15:26
+Created: 2020-02-11 mar. 15:50
\begin{tikzpicture} - % Blocs - \node[block] (J) at (0, 0) {$J$}; - \node[addb={+}{}{}{}{-}, right=1 of J] (subr) {}; - \node[block, right=0.8 of subr] (K) {$K_{L}$}; - \node[block, right=1 of K] (G) {$G_{L}$}; - - % Connections and labels - \draw[<-] (J.west)node[above left]{$\bm{r}_{n}$} -- ++(-1, 0); - \draw[->] (J.east) -- (subr.west) node[above left]{$\bm{r}_{L}$}; - \draw[->] (subr.east) -- (K.west) node[above left]{$\bm{\epsilon}_{L}$}; - \draw[->] (K.east) -- (G.west) node[above left]{$\bm{\tau}$}; - \draw[->] (G.east) node[above right]{$\bm{L}$} -| ($(G.east)+(1, -1)$) -| (subr.south); -\end{tikzpicture} --
@@ -316,8 +297,8 @@ for the JavaScript code in this tag.
stewart = initializeStewartPlatform(); stewart = initializeFramesPositions(stewart); @@ -334,8 +315,8 @@ stewart = initializeStewartPose(stewart);
Let’s identify the transfer function from \(\bm{\tau}}\) to \(\bm{L}\).
@@ -362,8 +343,8 @@ G.OutputName = {'L1', 'Diagonal terms Compare to off-diagonal terms @@ -371,8 +352,8 @@ Compare to off-diagonal terms
One integrator should be present in the controller.
@@ -401,7 +382,7 @@ Kl = Kl * eye(6);Created: 2020-02-11 mar. 15:23
+Created: 2020-02-11 mar. 15:50
generateCubicConfiguration
: Generate a Cubic Configuration
+generateCubicConfiguration
: Generate a Cubic Configuration
generateCubicConfiguration
is used (description in section 2.1).
The goal is to study the benefits of using a cubic configuration:
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. @@ -437,8 +437,8 @@ stewart = initializeCylindricalPlatforms(stewart, 'Fpr'
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. @@ -538,8 +538,8 @@ stewart = initializeCylindricalPlatforms(stewart, 'Fpr'
Here, the “center” of the Stewart platform is not at the cube center (figure 4). The Jacobian is estimated at the cube center. @@ -650,8 +650,8 @@ We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiff
Here, the “center” of the Stewart platform is not at the cube center. The Jacobian is estimated at the center of the Stewart platform. @@ -758,8 +758,8 @@ stewart = initializeCylindricalPlatforms(stewart, 'Fpr'
Let’s say we want to have a decouple dynamics above the top platform. Thus, we want the cube’s center to be located above the top center. @@ -881,16 +881,16 @@ We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiff
generateCubicConfiguration
: Generate a Cubic ConfigurationgenerateCubicConfiguration
: Generate a Cubic ConfigurationCreated: 2020-02-11 mar. 15:26
+Created: 2020-02-11 mar. 15:50
open('stewart_platform_dynamics.slx')
@@ -296,8 +296,8 @@ for the JavaScript code in this tag.
stewart = initializeStewartPlatform(); stewart = initializeFramesPositions(stewart); @@ -397,8 +397,8 @@ bode(Gd, G)
Initialization of the Stewart platform.
@@ -482,8 +482,8 @@ Seems quite similar.Initialization of the Stewart platform.
@@ -685,8 +685,8 @@ The low frequency transfer function matrix from \(\mathcal{\bm{F}}\) to \(\mathcInitialization of the Stewart platform.
@@ -742,7 +742,7 @@ G.OutputName = {'L1', 'Created: 2020-02-11 mar. 15:27
+Created: 2020-02-11 mar. 15:50
stewart = initializeStewartPlatform(); stewart = initializeFramesPositions(stewart); @@ -422,9 +422,9 @@ stewart = initializeStewartPose(stewart);
%% Options for Linearized options = linearizeOptions; @@ -458,12 +458,12 @@ G.OutputName = {'Xdx',
stewart = initializeStewartPlatform(); stewart = initializeFramesPositions(stewart); @@ -479,9 +479,9 @@ stewart = initializeStewartPose(stewart);
%% Options for Linearized
options = linearizeOptions;
@@ -541,8 +541,8 @@ And indeed, we obtain 12 states.
We can perform the following transformation using the ss2ss
command.
[V,D] = eig(Gt.A);@@ -643,8 +643,8 @@ Gt = ss(At, Bt, Ct, Dt);
To visualize the i’th mode, we may excite the system using the inputs \(U_i\) such that \(B U_i\) is co-linear to \(\xi_i\) (the mode we want to excite).
@@ -745,9 +745,9 @@ Save the movie of the mode shape.%% Options for Linearized
options = linearizeOptions;
@@ -776,8 +776,8 @@ G = linearize(mdl, io, options);
At = G.C*G.A*pinv(G.C); @@ -802,12 +802,12 @@ Dt = zeros(12, 6);
open 'stewart_identification_simple.slx'
@@ -816,9 +816,9 @@ Dt = zeros(12, 6);
stewart = initializeStewartPlatform(); stewart = initializeFramesPositions(stewart); @@ -834,9 +834,9 @@ stewart = initializeStewartPose(stewart);
stateorder = {... 'stewart_platform_identification_simple/Solver Configuration/EVAL_KEY/INPUT_1_1_1',... @@ -923,8 +923,8 @@ G.OutputName = {'Xdx',
From a force applied in the Cartesian frame to a displacement in the Cartesian frame.
@@ -949,8 +949,8 @@ bode(G.G_cart, freqs);figure; hold on; @@ -981,8 +981,8 @@ legend('location', 'sou
figure; hold on; @@ -1012,8 +1012,8 @@ legend('location', 'nor
figure; hold on; @@ -1053,8 +1053,8 @@ xlabel('Frequency [Hz]'); ylabel( -Compliance
-+8 Compliance
+From a force applied in the Cartesian frame to a relative displacement of the mobile platform with respect to the base.
@@ -1074,8 +1074,8 @@ xlabel('Frequency [Hz]'); ylabel( -Inertial
-+@@ -275,8 +275,8 @@ The project is divided into several section listed below.9 Inertial
+diff --git a/docs/index.html b/docs/index.html index 0512b44..2cb858e 100644 --- a/docs/index.html +++ b/docs/index.html @@ -4,7 +4,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - +From a force applied on the Cartesian frame to the absolute displacement of the mobile platform.
@@ -1096,7 +1096,7 @@ xlabel('Frequency [Hz]'); ylabel(Created: 2020-02-11 mar. 15:26
+Created: 2020-02-11 mar. 15:50
-Stewart Platforms @@ -254,14 +254,14 @@ for the JavaScript code in this tag.Table of Contents
-
- Simulink Project (link)
-- Stewart Platform Architecture Definition (link)
-- Simscape Model of the Stewart Platform (link)
-- Kinematic Analysis (link)
-- Identification of the Stewart Dynamics (link)
-- Active Damping (link)
-- Motion Control of the Stewart Platform (link)
-- Cubic Configuration (link)
+- 1. Simulink Project (link)
+- 2. Stewart Platform Architecture Definition (link)
+- 3. Simscape Model of the Stewart Platform (link)
+- 4. Kinematic Analysis (link)
+- 5. Identification of the Stewart Dynamics (link)
+- 6. Active Damping (link)
+- 7. Motion Control of the Stewart Platform (link)
+- 8. Cubic Configuration (link)
-Simulink Project (link)
-+1 Simulink Project (link)
+The project is managed with a Simulink Project. Such project is briefly presented here. @@ -285,8 +285,8 @@ Such project is briefly presented here.
-Stewart Platform Architecture Definition (link)
-+2 Stewart Platform Architecture Definition (link)
+The way the Stewart Platform is defined here.
@@ -311,8 +311,8 @@ Other parameters are also defined such as:-Simscape Model of the Stewart Platform (link)
-+3 Simscape Model of the Stewart Platform (link)
+The Stewart Platform is then modeled using Simscape.
@@ -324,8 +324,8 @@ The way to model is build and works is explained h-Kinematic Analysis (link)
-+4 Kinematic Analysis (link)
+From the defined geometry of the Stewart platform, we can perform static analysis such as:
@@ -345,8 +345,8 @@ All these analysis are described here.-Identification of the Stewart Dynamics (link)
-+5 Identification of the Stewart Dynamics (link)
+The Dynamics of the Stewart platform can be identified using the Simscape model.
@@ -367,8 +367,8 @@ The code that is used for identification is explained -Active Damping (link)
-+6 Active Damping (link)
+The use of different sensors are compared for active damping:
@@ -386,8 +386,8 @@ The result of the analysis is accessible here.-Motion Control of the Stewart Platform (link)
-+7 Motion Control of the Stewart Platform (link)
+Some control architecture for motion control of the Stewart platform are applied on the Simscape model and compared in this document.
@@ -395,8 +395,8 @@ Some control architecture for motion control of the Stewart platform are applied-Cubic Configuration (link)
-+8 Cubic Configuration (link)
+The cubic configuration is a special class of Stewart platform that has interesting properties.
@@ -409,7 +409,7 @@ These properties are studied in this docudiff --git a/docs/kinematic-study.html b/docs/kinematic-study.html index a1a58a5..6e61920 100644 --- a/docs/kinematic-study.html +++ b/docs/kinematic-study.html @@ -4,7 +4,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + -Created: 2020-02-11 mar. 15:27
+Created: 2020-02-11 mar. 15:50
Kinematic Study of the Stewart Platform @@ -268,72 +268,72 @@ for the JavaScript code in this tag.Table of Contents
-
- Jacobian Analysis +
- 1. Jacobian Analysis
-- Stiffness Analysis +
- 2. Stiffness Analysis
-- Forward and Inverse Kinematics +
- 3. Forward and Inverse Kinematics
--
- Inverse Kinematics
-- Forward Kinematics
-- Approximate solution of the Forward and Inverse Kinematic problem for small displacement using the Jacobian matrix
-- Estimation of the range validity of the approximate inverse kinematics +
- 3.1. Inverse Kinematics
+- 3.2. Forward Kinematics
+- 3.3. Approximate solution of the Forward and Inverse Kinematic problem for small displacement using the Jacobian matrix
+- 3.4. Estimation of the range validity of the approximate inverse kinematics
- Estimated required actuator stroke from specified platform mobility +
- 4. Estimated required actuator stroke from specified platform mobility
--
- Stewart architecture definition
-- Wanted translations and rotations
-- Needed stroke for “pure” rotations or translations
-- Needed stroke for “combined” rotations or translations
+- 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
- Estimated platform mobility from specified actuator stroke +
- 5. Estimated platform mobility from specified actuator stroke
-- Functions +
- 6. Functions
-
computeJacobian
: Compute the Jacobian Matrix +- 6.1.
-computeJacobian
: Compute the Jacobian MatrixinverseKinematics
: Compute Inverse Kinematics +- 6.2.
-inverseKinematics
: Compute Inverse KinematicsforwardKinematicsApprox
: Compute the Approximate Forward Kinematics +- 6.3.
@@ -357,15 +357,15 @@ In this analysis, the relation between the geometrical parameters of the manipul The current document is divided in the following sections:forwardKinematicsApprox
: Compute the Approximate Forward Kinematics-
- Section No description for this link: The Jacobian matrix is derived from the geometry of the Stewart platform. Then it is shown that the Jacobian can link velocities and forces present in the system, and thus this matrix can be very useful for both analysis and control of the Stewart platform.
-- Section No description for this link: The stiffness and compliance matrices are derived from the Jacobian matrix and the stiffness of each strut.
-- Section No description for this link: The Forward and Inverse kinematic problems are presented.
-- Section No description for this link: The Inverse kinematic solution is used to estimate required actuator stroke from the wanted mobility of the Stewart platform.
+- Section 1: The Jacobian matrix is derived from the geometry of the Stewart platform. Then it is shown that the Jacobian can link velocities and forces present in the system, and thus this matrix can be very useful for both analysis and control of the Stewart platform.
+- Section 2: The stiffness and compliance matrices are derived from the Jacobian matrix and the stiffness of each strut.
+- Section 3: The Forward and Inverse kinematic problems are presented.
+- Section 4: The Inverse kinematic solution is used to estimate required actuator stroke from the wanted mobility of the Stewart platform.
-Jacobian Analysis
-+1 Jacobian Analysis
+-Jacobian Computation
-+1.1 Jacobian Computation
+If we note:
@@ -423,8 +423,8 @@ This will add three new matrix to thestewart
structure:-Jacobian - Velocity loop closure
-+1.2 Jacobian - Velocity loop closure
+The Jacobian matrix links the input joint rate \(\dot{\bm{\mathcal{L}}} = [ \dot{l}_1, \dot{l}_2, \dot{l}_3, \dot{l}_4, \dot{l}_5, \dot{l}_6 ]^T\) of each strut to the output twist vector of the mobile platform is denoted by \(\dot{\bm{X}} = [^A\bm{v}_p, {}^A\bm{\omega}]^T\):
@@ -446,14 +446,14 @@ If the Jacobian matrix is inversible, we can also compute \(\dot{\bm{\mathcal{X}The Jacobian matrix can also be used to approximate forward and inverse kinematics for small displacements. -This is explained in section No description for this link. +This is explained in section 3.3.
-Jacobian - Static Force Transformation
-+1.3 Jacobian - Static Force Transformation
+If we note:
@@ -480,8 +480,8 @@ If the Jacobian matrix is inversible, we also have the following relation:-Stiffness Analysis
-+2 Stiffness Analysis
+-Computation of the Stiffness and Compliance Matrix
-+2.1 Computation of the Stiffness and Compliance Matrix
+As explain in this document, each Actuator is modeled by 3 elements in parallel:
@@ -549,15 +549,15 @@ The stiffness and compliance matrices are computed using thecomputeJacobi
-Forward and Inverse Kinematics
-+3 Forward and Inverse Kinematics
+-Inverse Kinematics
-+3.1 Inverse Kinematics
+-Forward Kinematics
-+3.2 Forward Kinematics
+-Approximate solution of the Forward and Inverse Kinematic problem for small displacement using the Jacobian matrix
-+3.3 Approximate solution of the Forward and Inverse Kinematic problem for small displacement using the Jacobian matrix
+@@ -649,8 +649,8 @@ The functionforwardKinematicsApprox
(described -Estimation of the range validity of the approximate inverse kinematics
-+3.4 Estimation of the range validity of the approximate inverse kinematics
+@@ -666,9 +666,9 @@ This will also gives us the range for which the approximate forward kinematic is--Stewart architecture definition
-++3.4.1 Stewart architecture definition
+We first define some general Stewart architecture.
@@ -689,8 +689,8 @@ stewart = computeJacobian(stewart);-Comparison for “pure” translations
-+3.4.2 Comparison for “pure” translations
+Let’s first compare the perfect and approximate solution of the inverse for pure \(x\) translations.
@@ -731,8 +731,8 @@ Ls_exact = zeros(6, length(Xrs));-Conclusion
-+3.4.3 Conclusion
+For small wanted displacements (up to \(\approx 1\%\) of the size of the Hexapod), the approximate inverse kinematic solution using the Jacobian matrix is quite correct.
@@ -742,8 +742,8 @@ For small wanted displacements (up to \(\approx 1\%\) of the size of the Hexapod-Estimated required actuator stroke from specified platform mobility
-+4 Estimated required actuator stroke from specified platform mobility
+@@ -753,9 +753,9 @@ One may want to determine the required actuator stroke required to obtain the sp This is what is analyzed in this section.--Stewart architecture definition
-++4.1 Stewart architecture definition
+Let’s first define the Stewart platform architecture that we want to study.
@@ -776,8 +776,8 @@ stewart = computeJacobian(stewart);-Wanted translations and rotations
-+4.2 Wanted translations and rotations
+Let’s now define the wanted extreme translations and rotations.
@@ -794,8 +794,8 @@ Rz_max = 0; % Rotation [rad]-Needed stroke for “pure” rotations or translations
-+4.3 Needed stroke for “pure” rotations or translations
+As a first estimation, we estimate the needed actuator stroke for “pure” rotations and translation. We do that using either the Inverse Kinematic solution or the Jacobian matrix as an approximation. @@ -826,8 +826,8 @@ This is surely a low estimation of the required stroke.
-Needed stroke for “combined” rotations or translations
-+4.4 Needed stroke for “combined” rotations or translations
+We know would like to have a more precise estimation.
@@ -1147,8 +1147,8 @@ This is probably a much realistic estimation of the required actuator stroke.-Estimated platform mobility from specified actuator stroke
-+5 Estimated platform mobility from specified actuator stroke
+@@ -1157,13 +1157,13 @@ Here, from some value of the actuator stroke, we would like to estimate the mobi--As explained in section No description for this link, the forward kinematic problem of the Stewart platform is quite difficult to solve. +As explained in section 3, the forward kinematic problem of the Stewart platform is quite difficult to solve. However, for small displacements, we can use the Jacobian as an approximate solution.
-Stewart architecture definition
-++5.1 Stewart architecture definition
+Let’s first define the Stewart platform architecture that we want to study.
@@ -1193,8 +1193,8 @@ L_max = 50e-6; % [m]-Pure translations
-+5.2 Pure translations
+Let’s first estimate the mobility in translation when the orientation of the Stewart platform stays the same.
@@ -1275,15 +1275,15 @@ We can also approximate the mobility by a sphere with a radius equal to the mini-Functions
-+6 Functions
+--
computeJacobian
: Compute the Jacobian Matrix+6.1
+computeJacobian
: Compute the Jacobian Matrix@@ -1293,9 +1293,9 @@ 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 elementsassert(isfield(stewart.geometry, 'As'), 'stewart.geometry should have attribute As') As = stewart.geometry.As; @@ -1381,8 +1381,8 @@ stewart.kinematics.C = C;--
inverseKinematics
: Compute Inverse Kinematics+-6.2
+inverseKinematics
: Compute Inverse Kinematics-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 elementsassert(isfield(stewart.geometry, 'Aa'), 'stewart.geometry should have attribute Aa') Aa = stewart.geometry.Aa; @@ -1503,8 +1503,8 @@ l = stewart.geometry.l;--
forwardKinematicsApprox
: Compute the Approximate Forward Kinematics+6.3
+forwardKinematicsApprox
: Compute the Approximate Forward Kinematics@@ -1514,9 +1514,9 @@ This Matlab function is accessible here<--Function description
-++Function description
+