**3.3 2+2 Parallel modules arranged in a serial mode**

As was mentioned before, the robot is composed of several parallel modules, and they are able to attach themselves in series to perform more complex structures in order to carry out a particular operation.

The robot in the Figure 1 consists of 2 + 2 parallel modules arranged to each other in a serial configuration and connected by a top link between two actuated rotational joints. According to this configuration, a three-dimensional movement of 90 and 180 degrees is possible to achieve around the rotational axis of the joint, as shown in the Table 3:


Table 3. Positions of the rotational actuator

130 Serial and Parallel Robot Manipulators – Kinematics, Dynamics, Control and Optimization

b) Maximum length. Frontal view.

a) Minimum length. Frontal view.

Fig. 4. Minimum and maximum prolongation of the open-chain module

a) 45 degrees inclination b) 90 degrees inclination

As was mentioned before, the robot is composed of several parallel modules, and they are able to attach themselves in series to perform more complex structures in order to carry out

Fig. 5. Different postures of the open-chain module

a particular operation.

**3.3 2+2 Parallel modules arranged in a serial mode** 

Fig. 6. Posture to a surface change of the structural frame

Fig. 7. Posture to evade a structural node: changing the plane

A basic problem that must be solved in the development of this robot, is that it should be able to get around structural nodes. According to the Figure 7, a posture to evade a structural node is shown. Also, the Figure 6 shows a posture to achieve a surface change. Later in this chapter, we will discuss the kinematics of the modules, so we will not focus on all possible combinations of the actuators of the robot with 2+2 parallel modules arranged in a serial mode.

#### **4. Closed-chain module**

#### **4.1 Degrees of freedom of the module**

Figure 8(a) shows a CAD model of the closed-chain, and it is composed by two active links with variable length l1 (link e2 with e3) and l2 (link e4 with e5) , and two passive links, e1 and e6, with fixed length 2a1 and 2a2, respectively. A slider keeps the midpoint of the upper passive link e6 on the line x=a1. There is a fixed link e1, four revolute joints (1, 3, 5 and 7) and two prismatic joints (2 and 6).

According to the Grübler criterion (Grübler, 1883), the number of active degrees of freedom is given by:

$$F = \mathcal{\lambda}(n - j - 1) + \sum\_{i} f\_i \tag{1}$$

where:

*n*, the number of links in the mechanism, including the fixed link (from e1 to e7):

$$\mathbf{u} = \nabla \tag{2}$$

Design and Postures of a Serial Robot Composed by Closed-Loop Kinematics Chains 133

a) DoF: Grübler Criterion b) Equivalent Model

according to the reference system Sm solidary to the ground link. According to the figure 8(a), two vectorial equations are obtained:

(9), (10) and (11) these new equations are obtained:

To study the inverse kinematics of the parallel module of the robot, a series of vectorial equations have been defined to estimate the position and orientation of the base according

Inverse kinematics pretends to solve the position of the link e6 of figure 8(a) according to a reference system Sm that is solidary to the ground link. It could be defined as a translation *d*

We could define a movement for the parallel module in different alternative ways. In the next one it is indicated that the mid point of the e6 link should be at the position (a1, *d)*

12 2 *a l da*

where, a restriction on e6 or *d* link can be observed, because this vector angle will be always 90º according to the ground link a1. Through a vectorial decomposition of the equations (8),

*.* In this way, inverse kinematics proposes to solve (l1, l2) as a function of (*d,* 

1 21 *a da l* (8)

(9)

to the length of the linear actuators and the rotational angles of the rotational joints.

Fig. 8. Closed-chain module

and a rotation

*)* parameters.

**4.2 Inverse kinematics of the parallel module** 

 , degrees of freedom of the space (planar) in which the mechanism is intended to work:

$$\mathcal{Z} = \mathcal{Z} \tag{3}$$


$$j\_3 = 5 \tag{5}$$

*fi,* DoF permitted by revolute or prismatic joint i

$$f\_i = 1\tag{6}$$

replacing (2), (3), (4), (5), (6 in (1)

$$F = \mathfrak{Z}(\mathbb{Z} - 8 - 1) + \mathfrak{Z} \ast 1 + \mathfrak{Z} \ast 1 = \mathfrak{Z} \tag{7}$$

These Grübler criterion results could be represented with an equivalent model (figure 8(b)) composed by a prismatic joint plus a solidary revolute joint, that represents reliably the model of figure 8(a). In this model, the P part represents the 3D prismatic joint and the R part represents the 3D revolute joint. The total distance traveled by the slider is equivalent to the prismatic joint distance *d* of figure 8(a).

a) DoF: Grübler Criterion b) Equivalent Model

A basic problem that must be solved in the development of this robot, is that it should be able to get around structural nodes. According to the Figure 7, a posture to evade a structural node is shown. Also, the Figure 6 shows a posture to achieve a surface change. Later in this chapter, we will discuss the kinematics of the modules, so we will not focus on all possible combinations of the actuators of the robot with 2+2 parallel modules arranged in

Figure 8(a) shows a CAD model of the closed-chain, and it is composed by two active links with variable length l1 (link e2 with e3) and l2 (link e4 with e5) , and two passive links, e1 and e6, with fixed length 2a1 and 2a2, respectively. A slider keeps the midpoint of the upper passive link e6 on the line x=a1. There is a fixed link e1, four revolute joints (1, 3, 5 and 7) and

According to the Grübler criterion (Grübler, 1883), the number of active degrees of freedom

*F n* 

*n*, the number of links in the mechanism, including the fixed link (from e1 to e7):

( 1) *<sup>i</sup>*

7 *n* (2)

, degrees of freedom of the space (planar) in which the mechanism is intended to work:

These Grübler criterion results could be represented with an equivalent model (figure 8(b)) composed by a prismatic joint plus a solidary revolute joint, that represents reliably the model of figure 8(a). In this model, the P part represents the 3D prismatic joint and the R part represents the 3D revolute joint. The total distance traveled by the slider is equivalent to

*i*

*j f* (1)

(3)

<sup>1</sup>*j* 3 (4)

<sup>3</sup>*j* 5 (5)

1 *<sup>i</sup> f* (6)

*F* 3(7 8 1) 5 \* 1 3 \* 1 2 (7)

a serial mode.

is given by:

where:

**4. Closed-chain module** 

two prismatic joints (2 and 6).

**4.1 Degrees of freedom of the module** 

3

*fi,* DoF permitted by revolute or prismatic joint i

*j1*, number of prismatic joints

*j3*, number of revolute joints

replacing (2), (3), (4), (5), (6 in (1)

the prismatic joint distance *d* of figure 8(a).

## **4.2 Inverse kinematics of the parallel module**

To study the inverse kinematics of the parallel module of the robot, a series of vectorial equations have been defined to estimate the position and orientation of the base according to the length of the linear actuators and the rotational angles of the rotational joints.

Inverse kinematics pretends to solve the position of the link e6 of figure 8(a) according to a reference system Sm that is solidary to the ground link. It could be defined as a translation *d* and a rotation *.* In this way, inverse kinematics proposes to solve (l1, l2) as a function of (*d, )* parameters.

We could define a movement for the parallel module in different alternative ways. In the next one it is indicated that the mid point of the e6 link should be at the position (a1, *d)* according to the reference system Sm solidary to the ground link.

According to the figure 8(a), two vectorial equations are obtained:

$$
\overrightarrow{a\_1} + \overrightarrow{d} = \overrightarrow{a\_2} + \overrightarrow{l\_1} \tag{8}
$$

$$
\overrightarrow{a\_1} + \overrightarrow{l\_2} = \overrightarrow{d} + \overrightarrow{a\_2} \tag{9}
$$

where, a restriction on e6 or *d* link can be observed, because this vector angle will be always 90º according to the ground link a1. Through a vectorial decomposition of the equations (8), (9), (10) and (11) these new equations are obtained:

$$a\_1 = a\_2 \cos(\phi) + l\_1 \cos(q\_1) \tag{10}$$

Design and Postures of a Serial Robot Composed by Closed-Loop Kinematics Chains 135

We are going to set out the Levenberg-Marquardt numerical method (Levenberg, 1944),

11 1 2 *al q a* cos( ) cos( )

1 12 0 sin( ) sin( ) *l qa d*

12 2 2 *al q a* cos( ) cos( )

2 22 0 sin( ) sin( ) *l qa d*

1 1 12 *fs l q a* ( ) cos( ) cos( )

2 1 12 *<sup>f</sup>* ( ) sin( ) sin( ) *s l <sup>q</sup> a d*

3 2 22 *fs l q a* ( ) cos( ) cos( )

4 2 22 *<sup>f</sup>* ( ) sin( ) sin( ) *s l <sup>q</sup> a d*

*f s f s <sup>f</sup> <sup>f</sup> <sup>s</sup>*

*f s*

1 2

1

*a*

*<sup>y</sup> <sup>a</sup>* 

1 () () *i i i Fs f s y* 

1 0

<sup>4</sup> <sup>2</sup>

0

 

*s q q*

*d*

( ) ( ) ( ) ( )

(23)

(24)

(25)

(26)

(27)

(28)

(29)

(30)

(31)

(32)

(33)

(34)

(Marquardt, 1963) so the equations (14), (15), (16) and (17) should be redefined as:

An optimization process could be defined with the next functions:

defining:

where the state vector *s*

and the constraints vector:

is defined as:

Wherewith, the problem is raised as a minimization of the function:

$$d = l\_1 \sin(q\_1) + a\_2 \sin(\phi) \tag{11}$$

$$a\_1 + l\_2 \cos(q\_2) = a\_2 \cos(\phi) \tag{12}$$

$$l\_2 \sin(q\_2) = d + a\_2 \sin(\phi) \tag{13}$$

and with a new disposition of the equations:

$$a\_1 = l\_1 \cos(q\_1) + a\_2 \cos(\phi) \tag{14}$$

$$d = l\_1 \sin(q\_1) + a\_2 \sin(\phi) \tag{15}$$

$$l - a\_1 = l\_2 \cos(\eta\_2) - a\_2 \cos(\phi) \tag{16}$$

$$d = l\_2 \sin(q\_2) - a\_2 \sin(\phi) \tag{17}$$

it could be obtained *l1* link length based on *d* and from (14) and (15) equations:

$$\left(a\_1 - a\_2 \cos(\phi)\right)^2 = \left(l\_1 \cos(q\_1)\right)^2\tag{18}$$

$$\left(d - a\_2 \sin(\phi)\right)^2 = \left(l\_1 \sin(q\_1)\right)^2\tag{19}$$

where the addition of both of them:

$$\left(\left(a\_1 - a\_2 \cos(\phi)\right)^2 + \left(d - a\_2 \sin(\phi)\right)^2 = l\_1^2 \cos^2(q\_1) + l\_1^2 \sin^2(q\_1)\tag{20}$$

and in the next step we will find the value of l1, in order that q1 disappears from the equation:

$$d\_1 = +\sqrt{\left(a\_1 - a\_2 \cos(\phi)\right)^2 + \left(d - a\_2 \sin(\phi)\right)^2} \tag{21}$$

Likewise, for l2:

$$l\_2 = +\sqrt{\left(-a\_1 + a\_2 \cos(\phi)\right)^2 + \left(d + a\_2 \sin(\phi)\right)^2} \tag{22}$$

Only positive solutions are of interest for (l1, l2). As well, looking at the equations, with a pair (d, ), a unique pair (l1, l2) is obtained and, backwards, with (l1, l2) a unique pair (d, ) is obtained too.

#### **4.3 Forward kinematics of the parallel module**

Forward kinematics problem has been solved with a numerical method based on least squares method.

The equations (14), (15), (16) and (17) don't allow to find the value of and *d* as a length *l1* and *l2* function, because q1 and q2 are themselves function of *d* and .

We are going to set out the Levenberg-Marquardt numerical method (Levenberg, 1944), (Marquardt, 1963) so the equations (14), (15), (16) and (17) should be redefined as:

$$a\_1 = l\_1 \cos(q\_1) + a\_2 \cos(\phi) \tag{23}$$

$$0 = l\_1 \sin(\eta\_1) + a\_2 \sin(\phi) - d \tag{24}$$

$$-a\_1 = l\_2 \cos(q\_2) - a\_2 \cos(\phi) \tag{25}$$

$$0 = l\_2 \sin(q\_2) - a\_2 \sin(\phi) - d \tag{26}$$

An optimization process could be defined with the next functions:

$$f\_1(\vec{s}) = l\_1 \cos(\eta\_1) + a\_2 \cos(\phi) \tag{27}$$

$$f\_2(\vec{s}) = l\_1 \sin(q\_1) + a\_2 \sin(\phi) - d\tag{28}$$

$$f\_3(\vec{\mathbf{s}}) = l\_2 \cos(q\_2) - a\_2 \cos(\phi) \tag{29}$$

$$f\_4(\vec{\mathbf{s}}) = l\_2 \sin(q\_2) - a\_2 \sin(\phi) - d\tag{30}$$

defining:

134 Serial and Parallel Robot Manipulators – Kinematics, Dynamics, Control and Optimization

12 1 1 *aa l q* cos( ) cos( ) 

1 12 *dl q a* sin( ) sin( )

12 2 2 *al q a* cos( ) cos( )

22 2 *l q da* sin( ) sin( )

11 1 2 *al q a* cos( ) cos( )

1 12 *dl q a* sin( ) sin( )

12 2 2 *al q a* cos( ) cos( )

2 22 *dl q a* sin( ) sin( )

 <sup>2</sup> <sup>2</sup> 1 2 1 1 *aa l q* cos( ) cos( ) 

 <sup>2</sup> <sup>2</sup> 2 11 *da l q* sin( ) sin( ) 

 2 2 2 2 22 1 2 2 1 11 1 *a a da l* cos( ) sin( ) cos ( ) sin ( )

 

and in the next step we will find the value of l1, in order that q1 disappears from the

 2 2 1 12 <sup>2</sup> *l a a da* cos( ) sin( ) 

 2 2 2 12 <sup>2</sup> *l a a da* cos( ) sin( ) 

Only positive solutions are of interest for (l1, l2). As well, looking at the equations, with a

Forward kinematics problem has been solved with a numerical method based on least

The equations (14), (15), (16) and (17) don't allow to find the value of

and *l2* function, because q1 and q2 are themselves function of *d* and

), a unique pair (l1, l2) is obtained and, backwards, with (l1, l2) a unique pair (d,

and with a new disposition of the equations:

it could be obtained *l1* link length based on *d* and

**4.3 Forward kinematics of the parallel module** 

where the addition of both of them:

equation:

pair (d,

Likewise, for l2:

squares method.

obtained too.

from (14) and (15) equations:

*q l q* (20)

.

 

> 

(10)

(11)

(12)

(13)

(14)

(15)

(16)

(17)

(18)

(19)

(21)

(22)

and *d* as a length *l1*

) is

$$
\overrightarrow{f} = \begin{bmatrix} f\_1(\overrightarrow{\mathbf{s}}) \\ f\_2(\overrightarrow{\mathbf{s}}) \\ f\_3(\overrightarrow{\mathbf{s}}) \\ f\_4(\overrightarrow{\mathbf{s}}) \end{bmatrix} \tag{31}
$$

where the state vector *s* is defined as:

$$
\vec{s} = \begin{bmatrix} d \\ \phi \\ q\_1 \\ q\_2 \end{bmatrix} \tag{32}
$$

and the constraints vector:

$$
\vec{y} = \begin{bmatrix} a\_1 \\ 0 \\ -a\_1 \\ 0 \end{bmatrix} \tag{33}
$$

Wherewith, the problem is raised as a minimization of the function:

$$F(\vec{s}) = \sum\_{i=1}^{4} \left( f\_i(\vec{s}) - y\_i \right)^2 \tag{34}$$

For the minimization, we could raise an initial solution *s*<sup>0</sup> and update in the direction of the gradient *<sup>J</sup> s* 

$$
\vec{s}\_{k+1} = \vec{s}\_k + \delta \tag{35}
$$

Design and Postures of a Serial Robot Composed by Closed-Loop Kinematics Chains 137

According to the Subsection 3.3 a 2+2 parallel modules disposed in a serial structure could be set up. We are going to start from a complete serial model of the robot. The Figure 1

To solve forward kinematics of the open-chain, Denavit-Hartenberg algorithm (Denavit & Hartenberg, 1955; Uicker et al., 1964; Hartenberg & Denavit, 1964) has been used. In order to solve transformation matrices, *The Robotics Toolbox for Matlab* (Corke, 1996) has been used. Firstly, and following D-H convention, we could establish the coordinate axes as follows in

1 1

 

 

2

*L*

 

> 

1000 0010 0 10 0001

3 3

cos 0 sin 0 sin 0 cos 0 01 0 0 00 0 1

2 3 3

sin 0 cos 0 cos 0 sin 0 0 10 0 00 1

1

(44)

(45)

(46)

*H*

0 1 1

the Figure 10. Secondly, the transformation matrix will be solved:

1

1 2

3

*T*

*T*

*T*

shows this set up of the robot. An equivalent model is shown in the Figure 9.

this is known as the Levenberg-Marquardt algorithm.

Fig. 9. 3D model of the serial robot

**5. Forward kinematics of the open-chain module** 

with:

$$\mathcal{S} = (\iiint \, \text{")} \, ^T \vec{I} \, ^T (\vec{y} - \vec{f}) \tag{36}$$

where J is the Jacobian matrix of the robot.

For the algorithm converging, it must indicate an initial solution of the *s* . An approximation in order to achieve good results is:

$$d\_0 = \frac{l\_1 + l\_2}{2} \tag{37}$$

$$
\phi\_0 = \frac{l\_2 + l\_1}{2a\_2} \tag{38}
$$

$$q\_{10} = \arctan \frac{d\_0 - a\_2 \sin \phi\_0}{a\_1 - a\_2 \cos \phi\_0} \tag{39}$$

$$q\_{20} = \arctan \frac{d\_0 + a\_2 \sin \phi\_0}{-a\_1 + a\_2 \cos \phi\_0} \tag{40}$$

The Jacobian matrix is calculated as follows:

$$\begin{aligned} \mathbf{J} = \begin{bmatrix} \frac{\partial f\_1}{\partial d} & \frac{\partial f\_1}{\partial \phi} & \frac{\partial f\_1}{\partial q\_1} & \frac{\partial f\_1}{\partial q\_2} \\ \frac{\partial f\_2}{\partial d} & \frac{\partial f\_2}{\partial \phi} & \frac{\partial f\_2}{\partial q\_1} & \frac{\partial f\_2}{\partial q\_2} \\ \frac{\partial f\_3}{\partial d} & \frac{\partial f\_3}{\partial \phi} & \frac{\partial f\_3}{\partial q\_1} & \frac{\partial f\_3}{\partial q\_2} \\ \frac{\partial f\_4}{\partial d} & \frac{\partial f\_4}{\partial \phi} & \frac{\partial f\_4}{\partial q\_1} & \frac{\partial f\_4}{\partial q\_2} \\ \frac{\partial f\_4}{\partial d} & \frac{\partial f\_4}{\partial \phi} & \frac{\partial f\_4}{\partial q\_1} & \frac{\partial f\_4}{\partial q\_2} \end{bmatrix} = \begin{bmatrix} 0 & -a\_2 \sin \phi & -l\_1 \sin q\_1 & 0 \\ -1 & a\_2 \cos \phi & l\_1 \cos q\_1 & 0 \\ 0 & a\_2 \sin \phi & 0 & -l\_2 \sin q\_2 \\ -1 & -a\_2 \cos \phi & 0 & l\_2 \sin q\_2 \end{bmatrix} \tag{41}$$

In the performed tests in order to solve forward kinematics, the algorithm converges to the correct solution in only two iterations, with an F<0.0001 error. Others ways to find the value of could be probed, like:

$$\mathcal{S} = \left(\iint^T + \mathcal{X}I\right)^{-1} \boldsymbol{J}^T \left(\boldsymbol{\tilde{y}} - \boldsymbol{\overline{f}}\right) \tag{42}$$

where permits to regulate the speed as the function converges. Another way is:

$$\mathcal{S} = \left( \mathbf{J} \mathbf{J}^T + \lambda \text{diag}(\mathbf{J}^T \mathbf{J}) \right)^{-1} \mathbf{J}^T (\mathbf{\bar{y}} - \mathbf{\bar{f}}) \tag{43}$$

this is known as the Levenberg-Marquardt algorithm.

136 Serial and Parallel Robot Manipulators – Kinematics, Dynamics, Control and Optimization

*s s k k* <sup>1</sup>

<sup>1</sup> () ( ) *T T JJ J y f*

1 2 <sup>0</sup> 2

2 1

<sup>2</sup> 2 *l l a* 

*d a*

*a a*

*d a*

*a a*

1 2 2 11 3333 2 2 2

*d qq a l q*

In the performed tests in order to solve forward kinematics, the algorithm converges to the

<sup>1</sup> ( )( ) *T T JJ I J y f*

<sup>1</sup> ( ( )) ( ) *T TT JJ diag JJ J y f*

 

where permits to regulate the speed as the function converges. Another way is:

  02 0

12 0 sin

02 0

12 0 sin

cos

1 2 2 2 2

cos

0 sin sin 0 1 cos cos 0 0 sin 0 sin 1 cos 0 sin

For the algorithm converging, it must indicate an initial solution of the *s*

0

arctan

arctan

2222 2 11

*d q q a lq <sup>J</sup> ffff a l <sup>q</sup>*

*ffff a lq*

10

20

1 2

 

 

 

1 2

 

*q*

1111

*ffff d qq*

 

 

 

 

 

4444

correct solution in only two iterations, with an F<0.0001 error. Others ways to find the value of could be probed, like:

*ffff d qq*

*q*

and update in the direction of the

(35)

(36)

(39)

(40)

(42)

(43)

*l l <sup>d</sup>* (37)

(38)

 . An

(41)

For the minimization, we could raise an initial solution *s*<sup>0</sup>

where J is the Jacobian matrix of the robot.

The Jacobian matrix is calculated as follows:

approximation in order to achieve good results is:

gradient *<sup>J</sup>*

with:

*s* 
