ENG-654 · Lecture 05
Robot Singularities
Jacobian columns, rank loss, and singularity geometry in the uploaded 3R and 6R robots
Running examples: custom_3R_new.urdf for position kinematics and custom_6R_new.urdf for full-pose singularities.
The question that drives the lecture
Which joint rates create a desired end-effector velocity?
Forward kinematics tells us where the robot is. Its differential tells us how the robot can move from there.
If a Cartesian velocity is prescribed, what must the joints do?
Act I · Read the uploaded 3R model
custom_3R_new.urdf defines the complete position task
Selected chain
base_link → link_1 → link_2 → link_3_d3 → tool0
The first three joints are revolute; the final transform to tool0 is fixed.
| joint | origin in parent [m] | local axis |
|---|---|---|
| 1 | \((0,0,0.5)\) | \((0,0,1)\) |
| 2 | \((1,0,0.5)\) | \((0,1,0)\) |
| 3 | \((2,1.25,0)\) | \((0,0,1)\) |
| tool | \((1.5,0,0.75)\) | fixed |
Act I · Build the position Jacobian
One cross product gives each column
Let \(\mathbf p\) be the current tool0 position, \(\mathbf p_k\) a point on joint axis \(k\), and \(\mathbf z_k\) that axis expressed in the base frame.
tool0 when \(\dot q_k=1\) and every other joint rate is zero.Act I · Column 1
Joint 1 sweeps the complete mechanism around its base axis
At URDF home
\(\mathbf z_1=[0,0,1]^T\)
\(\mathbf J_{p,1}=[-1.25,\;4.50,\;0]^T\)
The instantaneous motion is tangent to a circle about axis 1.
Act I · Column 2
Joint 2 tilts every downstream point about its current axis
At URDF home
\(\mathbf z_2=[0,1,0]^T\)
\(\mathbf J_{p,2}=[0.75,\;0,\;-3.50]^T\)
This column couples horizontal and vertical tool motion.
Act I · Column 3
Joint 3 contributes the velocity generated by the final lever arm
At URDF home
\(\mathbf z_3=[0,0,1]^T\)
\(\mathbf J_{p,3}=[0,\;1.50,\;0]^T\)
Its magnitude is the perpendicular distance from axis 3 to tool0.
Act I · Annotate the three columns
Read each axis, lever arm, and velocity directly on the robot
The uploaded STL links follow custom_3R_new.urdf. Every \(\mathbf z_k\), \(\mathbf r_k=\mathbf p-\mathbf p_k\), and \(\mathbf J_{p,k}=\mathbf z_k\times\mathbf r_k\) can be controlled independently.
Act I · Define singularity
The custom 3R robot is singular when its three velocity columns lose independence
Motion lost
At least one Cartesian velocity direction cannot be produced.
Columns depend
One joint-generated velocity lies in the span of the others.
Local inverse fails
Finite tool velocity can demand unbounded joint rates.
Act II · Generate the symbolic determinants
Changing \(a_1\) changes the singularity factors
Standard D–H with \(d=(d_1,1,0)\), \(\alpha=(\pi/2,\pi/2,\alpha_3)\), and \(c_i=\cos q_i\), \(s_i=\sin q_i\).
Offset axes: \(a=(1,2,1.5)\)
The additional \(-s_3\) term couples the two singularity factors.
Intersecting first axes: \(a=(0,2,1.5)\)
Now \(c_2=0\) is an explicit singularity family.
Act II · Think in configuration space
A spatial robot has a singularity set, not one bad posture
For every \(q_1\), the same curves in the \((q_2,q_3)\) torus lift into singular surfaces in \(\mathcal C\).
Act II · Map the zero set
The determinant contour partitions \((q_2,q_3)\)
Switch between \(a_1=1\) and \(a_1=0\) to see how the two code-generated determinant factors change the singularity locus.
Transition · From the uploaded 3R to the uploaded 6R
The same column construction scales from position to pose
custom_3R_new.urdf
Three revolute joints map to the three-dimensional velocity of tool0.
Task Jacobian: \(J_p\in\mathbb R^{3\times3}\).
custom_6R_new.urdf
Six revolute joints map to the twist of link_6.
Geometric Jacobian: \(J\in\mathbb R^{6\times6}\).
Act III · Read one revolute joint geometrically
An axis and a lever arm determine the point velocity
\(\mathbf z\): unit axis direction · \(\mathbf p_k\): any point on the axis · \(\mathbf p\): operational point · \(\mathbf r=\mathbf p-\mathbf p_k\).
\(\boldsymbol\omega=\dot q\,\mathbf z\)
\(\mathbf v=\boldsymbol\omega\times\mathbf r\)
\(\mathbf v=\dot q\,\mathbf z\times(\mathbf p-\mathbf p_k)\)
Act III · Fix the convention
This lecture stacks linear velocity above angular velocity
Some screw-theory books use \([\boldsymbol\omega;\mathbf v]\). We use linear first, angular second.
Act III · Stack joint-generated motions
The Jacobian is a catalogue of instantaneous screws
Act III · Verify on the custom 3R
Analytic and geometric position Jacobians coincide
The module checks this against central finite differences at random configurations and reports failures in the console.
Transition · Move from position to pose
A 6R chain maps six joint rates to one twist
Uploaded axis sequence
Local axes: \(z,y,z,x,z,x\)
Operational point: the link_6 origin
All six joints are revolute.
tool0 branches from link 3, so the 6R pose task correctly ends at link_6.Act III · Read the uploaded 6R model
Build six columns at the link_6 origin
All six physical columns are simple; their base-frame trigonometric components are not.
Act III · Use the uploaded wrist geometry
Axes 4, 5, and 6 intersect at one wrist center
In custom_6R_new.urdf, the joint-5 origin lies on the joint-4 and joint-6 axis lines.
Why this matters
Reduce every twist at \(O_w\).
Wrist columns 4 to 6 then have zero linear part.
The Jacobian becomes block triangular.
Act III · Factor the singularity condition
The full determinant separates into arm and wrist factors
Arm singularity
\(D_{\rm arm}(q_2,q_3)=0\)
The first three joints cannot move the wrist center in every Cartesian direction.
Wrist singularity
\(\sin q_5=0\)
Axes 4 and 6 align, so one independent angular velocity is lost.
Act III · Classify the uploaded 6R singularities
Arm and wrist rank losses have different physical meanings
Arm
\(D_{\rm arm}=0\)
Translation of \(O_w\) loses a direction.
Wrist
\(q_5=0\) or \(\pi\)
Axes 4 and 6 generate the same angular direction.
Combined
Both factors vanish.
Position and orientation capabilities are lost together.
Act IV · Use two legal freedoms
Choose where the screw is reduced and where components live
Notation: in \({}^iJ_j\), left superscript \(i\) is the representation frame; right subscript \(j\) is the reference origin \(O_j\).
Change point \(O_j\)
Replace the moment arm endpoint without changing the joint’s screw.
Change basis \(F_i\)
Rotate linear and angular components into a nearby frame.
Act IV · Preserve the physics
Rigid twist transformations cannot create or remove rank loss
\(\operatorname{rank}(AJ)=\operatorname{rank}(J)\)
For a rigid adjoint, \(\det A=1\).
Thus the square 6R determinants have the same zero set.
Act IV · Impose the requested symbolic D–H family
Keep the geometry symbolic around a spherical wrist
| parameter | rows 1 to 6 |
|---|---|
| \(a_i\) | \((a_1,a_2,a_3,0,0,a_6)\) |
| \(d_i\) | \((d_1,0,0,d_4,0,d_6)\) |
| \(\alpha_i\) | \((\pi/2,\alpha_2,\pi/2,\pi/2,\pi/2,0)\) |
| \(\theta_i\) | \((q_1,q_2,q_3,q_4,q_5,q_6)\) |
Preferential choice
Representation frame: \(F_3\)
Reference point: \(O_5\), the wrist point
Act IV · Read the block structure
Reducing at \(O_5\) removes all wrist moment arms
Joints 1 to 3
Move \(O_5\) and rotate the wrist frame.
Joints 4 to 6
Their axes pass through \(O_5\), so their linear blocks are zero.
Determinant
Block triangularity separates arm and wrist factors.
Act IV · Symbolic linear block
Only the arm columns translate the wrist point
Use \(s_i=\sin q_i\), \(c_i=\cos q_i\), \(s_\alpha=\sin\alpha_2\), and \(c_\alpha=\cos\alpha_2\).
Act IV · Symbolic angular block
The final three columns expose the wrist singularity
The angular block contains each joint axis expressed in \(F_3\).
Act IV · Factor the symbolic determinant
The preferential determinant separates three singularity factors
Arm factor 1
\(d_4c_3-a_3s_3=0\)
Arm factor 2
\(G(q_2,q_3)=0\)
Wrist factor
\(s_5=0\)
Act IV · Observe the preferential representation
Choose \((i,j,k)\), then inspect the screw and both determinants
The uploaded 6R STL links follow custom_6R_new.urdf. Live arm and wrist factors identify the cause of rank loss.
Act IV · Choose strategically
Put the reference near the split between arm and wrist
\(i=3\)
Nearby basis reduces propagated rotations.
\(j=5\)
\(O_5\) is the wrist center read from the URDF axis lines.
Same rank
More zero/simple entries; same singularity set.
Act IV · Keep the definitions separate
Analytic orientation rates are not angular velocity
Analytic
For \(\mathbf x=[\mathbf p;\boldsymbol\phi]\):
\(\dot{\mathbf x}=J_A(\mathbf q)\dot{\mathbf q}\)
Geometric
For a twist:
\([\mathbf v;\boldsymbol\omega]=J_G(\mathbf q)\dot{\mathbf q}\)
Act V · Automate the pipeline
A URDF contains enough geometry to generate the Jacobian
Meshes are optional. The mathematics needs topology, origins, axes, and joint types.
Act V · Validate before trusting
Four routes should agree at random configurations
Finite difference
\(J_{:,k}\approx[\mathbf p(q+\epsilon e_k)-\mathbf p(q-\epsilon e_k)]/(2\epsilon)\)
Geometric
Axis–lever-arm cross products generated from URDF.
Representation
Ordinary and preferential Jacobians preserve rank and determinant zero sets.
What to carry forward
From a position formula to a singularity equation
- Singularity is loss of instantaneous task mobility.
- Each Jacobian column is one joint-generated motion.
- Changing rigid representation preserves rank.
- A preferential choice can reveal symbolic structure.
- A URDF can drive the complete geometric pipeline.
Bridge to Lecture 06
Singular loci organize inverse-kinematic branches
Singularities are not merely isolated bad configurations. Their loci partition configuration space and determine how IK branches can connect.
Next: IKS Distribution, Aspects, and Cuspidal Properties