# Inverse Kinematics - How to only find a unique joint angle solution in 4 dof robot?

I have to develop an algorithm to determine the necessary joint angles to achieve a desired TCP position and orientation in a 4 joint manipulator. I have come across a concept called "degeneracies", and I have to think of a scheme that will handle degenerate points so that only one joint angle solution exists for any TCP position and orientation. For example: keep the shoulder tilted up at all times. How can I go about this? I understand the equations, it's mainly the "only one joint angle solution" I'm having a hard time with.

• You are looking for and end-effector position and orientation (but which dimension of each?). If you have four goals, then you find the unique solution easily if you have redundancy there are various solutions... – N. Staub Oct 15 '18 at 6:41

If you have a 4 degrees of freedom system you will most probably solve the inverse kinematics equations for $$X, Y$$ and $$Z$$ position and, aditionally 1 orientation, let's call this $$\alpha$$. IFF the chosen orientation and the robot structure allows an analytical solution, you can proced as follows:

As you mentioned you will get more than 1 solution for one set of inputs, so you must have a strategy to select one of the solutions.

You can derive the equations to have the following form:

$$q_{11} = f_{11}^{-1}(x, y, z, \alpha)$$

$$q_{12} = f_{12}^{-1}(x, y, z, \alpha)$$

here you decide which value of $$q_1$$ to use, e.g. based on its sign.

$$q_1 = \left\{ \begin{array}{c} q_{11} \text{ if } q_{11}>0;\\ q_{12} \text{ otherwise } \end{array} \right.$$

usually, for an analytical solution the next angle which gets calculated is $$q_{3}$$. You can formulate the equations so that they are dependent on $$q_1$$ also. This way the $$q_1$$ choise made earlier will be pluged in the calculations for the remaining joint angles.

$$q_{31} = f_{31}^{-1}(x, y, z, \alpha, q_1)$$

$$q_{32} = f_{32}^{-1}(x, y, z, \alpha, q_1)$$

Also in this case you can make a choise which solution to use:

$$q_3 = \left\{ \begin{array}{c} q_{31} \text{ if } q_{31}>0; \\ q_{32} \text{ otherwise } \end{array} \right.$$

You can continue solving the inverse kinematics problem by calculating $$q_2$$. Here there is are no multiple solutions expected if $$q_3$$ has already been chosen:

$$q_3 = f_{2}^{-1}(x, y, z, \alpha, q_1, q_3)$$

and you can continue this way until you have all angles.

You have a 4-Dof and want to find a set of joint angle values which fullfil the desired orientation and position. I doubt that you have multiple solution for this problem. Because you actually need 6-Dof for this task. Otherwise you can build a nullspace to specify the shoulder movement while the TCP track the desired movement ( but with 4-Dof not worthy probably to use the nullspace...)

• Multiple solutions likely (depending form structure) exists if the number of actuated joints match Cartesian DoFs. If OP has upper and lower joint sultion then this is definetly the case. Nullspace is restricted to a descreet number of poses if actuated joints match desired Cartesian DoFs. – 50k4 Oct 19 '18 at 13:28