Robohouse ’26 Library
Contents

Chapter 12

The Jacobian, velocities, and singularities

4 sections · about 4 minutes

12.1 What the Jacobian is

The Jacobian is the matrix that relates joint velocities to end-effector velocities:

v=J(q)q˙v = J(q) \, \dot{q}

where q˙\dot{q} is the six-vector of joint angular velocities, and vv is the six-vector of end-effector velocity — three components of linear velocity and three of angular velocity. JJ is a 6×6 matrix that depends on the current configuration qq.

Each column of JJ tells you what happens to the end effector when you move one joint at unit speed with all others held still. For a revolute joint ii with axis direction ziz_i and origin oio_i, and with the end effector at position pp, that column is:

Ji=[zi×(poi)zi]linear velocityangular velocityJ_i = \begin{bmatrix} z_i \times (p - o_i) \\ z_i \end{bmatrix} \begin{matrix} \leftarrow \text{linear velocity} \\ \leftarrow \text{angular velocity} \end{matrix}

All the quantities on the right are available from the forward kinematics computation you have already done, so building the Jacobian costs almost nothing extra. Compute the transforms, accumulate them, and read off the z-axis and origin of each frame.

12.2 What you use it for

Cartesian velocity control. If you want the tool to move at a specified velocity in space — say, 50 mm/s along the table's x-axis while maintaining orientation — solve q˙=J1v\dot{q} = J^{-1} v. This is the basis of jogging in tool coordinates, and of any velocity-level control.

Force and torque relationships. By the principle of virtual work, the transpose of the Jacobian maps forces at the tool to torques at the joints: τ=JTF\tau = J^{\mathsf{T}} F. That tells you how much joint torque a given payload demands in a given configuration, which is what you need to check whether your motors and gearboxes are adequate at the worst-case pose. It also underlies force control and compliance, if you ever add sensing.

Numerical IK, as described above.

Singularity detection, which is next.

12.3 Singularities

A singularity is a configuration where the Jacobian loses rank — where its determinant goes to zero. Physically, it means the arm has lost the ability to move instantaneously in some direction, no matter how it moves its joints. Approaching one, J1J^{-1} grows without bound, and the joint velocities required for a modest tool velocity become impossible.

A six-axis arm of this type has three families of singularity.

Wrist singularity, when joint 5 is at or near zero and the axes of joints 4 and 6 align. This is the common one, because θ5=0\theta_5 = 0 is an ordinary-looking pose — the wrist straight. Passing through it during a Cartesian move sends joints 4 and 6 spinning rapidly in opposite directions.

Shoulder singularity, when the wrist centre lies on the axis of joint 1. Here, joint 1 can rotate freely without moving the wrist centre at all, so the arm has lost a degree of freedom in that direction. Near it, small tool motions demand very large joint-1 velocities.

Elbow singularity, when the arm is fully extended and the shoulder, elbow, and wrist centre are collinear. At full extension the arm cannot move further outward, and the boundary of the workspace is itself a singular surface.

12.4 Living with singularities

Singularities are intrinsic to a six-axis serial arm, so the question is how to handle them rather than how to remove them.

Detect them. The cleanest measure is the smallest singular value of JJ, obtained from a singular value decomposition. A more common and cheaper measure is Yoshikawa's manipulability index, w=det(JJT)w = \sqrt{\det(J J^{\mathsf{T}})}, which goes to zero at a singularity. Compute it along a planned path before executing and you know in advance whether the path is safe.

Avoid them in planning. When you plan a Cartesian path, check manipulability at each waypoint. If the path passes close to a singularity, either reroute it or accept a joint-space move through that region instead.

Damp near them. If you must operate near a singularity, use the damped least squares pseudo-inverse rather than the true inverse. The tool will not follow the commanded path exactly — you trade accuracy for boundedness — but the joints will not attempt impossible velocities.

Clamp joint velocities. Put a hard limit on commanded joint velocity in the motion pipeline, at a layer below the planner, and do not let anything above it bypass the limit. If the IK or the Jacobian produces something absurd, the clamp catches it and the arm slows rather than flinging itself.

Prefer joint-space moves where you can. A great deal of robot motion — going from one point to another where the path between does not matter — can be done in joint space, interpolating each joint linearly from start to end. Joint-space moves have no singularity problems, because you never invert the Jacobian. Reserve Cartesian interpolation for the parts of the task that need a straight line in space.