Main concepts

The API of COMPAS RRC is minimal and very easy to understand.

Communication methods

The primary way to interact with robots is using the client classes. They allow four different ways of communication:

  • Send: The method send() allows streaming commands without blocking or waiting for feedback.

  • Send & Wait: The method send_and_wait() sends an instruction and wait for feedback from the robot.

  • Send & Wait in the future: Using the return value of the method send() allows to defer the waiting to a future point in time.

  • Send & Subscribe: The method send_and_subscribe() can activate a streaming service on the robot that will stream feedback at a regular inverval.

RosClient

Interface to use ROS as backend via the rosbridge.

AbbClient

Client used to communicate with ABB robots via ROS.

ExecutionLevel

Defines the execution level of an instruction.

FeedbackLevel

Represents default valid feedback levels.

FutureResult

Represents a future result value.

Robot joints and External axes

The following example shows how to retrieve, update and send the robot joints and external axes:

# Get joints
robot_joints, external_axes = abb.send_and_wait(rrc.GetJoints())

# Print received values
print(robot_joints, external_axes)

# Change any value and move to new position
robot_joints.rax_1 += 15
done = abb.send_and_wait(rrc.MoveToJoints(robot_joints, external_axes, 100, rrc.Zone.FINE))

RobotJoints

Represents a configuration for robot joints

ExternalAxes

Represents a configuration for external axes.

Debugging instructions

Wrapping any instruction in a Debug allows to get raw access to the output values:

# Get joints
raw_debug_output = abb.send_and_wait(rrc.Debug(rrc.GetJoints()))

# Print received values
print(raw_debug_output)

Debug

Activate debug mode on any instruction by wrapping it.