Universal Robots Nodes
Read RTDE data and the robot's status, and play, pause, stop or load programs on Universal Robots cobots from a pipeline.
- Reads
- RTDE sample · Dashboard status
- Commands
- Only in remote control
- Limits
- A command is never retried automatically
Use Universal Robots cobots (CB3, e-Series, URSim) in pipelines. Each function authored on a Universal Robots connection is available as a matching node in the Pipeline Designer.
For connection setup, RTDE variables and the safety rules for commands, see the Universal Robots connection guide.
For the event-driven trigger, see the Universal Robots Trigger node. It starts a pipeline with an RTDE sample once per publish interval (the Monitor RTDE function, trigger.universalrobots); its result is read as $trigger.result.values, $trigger.result.labels and so on.
Configuration Quick Reference
| Field | What you choose | Details |
|---|---|---|
| Parameters | Connection, Function, Function Parameters, Timeout Override | Select the Universal Robots connection, pick a function, bind parameters with expression support, and optionally override the timeout. |
| Settings | Description, Timeout (seconds), Retry on Timeout, Retry on Fail, On Error | Node description, maximum execution time, retry behaviour and error strategy. All execution settings default to pipeline-level values. |
Universal Robots Read RTDE Node
Supported Function Types:
| Node | Function | Purpose | Common Use Cases |
|---|---|---|---|
Universal Robots Read RTDE (connected.universalrobots.read) | universalrobots.read | One RTDE sample of the listed output variables | Joint positions and TCP pose before a quality check; robot and safety mode before a decision |
Node Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Connection | Selection | Yes | Universal Robots connection profile to use |
| Function | Selection | Yes | A universalrobots.read function from the selected connection |
| Function Parameters | Dynamic | Varies | Auto-populated from the function schema. See Read RTDE. |
| Timeout Override | Number (seconds) | No | Override the default function timeout |
Input
The node receives the output of the previous node as input.
Output Structure
{
"result": {
"values": { "actual_q": [0, -1.5708, 1.5708, -1.5708, -1.5708, 0], "robot_mode": 7 },
"labels": { "robot_mode": "RUNNING" },
"controllerTime": 12345.678,
"quality": "good",
"serverTimestamp": "2026-10-20T10:14:03.221Z"
}
}
| Key | Meaning |
|---|---|
result.values | One entry per RTDE variable asked for, by name: numbers, booleans, or arrays for vectors (6 joints, 6-D poses, 3-D vectors) |
result.labels | Readable names for the mode variables asked for (robot_mode, safety_mode, safety_status, runtime_state), e.g. RUNNING, PROTECTIVE_STOP, PLAYING; UNKNOWN for a code this release does not know |
result.controllerTime | The controller's clock, in seconds since it started |
result.quality | good: the robot sent the sample |
result.serverTimestamp | When MaestroHub received the sample, UTC |
Read a joint with $node["Read Joints"].result.values.actual_q[0] and a mode with $node["Read Joints"].result.labels.robot_mode.
Universal Robots Read Status Node
Supported Function Types:
| Node | Function | Purpose | Common Use Cases |
|---|---|---|---|
Universal Robots Read Status (connected.universalrobots.status) | universalrobots.status | Robot mode, safety status and program state from the Dashboard server | Checking the robot before a program command; shift reports |
Node Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Connection | Selection | Yes | Universal Robots connection profile to use |
| Function | Selection | Yes | A universalrobots.status function from the selected connection |
| Timeout Override | Number (seconds) | No | Override the default function timeout |
Input
The node receives the output of the previous node as input.
Output Structure
{
"result": {
"robotMode": "RUNNING",
"safetyStatus": "NORMAL",
"programState": "PLAYING",
"programName": "pick.urp",
"loadedProgram": "/programs/pick.urp",
"programRunning": true,
"polyscopeVersion": "5.25.2.130406",
"remoteControl": true,
"unsupported": []
}
}
| Key | Meaning |
|---|---|
result.robotMode | NO_CONTROLLER, DISCONNECTED, CONFIRM_SAFETY, BOOTING, POWER_OFF, POWER_ON, IDLE, BACKDRIVE or RUNNING |
result.safetyStatus | NORMAL, REDUCED, PROTECTIVE_STOP, SAFEGUARD_STOP, … (the safety mode on older controllers) |
result.programState | STOPPED, PLAYING or PAUSED |
result.programName | The program the state refers to, as the robot names it (<unnamed> when none) |
result.loadedProgram | The loaded program's path, or null when none is loaded |
result.programRunning | Whether a program is running |
result.polyscopeVersion | The PolyScope software version |
result.remoteControl | Whether the robot accepts program commands from the network; null on controllers without local/remote control |
result.unsupported | The questions this controller did not understand; their fields are null |
Universal Robots Program Command Node
Supported Function Types:
| Node | Function | Purpose | Common Use Cases |
|---|---|---|---|
Universal Robots Program Command (connected.universalrobots.programCommand) | universalrobots.programCommand | Play, pause, stop or load a program | Order-driven program changes, pausing on an upstream fault |
Node Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Connection | Selection | Yes | Universal Robots connection profile to use |
| Function | Selection | Yes | A universalrobots.programCommand function from the selected connection |
| Function Parameters | Dynamic | Varies | The program to load can be a ((parameter)). See Program Command. |
| Timeout Override | Number (seconds) | No | Override the default function timeout |
Input
The node receives the output of the previous node as input.
The node first asks the robot whether it is in Remote Control and sends nothing when it is not. If the command fails after it may have reached the robot (no reply, a dropped link, an unknown answer), the node fails with outcome unknown and is not retried, even with Retry on Fail or a ForEach retry configured. Read the robot's status before running it again. A command the robot refused fails as refused and is not retried either.
A command is also refused in a run started by a late (replayed) value, unless the node allows late input.
Output Structure
{
"result": {
"command": "load",
"program": "pick.urp",
"reply": "Loading program: /programs/pick.urp",
"accepted": true,
"remoteControl": "true"
}
}
| Key | Meaning |
|---|---|
result.command | The command sent: play, pause, stop or load |
result.program | load only: the program path as given |
result.reply | The Dashboard server's reply, word for word |
result.accepted | The robot accepted the command; always true on a success |
result.remoteControl | "true" when the robot confirmed remote control first; "unsupported" on a controller without local/remote control |
Check the robot with a Read Status node and validate the request in a Condition node before a pipeline plays a program.
Errors
| Error | Meaning | Retried by the node settings? |
|---|---|---|
the robot is in local control … | The robot is not in Remote Control; nothing was sent | No |
the robot refused … | The robot answered with a refusal (Failed to execute, File not found, …) | No: the result is permanent |
outcome unknown: … | A command failed after it may have reached the robot | Never, whatever the retry settings |
the robot does not know the RTDE output variable(s) … | A variable name is wrong | No |
not connected | The connection is down | Yes |
Settings Tab
All Universal Robots node types share the same Settings tab:
| Setting | Type | Default | Description |
|---|---|---|---|
| Description | Text | - | Optional description displayed on the node |
| Timeout (seconds) | Number | Pipeline default | Maximum time the node may run before timing out |
| Retry on Timeout | Toggle | Pipeline default | Automatically retry the node if it times out |
| Retry on Fail | Toggle | Pipeline default | Automatically retry the node if it fails |
| On Error | Selection | Pipeline default | Error strategy: Pipeline Default, Stop Pipeline or Continue Execution |
The retry settings never re-send a Program Command whose outcome is unknown, and do not retry a request the robot refused (see Errors).