Why are joint velocities very high near a singularity?

I am reading about singularities and I know that those are configurations which result in the same end-effector position and orientation. I also read that joint velocities get very high near that singularity but I don't understand why.

I get it that they have to be very high when going through that singularity because the arm has to be in multiple poses at once, but I don't know why the speed is so high if it is just near a singularity.

First of all, singularities are not configurations that have the same end-effector position and orientation. Those configurations are inverse kinematic (IK) solutions to that end-effector pose (position and orientation).

The formal definition of singularities is the configurations that the Jacobian loses its rank. At such configurations, the manipulator may lose its degrees-of-freedom (DOF), i.e., it may not be able to move its end-effector in some certain direction.

Let's consider the relation $$\dot{x} = J(q)\dot{q},$$ where $x \in \mathbf{R}^6$ is a vector representing an end-effector pose, $q \in \mathbf{R}^n$ is a robot configuration, $J(q)$ is the Jacobian at the given configuration, and $n$ is the number of DOFs.

For the sake of argument, consider when $n=6$, i.e., $J(q)$ is a square matrix. At a singular configuration $q^\ast$, the Jacobian loses its rank and therefore $\det(J) = 0$. Looking back to the previous relation, you may see that no matter how large the joint velocity is, it does not contribute anything to the end-effector velocity.

Let's consider this from a mathematical point of view. From the singular-value decomposition of $J(q)$, one has $$\dot{x} = (U\Sigma V^{-1})\dot{q},$$ where $U$ and $V$ are some orthogonal matrices and $\Sigma$ is a diagonal matrix whose entries are singular values (well, not the same singular as what we are discussing). With some algebraic manipulation, one has $$\dot{x}' = \Sigma \dot{q}',$$ where $\dot{x}' = U^{-1}\dot{x}$ and $\dot{q}' = V^{-1}\dot{q}$. Those mapping by $U^{-1}$ and $V^{-1}$ can be seen as coordinate transformations.

At the vicinity of a singular configuration, the Jacobian nearly loses its rank. The singular values (i.e., the entries of $\Sigma$) are very small. Therefore, to attain a certain $\dot{x}'$ (that is, to be able to move in some direction), you would require a very large $\dot{q}'$.

Note, however, that after all, the high joint velocity behavior near a singular configuration is a result of using the relation $\dot{x} = J\dot{q}$ to calculate $\dot{q}$ from a given $\dot{x}$. As @Ugo pointed out in his comment, there exists methods to get around this behavior.

• This answer is spot on and very well discussed. My only comment would be to point out the fact that joint velocities will be high in the neighborhood of singularities only if the controller makes use of the relation $\dot{q}=J^{-1}\cdot\dot{x}$. However, there exist alternative methods to get around this behavior. Commented Nov 20, 2017 at 8:52
• @Ugo Thanks a lot for the comment. I have added the suggestion to the answer. Commented Nov 20, 2017 at 13:42

Look into this robot (fragment from here under Apache license). It is in kinematic singularity position, because the axis of the two rotary joints below and above the middle joint C are parallel:

This means that the two joints marked by arrows are free to rotate by any (just the same) angle in the opposite directions, with the tool center point E staying in the same (valid) orientation.

And if the robot keeps moving some other way with these two joints staying parallel, the worse designed controller may indeed command them very jerky rotations in large angles, at each step, even if they simply should stay in one place instead.

A solver may also result in a "rotate to NaN" command for both joints in this position. This outcome depends on how the controller responds.