1 Introduction

It requires a proper framework in mathematics to describe both translation and rotation to determining the kinematics of a mechanism in a general way [1]. This can be achieved by an algebraic or graphical method in most cases [2, 3]. The forward kinematics can be obtained by using the homotopic continuation sometimes [1]. But there might be a number of finite solutions that correspond to different configurations in assembly [4]. It was demonstrated that the inverse kinematics of a 5-DOF hybrid machine tool has 16 solutions while the forward kinematics has only 6 real solutions [5]. The algorithm of forward kinematics comes from the geometry of quadrics [6]. It is equivalent to solving a 6th-order polynomial, the 12 roots of which represent 12 forward kinematics solutions [2]. Therefore, the forward kinematics of a parallel mechanism is quite complex and often has multiplicity of solution [4]. Moreover, the forward kinematics in most cases is accomplished in three-dimensional Euclidean space that has a simpler expression [1].

Both forward and inverse kinematics are required to study the motion of a robot in time domain. Analytic formulae of inverse kinematics enable the trajectory generating methods that may calculate the coordinates of points located on the reference trajectory in a single step [3, 5, 7]. The expected trajectory of an end effector is specified in terms of position and orientation in the reachable workspace [7, 8]. Computation of forward kinematics with enough precision for a robot is crucial for real-time control. It is one of the tasks of kinematic analysis on a mechanism to build the correlation between joint and the Cartesian coordinates of the end effector with respect to the fixed platform [9]. Joint variables are often adopted to set the forward kinematics and inverse kinematics as well [1, 3, 5]. Due to the nonlinear equations of trigonometric system deduced from the multi-loop architectures, it is impossible in many cases to get closed-form solutions [10]. Therefore, not only the forward kinematics but also the inverse kinematics are required to determine the motion, statics and to decide a control scheme for the robot [7, 11, 12]. Algorithms to solve a non-linear equation, the Newton–Raphson method for example, are usually used for parallel robots [7, 9].

This paper focuses on the kinematics of a screw linkage and proposes an algorithm to investigate the displacement and acceleration with velocities in twist coordinates compared with [13]. A screw linkage is a mechanism each joint of which is a screw one that can be easily reduced to other types of joints. By making the pitch zero, we end up with a purely revolute joint and we end up with a purely prismatic joint or slider by making the pitch infinite. Similarly, other types of joints such as spherical and universal ones can also be modelled as the combination of more screw joints in this way. In this regards, all spatial linkages can be generalized as screw ones and this method can be directly generalized to spatial linkages compared with [13]. A linkage is a planar screw linkage when all joint axes have the same direction in space.

Twist is a dual vector in the form of six coordinates playing an invaluable role in the kinematics of a robotic mechanism [14, 15]. The first three coordinates of a twist represent the angular velocity while the last three represent the linear velocity of a point on the rigid body that coincides with the origin at the moment [16]. Therefore, a twist presents both angular velocity of a rigid body and the linear velocity of a point on it. This point is changing from time to time but there is no effect on the analysis on the velocity relationship of all links. Therefore, we call such a point as the marking point of the body to indicate the reference of all analysis in this paper.

2 Velocity analysis of screw linkages

2.1 Velocity of the end effector of a screw jointed kinematic chain

In a 3-dimensional xyz-space shown in Fig. 1a, there is a planar kinematic chain A1,A2An−1An which is connected by a number of screw joints, individually. The relative angular velocity of each joint Ai(i = 1, 2, …, n) with respect to its previous link in the chain of series is denoted by ωi in the coordinate frame shown in Fig. 1. Therefore, the linear velocity of the point on the end effector is expressed by \({{_{E}}\varvec{v}}_{n} = {\varvec{\omega}}_{n} \times {\varvec{r}}_{{A_{n} E}} + p_{n} {\varvec{\omega}}_{n}\) where E is a point fixed on the end effector and \({\varvec{r}}_{{A_{n} E}}\) is the vector from point An on the nth screw axis to point E [17, 18], pn is the pitch of the screw.

Fig. 1
figure 1

Twist of an articulated series linkage

The velocity of a point attached to the end effector that coincides with the origin at this moment is \({{_{o}}\varvec{v}}_{n} = {\varvec{\omega}}_{n} \times {\varvec{r}}_{{A_{n} o}} + p_{n} {\varvec{\omega}}_{n}\) where \({\varvec{r}}_{{A_{n} o}} { = } - {\varvec{r}}_{{oA_{n} }}\) and \({\varvec{r}}_{{oA_{n} }}\) is often rewritten by \({\varvec{r}}_{{A_{n} }}\) for short to indicate the position of point An on the nth axis. As a result, there is \({{_{o}}\varvec{v}}_{n} = {\varvec{\omega}}_{n} \times \left( { - {\varvec{r}}_{{A_{n} }} } \right) + p_{n} {\varvec{\omega}}_{n} { = }{\varvec{r}}_{{A_{n} }} \times {\varvec{\omega}}_{n} + p_{n} {\varvec{\omega}}_{n}\) which is shown in Fig. 1a. The dual 3-dimensional vectors \({\varvec{\omega}}_{n}\), \({{_{o}}\varvec{v}}_{n}\) and the pitch pn entirely decide the relative motion of the end effector comparing to its previous link. Hence, we may define the dual vector in screw form:

$$ {{_{o}}\boldsymbol{\$}}_{n} = \left[ {\begin{array}{*{20}c} {{\varvec{\omega}}_{n} } \\ {{\varvec{r}}_{{A_{n} }} \times {\varvec{\omega}}_{n} + p_{n} {\varvec{\omega}}_{n} } \\ \end{array} } \right] $$
(1)

The screw \({{_{o}}\boldsymbol{\$}}_{n}\) is called a twist of the end effector about joint An in which the linear velocity is expressed with a marking point on the end effector that is instantaneously passing through the origin o of the coordinate frame. Note that at the next instant there is a different point overlapped with the origin as the marking point. This instantaneous property of the dual part of a twist is represented by \({\varvec{r}}_{{A_{n} }} \times {\varvec{\omega}}_{n} + p_{n} {\varvec{\omega}}_{n}\). Assume en is the unit direction vector of ωn, then \(\left\| {{\varvec{e}}_{n} } \right\| = 1\) where \(\left\| \cdot \right\|\) represents the norm of a vector ‘·’ and Eq. (1) is therefore rewritten by

$$ {{_{o}}\boldsymbol{\$}}_{n} = \omega_{n} \left[ {\begin{array}{*{20}c} {{\varvec{e}}_{n} } \\ {{\varvec{r}}_{{A_{n} }} \times {\varvec{e}}_{n} + p_{n} {\varvec{e}}_{n} } \\ \end{array} } \right] $$
(2)

where ωn is the relative angular speed of the screw joint An with respect to its previous link. Let

$$ {{_{o}}\boldsymbol{\$}}_{{n_{u} }} = \left[ {\begin{array}{*{20}c} {{\varvec{e}}_{n} } \\ {{\varvec{r}}_{{A_{n} }} \times {\varvec{e}}_{n} + p_{n} {\varvec{e}}_{n} } \\ \end{array} } \right] $$
(3)

where \({{_{o}}\boldsymbol{\$}}_{{n_{u} }}\) is a unit screw because the norm of en is \(\left\| {{\varvec{e}}_{n} } \right\|{ = 1}\).

In Eq. (3), the first three components prescribe the unit direction of a rotation and the last three components specify implicitly the location of the rotational axis with respect to the origin of the absolute coordinate frame [16, 17]. Equation (2) can be therefore expressed by

$$ {{_{o}}\boldsymbol{\$}}_{n} = \omega_{n} {{_{o}}\boldsymbol{\$}}_{{n_{u} }} $$
(4)

When we unlock the revolute joint An−1, the linear velocity of the point on the end effector that coincides with the origin at this instant will increase \(\omega_{n - 1} \left( {{\varvec{r}}_{{A_{n - 1} }} \times {\varvec{e}}_{n - 1} + p_{n - 1} {\varvec{e}}_{n - 1} } \right)\) which is shown in Fig. 1b. The absolute angular velocity of the end effector is now

$$ {\varvec{\omega}}_{E}= {\varvec{\omega}}_{n} { + }{\varvec{\omega}}_{n - 1} $$
(5)

and the absolute translational velocity of the end effector with the marking point of the origin on it is

$$ {{_{o}}\varvec{v}}_{E}= \omega_{n} \left( {{\varvec{r}}_{{A_{n} }} \times {\varvec{e}}_{n} + p_{n} {\varvec{e}}_{n} } \right){ + }\omega_{n - 1} \left( {{\varvec{r}}_{{A_{n - 1} }} \times {\varvec{e}}_{n - 1} + p_{n - 1} {\varvec{e}}_{n - 1} } \right) $$
(6)

where \({{_{o}}\varvec{v}}_{E}\) denotes the velocity of a point on the end effector that coincides with the origin at the moment illustrated in Fig. 1c. Therefore, the twist of the end effector with respect to the fixed coordinate frame is

$$ {{_{o}}\boldsymbol{\$}}_{E}= \left[ {\begin{array}{*{20}c} {{\varvec{\omega}}_{E}} \\ {{{_{o}}\varvec{v}}_{E}} \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {\omega_{n} {\varvec{e}}_{n} + \omega_{n - 1} {\varvec{e}}_{n - 1} } \\ {\omega_{n} \left( {{\varvec{r}}_{{A_{n} }} \times {\varvec{e}}_{n} + p_{n} {\varvec{e}}_{n} } \right) + \omega_{n - 1} \left( {{\varvec{r}}_{{A_{n - 1} }} \times {\varvec{e}}_{n - 1} + p_{n - 1} {\varvec{e}}_{n - 1} } \right)} \\ \end{array} } \right] $$
(7)

Alternatively, Eq. (7) can be represented by

$$ {{_{o}}\boldsymbol{\$}}_{E}= \omega_{n} {{_{o}}\boldsymbol{\$}}_{nu} { + }\omega_{n - 1} {{_{o}}\boldsymbol{\$}}_{n - 1u} $$
(8)

which is expressed in matrix multiplication form:

$$ {{_{o}}\boldsymbol{\$}}_{E}= {\mathbf{S}}_{E}{\varvec{\omega}} $$
(9)

where \({\mathbf{S}}_{E}{\mathbf{ = }}\left[ {\begin{array}{*{20}c} {{\varvec{e}}_{n} } & {{\varvec{e}}_{n - 1} } \\ {{\varvec{r}}_{{A_{n} }} \times {\varvec{e}}_{n} + p_{n} {\varvec{e}}_{n} } & {{\varvec{r}}_{{A_{n - 1} }} \times {\varvec{e}}_{n - 1} + p_{n - 1} {\varvec{e}}_{n - 1} } \\ \end{array} } \right]\) and \({\varvec{\omega}}{ = }\left[ {\begin{array}{*{20}c} {\omega_{n} } \\ {\omega_{n - 1} } \\ \end{array} } \right]\).

Similarly, the twist of the end effector, \({{_{o}}\boldsymbol{\$}}_{E}\), when all joints are unlocked shown in Fig. 1c can be expressed as

$$ {{_{o}}\boldsymbol{\$}}_{E}= {\mathbf{S}}{\varvec{\omega}} $$
(10)

where

$$ {\mathbf{S}} = \left[ {\begin{array}{*{20}c} {{{_{o}}\boldsymbol{\$}}_{n} } & {{{_{o}}\boldsymbol{\$}}_{n - 1} } & \ldots & {{{_{o}}\boldsymbol{\$}}_{2} } & {{{_{o}}\boldsymbol{\$}}_{1} } \\ \end{array} } \right] $$
(11)

and \({{_{o}}\boldsymbol{\$}}_{i} { = }\left[ {\begin{array}{*{20}c} {{\varvec{e}}_{i} } \\ {{\varvec{r}}_{{A_{i} }} \times {\varvec{e}}_{i} + p_{i} {\varvec{e}}_{i} } \\ \end{array} } \right],i = 1,2, \cdots\), and

$$ {\varvec{\omega}} = \left[ {\begin{array}{*{20}c} {\omega_{n} } & {\omega_{{n{ - 1}}} } & \ldots & {\omega_{2} } & {\omega_{1} } \\ \end{array} } \right]^{T} $$
(12)

\({{_{o}}\boldsymbol{\$}}_{i}\) and the unit screw matrix S are both functions of the angular displacements of every joint in the kinematic chain, \({\varvec{\theta}} = \left[ {\begin{array}{*{20}c} {\theta_{1} } & {\theta_{2} } & \ldots & {\theta_{n - 1} } & {\theta_{n} } \\ \end{array} } \right]^{T}\). Alternatively, all elements in Eqs. (11) and (12) are also available to be arranged in the natural sequence:

$$ {\mathbf{S}} = \left[ {\begin{array}{*{20}c} {{{_{o}}\boldsymbol{\$}}_{1} } & {{{_{o}}\boldsymbol{\$}}_{2} } & \ldots & {{{_{o}}\boldsymbol{\$}}_{n - 1} } & {{{_{o}}\boldsymbol{\$}}_{n} } \\ \end{array} } \right] $$
(13)
$$ {\varvec{\omega}} = \left[ {\begin{array}{*{20}c} {\omega_{1} } & {\omega_{2} } & \ldots & {\omega_{{n{ - 1}}} } & {\omega_{n} } \\ \end{array} } \right]^{T} $$
(14)

Equation (13) is the twist matrix of the series kinematic chain and Eq. (14) is a vector composed of all relative angular speeds of each generalized screw joint with respect to its previous link. The screw matrix (13) is formed by the geometric parameters of the linkage, and it can be programmed on a computer for forward and inverse velocities calculation. This procedure defines a straightforward inference of kinematics based on velocities in linkages having the same or similar topology.

2.2 Velocity loop equations of a screw linkage

Equation (10) states that the absolute screw of the end effector with a marking point coinciding with the origin o of the coordinate system can be directly obtained when ωi(i = 1, 2, …n) are all known for an open-chain linkage. For a closed-chain linkage, let us suppose that the twist of the end effector is

$$ {{_{o}}\boldsymbol{\$}}_{E}= \left[ {\begin{array}{*{20}c} {{\varvec{\omega}}_{E}} \\ {{{_{o}}\varvec{v}}_{E}} \\ \end{array} } \right] $$
(15)

We know that ωE is the absolute angular velocity of the end effector and \({{_{o}}\varvec{v}}_{E}\) is the velocity of the point on the end effector that coincides with the origin of the coordinate system at this moment. When the end effector is fixed with the ground, there must be \({{_{o}}\boldsymbol{\$}}_{E}= 0\) [19]. From Eq. (10), we therefore immediately get

$$ {{_{o}}\boldsymbol{\$}}_{E}= {\mathbf{S}}{\varvec{\omega}} = 0 $$
(16)

When the end effector is a slider, we know that any point on the slider will have the same translational velocity and therefore there is [16]:

$$ {{_{o}}\boldsymbol{\$}}_{E}= \left[ {\begin{array}{*{20}c} {0} \\ {{\varvec{v}}_{S} } \\ \end{array} } \right] $$
(17)

where vS is the velocity of the slider. From Eqs. (15) and (16), we obtain that

$$ \left[ {\begin{array}{*{20}c} {{\varvec{\omega}}_{E}} \\ {{{_{o}}\varvec{v}}_{E}} \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {0} \\ {{\varvec{v}}_{S} } \\ \end{array} } \right] $$
(18)

Equations (16) and (18) are both gained from the closed loop of the planar linkage [20]. Therefore, we call them the loop equations of the linkage. Sometimes, we can get the second-order kinematic constraints of a single-loop linkages in screw coordinates [21]. With these loop equations of velocity of a linkage, the forward and inverse velocities are solved directly.

After knowing the absolute twist of the end effector with a marking point on it that is coinciding with the origin, we gain the following equation from Eq. (10),

$$ {\mathbf{S}}^{T} {\mathbf{S}}{\varvec{\omega}} = {\mathbf{S}}^{T} {{_{o}}\boldsymbol{\$}}_{E}$$
(19)

When |STS|= 0, the serial robot is either redundantly actuated or in singularity configuration. Otherwise, we can get,

$$ {\varvec{\omega}} = \left[ {{\mathbf{S}}^{T} {\mathbf{S}}} \right]^{{ - {1}}} {\mathbf{S}}^{T} {{_{o}}\boldsymbol{\$}}_{E}$$
(20)

where [STS]−1ST is called the pseudo inverse of twist matrix S. Equation (20) represents the inverse velocity of the linkage. Of course, the acceleration of a point on the end effector of the serial chain can be expressed in terms of the time derivative of the direction and moment parts of the same twist coordinates and their Lie product [22, 23]. If all the links are connected serially in the linkage, the joint position and joint angular displacement θi(0), i = 1, 2, …, n will be known for the inverse kinematics. If the linkage forms a closed chain, the position and angular displacement of the rest joints of the linkage can be calculated with the closed geometry constraint of the linkage when the input(s) is(are) known. Anyway, the initial conditions of \({\varvec{\theta}}\left( {0} \right) = \left[ {\begin{array}{*{20}c} {\theta_{1} \left( 0 \right)} & {\theta_{2} \left( 0 \right)} & \cdots & {\theta_{n - 1} \left( 0 \right)} & {\theta_{n} \left( 0 \right)} \\ \end{array} } \right]^{T}\) can be expressed as the function of that of the initial actuations. Therefore, we can directly obtain the first solution of ω(1) from Eq. (20) by substituting θ(0) into the unit screw matrix S.

3 Displacement and acceleration analysis of the screw linkages

3.1 Inverse displacement and acceleration of the screw linkages

Then we get the successive parameters of S(j) from Eq. (11) by updating the data,

$$ {\varvec{\theta}}\left( {j{ + 1}} \right) = {\varvec{\theta}}\left( j \right) + \Delta t{\varvec{\omega}}\left( j \right) $$
(21)

where \({\varvec{\theta}}\left( j \right) = \left[ {\begin{array}{*{20}c} {\theta_{1} \left( j \right)} & {\theta_{2} \left( j \right)} & \ldots & {\theta_{n - 1} \left( j \right)} & {\theta_{n} \left( j \right)} \\ \end{array} } \right]^{T}\) and j = 1, 2, … which represents the iterative times corresponding to the real time course. The linear approximation of Taylor’s series is utilized to calculate the angular displacement in the numerical algorithm (21).

The angular acceleration of each joint can be numerically calculated by the trapezoid formula,

$$ {\varvec{\beta}}\left( j \right) = \frac{{{\varvec{\omega}}\left( {j{ + 1}} \right) - {\varvec{\omega}}\left( {j - {1}} \right)}}{{{2}\Delta t}} $$
(22)

where \({\varvec{\beta}}\left( j \right){ = }\left[ {\begin{array}{*{20}c} {\beta_{1} \left( j \right)} & {\beta_{2} \left( j \right)} & \ldots & {\beta_{n - 1} \left( j \right)} & {\beta_{n} \left( j \right)} \\ \end{array} } \right]^{T}\) which represents the angular acceleration vector consisting of all angular accelerations of joints A1, A2, …, An−1 and An at time jΔt.

The accuracy of the calculation is related to the time interval of Δt, and we can decrease the time interval of Δt to enhance the accuracy for calculation.

3.2 Forward displacement and acceleration of the screw linkages

For an open chain linkage, the forward velocity is directly presented by Eq. (10). Then through a similar numerical integration (21) and a similar numerical differential algorithm (22), the forward displacement and acceleration of the planar linkage will be gained. For a closed chain mechanism, the forward velocity is revised from the loop Eq. (10) supposing ω1 is the input,

$$ {\mathbf{A}}{\varvec{\omega}}_{F} = - \underline{{\omega_{1} }} {{_{o}}\boldsymbol{\$}}_{1} $$
(23)

where \({\mathbf{A}} = \left[ {\begin{array}{*{20}c} {{{_{o}}\boldsymbol{\$}}_{2} } & \ldots & {{{_{o}}\boldsymbol{\$}}_{n - 1} } & {{{_{o}}\boldsymbol{\$}}_{n} } \\ \end{array} } \right]\), \({\varvec{\omega}}_{F} = \left[ {\begin{array}{*{20}c} {\omega_{2} } & \ldots & {\omega_{{n - {1}}} } & {\omega_{n} } \\ \end{array} } \right]^{T}\).

When there is a solution for Eq. (23), we can always calculate it in the following way:

$$ {\varvec{\omega}}_{F} = - \underline{{\omega_{1} }} {_{o}}\left({{\mathbf{A}}^{T} {\mathbf{A}}} \right)^{ - 1} {\mathbf{A}}^{T} {\boldsymbol{\$}}_{1} $$
(24)

However, we can also simplify the calculation to be \({\varvec{\omega}}_{F} = - \underline{{\omega_{1} }} {_{o}}{\mathbf{A}}^{ - 1} {\boldsymbol{\$}}_{1}\) when A is a square matrix of full rank.

After getting forward velocity (24), we gain the forward displacement through one-order numerical integration:

$$ {\varvec{\theta}}_{F} \left( {j{ + 1}} \right) = {\varvec{\theta}}_{F} \left( j \right) + \Delta t{\varvec{\omega}}_{F} \left( j \right) $$
(25)

where \({\varvec{\theta}}_{F} \left( j \right) = \left[ {\begin{array}{*{20}c} {\theta_{2} \left( j \right)} & \ldots & {\theta_{n - 1} \left( j \right)} & {\theta_{n} \left( j \right)} \\ \end{array} } \right]^{T}\) and j = 1, 2, … which represents the iterative times. The linear approximation of Taylor’s series is utilized to calculate the angular displacement in the numerical algorithm (25).

The angular acceleration of each joint can be numerically calculated by the trapezoid formula,

$$ {\varvec{\beta}}_{F} \left( j \right) = \frac{{{\varvec{\omega}}_{F} \left( {j{ + 1}} \right) - {\varvec{\omega}}_{F} \left( {j - {1}} \right)}}{{{2}\Delta t}} $$
(26)

where \({\varvec{\beta}}_{F} \left( j \right){ = }\left[ {\begin{array}{*{20}c} {\beta_{2} \left( j \right)} & \ldots & {\beta_{n - 1} \left( j \right)} & {\beta_{n} \left( j \right)} \\ \end{array} } \right]^{T}\) which represents the angular acceleration vector consisting of the all angular accelerations of joints A2, A3, …, An−1 and An.

The accuracy of the calculation is related to the time interval of Δt, and we can decrease the time interval of Δt to enhance the accuracy for calculation.

4 Kinematics of closed-chain screw linkages

In this section, we will discuss the kinematics of some screw linkages with the above analysis.

4.1 Kinematics of a closed planar 5-bar screw linkage

Figure 2 illustrates a planar closed 5-bar screw linkage. In the absolute coordinate frame, we get the twist of the end effector from Eq. (10):

$$ {{_{o}}\boldsymbol{\$}}_{E}= {\mathbf{S}}{\varvec{\omega}}{ = 0} $$
(27)

where

$$ {\mathbf{S}} = \left[ {\begin{array}{*{20}c} {{\boldsymbol{\$}}_{1} } & {{\boldsymbol{\$}}_{2} } & {{\boldsymbol{\$}}_{3} } & {{\boldsymbol{\$}}_{4} } & {{\boldsymbol{\$}}_{5} } \\ \end{array} } \right] $$
(28)

in which

$$ {\boldsymbol{\$}}_{i} = \left[ {\begin{array}{*{20}c} {{\varvec{e}}_{i} } \\ {{\varvec{r}}_{{A_{i} }} \times {\varvec{e}}_{i} + p_{i} {\varvec{e}}_{i} } \\ \end{array} } \right] $$
(29)

for i = 1, 2, …, 5, and

$$ {\varvec{\omega}} = \left[ {\begin{array}{*{20}c} {\underline{{\omega_{1} }} } & {\omega_{2} } & {\omega_{{3}} } & {\omega_{{4}} } & {\omega_{{5}} } \\ \end{array} } \right]^{T} $$
(30)

where \(\underline{{\omega_{1} }}\) indicates that ω1 is the angular speed of the actuator of the planar linkage. To get the unit screw in Eq. (29), we calculate ei and \({\varvec{r}}_{{A_{i} }}\) in a simplified way. In Fig. 2, oxyz is the ground coordinate frame, oixiyizi (i = 1, 2, …, 5) are the individual local coordinate frames for each screw-jointed link. The transformation matrix between two adjacent coordinate frames is

$$ {^{{i - {1}}}}{\mathbf{T}}_{i} = \left[ {\begin{array}{*{20}c} {\cos \theta_{i} } & { - \sin \theta_{i} } & 0 & 0 \\ {\sin \theta_{i} } & {\cos \theta_{i} } & 0 & {0} \\ {0} & {0} & {1} & 0 \\ {0} & {0} & {0} & {1} \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & {d_{i} { + }p_{i} \theta_{i} } \\ 0 & 0 & 0 & 1 \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} 1 & 0 & 0 & {l_{i} } \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {\cos \theta_{i} } & { - \sin \theta_{i} } & 0 & {l_{i} \cos \theta_{i} } \\ {\sin \theta_{i} } & {\cos \theta_{i} } & 0 & {l_{i} \sin \theta_{i} } \\ {0} & {0} & {1} & {d_{i} { + }p_{i} \theta_{i} } \\ {0} & {0} & {0} & {1} \\ \end{array} } \right] $$
(31)

where i = 2, 3, …, 5 and di is the offset along zi axis to the common normal between zi axis and zi+1 axis which is also shown in Fig. 2a. Suppose

$$ {^{{i - {1}}}}{\mathbf{R}}_{i} = \left[ {\begin{array}{*{20}c} {\cos \theta_{i} } & { - \sin \theta_{i} } & 0 \\ {\sin \theta_{i} } & {\cos \theta_{i} } & 0 \\ 0 & 0 & {1} \\ \end{array} } \right] $$
(32)
Fig. 2
figure 2

A planar closed 5-bar screw linkage

From Eq. (31), the absolute unit direction of the ith screw axis is

$$ {\varvec{e}}_{i} = \left( {\prod\limits_{{j = {2}}}^{i} {{^{j - 1}}{\mathbf{R}}_{j} } } \right){\varvec{e}}_{iz} $$

where \({\varvec{e}}_{iz} { = }\left[ {\begin{array}{*{20}c} {0} & {0} & {1} \\ \end{array} } \right]^{T}\) which is the unit direction vector in the ith local coordinate frame. Therefore, we obtain that

$$ {\varvec{e}}_{i} = \left[ {\begin{array}{*{20}c} 0 & 0 & 1 \\ \end{array} } \right]^{T} $$
(33)
$$ {\varvec{h}}_{i} = \left( {\prod\limits_{j = 2}^{i} {{^{{j - {1}}}}{\mathbf{T}}_{j} } } \right){\varvec{h}}_{i0} $$
(34)

where \({\varvec{h}}_{i0} { = }\left[ {\begin{array}{*{20}c} {0} & {0} & {d_{i} } & {1} \\ \end{array} } \right]^{T}\) and \({\varvec{h}}_{i} { = }\left[ {\begin{array}{*{20}c} {x_{{o_{i} }} } & {y_{{o_{i} }} } & {z_{{o_{i} }} } & {1} \\ \end{array} } \right]^{T}\). The absolute coordinates of oi are expressed by

$$ {\varvec{r}}_{i} = \left[ {\begin{array}{*{20}c} {x_{{o_{i} }} } & {y_{{o_{i} }} } & {z_{{o_{i} }} } \\ \end{array} } \right]^{T} $$
(35)

Substituting Eqs. (34) and (35) into Eq. (29) presents the unit twist of each screw joint. Then we get the twist matrix from Eq. (28):

$$ {\boldsymbol{\$}}{ = }\left[ {\begin{array}{*{20}c} {{\boldsymbol{\$}}_{1} } & {{\boldsymbol{\$}}_{2} } & {{\boldsymbol{\$}}_{3} } & {{\boldsymbol{\$}}_{4} } & {{\boldsymbol{\$}}_{5} } \\ \end{array} } \right]{ = }\left[ {\begin{array}{*{20}c} 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \\ 1 & 1 & 1 & 1 & 1 \\ {y_{{o_{1} }} } & {y_{{o_{2} }} } & {y_{{o_{3} }} } & {y_{{o_{4} }} } & {y_{{o_{5} }} } \\ { - x_{{o_{1} }} } & { - x_{{o_{2} }} } & { - x_{{o_{3} }} } & { - x_{{o_{4} }} } & { - x_{{o_{5} }} } \\ {p_{1} } & {p_{2} } & {p_{3} } & {p_{4} } & {p_{5} } \\ \end{array} } \right] $$

From Eq. (27), we obtain that

$$ {{_{o}}\boldsymbol{\$}}_{E}= \left[ {\begin{array}{*{20}c} 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \\ 1 & 1 & 1 & 1 & 1 \\ {y_{{o_{1} }} } & {y_{{o_{2} }} } & {y_{{o_{3} }} } & {y_{{o_{4} }} } & {y_{{o_{5} }} } \\ { - x_{{o_{1} }} } & { - x_{{o_{2} }} } & { - x_{{o_{3} }} } & { - x_{{o_{4} }} } & { - x_{{o_{5} }} } \\ {p_{1} } & {p_{2} } & {p_{3} } & {p_{4} } & {p_{5} } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {\omega_{1} } \\ {\omega_{2} } \\ {\omega_{3} } \\ {\omega_{4} } \\ {\omega_{5} } \\ \end{array} } \right]{ = }\left[ {\begin{array}{*{20}c} 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ \end{array} } \right] $$
(36)

When p1 = p2 = p3 = p4 = p5, the rank of matrix \({{_{o}}\boldsymbol{\$}}_{E}\) is degenerated to 3, and the planar 5-bar screw linkage has 2 degrees of freedom, we can therefore arbitrarily choose two angular velocities as the inputs. When the rank of matrix \({{_{o}}\boldsymbol{\$}}_{E}\) is 4, and the planar 5-bar screw linkage has 1 degree of freedom, we can choose one angular velocity as the known variables arbitrarily.

4.1.1 Kinematics of the linkage when the rank of matrix \({{_{o}}\boldsymbol{\$}}_{E}\) is 4

When the rank of matrix \({{_{o}}\boldsymbol{\$}}_{E}\) is 4, and the twist of the end effector with a marking point on the origin, o1, of the coordinate frame is known, Eq. (27) can be rearranged as,

$$ {\mathbf{S}}_{F} {\varvec{\omega}}_{F} { = } - \underline{{\omega_{1} }} {\boldsymbol{\$}}_{1} $$
(37)

where \({\mathbf{S}}_{F} { = }\left[ {\begin{array}{*{20}c} {{\boldsymbol{\$}}_{{2}} } & {{\boldsymbol{\$}}_{{3}} } & {{\boldsymbol{\$}}_{{4}} } & {{\boldsymbol{\$}}_{5} } \\ \end{array} } \right]\) and \({\varvec{\omega}}_{F} = \left[ {\begin{array}{*{20}c} {\omega_{2} } & {\omega_{{3}} } & {\omega_{{4}} } & {\omega_{{5}} } \\ \end{array} } \right]^{T}\).

We compute ωF in the following way,

$$ {\mathbf{S}}_{F}^{T} {\mathbf{S}}_{F} {\varvec{\omega}}_{F} = - \underline{{\omega_{1} }} {\mathbf{S}}_{F}^{T} {\boldsymbol{\$}}_{1} $$
(38)

When \(\left| {{\mathbf{S}}_{F}^{T} {\mathbf{S}}_{F} } \right| \ne {0}\), we get,

$$ {\varvec{\omega}}_{F} = - \underline{{\omega_{1} }} \left\{ {\left[ {{\mathbf{S}}_{F}^{T} {\mathbf{S}}_{F} } \right]^{{ - {1}}} {\mathbf{S}}_{F}^{T} } \right\}{\boldsymbol{\$}}_{{1}} $$
(39)

Equation (39) represents the forward velocity of the planar 5-bar screw linkage of 1 degree of freedom.

For forward kinematics, we let the angular velocity of screw joint O1 be \(\omega_{1} { = }2\sin \left( {\frac{2\pi }{{25}}t} \right)\). As the length, li, i = 1, 2, …, 5 and the pitch of the screw, pi, i = 1, 2, …, 5, of each link is known, the offset, di, i = 1, 2, …, 5, along zi-axis to the common normal between zi-axis and zi+1-axis is known, and the unknown variables in S are the angles of each joint θi, i = 1, 2, …, 5.

We let the initial angular displacement of the joint O1 be \(\theta_{1} \left( 0 \right){ = }\frac{\pi }{2}\) and the initial angular displacement of the joint O5 be \(\theta_{5} \left( 0 \right){ = }\frac{\pi }{2}\). We can now calculate the initial angular displacements of \(\theta_{2} \left( {0} \right) = \arcsin \left( \frac{5}{6} \right)\), \(\theta_{3} \left( {0} \right) = \pi { + }2\arcsin \left( \frac{5}{6} \right)\), and \(\theta_{4} \left( {0} \right) = \frac{3\pi }{2}{ + }\arccos \left( \frac{5}{6} \right)\) through geometric relationship of the screw linkage shown in Fig. 2b.

Substituting the solutions of θi(0), i = 2, 3, …, 5, into SF, we get SF(0). Substituting the solutions of θ1(0) into S1, we get S1(0). Substituting SF(0) and S1(0) into Eq. (39), we obtain the initial angular velocities ωi(0), i = 1, 2, …, 5.

Based on the numerical algorithms (25) and (26), we get the forward displacement and acceleration solutions of the closed-chain linkage. With the structure parameters and the initial joint coordinates in Table 1, we programmed in MATLAB and obtained the displacement, velocity and acceleration curves for each joint that are illustrated in Fig. 3 by numerical algorithms of (25) and (26) based on Eq. (39), the traces of all screw joints are shown in Fig. 4.

Table 1 Parameters and the coordinate of the planar closed 5-bar screw linkage when the rank of matrix \({{_{o}}\boldsymbol{\$}}_{E}\) is 4
Fig. 3
figure 3

Forward kinematics of the planar closed 5-bar screw linkage

Fig. 4
figure 4

Trace of screw O2, O3, O4, O5

4.1.2 Kinematics of the linkage when the rank of matrix \({{_{o}}\boldsymbol{\$}}_{E}\) is 3

When the rank of matrix \({{_{o}}\boldsymbol{\$}}_{E}\) is 3 and the twists of O1 and O2 of the screw linkage are known, Eq. (27) can be rearranged as,

$$ {\mathbf{S}}_{F} {\varvec{\omega}}_{F} { = } - \underline{{\omega_{1} }} {\boldsymbol{\$}}_{1} - \underline{{\omega_{2} }} {\boldsymbol{\$}}_{2} $$
(40)

where \({\mathbf{S}}_{F} = \left[ {\begin{array}{*{20}c} {{\boldsymbol{\$}}_{{3}} } & {{\boldsymbol{\$}}_{{4}} } & {{\boldsymbol{\$}}_{5} } \\ \end{array} } \right]\) and \({\varvec{\omega}}_{F} = \left[ {\begin{array}{*{20}c} {\omega_{{3}} } & {\omega_{{4}} } & {\omega_{{5}} } \\ \end{array} } \right]^{T}\).

We compute ωF in the following way,

$$ {\mathbf{S}}_{F}^{T} {\mathbf{S}}_{F} {\varvec{\omega}}_{F} = - \underline{{\omega_{1} }} {\mathbf{S}}_{F}^{T} {\boldsymbol{\$}}_{1} - \underline{{\omega_{2} }} {\mathbf{S}}_{F}^{T} {\boldsymbol{\$}}_{2} $$
(41)

When \(\left| {{\mathbf{S}}_{F}^{T} {\mathbf{S}}_{F} } \right| \ne {0}\), we get

$$ {\varvec{\omega}}_{F} = - \underline{{\omega_{1} }} \left\{ {\left[ {{\mathbf{S}}_{F}^{T} {\mathbf{S}}_{F} } \right]^{{ - {1}}} {\mathbf{S}}_{F}^{T} } \right\}{\boldsymbol{\$}}_{{1}} - \underline{{\omega_{2} }} \left\{ {\left[ {{\mathbf{S}}_{F}^{T} {\mathbf{S}}_{F} } \right]^{{ - {1}}} {\mathbf{S}}_{F}^{T} } \right\}{\boldsymbol{\$}}_{{2}} $$
(42)

Equation (42) represents the forward velocity of the planar 5-bar screw linkage of 2 degrees of freedom.

For forward kinematics, we let the angular velocity of screw joint O1 be ω1 = 1 and the angular velocity of screw joint O2 be ω2 = 1. Because the length, li, i = 1, 2, …, 5 and screw, pi, i = 1, 2, …, 5, of each link is known, the offset, di, i = 1, 2, …, 5, along zi axis to the common normal between zi axis and zi+1 axis is known, and the unknown variables in S are the angles of each joint θi, i = 1, 2, …, 5.

We let the initial angular displacement of the joint O1 be \(\theta_{1} \left( 0 \right){ = }\frac{\pi }{2}\) and the initial angular displacement of the joint O5 be \(\theta_{5} \left( 0 \right){ = }\frac{\pi }{2}\). Therefore, the initial angular displacements of \(\theta_{2} \left( {0} \right) = \arcsin \left( \frac{5}{6} \right)\), \(\theta_{3} \left( {0} \right) = \pi { + }2\arcsin \left( \frac{5}{6} \right)\), and \(\theta_{4} \left( {0} \right) = \frac{3\pi }{2}{ + }\arccos \left( \frac{5}{6} \right)\) can be directly obtained through geometric constraint equation of the screw linkage.

Substituting the solutions of θi(0), i = 3, 4, 5, into SF, we get SF(0). Substituting the solutions of θ1(0) into S1, we get S1(0). Substituting the solutions of θ2(0) into S2, we get S2(0). Substituting SF(0), S1(0) and S2(0) into Eq. (42), we obtain the initial angular velocities ωi(0), i = 2, 3, …, 5.

Based on the numerical algorithms (25) and (26), we get the forward displacement and acceleration solutions of the closed-chain linkage. With the structure parameters and the coordinates of joints in Table 2, we programmed in MATLAB. The displacement, velocity and acceleration curves for each joint are illustrated in Fig. 5 by numerical algorithms of (25) and (26) based on Eq. (42), the trace of all screw joints are illustrated in Fig. 6.

Table 2 Parameters and the coordinate of the planar closed 5-bar screw linkage when the rank of matrix \({{_{o}}\boldsymbol{\$}}_{E}\) is 3
Fig. 5
figure 5

Forward kinematics of the planar closed 5-bar screw linkage

Fig. 6
figure 6

Trace of screw joints O2, O3, O4, O5

In this closed 5-bar screw linkage, the topologies of the kinematic chain are the same when we select A5 as the input and A1 as the output. So the forward kinematics and inverse kinematics have the same solution form and can therefore be solved with the same program.

4.2 Kinematics of a closed planar 6-bar screw linkage

Figure 7 illustrates a closed planar 6-bar screw linkage. In the absolute coordinate frame, we also get the twist of the end effector from Eq. (10):

$$ {{_{o}}\boldsymbol{\$}}_{E}= {\mathbf{S}}{\varvec{\omega}}{ = 0} $$
(43)

where

$$ {\mathbf{S}} = \left[ {\begin{array}{*{20}c} {{\boldsymbol{\$}}_{1} } & {{\boldsymbol{\$}}_{2} } & {{\boldsymbol{\$}}_{3} } & {{\boldsymbol{\$}}_{4} } & {{\boldsymbol{\$}}_{5} } & {{\boldsymbol{\$}}_{6} } \\ \end{array} } \right] $$
(44)

in which

$$ {\boldsymbol{\$}}_{i} = \left[ {\begin{array}{*{20}c} {{\varvec{e}}_{i} } \\ {{\varvec{r}}_{{A_{i} }} \times {\varvec{e}}_{i} + p_{i} {\varvec{e}}_{i} } \\ \end{array} } \right] $$
(45)

for i = 1, 2, …, 6.

Fig. 7
figure 7

A planar closed 6-bar screw linkage

From Eq. (43) we obtain

$$ {{_{o}}\boldsymbol{\$}}_{E}= \left[ {\begin{array}{*{20}c} 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ 1 & 1 & 1 & 1 & 1 & 1 \\ {y_{{o_{1} }} } & {y_{{o_{2} }} } & {y_{{o_{3} }} } & {y_{{o_{4} }} } & {y_{{o_{5} }} } & {y_{{o_{6} }} } \\ { - x_{{o_{1} }} } & { - x_{{o_{2} }} } & { - x_{{o_{3} }} } & { - x_{{o_{4} }} } & { - x_{{o_{5} }} } & { - x_{{o_{6} }} } \\ {p_{1} } & {p_{2} } & {p_{3} } & {p_{4} } & {p_{5} } & {p_{6} } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {\omega_{1} } \\ {\omega_{2} } \\ {\omega_{3} } \\ {\omega_{4} } \\ {\omega_{5} } \\ {\omega_{6} } \\ \end{array} } \right]{ = }\left[ {\begin{array}{*{20}c} 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ \end{array} } \right] $$
(46)

From Eq. (46), when the rank of matrix \({{_{o}}\boldsymbol{\$}}_{E}\) is 4, we can choose any two angular velocities as the known variables, ω1 and ω6 for example:

$$ {\varvec{\omega}} = \left[ {\begin{array}{*{20}c} {\underline{{\omega_{1} }} } & {\omega_{2} } & {\omega_{{3}} } & {\omega_{{4}} } & {\omega_{{5}} } & {\underline{{\omega_{{6}} }} } \\ \end{array} } \right]^{T} $$
(47)

where \(\underline{{\omega_{1} }}\) indicates that ω1 is the input of actuation, and \(\underline{{\omega_{6} }}\) indicates that ω6 is the input of actuation. To get the unit screw in Eq. (47), we calculate ei and \({\varvec{r}}_{{A_{i} }}\) in a similar way to Sect. 4.1. Equation (43) can be expanded

$$ {\mathbf{S}}_{F} {\varvec{\omega}}_{F} { = } - \underline{{\omega_{1} }} {\boldsymbol{\$}}_{1} - \underline{{\omega_{6} }} {\boldsymbol{\$}}_{6} $$
(48)

where \({\mathbf{S}}_{F} { = }\left[ {\begin{array}{*{20}c} {{\boldsymbol{\$}}_{{2}} } & {{\boldsymbol{\$}}_{3} } & {{\boldsymbol{\$}}_{{4}} } & {{\boldsymbol{\$}}_{{5}} } \\ \end{array} } \right]\) and \({\varvec{\omega}}_{F} = \left[ {\begin{array}{*{20}c} {\omega_{2} } & {\omega_{3} } & {\omega_{4} } & {\omega_{5} } \\ \end{array} } \right]^{T}\). Therefore, we gain that

$$ {\mathbf{S}}_{F}^{T} {\mathbf{S}}_{F} {\varvec{\omega}}_{F} = - \underline{{\omega_{1} }} {\mathbf{S}}_{F}^{T} {\boldsymbol{\$}}_{1} - \underline{{\omega_{6} }} {\mathbf{S}}_{F}^{T} {\boldsymbol{\$}}_{6} $$
(49)

where \({\mathbf{S}}_{F}^{T} {\mathbf{S}}_{F}\) is a 4 × 4-matrix. When \(\left| {{\mathbf{S}}_{F}^{T} {\mathbf{S}}_{F} } \right|{ = 0}\), the serial robot is either redundantly actuated or in singularity configuration. Otherwise, we can get,

$$ {\varvec{\omega}}_{F} = - \underline{{\omega_{1} }} \left\{ {\left[ {{\mathbf{S}}_{F}^{T} {\mathbf{S}}_{F} } \right]^{{ - {1}}} {\mathbf{S}}_{F}^{T} } \right\}{\boldsymbol{\$}}_{{1}} - \underline{{\omega_{6} }} \left\{ {\left[ {{\mathbf{S}}_{F}^{T} {\mathbf{S}}_{F} } \right]^{{ - {1}}} {\mathbf{S}}_{F}^{T} } \right\}{\boldsymbol{\$}}_{{6}} $$
(50)

For forward kinematics, we let the angular velocity of screw joint O1 be \(\omega_{1} { = }2\sin \left( {4\pi t} \right)\) and the angular velocity of screw joint O6 be \(\omega_{6} { = } - 2\sin \left( {4\pi t} \right)\). As the length, li, i = 1, 2, …, 6, and pitch of the screw, pi, i = 1, 2, …, 6, of the each link is known, the offset, di, i = 1, 2, …, 6, along zi-axis to the common normal between zi-axis and zi+1-axis is known, and the unknown variables in S are the angles of each joint θi, i = 1, 2, …, 6.

We let the initial angular displacement of the first joint O1 be \(\theta_{1} \left( 0 \right){ = }\frac{\pi }{2}\) and the initial angular displacement of the sixth joint O6 be \(\theta_{6} \left( 0 \right){ = }\frac{\pi }{2}\). The initial angular displacements of \(\theta_{2} \left( {0} \right) = \frac{11\pi }{6}\), \(\theta_{3} \left( {0} \right) = \frac{5\pi }{3}\), \(\theta_{4} \left( {0} \right) = \frac{5\pi }{3}\) and \(\theta_{5} \left( {0} \right) = \frac{11\pi }{6}\) can be calculated through triangular geometric relationship of the screw linkage.

Substituting the solutions of θi(0), i = 2, 4, …, 5, into SF, we get SF(0). Substituting the solutions of θ1(0) into S1, we get S1(0). Substituting the solutions of θ6(0) into S6, we get S6(0). Substituting SF(0), S1(0) and S6(0) into Eq. (50), we obtain the initial angular velocities ωi(0), i = 1, 3, …, 6.

Based on the numerical algorithms (25) and (26), we get the forward displacement and accelerations of the closed-chain linkage. With the structure parameters and the initial joint coordinates in Table 3, we programmed in MATLAB. The displacement, velocity and acceleration curves for each joint are illustrated in Fig. 8 by numerical algorithms of (25) and (26) based on Eq. (50). the traces of all screw joints are shown in Fig. 9.

Table 3 Parameters and the coordinate of the planar closed 6-bar screw linkage
Fig. 8
figure 8

Forward kinematics of the planar closed 6-bar screw linkage

Fig. 9
figure 9

Traces of screw joints O2, O3, O4, O5

We next discuss the different traces of the linkage with different pitches of screw joints.

Type I: \(p = \left[ {\begin{array}{*{20}c} 5 & 5 & 5 & 5 & 5 & 5 \\ \end{array} } \right]^{T}\).

When \(p = \left[ {\begin{array}{*{20}c} 5 & 5 & 5 & 5 & 5 & 5 \\ \end{array} } \right]^{T}\), the rank of matrix \({{_{o}}\boldsymbol{\$}}_{E}\) is 3, and the planar 6-bar screw linkage has 3 degrees of freedom, we choose three angular velocities as the known variables arbitrarily, we let \(\omega_{1} = 2\sin \left( {4\pi t} \right)\), \(\omega_{2} = - 2\sin \left( {4\pi t} \right)\) and \(\omega_{6} = - 2\sin \left( {4\pi t} \right)\) for example. From Fig. 10, the screw joint O2 outputs a spiral motion, screw joints O3, O4, O5 make circular motions, and screw joint O6 generates a translational motion.

Fig. 10
figure 10

Traces of screw joints O2, O3, O4, O5 (Type I)

Type II: \(p = \left[ {\begin{array}{*{20}c} 5 & {10} & {15} & {15} & {10} & 5 \\ \end{array} } \right]^{T}\).

When \(p = \left[ {\begin{array}{*{20}c} 5 & {10} & {15} & {15} & {10} & 5 \\ \end{array} } \right]^{T}\), the rank of matrix \({{_{o}}\boldsymbol{\$}}_{E}\) is 4, and the planar 6-bar screw linkage has 2 degrees of freedom, we choose two angular velocities as the known variables arbitrarily, say, \(\omega_{1} = 2\sin \left( {4\pi t} \right),\,\omega_{6} = - 2\sin \left( {4\pi t} \right)\) for instance. From Fig. 11, the screw joints of O2, O3, O4, O5 output spiral motions, and screw joint O6 generates a translational motion.

Fig. 11
figure 11

Traces of screw joints O2, O3, O4, O5 (Type II)

Type III: \(p = \left[ {\begin{array}{*{20}c} 0 & 0 & {10} & {10} & {10} & {10} \\ \end{array} } \right]^{T}\).

When \(p = \left[ {\begin{array}{*{20}c} 0 & 0 & {10} & {10} & {10} & {10} \\ \end{array} } \right]^{T}\), the rank of matrix \({{_{o}}\boldsymbol{\$}}_{E}\) is 4, and the planar 6-bar screw linkage has 2 degrees of freedom, we choose three angular velocities as the known variables arbitrarily, for example, \(\omega_{1} = 2 \times \sin \left( {4\pi t} \right)\) and \(\omega_{6} = - 2 \times \sin \left( {4\pi t} \right)\). From Fig. 12, the screw joints of O2, O3, O4, O5 output spiral motions, and screw joint O6 produces a translational motion.

Fig. 12
figure 12

Trace of screw O2, O3, O4, O5 (Type III)

5 Conclusions

This paper proposes a programable algorithm to study the kinematics of screw linkages in twist coordinates. The screw of a link consists of angular velocity and linear velocity of a point on the body that is instantaneously superimposed with the origin of the coordinate frame. The forward and inverse velocities of the linkage are first deduced. With numerical integration on velocity solutions, the displacement of the screw linkage is obtained. Via numerical differential interpolation, the accelerations are also directly gained in a straightforward way for programming on a computer. Compared with the commercial software about the kinematics in which the displacement parameters are variables, the major advantages of the algorithm proposed in this paper are that only one order numerical interpolation is enough to compute the acceleration and the displacement. This algorithm is validated by some screw linkages for develo** software of kinematics of spatial mechanisms, from velocity to displacement and acceleration.