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 bodyfixed 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:
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:
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:
Here the cross product operator is given by:
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
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:
Forces may be transformed to the new reference point by use of the same matrix:
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
If needed, the reaction forces due to motion of the crane members can now be calculated by
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):
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:
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:
and
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
and
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):

By giving start time, distance to move, velocity at steady state and rampup acceleration

By giving start time, stop time, velocity at steady state and rampup acceleration

By giving start time, stop time, distance to move and rampup 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:
where \(\mathrm {\Delta t_a=\nu/a}\) and \(\mathrm {\Delta t_\nu=(t_bt_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:
as \(\mathrm {a}\) is always positive. Furthermore sequence type 3 gives the need of calculating the steadystate velocity, which may be found as
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,
where \(\mathrm {\nu_s}\) is the steadystate velocity. This gives an acceleration equal to
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.