Keywords

10.1 Introduction

Control of joint angles is the key technique in virtual human motion control. The popular approaches include geometric control, behavior control, physical control, motion capture control, and synthesis control [1], which have different characteristics [2, 3]. The kinematics control, one of the geometric control methods, has been the most widely used in human motion control while the end-effector’s position and orientation are determined.

Kinematics control algorithm contains forward kinematics (FK) algorithm and inverse kinematics (IK) algorithm. Calculating the position and orientation of the end-effector from the joint Cartesian space is known as FK problem and calculating the joint angles from position and orientation of the end-effector is called IK problem. Many traditional methods have been used to resolve the IK problem such as geometric [4], algebraic [5], and iterative methods [6]. However, these methods have their own demerits in solving the IK problem of the mechanical structure or the body structure.

In recent years, Fuzzy [7], Artificial Neural Networks (ANN) [8, 9] and Genetic Algorithm (GA)-based evolutionary approaches have been applied to solve the IK problem for many kinds of manipulators, and great progress has been achieved. Satish [10] uses a 3-layer perceptron neural network to resolve the IK problem in a two degree-of-freedom (DOF) serial chain manipulator, as the training data subdivide degree is only 1.125 degrees, the precision of solution is not good enough. Bassam [11] uses a 4-layer perceptron neural network to resolve the IK problem in 2 DOF manipulator, which can avoid the emergence of redundant solutions and improve the precision by dividing the solution space into many sub-spaces, but the complexity of the algorithm is increased on one hand. Reference [12] researches the multi-layer perceptron and functional link artificial neural network, respectively, to compute 2 and 3 DOF serial manipulators’ inverse solution. When the robotic arm is 3 DOF, the solution’s precision is less than satisfactory. As the training sample’s subdivision degree determines the precision of the solution in neural network, when the body has more than 3 DOF, due to the limitation in the number of training samples, it is difficult to obtain a high precise solution. The GA is widely applied to solve the IK problem due to its excellent characteristics of evolutionary optimization; Saleh [13] obtains the IK solutions of the three joints which decide the end-effector position of PUMA560 robot by using the genetic algorithm based on the niche and clustering technique. The method can search four optimal solutions at a time but it is time-consuming—every generation computation spent 4 s; Banga [14] combines GA and Analytical Hierarchy Process (AHP) to resolve three nodes manipulator’s IK problem, AHP is used to select a different fitness function to prefer a one robotic arm indicator (such as attitude, friction, adjust time), and GA optimizes the inverse solution according to the fitness function selected by AHP. Due to the fitness function selection mechanism, the method can meet multiple-objectives optimization, but it also increases the probability of obtaining suboptimal solutions. Due to the random selection of initial population and the large searching domain, the computational time of GA optimization is usually long and the algorithm is prone to “premature” and later search slowly. So, scholars study another approach, using GA to optimize the parameters of neural network, and then use this neural network to compute the IK solutions. Liu [15] uses GA to optimize weights and thresholds of BP neural network by applying partition coding method; then the BP neural network is used to compute the 2 DOF robot’s IK solution. Carlos [16] combines Fuzzy neural network (FNN) algorithm and GA for solving the inverse kinematics problem of a 2 DOF manipulator. This method uses GA to optimize the network structure, the set of rules and membership functions of the FNN, and then this FNN algorithm is used to compute the two joint angle’s values of manipulator. These methods will accelerate the optimization process of the inverse solution when the algorithm completes the parameter optimization. The disadvantage is that the precision of the solution depends on the neural network, and the accuracy of the neural network’s output depends on its structure, parameters, and training samples. When the dimension of the input and output increases, the number of parameters also will be exponentially increased. And it requires a lot of training samples, which would make the training inefficient or even unattainable. As a simple neural network algorithm, the method mentioned above is only suitable for solving the IK problem in less than 3 DOF; when DOF is equal to or larger than 3, the precision of solutions will be far from satisfactory.

The objective of this study is to resolve the IK problem of virtual human’s ULKC which is the most complex, flexible, and commonly used agent of the human body which has 6 DOF. This study proposes an improved GA method to resolve the IK problem of ULKC, which can avoid GA falling into “premature” stop or inefficient searching in later stage with high probability.

10.2 Mathematical Model of ULKC

In this section, we introduce the basic principle of D–H method, construct the kinematics chain of ULKC, and analyze the difficulty in obtaining solutions from the kinematics equation.

10.2.1 Introduction of D–H Method

At present, the D–H method is usually used to construct the coordinate of kinematics chain whose mathematical model is used to represent by matrices. The D–H method is based on the transformation of the homogeneous coordinates in three-dimension space, which can link the movement, transformation, and mapping with matrix calculation.

  1. (1)

    The posture description of kinematics chain

  1. a.

    Position description

In the three-dimension Cartesian coordinate system, the position of point is usually described by a 3 \(\times \) 1 vector. Figure 10.1 shows the point P in the coordinate system {A}. Its homogeneous coordinates are \(P=(P_{x}, P_{y}, P_{z}, 1)^{T}\).

  1. b.

    Orientation description

Fig. 10.1
figure 1

Point P in the coordinate system

In order to study the kinematics chain’s movement and operation, both the object’s position and orientation need to be described. 4 \(\times \) 4 homogeneous matrix \({}_{A}^{B}{\varvec{R}}\) represents the orientation of the coordinate system {B} relative to the coordinate system {A}. \(n_{x},\,\,n_{y},\,\,n_{z},\,\,o_{x},\,\,o_{y},\,\,o_{z},\,\,a_{x},\,\,a_{y},\,\, a_{z}\) are the direction cosine values that three unit vectors \( \overset{{\scriptscriptstyle \rightharpoonup }}{x},\,\,\overset{{\scriptscriptstyle \rightharpoonup }}{y},\,\,\overset{{\scriptscriptstyle \rightharpoonup }}{z}\) of the coordinate system {B} to the coordinate system {A}

$$\begin{aligned} {}_{A}^{B}{\varvec{R}} = \left[ \begin{array}{llll} n_{x} &{} o_{x} &{} a_{x} &{} 0\\ n_{y} &{} o_{y} &{} a_{{y }} &{} 0\\ n_{z}&{} o_{z} &{} a_{z} &{}0 \\ 0 &{} 0 &{} 0 &{} 1 \\ \end{array} \right] . \end{aligned}$$
(10.1)

\({}_{A}^{B} {\varvec{R}}\) represents the orientation of the coordinate system {B} to the coordinate system {A}.

Rotate \(\theta \) around the axis x, y, and z, respectively, and their corresponding rotation matrices can be expressed as follows:

$$\begin{aligned} {\varvec{Rot}}(x,\theta ) = \left[ \begin{array}{cccc} 1 &{} 0 &{} 0 &{}0 \\ 0 &{} \cos \theta &{} - \sin \theta &{} 0 \\ 0 &{}\sin \theta &{} \cos \theta &{} 0 \\ 0 &{} 0 &{} 0 &{}1 \\ \end{array} \right] , \end{aligned}$$
(10.2)
$$\begin{aligned} {\varvec{Rot}}(y,\theta ) = \left[ \begin{array}{lccc} \cos \theta &{} 0 &{}\sin \theta &{} 0 \\ 0 &{} 1 &{} 0 &{} 0 \\ { - }\sin \theta &{} 0 &{} \cos \theta &{} 0\\ 0 &{}0 &{} 0 &{} 1 \\ \end{array} \right] , \end{aligned}$$
(10.3)
$$\begin{aligned} {\varvec{Rot}}(z,\theta ) = \left[ { \begin{array}{cccc} {\cos \theta } &{} { -\sin \theta } &{} 0 &{} 0 \\ {\sin \theta } &{} {\cos \theta } &{} 0 &{} 0 \\ 0 &{} 0 &{} 1 &{} 0 \\ 0 &{} 0 &{} 0 &{} 1 \\ \end{array} } \right] . \end{aligned}$$
(10.4)

Spatially, when the coordinate systems {A} and {B} have the same orientation and different origins, the translation matrix is as follows:

$$\begin{aligned} {}_{A}^{B} {\varvec{trans}}(B_{x} ,B_{y} ,B_{z} ) = \left[ \begin{array}{llll} 1&{} 0&{} 0&{} B_{x} \\ 0 &{} 1 &{}0 &{}B_{y} \\ 0 &{}0 &{} 1&{} B_{z} \\ 0 &{} 0 &{} 0 &{} 1 \\ \end{array} \right] . \end{aligned}$$
(10.5)

It represents the origin position of the coordinate system {B} in the coordinate system {A}.

  1. c.

    The expression of position and orientation of objects in space

When coordinates system {A} and {B} have different origins and different orientations, the matrix \({ }_A^B\) T represents the position and orientation of B in the coordinate system {A}

$$\begin{aligned} {}_{A}^{B} {\varvec{T}} = {}_{A}^{B} {\varvec{trans}}(B_{x} ,B_{y} ,B_{z} ){}_{A}^{B} {\varvec{R}} = \left[ \begin{array}{llll} n_{x} &{} o_{x} &{}a_{x} &{} B_{x} \\ n_{y} &{} o_{y} &{} a_{{y }} &{} B_{y} \\ n_{z} &{}o_{z} &{} a_{z} &{} B_{z} \\ 0 &{} 0 &{} 0 &{} 1 \\ \end{array} \right] . \end{aligned}$$
(10.6)

It is proved that every posture matrix can be decomposed to many rotation matrices and translation matrices.

  1. d.

    The spatial transformation between different coordinate systems by the posture matrix

If \({}^{A}P=({}^{A}Px, {}^{A}Py, {}^{A}Pz, 1)^{T}\) and \({}^{B}P=(^{B}Px, {}^{B}Py, {}^{B}Pz, 1)^{T}\) are homogeneous coordinates of the point P in the coordinates {A} and {B}, respectively, then, \({}^AP={}_A^B {\varvec{T}}{}^BP\).

The transformation between different coordinate systems can be conducted on the basis of the above formula.

  1. (2)

    The nature of matrices in D–H method

  1. a.

    The nature of translation matrix

Proposition 1: if \(\{{\varvec{trans}}(a, b, c){\vert }\{a, b, c \in {{\varvec{R}}}\}\) represents the exchange group on matrix multiplication, then,

$$\begin{aligned}&{{\varvec{trans}}}(0, 0, 0)={{\varvec{I}}} \end{aligned}$$
(10.7)
$$\begin{aligned}&{{\varvec{trans}}}(a, b, c) \cdot {{\varvec{trans}}}(a, b, c)^{-1}={{\varvec{trans}}}(-a, -b, -c). \end{aligned}$$
(10.8)

Property l:

$$\begin{aligned} {{\varvec{trans}}}(a_{1}, b_{1}, c_{1})\cdot {{\varvec{trans}}}(a_{2}, b_{2}, c_{2})={\varvec{trans}}(a_{1}+a_{2}, b_{1}+b_{2}, c_{1}+c_{2}). \end{aligned}$$
(10.9)

Corollary l:

$$\begin{aligned} {{\varvec{trans}}}(a, b, c)^{-1}={{\varvec{trans}}}(-a, -b, -c). \end{aligned}$$
(10.10)
  1. b.

    The nature of rotation matrix

Proposition 2: if \( \{ {\varvec{Rot}} (x, \theta ) {\vert } \theta \in {{\varvec{R}}} \}\) represents the exchange group on matrix multiplication, so does to \(\{ {{\varvec{Rot}}} (y, \theta ) {\vert } \theta \in {{\varvec{R}}} \}\) and \(\{ {{\varvec{Rot}}} (z, \theta ) {\vert } \theta \in {{\varvec{R}}}\}\).

Property 2:

$$\begin{aligned} {{\varvec{Rot}}}(x,\theta _{1} ) \cdot {{\varvec{Rot}}}(x,\theta _{2} )&= {{\varvec{Rot}}}(x,\theta _{1} + \theta _{2} ) \nonumber \\ {{\varvec{Rot}}}(y,\theta _{1} ) \cdot {{\varvec{Rot}}}(y,\theta _{2} )&= {{\varvec{Rot}}}(y,\theta _{1} + \theta _{2} ) \\ {{\varvec{Rot}}}(z,\theta _{1} ) \cdot {{\varvec{Rot}}}(z,\theta _{2} )&= {{\varvec{Rot}}}(z,\theta _{1} + \theta _{2} ). \nonumber \end{aligned}$$
(10.11)

Corollary 2:

$$\begin{aligned} {{\varvec{Rot}}}(x,\theta )^{{ -1}}&= {{\varvec{Rot}}}(x,\theta )^{T} = {{\varvec{Rot}}}(x, - \theta ) \nonumber \\ {{\varvec{Rot}}}(y,\theta )^{{ -1}}&= {{\varvec{Rot}}}(y,\theta )^{T} = {{\varvec{Rot}}}(y, - \theta )\\ {{\varvec{Rot}}}(z,\theta )^{{ -1}}&= {{\varvec{Rot}}}(z,\theta )^{T} = {{\varvec{Rot}}}(z, - \theta ). \nonumber \end{aligned}$$
(10.12)
  1. c.

    The nature of the posture matrix

If the posture matrix \({}^m_i{{{\varvec{T}}}}\) represents the transformation from coordinate system {m} to coordinate system {i}, and the posture matrix \({}_m^k {{\varvec{T}}}\) represents the conversion from coordinate system {k} to coordinate system {m}; then, the posture matrix, from coordinate system {k} to coordinate system {i}, can be computed by the following formula:

$$\begin{aligned} { }_i^k {{\varvec{T}}}={ }_i^m {{\varvec{T}}}{ }_m^k {{\varvec{T}}}. \end{aligned}$$
(10.13)

Then, the transformation from \(i\)th joint-unit to \(j\)th joint-unit can be described as:

$$\begin{aligned} {}_{i}^{j} {{\varvec{T}}} = {}_{i}^{{i + 1}} {{\varvec{T}}}{}_{{i + 1}}^{{i + 2}} {{\varvec{T}}} \cdots {}_{{j - 1}}^{j} {{\varvec{T}}}. \end{aligned}$$
(10.14)

10.2.2 Structure of ULKC

The human ULKC contains root joint, chest joint, shoulder joint, elbow joint, wrist joint, and palm joints. Usually the palm is regarded as an independent research object as it has a lot of joints. Therefore, the wrist is the end-effector of the ULKC.

Human joints can be approximately treated as the rotary joint which is classified into P-type (shaft parallel to the link) and V-type (shaft perpendicular to the link). This study considers each joint-unit a combination of P-type and V-type. While the joint-unit only consists of P-type or V-type, this study adds another type which is within the ZERO rotation range. The rotation shaft of the P-type joint is the x-axis of the local coordinate system of the joint-unit, and the rotation shaft of the V-type joint is the z-axis of the local coordinate system of the joint-unit, then the y-axis can be determined by the right-handed screw rule. According to this specification, the local coordinate systems of human ULKC’s joint-units are established, as shown in Fig. 10.2.

Fig. 10.2
figure 2

The joint-units of the ULKC

The \(0{\text {th}}\) joint-unit is the human root joint-unit whose coordinate is relatively fixed, and it is also the basic coordinate of the entire kinematics chain. The \(1{\text {st}}\) joint-unit is the chest joint-unit which contains a real V-type joint and a complementary P-type joint; thus, it can only rotate around \({z}_{1}\). The \(2{\text {nd}}\) joint-unit is the shoulder joint-unit, which consists of a V-type joint and a P-type joint. The \(3{\text {rd}}\) joint-unit is the elbow joint-unit which contains a V-type joint and a P-type joint. The \(4{\text {th}}\) joint-unit is the wrist joint-unit which consists of a complementary V-type joint and a real P-type joint. It should be noted that the joints \({{P}}_{2}\), \({{V}}_{2}\), \({{P}}_{3}\) are derived from the shoulder joint which is a spherical joint. Placing P\(_{3}\) under the elbow unit is conducive to joint grouping and mathematical description of the kinematics chain. \(\alpha _{i}\) represents the rotation angle of \(P_{i}\), and \(\theta _{i}\) the rotation angle of \(\mathrm{{V}}_{i}\). \(\alpha _{1}\) and \(\theta _{4 }\) are always equal to 0.

According to the parameter values of adult body in GB10000-88 (Chinese), set values for \(L_{1}, L_{2}, L_{3}, L_{4}, d_{2}\) and the ranges of \(\theta _{1}, \theta _{2}, \theta _{3}, \alpha _{2}, \alpha _{3}, \alpha _{4}\). They are listed in Table 10.1.

Table 10.1 The parameters of the ULKC

10.2.3 Posture Transformation of ULKC

With reference to Sects. 10.2.1 and 10.2.2, the transformation from first joint-unit to zeroth joint-unit of ULKC can be described as follows:

  1. (1)

    Translate \(L_{1}\) along the axis \(z_{0}\), then the origin of the two coordinate systems are coincided;

  2. (2)

    Rotate \(-90^{\circ }\) around the axis \(x_{0}\), then the shaft \(z_{0}\) and \(z_{1}\) are collinear;

  3. (3)

    Rotate \(-90^{\circ }\) around the axis \(z_{0}\), then the shaft \(x_{0}\) and \(x_{1}\) are collinear.

Therefore, the transformation matrix is:

$$\begin{aligned} {}_{0}^{1} {{\varvec{T}}} = {{\varvec{trans}}}(0,0,L_{1}){{\varvec{Rot}}}(x, - 90^{\circ }){{\varvec{Rot}}}(z, - 90^{\circ }). \end{aligned}$$
(10.15)

According to Eqs. (10.210.5),

$$\begin{aligned} {{\varvec{trans}}}(0,0,L_{1} ) = \left[ \begin{array}{cccc} 1&{} 0&{} 0&{} 0 \\ 0 &{}1&{} 0&{} 0 \\ 0&{} 0 &{}1 &{}L_{1} \\ 0&{} 0&{} 0&{} 1 \\ \end{array} \right] , \end{aligned}$$
(10.16)
$$\begin{aligned} {{\varvec{Rot}}}(x, - 90^{\circ } ) = \left[ \begin{array}{cccc} 1&{} 0&{} 0&{} 0 \\ 0 &{}0&{} 1&{} 0 \\ 0 &{} -1&{} 0&{} 0 \\ 0&{} 0&{} 0&{} 1 \\ \end{array} \right] , \end{aligned}$$
(10.17)
$$\begin{aligned} {{\varvec{Rot}}}(z, - 90^{\circ } ) = \left[ \begin{array}{cccc} 0&{} 1&{} 0&{} 0 \\ -1 &{}0 &{}0&{} 0 \\ 0 &{}0&{} 1&{} 0 \\ 0&{} 0&{} 0 &{}1 \\ \end{array} \right] . \end{aligned}$$
(10.18)

Substitute Eqs. (10.1610.18) into Eq. (10.15):

$$\begin{aligned} {}_{0}^{1} {{\varvec{T}}} = \left[ \begin{array}{cccc} 0 &{}1&{} 0 &{}0 \\ 0 &{}0&{} 1&{} 0 \\ 1 &{}0 &{}0 &{}L_{1}\\ 0 &{}0 &{}0&{} 1 \\ \end{array} \right] . \end{aligned}$$
(10.19)

Similarly, we can obtain the transformation matrices of other adjacent joints’ local coordinate systems:

$$\begin{aligned} {}_{1}^{2} {{\varvec{T}}} = \left[ \begin{array}{cccl} 0 &{}C\alpha _{2} C\theta _{1} -S\alpha _{2} S\theta _{1} &{}-C\alpha _{2} S\theta _{1} -S\alpha _{2} C\theta _{1}&{} L_{2} C\theta _{1} \\ 0 &{}C\alpha _{2} S\theta _{1} +S\alpha _{2} C\theta _{1} &{} C\alpha _{2} C\theta _{1} -S\alpha _{2} S\theta _{1}&{}L_{2} S\theta _{1} \\ 1 &{}0 &{}0 &{}d_{2} \\ 0&{} 0 &{}0 &{}1 \\ \end{array} \right] , \end{aligned}$$
(10.20)
$$\begin{aligned} {}_{2}^{3} {{\varvec{T}}} = \left[ {\begin{array}{cccc} {C(\theta _{2} -\pi /2)} &{} -S(\theta _{2} -\pi /2)C\alpha _{3} &{} {S(\theta _{2} -\pi /2)S\alpha _{3} } &{} {L_{3} C(\theta _{2} - \pi /2)} \\ {S(\theta _{2} -\pi /2)} &{} {C(\theta _{2} -\pi /2)C\alpha _{3} } &{} -C(\theta _{2} -\pi /2)S\alpha _{3} &{} L_{3} S(\theta _{2} - \pi /2) \\ 0 &{} S\alpha _{3} &{} {C\alpha _{3} } &{} 0 \\ 0 &{} 0 &{} 0 &{} 1 \\ \end{array} } \right] , \end{aligned}$$
(10.21)
$$\begin{aligned} {}_{3}^{4} {{\varvec{T}}} = \left[ {\begin{array}{cccc} {C\theta _{3} } &{} -C\alpha _{4} S\theta _{3} &{} S\alpha _{4} S\theta _{3} &{} {L_{4} C\theta _{3} } \\ {S\theta _{3} } &{} {C\alpha _{4} C\theta _{3} } &{} -S\alpha _{4} C\theta _{3} &{} {L_{4} S\theta _{3} } \\ 0 &{} S\alpha _{4} &{} {C\alpha _{4} } &{} 0 \\ 0 &{} 0 &{} 0 &{} 1\\ \end{array} } \right] . \end{aligned}$$
(10.22)

In the equations above, S represents sine operator; C represents cosine operator.

According to Eq. (10.14), the posture transformation matrix of wrist joint (end-effector) relative to the root joint can be computed as follows:

$$\begin{aligned} \begin{array}{ll} {}_{0}^{4} {{\varvec{T}}} &{}= {}_{0}^{1} {{\varvec{T}}}_{1}^{2} {{\varvec{T}}}(\theta _{1} ,\alpha _{2} )_{2}^{3} {{\varvec{T}}}(\theta _{2} ,\alpha _{3} ){}_{3}^{4} {{\varvec{T}}}(\theta _{3} ,\alpha _{4} ) \\ &{}= \left[ \begin{array}{cccc} {}_{0}^{4} n_{x} &{}{}_{0}^{4} o_{x}&{} {}_{0}^{4} a_{x} &{} {}_{0}^{4} B_{x} \\ {}_{0}^{4} n_{y} &{}{}_{0}^{4} o_{y}&{} {}_{0}^{4} a_{{y }}&{} {}_{0}^{4} B_{y} \\ {}_{0}^{4} n_{z} &{}{}_{0}^{4} o_{z} &{} {}_{0}^{4} a_{z} &{}{}_{0}^{4} B_{z} \\ 0 &{} 0&{} 0 &{} 1 \\ \end{array} \right] \end{array} \end{aligned}$$
(10.23)

where,

$$\begin{aligned} {}_{0}^{4} n_{x}\,=&\,S(\theta _{2}-\pi /2){C}(\theta _{3} )(C\alpha _{2} C\theta _{1} + S\alpha _{2} C\theta _{1} ){-}S\theta _{3} (S\alpha _{3} (S\alpha _{2} S\theta _{1} {-}C\alpha _{2} C\theta _{1} )\nonumber \\&\,{-}C(\theta _{2} - \pi /2)C(\alpha _{3} )(C(\alpha _{2})S(\theta _{1} ) + S(\alpha _{2} )C\theta _{1} ))\nonumber \\[5pt] {}_{0}^{4} n_{y}\,=&\,C(\theta _{2} {-}\pi /2)C\theta _{3} {-}S(\theta _{2} {-}\pi /2)C\alpha _{3} S\theta _{3}\nonumber \\[5pt] {}_{0}^{4} n_{z}\,=&{-}S\theta _{3} (S\alpha _{3} (C\alpha _{2} S\theta _{1} + S\alpha _{2} C\theta _{1} ) + C(\theta _{2} {-}\pi /2)C\alpha _{3} (S\alpha _{2} S\theta _{1} {-}C\alpha _{2} C\theta _{1} ))\nonumber \\&\,{-}S(\theta _{2} {-}\pi /2)C\theta _{3} (S\alpha _{2} S\theta _{1} {-}C\alpha _{2} C\theta _{1} )\nonumber \\[5pt] {}_{0}^{4} o_{x}\,=&\,{-}S\alpha _{4} (C\alpha _{3} (S\alpha _{2} S\theta _{1} {-}C\alpha _{2} C\theta _{1} ){+}C(\theta _{2} {-}\pi /2)S\alpha _{3} (C\alpha _{2} S\theta _{1} + S\alpha _{2} C\theta _{1} ))\nonumber \\&\,{-}C\alpha _{4} C\alpha _{3} (S\alpha _{3} (C\alpha _{2} S\theta _{1} - C\alpha _{2} C\theta _{1} ){-}C(\theta _{2} {-}\pi /2)C\alpha _{3} (C\alpha _{2} S\theta _{1} {+}S\alpha _{2} C\theta _{1} ))\nonumber \\&\,{-}S(\theta _{2} {-}\pi /2)C\alpha _{4} S\theta _{3} (C\alpha _{2} S\theta _{1} {+}S\alpha _{2} C\theta _{1} )\nonumber \\[5pt] {}_{0}^{4} o_{y}\,=&\,S(\theta _{2} {-}\pi /2)S\alpha _{3} S\alpha _{4} {-}C(\theta _{2} {-}\pi /2)C\alpha _{4} S\theta _{3} {-}S(\theta _{2} {-}\pi /2)C\alpha _{3} C\alpha _{4} C\theta _{3}\nonumber \\[5pt] {}_{0}^{4} o_{z} =&\,S(\theta _{2} {-}\pi /2)C\alpha _{4} S\theta _{3} (S\alpha _{2} S\theta _{1} {-}C\alpha _{2} C\theta _{1} ){-}C\alpha _{4} C\theta _{3} (S\alpha _{3} (C\alpha _{2} S\theta _{1} {+}S\alpha _{2} C\theta _{1} )\nonumber \\&\,{+}C(\theta _{2} -\pi /2)C\alpha _{3} (S\alpha _{2} S\theta _{1} - C\alpha _{2} C\theta _{1} )){-}S\alpha _{4} (C\alpha _{3} (C\alpha _{2} S\theta _{1} {+}S\alpha _{2} C\theta _{1} ) \nonumber \\&\,{-}C(\theta _{2} -\pi /2)S\alpha _{3} (S\alpha _{2} S\theta _{1} -C\alpha _{2} C\theta _{1} ))\nonumber \\[5pt] {}_{0}^{4} a_{x}\,=&\,S\alpha _{4} C\theta _{3} (S\alpha _{3} (S\alpha _{2} S\theta _{1} -C\alpha _{2} C\theta _{1} )-C(\theta _{2} -\pi /2)C\alpha _{3} (C\alpha _{2} S\theta _{1} +S\alpha _{2} C\theta _{1} ))\nonumber \\&\,{-}C\alpha _{4} (C\alpha _{3} (S\alpha _{2} S\theta _{1} -C\alpha _{2} C\theta _{1} )+C(\theta _{2} -\pi /2)S\alpha _{3} (C\alpha _{2} S\theta _{1} +S\alpha _{2} C\theta _{1} ))\nonumber \\&\,{+}S(\theta _{2} -\pi /2)S\alpha _{4} S\theta _{3} (C\alpha _{2} S\theta _{1} +S\alpha _{2} C\theta _{1} ) \nonumber \\[5pt] {}_{0}^{4} a_{{y }}\,=&\,S(\theta _{2} -\pi /2)C\alpha _{4} S\alpha _{3} +C(\theta _{2} -\pi /2)S\alpha _{4} S\theta _{3} +S(\theta _{2} -\pi /2)C\alpha _{3} S\alpha _{4} C\theta _{3}\nonumber \\[5pt] {}_{0}^{4} a_{z}\,=&\,S\alpha _{4} C\theta _{3} (S\alpha _{3} (C\alpha _{2} S\theta _{1} +S\alpha _{2} C\theta _{1} )+C(\theta _{2} -\pi /2)C\alpha _{3} (S\alpha _{2} S\theta _{1} -C\alpha _{2} C\theta _{1} )) \nonumber \\&\,{-}C\alpha _{4} (C\alpha _{3} (C\alpha _{2} S\theta _{1} +S\alpha _{2} C\theta _{1} )-C(\theta _{2} -\pi /2)S\alpha _{3} (S\alpha _{2} S\theta _{1} -C\alpha _{2} C\theta _{1} ))\nonumber \\&\,{-}S(\theta _{2} -\pi /2)S\alpha _{4} S\theta _{3} (S\alpha _{2} S\theta _{1} -C\alpha _{2} C\theta _{1} )\nonumber \\[5pt] {}_{0}^{4} B_{x}\,=&\,L_{2} S\theta _{1} +L_{3} S(\alpha _{2} -\pi /2)(C\alpha _{2} S\theta _{1} +S\alpha _{2} C\theta _{1} )-L_{4} S\theta _{3} (S\alpha _{3} (S\alpha _{2} S\theta _{1} -C\alpha _{2} C\theta _{1} ) \nonumber \\&\,{-}C(\theta _{2} -\pi /2)C\alpha _{3} (C\alpha _{2} S\theta _{1} +S\alpha _{2} C\theta _{1} ))+L_{4} S(\theta _{2} - \pi /2)C\theta _{3} (C\alpha _{2} S\theta _{1} +S\alpha _{2} C\theta _{1} )\nonumber \\[5pt] {}_{0}^{4} B_{y}\,=&\,d_{2} +L_{3} C(\theta _{2} -\pi /2)+L4C(\theta _{2} -\pi /2)C\theta _{3} -L4S(\theta _{2} -\pi /2)C\alpha _{3} S\theta _{3}\nonumber \\[5pt] {}_{0}^{4} B_{z}\,=&\,L_{1} +L_{2} C\theta _{1} -L_{3} S(\theta _{2} -\pi /2)(S\alpha _{2} S\theta _{1} -C\alpha _{2} C\theta _{1} )-L_{4} S\theta _{3} (S\alpha _{3} (C\alpha _{2} S\theta _{1} +S\alpha _{2} C\theta _{1} )\nonumber \\&\,{+}C(\theta _{2} -\pi /2)C\alpha _{3} (S\alpha _{2} S\theta _{1} -C\alpha _{2} C\theta _{1} ))-L_{4} S(\theta _{2} -\pi /2)C\theta _{3} (S\alpha _{2} S\theta _{1} -C\alpha _{2} C\theta _{1} ). \end{aligned}$$
(10.24)

It is difficult to compute the inverse solutions from such a complex posture transformation matrix like Eq. (10.24) by using the analytical method or geometric method. Also, as there are six variables \(\theta _{1}\), \(\theta _{2}\), \(\theta _{3}\), \(\alpha _{2}\), \(\alpha _{3}\), and \(\alpha _{4}\) in the matrix and the end-effector of the ULKC is 6 DOF, it is also difficult to compute the precise solutions quickly by simply using the neural network algorithm or the standard genetic algorithm.

10.2.4 Summary

In this section, D–H method is used to describe the kinematics equations of ULKC. The basic principle of D–H method is that transformation of points in different coordinate systems can be conducted according to transitivity of transformation matrices. ULKC is a kinematics chain. Its IK problem is to resolve the joint angles when the posture of end-effector is known. We derive the transformation matrices of adjacent local coordinates systems and the kinematics Eq. (10.24) of ULKC. It is difficult to resolve Eq. (10.24) by basic geometric method or analytic method due to its complex and nonlinear features. From the next section, GA will be improved to resolve Eq. (10.24).

10.3 Improvement of Standard Generation Algorithm

In this section, an improved GA is put forward with the assistance of an adaptive genetic operator.

10.3.1 Introduction of SGA

Genetic algorithm is an efficient and global searching algorithm based on natural selection and genetic theory. The possible solution in the problem domain is seen as an individual or chrome in the population. The SGA is a group operation algorithm which only uses the standard genetic operators, such as selection operator, crossover operator, and mutation operator. It is the foundation of other improved GA.

  1. (1)

    The mathematical model of SGA

  • The SGA can be expressed as:

  • SGA=\((C, E, P_{0}, M, \phi , \varGamma , \varPsi , T)\)

where,

\(C\) :

coding method;

\(E\) :

the fitness function of individual;

\(P_{0}\) :

the initialization population;

\(M\) :

the amount of population;

\(O\) :

selection operator;

\({\varGamma }\) :

crossover operator;

\(\varPsi \) :

mutation operator;

\(T\) :

the termination condition;

  1. (2)

    The process of the SGA

  1. a.

    Chromosome coding and decoding (Fig. 10.3)

Fig. 10.3
figure 3

The flowchart of SGA

In the SGA, the individuals in the population are represented by fixed-length binary strings, whose allele consists of the binary digit {0, 1}. The genes of each individual in the initial population can be generated via the random numbers distributed uniformly. For example, X = 100010111011 can be used to depict an individual, whose chromosome length is 16.

Coding: a parameter, with the range of [U1, U2], can be expressed by the binary code symbol with the length of K, which generate 2\(^{k}\) kinds of code. Thus the corresponding relationship between the parameters and coding is as follows:

$$\begin{aligned}&000000 \cdots 0000 = 0 \rightarrow U_{1} \nonumber \\&000000 \cdots 0001 = 1 \rightarrow U_{1} + \delta \nonumber \\&000000 \cdots 0002 = 2 \rightarrow U_{1} + 2\delta \\&\quad \,\vdots \qquad \qquad {} \vdots \qquad \quad {}\vdots \nonumber \\&111111 \cdots 1111 = 2^{k} - 1 \rightarrow U_{2}\nonumber \end{aligned}$$
(10.25)

where, \(\delta =\frac{U_{2}-U_{1}}{2^{k}-1}\).

Decoding: if the code of an individual is b \(_{k}\) b \(_{k-1}\) b \(_{k-2}\)...b \(_{2}\) b \(_{1}\), the corresponding decoding formula is as follows:

$$\begin{aligned} X = U_{1} + \left( \sum \limits _{{i = 1}}^{k} {b_{i}} \cdot 2^{{i - 1}}\right) \cdot \frac{{U_{2} - U_{1} }}{{2^{k} - 1}}. \end{aligned}$$
(10.26)
  1. b.

    The evaluation of individuals’ fitness

In the SGA, the probability of individual’s genetic opportunity is decided by its fitness value. All the individual fitness values must be nonnegative for evaluating the genetic probability correctly. So, we need to determine the transformation principle from target function to fitness function, especially when the target value is negative.

  1. c.

    Genetic operators

Three kinds of genetic operators used by the SGA are as follows:

1. Use the proportional selection operator to select the father individuals. The proportional selection factor refers to the genetic probability. If the number of individuals is M, the fitness of \({i}{\text {th}}\) individual is \({f}_{i}\), then, the probability of \({i}{\text {th}}\) individual is:

$$\begin{aligned} P_{i} = f_{i} \bigg /\sum \limits _{{k = 1}}^{M} {f_{k}}. \end{aligned}$$
(10.27)

If the probability of individual selection is given, uniform random numbers between [0, 1] are generated to determine which individual is to mate. The individuals, who have a large selection probability, can be repeatedly selected and their genes are expanded in the population, while the small ones would eliminate gradually.

2. The single-point crossover operator is applied to crossover operation in SGA. Only one cross point exists in the single-point crossover operator, the two individuals are chosen as cross objects, then, a crossover point is generated randomly. The chosen individuals exchange their genes at the cross point and generate two children individuals (Fig. 10.4).

Fig. 10.4
figure 4

The process of crossover

3. The mutation operation uses the basic bit mutation operator and the uniform mutation operator. In order to avoid the “premature” convergence problem, there is a small probability for the individuals composed of binary gene code to shift the genetic code from 0 to 1 or 1 to 0 (Fig. 10.5).

Fig. 10.5
figure 5

The process of mutation

4. The parameters of the SGA

There are four parameters of the SGA need to be set; they are M, T, P \(_{c}\), and P \(_{m}\).

M represents the size of the population, which refers to the individual number of the population, usually ranging from 20 to 100;

T represents the terminal generation times, which usually ranges from 100 to 500;

P \(_{c}\) stands for the crossover probability, usually 0.4–0.99;

P \(_{m}\) stands for the mutation probability, normally 0.0001–0.1.

10.3.2 Principles of Improvement

Since the intact structure and theory of GA was systemically proposed by Holland in 1975, numerous scholars have devoted to developing GA. The coding method, the control parameters, and crossover mechanism are deeply studied. Therefore, various improved GA are proposed, such as Hierarchic Genetic Algorithm [18, 19], CHC Algorithm [20, 21], Messy Genetic Algorithm [22, 23], Niched Genetic Algorithm [24], Adaptive Genetic Algorithm [25, 26], and Parallel Genetic Algorithm [2729], whose characteristics and performances are compared in article [30].

The present research focuses on the improvement of GA from the perspectives of population initialization and its diversity. An improved GA is put forward in this chapter with the assistance of adaptive genetic operator.

We operate on the individuals from the perspectives of selection, crossover, and mutation. The SGA contains some demerits such as “premature” and inefficient searching in later stage, which result from the following aspects, such as single population, random selection of initial population, and no-adaptive crossover and mutation probabilities. This research will improve the SGA on the aspects of population diversity, the selection strategy for initial population, and the adaptive genetic operators to overcome the “premature” and inefficient searching in later stage.

  1. a.

    Population diversity. In the SGA, all the N individuals in a population, Chrom, the differences among individuals will be reduced with the increase of generation times, which leads the searching process to the “premature” convergence. We introduce the population migration: the population Chrom is divided into p independent subpopulations, \({{\varvec{SubPop}}}_{i} (i=1, 2, {\ldots }, p)\); then each sub population has \(m=N/p\) individuals. The genetic operations are conducted in the isolated subpopulation in the normal condition; we let the individuals migrate to other subpopulations with the probability \(P_{\text {mig}}\), while it meets the needs of certain conditions (such as get the certain generation times). It can ensure the diversity of individuals in population, and avoid the “premature” convergence.

  2. b.

    Population initialization. Randomly selecting the individuals will reduce the differences among individuals significantly after several genetic operations, which results in inefficient searching in later stage. To solve this problem, Rasit [17] proposes a method in which the initial population is generated by three trained Elman neural networks. Three outputs from three networks can be obtained at a time. After putting these outputs into the initial population, the GA is used to optimize the solution. The disadvantages of this method are: complex structure, which consists of 155 neurons in the hidden layer of the three Elman neural networks; the small number of sample (no more than 3); other individuals are randomly generated. Based on the research of the phenomenon of human populations, we found there is at least a significant difference in the human populations—color. The populations with different colors certainly have different chromosomes, and the colors of individuals within the same population are similar but different; on the other hand, there are no exactly same individuals in the same human population. These ensure the diversity of human genes, thus we propose three principles for initial population:

    1. 1.

      There is at least one gene different between subpopulations;

    2. 2.

      There is at least one gene similar (relative) between individuals within the same subpopulation;

    3. 3.

      There are no two same individuals within the same subpopulation.

These three principles can be summarized as “the individuals are similar but different within the same sub population; the individuals are different but similar between sub populations.”

  1. c.

    The adaptive genetic operators. In order to improve the capability of GA to avoid the “premature” convergence and inefficient searching in later stage, the genetic operators should be adaptive. That means the crossover probability \(P_{c}\) and mutation probability \(P_{m}\) would be increased with the similarity of individuals increased. We design the adaptive operators as follows:

$$\begin{aligned} P_{c} = P_{{c0}} + \mu \beta _{i}\end{aligned}$$
(10.28)
$$\begin{aligned} P_{m} = P_{{m0}} + \nu \beta _{i} \end{aligned}$$
(10.29)

where, \(P_{c0}\) is the initial crossover probability and \(P_{m0}\) is the initial mutation probability; \(\beta _i \)is the proportion of the maximum fitness individuals account to the total number of individuals in \(i{\text {th}}\) generation; \(\mu \) and \(\nu \) are the two constant factors which are used to make \(P_{c}\) and \(P_{m}\) not more than 1.

The improved GA has the features of diversity population, the similar but different initial population, the adaptive genetic operators, which will be helpful to search the high-accuracy solutions quickly.

10.3.3 Process Flow of IGA

The process flow of the GA contains coding, population initialization, fitness value evaluation, selection, crossover, mutation, and judge the terminal condition. According to the above principles, we design the IGA as the following steps:

  1. a.

    Coding. The fixed-length binary string is used to represent the individual in the SGA, where allele is {0, 1}. Binary coding will greatly increase gene length, and must shift between the coding and decoding repeatedly. It is not suitable for the high dimension. We use the real coding to represent each individual whose chromosome concludes six genes {\(\theta _1 \), \(\theta _2 \), \(\theta _3 \), \(\alpha _2 \), \(\alpha _3 \), \(\alpha _4 \)}. The variable domains are shown in Table 10.1.

  2. b.

    Population initialization. The population initialization contains population diversity and individuals’ initialization. The population diversity is realized by setting subpopulations. We divide the population Chrom into p independent subpopulations \({\varvec{SubPop}}_{i} (i=1, 2, \ldots , p)\), each subpopulation has m individuals, then the entire population has \(N=pm\) individuals. The genetic operations are independently conducted within the subpopulations. We let the individuals of every subpopulation migrate to other subpopulations with probability \(P_{\text {mig}}\) every g generations, which will ensure the individual diversity within populations.

According to the principle “the individuals are similar but different within the same sub population, the individuals are different but similar between sub populations,” we initiate the population: using \(\theta _{1}\) as feature gene to distinguish the different subpopulations; we divide the interval \((0, \pi /3)\) of variable domain of \(\theta _{1}\) into p equal length intervals, and the length of each interval is:

$$\begin{aligned} \sigma = \frac{{\pi /3}}{p}. \end{aligned}$$
(10.30)

Then, the \(i{\text {th}}\) interval is \(((i-1)\sigma , i\sigma )\) from which the first gene \(\theta _{1}\) of the \(i{\text {th}}\) subpopulation are generated, and the other five genes are generated from their own variable domain randomly. This method can ensure: a. the first genes of individuals from the same subpopulation are similar but different; b. the other five genes are all the same, which is a small probability event; c. the individuals from different subpopulations are not possibly the same.

  1. c.

    Fitness value evaluation. The only requirement for the fitness function is that, for each chromosome, we can calculate a corresponding comparable nonnegative result. According to the posture matrix \({ }_0^4{{\varvec{T}}^\prime }\) computed by individual and the target posture matrix \({ }_0^4 {{\varvec{T}}}\) except the last line (the last line of the all posture matrix is the same), we define the error function:

    $$\begin{aligned} F(\theta _{1} ,\theta _{2} ,\theta _{3} ,\alpha _{1} ,\alpha _{2} ,\alpha _{3} ) = \frac{1}{{3\,\times \,4}}\sqrt{\sum \limits _{{i = 1}}^{3} {\sum \limits _{{j = 1}}^{4} {({}_{0}^{4} {{\varvec{T}}}_{{i,j}}^{'} {-}{}_{0}^{4} {{\varvec{T}}}_{{i,j}} )^{2}}}}. \end{aligned}$$
    (10.31)

    The fitness function is designed as follows:

    $$\begin{aligned} {\text {Fit}}(F) = \frac{1}{{1 + F(\theta _{1} ,\theta _{2} ,\theta _{3} ,\alpha _{1} ,\alpha _{2} ,\alpha _{3} )}}. \end{aligned}$$
    (10.32)

    The individual’s fitness value of \({\text {Fit}}(F)\) will be larger when the error \(F(\theta _{1},\theta _{2},\theta _{3},\alpha _{1},\alpha _{2},\alpha _{3})\) is smaller.

  2. d.

    Selecting the father individuals. The randomized competitive selection method is used to select the father individuals. Each time, we select a pair of individuals by using roulette selection mechanism, and then make the two individuals compete. The one who has the higher fitness will be selected. Repeat this process until the population is full.

  3. e.

    Crossover. We use the two-point crossover method which needs to randomly select two integers \(k_{1}\) and \(k_{2}\), and exchange the \((k_{1}+1){\text {th}}\) to \((k_{2}){\text {th}}\) genes of two father individuals with probability \(P_{c}\); the value of \(P_{c}\) is derived by Eq. (10.28).

  4. f.

    Mutation. Mutation means that one or several genes of each individual are changed with mutation probability \(P_{m}\); the \(P_{m}\) is derived by Eq. (10.29).

  5. g.

    Termination conditions. When the error computed by Eq. (10.31) is equal to or smaller than the given value \(\varepsilon \), or the GA operation goes to the maximum generation times, the computational process comes to the end.

10.3.4 Summary

In this section, the principle, “the individuals are similar but different within the same sub population; the individuals are different but similar between sub populations,” is proposed to direct the initialization and diversity of the population. The population is divided into some independent subpopulations which are marked by the first gene. Thus, the chromosomes of individuals from different subpopulations are absolutely different, and the chromosomes of individuals from same subpopulations are similar. And the migration strategy is also used to keep diversity. Formulas (10.28) and (10.29) are designed to make the crossover operator and mutation operator adaptive. These methods can keep the IGA diversity and avoid “premature” convergence and inefficient searching in later stage. Besides, error function (10.31) and fitness function (10.32) are designed.

10.4 Simulation Studies

In this section, SGA and IGA are compared in terms of optimizing capability in solving the IK problem of ULKC. Then, the IGA is applied in the control of ULKC of a virtual human.

10.4.1 Simulation of SGA

We set 120 individuals in the population; crossover probability \(P_{c}=0.7\), mutation probability \(P_{m}=0.131\); the termination condition was the error \(F\le 0.01\) or the number of generation time was up to 200.

For example, a target posture matrix was generated randomly. See the following matrix:

$$\begin{aligned} {}_{0}^{4}{{\varvec{T}}} = \left[ \begin{array}{cccc} 0.87814 &{} - 0.02665 &{} 0.47767 &{} 46.3554 \\ 0.07128 &{} 0.99459 &{} - 0.07554 &{} 54.6941 \\ - 0.47307 &{} 0.10039 &{} 0.87529 &{} 33.5743 \\ 0 &{} 0 &{} 0 &{} 1 \\ \end{array} \right] . \end{aligned}$$
(10.33)

The result of the SGA operation is shown in Fig. 10.6.

The solid line represents the error of the optimal individual in the population, and the dotted line represents the average error of all the individuals. The computation fell into “premature” convergence when the \(31{\text {st}}\) generations, and the error was 0.0329 when generation time was 200, which did not reach the target value 0.01.

Fig. 10.6
figure 6

Computational curves of SGA

10.4.2 Simulation of IGA

We divided the population into three subpopulations, each with 40 individuals;

We let the individuals migrate to other subpopulations with the probability of 0.2 every 20 generation times;

Crossover probability and mutation probability are:

$$\begin{aligned} P_{{ci}}&= 0.6 + 5\beta _{i}\end{aligned}$$
(10.34)
$$\begin{aligned} P_{m}&= 0.125 + 2\beta _{i} \end{aligned}$$
(10.35)

The termination condition was the error\(F\le 0.01\);

The target posture matrix was expressed as matrix (10.33).

The result of the IGA operation was shown in Fig. 10.7.

The error was 0.0094 when the generation time was 30, which reached the target value 0.01, and then the computation came to an end. The best individual was:

\(\mathrm{{Chr\_best}}=\{34.380\;79.038 -76.716 -124.272\;29.286 -0.738\}\)

According to Chr_best, we obtained the actual posture matrix:

$$\begin{aligned} {}_{0}^{4} {{\varvec{T}}}^{'} = \left[ \begin{matrix} 0.87611 &{} - 0.01764 &{} 0.48180 &{} 46.2860 \\ 0.06416 &{} 0.99471 &{} - 0.08025 &{} 54.1649 \\ - 0.47783 &{} 0.10122 &{} 0.87260 &{} 33.3975 \\ 0 &{} 0 &{} 0 &{} 1 \\ \end{matrix} \right] . \end{aligned}$$
(10.36)
Fig. 10.7
figure 7

Computational curves of IGA

Comparing the \({ }_0^4 {{\varvec{T}}}^{{\prime }}\)and \({ }_0^4 {{\varvec{T}}}\), we saw that the solution was highly accurate.

10.4.3 Comparison of SGA and IGA

We compared the performance differences of SGA and IGA by 10 times simulation to resolve the ULKC IK problem. The results are shown in Table 10.2.

Table 10.2 Results of simulation

By inspection of Table 10.2, it can be seen that all 10 computations based on IGA meet the target error 0.01 within 200 generations. And SGA cannot meet the target error after 200 generations for four times. The results showed that compared with SGA, IGA falls into the “premature” convergence with low probability.

10.4.4 Application

We applied the IGA in a virtual maintenance system. Posture sensor was used to measure the wrist joint’s posture of operator relative to its root joint, and the position of operator’s root was fixed. The postures of root and sensor of operator are mapped into the postures of root joint and end-effector of virtual human in the virtual circumstance. The data glove was used to control the virtual human’s behaviors like grasp and release. The hardware is shown in Fig. 10.8.

The termination condition is F \(<\) 0.05 or the generation is 100 times. We set the scan period 100 ms.

Fig. 10.8
figure 8

Hardware of the system

The operator stretched or shrank his hand in the real world. The posture sensor measured the posture of wrist joint relative to the root; thus the posture of end-effector relative to the root joint of virtual human was obtained. Compute the inverse solution with IGA and get the six joint angles. Then the form of virtual human’s ULKC was displayed on the screen. When the hand of virtual human touched the part, the data glove was used to control the hand and catch it. The operator and virtual maintenance scene are shown in Fig. 10.9.

The computer measurements indicated that it cost 0.068 s to compute one genetic operation with Intel Core i3 (clocked at 2.93 GHz) processor. And in most cases, the IGA approach can obtain the required solution within 20 generations. The experimental results showed that the IGA approach was reliable in application.

Fig. 10.9
figure 9

Operator and virtual human

10.4.5 Summary

In this section, SGA and IGA have been tested to resolve the IK problem of ULKC. The same target posture matrix has been resolved by both SGA and IGA which consists of the same number of individuals. The simulation curves are shown in Figs. 10.6 and 10.7, respectively. Obviously, the simulation result of IGA is better than that of SGA. A number of simulations have been conducted for the comparison, which is shown in Table 10.2. It can be concluded that the optimizing capability of IGA is much better than that of SGA. The IGA has been tested to control the ULKC of virtual human and to provide demonstrations for the other potential applications.

10.5 Conclusions

In this research, we have proposed a new IGA approach to resolve IK problem and obtained the precise inverse solution of ULKC. Compared with SGA, the IGA can avoid “premature” convergence and inefficient searching occurred with much high probability in the later stage of the computation. We have utilized D–H method to structure the mathematic model of ULKC, and improved the GA’s population diversity, population initialization, and adaptive genetic operators. Therefore the proposed procedure provides high precise solutions in a quick search route. The simulation bench tests have demonstrated the concepts and algorithms. In addition, the IGA can be applied to resolve many other chain’s inverse kinematic problems.