Abstract
In this paper, a stable and accurate algorithm to compute all solutions of the inverse kinematics problem of a 6 revolute manipulator chain is presented. A system of equations is constructed based on the fundamental closure conditions, leading to a closed algebraic system of 20 equations involving 16 quantities, composed of trigonometric functions of five among the six unknown joint angles. Two among these five are stably eliminated using singular value decomposition (SVD) avoiding the need to consider special cases. The resulting system of equations involving three unknowns is solved by conversion to a generalized eigenvalue problem. The remaining three unknown angles are obtained using the previously computed pseudoinverse. In this formulation we exploit the inherently complex form of the system reducing it to 10 complex equations in 9 quantities, which substantially accelerates the SVD computation. The method’s robustness is demonstrated through a comparison to current methods and several examples including known problematic cases where some axis or link lengths vanish, or some joint angles are 180 degrees, as well as cases where multiple eigenvalues arise.
Keywords: 6R manipulator, Inverse Kinematics, Complex singular value decomposition, Multiple eigenvalues, Molecular chains
2020 Mathematics Subject Classification. Primary: 65H14, Secondary: 65H10
1. Introduction.
The Inverse Kinematics () problem of a linkage, that is positioning the end effector (Arm) given a fixed (Reference) position of the base, is central in the theory of mechanisms and has been extensively studied, both in robotics where the accurate control of robot arms is critical in diverse areas such as medicine, industry and the International Space Station, see e.g. [2] and references therein, as well as in computational structural biology where loop closure analysis has been used in the study of protein loops [9, 19, 20, 6, 16] and large flexible multicyclic molecules [27, 5]. The workspace of a linkage is the set of positions and orientations of the end effector attainable through variation of the linkage degrees of freedom (DoF). It is well known that at least six DoF are required to achieve a workspace that forms a (union of) open neighborhood(s) in . The problem may be realized without loss of generality as a chain of rigid bodies connected through revolute pairs (-pairs) between fixed end positions. In this paper we consider the IK problem for a linkage formed by a kinematic chain of rigid objects connected by revolute joints. The linkage may be a loop with fixed base and end effector or a closed ring (Fig. 1).
Figure 1.
The transformation from cyclic molecule (left) and open manipulator (right) to closed ring. In the left, the atoms in the selected axes are filled and the coordinate systems of complete system show the relationship between reference () and arm () frames.
For simplicity we focus on the ring problem, while the extension to redundant linkages of joints and molecular chains is given in Appendix A. The 6 joint angles are the variables defining the linkage configuration. Together with the twist angles between successive axes and the joint and axis lengths of the resulting orthogonal system, they constitute the Denavit-Hartenberg () coordinates [8] of the linkage. The transformation of an open robot arm to a closed system is accomplished by introducing a virtual link as depicted in the right of Fig. 1.
The first fully algebraic solution of the problem was given by Lee and Liang [14, 13]. Subsequently, several authors ([18], [21]) have commented on the algebraic complexity of the Lee-Liang method and proposed simplifications. All methods are based on the idea that certain of the variables may be eliminated, eventually resulting in a generalized eigenproblem or a univariate polynomial in one of the variables. Key differences among methods are in the details of the elimination process and the precise method of arriving at a univariate system.
As noted by Angeles [2], current algorithms share some robustness issues under certain conditions, such as the occurrence of infinite eigenvalues associated with angles. In fact, robustness problems may arise at different stages in a typical method: (1) The first stage of the algorithm requires the elimination of some of the variables. The choice of the specific equations to be solved may lead to the inversion of singular matrices. (2) Assuming successful elimination, the solution of the resulting generalized eigenvalue problem may lead to infinite or multiple eigenvalues. (3) The algebraic manipulations for deriving the remaining DoF, once the eigenproblem has been solved may also introduce singularities.
The Lee-Liang method in its original form suffered from its somewhat arbitrary choices for eliminating or back-substituting variables that in special cases lead to singular matrices or vanishing denominators. Specifically, the 16 among the 20 equations chosen for the initial elimination ([13], eq.(50)) are not guaranteed to result in a nonsingular matrix inversion. Moreover, when solving for the remaining variables, vanishing lengths of either axis 3 or axis 4 results in the vanishing of the denominator of expressions F9 and F10 in [13], causing the method to fail. Although most current methods avoid some of the pitfalls in the original algorithm by Lee and Liang, they may still fail for special combinations of the problem parameters which nevertheless do correspond to well posed configurations. As discussed in [2], the method by Raghavan and Roth [21] will fail if the first link length vanishes. Although this problem may be addressed by reindexing generically, this will fail if all link lengths vanish. The method by Renaud [22] achieves efficiency by utilizing a specific linear combination of the equations for the inversion, which again fails for vanishing link lengths. In the Kohli and Osvatic approach [12], the elimination step involves the inverse of a 6 × 6 matrix whose singularity is not determined, for instance that matrix becomes singular when the twist angle at the sixth link is in a closed linkage. Liu and Zhu [15] follow a similar approach but switch order of solution if singularity is detected.
In addition, the strategy followed by various methods to address possible singularities could deteriorate performance. For example, the methods by [18, 15] use singular value decomposition (SVD) to detect ill conditioning of various inversions, either at the elimination stage or for converting the generalized eigenproblem to an ordinary one, and reformulate in various ways until well conditioned matrices are found. Moreover, some methods arrive at eigenvalue problems of higher dimensionality, again leading to deterioration in performance. The method by Manocha and Canny [18] results in a generalized eigenproblem of size 24 × 24, while as was proven by [13] the system may be reduced to optimal size 16 × 16, as also obtained by [21, 12, 22, 15]. More recently, Husty et al. [10] added clarity to the geometrical structure of the problem, and proposed an elegant algorithm. However the eventual reduction to a univariate polynomial gives a high degree resultant of size 48 × 48 whose resolution substantially increases execution timings. Moreover, as the authors also state, a reformulation may be required until a non-degenerate system may be found, which could further hinder performance. A comparative analysis of the implementation of [10] to that in [15] performed by Angerer and Hofbaur [3] establishes that the former is indeed substantially more robust, but at a high operation time cost, roughly an order of magnitude slower compared to the latter.
The goal of this paper is to formulate a numerically robust algorithm for the solution of the IK problem. Although an earlier version of the algorithm was implemented as part of the BRIKARD molecular modeling suite [5], implementation details were never published. The version of R6B6 presented here incorporates substantial improvements and it is essentially a new algorithm. Contrasted to previous algorithms, R6B6 includes modifications in the elimination and solution process that optimally stabilize the method, avoiding well known pitfalls. Starting with the standard set of equations [2], complex SVD is applied to perform the first elimination. Writing the original real-valued 20 × 16 system as a complex-valued 10 × 8 system accelerates the computation by a factor of 50%. The resultant is then obtained efficiently by multiplication with the left null vectors. By properly accounting for the projective character of the matrix pair formulation in the resulting generalized eigenproblem, infinite eigenvalues are dealt with directly, while the resulting process is augmented to handle cases of multiple eigenvalues. When computing the remaining variables, the singular vectors from the SVD and some symbolic expressions are applied. Utilizing the pseudoinverse as opposed to inverting a subset of the equations lends stability to the computation and solves the issue of accidental singularities in the first elimination, which may require costly reformulations to resolve. We must note here that for systems exhibiting flexibility so that a continuum of solutions may exist, all methods (including the one presented here) designed to determine a finite number of solutions will fail. Such cases require further geometrical analysis, as can be found in [4], [23].
The remainder of the paper is organized as follows: In Sec. 2 we give a brief overview of the key steps in the algorithm, with details provided in the following subsections. Sec. 2.1 presents the fundamental closure equations and introduces the main formalism used throughout the paper. Sec. 2.2 presents the details of the first elimination via complex SVD. In Sec. 2.3 we discuss the resultant of the 4 polynomial equations in the half-tangents of the three remaining variables, extended as 8 equations in the same three variables and then posed as a 16 × 16 generalized eigenvalue problem. In Sec. 2.4 the procedure for extracting the remaining variables and giving the complete solution is presented. In Sec. 3 we discuss implementation details of the solution process, with focus on special cases, such as infinities in the half-tangent variables and multiple eigenvalues. Sec. 4 discusses numerical examples that demonstrate code performance in various exceptional cases, as well as singular cases that may lead to failures. Sec. 5 gives a summary and concluding remarks. In the Appendices we present the details of the DH transformation App. A, give the details of the system of equations App. B, discuss the relation between real and complex SVD App. C and discuss the treatment necessary in the presence of multiple eigenvalues App. D.
2. The loop closure equations: algebraic solution.
As preparation for our algorithm, an open chain is firstly converted to a closed chain. In a redundant chain of rotors, six rotors are selected (associated with unknown joint angles) and the intervening structure between two consecutive rotors is rigidified by fixing all intervening joint angles (or torsions in a molecular chain) and then replaced by a common normal link of the two axes of rotors. The DH transformation places a Cartesian frame at either end of each joint (Fig. 2). For an open robot arm, we only need to add one virtual link between the sixth and first joints as shown in the right figure of Fig. 1. This results in a closed DH system as shown in the left figure of Fig. 1. The details can be found in App. A. The closed kinematic chain of six rotors is decomposed into two subchains, in which two joints are selected, separated by two joints along either subchain. We set one as the reference, denoted by a subscript , and the second as the arm, denoted by a subscript . Here can be assigned to any joint 1, …, 6 in the chain with the others assigned in cyclic succession. The six unknown joint angles are , , , , , , . Applying the notation of [21, 26], we denote , and half-tangent .
Figure 2.
Denavit-Hartenberg coordinate frames are at , is the joint angle and is the twist angle.
We then can formulate closure conditions for the closed DH system and solve the problem accordingly. A set of fourteen closure conditions (Sec. 9.2.2 in [2]), involving the 10 quantities given in Table 1 each evaluated in terms of the unknown , or more precisely its half-tangent , and the sines and cosines of , and , , are extended into a set of twenty equations with respect to the unknowns. The closure conditions are set up so the unknown is absent from all evaluations, and is eliminated by default. Then we can solve the system by following three more steps. The overview of the procedure is as follows and further description of every step will be given in the following subsections:
Table 1.
The fourteen quantities used in closure conditions, presented in complexified form as 4 complex and 6 real expressions. Evaluating these along both subchains joining reference and arm results in the fundamental closure equations. Eqs. are duplicated after multiplication by , resulting in 20 real equations.
| ⟨⟩ | ||
| ⟨⟩ | ||
| ⟨⟩ | ||
| ⟨⟩ | ||
| ⟨⟩ | ||
| ⟨⟩ | ||
| ⟨⟩ | ||
| ⟨⟩ | ||
| ⟨⟩ | ||
A. Formulation of the system of equations.
Based on the closure conditions, we can construct and arrange the twenty equations through symbolic preprocessing as
where , , , , and are coefficient matrices: , are 20 × 16, , are 20 × 1 and , are 20 × 9. The components in , are given by
| (1) |
| (2) |
B. First elimination using SVD.
The SVD of is calculated as , and the transpose of the left null-vectors of (denoted as which is 4 × 20) is multiplied on both sides of the system to eliminate the terms on the left side completely which contain the variables and . Then the resulting right side has four equations and can be arranged as follows:
where , are coefficients matrices with dimension 4 × 9. We note that the SVD is performed in complex form, resulting in a 50% speedup, and the results are converted back into real form.
C. Formulation of generalized eigenvalue problem.
The sines and cosines of and in the resulting 4 × 9 system above are firstly converted by the half-tangent identities and . Multiplying this first set of equations by yields a second set which is cubic in , quadratic in and linear in . Then the expanded system is sorted into three coefficient matrices by powers of as () , where , , are 8 × 8 and
| (3) |
Then we construct the 16 × 16 generalized eigenvalue problem with notations , and ,
where denotes an 8 × 8 block of zeros and is the 8 × 8 identity block. The variables , and can be obtained from the real eigenvalues and eigenvectors. We also check for multiple eigenvalues and apply extra treatment when necessary.
D. Solving for remaining variables.
The vector is acquired by multiplying the pseudoinverse on both sides of the original system:
Then and can be solved with selection of appropriate components of to achieve accurate solutions, and is computed with symbolic expressions.
2.1. Formulation of closure conditions and system of equations.
In this section we describe the formulation of closure conditions for the closed DH system. The arm axis has two associated frames: the first locates at the head of connecting to link axis , and the second is , where the tail of connects to link axis . Let be the vector connecting the tail of the reference axis to the tail of arm axis , so that and are coterminal and connects to the frame origin of (left in Fig. 1).
Let us first consider the rotation about relating the frame to , where
Taking the inner product between an appropriate vector , and the coordinate vectors , and , we obtain
| (4) |
The sines and cosines of are next converted to half-tangent relations through the identities for as , and . Multiplying each of the inner-product relations (4) by , and adding (respectively subtracting) the other replaces the two unknowns and with single unknown at the cost of coupling the equations (4), resulting in the pair of relations
| (5) |
Equations in (5) are equivalently expressed in the matrix form
| (6) |
which is the matrix representation of the complex equation
| (7) |
The observation of the complex form of the coupled equations is used to cut the computation by 50% for the first elimination step where the SVD of the matrix of coefficients corresponding to the left-hand side unknowns is computed as a complex 10 × 8 matrix rather than a real 20 × 16 matrix.
The displacement of the arm frame with respect to the reference axis is fully and redundantly described by 10 quantities in Table 1 and the vectors , , , and , relating and connecting vector to the arm frame . Six of the quantities, those without imaginary parts (), are already in suitable form to evaluate along both sides of the loop connecting to to form a set of closure conditions posed as a system of 6 equations where the unknowns are partitioned into two sets: the sines and cosines of , and the sines and cosines of , .
Equating real and imaginary parts of (7), or the first column of the matrix relation (6) with for (), for (), for (), and for (), we can obtain the other set of 8 equations by writing the real and imaginary parts separately as . Details of all the equations are given in App. B. Then the real-valued relations between , the left-hand expansion into the constants multiplying the sines and cosines of , , and , and the right-hand expansion into the sines and cosines of , , coupled by the half-tangent of can be evaluated below. The left evaluation is formulated by orthogonal transformations through which the vectors and can be expressed in the coordinates of the arm frame . The right evaluation is similarly formulated by expressing the vectors and in the coordinates of the arm frame .
The orthogonal transformation between frames connected by a joint axis is given by the rotation , where , , contains the coordinates of unit vector expressed in the frame , and , , contains the coordinates of expressed in the frame . Similarly, rotates the opposite direction about an axis, with , the transpose of the forward rotation. The transformations either way about a link are given by , and . The orthogonal matrices and are the 3 × 3 rotation matrices
| (8) |
where and and is the given twist angle.
Composing transformations in (8), ; and transforming the opposite direction around the loop, , with
| (9) |
The left evaluation proceeds by writing
| (10) |
| (11) |
| (12) |
Then the coordinates of in frame are found by setting in (10); in other words, in the third column of . The connecting vector in terms of the axis lengths and link lengths is given by
Each term in the expansion is transformed to the coordinates of with from (10), , from (11) and , from (12).
The right evaluation proceeds by writing
| (13) |
| (14) |
| (15) |
Then the coordinates of in the frame are found in the third column of , that is by setting in (13). In the right evaluation, the connection vector is written as the vector sum proceeding the other way around the loop
Each term in this expansion is then written in the coordinate frame of , with from (13), , from (14) and from (15).
After deriving the vectors and equations symbolically using MAPLE, we seek to eliminate all terms involving monomials in , , , and their products with . There are a total of 16 such terms and only 14 equations in the system. An additional six equations, , are formulated by multiplying both sides of equations by . This process does not introduce additional monomials as do not involve . To perform an optimally conditioned first elimination, we compute the SVD [25] of the left coefficient matrix and multiply both sides of the equation by its left null-vectors. We proceed by describing a procedure for computing the null-vectors using a complex version of the SVD, taking advantage of the inherently complex structure of the system.
2.2. Complexifying the first elimination.
The entire system of equations is written as a 20 × 16 matrix equation , given in block form as
| (16) |
where , are given in (1) and (2). The matrix denoted in block form with 4 × 8 blocks and from the left evaluations of ; and the 6 × 8 block from the left evaluations of , each holding the constant coefficients multiplying the vector of unknowns . Similarly for the right-hand side coefficient matrix and vector of unknowns , corresponding to the sines and cosines of , . Finally, the 20 × 1 vector holds all coefficients of each equation that multiply only the unknown and holds all constants. The four equations are written as ; the six equations are written as ; the equations are written as the subsequent four rows of the system, ; and the last six rows of (16), namely hold equations . This particular ordering of equations is chosen to reveal the complex structure of .
The coefficient matrix on the left-hand side of (16) is the real representation of the complex matrix
We proceed by computing the complex SVD of , then block multiplying both sides of (16) by the left singular vectors of reconstructed from the left singular vectors of . This technique is motivated by the observation that the set of singular values of are the set of singular values of , each with twice the multiplicity; moreover, the singular vectors of are rearrangements of the real and imaginary parts of the singular vectors of . The reduction of a 20 × 16 to a 10 × 8 matrix decomposition justifies the use of complex arithmetic, as the calculation of the SVD is one of the computationally intensive steps in the entire algorithm. The full description of the relation between the SVD of complex matrix and that of its real representation is discussed in the App. C.
The SVD of is obtained for instance by the routine ZGESVD in LAPACK [1]. Assume , with and complex unitary, and the Hermitian conjugate of . is the real 10 × 8 matrix whose upper left-hand block is the diagonal matrix containing the singular values of in descending order, with remaining entries of zero. Write in explicit complex form as
Assume where and are real orthogonal matrices, and is the real 20 × 16 matrix whose upper left-hand block is the diagonal matrix of singular values of in descending order, with remaining entries of zero. Then can be obtained from as
The left null-vectors of are the last 4 columns of , denoted here as the 20 × 4 matrix ,
Define the 20 × 9 coefficient matrix from the first 8 columns of concatenated with , and the 20 × 9 matrix from the last 8 columns of concatenated with ,
Equation (16) can now be written more compactly as
| (17) |
Since , left-multiplying (17) with eliminates the sines and cosines of and , as contained in . The resulting 4 × 9 system
| (18) |
is optimally conditioned, and the process allows a stable elimination of the first set of variables and computation of the resultant for the remaining ones. was defined in (2).
2.3. Formulation of the generalized eigenvalue problem.
The next step in the solution process is the conversion of the sines and cosines of and to their respective half-tangents in order to reformulate the system as a 16 × 16 generalized eigenvalue problem for eigenvalue . The two remaining unknown half-tangents corresponding to (18), and , are extracted from the corresponding eigenvector for each real eigenvalue. First, the 4 × 9 system (18) is transformed into an 8 × 8 polynomial system in the half-tangents of , and as follows. The sines and cosines of and in (2) are converted by the half-tangent identities and . Multiplying through by to clear denominators transforms the system (18) to a system of four polynomial equations. Each of these is quadratic in , quadratic in and linear in . Multiplying this first set of equations by yields a second set which is cubic in , quadratic in and linear in . The coefficients of (18) are thereby sorted into three coefficient matrices by powers of , namely the 8 × 8 matrices , and which satisfy
| (19) |
with the unknowns held in vector given in (3).
The matrix polynomial problem (19) is rewritten as the generalized eigenvalue problem
| (20) |
An in-depth discussion of the solution to the matrix polynomial (19) posed as the generalized eigenvalue problem (20) may be found in [7, 17, 18], and the references therein. In particular, it is established that , the set of eigenvalues of (20) are the solutions of (19), and the real eigenvalues correspond to solutions of the physical problem. Equation (20) is solved for instance using the LAPACK routine DGGEV. The structure of (20) with respect to (19) is revealed by expanding (20) by blocks, yielding
| (21) |
| (22) |
For the eigenvalue , applying (21) to (22), we obtain
| (23) |
that is, for each real eigenvalue , the components of are the unknowns of in (3). To obtain the correct normalization, take for instance , and , where is the th component of vector . The generalized eigenproblem has the optimal size of 16 × 16, and it allows handling of exceptional cases, such as joint angle values equal to . We also remark that the choice of multiplying with the first set of equations and expanding the matrix polynomial (19) in terms of is arbitrary.
2.4. SolVing for remaining three Variables.
The remaining variables and may be obtained by taking advantage of the previously computed SVD of in system (17) where the left-singular vectors and right-singular vectors were found. For the last variable , we will calculate the joint angle among three vectors by using the expressions in (10)-(15). Since the numerical values of the sines and cosines of , and are now considered known, they can be used in the following calculations.
To find and , we first substitute three known variables , , into the system (17) and now the right hand side of (17) is a known 20 × 16 matrix. We next form the pseudo-inverse of the coefficient matrix , where the factors , , have already been computed in the first elimination step. From the economy SVD, where contains the left singular vectors of , contains the right singular vectors of , and is the (square) diagonal matrix containing the singular values of , the pseudo-inverse is given by , and satisfies , revealing the remaining unknowns residing on the left-hand side of (17) by
| (24) |
As the right hand side in the equation above is known, we extract the values for sines and cosines of , by selecting appropriate components of . Applying the arctangent function atan2, we then can get the values for , . Take for instance and .
The last unknown is recovered using three vectors , , expressed in the same frame. From equations (10)-(15), we already have the expressions of the vectors , in the frame and , the expression of the vector in the frame . Then we only need to apply one more transformation to and express it in the frame . Now all the three vectors are expressed in the same frame and the joint angle may be computed among , , and then all 6 of the unknown joint angles may be identified for each real solution of the generalized eigenvalue problem (20).
3. Computational details and discussion of special cases.
The stable implementation of the method requires further consideration. Let us start from the first identified variable . The solutions for will be obtained once we get the eigenvalues. After obtaining the eigenvalues , we will use eigenvectors (which have 16 components) to calculate , . In the case of a simple eigenvalue the eigenvector is comprised of constant multiples of various monomials in these variables:
The key here is that in the eigenproblem solver the eigenvector will be scaled by the largest component. To obtain the solution as accurately as possible, we will select the octad containing the maximal component. Either the first 8 components or the last 8 components will be used.
If , the maximum is found among the last 8 components and will be selected to calculate , . Otherwise, will be chosen. This holds also in the limits and . Here we denote the 8 component vectors as , or 2. The index of the maximal component in depends on the magnitude of , as shown in Table 2 where details of the computation for each case are given. Cases where at least one of the variables , , is close to and the corresponding , , goes to require no additional treatment.
Table 2.
Computing variables. Double vertical lines indicate separate tests, with all cases hinging on the magnitude of : first, and found from eigenvector components, depending on the magnitude of ; then and are found depending on relative sizes of certain components in .
| Max | ||||||||
|---|---|---|---|---|---|---|---|---|
| ≥ 1 | ≥ 1 | |||||||
| ≥ 1 | < 1 | |||||||
| < 1 | ≥ 1 | |||||||
| < 1 | < 1 | ”” | ”” |
After solving for the first three variables, the pseudoinverse is used to calculate , in (24). Since the vector also contains which might be large in magnitude, the maximal component of must be determined. If and the maximal entry appears among the last 8 components of , we will calculate , as and . Otherwise we will apply the first 8 components of . One more test is needed to determine which components are selected. If (that is, , then . Otherwise . If (that is, then . Otherwise . The results are summarized in the last four columns of Table 2. The procedures given above will produce the final solutions correctly for all regular cases.
Discussion of the difficulty of the possible singular case where one variable is close to without further analysis has appeared e.g. in [18, 20, 10], and this case can spontaneously arise in the study of macromolecular chains [6, 16] as was also pointed out in [11]. Following the method in [12], Kim and Chirikjian [11] introduce a Jacobian-based method to handle this issue, presumably due to failure of the basic method. However, in the present formulation, the case where certain joint angles are equal to is naturally handled by the general approach.
In contrast, the presence of multiple eigenvalues requires special consideration. It was mentioned in [18] that multiple eigenvalue cases may arise in exceptional situations. The key difficulty, given a stable computation of the invariant subspace of a multiple eigenvalue, is that the corresponding eigenvectors may not follow the algebraic monomial pattern as expected and the formulas above will not produce the correct solutions. One way to address this problem is to change the reference () and arm () in the 6R6B system: there exist 6 possible choices for the reference and the eigenproblem might be simple for one of them. However, as shown in the examples, special cases can exist for which regardless of reference some of the eigenvalues are still multiple. Then we must resort to the modification procedures as discussed in the Appendix. LAPACK 3.10.0 used in the computations presented here can handle multiple eigenvalues stably, while that was not the case for earlier versions. As a result, it is now possible to take advantage of basic linear space theory to transform the eigenvector basis of the invariant subspace to a basis vector set that is congruent to the required monomial structure from which the other variables may be extracted. In robotics, continuous movement of the system is desired as a result of parameter perturbation. When changes in the system may cause an instance of a multiple crossing of eigenvalues, our method can still maintain accuracy so that different solutions could be tracked continuously through the crossing. By comparison, the Jacobian continuation method discussed in [11] can identify the changing process of specific eigenvalues and correctly follow the movement of the system, however at the price of increased computational cost.
Consider a double eigenvalue as an example. One tolerance , typically less than 1e-14, is used to determine the equality of eigenvalues. Numerical accuracy can also be at issue, as the tolerance to identify equality may be dependent on the matrix pencil of the eigenproblem. The solver will produce two basis vectors and for the two dimensional subspace, and in general we will need to apply extra treatment in order to uncover the unique basis pair possessing the required algebraic monomial structure. An additional complication results from the presence of several variables of higher multiplicity or the presence of infinity and zero in , . Then we need to determine if it is a special case by checking certain components in , . Here we only show the determination for ‘regular double’ and ‘double-double’ cases where , are not zero or infinity. The detailed description and pseudocode for the determination of all cases is given in the App. D. The ‘regular double’ means that the eigenvalue is double and is not, while ‘double-double’ means is double as well. Because of our construction, the double eigenvalue with only double is treated as regular double. Double-double cases are identified by checking if certain ratios between components in , are within another tolerance (typically 5e-12), as follows:
This method also works for the triple case: will be applied to test if is equal to and . In regard to higher multiplicity, we have only considered as far as the triple-double case and provided special treatment. The ‘triple’ in triple-double means the eigenvalue is triple and ‘double’ means that among the corresponding three solutions for two have equal values. Our method to handle triple-double case however is different from double-double case above. The treatment for regular triple case will be applied first and three solutions for will be obtained, denoted as . Next we choose any two eigenvectors and apply the regular double treatment to them and get two solutions for , denoted as . If two values of are in , then it is actually triple-double case, otherwise it is regular triple. The logic introduced to treat triple cases is as follows:
We note that cases where all half-tangent variables are simultaneously double – representing a common first-order tangency of the surfaces associated with the underlying polynomial system – can not be treated by this method, as a double eigenvalue would then be defective with only a single eigenvector which cannot be handled by the eigensolver. As a result, defective cases are typically not identifiable by checking the eigenvectors from the solver or solvable by the method. However one special case might be identified through the components in eigenvectors, specifically if , are both double infinity. Such a case will be discussed in Example 5 below.
4. Numerical results.
In our method, we employ the left null vectors of matrix (16) as obtained from the SVD to efficiently arrive at the resultant (18) while complexifying the SVD increases computational efficiency. The pseudoinverse is used to stably determine the eliminated variables. The 16 dimensional generalized eigenvalue problem as derived in our method as well as in [13, 21, 12, 15, 22] corresponds to the smallest possible dimension of the problem. The solver for the generalized eigenvalue problem is used in our method, as well as in [18, 21]. An alternative approach is to multiply the inverse of the right matrix (like in [12, 15]) to convert into an ordinary eigenvalue problem. The key advantage of the generalized eigenproblem approach is in enabling the correct handling of the case of infinite eigenvalues, corresponding to a joint angle equal to . In this section, we first compare the performance of our method with the results from two state of the art methods as analyzed in [3]. Then several special cases are designed to show the stability of our method, for instance the presence of in the solution and the case of multiple eigenvalues. Two special singular cases are discussed at the end.
4.1. General Performance.
To benchmark the performance of R6B6 in comparison to what may be considered the state of the art methods, we examine four manipulators discussed in [3]: Raghavan and Roth Manipulator (abbreviated as RRM), IACE Laboratory Manipulator (ILM), Paint Manipulator (PTM) and the Manocha and Canny Manipulator (MCM). Detailed description of manipulators can be found in [3]. In that paper, two methods [10, 15] were compared using 2500 tuples of 6 joint angles. The 6-tuples were first randomly chosen and used to construct the end effectors. Based on the end effectors, the two methods were applied respectively to check if the corresponding 6-tuples of joint angles can be recovered. Here we follow the same logic to check the performance of R6B6 with respect to the above manipulators. We choose 2500 random tuples of joint angles in the range [, ] to construct the end effectors and then solve the inverse kinematics using our algorithm written in . The program is compiled on Mac using Clang version 12.0.0. LAPACK 3.10.0 routines written in Fortran 90 are compiled by gfortran version GNU 8.2.0.
All the cases tested were solved correctly by our method. The timings are given in Table. 3. The timings for the three major steps are given separately. The timing of conversion contains the transformation between open chain and closed ring and the timing for calculating the remaining variables. The SVD timing is for the SVD function and the eigenvalue step is for the generalized eigenvalue computation. As can be seen in the table, the average total time for all the manipulators is around 0.5 ms and the average errors for all the joint angles are 8.1e-12, 1.6e-13, 1.3e-12, 6.7e-14 respectively. The maximum errors (not shown in table) are 1.4e-8, 1.1e-10, 1.3e-9, 5.0e-11. To further demonstrate the stability of the algorithm, the closest solution found in each case to the input joint angles was used to compute the closure error, i.e. the difference between the posed end effector and the one found from these angles with a forward kinematic construction. The average Frobenius matrix norm [25] of the difference between the posed and reconstructed end effectors is 1.3e-12, 8.6e-14, 3.8e-13, 3.7e-14 (with maximum values at 1.7e-9, 3.5e-11, 2.2e-10, 6.4e-12), thus verifying the stability of the solution and reconstruction processes. The computations were performed on a Macbook with Intel Core i5 Dual-Core, 2.7 GHz and 8GB RAM.
Table 3.
Computation times (in ) for the various stages of R6B6 algorithm.
| Steps | RRM | ILM | PTM | MCM |
|---|---|---|---|---|
| Conversion | 97.38 | 97.99 | 96.87 | 110.57 |
| SVD | 102.56 | 103.24 | 103.76 | 107.71 |
| Eigenvalue | 165.80 | 154.76 | 170.28 | 166.16 |
| Total (avg.) | 482.85 | 454.33 | 491.75 | 507.67 |
| Total (max.) | 2222.0 | 2878.0 | 2389.0 | 2526.0 |
| Total (min.) | 405.0 | 388.0 | 403.0 | 403.0 |
According to the results in [3] (performed on a PC with AMD Phenom processor, 3.2 GHz and 4 GB RAM), the timing for the manipulators with the method in [10] and [15] is more than 10 ms and 1 ms respectively. We note that the error results for the later two methods refer to solved cases, while both methods fail for certain cases. The timings, corresponding smallest errors and failure rate (%) of Liu-Zhu () method and Husty-Pfurner () method are included in Table 4. No failures were observed for our method, even after repeating the test for 25000 random 6-tuples. We discovered one intrinsically singular case in MCM, as discussed in example 7 below.
Table 4.
Comparative results for R6B6, LZ and HP algorithms. Average computation time (in ), average errors of solved angles in radians and failure rates are given. The results shown for the other two methods are as reported in [3]. The LZ method failed 100% on the ILM and PTM manipulators, so the error reported corresponds to slightly perturbed manipulator parameters.
| RRM | ILM | PTM | MCM | ||
|---|---|---|---|---|---|
| Average execution time (ms) | R6B6 | 0.5 | 0.5 | 0.5 | 0.5 |
| LZ | 1.2 | 2.4 | 2.4 | 1.9 | |
| HP | 9.7 | 9.7 | 9.6 | 9.7 | |
| Error (rad.) | R6B6 | 8.1e-12 | 1.6e-13 | 1.3e-12 | 6.7e-14 |
| LZ | 1.7e-11 | 4.3e-5 | 2.8e-6 | 1.6e-8 | |
| HP | 1.4e-7 | 3.9e-8 | 8.6e-6 | 2.3e-4 | |
| Failure rate (%) | R6B6 | 0 | 0 | 0 | 0 |
| LZ | 0.1 | 100 | 100 | 0 | |
| HP | 0 | 0.3 | 0.32 | 3.7 |
We next continue testing for some special examples. The list of seven examples is given in Table 5. The first example, involving , is shown to follow the general case with no additional treatment, although three of the unknown joint angles in one solution take the value . We then give four multiple eigenvalues examples, including instances of double and triple eigenvalues with additional multiple variables. The second example, where a double infinite eigenvalue is discussed, is shown to be amenable to the method in App. D.1. There follow two examples, the third one with a double and the fourth with a triple eigenvalue, both including additional double variables, for which the modifications given in App. D.2,D.3,D.4 will suffice. In the fifth example, a case is considered where there exists a double eigenvalue with . This case appears to be defective, as discussed in App. D.2. Finally, the sixth and seventh examples discuss the cases of zeros in the input parameters, and possible failures related to singular axes systems. The numerical analysis and discussion of the special features are provided in the corresponding examples.
Table 5.
List of information for all special examples.
| Example # | Description | # solution | |
|---|---|---|---|
| case | 1 | , , in one solution are | 6 |
| Multiple | 2 | Double eigenvalue | 8 |
| 3 | Special double eigenvalues | 8 | |
| 4 | Special triple eigenvalues | 8 | |
| 5 | Double 0 eigenvalue, adjacent double | 4 | |
| 0 inputs | 6 | One zero-length parameter | 2 |
| 7 | Many zero-length parameters | 10 |
4.2. Example 1: simple case.
If one of the variables , , involved in the eigenproblem through a half-tangent representation is close to , it is stated in [18] and [11] that the system will be singular and extra iterations are needed to improve the accuracy. This is because the half-tangent of a joint angle approaching goes to infinity which may introduce errors in the solution process. On the other hand, seen from the perspective of projective space, the point at infinity is just another regular point. In the eigenvalue solver in LAPACK as an example, an eigenvalue is represented by the ratio of a pair of parameters and . A vanishing with nonzero indicates an infinite eigenvalue, and no additional iterative method is required to obtain an accurate solution. Our method takes advantage of this: as outlined above, we only need to identify appropriate components in the computed eigenvectors to achieve accurate solutions. The input linkage parameters for the first example are shown in Table 6 and solutions are given in Table 7. In the first solution, the 4th, 5th and 6th variables are which correspond to , , respectively for reference . This case shows that the eigenvalue goes to while other two variables obtained from the eigenvector also go to . For example 1, the 4 × 4 end effector matrix is
| (25) |
Table 6.
Linkage parameters of example 1.
| Joint | |||
|---|---|---|---|
| 1 | 1.00 | 9.00 | 90.00 |
| 2 | 4.00 | 1.00 | −90.00 |
| 3 | 8.00 | 2.00 | 40.00 |
| 4 | 1.25 | 3.00 | 90.00 |
| 5 | 2.00 | 7.00 | 30.00 |
| 6 | 3.00 | 3.00 | 50.00 |
Table 7.
Solutions of joint angles (in degrees) for example 1.
| No. | ||||||
|---|---|---|---|---|---|---|
| 1 | 80.0000 | 80.0000 | 110.0000 | 180.0000 | −180.0000 | 180.0000 |
| 2 | −108.4903 | −65.5094 | −130.2246 | −129.6402 | −157.3853 | −168.0230 |
| 3 | 119.0163 | −152.6296 | 131.2120 | 7.9542 | −148.4491 | 5.1112 |
| 4 | 146.9569 | −80.0075 | 155.6435 | −11.9434 | 104.8319 | −179.3449 |
| 5 | 6.8777 | 81.0330 | −172.4691 | 165.2536 | −9.9985 | −61.1845 |
| 6 | −126.9544 | −42.7833 | −64.5878 | −141.2330 | −63.8036 | 70.0651 |
4.3. Examples 2-5: Multiple eigenvalues.
The chains in examples 2-4 are closed chains involving 6 rotors with vanishing links. Here the end effector reaches the origin so its orientation is given by a 4 × 4 identity matrix. We use internal parameters, i.e. bond lengths , bond angles and torsional angles as defined in App. A, to pose these three examples, where the first two parameters define the linkage while the torsional angles are to be determined in the solutions. Example 2 entails a double eigenvalue, demonstrating in addition that an infinite double eigenvalue poses no special difficulties. Examples 3 and 4 correspond to double and triple eigenvalues respectively, both with additional double variables. Example 5 exhibits a case where the variables adjacent to the double eigenvalue are both infinite.
4.3.1. Example 2: Double case.
Example 2 shows a case containing an infinite eigenvalue of multiplicity two. The internal parameters and transformed DH parameters of the system are given in Table 8 where the torsions are left unspecified because they will not be used in the solution process. The solutions are given in Table 9. The system is solved by setting the reference as . The fifth variable in solutions 7 and 8 is , so that we have a double eigenvalue at infinity. This case can be handled by the treatment for regular double eigenvalues in App. D.1.
Table 8.
Example 2. Left: Internal parameters; Right: DH parameters.
| Index | ||||||
|---|---|---|---|---|---|---|
| 1 | 3.00 | 90.00 | – | 0.00 | 3.00 | −90.00 |
| 2 | 2.00 | 90.00 | – | 0.00 | 2.00 | −90.00 |
| 3 | 2.00 | 90.00 | – | 0.00 | 2.00 | −90.00 |
| 4 | 1.00 | 90.00 | – | 0.00 | 1.00 | −90.00 |
| 5 | 3.00 | 90.00 | – | 0.00 | 3.00 | −90.00 |
| 6 | 1.00 | 90.00 | – | 0.00 | 1.00 | −90.00 |
Table 9.
Solutions of joint angles for example 2.
| No. | ||||||
|---|---|---|---|---|---|---|
| 1 | 99.6641 | −64.8363 | 118.1837 | −93.2078 | 116.6642 | −63.2178 |
| 2 | −99.6641 | 64.8363 | −118.1837 | 93.2078 | −116.6642 | 63.2178 |
| 3 | −122.1432 | 51.4420 | 35.6079 | −100.2152 | 42.2821 | 42.5890 |
| 4 | 47.9564 | 50.6006 | −135.6256 | 77.1011 | 36.0662 | −66.6271 |
| 5 | 122.1432 | −51.4420 | −35.6079 | 100.2152 | −42.2821 | −42.5890 |
| 6 | −47.9564 | −50.6006 | 135.6256 | −77.1011 | −36.0662 | 66.6271 |
| 7 | 0.0000 | 70.5288 | 0.0000 | −70.5288 | 180.0000 | −38.9424 |
| 8 | 0.0000 | −70.5288 | 0.0000 | 70.5288 | 180.0000 | 38.9424 |
4.3.2. Example 3: Special double eigenvalue case.
The internal parameters and transformed DH parameters of example 3 are given in Table 10. Solving the system, we get 8 solutions as in Table 11. It may be verified that the second, third, fifth and sixth variables of the solutions have two values that are double. Setting the reference as any of 1, 2, 4, 5 results in double eigenvalues, while for references 3 or 6 the system can be solved as a regular case. With varying references, the constructed system and the matrix pencil would change, requiring adjustments to the tolerances for determining the equality of eigenvalues. The tolerances for references , 2, 4, 5 are 112e-16, 103e-16, 44e-16, 34e-16, respectively. In fact, this example is a double-double case where two consecutive variables can be both double. In Table 11, the double value in 5th variable correspond to double value in the 6th variable. For reference (resp. ), the eigenvalue () is the 5th (resp 2nd) variable and the 6th (resp. 3rd) variable, , is obtained from the eigenvectors. In these cases, we need one more tolerance check to decide the double-double case by testing equality of certain components in the two eigenvectors (see Appendix, section D.2). The tolerance is 5e-13 and 4e-14 for references 1 and 4 respectively. The reason is that these cases involve a double value for which requires special treatment. On the other hand references and involve a double value for which is in fact treatable by the regular double approach.
Table 10.
Example 3. Left:Internal parameters; Right: DH parameters.
| Index | ||||||
|---|---|---|---|---|---|---|
| 1 | 3.00 | 90.00 | – | 0.00 | 3.00 | −60.00 |
| 2 | 2.00 | 120.00 | – | 0.00 | 2.00 | −140.00 |
| 3 | 2.00 | 40.00 | – | 0.00 | 2.00 | −60.00 |
| 4 | 3.00 | 120.00 | – | 0.00 | 3.00 | −90.00 |
| 5 | 1.00 | 90.00 | – | 0.00 | 1.00 | −80.00 |
| 6 | 1.00 | 100.00 | – | 0.00 | 1.00 | −90.00 |
Table 11.
Solutions of joint angles for example 3.
| No. | ||||||
|---|---|---|---|---|---|---|
| 1 | 27.7358 | −79.8312 | 79.8312 | −27.7358 | −87.5627 | 87.5627 |
| 2 | −27.7358 | 79.8312 | −79.8312 | 27.7358 | 87.5627 | −87.5627 |
| 3 | 107.6847 | −79.8312 | 79.8312 | −107.6847 | 87.5627 | −87.5627 |
| 4 | −107.6847 | 79.8312 | −79.8312 | 107.6847 | −87.5627 | 87.5627 |
| 5 | 111.3982 | 36.4769 | −36.4769 | −111.3982 | −41.2381 | 41.2381 |
| 6 | −111.3982 | −36.4769 | 36.4769 | 111.3982 | 41.2381 | −41.2381 |
| 7 | 169.2944 | 36.4769 | −36.4769 | −169.2944 | 41.2381 | −41.2381 |
| 8 | −169.2944 | −36.4769 | 36.4769 | 169.2944 | −41.2381 | 41.2381 |
4.3.3. Example 4: Special triple eigenvalue case.
The parameters of example 4 are given in Table 12 and the 8 solutions are given in Table 13, as computed in reference . Any other reference frame, with the exception of reference 4 (see below), could have been used, producing solutions of comparable accuracy. From Table 13, we can see that every variable of the solutions has two values that are triple. Consider solution 2, 4 and 6: the first variable 98.8994 is triple, the second variable in solutions 2 and 4 are double, and the sixth variable in solutions 4 and 6 are double as well. The other variables display a similar pattern. We note that no three consecutive variables exhibit simultaneous double values, which as mentioned earlier would result in an ill-posed system. We refer to this as a triple-double case where extra treatment will be applied to obtain the correct solutions as discussed in the App. D.4. There also exists tolerance for deciding equality of eigenvalues as in example 3 above. The tolerances here are 147e-16, 25e-16, 23e-16, 14e-16, 29e-16, 54e-16 for references through , respectively. Here we must point out that the accuracy of the eigenvalue solver in is not adequate for , in which some small intermediate values become zero and appears in the final solutions. The tolerance under which this issue arises will vary in other systems or software. To illustrate the triple multiplicity solutions, the reconstructed loops corresponding to solutions 2, 4 and 6 from Table 13 are pictured in Fig. 3 with solid grey, dotted red and dot-dashed black lines respectively. In this diagram, indices I-VI label the joints, which are connected by bonds. The first, second and the sixth bonds coincide because the first torsional angles in the illustrated solutions are equal for three rings. The third bond in the first two solutions and the fifth bond in the first and third still coincide because of double multiplicity of the second and sixth respective variables in the solutions.
Table 12.
Example 4. Left:Internal parameters; Right: DH parameters.
| Index | ||||||
|---|---|---|---|---|---|---|
| 1 | 30.00 | – | 0.00 | −120.00 | ||
| 2 | 60.00 | – | 0.00 | −150.00 | ||
| 3 | 1.00 | 30.00 | – | 0.00 | 1.00 | −120.00 |
| 4 | 1.00 | 60.00 | – | 0.00 | 1.00 | −120.00 |
| 5 | 1.00 | 60.00 | – | 0.00 | 1.00 | −120.00 |
| 6 | 1.00 | 60.00 | – | 0.00 | 1.00 | −150.00 |
Table 13.
Solutions of joint angles for example 4.
| No. | ||||||
|---|---|---|---|---|---|---|
| 1 | −98.8994 | 98.8994 | −34.7781 | −145.2219 | 145.2219 | 34.7781 |
| 2 | 98.8994 | −98.8994 | 34.7781 | 145.2219 | −145.2219 | −34.7781 |
| 3 | −98.8994 | 98.8994 | −98.8994 | 145.2219 | −145.2219 | 98.8994 |
| 4 | 98.8994 | −98.8994 | 98.8994 | −145.2219 | 145.2219 | −98.8994 |
| 5 | −98.8994 | −34.7781 | 98.8994 | −145.2219 | −81.1006 | 98.8994 |
| 6 | 98.8994 | 34.7781 | −98.8994 | 145.2219 | 81.1006 | −98.8994 |
| 7 | 34.7781 | 98.8994 | −98.8994 | 81.1006 | 145.2219 | −98.8994 |
| 8 | −34.7781 | −98.8994 | 98.8994 | −81.1006 | −145.2219 | 98.8994 |
Figure 3.
Triple multiplicity solutions in example 4. Indices I-VI label the joints, subscripts denote the corresponding solutions.
Next we explore the impact of small perturbations on the equal eigenvalues and the tolerances (discussed in Sec. 3). Setting , the eigenvalues correspond to the fifth variable . Perturbing the second bond length in the input parameter, the effect on the eigenvalues corresponding to (Table 13, solutions 1, 4 and 7) is shown in Fig. 4. As seen in the figure, the eigenvalues coalesce linearly as the parameter is varied, and the slopes of their trajectories are approximately 4.8, 2.4 and 0. Without perturbations, the condition numbers of these eigenvalues are 4.36, 7.66 and 1125.98 calculated by using the eigenvectors from the solver. For the condition number of an eigenvalue we used the expression for regular matrix pairs given in [24] (p. 294), , where and are the right and left eigenvectors of the matrix pair corresponding to . The condition numbers for the perturbed system with perturbation 1e-10 are 9.67, 55.39, 48.65, which shows one of the eigenvalues becomes moderately more sensitive as they coalesce. However, the low condition numbers indicate the eigenvectors are stable with respect to this perturbation. Then the method gives an accurate solution for eigenvectors whose components are structured as in (3). As the perturbation increases, the three eigenvalues will diverge and the problem eventually becomes a simple case. We manually set a large tolerance to let close eigenvalues be treated as equal and apply the triple case treatment. When the perturbation to the second length is 1e-13, the tolerance is set to 5e-13 and the correct solutions can be obtained through the treatment to triple double case, while a small tolerance can not produce closed solutions. As the perturbation is up to 1e-10, it becomes a simple case where the closed solutions can be obtained without applying extra treatment. However we can set the tolerance as 5e-10 which will result in the triple case treatment being applied and closed solutions are again found. The difference of the solutions with treatment is on average 1e-5 from the ones without using the treatment. A similar observation appears for larger perturbations and tolerances. Therefore, a tolerance value on the order of 1e-14 which works well for the original, pure triple case may be too small to identify equality of eigenvalues for the slightly perturbed system while too large a value will induce unnecessary treatment that slows down the calculation. Setting the tolerance to a larger value 5e-11 works well for this triple case and the double case above, both in original form as well as under a small perturbation.
Figure 4.
Converging process of three equal eigenvalues in example 4.
4.3.4. Example 5: a special double 0 case.
Besides the double-double case with finite values above, we may encounter a special case where the eigenvalue is double and corresponding eigenvector contains double infinity. Given two eigenvectors , , we may detect this special case from the components in , and distinguish two main categories. The first category which is actually a double-double case, contains as double infinity so that only the first and fifth components in , are nonzero and it has three subcases: 1. has two finite values; 2. has one finite and one infinity; 3. has double infinity as well, a defective case as discussed above. When we substitute , back into the original system, if we can identify zero in the last two components of vector , this implies is double infinity and we assign . Otherwise, has two finite values that can be handled by our modification. However we may not be able to distinguish the last two subcases and we simply set as double infinity, and that presents a limitation of this method. The other category contains as double infinity where the last 4 components in , are zero. If is not double , this is a regular case that can be handled by choosing different components to calculate as shown in the App. D.1.
We designed example 5 to demonstrate a case where the eigenvalue is double and there is a single eigenvector containing both , as double . The DH system parameters are shown in Table 14. Solutions, using reference , in which the variables involved in the eigensystem are not all simultaneously double, are given in Table 15. When , the fifth variable corresponds to the eigenvalue which has double 0, and corresponding 4th and 6th variables are double , so this is the first category discussed above. This is actually a defective case: as expected, we can detect the double in , by checking components in the eigenvectors and assign values. The calculation for remaining variables , will be done accordingly, leading to two identical solutions.
Table 14.
Linkage parameters of example 5.
| Joint | |||
|---|---|---|---|
| 1 | 0.00 | 1.00 | −90.00 |
| 2 | 1.00 | 2.00 | 0.00 |
| 3 | 0.00 | 1.00 | −63.43494882292196 |
| 4 | 1.00 | 116.5650511770780 | |
| 5 | 2.00 | 4.00 | 90.00 |
| 6 | 3.00 | 2.00 | −180.00 |
Table 15.
Solutions of joint angles for example 5.
| No. | ||||||
|---|---|---|---|---|---|---|
| 1 | 180.0000 | 180.0000 | 36.8699 | −180.0000 | 36.8699 | 180.0000 |
| 2 | 177.5864 | 98.2537 | 81.1589 | −177.3732 | 0.5874 | 179.9358 |
| 3 | −180.0000 | 90.0000 | 90.0000 | 180.0000 | 0.0000 | −180.0000 |
| 4 | −180.0000 | 90.0000 | 90.0000 | 180.0000 | 0.0000 | −180.0000 |
4.4. Example 6-7: Zero parameters.
In the last two examples, we want to explore the possible singularity when there exist zeros in the input parameters. In example 6, the length of one link is close to zero and the twist angle at this link is . The parameters for lengths and angles, given in Table 16, were adopted from an instance of the 19-atom molecular ring shown in the left of Fig. 1, here converted to an open chain with end effector constructed with joint angles in degrees by [150°, 120°, −100°, −130°, −50°, 170°] and the end effector is in same format as (25) with
Table 16.
Linkage parameters of example 6.
| Joint | |||
|---|---|---|---|
| 1 | 1.00 | 6.00 | 90.00 |
| 2 | 5.00 | 1.00 | 150.00 |
| 3 | 0.00 | 0.60 | 180.00 |
| 4 | 1.00 | 3.40 | 80.00 |
| 5 | 1.40 | 2.40 | 30.00 |
| 6 | 2.30 | 3.00 | −110.00 |
In this singular case, a small modification may cause large deviations in the solutions. With the parameters in Table 16 and the given end effector, the system is not solvable, becoming solvable only when a small positive value is assigned to the third link. We want to explore the lower limit of the length where the method may fail. Starting from a small positive length 1e-6 for the third link , we record one solution of the system in Table 17 as the length is decreased. As can be seen, the system is still solvable when the length is 1e-13. The method fails when the length is 1e-14. Moreover, as the length decreases, the third and fourth variables exhibit large changes, while the other four variables remain quite stable. Because the joint angle at the third link is 180°, the axes 3 and 4 become collinear as the length of the third link approaches zero. Geometrically, the joint angles at axes 3 and 4 will combine into one and the system now has actually 5 DoF. As can be seen, the third and fourth joint angles maintain a 30° difference, therefore producing the same net rotation. Since at least 6 DoF are required to achieve a workspace of open neighborhoods, the system will become unsolvable if a small change is made to the end effector in this example. We can expect that the case where a link is close to zero length combined with 0° twist angle is also singular with behavior similar to that shown here.
Table 17.
One solution of joint angles for example 6 as length of decreases.
| 1e-6 | 150.0000 | 120.0000 | −100.0000 | −130.0000 | −50.0000 | 170.0000 |
| 1e-7 | 150.0000 | 120.0000 | −100.0000 | −130.0000 | −50.0000 | 170.0000 |
| 1e-8 | 150.0000 | 120.0000 | −100.0002 | −130.0002 | −50.0000 | 170.0000 |
| 1e-9 | 150.0000 | 120.0000 | −100.0013 | −130.0013 | −50.0000 | 170.0000 |
| 1e-10 | 150.0000 | 120.0000 | −100.0026 | −130.0026 | −50.0000 | 170.0000 |
| 1e-11 | 150.0000 | 120.0000 | −100.0422 | −130.0422 | −50.0000 | 170.0000 |
| 1e-12 | 150.0000 | 120.0000 | −104.2283 | −134.2283 | −50.0000 | 170.0000 |
| 1e-13 | 150.0000 | 120.0000 | −42.8374 | −72.8374 | −50.0000 | 170.0000 |
| 1e-14 | N/A |
Example 7 is Manocha-Canny Manipulator from [18] and the parameters are shown in Table. 18. By specifying the values [22°, 34°, 56°, 90°, 90°, −120°] to the joint angles, we can get the end effector. However, the set of angles above cannot be recovered because of singularity. The singularity comes from two consecutive 90° in , and , , and from consecutive zero lengths , , causing the vectors of axes , to be collinear. Then the part between , will be combined into one continuum unit and only the summation of , can have direct impact on the end effecor. In the Table. 19, we choose two solutions from our method where the fourth and fifth angles are 90°. As can be seen, the summation of the third and sixth joint angles is −64° which is consistent with the initial joint angles above. In fact, any two values whose summation is −64° can reach the proposed end effector. This is the similar situation in example 6, where one DoF is dropped and the manipulator shows flexibility to some extent. In both examples, the matrix pencil in the generalized eigenvalue problem may become singular, the rank of the matrices is reduced by one and one of the eigenvalues is infinite. There may exist higher-order degenerate cases such as Bricard’s examples [4], in which the rank of the matrices in generalized eigenvalue problem drops by 2 or more. For these flexible cases, working on the polynomial equations will give more hints and it will be the subject of future research.
Table 18.
Linkage parameters of example 7.
| Joint | |||
|---|---|---|---|
| 1 | 0.3 | 0.0 | 90.0 |
| 2 | 1.0 | 0.0 | 1.0 |
| 3 | 0.0 | 0.2 | 90.0 |
| 4 | 1.5 | 0.0 | 1.0 |
| 5 | 0.0 | 0.0 | 90.0 |
| 6 | 0.0 | 0.0 | 1.0 |
Table 19.
Two solutions of joint angles for example 7.
| No. | ||||||
|---|---|---|---|---|---|---|
| 1 | 22.0000 | 34.0000 | −66.8696 | 90.0000 | 90.0000 | 2.8696 |
| 2 | 22.0000 | 34.0000 | 64.7411 | 90.0000 | 90.0000 | −128.7411 |
5. Conclusion.
In this paper, we have presented a novel algorithm for the problem of Inverse Kinematics. It can solve the problem stably even under special conditions which can cause failure in previous methods. As our motivation for this work resulted from the kinematic analysis of arbitrarily long constrained molecular chains such as protein loops and large cyclic molecules, we also included a discussion of the reduction of such chains to DH coordinates. In our method, an arbitrary chain of rotors will be first transformed into a closed chain for which we may easily change the order of solving the 6 variables. The first elimination is performed by computing an SVD of a complex-valued system formed by the full set of closure conditions, and utilizing the pseudoinverse. In addition, the null vectors allow an efficient derivation of the resultant, arriving at an optimally sized 16 × 16 generalized eigenvalue problem. Three joint angles can be determined from the eigenvalues and eigenvectors, even in cases of infinite or multiple eigenvalues. The remaining three angles are subsequently solved using the SVD information. Two types of special cases were discussed in detail. In the first, at least one variable in one solution is . The second describes cases of higher multiplicity eigenvalues. Although it may be argued that linkage systems may be carefully designed to avoid cases which could challenge previous algorithms, such cases do in fact arise for special manipulators, as discussed in the examples.
In order to reach broader audience, three different kinds of inputs are accepted in our code: DH parameters, Cartesian coordinates of the joint junctions or internal parameters, with outputs consistent with the inputs. Since it is developed based on closed chain and accepts different kinds of inputs, our method can find applications to both robotics and conformational sampling of biopolymers. The open source algorithm, R6B6, is freely available from the authors. In addition, the MAPLE symbolic derivation of the equations as used by our algorithm is also available.
Acknowledgments.
XC and EAC acknowledge support from the Laufer Center for Physical and Quantitative Biology at Stony Brook University. We acknowledge helpful conversations with Drs. Robert Lewis and Michael Wester. We thank an anonymous reviewer for pointing out Ref.[3].
The first two authors are supported by NIH RM1GM135136, NSF DMS2054251.
Appendix A. Formulating the 6R loop from an arbitrary chain.
The algorithm presented here can be applied in the context of transforming an open chain or a redundant chain into closed Denavit-Hartenberg () system or in sampling the alternative conformations of cyclic macromolecules and flexible loop regions of proteins as shown in Fig. 1. That is consistent with the fact that molecular bond lengths and angles are relatively “hard” DoF, while torsional angles among successive tetrads are deformable with low energetic cost. For an arbitrary chain, we need to select six rotor axes as pivots for the solution. The remaining rotor angles are set to fixed values thus rigidifying the structure and the intervening structure between two selected axes will be replaced by a link orthogonal to both axes as shown in the left of Fig. 5. For an open robot arm we only need to do this once to find the link between the sixth axis and first axis. Following shows the detailed procedures to finish the conversion. As the following discussion is mostly useful for the reduction of long molecular chains to DH coordinates, we shall be referring to the rotor angles as “torsions”, keeping the terms “joint angles” and “twist angles” for the system reduced to DH parameters. The notations in this and in each of the subsequent sections are self-contained, relevant only to each particular section.
Consider a chain of vectors . Denote the vertices of the chain where vector joins vertex to vertex , . An arbitrary chain may be considered as a closed loop by constructing link connecting vertex to vertex , and we have a closed loop with vectors connecting vertices. For ease of notation we continue the indices cyclically around the loop so that , etc. Suppose there are 6 unknown torsions in the chain indexed by , , and denote the axis vectors . Assume we are given the remaining torsions , where . Also assumed knowns are the lengths of the vectors and the (interior) angles: . In the context of a molecular chain, the lengths would be the bond lengths with being the bond angles.
Throughout, we will use the following notation for torsions in terms of the angle between two vectors, , and a sign: with , and . Here , are normal vectors on two oriented planes and the torsion refers to one of the dihedrals between the planes. In the typical situation, we have a vector triplet , , and the torsion at is computed by a variant of the formula .
Figure 5.
Left: Replacing intervening structure by equivalent orthogonal linkage. Right: Simplified loop with a virtual link and offset for angles.
We proceed by transforming the original loop into a simplified loop with 6 axes, (at most) 6 links. Any existing structure between the vertices and (structure between the axes) may be replaced by a “virtual” link as shown in the right of Fig. 5 so that we now have a loop with at least 6 and at most 12 edges (since some or all of the links might vanish). This loop may be parametrized by the lengths , the 6 angles between axes and links, ; the 6 angles between links and axes, ; the 6 known torsions about, the links, ; and the 6 unknown torsions about the axes,
For each of the missing torsions in the original problem there holds
where , are offsets found in the transformation to the 6-axis/6-link loop:
where
We transform once more to DH coordinates as shown in Fig. 6. Consider the two (in general oblique) lines in space defined by the vectors and We introduce the unit vectors along the : . Let be the mutual moment of the axes (also the reciprocal product of their Plücker coordinates), of sign , where
The torsion at the link is given by
Figure 6.
Transformation of a simplified loop into the DH parameters at a link.
Each link is replaced by the unique link orthogonal to both and , intersecting an extension of at and at . Define the DH axis vectors , the length and the unit axis vectors , , collinear with the . Define the DH link-vectors , the length and the unit-links . The coordinate systems centered at each and are and respectively, which are all right-handed orthogonal systems by definition.
We note that the orientation of the axes of the orthogonal systems may not coincide with the orientation of the axes of the original reduced system since they depend on the placement of both adjacent axes . As a result, the mutual moments of adjacent axes may have different signs in the original and DH systems. On the other hand, the orthogonal links are unaffected as they depend only on each pair of adjacent axes with no reference to the links adjacent at each side of the pair. The twist angles are the rotations between axes and about link and the joint angles are the rotations between links and about axis . As such, these depend on the orientations of the orthogonal axes so the quadrant in which they fall may only be determined after the entire system of orthogonal links has been constructed. We have
so that the mutual moments of the are
and with we have
where , the orientations of the with respect to the , need to be determined.
Among the selected 12 atoms/nodes in the reduced linkage, we denote the points by and . To determine the location of the orthogonal links we introduce quantities (resp. ), the oriented distances along the from the point (resp. ) to the orthogonal link junction . Substitute and into the equation to get expressions in terms of the :
Taking dot products with and and using the orthogonality of the link,
with solutions
Special care must be taken in case the axis vectors are parallel or antiparallel, when the denominator in the above formulas vanishes. In that case, the orthogonal link may be situated arbitrarily. In general, when the mutual moment vanishes we have three cases: (1) parallel/antiparallel axes; (2) coplanar, non-parallel axes; (3) co-terminal axes. We discuss these special cases below. The idea is to choose a unique convention that allows unique forward and inverse DH transformation. We continue with the generic case discussion and we will follow by detailed analysis of the special cases.
In the generic case discussed above, we have for the signed length of the DH axis vector:
Then .
The length of the linkage, is found from the invariant triple product as
Defining where is the mutual moment of the axes (also the reciprocal product of their Plücker coordinates) defined above , we have
so that the twist angle at the orthogonal link is
By orthogonality, , . Finally, the (unknown) joint angles about the axes with respect to the orthogonal links,
are related to the torsions about the axes in the reduced linkage system,, by
in terms of the offsets given by:
Using the moment equation, it is seen also that
Appendix B. Details of the system of equations.
Introducing the expression , the equations can be written as
| (26) |
The first eight are combined into 4 complex equations while the remaining six are used as given.
Appendix C. Relation between the SVD of a complex matrix and its real representation.
Here we recall the relation between the SVD of a general complex matrix and that of its real representation, the matrix
| (27) |
The SVD of is the matrix decomposition where and are real orthogonal matrices, and is the real matrix whose upper left-hand block is the diagonal matrix of singular values of in descending order, with remaining entries of zero. The SVD of , with and complex unitary, and the Hermitian conjugate of . is the real matrix whose upper left-hand block is the diagonal matrix containing the singular values of in descending order, with remaining entries of zero. The singular values of are the square roots of the nonzero eigenvalues of , or equivalently of , and the singular values of are the square roots of the eigenvalues of or .
To compute the SVD of by means of the smaller computation, the SVD of , we first apply the similarity transformation
| (28) |
where and are the and identity matrix respectively, is the complex conjugate of , and , . Applying the SVD of to (28), noting
| (29) |
where , are permutation matrices, , . The first term in the right-hand side product of (29) is , the second is , and the third is , as verified below. Block multiplying to verify
where the permutation , are chosen to rearrange the singular values in descending order with zeros at the end to satisfy the last equality. Block multiplying again to verify , denote the real and imaginary parts of by .
where and are indexed in the last line to indicate agreement with the singular values , each with two corresponding left-singular vectors. Similarly for , denoting the real and imaginary part and multiplying by blocks
where left multiplication reorders the rows in agreement with .
Appendix D. The case of multiple eigenvalues.
By solving the generalized eigenvalue problem, we can get from eigenvalues and , from corresponding eigenvectors, by taking advantage of the special structure, whereas the components are constant multiples of monomials involving the , . However, when higher multiplicity occurs, the numerically computed eigenvectors may no longer have such structure, although they will still form a basis of the invariant subspace of the multiple eigenvalue . We present the necessary modifications to extract a basis whose elements have the monomial structure from which the remaining variables can be obtained.
D.1. Regular double case.
In the case of one double eigenvalue, suppose two eigenvectors (8 components ) from the solver are
Assume two solutions for are , , and two corresponding solutions of are , . Then the two expected eigenvectors are:
Since , are one set of basis for the two dimensional subspace, we want the vectors , to be the basis for the subspace as well. Assume , while the special case will be discussed in next subsection. Suppose there exist four real numbers , , , satisfying
| (30) |
Based on the monomial pattern in , , there are five possibilities for regular double case in total: 1. all , , , are finite values; 2. one of , is and other three will have finite values; 3. one of , is ; 4. both of , or both of , are , and other two are finite values; 5. , are and , are finite values, or vice versa. The cases may become more complicated when there exist 0 in the eigenvectors. We will order them by difficulty and show the corresponding treatment for each case below. The corresponding pattern in the expected eigenvectors are in Table. 20 including two special cases, and the case number with an additional letter means the case has extra conditions. The finite values (f) in each case are assumed to be nonzero. In the pseudocode Box 1 below, we summarize the determination of all possible double cases based on the components in , .
Table 20.
Possible double cases and monomial patterns. ‘n’ indicates nonzero which can be finite or infinite.
| No. | ||||||
|---|---|---|---|---|---|---|
| 1 | f | f | f | f | [, ] | [, ] |
| 2 | f | f | f | [, 0, 0, 0, 1, 0, 0, 0] | [, ] | |
| 2a | f | 0 | f | [, 0, 0, 0, 1, 0, 0, 0] | [0, 0, 0, , 0, 0, 0, 1] | |
| 3 | f | f | f | [, [0, 0, 0, 0]] | [, ] | |
| 3a | f | 0 | 0 | [, [0, 0, 0, 0]] | [0, 0, 0, 0, 0, 0, 0, 1] | |
| 3b | 0 | f | 0 | [0, 0, 0, 1, 0, 0, 0, 0] | [[0, 0, 0, 0], ] | |
| 3c | f | f | 0 | [, [0, 0, 0, 0]] | [[0, 0, 0, 0], ] | |
| 4 | f | f | [1, 0, 0, 0, 0, 0, 0, 0] | [, ] | ||
| 4a | 0 | 0 | [1, 0, 0, 0, 0, 0, 0, 0] | [0, 0, 0, 0, 0, 0, 0, 1] | ||
| 4b | f | 0 | [1, 0, 0, 0, 0, 0, 0, 0] | [[0, 0, 0, 0], ] | ||
| 5 | f | f | [, 0, 0, 0, 1, 0, 0, 0] | [, [0, 0, 0, 0]] | ||
| 5a | f | 0 | [, 0, 0, 0, 1, 0, 0, 0] | [0, 0, 0, 1, 0, 0, 0, 0] | ||
| 6 | f | f | f | f | [, ] | [, ] |
| 0 | n | 0 | f | [0, 0, 0, , 0, 0, 0, 1] | [0, 0, 0, , 0, 0, 0, 1] | |
| n | n | [, 0, 0, 0, 1, 0, 0, 0] | [, 0, 0, 0, 1, 0, 0, 0] | |||
| 6c | 0 | 0 | defective case | |||
| 7 | f | [1, 0, 0, 0, 0, 0, 0, 0] | [, [0, 0, 0, 0]] |
First, we test the 8th components , . If both are nonzero, then this can be case 1-4. The equality and following equality between terms are determined within one tolerance. Define the ratio , . If , then it is case 1 and the treatment is given as follows. We can first pick out the last three rows from either equation in (30)
Using the last row to delete the terms of and , we get
Substitute the second row into the first row to remove and obtain
With two equalities containing two variables, one quadratic equation in terms of is obtained: . Notice that is also one solution to this equation. Two solutions correspond to , . With , , we could select the third, fourth and last two rows from the first equation in (30) to solve , :
Then use the last row to delete the term in the second row and use the second to last row to delete the term in the first row,
With these two row, we obtain and then . Also, .
For the 2nd case, if , we then check the ratios in , . If , we can expect one of , goes to . We set as and , , .
For the 3rd case, if , , we next calculate the ratios . If , we know that one of , is and we set it as and . Then we can pick out the second to fourth rows from the either equation in (30) to calculate two values for as follows:
Substitute the second row into the first row above to remove and ,
With two equalities containing two variables, one quadratic equation in terms of is obtained: . Notice that is also one solution to this equation. Then by solving this equation we can get , . One of two values will be equal to and the other is , then .
For the 4th case, if , , , we check the ratios . If they are not equal, we can set , as , and . Otherwise, we may have special cases as discussed in the next subsection.
In the 5th case, we will see zero in the 8th components. Zeros in the 8th components can also appear in the special double cases discussed in next subsection. If the 8th components are zero, we check the 4th and 5th components. If they are not zero, we then check the ratios . It is case 5 if they are equal and we set , as . If the ratios are both 0, then , . Otherwise, and .
BOX 1:
Procedures to determine double eigenvalue cases from the eigenvector components.
|
|
D.2. Special double case.
Besides the regular double cases, we may face further complications. Based on the check in case 4 of the regular double case above, we need to do more testing on the components in the vectors. Now we have: , , , . We need to distinguish it from the regular case where and by checking the ratios. If , we have a regular case 3b where , , and . Otherwise it is a double-double case (case 6) and , are identical while . , cannot be obtained correctly because the eigenvalue problem is degenerate. Therefore, by substituting , into system (17) and multiplying the pseudoinverse of matrix from SVD on both sides, we can obtain the system as follows:
| (31) |
Taking advantage of the relationship among the components in the last 8 rows of (31), we have
Two solutions of this quadratic equation correspond to , . One more special double-double case is needed to consider. If the 8th components are nonzero, the 7th, 5th, 3rd and 1st components are zero, then this is case 6a where the has double 0. However, we may not be able to resolve two subcases by checking the components in eigenvectors: 1. , are finite; 2. , is finite. We need to substitute , back into the system obtaining (31) containing . If both , are finite, the modification above can solve it. But if the last two components in vector are 0, then at least one of , is infinity and we set both of them as infinity because the finite in subcase 2 cannot be extracted, representing one limitation of our method.
Based on case 5 of the regular double case, if 4th and 8th components are zero and 5th component is nonzero, then we can identify that both , will be infinity, and there may exist three subcases (case 6b) as discussed in the main text: 1. both of , are finite; 2. one of , is finite and the other is infinity; 3. both of , are infinity. In this subcase 1, if , are nonzero, it can be fixed by the modification above for double-double case. However, if , are both zero (case 6c), then the first component would be zero leading to a defective case that may not be identified through the eigenvector. Substituting , back into system may resolve the problem without a guarantee, another limitation of the method. We can not distinguish subcases 2 and 3 because the last two components in are zero. Then , will be set as infinity, indicating a third limitation of the method. On the other hand, if 5th and 8th components are zero, and 4th component is not zero, then we check the ratios . The equality indicates that it is case 7 where , are infinity and one of , is infinity. We set as infinity and . If ratios are not equal, then we expect , are infinity and both of , are finite values. This is case 3d and we use the treatment for case 3 in regular double to calculate , .
D.3. Regular triple case.
For the triple eigenvalue case, one more eigenvector will be given from the solver as . Assume the third solution for , is , and . The expected third eigenvector is . Suppose there exist nine real numbers , , , , 2, 3 such that
| (32) |
We first pick out last four rows from each of the equations in (32):
By deleting the terms , , , we get
| (33) |
Substitute the last equality into the second equality
Then substituting , into the first equality in (33) and simplifying the expression, we have
Finally, we simplify equality above as
By treating the quantities , , as three unknowns here, we solve the linear system of three equations and get
| (34) |
where , , are constants involving , , , , , 2, 3. From system (34) it follows that , , are the three roots of the cubic
Having obtained , , , we use them to calculate , , . Take out six rows containing , , from the first equation in (32) as follows:
Applying some basic algebraic computations, we have
By deleting , we have
Taking the ratio of the first over the second equality, we obtain
Repeating the procedure for , we find
| (35) |
D.4. Special triple case.
For the triple eigenvalue case we assumed , , are not identical, but two among these three roots can be equal, such as , causing the method above to fail. For this case, following the previous formulation for the general triple case, we can get 3 roots from the cubic equation denoted as . We then test if there exist equal roots among them. Using any pair of eigenvectors such as , and applying the regular double case treatment, we can get two different solutions denoted as . If the two solutions in are also in , we conclude that two of , , are equal, indicating a triple-double case; otherwise, the three roots are unequal and we have a regular triple case. For the equal roots, two in are the two roots and then we need to identify which root is double by substituting both of the two roots into (18). The root that makes the matrices degenerate is the double value. Once , , are obtained, we substitute three roots into Eq.(35) above to get , , , but only one of them would be correct because we assumed . Then for the other two roots , we need one more step to substitute and into (17) to get two additional solutions similarly as in the special double case.
REFERENCES
- [1].Anderson E, Bai Z, Bischof C, Blackford S, Demmel J, Dongarra J, Du Croz J, Greenbaum A, Hammarling S, McKenney A and Sorensen D, LAPACK Users’ Guide, 3rd edition, Society for Industrial and Applied Mathematics, Philadelphia, PA, 1999. [Google Scholar]
- [2].Angeles J, Fundamentals of Robotic Mechanical Systems: Theory, Methods, and Algorithms, Fourth edition. Mechanical Engineering Series. Springer, Cham, 2014. [Google Scholar]
- [3].Angerer A and Hofbaur M, Industrial versatility of inverse kinematics algorithms for general 6R manipulators, 2013 16th International Conference on Advanced Robotics (ICAR), (2014), 1–7. [Google Scholar]
- [4].Bricard R, Mémoire sur la théorie de l’octaèdre articulé, J. Math. Pures Appl, 3 (1897), 113–150. [Google Scholar]
- [5].Coutsias EA, Lexa KW, Wester MJ, Pollock SN and Jacobson MP, Exhaustive conformational sampling of complex fused-ring macrocycles using inverse kinematics, Journal of Chemical Theory and Computation, 12 (2016), 4674–4687. [DOI] [PMC free article] [PubMed] [Google Scholar]
- [6].Coutsias EA, Seok C, Jacobson MP and Dill KA, A kinematic view of loop closure, Journal of Computational Chemistry, 25 (2004), 510–528. [DOI] [PubMed] [Google Scholar]
- [7].Coutsias EA, Seok C, Wester MJ and Dill KA, Resultants and loop closure, International Journal of Quantum Chemistry, 106 (2006), 176–189. [Google Scholar]
- [8].Denavit J and Hartenberg R, A kinematic notation for lower pair mechanisms based on matrices, J. Appl. Mech, 22 (1955), 215–221. [Google Scholar]
- [9].Go N and Scheraga H, Ring closure and local conformational deformations of chain molecules, Macromolecules, 3 (1970), 178–187. [Google Scholar]
- [10].Husty ML, Pfurner M and Schröcker H-P, A new and efficient algorithm for the inverse kinematics of the general serial 6R manipulator, Mechanism and Machine Theory, 42 (2007), 66–81. [Google Scholar]
- [11].Kim JS and Chirikjan GS, Inverse kinematic solutions of 6-D.O.F. biopolymer segments, Robotica, 34 (2016), 1734–1753. [Google Scholar]
- [12].Kohli D and Osvatic M, Inverse kinematics of general 6R and 5R, P serial manipulators, ASME Journal of Mechanical Design, 115 (1993), 922–931. [Google Scholar]
- [13].Lee H-Y and Liang C-G, Displacement analysis of the general spatial 7-link 7R mechanism, Mechanism and Machine Theory, 23 (1988), 219–226. [Google Scholar]
- [14].Lee H-Y and Liang C-G, A new vector theory for the analysis of spatial mechanisms, Mechanism and Machine Theory, 23 (1988), 209–217. [Google Scholar]
- [15].Liu S and Zhu S, An optimized real time algorithm for the inverse kinematics of general 6R robots, 2007 IEEE International Conference on Control and Automation, 2080–2084. [Google Scholar]
- [16].Mandell DJ, Coutsias EA and Kortemme T, Sub-angstrom accuracy in protein loop reconstruction by robotics-inspired conformational sampling, Nature Methods, 6 (2009), 551–552. [DOI] [PMC free article] [PubMed] [Google Scholar]
- [17].Manocha D, Solving systems of polynomial equations, IEEE Computer Graphics and Applications, 14 (1994), 46–55. [Google Scholar]
- [18].Manocha D and Canny JF, Efficient inverse kinematics for general 6R manipulators, IEEE Transactions on Robotics and Automation, 10 (1994), 648–657. [Google Scholar]
- [19].Manocha D and Zhu Y, Kinematic manipulation of molecular chains subject to rigid constraint, in ISMB, 1994, 285–293. [PubMed] [Google Scholar]
- [20].Manocha D, Zhu Y and Wright W, Conformational analysis of molecular chains using nanokinematics, Bioinformatics, 11 (1995), 71–86. [DOI] [PubMed] [Google Scholar]
- [21].Raghavan M and Roth B, Inverse kinematics of the general 6R manipulator and related linkages, ASME Journal of Mechanical Design, 115 (1993), 502–508. [Google Scholar]
- [22].Renaud M, A simplified inverse kinematic model calculation method for all 6R type manipulators, in Current Advances in Mechanical Design and Production VII, 2000, 15–25. [Google Scholar]
- [23].Song C-Y, Chen Y and Chen I-M, Kinematic study of the original and revised general line-symmetric Bricard 6R linkages, J. Mechanisms Robotics Aug, 6 (2014), 031002. [Google Scholar]
- [24].Stewart GW and Sun J-G, Matrix Perturbation Theory, Computer Science and Scientific Computing. Academic Press, Inc., Boston, MA, 1990. [Google Scholar]
- [25].Trefethen LN and Bau D, Numerical Linear Algebra, Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA, 1997. [Google Scholar]
- [26].Tsai LW and Morgan AP, Solving the kinematics of the most general six- and five-degree-of-freedom manipulators by continuation methods, ASME Journal of Mechanisms, Transmissions, and Automation in Design, 107 (1985), 189–200. [Google Scholar]
- [27].Wu MG and Deem MW, Analytical rebridging monte carlo: Application to cis/trans isomerization in proline-containing, cyclic peptides, Journal of Chemical Physics, 111 (1999), 6625–6632. [Google Scholar]






