ENG-654 · Lecture 06

Cuspidality

How inverse-kinematic solutions are connected across joint space

Running models: the two uploaded custom 3R robots, the custom 6R robot, the PUMA 560, and the FANUC CRX-10iA/L.

Where the previous lectures leave us

We can find IK solutions and detect singularities

IKWhich configurations produce one pose?
JacobianWhere does local mobility drop?
TopologyHow are the solutions distributed and connected?
New question: can a robot move from one IK solution to another without crossing a singularity?

Begin with the smallest example

A 2R robot separates its two IK branches with singular lines

The determinant depends only on the relative elbow angle. Move the target or either joint and compare the two maps.

Try it: drag in either plot. Watch elbow-up and elbow-down meet only at the workspace boundary.

Name the regions

Aspects are maximal connected singularity-free regions

\[\mathcal A_i\text{ is a connected component of }\mathcal C\setminus\mathcal S,\qquad \mathcal S=\{\mathbf q:\det J(\mathbf q)=0\}.\]

Inside one aspect

Every pair of configurations can be joined by at least one singularity-free joint path.

Across aspects

Every connecting joint path intersects the singularity set.

Important distinction

The sign of \(\det J\) is useful, but disconnected regions can share the same sign.

The definition

Cuspidality means two IK solutions can share one aspect

A robot is cuspidal if two distinct inverse-kinematic solutions of the same pose can be connected by a path that contains no singular configuration.
\[\mathbf q_a\ne\mathbf q_b,\quad f(\mathbf q_a)=f(\mathbf q_b),\quad \exists\,\gamma:[0,1]\to\mathcal A_i\text{ with }\gamma(0)=\mathbf q_a,\ \gamma(1)=\mathbf q_b.\]
The joint path is open, while its image under forward kinematics is a closed loop in task space.

Reduce the 3R picture

The determinant and cylindrical coordinates both eliminate \(q_1\)

Position determinant

\[\det J_p=\frac34(3c_3+4)\left[c_2(c_3-2s_3)-s_3\right]\]

The expression contains \(q_2\) and \(q_3\), but not \(q_1\). A zero in the square plot therefore represents a complete circle of singular configurations parameterized by \(q_1\).

Meridian reduction

\[\begin{bmatrix}x\\y\end{bmatrix}=R(q_1)\begin{bmatrix}u(q_2,q_3)\\v(q_2,q_3)\end{bmatrix}\]
\[\rho^2=x^2+y^2=u^2+v^2,\qquad z=w(q_2,q_3)\]

The rotation \(R(q_1)\) disappears from \(\rho\). We may set \(y=0\), use \(x=\rho\), and study the \((\rho,z)\) slice without losing singularity information.

Joint-space singular curves live in \((q_2,q_3)\); their forward-kinematic images are critical curves in \((\rho,z)\).

Compare the uploaded 3R pair

One shoulder offset changes the global IK structure

custom_3R_new_0.urdf

\(a_1=0\) · noncuspidal

custom_3R_new.urdf

\(a_1=1\) · cuspidal

Both renderings load their own uploaded STL link set. The offset model uses link_1.stl; the zero-offset model uses link_1_0.stl.

Interactive atlas

Change the geometry, then click a workspace point

The left plot shows \(D(q_2,q_3)=0\). The right plot maps those singular configurations to critical values in the \((\rho,z)\) slice.

Try it: switch between the two uploaded presets, click between critical curves, and inspect every IK solution in joint space.

Read the atlas

Cusps change how solution sheets connect

Regular value

Each plotted IK point is locally isolated and \(D\ne0\).

Fold

Two IK solutions merge on a regular critical curve and disappear across it.

Cusp

Three IK solutions coalesce. Encircling its critical value can permute solutions without meeting a singularity.

A cusp is not merely a sharp-looking workspace curve. It is a triple-root event in the inverse problem.

Nonsingular change of solution

Build a joint path and watch its closed workspace loop

This laboratory uses custom_3R_new.urdf and its STL meshes. A faded robot preserves the starting configuration.

Try it: click a workspace point, select two IKs in the same aspect, build the path, then play it. A direct segment is used when safe; otherwise the planner stays inside the aspect.

What the animation proves

The configuration changes branch, yet the loop never touches a singularity

StartChoose one regular IK solution.
MoveFollow a path contained in one aspect.
ReturnThe tool returns to the same workspace point at another IK.
\[\det J_p(\gamma(s))\ne0\quad\forall s\in[0,1],\qquad f(\gamma(0))=f(\gamma(1)).\]
The ghost and final robot coincide at the tool, not in joint configuration. That is a nonsingular change of solution.

Calculate a 3R cusp

A cusp is a triple root of the inverse-kinematic polynomial

1

Use \(t=\tan(q_3/2)\) to eliminate trigonometric terms and obtain \(P(t;\rho,z)=0\).

2

Locate repeated roots with \(P=0\) and \(P'=0\). These are critical values.

3

Impose \(P''=0\). A root of multiplicity at least three is a cusp candidate.

4

Reject higher degeneracy and nonreal configurations by checking \(P'''\ne0\), real \(t\), and the original kinematics.

\[\boxed{P(t)=0,\qquad \frac{\partial P}{\partial t}=0,\qquad \frac{\partial^2P}{\partial t^2}=0}\]

A coordinate-free numerical test

The singular curve has a tangent that collapses under the workspace map

\[g(q_2,q_3)=\begin{bmatrix}\rho\\z\end{bmatrix},\quad D=\det J_p,\quad \boldsymbol\tau=\begin{bmatrix}D_{q_3}\\-D_{q_2}\end{bmatrix}\]
\[\boxed{D=0,\qquad J_g\boldsymbol\tau=\mathbf0}\]

Solve numerically, map each candidate through forward kinematics, then confirm the triple-root conditions.

Offset 3R result

For \(a=(1,2,1.5)\), \(d=(1,1,0)\), and \(\alpha=(\pi/2,\pi/2,0)\):

\(q_2\)\(q_3\)\(\rho\)\(z\)
−129.783°66.385°2.4656−0.9987
−78.596°−171.935°1.35550.4953
78.596°−171.935°1.35551.5047
129.783°66.385°2.46562.9987
The polynomial test identifies multiplicity; the tangent test explains the geometry visible in the atlas.

Return to the 6R partition

A spherical wrist separates position and orientation again

\[{}^3J_5=\begin{bmatrix}J_{A,v}&0\\J_{A,\omega}&J_{W,\omega}\end{bmatrix},\qquad \det({}^3J_5)=\det J_{A,v}\det J_{W,\omega}.\]

Positional subchain

Joints 1 to 3 place the wrist point \(O_5\). Their singularity set can carry cusp points.

Wrist module

Joints 4 to 6 orient the tool about the wrist center. Its two regular flip solutions are separated by \(\sin q_5=0\).

Module-level conclusion

A spherical wrist is noncuspidal

Two wrist solutions

\[(q_4,q_5,q_6)\quad\text{and}\quad(q_4+\pi,-q_5,q_6+\pi)\]

The separator

Any continuous change between the flips changes the sign of \(\sin q_5\). It must therefore cross \(q_5=0\) or \(q_5=\pi\), where axes 4 and 6 align.

For a wrist-partitioned 6R robot, cuspidality is inherited from the positional 3R subchain.

Cuspidal 6R example

custom_6R_new.urdf inherits its cuspidality from joints 1 to 3

Orientation is fixed and the operational point is the wrist center. A click requests \(O_w=(x,y,z)=(\rho,0,z)\), solves the full pose IK, and exposes every recovered branch in all three views.

Noncuspidal positional subchain

Explore the PUMA wrist-center singularities before classifying its IKs

The tool z-axis is fixed vertically downward and the operational point is the wrist center. Click \((\rho,z)\) to request \(O_w=(\rho,0,z)\), then toggle the complete IK solutions in all three views.

Noncuspidal 6R comparison

The PUMA 560 has three binary singularity separators

\[\det J=K\,f_S(\mathbf q)\,f_E(\mathbf q)\,f_W(\mathbf q)\]
shoulderelbowwrist

Crossing a factor changes one binary posture label. Staying nonsingular preserves all three labels.

This three-factor structure supports a global shoulder, elbow, wrist classification for the eight regular IK solutions.

Eight concrete branches

The PUMA target from Lecture 04 has eight regular IK solutions

IK\(q_1\)\(q_2\)\(q_3\)\(q_4\)\(q_5\)\(q_6\)
130.000−35.00045.000−140.00050.000−120.000
230.000−35.00045.00040.000−50.00060.000
330.000−77.351129.617−90.22629.499178.601
430.000−77.351129.61789.774−29.499−1.399
5170.431−139.617129.617−4.60947.947−111.487
6170.431−139.617129.617175.391−47.94768.513
7170.431−97.26645.000−31.5396.549−83.205
8170.431−97.26645.000148.461−6.54996.795
All values are in degrees. Every row reproduces the same target pose before the uploaded URDF joint limits are applied.

SEW classification

Each of the eight PUMA IKs receives three binary labels

IK
S
E
W
1
+
+
+
2
+
+
3
+
+
4
+
5
+
+
6
+
7
+
8
Three independent binary choices produce \(2^3=8\) labels. No two regular solutions share a label, so no nonsingular change of solution is possible.

Why SEW is not universal

The classification relies on both branch count and factorization

Eight solutions

Three binary decisions can name all regular branches.

Three factors

Each determinant factor supplies a genuine singular separator associated with one label.

Beyond this structure

More solutions or coupled factors require topology, continuation, and path analysis rather than a posture mnemonic.

A harder industrial geometry

The FANUC CRX-10iA/L exposes sixteen IK solutions

The selector reads the uploaded sixteen-solution CSV. Its standard D-H angles are mapped to the uploaded CRX URDF convention, and every row reproduces one fixed target pose.

Path-planning consequence

A branch label is not a certificate of connectivity

EnumerateFind all IKs for the start and goal poses.
ConnectTrack solution sheets while monitoring singularity distance.
PlanSearch within the true aspect structure and joint limits.
For coupled 6R geometries, reliable planning needs continuation or an explicit configuration-space roadmap.

Summary

Cuspidality is a global property of IK connectivity

1

Singularities partition joint space into aspects.

2

A cuspidal robot has distinct IK solutions of one pose inside the same aspect.

3

For the wrist-partitioned custom 6R robot, the positional 3R subchain decides cuspidality.

4

The PUMA admits an eight-branch SEW classification; the sixteen-solution FANUC example does not.

Planning question: not only “which IK reaches the pose?” but “which IK lies in the component my robot can safely reach?”