Skip to main content
Version: 3.0 (next)

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​

FieldWhat you chooseDetails
ParametersConnection, Function, Function Parameters, Timeout OverrideSelect the Universal Robots connection, pick a function, bind parameters with expression support, and optionally override the timeout.
SettingsDescription, Timeout (seconds), Retry on Timeout, Retry on Fail, On ErrorNode 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:

NodeFunctionPurposeCommon Use Cases
Universal Robots Read RTDE (connected.universalrobots.read)universalrobots.readOne RTDE sample of the listed output variablesJoint positions and TCP pose before a quality check; robot and safety mode before a decision

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesUniversal Robots connection profile to use
FunctionSelectionYesA universalrobots.read function from the selected connection
Function ParametersDynamicVariesAuto-populated from the function schema. See Read RTDE.
Timeout OverrideNumber (seconds)NoOverride 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"
}
}
KeyMeaning
result.valuesOne entry per RTDE variable asked for, by name: numbers, booleans, or arrays for vectors (6 joints, 6-D poses, 3-D vectors)
result.labelsReadable 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.controllerTimeThe controller's clock, in seconds since it started
result.qualitygood: the robot sent the sample
result.serverTimestampWhen 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:

NodeFunctionPurposeCommon Use Cases
Universal Robots Read Status (connected.universalrobots.status)universalrobots.statusRobot mode, safety status and program state from the Dashboard serverChecking the robot before a program command; shift reports

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesUniversal Robots connection profile to use
FunctionSelectionYesA universalrobots.status function from the selected connection
Timeout OverrideNumber (seconds)NoOverride 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": []
}
}
KeyMeaning
result.robotModeNO_CONTROLLER, DISCONNECTED, CONFIRM_SAFETY, BOOTING, POWER_OFF, POWER_ON, IDLE, BACKDRIVE or RUNNING
result.safetyStatusNORMAL, REDUCED, PROTECTIVE_STOP, SAFEGUARD_STOP, … (the safety mode on older controllers)
result.programStateSTOPPED, PLAYING or PAUSED
result.programNameThe program the state refers to, as the robot names it (<unnamed> when none)
result.loadedProgramThe loaded program's path, or null when none is loaded
result.programRunningWhether a program is running
result.polyscopeVersionThe PolyScope software version
result.remoteControlWhether the robot accepts program commands from the network; null on controllers without local/remote control
result.unsupportedThe questions this controller did not understand; their fields are null

Universal Robots Program Command Node​

Supported Function Types:

NodeFunctionPurposeCommon Use Cases
Universal Robots Program Command (connected.universalrobots.programCommand)universalrobots.programCommandPlay, pause, stop or load a programOrder-driven program changes, pausing on an upstream fault

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesUniversal Robots connection profile to use
FunctionSelectionYesA universalrobots.programCommand function from the selected connection
Function ParametersDynamicVariesThe program to load can be a ((parameter)). See Program Command.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

Input​

The node receives the output of the previous node as input.

Playing a program moves the robot; a command is never sent twice automatically

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"
}
}
KeyMeaning
result.commandThe command sent: play, pause, stop or load
result.programload only: the program path as given
result.replyThe Dashboard server's reply, word for word
result.acceptedThe 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
Safety First

Check the robot with a Read Status node and validate the request in a Condition node before a pipeline plays a program.


Errors​

ErrorMeaningRetried by the node settings?
the robot is in local control …The robot is not in Remote Control; nothing was sentNo
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 robotNever, whatever the retry settings
the robot does not know the RTDE output variable(s) …A variable name is wrongNo
not connectedThe connection is downYes

Settings Tab​

All Universal Robots node types share the same Settings tab:

SettingTypeDefaultDescription
DescriptionText-Optional description displayed on the node
Timeout (seconds)NumberPipeline defaultMaximum time the node may run before timing out
Retry on TimeoutTogglePipeline defaultAutomatically retry the node if it times out
Retry on FailTogglePipeline defaultAutomatically retry the node if it fails
On ErrorSelectionPipeline defaultError 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).