This is part of 2.1.0latest release.

Collision detection

4 minutes  

The collision detection function helps to prevent or reduce the damage in case of a collision.

The robot controller continuously monitors the torque level of each axis. If any of the axis torques is higher than its defined maximum value (detect level) the robot will stop immediately.

By setting the torque limits to values which are just enough for the application, a collision can be detected as early as possible which helps reducing any damage.

  • The collision detection function is being called SHOCK SENSOR LEVEL in the robot controller.
  • Collision detection values are represented as percentage rated torque.

Library components

Function blocks
MLxRobotGetCollisionDetectionStatusRead status and torque levels of the collision detection.
MLxRobotGetCollisionDetectionTorqueRead the measured maximum torques of the robot.
MLxRobotResetCollisionDetectionTorqueReset the measured maximum torques of the robot.
MLxRobotSelectCollisionDetectionSelect a collision detection file.
MLxRobotSetCollisionDetectionPropertiesWrite allowed maximum torques to a collision detection file.
MLxRobotSetCollisionDetectionStatusTemporarily suspend the collision detection function.

Availability

Please refer to the function block documentation to see which robot controllers support this function.

Parameters

Below overview shows the relevant parameters for this function.

S2C869 = 1

Restrictions

When testing your application on a controller in debug mode (or with detached robot), collision detection functions are limited, as shown in below table.

FunctionBehavior in debug mode
MLxRobotGetCollisionDetectionStatusreturns empty data
MLxRobotGetCollisionDetectionTorquereturns empty data
MLxRobotResetCollisionDetectionTorqueno effect on robot controller
MLxRobotSelectCollisionDetectionno effect on robot controller
MLxRobotSetCollisionDetectionPropertiesnormal
MLxRobotSetCollisionDetectionStatusno effect on robot controller

Determine what levels are needed

During operation the robot controller stores the measured maximum value for each axis. This information is very useful to determine what torque limit values are needed for the application.

  1. Run the application for a longer time to make sure the robot reaches its normal operating temperature. This is important because a “cold” robot requires higher torques due to the viscosity of grease and oil.
  2. Use MLxRobotResetCollisionDetectionTorque to reset the maximum values.
  3. Run the application for a number of cycles. This should be done under normal conditions (e.g. speed, load).
  4. Use MLxRobotGetCollisionDetectionTorque to read the measured maximum values.

Read the active levels and status

Use MLxRobotGetCollisionDetectionStatus to see what levels are currently being used and if the collision detection function is activated.

Cold start compensation

As long as the robot has not yet reached its normal operating temperature the torque levels will be a bit higher (caused by the gearbox oil viscosity). The collision detection system automatically compensates (+20%) for this increased torque so that the user does not need to bother about this.

This results in temporarily increased detection levels as can be seen in below image from a system where the levels have been set to 50% but are automatically increased to 70%.

collision-detection-cold-start-compensation

Above screen is found at ROBOT » SHOCK SENS LV. (CURRENT)

The cold start compensation can only be deactivated by Yaskawa.

Changing collision detection levels

The collision detection settings are stored in files which are usually written at startup.

Changing collision detection settings is only possible at standstill.

Temporarily suspend the collision detection

In rare cases a collision leads to a deadlock situation where the robot cannot be moved away because there is still too much external force applied to the manipulator (and throws an alarm as soon as the servos are enabled).

In such case the solution is to temporarily suspend the collision detection function so that the robot can be jogged out of the troublesome position. The collision detection function can be suspended using MLxRobotSetCollisionDetectionStatus .

Do not forget to re-enable the collision detection function.

Example

A typical use case is a robot used for CNC machine tending:

  • While moving inside the machine a rather sensitive collision detection is desired.
  • While moving outside the machine very fast motions are used to achieve fast cycle times. These require higher detection levels.

Below pseudo code gives you an idea of the program structure for this use case.

// write files in startup routine
10  SetCollisionDetectionPropertiesHi   // e.g. FileNumber := 0

20  SetCollisionDetectionPropertiesLo   // e.g. FileNumber := 1

// -----------------------------------------------------------------------------

// production
10  SelectCollisionDetectionHi          // select high detection levels
                                        // FileNumber := 0

20  <some motion instructions>          // these motion instructions are using
                                        // high speed and thus require higher
                                        // torque levels
                                        // (transition: Sts_PC)

30  SelectCollisionDetectionLo          // select low detection levels
                                        // FileNumber := 1

40  <some motion instructions>          // these motion instructions are leading
                                        // the robot into the CNC machine and
                                        // require low torque levels to
                                        // prevent damage
                                        // (transition: Sts_PC)

Pages built with Hugo - 23 Apr 2024 11:54 CEST