RocketFarm OPC-UA Server and Client

I installed the URCap OPCUA and tried it as a client and as a server. Both works for simple tests. But I have a couple of questions:

Goal: Define target joint states and move arm.

  1. OPC-UA URCap as a server: I started the OPC-UA server on the tablet and used a client to read the joint states. How can I move it to new target joint states?

  2. OPC-UA URCap as a client: I started an OPC-UA server on my laptop and added the client on the UR tablet. Using a UR program I was able to move the robot (script) and incorporating the target joint values read by my client. Can I also achieve this remotely without an UR program?

Hi @n-f
The OPC UA URcap cannot control the robot directly. You’ll need a UR program to move the robot.
Depending on the actual configuration, you can use the server read or client read functions to get the requested position into local variables and pass them as parameters in movej, movel, etc. commands.

Can the OPC UA URCap be used for realtime status monitoring of eseries (UR10e), If so, are there any readily accessible variables or topics exposed by the URCap that can be subscribed to for this purpose?

Hi @mnizamudeen
There are readily accessible variables as defined in the OPC Robotics 40010 companion specification. You can monitor the actual joint positions and speed, emergency stop and protective stop state, program running state, etc. The refresh rate is 10Hz.

OPC Robotics

The URCap conforms to the OPC VDMA 40010 Robotics Companion Specification v1.0. Objects and variables of the OPC Robotics Information Model are automatically published when the server is enabled. No additional configuration is required.

Currently the following objects and variables are available.

The root object

The root object is a MotionDeviceSystemType object that is called “Robot” and is located under the “Objects” node in the server. The Robot object contains the following 3 folders:

  • MotionDevices
  • Controllers
  • SafetyStates

Each folder will be described in the next sections.

MotionDevices

This folder contains one MotionDeviceType object that is called “RobotArm”. It corresponds to the physical robot arm connected to the controller that runs the URCap.

Here you can find basic information about the robot arm:

  • Manufacturer: “Universal Robots”
  • Model: value depends on the actual robot model as derived from the serial number e.g. “UR10e 10Kg”
  • MotionDeviceCategory: 1 (ARTICULATED_ROBOT)
  • ProductCode: value depends on the actual robot model as derived from the serial number e.g. “UR10e”
  • SerialNumber: the serial number of the robot e.g. “20185099999”
  • ParameterSet:
    • SpeedOverride: position of the speed slider in Polyscope as a percentage

Axes

This folder contains 6 AxisType objects that correspond to the axes of the robot arm:

  • Base
  • Shoulder
  • Elbow
  • Wrist1
  • Wrist2
  • Wrist3

Each entry contains the following variables:

  • MotionProfile: 1 (ROTARY)
  • ParameterSet:
    • ActualPosition: position of the corresponding joint in radians
    • ActualSpeed: speed of the corresponding joint in rad/sec

PowerTrains

This folder contains 6 MotorType objects that correspond to the motors in the robot arm:

  • Base
  • Shoulder
  • Elbow
  • Wrist1
  • Wrist2
  • Wrist3

Each entry contains the following parameters:

  • Manufacturer: “Universal Robots”
  • Model: text “Size 0” to “Size 5” depending on the motor size
  • ProductCode: part number as specified in the Universal Robots Service Manual
  • SerialNumber: unique identifier, obtained from joint-serial.txt or generated by appending a 4-digit counter at the end of the robot serial number, e.g. “201850999990002”
  • ParameterSet:
    • MotorTemperature: temperature of the corresponding motor in Cesius

Controllers

This folder contains one ControllerType object that is called “ControlBox”. It corresponds to the controller that runs the URCap.

Here you can find basic information about the robot arm:

  • Manufacturer: “Universal Robots”
  • Model: value depends on the actual controller as derived from the serial number e.g. “Control Box for UR5e/UR10e/UR16e”
  • ProductCode: part number as specified in the Universal Robots Service Manual e.g. “102400”
  • SerialNumber: the serial number of the controller e.g. “20185099999”
  • CurrentUser:
    • Level: a string returned by the Dashboard Server

Software

This folder contains 3 SoftwareType objects that correspond to the software components of the controller:

  • Backend
  • Frontend
  • OperatingSystem

Each entry contains the following variables:

  • Manufacturer
  • Model
  • SoftwareRevision

The data is filled automatically by executing various low-level system commands.

TaskControls

This folder contains one TaskControlType object that is called “RobotProgram” with the following variables:

  • ComponentName: a user-writable string as required by the standard, currently empty
  • ParameterSet:
    • TaskProgramLoaded: true if a program is loaded in Polyscope, otherwise false
    • TaskProgramName: full path of the program name currently loaded in Polyscope, e.g. “/programs/palletizer.urp”

SafetyStates

This folder contains one SafetyStateType object that is called “SafetyState” with the following variables:

  • ParameterSet:
    • EmergencyStop: true if the robot is emergency stopped, otherwise false
    • ProtectiveStop: true if the robot is protective stopped, otherwise false
    • OperationalMode: 3 while the robot program is running, 2 when not running, 0 when the robot state is unknown (e.g. during system startup, etc.)