Jump to content

Singularities and Kinematic Limits

From Wiki
Revision as of 11:08, 25 June 2025 by cpr>Mab
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Due to mechanical and mathematical limitations there are positions in cartesian (XYZ) space that a robot can not move to. These are called singularities and kinematic limits. Kinematic limits occur both in joint and cartesian motion mode while singularities only occur in cartesian mode.

In a more specific, mathematical sense singularities are positions in which the robots configuration (i.e. in what direction do the joints point) is ambiguous. Inside the singularity the robot can not tell what orientation is needed. At a close range around the singularity the axis configuration may need to change quickly (e.g. the tool center point moves a short distance past the singularity but requires the actual joints to move up to 180°). This fast motion can be dangerous or even impossible by the joints to do.

Symptoms

If a singularity or kinematic error occurs while jogging the status area at the left side of iRC shows which error occured. If it happens during program execution the program is stopped or paused and a message box appears in iRC. Try to find which motion command caused it and choose a different target position. If the position is variable (e.g. coming from a camera) check the position data source and limit the value range it provides.

Kinematic Errors

The following kinematic error codes may be shown by the robot. Find explanations and solutions in the sections below.

Code Description Hints
0 No error
-1 General error unknown cause, check log files
12 Linkage limited delta robot rod joints reached their angular limit
13 Joint limit min reached an axis reached it's lower limit
14 Joint limit max reached an axis reached it's upper limit
19 Rollover do not use cartesian motion if a rotational axis is outside +/-179° range
21 Center singularity robot arm is too close to vertical center axis, change to joint motion
22 Out of reach cartesian position can not be reached, try joint motion
23 Wrist singularity wrist joint of 6 axis arm can not be extended completely in cartesian mode, change to joint motion
24 Out of working space the robot was moved out of the working space as specified by the data sheet
25 Generic singularity during cartesian motion two joints aligned, use joint motion
28 Trilateration error No mathematical solution for the position was found. Try re-referencing, a different target position or joint motion
30 Virtual box violated in X+ reached virtual box max X position
31 Virtual box violated in X- reached virtual box min X position
32 Virtual box violated in Y+ reached virtual box max Y position
33 Virtual box violated in Y- reached virtual box min Y position
34 Virtual box violated in Z+ reached virtual box max Z position
35 Virtual box violated in Z- reached virtual box min Z position
50 NAN value in joint position a mathematical error occured, contact support
51 Velocity limit exceeded decrease the motion speed
61 Variable not found variables must be defined, e.g. using a Store command, before they can be used in a robot program
98 Brake active release e-stop and enable the motors, make sure the brake output is set low
99 Motion not allowed a hardware error occured
Joint limit reached: In this example A3 reached its limit.
Out of reach: This robot is can not move further in Y without changing the orientation of the tool.
Motion not allowed: This robot can not move since its motors are not enabled.

General error

An unknown error occured.

Solutions:

  • Check the log files of the robot control (see the log tabs below the 3D view)
  • Load the log files from the robot and contact support.

Linkage Limited

This error may occur on delta robots if the maximum angle of the ball joints is exceeded. This may decrease precision or cause other mechanical issues.

Solutions:

  • Limit the motion to the range defined by the data sheet (this should be the case in the standard configuration)

Joint limit min/max reached

This kinematic error occurs when an axis tries to move past its upper or lower limit.

Solutions:

  • Reference the axis - this resets the axis position if it is incorrect
  • Jog the axis towards the valid range in joint mode (this is always allowed by the robot control but moving further away is not)

Rollover

This error occurs when an axis tries to move further than 90° within a single cycle (10 or 20ms). This is generally caused by a mathematical reason. Without the rollover error the axis would either jerk unexpectedly or trigger a hardware error like overcurrent.

Generally this happens when you move a rotational axis outside the +/-180° range and switch to cartesian motion (linear, circle) there. The ABC rotation of the kinematics is limited to +/-180°, so it will calculate a correct ABC rotation - but the robot axis position will be off by one or more full rotations of the axis. This is a limitation caused by the basic mathematic trigonometry functions, e.g. sine and tangent, which can not distinguish between e.g. +181° and -179°.

Solutions:

  • Move in joint mode, here the error should not occur
  • If you must move in cartesian mode first move the axis back to a valid position using joint motion.

Out of reach

The out of reach error is similar to the joint limits but in cartesian space. To reach the requested position the robot would need to extend further than it is able to.

Generally this error occurs shortly before the arm is completely stretched out (you can move further with joint motion). This is because the mathematical solutions are ambiguous here - when moving the arm back from a completely strectched out pose the wrist can bend in any direction, to the robot it is unclear which is required by the following motion.

Solutions:

  • Choose a target position closer to the center of the robot
  • Use joint motion

Virtual box violated

If you have configured a virtual box in cartesian space the robot control will prevent motions ourside that box.

Solutions:

  • Jog towards the valid area in joint mode

Out of Working Space

Some robots, e.g. deltas, are only usable in a limited motion range due to their construction. While their joints may be able to move further issues like worse precision may occur.

This kinematic error is similar to the virtual box, motions outside the specified working space are prevented but if outside you are able to move the robot towards the valid area.

Solutions:

  • Use joint motion to move back to the valid motion range (see the data sheet)

Trilateration error

This error occurs if no mathematical solution for the cartesian target position could be found that can be reached by the joints. In practice it should never occur.

NAN value in joint position

This error should never occur and may be caused by a software error.

Solutions:

Velocity limit exceeded

This error occurs when trying to move too fast.

Solutions:

  • Decrease motion speed, e.g. via the velocity override above the 3D view or by lowering the speed of the failing motion command in your program

Variable not found

This error occurs when a robot program command tries to access a variable that is not defined.

Solutions:

  • Call the "Store" command to define the variable before accessing it
  • Double check the variable names in your program for typos.

Brake active

The motor brake is active, therefore motion is prevented.

This error only occurs for robots with a brake controlled via IO module, not for BLDC controls where the axis modules control the brake(s) automatically.

Solutions:

  • Release e-stop and enable the motors
  • If there is no brake connected to the IO module disable the brake in "File" -> "Configure Robot" -> "Brake"

Motion not allowed

This kinematic error is shown when some other reason prevents motion. Usually this refers to a hardware error.

Solutions:

Singularities

Center singularity: The tool center point is aligned with the center (A1) axis.
Wrist singularity: The wrist axes (A4-A6) are aligned.
To prevent singularities use joint motion to move away from the center and turn A4 and A5 by some degrees.

Center singularity

The center singularity occurs in robot arms that can turn around a center axis (joint 1) if the tool center point (TCP) is too close to this axis (e.g. the robot arm is extended straight up).

Solutions:

  • Before switching to cartesian mode jog the robot away from the center axis.
  • Start your robot program with a joint motion away from the center axis.

Wrist singularity

This singularity is specific to 6 axis robots. Similar to the center singularity it occurs when A4 - A6 align.

Solutions:

  • Before switching to cartesian mode turn A4 and A5 so that the wrist no longer aligns.
  • Start your robot program with a joint motion that moves A4 and A5 to a position other than 0.

Generic singularity

This is a singularity without a specific name. It may occur in cartesian mode if two or more axes are aligned.

Currently it only occurs for SCARA robots if A3 is pointing towards the A2 axis.

Solutions:

  • Use joint motion if you need to move through the singularity.