This article describes a relatively new and poorly understood concept that every engineer working on manipulation should know of: robot arms that have the unique ability to avoid singularities. But with an interesting joint manifold comes complicated motion planning. The real-world result is that while these robots can make certain motions, they are physically unable to do simple other ones.
As outlined in Why you should know of cuspidal robots, there is a widely held but false belief that for a robot arm to change posture (go from one Inverse Kinematics (IK) solution for a point to another), it always has to pass through a singularity. On robots with 4 or more joints or with joint offsets, singularities aren’t easy to spot. They’re often avoided in motion planning by using an implicit cost term on the Jacobian. However, that causes the robot to slightly deviate from its path and needs careful tuning to ensure the robot doesn’t make any unexpected motions. Singularities can be a pain.
In 1988, Innocenti and Parenti proved that for a certain class of robot arms not all posture changes require passing through a singularity. A manipulator design that can do such nonsingular posture changes is called a cuspidal manipulator. Because the belief that a singularity must be met was deeply rooted in the roboticist’s mind (in fact Borrel had incorrectly ‘proven’ just two years earlier that that should be the case), their work was dismissed at first. Years later, it’s still a little known concept, and as a result, poorly understood.
Analyzing a simple cuspidal robot
Let’s take a look at a simple 3R robot. The joint axes are orthogonal and there’s an offset on the second joint that connects the links.
Singularities occur when the determinant of the Jacobian equals zero. So if we can visualize that surface, we can get an idea of what a nonsingular posture change looks like!
Start with the forward kinematics (FK) for the position of the end-effector:
The determinant of the Jacobian then is
This does not depend on the first joint, which happens for all robots with a revolute first joint. That means we can visualize it nicely in 2D. Let’s plug in link lengths a₁ = 1, a₂ = 1.5, a₃ = 1, d₂ = 0.7 matching the design above.
The IK solutions aren’t simple so we’ll have to resort to the general solution for 3DOF manipulators [Selig J.]. You can convert the 3 nonlinear FK equations into a single quartic (4-th order polynomial) in tan(θ₃/2) which you can solve explicitly and has up to 4 solutions, depending on the robot design (DH parameters).
We can also use this quartic to plot the singularity surfaces in the robot’s workspace, making it easier to interpret than expressing it in θ₂ and θ₃.
Since the first joint (θ₁) doesn’t affect singularities, we can visualize this in a 2D plot by using the distance of the end-effector to the origin (ρ) and the height of the end-effector (z) as our axes.
Within the inner boundary, there are 4 IK solutions, whereas in the outer boundary, there are only 2. Notice the cusp points on the internal boundary. Those points have exactly 3 equal IK solutions, whereas the other points on that internal boundary only have 2.
Let’s look at an example. Take the end effector position x=1.35, y=1, z=0.5, shown as the green x in the middle plot. There are 4 unique IK solutions which we can visualize on each of the plots:
Notice how if you connect the IK solutions on the rightmost plot to form a straight line in joint space, sometimes a singularity surface is crossed, but not always! What happens when we visualize such nonsingular path?
Where cuspidality got its name
In the video below, interpolating two of the IK solutions with a straight line in joint space (rightmost plot) leads to an interesting motion in the (cartesian) workspace. The green points in the left two figures correspond to the end-effector positions the robot goes through.
The workspace path circles a cusp!
This does not mean that all posture changes are nonsingular. Connecting with a different IK solution below makes the robot stretch out to reach the external boundary, just like an elbow up to down would do:
Connecting with yet another solution shows something interesting: The robot passes through a singularity as shown on the rightmost plot, but that singularity seems to correspond to the inner boundary on the workspace (middle) plot. And yet earlier, when it circled the cusp it passed through the same line but didn’t pass a singularity! Why? Remember that a singularity is defined by the joint configuration, and not by the end-effector pose. The surface visualized in the cartesian workspace thus represents a potential singularity depending on the particular IK solution.
A set of feasible paths
If it’s possible to connect two IK solutions together without crossing a singularity, there should exist other separating surfaces, called characteristic surfaces, that further divide the aspects into reduced aspects. The image on the left shows those characteristic surfaces, obtained numerically, in gray. Of the three reduced aspects (Ra₁x) within the aspect in yellow, two (Ra₁₁ and Ra₁₂) correspond to the inner workspace region with its 4 IK solutions.
If we now drop either Ra₁₁ or Ra₁₂, we get a uniqueness domain, which only has a single IK solution at each point. These uniqueness domains determine the set of feasible paths the manipulator can make. If we visualize those in 3D for each aspect, we can clearly see which motions can and cannot be made. It also shows how we could circle the cusp if the manipulator started in the right configuration (aspect 1).
This also means that there is a set of infeasible paths. Let’s analyze one such path.
Feasible paths → infeasible paths
So how does this fit into the wonky motion planning? We’ll have the end-effector follow a straight line in the workspace starting opposite the base and approaching it. This simple, greedy motion planner constructs a joint-space path by taking the IK solution for the next point that is closest (2-norm) to the current solution.
Joint jumps/flourishes! We went smoothly through the first internal boundary but couldn’t do that for the second one (that means we’re in aspect 1). Crossing the internal boundary smoothly can be impossible depending on the configuration you’re in, regardless of how advanced your motion planning is. Of course, those jumps are smoothed out in trajectory generation, but it will cause the robot to wildly deviate from the intended path.
You probably want to know if your robot is cuspidal
How do you go about that?
In mathematical terms, a robot is cuspidal if there exists at least one point in the workspace where the IK admits three equal solutions (the cusp). That’s generally hard to prove for >3DOF and involves converting your system of nonlinear equations into a single polynomial (up to 16-th order for 6 DOF) and finding its roots. Luckily we know which robots are non-cuspidal:
- For a 3R manipulator, if either the first or last two joint axes are parallel or if they intersect, then the robot is not cuspidal. When the first two axes are parallel, this corresponds to your elbow up and down case.
- For a 3R manipulator, the first two joint axes are orthogonal and there are no joint offsets or all joint axes are mutually orthogonal and the middle joint has no offset.
- If you have a 6DOF robot arm with a non-spherical wrist (3 last joint axes don’t intersect at one point), there’s a good chance that it’s cuspidal
- 6DOF with spherical wrist: if the first 3DOF aren’t cuspidal, then the robot is not cuspidal
- 6DOF where the polynomial can be reduced to a quartic, see Mavroidis & Roth for an overview.
Sometimes simply changing link lengths can turn a cuspidal robot into a non-cuspidal one. Watch what happens with the singularity surfaces when we change the length of just one link: Either shorten the length of the second link to a₂=0.5 or the lengthen the third link to a₃=0.1:
Both manipulators have regions of 2 IK solutions and 4 IK solutions, and no cusps. Simply tuning the link lengths (keeping the offset) turned a cuspidal robot into a noncuspidal one. As you can imagine from the right figure and proven by Zein et al., it is possible to design your manipulator such that the entire workspace has 4 solutions and no cusps.
Knowing that cuspidality exists even among today’s robots and that it’s hard to prove if some robot configuration is cuspidal, I strongly encourage roboticists to write motion planning in simulation first. Even though cuspidality is a binary classification, some cuspidal robots might have workspaces that are perfectly fine and will only behave strangely near the very edge of their workspace.
Most industrial robot arms out there today are non-cuspidal, which I believe has mostly been a process of (costly) trial and error, similar to the ABB story. That doesn’t mean you should stick with those designs though. If the engineers at ABB or Kinova tuned some of the link lengths, could they have gotten the best of both worlds?
Special thanks to Mrunal Sarvaiya, Jeroen de Maeyer, Brandon Contino, Sam Carp, Michael Sobrepera, Kit Kennedy, Steve Hansen, Zoe Matticks, Hans Lee, Jonathan Tran, and others for their input and thorough reviews.
- Selig, J. (2013). Geometrical Methods in Robotics. United States: Springer New York.
- Wenger, P. (2007). Cuspidal and noncuspidal robot manipulators. Robotica, 25(06). doi:10.1017/s0263574707003761
- Zein, M., Wenger, P., & Chablat, D. (2006). An exhaustive study of the workspace topologies of all 3R orthogonal manipulators with geometric simplifications. Mechanism and Machine Theory, 41(8), 971–986. doi:10.1016/j.mechmachtheory.2006.03.013
- Corvez, Solen & Rouillier, Fabrice. (2002). Using Computer Algebra Tools to Classify Serial Manipulators. 31–43. 10.1007/978–3–540–24616–9_3
- Kohli, D., & Spanos, J. (1985). Workspace Analysis of Mechanical Manipulators Using Polynomial Discriminants. Journal of Mechanisms Transmissions and Automation in Design, 107(2), 209. doi:10.1115/1.3258710
- Mavroidis, C., & Roth, B. (1994). Structural Parameters Which Reduce the Number of Manipulator Configurations. Journal of Mechanical Design, 116(1), 3. doi:10.1115/1.2919373