Multi port rigid body
Multi-port rigid body (6x6) linear model.
It computes the inverse linearized dynamic model of a rigid body $\mathcal{B}$
- at $n$ given points,
- in its reference frame $\mathcal{R}_b = (O,\mathbf{x}_b,\mathbf{y}_b,\mathbf{z}_b)$, the point $O$ is a generic name for the reference point of this frame. $\mathbf{x}_b,\mathbf{y}_b,\mathbf{z}_b$ are unit vectors.
It results in a $(6n \times 6n)$ transfer matrix (static) between wrenches applied at the $n$ points and the acceleration twists at these points.
Remark: the $6\times 6$ channel associated to one port (one point) can be inverted: then the input of this channel is the acceleration twist imposed at this point and the output is the wrench applied by this body. Indeed, since the body it assumed to be rigid, one can only impose the acceleration at a single point.
See also: 1 port flexible body, 1-port NASTRAN flexible body, massless connection body
Contents
Description
The Newton- Euler equations applied to a rigid body $\mathcal{B}$ at its center of mass $B$ reads:
$$ \left[\begin{array}{c} \mathbf{F}_{ext} \\ \mathbf{T}_{ext,B} \end{array}\right] = \underbrace{\left[\begin{array}{cc} m^{\mathcal{B}} \mathbf{1}_3 & \mathbf{0}_{3 \times 3} \\ \mathbf{0}_{3 \times 3} & \mathbf{I}^{\mathcal{B}}_B \end{array}\right]}_{\mathbf D_B^{\mathcal{B}}} \left[\begin{array}{c} \mathbf{a}_{B} \\ \dot{\boldsymbol{\omega}} \end{array}\right] + \left[\begin{array}{c} \mathbf{0}_{3 \times 1} \\ \boldsymbol{\omega} \times \mathbf{I}^{\mathcal{B}}_B \boldsymbol{\omega} \end{array}\right] $$
where:
- $\mathbf{F}_{ext}$: External forces (vector) applied to $\mathcal{B}$.
- $\mathbf{T}_{ext,B}$: External torques (vector) applied to $\mathcal{B}$ at point $B$.
- $m^{\mathcal{B}}$: mass of $\mathcal{B}$.
- $\mathbf{I}^{\mathcal{B}}_B$: $3 \times 3$ inertia tensor of $\mathcal{B}$ at point $B$.
- $\mathbf D^{\mathcal{B}}_B$: static direct dynamics model expressed at point $B$.
- $\mathbf{a}_B$: Inertial acceleration (vector) of body $\mathcal{B}$ at point $B$.
- $\boldsymbol{\omega}$: Angular speed (vector) of $\mathcal{R}_b$ with respect to the inertial frame.
The linearized Newton-Euler equations assume that $\boldsymbol{\omega}$ is small. The quadratic terms can be neglected, leading to these equations :
$$ \left[\begin{array}{c} \mathbf{F}_{ext} \\ \mathbf{T}_{ext,B} \end{array}\right] = \mathbf D_B^{\mathcal{B}} \left[\begin{array}{c} \mathbf{a}_{B} \\ \dot{\boldsymbol{\omega}} \end{array}\right] $$
Moreover let us consider another point $P$ on the rigid body $\mathcal{B}$. The velocity of $P$ can be expressed as a function of the velocity of $B$ and the angular velocity $\boldsymbol{\omega}$:
$\mathbf{v}_P = \mathbf{v}_B + \overrightarrow{PB} \times \boldsymbol{\omega}$
The time-derivation of this equation gives the expression of the inertial acceleration (vector) at point $P$:
$$ \mathbf{a}_P = \mathbf{a}_B + \overrightarrow{PB} \times \dot{\boldsymbol{\omega}} + \underbrace{\frac{\displaystyle d \overrightarrow{PB}}{\displaystyle dt}|_{\mathcal{B}}}_{=0} \times \boldsymbol{\omega} + \boldsymbol{\omega} \times (\overrightarrow{PB} \times \boldsymbol{\omega}) $$
or equivalently:
$$ \left[\begin{array}{c} \mathbf{a}_{P} \\ \dot{\boldsymbol{\omega}} \end{array}\right] = \underbrace{\left[\begin{array}{cc} \mathbf{1}_3 & (^*\overrightarrow{PB}) \\ \mathbf{0}_{3 \times 3} & \mathbf{1}_3 \end{array}\right]}_{\boldsymbol\tau_{PB}} \left[\begin{array}{c} \mathbf{a}_{B} \\ \dot{\boldsymbol{\omega}} \end{array}\right] + \left[\begin{array}{c} (^*\boldsymbol{\omega})(^*\overrightarrow{PB})\boldsymbol{\omega} \\ \mathbf{0}_{3 \times 1} \end{array}\right] $$
with:
- $(^*\overrightarrow{PB})$: the skew symmetric matrix associated with vector $\overrightarrow{PB}$:
if $\overrightarrow{PB}=\left[\begin{array}{c}x \\y \\ z\end{array}\right]_{\mathcal{R}_i}$ then $\left[(^*\overrightarrow{PB})\right]_{\mathcal{R}_i}= \left[\begin{array}{ccc} 0 & -z & y\\ z & 0 & -x \\ -y & x & 0 \end{array}\right]_{\mathcal{R}_i}$.
- $\boldsymbol\tau_{PB}$ is called the kinematic model between points $P$ and $B$.
The linearized equivalent equations are:
$$ \left[\begin{array}{c} \mathbf{a}_{P} \\ \dot{\boldsymbol{\omega}} \end{array}\right] = \boldsymbol\tau_{PB} \left[\begin{array}{c} \mathbf{a}_{B} \\ \dot{\boldsymbol{\omega}} \end{array}\right] $$
It can also be proved, by definition of torque, that:
$$ \left[\begin{array}{c} \mathbf{F}_{ext} \\ \mathbf{T}_{ext,B} \end{array}\right] = \boldsymbol\tau_{PB}^T \left[\begin{array}{c} \mathbf{F}_{ext} \\ \mathbf{T}_{ext,P} \end{array}\right] $$
The inverse dynamic model of the rigid body $\mathcal{B}$ in its reference frame $\mathcal{R}_b$ at different points $P_i$ with $i=\{1,... n\}$ can be obtain following this scheme:
Ports
The number of ports depends on the number $n$ of given points where the inverse dynamic model has to be computed.
Inputs:
- W_./body,Pi: the wrenches (units: $N$ and $N.m$) applied to the rigid body $\mathcal{B}$ at the $n$ different points $P_i$ with $i=\{1,... n\}$:
$$ \left[\begin{array}{c} \mathbf{F}_{./\mathcal{B},P_i} \\ \mathbf{T}_{./\mathcal{B},P_i} \end{array}\right]_{\mathcal{R}_b} $$
Outputs:
- Xddot,Pi: the acceleration twists (units: $m/s^2$ and $rd/s^2$) at the $n$ different points $P_i$ with $i=\{1,... n\}$ in the rigid body frame $\mathcal{R}_b$:
$$\left[\begin{array}{c} \mathbf{a}_{P_i} \\ \boldsymbol{\dot{\omega}} \end{array}\right]_{\mathcal{R}_b}$$
If the port number $i$ is inverted to compute the direct dynamic model (with a minus sign) at the point $P_i$, then:
- the $6$ inputs from $6i-5$ to $6i$ are $\left[\begin{array}{c} \mathbf{a}_{P_i} \\ \boldsymbol{\dot{\omega}}\end{array}\right]_{\mathcal{R}_b}$ (Xddot,Pi)
- the $6$ outputs from $6i-5$ to $6i$ are $ \left[\begin{array}{c}\mathbf{F}_{\mathcal{B}/.,P_i} \\ \mathbf{T}_{\mathcal{B}/.,P_i} \end{array}\right]_{\mathcal{R}_b}$ (W_body/.,Pi)

Parameters
All parameters are expressed in the body frame $\mathcal{R}_b$. Each parameter can be an uncertain parameter declared with "ureal".
The main parameters are:
- the body mass (unit: $kg$)
- the $3 \times 3$ inertia matrix of the body expressed at its center of mass $G$ (unit of each term: $kg.m^2$)
- the $3\times 1$ vector $\overrightarrow{OG}$: the position of the center of mass $G$ in $\mathcal{R}_b$ (unit: $m$)
- the number of ports (more exactly, the number $n$ of points $P_i$ with $i=\{1,... n\}$ where the inverse dynamic model has to be computed)
- eventually, the number of the port (between $1$ and $n$) which must be inverted
- the $3\times 1$ vectors $\overrightarrow{OP_i}$, $i=\{1,... n\}$: the positions of the connection points $P_i$ in $\mathcal{R}_b$ (unit: $m$).
Simulink diagram under the mask
The Simulink block is built by the initialization according to the parameters in the dialog box. Examples:

