Skip to main content Link Search Menu Expand Document (external link)

EPICS urRobot

Image 1 Image 2

This support module provides an EPICS interface to control a Universal Robots e-series robot arm. It works by mapping function calls in the ur_rtde library to EPICS PVs through asyn parameters.

Key Features

  • Access to large number of UR robot commands and status information
  • Control individual joints and end-effector position
  • Define joint or Cartesian space waypoints in EPICS PVs which have associated move functions which move the robot to a waypoint
  • GUIs in CSS-Phoebus, MEDM, and caQtDM

Interfaces

The primary method for controlling Universal Robots remotely is through connecting a client to various servers hosted on the robot’s controller. The ur_rtde library breaks up functionality into four specific clients, or interfaces. For maximum flexibility, each interface in the ur_rtde library can be loaded separately and each accepts multiple connections, except the RTDE Control interface which you can only connect to in a single instance.

For an example on how to load all the available interfaces in a IOC startup script, see urRobotApp/iocsh/urRobot.iocsh. In short, each “Config” function such as URDashboardConfig takes a name for the asyn port to create for the interface and the IP address of the robot. Then to load the records, you must define the IOC prefix P, asyn port PORT, and asyn address ADDR (which is typically zero).

Dashboard Interface

The dashboard interface provides basic functionality for interacting with the robot such as:

  • Loading, playing, pausing, and stopping URP programs that are saved in the controller
  • Turning the robot and controller power on/off
  • Releasing the breaks, closing popups, and restarting the safety configuration
  • Basic status information such as the robot’s mode, runtime state, and safety status

Below is an example of how the dashboard interface can be loaded from and an EPICS IOC startup script:

URDashboardConfig("asyn_dash", "192.168.1.1")
dbLoadRecords("$(URROBOT)/db/dashboard.db", "P=$(PREFIX), PORT=asyn_dash, ADDR=0")

RTDE Receive Interface

The RTDE Receive Interface provides in-depth status information on the robot including:

  • Runtime state and safety mode
  • Joint positions, velocities, accelerations, moments, temperatures, currents, and voltages
  • Tool center point (TCP) pose, speed, and force
  • Tool accelerometer reading
  • Momentum
  • Main controller and robot voltages and currents
  • Digital inputs and outputs
  • Analog inputs and outputs

Below is an example of how the RTDE Receive interface can be loaded from an EPICS IOC startup script

RTDEReceiveConfig("asyn_rtde_recv", "192.168.1.1")
dbLoadRecords("$(URROBOT)/db/rtde_receive.db", "P=$(PREFIX), PORT=asyn_rtde_recv, ADDR=0")

RTDE Control Interface

The RTDE Control Interface provides functions for moving the robot including:

  • Moving individual joints to specified angles
  • Moving the end-effector a specified pose

Below is an example of how the RTDE Control interface can be loaded from an EPICS IOC startup script

RTDEControlConfig("asyn_rtde_ctrl", "192.168.1.1")
dbLoadRecords("$(URROBOT)/db/rtde_control.db", "P=$(PREFIX), PORT=asyn_rtde_ctrl, ADDR=0")

RTDE I/O Interface

The RTDE I/O interface provides functions for setting the digital and analog output pins on the robot controller.

Below is an example of how the RTDE I/O interface can be loaded from an EPICS IOC startup script

RTDEInOutConfig("asyn_rtde_io", "192.168.1.1")
dbLoadRecords("$(URROBOT)/db/rtde_io.db", "P=$(PREFIX), PORT=asyn_rtde_io, ADDR=0")