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.


Interface to use ROS as backend via the rosbridge.


Client used to communicate with ABB robots via ROS.


Defines the execution level of an instruction.


Represents default valid feedback levels.


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))


Represents a configuration for robot joints


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


Activate debug mode on any instruction by wrapping it.