Singularities and Kinematic Limits: Difference between revisions
cpr>Mab mNo edit summary |
(No difference)
|
Revision as of 11:08, 25 June 2025
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 |
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:
- Please load the log files from the robot and contact support.
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:
- Check the hardware error code and resolve it.
Singularities
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.