+++
title = "Modeling and design of flexure jointed stewart platforms for control purposes"
author = ["Thomas Dehaeze"]
draft = false
+++

Tags
:


Reference
: ([McInroy 2002](#org8c59af1))

Author(s)
: McInroy, J.

Year
: 2002

This short paper is very similar to ([McInroy 1999](#org69da46e)).

> This paper develops guidelines for designing the flexure joints to facilitate closed-loop control.


## Introduction {#introduction}

> When pursuing micro-meter/micro-radian scale motion, two new phenomena become important:
>
> 1.  joint friction and backlash can cause extremely nonlinear micro-dynamics
> 2.  base and/or payload vibrations become significant contributor to the motion

<!--quoteend-->

> If the spherical flexure is not properly matched to the particular application, it is shown that the complexity of the dynamics can greatly increase, thus limiting the control performance.


## Flexure Jointed Hexapod Dynamics {#flexure-jointed-hexapod-dynamics}

<a id="orgccb4fed"></a>

{{< figure src="/ox-hugo/mcinroy02_leg_model.png" caption="Figure 1: The dynamics of the ith strut. A parallel spring, damper, and actautor drives the moving mass of the strut and a payload" >}}

The strut can be modeled as consisting of a parallel arrangement of an actuator force, a spring and some damping driving a mass (Figure [1](#orgccb4fed)).

Thus, **the strut does not output force directly, but rather outputs a mechanically filtered force**.

The model of the strut are shown in Figure [1](#orgccb4fed) with:

-   \\(m\_{s\_i}\\) moving strut mass
-   \\(k\_i\\) spring constant
-   \\(b\_i\\) damping constant
-   \\(f\_{m\_i}\\) force applied by the actuator
-   \\(f\_{p\_i}\\) force exerted by the payload
-   \\(p\_i\\) three dimensional position of the top
-   \\(q\_i\\) three dimensional position of the bottom
-   \\(l\_i\\) strut length
-   \\(l\_{r\_i}\\) relaxed strut length

In general, **the strut mass and spherical flexure stiffness will cause payload forces that are not perfectly aligned with the strut**.

Applying Newton's second law and stacking the equations into a vector form gives:

\begin{equation}
  f\_p = f\_m - M\_s \ddot{l} - B \dot{l} - K(l - l\_r) - M\_s \ddot{q}\_u - M\_s g\_u + M\_s v\_2 \label{eq:strut\_dynamics\_vec}
\end{equation}

where:

-   \\(\ddot{q}\_u = \left[ \hat{u}\_1^T \ddot{q}\_1 \ \dots \ \hat{u}\_6^T \ddot{q}\_6 \right]^T\\) notes the vector of base accelerations in the strut directions
-   \\(g\_u\\) denotes the vector of gravity accelerations in the strut directions
-   \\(Ms = \text{diag}([m\_1\ \dots \ m\_6])\\), \\(f\_p = [f\_{p\_1}\ \dots \ f\_{p\_6}]^T\\)
-   \\(v\_2 = [ \dot{\hat{u}}\_1^T \dot{v}\_1 \ \dots \ \dot{\hat{u}}\_6^T \dot{v}\_6 ]^T\\) contains nonlinear Coriolis and centripetal accelerations


### Payload Dynamics {#payload-dynamics}

The payload is modeled as a rigid body:

\begin{equation}
\underbrace{\begin{bmatrix}
m I\_3 & 0\_{3\times 3} \\\\\\
0\_{3\times 3}   & {}^cI
\end{bmatrix}}\_{M\_x} \ddot{\mathcal{X}} + \underbrace{\begin{bmatrix}
  0\_{3 \times 1} \\ \omega \times {}^cI\omega
\end{bmatrix}}\_{c(\omega)} = \mathcal{F} \label{eq:payload\_dynamics}
\end{equation}

where:

-   \\(\ddot{\mathcal{X}}\\) is the \\(6 \times 1\\) generalized acceleration of the payload's center of mass
-   \\(\omega\\) is the \\(3 \times 1\\) payload's angular velocity vector
-   \\(\mathcal{F}\\) is the \\(6 \times 1\\) generalized force exerted on the payload
-   \\(M\_x\\) is the combined mass/inertia matrix of the payload, written in the payload frame {P}
-   \\(c(\omega)\\) represents the shown vector of Coriolis and centripetal terms

Note \\(\dot{\mathcal{X}} = [\dot{p}^T\ \omega^T]^T\\) denotes the time derivative of the payload's combined position and orientation (or pose) with respect to a universal frame of reference {U}.

First, consider the **generalized force due to struts**.
Denoting this force as \\(\mathcal{F}\_s\\), it can be calculated form the strut forces as:

\begin{equation}
  \mathcal{F}\_s = {}^UJ^T f\_p = {}^U\_BR J^T f\_p
\end{equation}

where \\(J\\) is the manipulator Jacobian and \\({}^U\_BR\\) is the rotation matrix from {B} to {U}.

The total generalized force acting on the payload is the sum of the strut, exogenous, and gravity forces:

\begin{equation}
  \mathcal{F} = {}^UJ^T f\_p + \mathcal{F}\_e - \begin{bmatrix} mg \\ 0\_{3\times 1} \end{bmatrix} \label{eq:generalized\_force}
\end{equation}

where:

-   \\(\mathcal{F}\_e\\) represents a vector of exogenous generalized forces applied at the center of mass
-   \\(g\\) is the gravity vector

By combining \eqref{eq:strut_dynamics_vec}, \eqref{eq:payload_dynamics} and \eqref{eq:generalized_force}, a single equation describing the dynamics of a flexure jointed hexapod can be found:

\begin{equation}
  {}^UJ^T [ f\_m - M\_s \ddot{l} - B \dot{l} - K(l - l\_r) - M\_s \ddot{q}\_u - M\_s g\_u + M\_s v\_2] + \mathcal{F}\_e - \begin{bmatrix} mg \\ 0\_{3\times 1} \end{bmatrix} = M\_x \ddot{\mathcal{X}} + c(\omega) \label{eq:eom\_fjh}
\end{equation}

Joint (\\(l\\)) and Cartesian (\\(\mathcal{X}\\)) terms are still mixed.
In the next section, a connection between the two will be found to complete the formulation


## Direction of Payload Force {#direction-of-payload-force}

Many prior hexapod dynamic formulations assume that the strut exerts force only along its direction of motion.

The flexure joints Hexapods transmit forces (or torques) proportional to the deflection of the joints.
This section establishes design guidelines for the spherical flexure joint to guarantee that the dynamics remain tractable for control.

<a id="orgaffe5ce"></a>

{{< figure src="/ox-hugo/mcinroy02_model_strut_joint.png" caption="Figure 2: A simplified dynamic model of a strut and its joint" >}}

Figure [2](#orgaffe5ce) depicts a strut, along with the corresponding force diagram.
The force diagram is obtained using standard finite element assumptions (\\(\sin \theta \approx \theta\\)).
Damping terms are neglected.
\\(k\_r\\) denotes the rotational stiffness of the spherical joint.

From Figure [2](#orgaffe5ce) (b), Newton's second law yields:

\begin{equation}
  f\_p = \begin{bmatrix}
  -f\_m + m\_s \Delta \ddot{x} + k\Delta x \\\\\\
  m\_s \Delta \ddot{y} + \frac{k\_r}{l^2} \Delta y \\\\\\
  m\_s \Delta \ddot{z} + \frac{k\_r}{l^2} \Delta z
\end{bmatrix}
\end{equation}

Note that the payload force is **not** in general aligned with the strut.
The force is aligned perfectly with the strut only if \\(m\_s = 0\\) and \\(k\_r = 0\\) (i.e. the struts have negligible mass and the spherical joints have negligible rotational stiffness).

To examine the passive behavior, let \\(f\_m = 0\\) and consider a sinusoidal motion:

\begin{equation}
  \begin{bmatrix} \Delta x \\ \Delta y \\ \Delta z \end{bmatrix} =
  \begin{bmatrix} A\_x \cos \omega t \\ A\_y \cos \omega t \\  A\_z \cos \omega t \end{bmatrix}
\end{equation}

This yields:

\begin{equation}
  f\_p = \begin{bmatrix}
    \Big( -m\_s \omega^2 + k \Big) A\_x \cos \omega t \\\\\\
    \Big( -m\_s \omega^2 + \frac{k\_r}{l^2} \Big) A\_y \cos \omega t \\\\\\
    \Big( -m\_s \omega^2 + \frac{k\_r}{l^2} \Big) A\_z \cos \omega t
  \end{bmatrix}
\end{equation}

The direction of \\(f\_p\\) depends upon to motion specifications, leg inertia and control algorithm.

The hypothesis that it is mostly along the strut direction can be tested by dividing the magnitude of the \\(x\\) component by the magnitude of the combined \\(y\\) and \\(z\\) components:

\begin{equation}
  x\_\text{gain} = \frac{|-m\_s \omega^2 + k|}{|-m\_s \omega^2 + \frac{k\_r}{l^2}|} \frac{|A\_x|}{\sqrt{A\_y^2 + A\_z^2}}
\end{equation}

Note that large \\(x\_\text{gain}\\) indicates \\(x\\) direction dominance.

\\(x\_\text{gain}\\) is divided into two parts.
The first part depends on the mechanical terms and the frequency of the movement:

\begin{equation}
  x\_{\text{gain}\_\omega} = \frac{|-m\_s \omega^2 + k|}{|-m\_s \omega^2 + \frac{k\_r}{l^2}|}
\end{equation}

<div class="important">
  <div></div>

In order to get dominance at low frequencies, the hexapod must be designed so that:

\begin{equation}
  \frac{k\_r}{l^2} \ll k \label{eq:cond\_stiff}
\end{equation}

</div>

This puts a limit on the rotational stiffness of the flexure joint and shows that as the strut is made softer (by decreasing \\(k\\)), the spherical flexure joint must be made proportionately softer.

By satisfying \eqref{eq:cond_stiff}, \\(f\_p\\) can be aligned with the strut for frequencies much below the spherical joint's resonance mode:
\\[ \omega \ll \sqrt{\frac{k\_r}{m\_s l^2}} \rightarrow x\_{\text{gain}\_\omega} \approx \frac{k}{k\_r/l^2} \gg 1 \\]
At frequencies much above the strut's resonance mode, \\(f\_p\\) is not dominated by its \\(x\\) component:
\\[ \omega \gg \sqrt{\frac{k}{m\_s}} \rightarrow x\_{\text{gain}\_\omega} \approx 1 \\]

<div class="important">
  <div></div>

To ensure that the control system acts only in the band of frequencies where dominance is retained, the control bandwidth can be selected so that:

\begin{equation}
  \text{control bandwidth} \ll \sqrt{\frac{k\_r}{m\_s l^2}} \label{eq:cond\_bandwidth}
\end{equation}

</div>

The control bandwidth can be increase for hexapods that are designed so that \\(x\_{\text{gain}\_\omega} \gg 1\\) for \\(\omega \ll \sqrt{k/m\_s}\\).
This can be achieve, for instance, by adding damping.
In this case, it is reasonable to use:

\begin{equation}
  \text{control bandwidth} \ll \sqrt{\frac{k}{m\_s}}
\end{equation}

<div class="important">
  <div></div>

By designing the flexure jointed hexapod and its controller so that both \eqref{eq:cond_stiff} and \eqref{eq:cond_bandwidth} are met, the dynamics of the hexapod can be greatly reduced in complexity.

</div>


## Relationships between joint and cartesian space {#relationships-between-joint-and-cartesian-space}

Equation \eqref{eq:eom_fjh} is not suitable for control analysis and design because \\(\ddot{\mathcal{X}}\\) is implicitly a function of \\(\ddot{q}\_u\\).

This section will derive this implicit relationship.
Let denote:

-   \\(\mathcal{X}\_B\\) the pose of {B} with respect to {U}
-   \\({}^B\mathcal{X}\_P\\) the pose of {P} with respect to {B}
-   \\({}^Uq\_i = {}^U\_BR {}^Bq\_i + {}^UP\_{BORG}\\) the position of the ith base attachment point, expressed in the universal frame {U}
-   \\(P\_{BORG}\\) the position of the origin of frame {B}

Note that although \\({}^Bq\_i\\) is fixed, \\({}^Uq\_i\\) varies due to base motion.

Differentiating twice and converting derivatives of rotation matrices into angular velocity cross products yields:

\begin{equation}
  {}^U\dot{q}\_i = \omega\_B \times {}^U\_BR {}^Bq\_i + \underbrace{{}^U\_BR {}^B\dot{q}\_i}\_{= 0} + v\_B
\end{equation}

\begin{equation}
  {}^U\ddot{q}\_i = \dot{\omega}\_B \times {}^U\_BR {}^Bq\_i + \omega\_B \times \omega\_B \times {}^U\_BR {}^Bq\_i + \dot{v}\_B
\end{equation}

where:

-   \\(\omega\_B\\) denotes the angular velocity of {B} with respect to {U}
-   \\(v\_B = {}^U\dot{P}\_{BORG}\\) denotes the linear velocity of the origin of {B} with respect to {U}

By using the vector triple identity \\(a \cdot (b \times c) = b \cdot (c \times a)\\) and putting the equation in a matrix form:

\begin{equation}
  {}^U \hat{u}\_i^T {}^U\ddot{q}\_i = \left[ {}^U\hat{u}\_i^T \left( {}^U\_BR {}^Bq\_i \times {}^U\hat{u}\_i \right)^T \right] \ddot{\mathcal{X}}\_B + {}^U\hat{u}\_i^T \left( \omega\_B \times \left[ \omega\_B \times {}^U\_BR {}^Bq\_i \right] \right)
\end{equation}


## Bibliography {#bibliography}

<a id="org69da46e"></a>McInroy, J.E. 1999. “Dynamic Modeling of Flexure Jointed Hexapods for Control Purposes.” In _Proceedings of the 1999 IEEE International Conference on Control Applications (Cat. No.99CH36328)_, nil. <https://doi.org/10.1109/cca.1999.806694>.

<a id="org8c59af1"></a>———. 2002. “Modeling and Design of Flexure Jointed Stewart Platforms for Control Purposes.” _IEEE/ASME Transactions on Mechatronics_ 7 (1):95–99. <https://doi.org/10.1109/3516.990892>.
