1. Articulated structures

The articulated structure functionality has been implemented as an extension of the body type 4 of SIMO, and can for instance be used for the modelling of cranes. It consists of members rigidly connected to each other in a master slave fashion. Each slave can have a predescribed relative motion relative to the slave.

1.1. Mathematical basis

In the following, (G) refers to the global coordinate system XG, (B) refers to the local body-fixed coordinate system XB of the member in question, and (M) refers to the XB system of the member’s master body. The state of the articulated structure members is given by relative coordinates between a member body and its master. Assume that member \(\mathrm {i}\) has the following configuration:

  • Attachment point \(\mathrm {\boldsymbol{r_{AP,i}^{(B)}}=[x_{AP,i},y_{AP,i},z_{AP,i}]^{(B)}}\) for connection to the master body, referenced in the coordinates of the local coordinate system.

  • Attachment point \(\mathrm {\boldsymbol{r_{AP,i}^{(M)}}=[x_{AP,i},y_{AP,i},z_{AP,i}]^{(M)}}\) for connection to the master body, referenced in the coordinates of the master body.

  • Centre of mass \(\mathrm {\boldsymbol{r_{g,i}^{(B)}}=[x_{g,i},y_{g,i},z_{g,i}]^{(B)}}\)

  • Member mass \(\mathrm {m_{i}}\) and moment of inertia \(\mathrm {I_{c,i}}\) about the centre of gravity.

The translation of member \(\mathrm {i}\) can now be facilitated by a shift in the attachment point seen from the master reference system:

\[\Delta \boldsymbol{r_{AP,i}^{(M)}}=[\Delta x_{AP_i},\delta y_{AP_i},\delta z_{AP_i}]\]

and a rotation of member \(\mathrm {i}\) about the attachment point is given by modifying the rotation matrix \(\mathrm {\boldsymbol{\Lambda_{(L)}^{(M)}}}\) (see Equations of Motion). Any vector \(\mathrm {\boldsymbol{\chi}}\) represented in the local coordinate system by \(\mathrm {\boldsymbol{x^{(B)}}}\) is transferred to the closest master’s coordinate system or the global coordinate system by:

\[\begin{array}{ll}\boldsymbol{x^{(M)}}&=\boldsymbol{\Lambda_{(L)}^{(M)}x^{(B)}}\\\\ \boldsymbol{x^{(G)}}&=\boldsymbol{\Lambda_{(L)}^{(G)}x^{(B)}}\\\\\end{array}\]

Furthermore, the mass of the member adds directly to the total mass of the master body. For the moment of inertia we need to apply the parallel axes theorem for transferring the moment of inertia between reference systems. It is convenient to define the system transformation matrix \(\mathrm {\boldsymbol{H}}\) as given e.g. by (Fossen, 2002), which implicitly facilitates this transformation:

\[\boldsymbol{H_{(O)}^{(P)}}=\begin{bmatrix}\boldsymbol{I_{3\times 3}}&\boldsymbol{R}^T(\boldsymbol{r_{OP}})\\\boldsymbol{0_{3\times 3}}&\boldsymbol{I_{3\times 3}}\end{bmatrix}\]

Here the cross product operator is given by:

\[\boldsymbol{R}(\boldsymbol{x})=\begin{bmatrix}0&-x_3&x_2\\x_3&0&-x_1\\-x_2&x_1&0\end{bmatrix}\]

Having the inertia properties \(\mathrm {\boldsymbol{M_{i,O}^{(L)}}}\) of an articulated structure member defined relative to the local origin \(\mathrm {O}\), we first have to change the reference system by using the rotation matrix

\[\boldsymbol{M_{i,O}^{(M)}}=\boldsymbol{\Lambda_{(L)}^{(M)}M_{i,O}^{(L)}}(\boldsymbol{\Lambda_{(L)}^{(M)}})^T\]

Now the inertia properties of the system may be referred relative to a different point \(\mathrm {P}\) simply by use of the system transformation matrix:

\[\boldsymbol{M_{i,P}^{(M)}}=\boldsymbol{H_{(O)}^{(P)}M_{i,O}^{(M)}}(\boldsymbol{H_{(O)}^{(P)}})^T\]

Forces may be transformed to the new reference point by use of the same matrix:

\[\boldsymbol{F_{i,P}^{(M)}}=(\boldsymbol{H_{(O)}^{(P)}})^T(\boldsymbol{\Lambda_{(L)}^{(M)}})^T\boldsymbol{F_{i,O}^{(L)}}\]

The vector going from point \(\mathrm {P}\) (the master’s origo) to point \(\mathrm {O}\) (the local origo) is found in the master’s coordinate system as

\[\boldsymbol{r_{PO}^{(M)}}=\boldsymbol{\Lambda_{(L)}^{(M)}}(-\boldsymbol{r_{AP}^{(B)}})+\boldsymbol{r_{AP}^{(M)}}\]

If needed, the reaction forces due to motion of the crane members can now be calculated by

\[\boldsymbol{F_r}=\frac{\mathrm {d}\boldsymbol{p}}{\mathrm {d}t}=\frac{\mathrm {d}(m\boldsymbol{\nu})}{\mathrm {d}t}=m\frac{\partial \boldsymbol{\nu}}{\partial t}+\boldsymbol{\nu}\frac{\partial m}{\partial t}\]

For small velocities, the second term will be negligible compared to the first one. The forces may then be estimated based on the masses and the accelerations alone.

The velocity and acceleration of each articulated structure member can be computed by applying the expression for the time derivative of a vector in one reference system \(\mathrm {xyz}\) , expressed in an other reference system \(\mathrm {XYZ}\), (Hellan, 1969):

\[\frac{\mathrm {d}\boldsymbol{x}}{\mathrm {d}t}=\boldsymbol{\omega }\times \boldsymbol{x}+\frac{\mathrm {d}\boldsymbol{x_\mathrm {rel}}}{\mathrm {d}t}\]
Table 1. Alternatives for the definition of motion sequences
SEQTYPE Start time Stop time \(\mathrm {\boldsymbol{\Delta \chi}}\) Velocity Maximum Accel.

1

x

x

x

x

2

x

x

x

x

3

x

x

x

x

The total velocity of a body may then be found as:

\[\boldsymbol{\nu}=\boldsymbol{\nu_0}+\boldsymbol{\nu_\mathrm {rel}}+\boldsymbol{\omega }\times \boldsymbol{r}\]

where \(\mathrm {\boldsymbol{\nu_0}}\) is the translational velocity of the \(\mathrm {xyz}\) system with respect to the \(\mathrm {XYZ}\) system, \(\boldsymbol{\nu_\mathrm {rel}}\) is the translational velocity of the body with respect to the \(\mathrm {xyz}\) system and \(\mathrm {\boldsymbol{\omega }\times \boldsymbol{r}}\) is the instant circular speed of the body placed at position \(\mathrm {r}\) relative to the origin of \(\mathrm {xyz}\) . Applied to our system with member bodies we may find the global velocity \(\mathrm {\boldsymbol{v_i^{(G)}}}\) and acceleration \(\mathrm {\boldsymbol{a_i^{(G)}}}\) of member \(\mathrm {i}\) as:

\[\begin{array}{ll}\boldsymbol{v_i^{(G)}}&=\boldsymbol{v_M^{(G)}}+\boldsymbol{\Lambda_{(M)}^{(G)}v_i^{(G)}}+\boldsymbol{\omega _M^{(G)}}\times (\boldsymbol{\Lambda_{(M)}^{(G)}r_{PO}^{(M)}})\\\\&=\boldsymbol{v_M^{(G)}}+\boldsymbol{\Lambda_{(M)}^{(G)}\dot r_{PO}^{(M)}}+\boldsymbol{\omega _M^{(G)}}\times (\boldsymbol{\Lambda_{(M)}^{(G)}r_{PO}^{(M)}})\\\\\end{array}\]

and

\[\boldsymbol{\omega _i^{(G)}}=\boldsymbol{\omega _M^{(G)}}+\boldsymbol{\Lambda_{(M)}^{(G)}\omega _L^{(M)}}\]

where the local system is rotating with instantaneous angular speed \(\mathrm {\boldsymbol{\omega _M^{(G)}}}\) relative to the master system, and the master system is rotating with instantaneous angular speed \(\mathrm {\boldsymbol{\omega _L^{(G)}}}\) relative to the global system. Using the same expression for the time derivative of vectors, the acceleration is found to be

\[\begin{array}{ll}\boldsymbol{a_i^{(G)}}&=\boldsymbol{a_M^{(G)}}+\boldsymbol{\Lambda_{(M)}^{(G)}a_i^{(M)}}+\boldsymbol{\alpha _M^{(G)}}\times (\boldsymbol{\Lambda_{(M)}^{(G)}r_{PO}^{(M)}})+2\boldsymbol{\omega _M^{(G)}}\times (\boldsymbol{\Lambda_{(M)}^{(G)}v_i^{(M)}})\\\\&+\boldsymbol{\omega _M^{(G)}}\times (\boldsymbol{\omega _M^{(G)}}\times (\boldsymbol{\Lambda_{(M)}^{(G)}r_{PO}^{(M)}}))\end{array}\]

and

\[\boldsymbol{\alpha _i^{(G)}}=\boldsymbol{\alpha _M^{(G)}}+\boldsymbol{\Lambda_{(M)}^{(G)}\alpha _L^{(M)}}\]

where \(\mathrm {\boldsymbol{\alpha }}\) is the angular acceleration. These formulas can be used recursively for computing positions, velocities and accelerations of all members when the relative motion between neighbouring members is known.

1.2. Computation of motion sequences

The motion of the articulated structure members can be defined in one of the following ways (see also Table 1):

  1. By giving start time, distance to move, velocity at steady state and ramp-up acceleration

  2. By giving start time, stop time, velocity at steady state and ramp-up acceleration

  3. By giving start time, stop time, distance to move and ramp-up acceleration

Other combinations could also be thought of, but are not considered as being relevant.

Sequences with ramps of constant acceleration

We assume intervals of constant acceleration \(\mathrm {\pm a}\) , velocity \(\mathrm {\nu}\) and retardation \(\mathrm {\mp a}\) , where \(\mathrm {a}\) is a positive scalar. The upper signs then refer to the case where the velocity \(\mathrm {\nu}\) is positive and the lower signs to the case where it is negative. The following equation gives the relation between position, velocity and acceleration throughout the sequence:

\[\Delta x=\Delta t_a^2a+\Delta t_\nu\nu\]

where \(\mathrm {\Delta t_a=|\nu|/a}\) and \(\mathrm {\Delta t_\nu=(t_b-t_a)-2\Delta t_a}\) are the length of time intervals for constant acceleration and constant velocity, respectively.

In case of sequence type 1 we need to find the stop time, which is given by the expression:

\[t_b=t_a+\frac{\Delta x}{\nu}+\frac{|\nu|}{a}\]

as \(\mathrm {a}\) is always positive. Furthermore sequence type 3 gives the need of calculating the steady-state velocity, which may be found as

\[\nu=\mathrm {sign}(\Delta x)a(\Delta t-\sqrt{(\Delta t)^2-\frac{4}{a}|\Delta x|})\]

Sequences with continuous acceleration

With continuous and stepwise straight velocity functions, we get discontinuities in the acceleration function. This can be avoided by e.g. defining the startup ramps (of length \(\mathrm {\Delta }\)t) as velocity cosine functions,

\[\nu(t)=\frac{1}{2}\nu_s[1-\cos(\frac{\pi }{\Delta t}t)]\]

where \(\mathrm {\nu_s}\) is the steady-state velocity. This gives an acceleration equal to

\[a(t)=\frac{1}{2}\nu_s\frac{\pi }{\Delta t}\sin(\frac{\pi }{\Delta t}t)\]

Then the acceleration has a maximum value equal to \(\displaystyle a_\mathrm {max}=|(1/2)\cdot \nu_s(\pi /\Delta t)|\) which is a factor \(\mathrm {\pi /2}\) larger than what we get with constant acceleration ramps. In order to ensure smooth start and stop of sequences we may just replace the straight velocity ramps with the smooth ones, keeping the other parameters the same. In computations using equations Equation (16) to Equation (18) we must replace \(\mathrm {a}\) by \(2a/\pi\) .

Multistep sequences

Each sequence is defined with a start time, stop time and velocity. In case the user specifies several motion sequences for the same body, the sequences will just be added. This is the same as defined for the winch sequence format. See Figure 2 for an example.

image647
Figure 1. Example of a simple sequence
image648
Figure 2. Multistep sequence