3.2. Overview of the Configurable Limitations

voraus Robot Control allows the configuration of various limitations to ensure that the robot operates safely and within the intended performance boundaries. These limitations define permissible ranges for axis-level and Cartesian movements as well as general robot parameters. The following section provides an overview of the available limit types and their influence on the robot behavior.

3.2.1. Limits

Limits are divided into different types. Depending on the type, a limit covers a scalar value (e.g., TCP velocity) or a vector of values (e.g., axes velocity). Limit values can be checked against reference values or are used in path planning and pre-interpolation.

The limit type also defines whether the limit value is set as an upper or lower limit.

  • For upper limits the reference value must not be greater than the limit.

  • For lower limits the reference value must not be less than the limit.

The following table shows a short overview of the existing limit types. Please note that axis torques also refer to axis forces when the joint is prismatic, even if the naming does not explicitly include the term “force”.

Table 53 Overview of Limit Types

Limit Type

Upper/Lower

Size

Unit

Used for

Axes acceleration

UPPER

For each axis

rotational: \([\mathrm{rad/s^2}]\)
prismatic: \([\mathrm{m/s^2}]\)
  • Acceleration of PTP commands

  • Limit for axes jogging acceleration

  • Rapid stop acceleration

  • Fallback acceleration limit in several stop methods

  • Plausibility checks

Axes velocity

UPPER

For each axis

rotational: \([\mathrm{rad/s}]\)
prismatic: \([\mathrm{m/s}]\)
  • Monitoring of measured and commanded values

  • Velocity limit for PTP commands

  • Limit for jogging velocities (Cartesian & Joint)

  • Velocity slow down of current interpolating motion command

  • Limit value during transition to a stop ramp

Axes minimal position

LOWER

For each axis

rotational: \([\mathrm{rad}]\)
prismatic: \([\mathrm{m}]\)
  • Position checks in path planning

  • Monitoring of measured and commanded values

  • Jogging slow down near to position limit

  • Modulo calculations

Axes maximal position

UPPER

For each axis

rotational: \([\mathrm{rad}]\)
prismatic: \([\mathrm{m}]\)
  • Position checks in path planning

  • Monitoring of measured and commanded values

  • Jogging slow down near to position limit

  • Modulo calculations

Axes relative torque

UPPER

For each axis

rotational: \([\mathrm{Nm}]\)
prismatic: \([\mathrm{N}]\)

Difference between measured and commanded torque on load side

  • Requires torque measurements on the load side.

  • Requires a dynamic model for torque calculation.

  • Monitoring of measured and commanded values

Axes absolute torque

UPPER

For each axis

rotational: \([\mathrm{Nm}]\)
prismatic: \([\mathrm{N}]\)
  • Requires torque measurements on the load side.

  • Monitoring of measured and commanded values

TCP translational velocity

UPPER

Scalar

\([\mathrm{m/s}]\)

  • Monitoring of commanded values

  • Monitoring of measured values (if configured, see Monitor Measured Values)

  • Limit for Cartesian motion commands

  • Limit for jogging velocities (Cartesian & Joint)

  • Velocity slow down of current interpolating motion command

TCP rotational velocity

UPPER

Scalar

\([\mathrm{rad/s}]\)

  • Monitoring of commanded values

  • Monitoring of measured values (if configured, see Monitor Measured Values)

  • Limit for Cartesian motion commands

  • Limit for jogging velocities (Cartesian & Joint)

  • Velocity slow down of current interpolating motion command

TCP measured force

UPPER

Scalar

\([\mathrm{N}]\)

Elbow translational velocity

UPPER

Scalar

\([\mathrm{m/s}]\)

  • Will only be used, if elbow monitoring is configured for this robot.

  • Monitoring of measured and commanded values

  • Limit for jogging velocities (Joint)

  • Velocity slow down of current interpolating motion command

Robot mechanical power

UPPER

Scalar

\([\mathrm{W}]\)

  • Monitoring of measured values

If a monitored limit is exceeded, the robot stops and an error is triggered.

Note

There is one exception to this:

  • Axes acceleration can be exceeded by a certain factor before an error is triggered.

Not all limits are supported by every robot. Some limits require additional sensors (e.g., for external forces and torque measurements) or a dynamic model to be configured.

Edge Cases and Known Limitations

This section describes specific situations that require special consideration when configuring and monitoring limits.

Unsupported Limit Types

Warning

Currently, no error is set if an unsupported limit type is used.

Very Low TCP Velocity Limits

Currently, when the user defines a very low TCP velocity limit (e.g., 100 mm/s), TCP velocity violations may occur during motion because the robot does not decelerate sufficiently to stay within the configured limit. No issues have been observed at velocity limits of 250 mm/s or above.

3.2.2. Limit Set

A limit set is a collection of several limits:

  • all limit types are available, but do not have to be specified.

  • unused limits are disabled by default and set to min/max values.

Limit sets represent various limiting sources. For example, restrictions based on the machine manufacturer’s specifications or safety settings. Therefore, there are always the limit sets MACHINE and SAFETY.

  • MACHINE: From the robot config file, this is read and created during the startup process.

  • SAFETY: Depending on the robot, this limit set results from the safety implementation.

It is also possible for users to define multiple limit sets themselves. These can be activated or deactivated by the user when the robot is in a standstill.

Limits within a limit set are only monitored if the limit set is active.

3.2.3. User defined limits

As mentioned before, the user can define limit sets themselves and save them as JSON file under the following path: ${VORAUS_DATA_DIR}/userLimitSets/. We recommend choosing a file name that is identical to the limit set name.

The user limit sets JSON files are read during the startup process of voraus Robot Control. Therefore, changes to the JSON files during runtime will only be applied on the next restart.

JSON File Definition for Limit sets

All values are defined in user friendly units as [m], [°], [Nm], or [N]. In the following sections the required and optional parameters of a limit set are described.

Required Parameter

Entry Name

Unit

Description

name

string

Limit set name, must be unique.

isActive

bool

Default activation state of the limit set at startup. Configured limits can only be monitored when the limit set is active.

Optional Limit Parameter

Note

All limit parameters, which define the limit set, are optional.

Note

Currently all vector limits must have the size 6. We recommend to use high dummy values for unused axes.

Table 54 Overview of the optional limit parameter

Entry Name

Value Unit

Size

axesAcceleration

rotational: \([\mathrm{°/s^2}]\), prismatic: \([\mathrm{m/s^2}]\)

Number of axes

axesVelocity

rotational: \([\mathrm{°/s}]\), prismatic: \([\mathrm{m/s}]\)

Number of axes

axesPoseMin

rotational: \([\mathrm{°}]\), prismatic: \([\mathrm{m}]\)

Number of axes

axesPoseMax

rotational: \([\mathrm{°}]\), prismatic: \([\mathrm{m}]\)

Number of axes

axesTorqueRelative

rotational: \([\mathrm{Nm}]\), prismatic: \([\mathrm{N}]\)

Number of axes

axesTorqueAbsolute

rotational: \([\mathrm{Nm}]\), prismatic: \([\mathrm{N}]\)

Number of axes

tcpVelocityTranslational

\([\mathrm{m/s}]\)

Scalar

tcpVelocityRotational

\([\mathrm{°/s}]\)

Scalar

tcpForce

\([\mathrm{Nm}]\)

Scalar

elbowVelocityTranslational

\([\mathrm{m/s}]\)

Scalar

robotPower

\([\mathrm{W}]\)

Scalar

Example for the usage in a JSON file

The following examples shows how the required parameters and all optional parameters can be used in a JSON file.

Listing 9 Exemplary MyLimit.json
 1{
 2    "name": "MyLimit",
 3    "isActive": true,
 4    "axesAcceleration": [210.0, 210.0, 210.0, 210.0, 210.0, 210.0],
 5    "axesVelocity": [140.0, 140.0, 170.0, 180.0, 180.0, 180.0],
 6    "axesPositionMin": [-220.0, -310.0, -160.0, -310.0, -220.0, -360.0],
 7    "axesPositionMax": [220.0, 130.0, 160.0, 130.0, 220.0, 360.0],
 8    "axesTorqueRelative": [10.0, 10.0, 10.0, 5.0, 5.0, 5.0],
 9    "axesTorqueAbsolute": [200.0, 200.0, 200.0, 100.0, 100.0, 50.0],
10    "tcpVelocityTranslational": 2.0,
11    "tcpVelocityRotational": 360.0,
12    "robotPower": 5000
13}

In contrast to the previous cases, the following configuration example illustrates the structure of the JSON file where only a single parameter from the available optional parameter list is defined.

Listing 10 Exemplary SLS.json
1{
2    "name": "SLS",
3    "isActive": false,
4    "tcpVelocityTranslational":  0.25
5}

3.2.4. Limitation Handler

The LimitationHandler manages all defined limit sets. It can add, remove, and replace limit sets. It also calculates the resulting active limits.

The most restrictive limit for each limit type is determined from all active limit sets in each cycle, and set as the active limit. Active limits are published via OPC UA.

Example: Based on the two limit sets MyLimit and SLS from the previous section, the TCP translational velocity is initially limited to \(2.0[\mathrm{m/s}]\). Activating the limit set SLS reduces the limit to \(0.25[\mathrm{m/s}]\). TCP translational velocity is an UPPER limit and the SLS limit value is smaller than that of MyLimit.

A schematic overview of this process can be seen in Fig. 2.

Overview_LimitationHandler

Fig. 2 Overview of the LimitationHandler

3.2.5. OPC UA

Under the node Robot/Limitations/ (NodeId: 100700) the following information is provided:

NodeId

Name

Description

107100

ActiveLimits

Overview of active limit values

107200

ListOfLimitSets

List of existing limit set names

Commands to manage limit sets are located at Robot/Commands/Limitations/ (NodeId: 100701)

NodeId

Name

Description

107102

ActivateUserLimitSet

Activates an user defined limit set

107103

DeactivateUserLimitSet

Deactivates an user defined limit set

107204

GetLimitSet

Provides the values of a specific limit set

A limit set can only be activated or deactivated when the robot is at a standstill. The robot must also not be in ACTIVE or GRAVCOMP mode. MACHINE and SAFETY limit sets cannot be deactivated, as they are always activated.

Note

Changes made by these commands are not persistent. After the next restart, the values from the config files are restored.

An example for the command Robot/Commands/Limitations/GetLimitSet is shown in figure Fig. 3.

Example_GetLimitSet

Fig. 3 Example for the output of GetLimitSet