Editorial scope: This is an engineering explainer, not a manufacturer-specific operating procedure. Robot geometry, controller behaviour, alarm names, and safe speed limits vary by model. Verify every limit against the current robot manual and the completed risk assessment for the cell.
The symptom is not the diagnosis
A robot arm that hesitates, swings a wrist quickly, reports an inverse-kinematics failure, or refuses a straight-line move may be near a singularity. It may also be hitting a joint limit, a collision boundary, an acceleration limit, an invalid tool frame, or a controller-specific workspace restriction. Treating every failed motion as a singularity leads to bad fixes: raising speed limits, deleting collision geometry, or forcing a new IK solution can make the cell less safe.
A robot arm singularity is a kinematic configuration in which the manipulator loses the ability to create arbitrary instantaneous motion in Cartesian space. In practical terms, one or more independent directions of tool motion collapse. A small requested tool velocity can then require a very large joint velocity, or the controller can find several joint solutions that are locally indistinguishable. The arm has not necessarily broken, and the pose may still be reachable. The problem is the relationship between the requested motion and the current geometry.
That distinction matters for both industrial arms and six-degree-of-freedom maker projects. Joint-space motion can pass through a pose that is awkward for Cartesian interpolation. A command that says “move each joint to these angles” is a different problem from “keep the tool travelling in a straight line while changing its orientation.” The second request places a stronger demand on the Jacobian and is where singularity symptoms usually become visible.
What the Jacobian tells the controls engineer
Forward kinematics maps joint positions to a tool pose. The Jacobian maps small joint-rate changes to the corresponding tool twist, which combines linear and angular velocity. In compact form, the relationship is ẋ = J(q) q̇, where q is the joint vector, J(q) is the Jacobian at the current pose, and the dot notation means a rate. Away from a singularity, the controller can use an inverse or pseudoinverse of J to find reasonable joint rates for a requested tool motion.
At a singularity, the Jacobian loses rank. At least one singular value approaches zero, the inverse becomes ill-conditioned, and the mapping from tool motion to joint motion becomes numerically fragile. The determinant is useful for a square Jacobian in a carefully defined problem, but it is not a universal “singularity meter” for every robot. A practical implementation should inspect a singular-value decomposition, the smallest singular value, or the condition number, and should state the units and scaling used for the Jacobian.
Two metrics are especially useful. The manipulability measure is often written as w = √det(JJᵀ) for a suitable six-dimensional task Jacobian; it trends toward zero as available motion collapses. The condition number, commonly written κ = σmax / σmin, grows as the largest and smallest singular values become more unequal. Neither metric has a universal pass/fail threshold across all robots. A threshold depends on the robot model, units, task, controller update rate, and whether translational and rotational Jacobian columns have been scaled consistently.
A singularity is not a point on a “bad robot.” It is a relationship between a robot configuration and the direction of motion requested from it.Engineering interpretation for this guide
Three singularity families in a six-axis arm
Names differ between manufacturers, but three geometric families appear often in six-axis serial arms. They are convenient diagnostic labels, not a substitute for the model-specific manual.
Wrist or wrist-alignment singularity
A wrist singularity occurs when two wrist axes become aligned or nearly aligned. On many spherical-wrist designs this is associated with the fifth axis approaching a straight or zero-angle condition, but the exact joint numbering and angle convention vary. The controller may need axes four and six to rotate rapidly in opposite directions to produce a modest change in tool orientation. A straight tool move can therefore produce a sudden wrist spin even though the TCP path looks simple.
Typical clues are a rapidly changing wrist angle, a large change in axes 4 and 6 for a small orientation command, or a linear-motion alarm that disappears when the same endpoints are connected with joint interpolation. Do not infer that every J5 angle of zero is dangerous on every arm. Use the manufacturer’s singularity diagram and verify the actual tool orientation, not only the joint number.
Elbow or arm-stretch singularity
An elbow singularity occurs when the upper-arm and forearm links approach a straight line or a folded configuration that removes a radial direction of motion. The arm can still reach a point, but moving the TCP radially may require a large shoulder or elbow rate. It is common near the outer edge of a recommended work envelope, where the difference between “maximum reach” and “usable reach” becomes important.
Payload, tool length, and acceleration can make an elbow-singularity approach more consequential. A controller may preserve the commanded path mathematically while the motors approach their velocity or torque limits. For a production cell, the useful boundary is therefore not only the geometric reach limit. It is the region where the programmed path retains margin for speed, load, cable routing, and stopping behaviour.
Shoulder or inner-workspace singularity
A shoulder singularity is associated with the wrist centre lying on or close to the base axis, or with a configuration in which the base rotation loses a useful direction. Universal Robots describes a restricted inner workspace directly above and below the base on several models. Other manufacturers describe the same phenomenon with different terminology. A tool can appear close to the target while the base joint would have to rotate extremely fast to maintain a straight Cartesian path.
Layout often solves this class better than software. Moving the fixture a small distance away from the base centre, changing the approach direction, or mounting the arm in a permitted orientation can create more usable clearance than adding retries to the planner. Any change in mounting orientation requires the controller’s gravity and base-frame settings to be configured according to the robot manual.
A repeatable diagnosis workflow
Start with the smallest reproducible motion. Record the robot model, controller software, tool definition, payload and centre of gravity, base frame, active work object, joint positions, requested path type, speed, acceleration, and the exact alarm text. Save a low-speed simulation or dry-run trace if the manufacturer permits it. A screenshot of the pose without the joint values is rarely enough to reproduce the fault.
- Check the frame and TCP first. A wrong tool length or rotated tool frame can make an ordinary path look like a singularity. Confirm the active TCP and work object against the setup sheet.
- Separate path type from endpoint reachability. Test the same endpoints with joint interpolation and then with Cartesian interpolation at a low speed. A failure only in the Cartesian case points toward kinematic conditioning, constraints, or a path obstacle.
- Inspect joint rates and limits. If one or two joints spike while the tool command remains small, calculate or log a Jacobian metric and check joint velocity margins. A joint-limit alarm is not automatically a singularity, but the two can appear together.
- Check the three geometric families. Look at wrist-axis alignment, arm extension/folding, and the wrist centre near the base axis. Compare the pose with the vendor’s workspace and singularity diagrams.
- Change one variable. Alter approach direction, tool orientation, fixture offset, or path type one at a time. If five settings change at once, the root cause is lost.
Illustrative scenario — not a Robotics Engineering Lab test: A six-axis arm must carry a 0.8 kg camera tool along a 100 mm straight approach. Near the endpoint, the planned TCP speed is 0.10 m/s, but the local Jacobian analysis shows a directional amplification factor of 12. A simplified estimate gives a joint-rate demand around 1.2 rad/s, or about 69 degrees per second, before controller filtering and other joints are considered. The number is not a robot rating; it demonstrates why a modest tool speed can exceed a wrist-axis limit near a singularity.
How to change a path without hiding the fault
The most reliable mitigation is to avoid making the task pass through the problematic configuration. Move the fixture, rotate the part, change the tool approach vector, or add a waypoint that keeps the wrist and elbow in a comfortable region. A five- or ten-degree orientation change may be enough for a camera or gripper task, but a machining or welding process may not tolerate that change. Treat the task requirement as a design constraint and document the allowed deviation.
Use joint interpolation when the tool does not need a straight line. A MoveJ-style move can allow the robot to choose a smoother joint-space route around a singular configuration. It can also move the tool through an unexpected arc, so check clearance and workpiece orientation in simulation. Do not replace a required straight-line process with joint motion merely to make an alarm disappear.
For Cartesian paths, break a long move into segments and approach the workpiece from a direction that leaves wrist rotation margin. Lowering speed and acceleration can reduce peak joint demand, but it does not remove the singularity. It is a commissioning measure and possibly a production constraint, not proof that the path is geometrically robust.
If the robot is redundant, a null-space objective can bias the extra degree of freedom away from poor conditioning while preserving the primary tool motion. A common numerical approach is damped least squares, where the pseudoinverse is regularized with a damping term. The damping parameter must be selected and validated for the robot and task; excessive damping can create path error, sluggish response, or a large deviation from the commanded pose.
Using MoveIt 2 for monitoring and recovery
MoveIt 2 provides several useful layers, but it does not turn an arbitrary robot model into a certified safety function. The Realtime Arm Servo documentation describes singularity checking, collision checking, and enforcement of joint position and velocity limits. Its implementation exposes a lower singularity threshold at which motion can decelerate and a hard-stop threshold at which motion can halt. Those values are controller parameters, not universal engineering limits, and the package version and branch must be checked before copying them.
In the current MoveIt 2 API, Servo reports statuses such as deceleration while approaching a singularity, halting for a singularity, and deceleration while leaving one. The API documentation also describes the condition number of the Jacobian as the quantity used by the singularity logic. This is useful for diagnostics and controlled teleoperation, but the final robot cell still needs independent safeguarding, a risk assessment, and a verified stop response.
For a planned trajectory, sample joint positions along the path and compute a model-consistent metric at each sample. Flag points where the condition number rises, manipulability falls, or a joint approaches its configured velocity and position margin. Plot the metric against path progress. A single endpoint check is inadequate because the singularity may occur between waypoints.
# Pseudocode: the threshold is application-specific, not a universal value
for point in trajectory:
J = robot_model.jacobian(point.joint_positions)
singular_values = svd(J, compute_uv=False)
condition = singular_values[0] / max(singular_values[-1], 1e-12)
if condition > warning_limit:
flag(point, "near-singularity")
Do not use the pseudocode as a safety-rated stop. It is an offline analysis pattern. The model must match the robot’s joint order, link frames, units, tool frame, and configuration. Validate the result in a simulator and then through the manufacturer’s controlled commissioning process at restricted speed.
Planning checklist for production cells
- Define the required Cartesian directions and orientation tolerances before choosing a path type.
- Keep fixture approaches away from the robot’s documented inner and outer singularity zones where possible.
- Use a correct URDF or manufacturer robot model, including joint limits, tool geometry, and frame conventions.
- Sample the entire trajectory, not only the start and end poses.
- Record a warning threshold and a hard stop policy separately; never treat a warning as a safety-rated protective function.
- Test with the real tool mass, centre of gravity, hoses, cables, and workpiece, because these change the physical and stopping behaviour.
- Confirm that a recovery move travels away from the singularity without entering a collision, joint limit, or pinch point.
For background on the mathematical inverse problem, see the existing inverse kinematics guide. For ROS 2 hardware interfaces, the ros2_control article explains the separation between planning and low-level control. If a controller has suffered a collision or mechanical change, compare the result with the site’s robot arm calibration guide before assuming a software-only cause.
Sources and methodology
This article separates geometry, numerical conditioning, and safety. The singularity terminology and examples were checked against the Universal Robots and Doosan Robotics user documentation. The MoveIt 2 behaviour described here is based on the official Realtime Servo documentation and API references linked below. The illustrative velocity calculation uses stated assumptions and is not a test result.
- MoveIt 2 Realtime Servo documentation — singularity checking, collision checking, and joint limits; accessed August 21, 2026.
- MoveIt 2 Servo API reference — condition-number thresholds and status codes; accessed August 21, 2026.
- Universal Robots, What is a singularity? — workspace, inner-workspace, and wrist-alignment examples; accessed August 21, 2026.
- Doosan Robotics, Overview of Singularity — wrist, shoulder, and elbow terminology; accessed August 21, 2026.
Frequently asked questions
What is a robot arm singularity?
A robot arm singularity is a kinematic configuration where the manipulator loses one or more independent Cartesian motion directions. A small tool motion can then require very high joint speeds, or a Cartesian path can become impossible or unstable. The exact pose depends on the robot geometry and controller.
How can I tell if a 6-axis arm is near a singularity?
Look for rapid wrist or elbow rotation, a Cartesian path that fails while joint interpolation works, a sudden joint-speed increase, or a controller singularity warning. Confirm the diagnosis by checking the robot model, joint limits, TCP, and a Jacobian condition metric along the full trajectory.
What is a wrist singularity?
A wrist singularity occurs when wrist axes become aligned or nearly aligned, so two axes lose independent authority over tool orientation. On some six-axis arms it is associated with the fifth axis near zero or 180 degrees, but the joint numbering and exact angle depend on the manufacturer.
Can MoveIt 2 avoid robot arm singularities?
MoveIt 2 Servo can monitor Jacobian conditioning and scale down or halt motion near configured singularity thresholds. Planned paths still require model validation, suitable thresholds, collision checking, and commissioning. MoveIt 2 is not a substitute for the robot manufacturer’s limits, safeguarding, or a cell risk assessment.
Should I use MoveJ or MoveL near a singularity?
Use joint interpolation only when the tool path and orientation can safely follow an arc, because it often gives the controller more freedom than a straight Cartesian move. Use a linear move when the process requires it, but redesign the approach, add waypoints, or change the fixture so the path does not cross the singularity.
Is a robot arm singularity the same as a collision?
No. A singularity is a kinematic loss of motion authority; a collision is physical contact or an unsafe proximity condition. They can occur together, but deleting collision geometry will not fix a singularity and may remove a necessary protective check.