+++ title = "Dynamic modeling of flexure jointed hexapods for control purposes" author = ["Dehaeze Thomas"] draft = false +++ Tags : [Stewart Platforms]({{< relref "stewart_platforms.md" >}}), [Flexible Joints]({{< relref "flexible_joints.md" >}}) Reference : (McInroy 1999) Author(s) : McInroy, J. Year : 1999 This conference paper has been further published in a journal as a short note (McInroy 2002). ## Abstract {#abstract} > This paper presents a new dynamic model suitable for control of flexure jointed hexapods (FJH). > > Novel contributions include: > > 1. Base acceleration inputs are included > 2. The dynamic model is experimentally verified > 3. The model is developed so that it is suitable for control > 4. A decoupled force control is derived ## Strut Dynamics {#strut-dynamics} The actuators for FJHs can be divided into two categories: 1. soft (voice coil), which employs a spring flexure mount 2. hard (piezoceramic or magnetostrictive), which employs a compressive load spring. {{< figure src="/ox-hugo/mcinroy99_general_hexapod.png" caption="Figure 1: A general Stewart Platform" >}} Since both actuator types employ force production in parallel with a spring, they can both be modeled as shown in Figure [2](#figure--fig:mcinroy99-strut-model). In order to provide low frequency passive vibration isolation, the hard actuators are sometimes placed in series with additional passive springs. {{< figure src="/ox-hugo/mcinroy99_strut_model.png" caption="Figure 2: The dynamics of the i'th strut. A parallel spring, damper and actuator drives the moving mass of the strut and a payload" >}}
| **Symbol** | **Meaning** | |------------------------------|--------------------------------------------| | \\(m\_i\\) | moving strut mass | | \\(k\_i\\) | spring constant | | \\(b\_i\\) | damping constant | | \\(f\_m\\) | force the actuator applies | | \\(f\_{p\_i}\\) | forced 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 | | \\(v\_i = p\_i - q\_i\\) | vector pointing from the bottom to the top | | \\(\hat{u}\_i = v\_i/l\_i\\) | unit direction of the strut | It is here supposed that \\(f\_{p\_i}\\) is predominantly in the strut direction (explained in (McInroy 2002)). This is a good approximation unless the spherical joints and extremely stiff or massive, of high inertia struts are used. This allows to reduce considerably the complexity of the model. From Figure [2](#figure--fig:mcinroy99-strut-model) (b), forces along the strut direction are summed to yield (projected along the strut direction, hence the \\(\hat{u}\_i^T\\) term): \begin{equation} m\_i \hat{u}\_i^T \ddot{p}\_i = f\_{m\_i} - f\_{p\_i} - m\_i \hat{u}\_i^Tg - k\_i(l\_i - l\_{r\_i}) - b\_i \dot{l}\_i \end{equation} The acceleration \\(\hat{u}\_i^T \ddot{p}\_i\\) can be written as: \\[ \hat{u}\_i^T \ddot{p}\_i = \ddot{l}\_i + \hat{u}\_i^T \ddot{q}\_i - \dot{\hat{u}}\_i^T \dot{v}\_i \\] - [ ] Not sure how the last term is obtained Separating strut and base accelerations, and putting all six strut equations in a single vector yields: \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 = \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\\) ## 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