diff --git a/.gitignore b/.gitignore index f218434..9d4e51d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +figs/*.svg +figs/*.pdf mat/ figures/ ltximg/ diff --git a/cubic-configuration.html b/cubic-configuration.html index 7a6a1c0..5a62fcc 100644 --- a/cubic-configuration.html +++ b/cubic-configuration.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Cubic configuration for the Stewart Platform @@ -279,33 +279,33 @@ for the JavaScript code in this tag.

Table of Contents

@@ -327,11 +327,15 @@ The specificity of the Cubic configuration is that each actuator is orthogonal w

-To generate and study the Cubic configuration, initializeCubicConfiguration is used (description in section 4). +To generate and study the Cubic configuration, initializeCubicConfiguration is used (description in section 4).

-
-

1 Questions we wish to answer with this analysis

+

+According to preumont07_six_axis_singl_stage_activ, the cubic configuration provides a uniform stiffness in all directions and minimizes the crosscoupling from actuator to sensor of different legs (being orthogonal to each other). +

+ +
+

1 Questions we wish to answer with this analysis

The goal is to study the benefits of using a cubic configuration: @@ -344,20 +348,20 @@ The goal is to study the benefits of using a cubic configuration:

-
-

2 Configuration Analysis - Stiffness Matrix

+
+

2 Configuration Analysis - Stiffness Matrix

-
-

2.1 Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center

+
+

2.1 Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center

-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). +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.

-
+

3d-cubic-stewart-aligned.png

Figure 1: Centered cubic configuration

@@ -461,11 +465,11 @@ save( -

2.2 Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center

+
+

2.2 Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center

-We create a cubic Stewart platform with center of the cube located at the center of the Stewart platform (figure 1). +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.

@@ -565,16 +569,16 @@ stewart = computeGeometricalProperties -

2.3 Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center

+
+

2.3 Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center

-Here, the "center" of the Stewart platform is not at the cube center (figure 2). +Here, the "center" of the Stewart platform is not at the cube center (figure 2). The Jacobian is estimated at the cube center.

-
+

3d-cubic-stewart-misaligned.png

Figure 2: Not centered cubic configuration

@@ -687,8 +691,8 @@ We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiff
-
-

2.4 Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center

+
+

2.4 Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center

Here, the "center" of the Stewart platform is not at the cube center. @@ -802,8 +806,8 @@ We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiff

-
-

2.5 Conclusion

+
+

2.5 Conclusion

    @@ -816,8 +820,8 @@ We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiff
-
-

3 Cubic size analysis

+
+

3 Cubic size analysis

We here study the effect of the size of the cube used for the Stewart configuration. @@ -892,7 +896,7 @@ xlabel( +

stiffness_cube_size.png

Figure 3: \(k_{\theta_x} = k_{\theta_y}\) and \(k_{\theta_z}\) function of the size of the cube

@@ -913,16 +917,16 @@ In that case, the legs will the further separated. Size of the cube is then limi
-
-

4 initializeCubicConfiguration

+
+

4 initializeCubicConfiguration

- +

-
-

4.1 Function description

+
+

4.1 Function description

function [stewart] = initializeCubicConfiguration(opts_param)
@@ -931,8 +935,8 @@ In that case, the legs will the further separated. Size of the cube is then limi
 
-
-

4.2 Optional Parameters

+
+

4.2 Optional Parameters

Default values for opts. @@ -961,8 +965,8 @@ Populate opts with input parameters

-
-

4.3 Cube Creation

+
+

4.3 Cube Creation

points = [0, 0, 0; ...
@@ -1007,8 +1011,8 @@ We use to rotation matrix to rotate the cube
 
-
-

4.4 Vectors of each leg

+
+

4.4 Vectors of each leg

leg_indices = [3, 4; ...
@@ -1036,8 +1040,8 @@ legs_start = zeros(
 
-
-

4.5 Verification of Height of the Stewart Platform

+
+

4.5 Verification of Height of the Stewart Platform

If the Stewart platform is not contained in the cube, throw an error. @@ -1056,8 +1060,8 @@ If the Stewart platform is not contained in the cube, throw an error.

-
-

4.6 Determinate the location of the joints

+
+

4.6 Determinate the location of the joints

We now determine the location of the joints on the fixed platform w.r.t the fixed frame \(\{A\}\). @@ -1102,8 +1106,8 @@ Ab = Ab - h*

-
-

4.7 Returns Stewart Structure

+
+

4.7 Returns Stewart Structure

  stewart = struct();
@@ -1118,15 +1122,15 @@ Ab = Ab - h*
 
-
-

5 Tests

+
+

5 Tests

-
-

5.1 First attempt to parametrisation

+
+

5.1 First attempt to parametrisation

-
+

stewart_bottom_plate.png

Figure 4: Schematic of the bottom plates with all the parameters

@@ -1161,8 +1165,8 @@ Lets express \(a_i\), \(b_i\) and \(a_j\):
-
-

5.2 Second attempt

+
+

5.2 Second attempt

We start with the point of a cube in space: @@ -1289,8 +1293,8 @@ Let's then estimate the middle position of the platform

-
-

5.3 Generate the Stewart platform for a Cubic configuration

+
+

5.3 Generate the Stewart platform for a Cubic configuration

First we defined the height of the Hexapod. @@ -1360,7 +1364,7 @@ zlim(

Author: Thomas Dehaeze

-

Created: 2019-08-26 lun. 11:58

+

Created: 2019-10-09 mer. 11:08

Validate

diff --git a/cubic-configuration.org b/cubic-configuration.org index b825f9c..88bfc5d 100644 --- a/cubic-configuration.org +++ b/cubic-configuration.org @@ -21,12 +21,7 @@ #+PROPERTY: header-args:matlab+ :output-dir figs :END: -#+begin_src matlab :results none :exports none :noweb yes - <> - addpath('src'); - addpath('library'); -#+end_src - +* Introduction :ignore: The discovery of the Cubic configuration is done in citenum:geng94_six_degree_of_freed_activ. Further analysis is conducted in cite:jafari03_orthog_gough_stewar_platf_microm. @@ -37,6 +32,22 @@ The specificity of the Cubic configuration is that each actuator is orthogonal w To generate and study the Cubic configuration, =initializeCubicConfiguration= is used (description in section [[sec:initializeCubicConfiguration]]). +According to cite:preumont07_six_axis_singl_stage_activ, the cubic configuration provides a uniform stiffness in all directions and *minimizes the crosscoupling* from actuator to sensor of different legs (being orthogonal to each other). + +* Matlab Init :noexport:ignore: +#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) + <> +#+end_src + +#+begin_src matlab :exports none :results silent :noweb yes + <> +#+end_src + +#+begin_src matlab :results none :exports none + addpath('src'); + addpath('library'); +#+end_src + * Questions we wish to answer with this analysis The goal is to study the benefits of using a cubic configuration: - Equal stiffness in all the degrees of freedom? diff --git a/figs/coupling.png b/figs/coupling.png new file mode 100644 index 0000000..b139063 Binary files /dev/null and b/figs/coupling.png differ diff --git a/index.html b/index.html index 90c9dec..b4ad64b 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Stewart Platforms @@ -245,13 +245,35 @@ for the JavaScript code in this tag. } /*]]>*///--> + +

Stewart Platforms

-
-

1 Simscape Model

+
+

1 Simscape Model

-
-

2 Architecture Study

+
+

2 Architecture Study

-
-

3 Motion Control

+
+

3 Motion Control

  • Active Damping
  • @@ -282,6 +304,145 @@ for the JavaScript code in this tag.
+
+

4 Notes about Stewart platforms

+
+
+
+

4.1 Jacobian

+
+
+
+

4.1.1 Relation to platform parameters

+
+

+A Jacobian is defined by: +

+
    +
  • the orientations of the struts \(\hat{s}_i\) expressed in a frame \(\{A\}\) linked to the fixed platform.
  • +
  • the vectors from \(O_B\) to \(b_i\) expressed in the frame \(\{A\}\)
  • +
+ +

+Then, the choice of \(O_B\) changes the Jacobian. +

+
+
+ +
+

4.1.2 Jacobian for displacement

+
+

+\[ \dot{q} = J \dot{X} \] +With: +

+
    +
  • \(q = [q_1\ q_2\ q_3\ q_4\ q_5\ q_6]\) vector of linear displacement of actuated joints
  • +
  • \(X = [x\ y\ z\ \theta_x\ \theta_y\ \theta_z]\) position and orientation of \(O_B\) expressed in the frame \(\{A\}\)
  • +
+ +

+For very small displacements \(\delta q\) and \(\delta X\), we have \(\delta q = J \delta X\). +

+
+
+ +
+

4.1.3 Jacobian for forces

+
+

+\[ F = J^T \tau \] +With: +

+
    +
  • \(\tau = [\tau_1\ \tau_2\ \tau_3\ \tau_4\ \tau_5\ \tau_6]\) vector of actuator forces
  • +
  • \(F = [f_x\ f_y\ f_z\ n_x\ n_y\ n_z]\) force and torque acting on point \(O_B\)
  • +
+
+
+
+ +
+

4.2 Stiffness matrix \(K\)

+
+

+\[ K = J^T \text{diag}(k_i) J \] +

+ +

+If all the struts have the same stiffness \(k\), then \(K = k J^T J\) +

+ +

+\(K\) only depends of the geometry of the stewart platform: it depends on the Jacobian, that is on the orientations of the struts, position of the joints and choice of frame \(\{B\}\). +

+ +

+\[ F = K X \] +

+ +

+With \(F\) forces and torques applied to the moving platform at the origin of \(\{B\}\) and \(X\) the translations and rotations of \(\{B\}\) with respect to \(\{A\}\). +

+ +

+\[ C = K^{-1} \] +

+ +

+The compliance element \(C_{ij}\) is then the stiffness +\[ X_i = C_{ij} F_j \] +

+
+
+ +
+

4.3 Coupling

+
+

+What causes the coupling from \(F_i\) to \(X_i\) ? +

+ +
+
\begin{tikzpicture}
+  \node[block] (Jt) at (0, 0) {$J^{-T}$};
+  \node[block, right= of Jt] (G) {$G$};
+  \node[block, right= of G] (J) {$J^{-1}$};
+
+  \draw[->] ($(Jt.west)+(-0.8, 0)$) -- (Jt.west) node[above left]{$F_i$};
+  \draw[->] (Jt.east) -- (G.west) node[above left]{$\tau_i$};
+  \draw[->] (G.east) -- (J.west) node[above left]{$q_i$};
+  \draw[->] (J.east) -- ++(0.8, 0) node[above left]{$X_i$};
+\end{tikzpicture}
+
+
+ + +
+

coupling.png +

+

Figure 1: Block diagram to control an hexapod

+
+ +

+There is no coupling from \(F_i\) to \(X_j\) if \(J^{-1} G J^{-T}\) is diagonal. +

+ +

+If \(G\) is diagonal (cubic configuration), then \(J^{-1} G J^{-T} = G J^{-1} J^{-T} = G (J^{T} J)^{-1} = G K^{-1}\) +

+ +

+Thus, the system is uncoupled if \(G\) and \(K\) are diagonal. +

+
+
+
+ +

+ +references.bib +

diff --git a/index.org b/index.org index 5155291..222b12a 100644 --- a/index.org +++ b/index.org @@ -9,6 +9,16 @@ #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: + +#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/}{config.tex}") +#+PROPERTY: header-args:latex+ :imagemagick t :fit yes +#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 +#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 +#+PROPERTY: header-args:latex+ :results raw replace :buffer no +#+PROPERTY: header-args:latex+ :eval no-export +#+PROPERTY: header-args:latex+ :exports both +#+PROPERTY: header-args:latex+ :mkdirp yes +#+PROPERTY: header-args:latex+ :output-dir figs :END: * Simscape Model @@ -25,3 +35,73 @@ - Active Damping - Inertial Control - Decentralized Control +* Notes about Stewart platforms +** Jacobian +*** Relation to platform parameters +A Jacobian is defined by: +- the orientations of the struts $\hat{s}_i$ expressed in a frame $\{A\}$ linked to the fixed platform. +- the vectors from $O_B$ to $b_i$ expressed in the frame $\{A\}$ + +Then, the choice of $O_B$ changes the Jacobian. + +*** Jacobian for displacement +\[ \dot{q} = J \dot{X} \] +With: +- $q = [q_1\ q_2\ q_3\ q_4\ q_5\ q_6]$ vector of linear displacement of actuated joints +- $X = [x\ y\ z\ \theta_x\ \theta_y\ \theta_z]$ position and orientation of $O_B$ expressed in the frame $\{A\}$ + +For very small displacements $\delta q$ and $\delta X$, we have $\delta q = J \delta X$. + +*** Jacobian for forces +\[ F = J^T \tau \] +With: +- $\tau = [\tau_1\ \tau_2\ \tau_3\ \tau_4\ \tau_5\ \tau_6]$ vector of actuator forces +- $F = [f_x\ f_y\ f_z\ n_x\ n_y\ n_z]$ force and torque acting on point $O_B$ + +** Stiffness matrix $K$ + +\[ K = J^T \text{diag}(k_i) J \] + +If all the struts have the same stiffness $k$, then $K = k J^T J$ + +$K$ only depends of the geometry of the stewart platform: it depends on the Jacobian, that is on the orientations of the struts, position of the joints and choice of frame $\{B\}$. + +\[ F = K X \] + +With $F$ forces and torques applied to the moving platform at the origin of $\{B\}$ and $X$ the translations and rotations of $\{B\}$ with respect to $\{A\}$. + +\[ C = K^{-1} \] + +The compliance element $C_{ij}$ is then the stiffness +\[ X_i = C_{ij} F_j \] + +** Coupling +What causes the coupling from $F_i$ to $X_i$ ? + +#+begin_src latex :file coupling.pdf :post pdf2svg(file=*this*, ext="png") :exports both + \begin{tikzpicture} + \node[block] (Jt) at (0, 0) {$J^{-T}$}; + \node[block, right= of Jt] (G) {$G$}; + \node[block, right= of G] (J) {$J^{-1}$}; + + \draw[->] ($(Jt.west)+(-0.8, 0)$) -- (Jt.west) node[above left]{$F_i$}; + \draw[->] (Jt.east) -- (G.west) node[above left]{$\tau_i$}; + \draw[->] (G.east) -- (J.west) node[above left]{$q_i$}; + \draw[->] (J.east) -- ++(0.8, 0) node[above left]{$X_i$}; + \end{tikzpicture} +#+end_src + +#+name: fig:block_diag_coupling +#+caption: Block diagram to control an hexapod +#+RESULTS: +[[file:figs/coupling.png]] + +There is no coupling from $F_i$ to $X_j$ if $J^{-1} G J^{-T}$ is diagonal. + +If $G$ is diagonal (cubic configuration), then $J^{-1} G J^{-T} = G J^{-1} J^{-T} = G (J^{T} J)^{-1} = G K^{-1}$ + +Thus, the system is uncoupled if $G$ and $K$ are diagonal. + +* Bibliography :ignore: +bibliographystyle:unsrt +bibliography:references.bib diff --git a/simscape-model.org b/simscape-model.org index 7a8ff35..fc42f6a 100644 --- a/simscape-model.org +++ b/simscape-model.org @@ -20,6 +20,7 @@ #+PROPERTY: header-args:matlab+ :output-dir figs :END: +* Introduction :ignore: Stewart platforms are generated in multiple steps. First, geometrical parameters are defined: