The part of robotics that surprises everybody: why a robot arm suddenly loses a direction of movement, why its motors race, why a tool orientation “locks”, and how professionals live with it. We start from joint speeds and finish with redundant and parallel robots. You should have followed the “Maths and motion” course (or know what a 2-axis arm and a matrix are).
The big question
Stretch your arm completely in front of you and ask a friend to push your hand towards you along the arm. You resist with no effort: the bones carry the load. Now try to move your hand along the arm without bending the elbow: impossible. In that pose your arm has lost a direction. Robots have exactly the same problem, and it has a name: a singularity.
This course answers five questions:
What is it? (lessons 1 and 2) A pose where the Jacobian matrix loses rank.
Where are they? (lesson 3) The three famous ones of a 6-axis robot: elbow, shoulder, wrist.
How close am I? (lesson 4) Manipulability and condition number.
Why does it hurt? (lessons 5 and 6) Exploding speeds, lost forces, gimbal lock.
What do I do about it? (lessons 7 and 8) Redundancy, damped inverse, planning, parallel robots.
1
From joint speeds to tool speed: the Jacobian
12 min
You will learn
how the Jacobian is built, column by column, and what it tells you about a robot.
1.1 Speeds are simpler than positions
The position of the tool depends on the joint angles in a complicated way: sines, cosines, products. But the speed of the tool depends on the joint speeds in a very simple way: linearly. If you double all the joint speeds, the tool goes twice as fast. This linear link is a matrix, the JacobianJ.
The idea in one sentence
Each joint, turning alone at 1 rad/s, makes the tool move with some velocity: an arrow. That arrow is one column of J. When several joints move, the tool velocity is the sum of the arrows, each one multiplied by the speed of its joint.
1.2 One single joint
Take one link of length L turned by the angle θ: the end is at x = L cos θ, y = L sin θ. Differentiate with respect to time:
ẋ = −L sin θ · θ̇, ẏ = L cos θ · θ̇
The column (−L sin θ, L cos θ) is perpendicular to the link and has length L: the end moves on a circle, so its velocity is tangent to it. Longer link, faster tool: v = L · ω.
1.3 The two-joint arm
For the arm of the “Maths and motion” course, x = L1 cos θ1 + L2 cos(θ1+θ2) and y = L1 sin θ1 + L2 sin(θ1+θ2). Differentiating gives:
ẋẏ = −L1 sin θ1 − L2 sin θ12−L2 sin θ12L1 cos θ1 + L2 cos θ12L2 cos θ12θ̇1θ̇2 (θ12 = θ1 + θ2)
Read it geometrically: column 1 is the tool velocity when only joint 1 turns (1 rad/s). It is perpendicular to the line “joint 1 → tool” and its length is the distance joint 1 – tool. Column 2 is the same for joint 2: perpendicular to the line “joint 2 → tool”, length L2.
Worked example
L1 = 0.5 m, L2 = 0.3 m, θ1 = 0°, θ2 = 90°. Then sin θ1 = 0, cos θ1 = 1, sin θ12 = 1, cos θ12 = 0:
J = −0.3−0.30.50
If θ̇1 = 1 rad/s and θ̇2 = 0.5 rad/s: ẋ = −0.3·1 − 0.3·0.5 = −0.45 m/s and ẏ = 0.5·1 + 0·0.5 = 0.5 m/s. The tool moves at √(0.45² + 0.5²) ≈ 0.67 m/s.
Method: the Jacobian of any robot, column by column
For each joint i, find its axis (a unit vector zi) and a point Oi on that axis.
Revolute joint: the linear part of the column is zi × (Ptool − Oi) and the angular part is zi.
Prismatic joint: the linear part is zi and the angular part is zero.
Stack the columns side by side. In 3D, J has 6 rows (3 for the linear velocity v, 3 for the angular velocity ω) and n columns (one per joint).
Remember
Velocity model:ẋ = J(q) q̇. The tool velocity is a linear combination of the columns of J.
J depends on the pose q: it changes as the robot moves. For small moves, dx ≈ J dq.
Inverse: if the tool must move at ẋ, the joints must move at q̇ = J−1ẋ. That is only possible if J can be inverted… and this is where the whole course begins.
Key terms
Jacobian matrix
joint speed
tool velocity
column of J
linear / angular velocity
Check yourself
A link of 0.4 m turns at 2 rad/s. How fast does its end move?
v = L · ω = 0.4 × 2 = 0.8 m/s, tangent to the circle described by the end.
With the Jacobian of the worked example, what is the tool velocity if only joint 2 turns at 1 rad/s?
The second column: (−0.3 ; 0) m/s. The tool, 0.3 m above joint 2, is carried to the left at 0.3 m/s.
to recognise a singularity in a drawing, and to name it with the Jacobian.
2.1 The stretched arm
Put the two-joint arm with θ2 = 0: the arm is perfectly stretched. Replace in the Jacobian of lesson 1 (cos θ12 = cos θ1, sin θ12 = sin θ1):
J = −(L1+L2) sin θ1−L2 sin θ1(L1+L2) cos θ1L2 cos θ1
Look at the two columns: both are proportional to the same vector (−sin θ1, cos θ1), which is perpendicular to the arm. Whatever the joint speeds, the tool can only move sideways. Along the arm, nothing is possible.
New word
Singularity. A pose q where the Jacobian loses rank: its columns are no longer independent, so there is at least one direction in which the tool cannot move, whatever the joint speeds. For a square J this is written det J(q) = 0.
2.2 The test: the determinant
For the two-joint arm, a short calculation (lesson 5 of this course shows it again) gives:
det J = L1L2 sin θ2
Elbow angle
det J
Meaning
θ₂ = 0°
L₁L₂ · 0 = 0
Singular: arm stretched (the tool is at the edge of its workspace).
θ₂ = ±180°
L₁L₂ · 0 = 0
Singular: arm folded back on itself.
θ₂ = ±90°
±L₁L₂
Best case: the largest determinant.
θ₂ = 10°
0.17 · L₁L₂
Regular on paper, but already close to a singularity (lesson 4).
Watch out
A singularity is a property of the pose (the joint values), not of the speed, the program or the motors. A better motor does not remove it.
2.3 Two families
Boundary singularities sit at the edge of the workspace: arm stretched or folded. They are easy to avoid, simply do not ask the tool to go there.
Internal singularities sit inside the workspace (shoulder and wrist of a 6-axis robot, lesson 3). They are the dangerous ones: the tool can pass through them while doing a perfectly normal task.
The first reflex of an engineer facing a new robot: find its singular poses and keep the useful workspace away from them.
Key terms
singularity
rank
determinant
boundary singularity
internal singularity
Check yourself
The arm has L₁ = L₂ and is folded back on itself. What is θ₂, and is the pose singular?
θ₂ = ±180°. sin θ₂ = 0, so det J = 0: it is singular (the tool is back at the shoulder).
The arm is stretched along the x axis (θ₁ = 0, θ₂ = 0). In which direction can the tool still move?
Only along y, perpendicular to the arm. Movement along x is lost.
Why is an internal singularity more dangerous than a boundary one?
Because a normal task inside the workspace can reach it without warning; the edge of the workspace is a limit you already respect.
the three classical singularities (elbow, shoulder, wrist), where they are and how to recognise them on a real robot.
Most industrial robots have six axes and a spherical wrist (axes 4, 5 and 6 meet at one point, the wrist centre; see the 6-axis robot page). This shape splits the problem in two: joints 1-3 place the wrist centre, joints 4-6 orient the tool. The Jacobian then also splits, and its determinant becomes a product of simple factors. For the Stäubli RX-90 of the Master course:
det J = −C3D3RL4S5 (S23RL4 − C2D3)
A product is zero when one factor is zero. Each zero factor is a family of singular poses:
Name
Condition
What is lost
How to recognise it
Elbow (or reach)
Joints 1-3 stretched or folded: the wrist centre is at the edge of what joints 1-3 can reach.
Movement of the wrist centre along the arm (towards or away from the base).
The arm looks like a straight stick. Typical when the tool is placed at maximum reach.
Shoulder
The wrist centre lies on the axis of joint 1 (arm folded up above the base).
Sideways movement of the wrist centre: turning joint 1 does not move it any more.
The tool passes just above or just in front of the base. A path crossing the base column is a trap.
Wrist
Joint 5 = 0 (or 180°): axes 4 and 6 are on the same line.
One rotation of the tool: only the sum or the difference of q4 and q6 matters.
The tool points straight along the forearm. Typical for welding or painting straight ahead.
3.1 Why the wrist singularity is the one you meet most
The three wrist axes give the tool angular speeds along z4, z5 and z6. When q5 = 0, z6 = z4: two joints now turn the tool about the same axis. The tool can no longer turn about the axis perpendicular to both z4 and z5. Worse, an infinity of pairs (q4, q6) give the same tool orientation.
What you see on a real robot
Program a straight line with the tool pointing along the forearm. Near the singularity, q4 spins one way and q6 the opposite way, very fast, while the tool hardly moves. The controller slows down, shakes, or stops with an error such as “singularity” or “joint speed limit”.
3.2 Robots with an offset wrist (UR, cobots)
On a UR5 the wrist axes do not meet at one point, yet the same three families exist: wrist (q5 = 0 or 180°), elbow (q3 = 0 or 180°) and shoulder (the wrist centre above axis 1, inside the small cylinder made by the shoulder offset). Only the formulas change. Try the three of them on the 6-axis robot page and on the cobot page.
Remember
A 6-axis robot has three families of singular poses: elbow, shoulder, wrist.
In the joint space they are thin surfaces (for example q5 = 0). But the zone where the robot is badly conditioned around them is thick: you feel the problem well before the exact pose.
Elbow = edge of the workspace; shoulder and wrist = inside it.
Key terms
elbow singularity
shoulder singularity
wrist singularity
spherical wrist
wrist centre
Check yourself
Which joint angle is 0 (or 180°) at a wrist singularity of a 6-axis robot?
q5, the middle joint of the wrist. Then axes 4 and 6 are aligned.
A path makes the tool pass exactly above the base column of the robot. Which singularity is close?
The shoulder singularity: the wrist centre is close to axis 1.
Which of the three is a boundary singularity, and why?
The elbow: the arm is stretched, so the wrist centre is at the edge of the reachable zone.
to measure the distance to a singularity with a number, and to draw it as an ellipse.
A singularity is not a cliff: it is the bottom of a valley. The robot already behaves badly on the slopes. We need a number that says how far we are.
4.1 The manipulability ellipse
The idea in one picture
Imagine all the joint speed combinations of “size 1” (a circle of radius 1 in joint-speed space). Send them through the Jacobian: they come out as an ellipse in tool-speed space. It shows in which directions the tool is fast (long axis) and in which it is slow (short axis). At a singularity, the short axis becomes zero and the ellipse is flat: it is a segment, one direction is lost.
Mathematically, if J = U Σ VT (singular value decomposition), the semi-axes of the ellipse are the singular valuesσ1 ≥ σ2 ≥ … of J, in the directions of the columns of U. The tool is fast along the first, slow along the last.
4.2 Two numbers
Manipulability (Yoshikawa): w = √det(JJT) = σ1σ2 … It is the “area” of the ellipse. It is zero at a singularity. For a square J, w = |det J|; for the two-joint arm, w = L1L2 |sin θ2|.
Condition number: κ = σmax / σmin. It is 1 for a circle (the tool is equally good in all directions) and tends to infinity at a singularity. It is the number that says how much errors are amplified.
Worked example
Two-joint arm with L1 = 0.5 m and L2 = 0.3 m (wmax = 0.15 m²):
θ₂
w (m²)
σ₁
σ₂
κ = σ₁/σ₂
90°
0.150
0.61
0.25
2.5
30°
0.075
0.83
0.091
9.1
10°
0.026
0.85
0.031
28
2°
0.0052
0.85
0.0061
139
Between 90° and 2° the long axis does not change, but the short axis collapses: the robot is still fast in one direction and almost helpless in the other.
4.3 The force ellipse: the mirror image
The same matrix describes forces (see lesson 5): the force ellipse has the same axes but the inverse lengths 1/σi. Where the tool is slow it is strong, and where it is fast it is weak. A stretched arm is slow along its length but it can push very hard along it, because the bones carry the load. You choose the pose according to the task: speed (go to the fast direction) or force (go to the strong one). A hammer-like task wants a stretched arm, a fast pick and place wants a well-conditioned pose.
Watch out
For a full 6-axis robot, J mixes metres per second (linear part) and radians per second (angular part), so its singular values mix units. Engineers look at the two 3×3 blocks separately, or scale them with a characteristic length, before computing w or κ.
Key terms
manipulability
manipulability ellipse
singular value
SVD
condition number
isotropic
Check yourself
A two-joint arm has L₁ = L₂ = 0.4 m. For which θ₂ is the manipulability maximal, and what is its value?
w = L₁L₂ |sin θ₂| is maximal for θ₂ = ±90°: w = 0.4 × 0.4 = 0.16 m².
What does κ = 1 mean for the ellipse?
The ellipse is a circle: the robot can move equally well in every direction (isotropic).
A task needs to push very hard along one direction. Do you want a high or a low σ in that direction?
A low σ: the force ellipse has inverse lengths, so a direction where the tool is slow is a direction where it is strong.
5
Why singularities hurt: speeds, forces and accuracy
12 min
You will learn
what really happens to the motors, the forces and the precision of a robot near a singularity.
5.1 The joint speeds explode
To make the tool follow a Cartesian path at speed ẋ, the controller computes the joint speeds with the inverse Jacobian. For the two-joint arm:
J−1 = (1 / (L1L2 sin θ2)) L2 cos θ12L2 sin θ12−L1 cos θ1 − L2 cos θ12−L1 sin θ1 − L2 sin θ12
Every term is divided by det J = L1L2 sin θ2. When it tends to zero, the joint speeds tend to infinity.
Worked example: 0.1 m/s along the arm
L1 = 0.5 m, L2 = 0.3 m, θ1 = 0. The tool must move at only ẋ = 0.1 m/s (6 m/min, a slow walk) along the arm. We lower the elbow angle θ2 towards 0:
θ₂
|θ̇₁| (rad/s)
|θ̇₂| (rad/s)
elbow motor
90°
0
0.33
3 rpm
20°
0.55
1.5
15 rpm
5°
2.3
6.1
58 rpm
1°
11
31
290 rpm
Same slow tool speed, but a hundred times more motor speed. A real joint has a speed limit (a few rad/s): the controller must slow the tool down, or the robot stops.
5.2 Forces: the same matrix, transposed
The power given by the motors, τTq̇, equals the power received by the tool, FTẋ = FTJq̇. Hence the static model:
τ = JTF
To push on the world with a force F at the tool, the motors must supply the torques τ. Now take the arm stretched along x (θ1 = θ2 = 0, L1 = 0.5, L2 = 0.3):
τ1τ2 = 00.800.3FxFy = 0.8 Fy0.3 Fy
Fx does not appear: a load of 1000 N pulling on the tool along the arm needs zero motor torque. The structure carries it. But a force of 10 N sideways needs 8 N·m and 3 N·m.
Remember: the duality
The directions where the tool cannot move (lost by J) are the directions where the robot can carry any load without motor torque (null space of JT).
It looks like a bonus (a strong, light robot), but the motors cannot control the force in that direction: no force control, no way to push gently, and the structure may be overloaded without any motor feeling it.
5.3 Accuracy and noise
Going from the joints to the tool (forward) is benign: dx = J dq, the error of the encoders is passed on without amplification. Going from the tool to the joints is the problem: a tool error of dx asks for up to dx/σmin of joint motion. With the arm of lesson 4, a tool step of 0.1 mm needs about 0.02° at θ₂ = 90° (σmin = 0.25) but about 0.9° at θ₂ = 2° (σmin = 0.0061): 40 times more, which can be below the resolution of the gearbox and the encoder. A small calibration error becomes a visible error.
5.4 What you see in a real program
Symptom
Cause
An alarm “singularity” or “joint speed limit exceeded”
The inverse Jacobian asks for more than the motors can give.
The robot slows down for no apparent reason
The controller scales the path speed to keep the joints within their limits.
A linear move fails but the same target in joint mode works
The straight line crosses a singularity; joint interpolation does not invert anything.
Axes 4 and 6 spin fast in opposite directions
Wrist singularity: the two axes cancel each other.
Vibration, noise, hot motors
Large high-frequency joint corrections to hold a tiny tool error.
Key terms
inverse Jacobian
static model
joint torque
duality
speed limit
Check yourself
A 500 N load pulls along the axis of the stretched arm of the example. What torques do the motors supply?
Zero: τ = Jᵀ F, and Fx is multiplied by 0. The bones carry the load.
In the example table, why does the elbow motor need 290 rpm at θ₂ = 1° for a tool moving at 0.1 m/s?
Because to move the tool along an almost stretched arm, the elbow has to bend, and bending moves the tool along the arm only very slowly (by a second-order effect). The inverse Jacobian is divided by sin θ₂.
Why is a MoveJ (joint interpolation) able to cross a singularity that stops a MoveL?
It interpolates the joint values directly and never computes the inverse Jacobian.
6
Orientation singularities: gimbal lock
12 min
You will learn
why Euler and Cardan angles have a singularity, how it differs from a robot singularity, and what to use instead.
So far the singularity was in the robot. There is another one in the maths we use to write an orientation with three angles. It has the same bad effects on the controller, so it is worth knowing both.
6.1 Three angles, one lost
Cardan angles (roll-pitch-yaw): rotate by α about z, then β about y, then γ about x (all in the fixed frame): R = Rz(α) Ry(β) Rx(γ). Take the pitch β = 90° and compute the product:
The matrix depends only on γ − α. Whatever α and γ are, if their difference is the same, the orientation is the same. We have three angles but only two numbers matter: a degree of freedom has disappeared. This is gimbal lock.
The Apollo story
The inertial platform of the Apollo spacecraft was a real set of three gimbals. When the middle gimbal approached 90° the outer and inner axes lined up and the platform lost a direction: the crew had to avoid that zone and received a warning before reaching it. It is exactly the same maths as the matrix above.
6.2 Representation singularity versus robot singularity
The angular velocity ω of the tool is related to the rates of the three angles by a matrix E:
ωxωyωz = 0−sin αcos α cos β0cos αsin α cos β10−sin βα̇β̇γ̇ det E = −cos β
When β = ±90°, det E = 0: some angular velocities ω would need infinite rates α̇ and γ̇. The tool itself is perfectly fine; it is the way of writing its orientation that breaks. Engineers therefore distinguish two Jacobians: the geometric one (about ω, singular only when the robot is) and the analytical one (about the angle rates, which also inherits the singularity of E).
Robot singularity
Representation singularity (gimbal lock)
Where?
In the mechanism: depends on the joint values q.
In the maths: depends on the chosen angles.
Is it physical?
Yes: the tool really cannot move in some direction.
No: the tool can turn freely, only the three numbers are ambiguous.
Cure
Move away, replan, redundancy (lessons 7-8).
Change the representation: matrix or quaternion.
6.3 What to use instead
Representation
Numbers
Singular?
Comment
Euler / Cardan angles
3
Yes (±90° for Cardan)
Human friendly. Fine for display, bad for computing and interpolating.
Rotation matrix
9
No
Everything works; 9 numbers with 6 constraints.
Axis and angle / rotation vector
3-4
At 0° and 180° it is ambiguous
Intuitive; used for small rotations and errors.
Unit quaternion
4
No
q = (cos(θ/2), n sin(θ/2)). q and −q are the same rotation. Smooth interpolation (SLERP).
Remember
No set of three numbers can describe every orientation without a singularity (a mathematical fact about the rotation group). Four numbers (quaternion) or nine (matrix) can.
Controllers store orientations as quaternions or matrices and only convert to angles (ABC, RPY, WPR…) for the display and for the operator.
Never interpolate two orientations by interpolating their Euler angles.
Key terms
gimbal lock
Cardan / Euler angles
quaternion
geometric Jacobian
analytical Jacobian
SLERP
Check yourself
For which value of the pitch β do the Cardan angles (rotations z, y, x) have a singularity?
β = ±90° (cos β = 0). Then only γ − α (or γ + α) is defined.
Is gimbal lock a defect of the robot?
No. It is a defect of the three-angle description. The same tool orientation can be written with a quaternion without any problem.
Why can a drone or a camera “flip” when it looks straight up if its attitude is stored as Euler angles?
Looking straight up is the pitch = 90° singularity: yaw and roll become the same rotation and the angles jump.
why robots with extra joints are good at avoiding singularities, and how to use the extra freedom.
7.1 More joints than needed
A robot is redundant when it has more joints (n) than the task needs (m). Examples: a planar arm with 3 joints positioning a point in the plane (n = 3, m = 2); a 7-axis arm (KUKA iiwa, Franka Panda) for a 6-DOF task; your own arm (7 joints from the shoulder to the wrist) holding a glass: you can move the elbow freely while the glass stays still.
The Jacobian is no longer square: it has m rows and n > m columns. The system ẋ = Jq̇ has infinitely many solutions.
7.2 The null space
New word
Null space of J: all the joint velocities q̇ such that Jq̇ = 0. They move the joints but not the tool. Also called self-motion: the elbow of a 7-axis arm turning around the line shoulder–wrist is the textbook example.
Worked example: 3 joints, 2 tasks
Suppose that at some pose the Jacobian is:
J = 101011
The vector (1, 1, −1) is in the null space: J·(1, 1, −1) = (1 + 0 − 1 ; 0 + 1 − 1) = (0 ; 0). To obtain the tool velocity ẋ = (1 ; 0), the pseudo-inverse J+ = JT(JJT)−1 gives q̇ = (2/3 ; −1/3 ; 1/3): check Jq̇ = (2/3 + 1/3 ; −1/3 + 1/3) = (1 ; 0). It is the solution with the smallest norm. All the other solutions are q̇ = (2/3 ; −1/3 ; 1/3) + k·(1 ; 1 ; −1), for any number k.
7.3 Using the freedom
q̇ = J+ẋ + (I − J+J) z
The first term does the main task (the tool). The matrix (I − J+J) projects any vector z into the null space, so the second term can only move the joints, never the tool. Choose z to optimise a secondary criterion:
move away from the singularities (increase the manipulability w: z = k·∇w);
stay away from the joint limits (keep each joint near the middle of its range);
avoid obstacles with the elbow while the hand keeps working;
minimise energy, or share the load between joints.
7.4 Redundancy and singularities
A redundant robot is singular when rank J < m, that is det(JJT) = 0. This is a rarer event: the robot has many ways to reach the same tool pose, and if one of them is singular it can change the arm shape through the null space without disturbing the tool. A 7-axis arm can rotate its elbow to escape a shoulder or an elbow singularity. Only the singularities that lose a tool direction whatever the arm shape (typically a fully stretched arm) cannot be fixed.
Advantages
Drawbacks
Escapes singularities, avoids obstacles and joint limits
One more joint: more cost, mass and cabling
Tolerates a locked or failed joint (fault tolerance)
Inverse kinematics needs an optimisation (no simple closed form)
Natural for human-like tasks (hand guiding, dual-arm)
The extra motion must be controlled (the elbow can drift)
Task redundancy
A robot can also be redundant for one task without having extra joints. A welding torch or a drill is symmetric about its own axis, so its rotation about that axis does not matter: the task has only 5 DOF and a 6-axis robot has one free degree. That free degree is precisely how programmers move the tool away from a wrist singularity.
Key terms
redundant robot
null space
self-motion
pseudo-inverse
secondary task
task redundancy
Check yourself
How many redundant degrees of freedom does a 7-axis arm have for a task that fixes the position and orientation of the tool?
One: 7 − 6 = 1. It is the rotation of the elbow around the line shoulder–wrist.
A Jacobian has 2 rows, 3 columns and rank 2. What is the dimension of its null space?
3 − 2 = 1: there is a one-dimensional family of self-motions.
Why is a welding torch (rotation about its axis is free) helpful to avoid a wrist singularity?
Because the programmer can choose the rotation about the torch axis, and with it choose a wrist posture whose q5 is far from 0.
8
Living with singularities: detect, avoid, tame
14 min
You will learn
the toolbox of professionals, from the design of the cell to the damped inverse, and the singularities of parallel robots.
You cannot remove singularities of a given robot, but you can detect them, avoid them, or tame them. Professionals use all three, in this order.
8.1 Detect
Compute at each control step a distance measure (lesson 4): the manipulability w, the smallest singular value σmin, or simply the key joint angles (q5 for a wrist, q3 for an elbow). Set a threshold, for example “warn when w falls under 10 % of its maximum” and “slow down under 3 %”. Simulation tools draw this as a colour map of the workspace: green far from singularities, red close.
8.2 Avoid: by design and by programming
When
What to do
Designing the cell
Place the robot and the workpiece so that the work zone is in the well-conditioned middle of the workspace: not at full reach, not above the base, not with the tool in line with the forearm. Simulate the paths before building.
Choosing tool and mount
Tilt the tool by 10-20° with respect to the forearm axis so that q5 never reaches 0. For a symmetric tool (torch, drill) this costs nothing.
Choosing the robot
Pick a 7-axis robot if the task cannot avoid the problem; or a robot whose workspace singularities fall outside the useful volume.
Programming
Cross the dangerous zone with a joint move (MoveJ, PTP): no inversion, so no explosion. Use via points to change the arm configuration before a long linear move. Split a path that crosses a singularity in two.
Controller options
Many controllers can accept a small deviation of the tool orientation to pass a wrist singularity (for example ABB SingArea \Wrist, FANUC wrist-joint motion option). The tool position stays on the path.
8.3 Tame: the damped inverse
If the robot must go through a poorly conditioned zone, replace the exact inverse by the damped least squares (Wampler, Nakamura and Hanafusa):
q̇ = JT (JJT + λ2I)−1ẋ
It solves a compromise: make the tool error smallandkeep the joint speeds small, with λ setting the balance. Far from a singularity (σ ≫ λ) it gives the same answer as the exact inverse. Near it the joint speeds stay finite, at the price of a small tool error in the lost direction: the robot slows down instead of racing. A common refinement raises λ only when needed: λ2 = λ02(1 − (w/w0)2) for w < w0, and 0 otherwise.
Two other taming tools: speed scaling (slow the whole path down so that no joint exceeds its limit; the path is kept, only the time changes) and task prioritisation (the position keeps the priority, the orientation is allowed to drift a little).
8.4 Parallel robots: three kinds of singularity
For a parallel robot (Delta, Stewart platform) the velocity relation is written Aẋ = Bq̇, with x the platform and q the motors. Gosselin and Angeles named three cases:
Type
Condition
Consequence
Where?
Inverse kinematic (type 1)
det B = 0
The motors can no longer move the platform in some direction (like a stretched serial arm).
Edge of the workspace.
Direct kinematic (type 2)
det A = 0
The platform can move with all motors locked: it gains an uncontrolled freedom and loses stiffness. Dangerous.
Inside the workspace.
Combined (type 3)
det A = det B = 0
Both at once: only in special architectures.
Special geometries.
This is a mirror of the serial case: for a serial robot the singular pose loses a tool direction (type 1); a parallel robot has this problem and the opposite one. That is why a parallel robot is always designed together with a map of its singularity-free workspace, and why the useful volume of a Delta robot is a small dome compared with the size of its frame.