Update initialization

This commit is contained in:
Thomas Dehaeze 2020-02-11 15:21:39 +01:00
parent e1cd9b0aa8
commit 2082bbd580
8 changed files with 64 additions and 26 deletions

View File

@ -21,7 +21,6 @@
:END: :END:
* Introduction :ignore: * Introduction :ignore:
The following decentralized active damping techniques are briefly studied: The following decentralized active damping techniques are briefly studied:
- Inertial Control (proportional feedback of the absolute velocity): Section [[sec:active_damping_inertial]] - Inertial Control (proportional feedback of the absolute velocity): Section [[sec:active_damping_inertial]]
- Integral Force Feedback: Section [[sec:active_damping_iff]] - Integral Force Feedback: Section [[sec:active_damping_iff]]
@ -54,7 +53,8 @@ The following decentralized active damping techniques are briefly studied:
** Identification of the Dynamics ** Identification of the Dynamics
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions('H', 90e-3, 'MO_B', 45e-3); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 45e-3);
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
@ -283,10 +283,12 @@ The root locus is shown in figure [[fig:root_locus_inertial_rot_stiffness]] and
** Identification of the Dynamics with perfect Joints ** Identification of the Dynamics with perfect Joints
We first initialize the Stewart platform without joint stiffness. We first initialize the Stewart platform without joint stiffness.
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions('H', 90e-3, 'MO_B', 45e-3); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 45e-3);
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
stewart = initializeAmplifiedStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, 'disable', true); stewart = initializeJointDynamics(stewart, 'disable', true);
stewart = initializeCylindricalPlatforms(stewart); stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart); stewart = initializeCylindricalStruts(stewart);
@ -316,7 +318,7 @@ And we identify the dynamics from force actuators to force sensors.
The transfer function from actuator forces to force sensors is shown in Figure [[fig:iff_plant_coupling]]. The transfer function from actuator forces to force sensors is shown in Figure [[fig:iff_plant_coupling]].
#+begin_src matlab :exports none #+begin_src matlab :exports none
freqs = logspace(1, 3, 1000); freqs = logspace(1, 4, 1000);
figure; figure;
@ -514,7 +516,8 @@ The root locus is shown in figure [[fig:root_locus_iff_rot_stiffness]] and the o
** Identification of the Dynamics with perfect Joints ** Identification of the Dynamics with perfect Joints
We first initialize the Stewart platform without joint stiffness. We first initialize the Stewart platform without joint stiffness.
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions('H', 90e-3, 'MO_B', 45e-3); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 45e-3);
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);

View File

@ -69,7 +69,8 @@
** Initialize the Stewart platform ** Initialize the Stewart platform
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions(); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);

View File

@ -56,7 +56,8 @@ We create a cubic Stewart platform (figure [[fig:3d-cubic-stewart-aligned]]) in
The Jacobian matrix is estimated at the location of the center of the cube. The Jacobian matrix is estimated at the location of the center of the cube.
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions('H', 100e-3, 'MO_B', -50e-3); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 100e-3, 'MO_B', -50e-3);
stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0); stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1)); stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1));
@ -99,7 +100,8 @@ We create a cubic Stewart platform with center of the cube located at the center
The Jacobian matrix is not estimated at the location of the center of the cube. The Jacobian matrix is not estimated at the location of the center of the cube.
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions('H', 100e-3, 'MO_B', 0); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 100e-3, 'MO_B', 0);
stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0); stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1)); stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1));
@ -142,7 +144,8 @@ The Jacobian is estimated at the cube center.
[[file:./figs/3d-cubic-stewart-misaligned.png]] [[file:./figs/3d-cubic-stewart-misaligned.png]]
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions('H', 80e-3, 'MO_B', -40e-3); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 80e-3, 'MO_B', -40e-3);
stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0); stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1)); stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1));
@ -188,7 +191,8 @@ The center height of the Stewart platform is then at $z = \frac{175-75}{2} = 50$
The center of the cube from the top platform is at $z = 110 - 175 = -65$. The center of the cube from the top platform is at $z = 110 - 175 = -65$.
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions('H', 80e-3, 'MO_B', -40e-3); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 80e-3, 'MO_B', -40e-3);
stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0); stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1)); stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1));
@ -237,7 +241,8 @@ This is possible, to do so:
It is possible to have small cube, but then to configuration is a little bit strange. It is possible to have small cube, but then to configuration is a little bit strange.
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions('H', 100e-3, 'MO_B', 50e-3); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 100e-3, 'MO_B', 50e-3);
FOc = stewart.H + stewart.MO_B(3); FOc = stewart.H + stewart.MO_B(3);
Hc = 2*(stewart.H + stewart.MO_B(3)); Hc = 2*(stewart.H + stewart.MO_B(3));
stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 10e-3, 'MHb', 10e-3); stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 10e-3, 'MHb', 10e-3);
@ -368,7 +373,7 @@ This Matlab function is accessible [[file:src/generateCubicConfiguration.m][here
% %
% Inputs: % Inputs:
% - stewart - A structure with the following fields % - stewart - A structure with the following fields
% - H [1x1] - Total height of the platform [m] % - geometry.H [1x1] - Total height of the platform [m]
% - args - Can have the following fields: % - args - Can have the following fields:
% - Hc [1x1] - Height of the "useful" part of the cube [m] % - 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] % - FOc [1x1] - Height of the center of the cube with respect to {F} [m]
@ -377,8 +382,8 @@ This Matlab function is accessible [[file:src/generateCubicConfiguration.m][here
% %
% Outputs: % Outputs:
% - stewart - updated Stewart structure with the added fields: % - 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} % - platform_F.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} % - platform_M.Mb [3x6] - Its i'th column is the position vector of joint bi with respect to {M}
#+end_src #+end_src
*** Documentation *** Documentation
@ -403,6 +408,15 @@ This Matlab function is accessible [[file:src/generateCubicConfiguration.m][here
end end
#+end_src #+end_src
*** Check the =stewart= structure elements
:PROPERTIES:
:UNNUMBERED: t
:END:
#+begin_src matlab
assert(isfield(stewart.geometry, 'H'), 'stewart.geometry should have attribute H')
H = stewart.geometry.H;
#+end_src
*** Position of the Cube *** Position of the Cube
:PROPERTIES: :PROPERTIES:
:UNNUMBERED: t :UNNUMBERED: t
@ -437,8 +451,17 @@ We can compute the vector of each leg ${}^{C}\hat{\bm{s}}_{i}$ (unit vector from
We now which to compute the position of the joints $a_{i}$ and $b_{i}$. We now which to compute the position of the joints $a_{i}$ and $b_{i}$.
#+begin_src matlab #+begin_src matlab
stewart.Fa = CCf + [0; 0; args.FOc] + ((args.FHa-(args.FOc-args.Hc/2))./CSi(3,:)).*CSi; 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; Mb = CCf + [0; 0; args.FOc-H] + ((H-args.MHb-(args.FOc-args.Hc/2))./CSi(3,:)).*CSi;
#+end_src
*** Populate the =stewart= structure
:PROPERTIES:
:UNNUMBERED: t
:END:
#+begin_src matlab
stewart.platform_F.Fa = Fa;
stewart.platform_M.Mb = Mb;
#+end_src #+end_src
* Bibliography :ignore: * Bibliography :ignore:

View File

@ -41,7 +41,8 @@
** test ** test
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions(); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
@ -129,7 +130,8 @@ Estimation of the transfer function from $\mathcal{\bm{F}}$ to $\mathcal{\bm{X}}
** Compare external forces and forces applied by the actuators ** Compare external forces and forces applied by the actuators
Initialization of the Stewart platform. Initialization of the Stewart platform.
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions(); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
@ -194,7 +196,8 @@ Seems quite similar.
** Comparison of the static transfer function and the Compliance matrix ** Comparison of the static transfer function and the Compliance matrix
Initialization of the Stewart platform. Initialization of the Stewart platform.
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions(); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
@ -257,7 +260,8 @@ The low frequency transfer function matrix from $\mathcal{\bm{F}}$ to $\mathcal{
** Transfer function from forces applied in the legs to the displacement of the legs ** Transfer function from forces applied in the legs to the displacement of the legs
Initialization of the Stewart platform. Initialization of the Stewart platform.
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions(); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);

View File

@ -65,7 +65,8 @@ An important difference from basic Simulink models is that the states in a physi
** Initialize the Stewart Platform ** Initialize the Stewart Platform
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions(); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
@ -120,7 +121,8 @@ An important difference from basic Simulink models is that the states in a physi
** Initialize the Stewart Platform ** Initialize the Stewart Platform
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions(); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
@ -354,7 +356,8 @@ Save the movie of the mode shape.
** Initialize the Stewart Platform ** Initialize the Stewart Platform
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions(); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);

View File

@ -226,7 +226,8 @@ This will also gives us the range for which the approximate forward kinematic is
*** Stewart architecture definition *** Stewart architecture definition
We first define some general Stewart architecture. We first define some general Stewart architecture.
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions('H', 90e-3, 'MO_B', 45e-3); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 45e-3);
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
@ -331,7 +332,8 @@ This is what is analyzed in this section.
** Stewart architecture definition ** Stewart architecture definition
Let's first define the Stewart platform architecture that we want to study. Let's first define the Stewart platform architecture that we want to study.
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions('H', 90e-3, 'MO_B', 45e-3); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 45e-3);
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
@ -487,7 +489,8 @@ However, for small displacements, we can use the Jacobian as an approximate solu
** Stewart architecture definition ** Stewart architecture definition
Let's first define the Stewart platform architecture that we want to study. Let's first define the Stewart platform architecture that we want to study.
#+begin_src matlab #+begin_src matlab
stewart = initializeFramesPositions('H', 90e-3, 'MO_B', 45e-3); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 90e-3, 'MO_B', 45e-3);
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);

View File

@ -131,6 +131,7 @@ There is two main types of inertial sensor that can be used to measure the absol
Both inertial sensors are described bellow. Both inertial sensors are described bellow.
* Other Elements
** Z-Axis Geophone ** Z-Axis Geophone
*** Working Principle *** Working Principle
From the schematic of the Z-axis geophone shown in Figure [[fig:z_axis_geophone]], we can write the transfer function from the support velocity $\dot{w}$ to the relative velocity of the inertial mass $\dot{d}$: From the schematic of the Z-axis geophone shown in Figure [[fig:z_axis_geophone]], we can write the transfer function from the support velocity $\dot{w}$ to the relative velocity of the inertial mass $\dot{d}$:

Binary file not shown.