RTDE : Real-Time Data Exchange
The RTDE protocol allows fast two-way data exchange between the robot and your application up to 500Hz.
Overview
RTDE allows you to exchange data and measurements with the robot at high speed, up to 500Hz on the latest cobots.
For more information about RTDE, see : https://www.universal-robots.com/articles/ur/interface-communication/real-time-data-exchange-rtde-guide/
Overview of RTDE
RTDE allows you to receive and send certain data between the robot and your application.
When connecting, you must specify the list of data that will be exchanged, as well as the frequency at which the robot should send you data. Data sent by the robot to your application is called "Outputs" and data sent by your application to the robot is called "Inputs". The name is given from the point of view of the robot.
In operation, data is received and the OutputDataReceived event is periodically raised when data arrives.
Other events are used to be notified of RTDE link activities.
You can asynchronously write data to the robot controller.
It is also possible to pause and resume the streaming of measurements.
using UnderAutomation.UniversalRobots;using UnderAutomation.UniversalRobots.Common;using UnderAutomation.UniversalRobots.Rtde;using UnderAutomation.UniversalRobots.Rtde.Internal;class Rtde{static void Main(string[] args){var robot = new UR();var param = new ConnectParameters("192.168.0.1");// Enable RTDEparam.Rtde.Enable = true;// Exchange data at 500Hzparam.Rtde.Frequency = 500;// Select data you want to write in robot controllerparam.Rtde.InputSetup.Add(RtdeInputData.StandardAnalogOutput0);param.Rtde.InputSetup.Add(RtdeInputData.InputIntRegisters, 0);// Select data you want the robot to sendparam.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpPose);param.Rtde.OutputSetup.Add(RtdeOutputData.ToolOutputVoltage);param.Rtde.OutputSetup.Add(RtdeOutputData.OutputDoubleRegisters, 10);// Connect to robotrobot.Connect(param);// Be notified at 500Hz when data is receivedrobot.Rtde.OutputDataReceived += Rtde_OutputDataReceived;//...// Get last received data in cachePose actualTcpPose = robot.Rtde.OutputDataValues.ActualTcpPose;int toolOutputVoltage = robot.Rtde.OutputDataValues.ToolOutputVoltage;double outputDoubleRegisters10 = robot.Rtde.OutputDataValues.OutputDoubleRegisters.X10;//...// Write input values in robotvar inputValues = new RtdeInputValues();inputValues.StandardAnalogOutput0 = 0.2;inputValues.InputIntRegisters.X0 = 12;robot.Rtde.WriteInputs(inputValues);// Disconnect only RTDE communicationrobot.Rtde.Disconnect();// Disconnect every interfaces (Primary Interface, Dashboard, RTDE, ...)robot.Disconnect();}private static void Rtde_OutputDataReceived(object sender, RtdeDataPackageEventArgs e){// Get frequency of received message (OutputSetup contains Timestamp by default)var realMessageFrequency = e.MeasuredFrequency;// Get the value of the data you have selected in the setupPose actualTcpPose = e.OutputDataValues.ActualTcpPose;int toolOutputVoltage = e.OutputDataValues.ToolOutputVoltage;double outputDoubleRegisters10 = e.OutputDataValues.OutputDoubleRegisters.X10;// Write inputs at 500Hzvar inputValues = new RtdeInputValues();inputValues.StandardAnalogOutput0 = 0.5;inputValues.InputIntRegisters.X0 = -10;(sender as RtdeClientBase)?.WriteInputs(inputValues);}}
It is possible to create a RTDE client outside an instance of UR.
To do this, you just need to instantiate a RtdeClient object.
using UnderAutomation.UniversalRobots.Common;using UnderAutomation.UniversalRobots.Rtde;class RtdeDirect{static void Main(string[] args){// Create a dashboard client alone, outside any UR instancevar client = new RtdeClient();// Select output data to receive from the robotvar outputSetup = new RtdeOutputSetup();outputSetup.Add(RtdeOutputData.ActualCurrent);// Select input data to send to the robotvar inputSetup = new RtdeInputSetup();inputSetup.Add(RtdeInputData.InputIntRegisters, 4);inputSetup.Add(RtdeInputData.StandardAnalogOutput0);// Connect at 500Hzclient.Connect("192.168.0.1", outputSetup, inputSetup, RtdeVersions.V2, frequency: 500);//...// Receive data at 500Hzclient.OutputDataReceived += (o, e) =>{JointsDoubleValues actualCurrent = e.OutputDataValues.ActualCurrent;};//...// Write input values in robotvar inputValues = new RtdeInputValues();inputValues.InputIntRegisters.X4 = 12;inputValues.StandardAnalogOutput0 = 0.2;client.WriteInputs(inputValues);//...// Close connection to the robotclient.Disconnect();}}
In order for your robot to accept writing registers commands, it must be in “Remote” mode, which can be selected using the switch located at the top right of Polyscope.

Setup connection
RTDE is not activated by default when connecting to the robot. You must set the Enable property in the connection settings.
In this same object, you must add the inputs and outputs you want to exchange with the robot.
To do this, use the Add function on InputSetup and OutputSetup to add the data to exchange. This function takes as parameter an enum RtdeOutputData or RtdeInputData.
In the case of array registers, e.g. RtdeOutputData.OutputDoubleRegisters or RtdeInputData.InputIntRegisters, it is necessary to additionally specify the register number as the second parameter of Add. Please refer to the register comment for the register size and the upper and lower range.
You can also specify a frequency of data reception. By default, if nothing is set, the communication is at 10Hz. The Frequency property of the setup parameters allows you to change the frequency up to 500Hz.
If the frequency is set to 0, the communication will be done at the maximum frequency allowed by the robot.
You can also specify the RTDE protocol version. Version 2 allows frequency to be taken into account. If your robot is not compatible with version 2, version 1 is automatically selected. If you do not set the version, version 2 is automatically selected.
At runtime, you can control the version actually used via the property Rtde.Version.
using UnderAutomation.UniversalRobots;using UnderAutomation.UniversalRobots.Rtde;class RtdeSetup{static void Main(string[] args){var robot = new UR();var param = new ConnectParameters("192.168.0.1");// Enable RTDEparam.Rtde.Enable = true;// Exchange data at 500Hzparam.Rtde.Frequency = 500;// Set RTDE versionparam.Rtde.Version = RtdeVersions.V2;// Select data you want to write in robot controllerparam.Rtde.InputSetup.Add(RtdeInputData.StandardDigitalOutput);param.Rtde.InputSetup.Add(RtdeInputData.ExternalForceTorque);param.Rtde.InputSetup.Add(RtdeInputData.StandardAnalogOutput1);param.Rtde.InputSetup.Add(RtdeInputData.InputBitRegisters, 64);// Select data you want the robot to sendparam.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpPose);param.Rtde.OutputSetup.Add(RtdeOutputData.ToolOutputVoltage);param.Rtde.OutputSetup.Add(RtdeOutputData.OutputDoubleRegisters, 10);// Connect to robotrobot.Connect(param);// ...robot.Rtde.Disconnect();}}
In the robot, the Real Time Data Exchange (RTDE) must be enabled in the Polyscope settings for security reasons, see : this page
Receive data from robot
The OutputDataReceived event is raised at the frequency of data reception from the robot. It contains the received data, the connection ID and the frequency of data reception estimated from the timestamp if this data is part of the output.
It is possible to access the last received values with the property OutputDataValues.
using UnderAutomation.UniversalRobots;using UnderAutomation.UniversalRobots.Common;using UnderAutomation.UniversalRobots.Rtde;class RtdeReceive{static void Main(string[] args){var robot = new UR();var param = new ConnectParameters("192.168.0.1");// Enable RTDEparam.Rtde.Enable = true;// Exchange data at 500Hzparam.Rtde.Frequency = 500;// Set RTDE versionparam.Rtde.Version = RtdeVersions.V2;// Select data you want to write in robot controllerparam.Rtde.InputSetup.Add(RtdeInputData.StandardDigitalOutput);param.Rtde.InputSetup.Add(RtdeInputData.ExternalForceTorque);param.Rtde.InputSetup.Add(RtdeInputData.StandardAnalogOutput1);param.Rtde.InputSetup.Add(RtdeInputData.InputBitRegisters, 64);// Select data you want the robot to sendparam.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpPose);param.Rtde.OutputSetup.Add(RtdeOutputData.ToolOutputVoltage);param.Rtde.OutputSetup.Add(RtdeOutputData.OutputDoubleRegisters, 10);// Connect to robotrobot.Connect(param);// Get latest received dataPose actualTcpPose = robot.Rtde.OutputDataValues.ActualTcpPose;double x = actualTcpPose.X;double y = actualTcpPose.Y;double z = actualTcpPose.Z;int toolOutputVoltage = robot.Rtde.OutputDataValues.ToolOutputVoltage;double outputDoubleRegisters10 = robot.Rtde.OutputDataValues.OutputDoubleRegisters.X10;// Subscribe to event to receive data is real timerobot.Rtde.OutputDataReceived += (o, e) =>{double realFreq = e.MeasuredFrequency;Pose pose = robot.Rtde.OutputDataValues.ActualTcpPose;int voltage = robot.Rtde.OutputDataValues.ToolOutputVoltage;double register10 = robot.Rtde.OutputDataValues.OutputDoubleRegisters.X10;};// ...robot.Rtde.Disconnect();}}
Send data to robot
To write data, simply instantiate an RtdeInputValues list and fill the fields with your values.
Then call the WriteInputs function to send these values to the robot.
using UnderAutomation.UniversalRobots;using UnderAutomation.UniversalRobots.Common;using UnderAutomation.UniversalRobots.Rtde;class RtdeSend{static void Main(string[] args){var robot = new UR();var param = new ConnectParameters("192.168.0.1");// Enable RTDEparam.Rtde.Enable = true;// Exchange data at 500Hzparam.Rtde.Frequency = 500;// Set RTDE versionparam.Rtde.Version = RtdeVersions.V2;// Select data you want to write in robot controllerparam.Rtde.InputSetup.Add(RtdeInputData.StandardDigitalOutput);param.Rtde.InputSetup.Add(RtdeInputData.ExternalForceTorque);param.Rtde.InputSetup.Add(RtdeInputData.StandardAnalogOutput1);param.Rtde.InputSetup.Add(RtdeInputData.InputBitRegisters, 64);// Select data you want the robot to sendparam.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpPose);param.Rtde.OutputSetup.Add(RtdeOutputData.ToolOutputVoltage);param.Rtde.OutputSetup.Add(RtdeOutputData.OutputDoubleRegisters, 10);// Connect to robotrobot.Connect(param);var inputs = new RtdeInputValues();inputs.StandardDigitalOutput = 128;inputs.ExternalForceTorque = new CartesianCoordinates(0, 0, 1, 0, 0, 0.1);inputs.StandardAnalogOutput1 = 0.1;inputs.InputBitRegisters.X64 = true;// Send data to robotrobot.Rtde.WriteInputs(inputs);// ...robot.Rtde.Disconnect();}}
Pause and resume
The Pause method allow the connection to be paused without being closed, so no data is received. It is possible to resume the stream with the Resume function.
using UnderAutomation.UniversalRobots;using UnderAutomation.UniversalRobots.Rtde;class RtdePauseResume{static void Main(string[] args){var robot = new UR();var param = new ConnectParameters("192.168.0.1");// Enable RTDEparam.Rtde.Enable = true;// Exchange data at 500Hzparam.Rtde.Frequency = 500;// Set RTDE versionparam.Rtde.Version = RtdeVersions.V2;// Select data you want to write in robot controllerparam.Rtde.InputSetup.Add(RtdeInputData.StandardDigitalOutput);param.Rtde.InputSetup.Add(RtdeInputData.ExternalForceTorque);param.Rtde.InputSetup.Add(RtdeInputData.StandardAnalogOutput1);param.Rtde.InputSetup.Add(RtdeInputData.InputBitRegisters, 64);// Select data you want the robot to sendparam.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpPose);param.Rtde.OutputSetup.Add(RtdeOutputData.ToolOutputVoltage);param.Rtde.OutputSetup.Add(RtdeOutputData.OutputDoubleRegisters, 10);// Connect to robotrobot.Connect(param);//...// Pause RTDE data streaming from robotrobot.Rtde.Pause();// Event triggered when RTDE is pausedrobot.Rtde.PauseReceived += Rtde_PauseReceived;// Resume RTDE after a pauserobot.Rtde.Resume();// RTDE streaming started or resumedrobot.Rtde.StartReceived += Rtde_StartReceived;// ...robot.Rtde.Disconnect();}private static void Rtde_PauseReceived(object sender, RtdeBasicRequestEventArgs e){if (e.Accepted){Console.WriteLine("RTDE has been paused");}else{Console.WriteLine("RTDE pause command has failed");}}private static void Rtde_StartReceived(object sender, RtdeBasicRequestEventArgs e){if (e.Accepted){Console.WriteLine("RTDE streaming has started");}else{Console.WriteLine("RTDE streaming start has failed");}}}
Other features
The state of the connection can be controlled via the Connected and State properties.
Text messages can be received to describe an error in connection or operation. The last message is stored in LastTextMessage and the TextMessageReceived event is raised when a text message is received.
Likewise, if an internal library error occurs, the InternalErrorOccured event is raised.
using UnderAutomation.UniversalRobots;using UnderAutomation.UniversalRobots.Rtde;class RtdeOther{static void Main(string[] args){var robot = new UR();var param = new ConnectParameters("192.168.0.1");// Enable RTDEparam.Rtde.Enable = true;// Exchange data at 500Hzparam.Rtde.Frequency = 500;// Set RTDE versionparam.Rtde.Version = RtdeVersions.V2;// Select data you want to write in robot controllerparam.Rtde.InputSetup.Add(RtdeInputData.StandardDigitalOutput);param.Rtde.InputSetup.Add(RtdeInputData.ExternalForceTorque);param.Rtde.InputSetup.Add(RtdeInputData.StandardAnalogOutput1);param.Rtde.InputSetup.Add(RtdeInputData.InputBitRegisters, 64);// Select data you want the robot to sendparam.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpPose);param.Rtde.OutputSetup.Add(RtdeOutputData.ToolOutputVoltage);param.Rtde.OutputSetup.Add(RtdeOutputData.OutputDoubleRegisters, 10);// Connect to robotrobot.Connect(param);//...// Frequency requested in connect parameters for V2 protocoldouble appliedFrequency = robot.Rtde.AppliedFrequency;// RTDE TCP/IP connection is still activebool isConnected = robot.Rtde.Connected;// Unique ID of the RTDE connection for writing data to the robotbyte inputRecipe = robot.Rtde.InputRecipeId;// Unique ID of the RTDE connection for receiving data from robotbyte outputRecipe = robot.Rtde.OutputRecipeId;// State property has current RTDE state (paused, disabled, started, ...)bool isPaused = robot.Rtde.State == RTDEStates.Paused;// Special warning text messages sent by the robotrobot.Rtde.TextMessageReceived += Rtde_TextMessageReceived;// Event raised by the library when something went wrongrobot.Rtde.InternalErrorOccured += Rtde_InternalErrorOccured;// ...robot.Rtde.Disconnect();}private static void Rtde_InternalErrorOccured(object sender, UnderAutomation.UniversalRobots.Common.InternalErrorEventArgs e){throw new NotImplementedException();}private static void Rtde_TextMessageReceived(object sender, RtdeTextMessageEventArgs e){Console.WriteLine(e.Source);Console.WriteLine(e.Message);Console.WriteLine(e.WarningLevel);}}
API reference
Base class common to all RTDE clients
| Member | Type | Description |
|---|---|---|
RtdeClientBase() Constructor | ||
AppliedFrequency Property read only | double | Output data frequency requested to the robot, only for RTDE version 2 |
Connected Property read only | bool | Gets a value indicating if RTDE client is connected to the robot |
IP Property read only | string | IP address of the robot |
InputRecipeId Property read only | byte | Recipe Identifier of input sent data |
InputRecipeIsValid Property read only | bool | Indicates that the recipe is valid, i.e. that all the registers have been found and are not already reserved for writing by another RTDE client. Check event SetupInputsReceived to see which registers are NOT_FOUND or IN_USE |
InputSetup Property read only | RtdeInputSetupItem[] | List of all data the PC can write to the robot (robot point of view) |
LastTextMessage Property read only | RtdeTextMessageEventArgs | Last text received from the robot |
MeasuredFrequency Property read only | double | Measured output data packet frequency. "Timestamp" output data shoud be part of output setup to measure frequency. |
OutputDataValues Property read only | RtdeOutputValues | Last data received from the robot |
OutputRecipeId Property read only | byte | Recipe Identifier of output received data |
OutputSetup Property read only | RtdeOutputSetupItem[] | List of all data sent from the robot to the PC (robot point of view) |
State Property read only | RTDEStates | Current RTDE state |
Version Property read only | RtdeVersions | Current protocol version used to stream data |
OutputDataReceived Event | EventHandler<RtdeDataPackageEventArgs> | Event raised when data from the robot is comming at specified frequency |
PackageReceived Event | EventHandler<PackageEventArgs> | Generic event raised each time a RTDE package is received |
PauseReceived Event | EventHandler<RtdeBasicRequestEventArgs> | Event raised when streaming is paused |
ProtocolVersionReceived Event | EventHandler<RtdeProtocolVersionEventArgs> | Event raised during connection when the robot specifies if asked protocol version is supported |
SetupInputsReceived Event | EventHandler<RtdeControlPackageSetupInputsEventArgs> | Event raised during connection when the robot acknowledges input setup |
SetupOutputsReceived Event | EventHandler<RtdeControlPackageSetupOutputsEventArgs> | Event raised during connection when the robot acknowledges output setup |
StartReceived Event | EventHandler<RtdeBasicRequestEventArgs> | Event raised as soon as data streaming starts |
TextMessageReceived Event | EventHandler<RtdeTextMessageEventArgs> | Event raised when a RTDE message is received |
ConnectInternal(string, int, RtdeOutputSetup, RtdeInputSetup, RtdeVersions, double) Method | void | |
Disconnect() Method | void | Close the RTDE connection to the robot |
Pause() Method | void | Pause data streaming without disconnecting client |
Resume() Method | void | Restart data streaming after a Pause |
WriteInputs(RtdeInputValues) Method | void | Write data to controller. Data must be those selected in connect parameters |
Base parameters to set up RTDE
| Member | Type | Description |
|---|---|---|
RtdeParametersBase() Constructor | ||
Frequency Property | double | For RTDE version 2, you can specify a frequency for output received data. Maximum frequency depends on your robot version. If you set frequency to 0, maximum frequency will be choosen Default value is 10Hz |
InputSetup Property | RtdeInputSetup | List of all input data you can send to the robot |
OutputSetup Property | RtdeOutputSetup | List of all output data the robot will send to your application |
Port Property | int | TCP port used for RTDE connection. Default : 30004 |
Version Property | RtdeVersions | RTDE version. If set to Auto, the most recent version will be choosen according to your robot version Default value is V2 |
DEFAULT_PORT Field | int | Default RTDE TCP port used (30004) |
| Name | Value | Description |
|---|---|---|
ActualCurrent | 8 | Actual joint currents |
ActualDigitalInputBits | 15 | Current state of the digital inputs. 0-7: Standard, 8-15: Configurable, 16-17: Tool |
ActualDigitalOutputBits | 30 | Current state of the digital outputs. 0-7: Standard, 8-15: Configurable, 16-17: Tool |
ActualExecutionTime | 17 | Controller real-time thread execution time |
ActualJointVoltage | 29 | Actual joint voltages |
ActualMainVoltage | 26 | Safety Control Board: Main voltage |
ActualMomentum | 25 | Norm of Cartesian linear momentum |
ActualQ | 6 | Actual joint positions |
ActualQd | 7 | Actual joint velocities |
ActualRobotCurrent | 28 | Safety Control Board: Robot current |
ActualRobotVoltage | 27 | Safety Control Board: Robot voltage (48V) |
ActualTcpForce | 12 | Generalized forces in the TCP. It compensates the measurement for forces and torques generated by the payload |
ActualTcpPose | 10 | Actual Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orientation |
ActualTcpSpeed | 11 | Actual speed of the tool given in Cartesian coordinates. The speed is given in [m/s] and the rotational part of the TCP speed (rx, ry, rz) is the angular velocity given in [rad/s] |
ActualToolAccelerometer | 22 | Tool x, y and z accelerometer values |
AnalogIOTypes | 36 | Bits 0-3: analog input 0 | analog input 1 | analog output 0 | analog output 1, {0=current[mA], 1=voltage[V]} |
ElbowPosition | 32 | Position of robot elbow in Cartesian Base Coordinates |
ElbowVelocity | 33 | Velocity of robot elbow in Cartesian Base Coordinates |
Euromap67InputBits | 42 | Euromap67 input bits |
Euromap67OutputBits | 43 | Euromap67 output bits |
Euromap67_24VCurrent | 45 | Euromap 24V current [mA] |
Euromap67_24VVoltage | 44 | Euromap 24V voltage [V] |
FTRawWrench | 71 | Raw force and torque measurement, not compensated for forces and torques caused by the payload |
IOCurrent | 41 | I/O current [mA] |
InputBitRegisters | 61 | 64 general purpose bits, X: [64..127] - The upper range of the boolean output registers can be used by external RTDE clients (i.e URCAPS). |
InputBitRegisters0To31 | 59 | General purpose bits (input read back). This range of the boolean output registers is reserved for FieldBus/PLC interface usage. |
InputBitRegisters32To63 | 60 | General purpose bits (input read back), This range of the boolean output registers is reserved for FieldBus/PLC interface usage. |
InputDoubleRegisters | 63 | 48 general purpose double registers. X: [0..23] - The lower range of the double input registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the double input registers can be used by external RTDE clients (i.e URCAPS). |
InputIntRegisters | 62 | 48 general purpose integer registers. X: [0..23] - The lower range of the integer input registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the integer input registers can be used by external RTDE clients (i.e URCAPS). |
JointControlOutput | 9 | Joint control currents |
JointMode | 19 | Joint control modes |
JointTemperatures | 16 | Temperature of each joint in degrees Celsius |
OutputBitRegisters | 56 | 64 general purpose bits. X: [64..127] - The upper range of the boolean output registers can be used by external RTDE clients (i.e URCAPS). |
OutputBitRegisters0To31 | 54 | General purpose bits |
OutputBitRegisters32To63 | 55 | General purpose bits |
OutputDoubleRegisters | 58 | 48 general purpose double registers. X: [0..23] - The lower range of the double output registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the double output registers can be used by external RTDE clients (i.e URCAPS). |
OutputIntRegisters | 57 | 48 general purpose integer registers. X: [0..23] - The lower range of the integer output registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the integer output registers can be used by external RTDE clients (i.e URCAPS). |
Payload | 67 | Payload mass Kg |
PayloadCOG | 68 | Payload Center of Gravity (CoGx, CoGy, CoGz) m |
PayloadInertia | 69 | Payload inertia matrix elements (Ixx,Iyy,Izz,Ixy,Ixz,Iyz] expressed in kg*m^2 |
RobotMode | 18 | Robot mode |
RobotStatusBits | 34 | Bits 0-3:Is power on | Is program running | Is teach button pressed | Is power button pressed |
RuntimeState | 31 | Program state |
SafetyMode | 20 | Safety mode |
SafetyStatus | 21 | Safety status |
SafetyStatusBits | 35 | Bits 0-10: Is normal mode | Is reduced mode | Is protective stopped | Is recovery mode | Is safeguard stopped | Is system emergency stopped | Is robot emergency stopped | Is emergency stopped | Is violation | Is fault | Is stopped due to safety |
ScriptControlLine | 70 | Script line number that is actually in control of the robot given the robot is locked by one of the threads in the script. If no thread is locking the robot this field is set to '0'. Script line number should not be confused with program tree line number displayed on polyscope. |
SpeedScaling | 23 | Speed scaling of the trajectory limiter |
StandardAnalogInput0 | 37 | Standard analog input 0 [mA or V] |
StandardAnalogInput1 | 38 | Standard analog input 1 [mA or V] |
StandardAnalogOutput0 | 39 | Standard analog output 0 [mA or V] |
StandardAnalogOutput1 | 40 | Standard analog output 1 [mA or V] |
TargetCurrent | 4 | Target joint currents |
TargetMoment | 5 | Target joint moments (torques) |
TargetQ | 1 | Target joint positions |
TargetQd | 2 | Target joint velocities |
TargetQdd | 3 | Target joint accelerations |
TargetSpeedFraction | 24 | Target speed fraction |
TargetTcpPose | 13 | Target Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orientation |
TargetTcpSpeed | 14 | Target speed of the tool given in Cartesian coordinates. The speed is given in [m/s] and the rotational part of the TCP speed (rx, ry, rz) is the angular velocity given in [rad/s] |
TcpForceScalar | 53 | TCP force scalar [N] |
Timestamp | 0 | Time elapsed since the controller was started [s] |
ToolAnalogInput0 | 48 | Tool analog input 0 [mA or V] |
ToolAnalogInput1 | 49 | Tool analog input 1 [mA or V] |
ToolAnalogInputTypes | 47 | Output domain {0=current[mA], 1=voltage[V]} Bits 0-1: tool_analog_input_0 | tool_analog_input_1 |
ToolDigitalOutput0mode | 65 | The current mode of digital output 0 |
ToolDigitalOutput1Mode | 66 | The current mode of digital output 1 |
ToolMode | 46 | Tool mode |
ToolOutputCurrent | 51 | Tool current [mA] |
ToolOutputMode | 64 | The current output mode |
ToolOutputVoltage | 50 | Tool output voltage [V] |
ToolTemperature | 52 | Tool temperature in degrees Celsius |
| Name | Value | Description |
|---|---|---|
ConfigurableDigitalOutput | 5 | Configurable digital outputs |
ConfigurableDigitalOutputMask | 3 | Configurable digital output bit mask |
ExternalForceTorque | 15 | Input external wrench when using ft_rtde_input_enable builtin. |
InputBitRegisters | 12 | 64 general purpose bits. X: [64..127] - The upper range of the boolean input registers can be used by external RTDE clients (i.e URCAPS). |
InputBtRegisters0To31 | 10 | General purpose bits. This range of the boolean input registers is reserved for FieldBus/PLC interface usage. |
InputBtRegisters32To63 | 11 | General purpose bits. This range of the boolean input registers is reserved for FieldBus/PLC interface usage. |
InputDoubleRegisters | 14 | 48 general purpose double registers. X: [0..23] - The lower range of the double input registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the double input registers can be used by external RTDE clients (i.e URCAPS). |
InputIntRegisters | 13 | 48 general purpose integer registers. X: [0..23] - The lower range of the integer input registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the integer input registers can be used by external RTDE clients (i.e URCAPS). |
SpeedSliderFraction | 1 | new speed slider value |
SpeedSliderMask | 0 | 0 = don't change speed slider with this input, 1 = use speed_slider_fraction to set speed slider value |
StandardAnalogOutput0 | 8 | Standard analog output 0 (ratio) [0..1] |
StandardAnalogOutput1 | 9 | Standard analog output 1 (ratio) [0..1] |
StandardAnalogOutputMask | 6 | Standard analog output mask |
StandardAnalogOutputType | 7 | Output domain {0=current[mA], 1=voltage[V]}. Bits 0-1: standard_analog_output_0 | standard_analog_output_1 |
StandardDigitalOutput | 4 | Standard digital outputs |
StandardDigitalOutputMask | 2 | Standard digital output bit mask |
| Member | Type | Description |
|---|---|---|
RtdeInputValues() Constructor | ||
ConfigurableDigitalOutput Property | byte | Configurable digital outputs |
ConfigurableDigitalOutputMask Property | byte | Configurable digital output bit mask |
ExternalForceTorque Property | CartesianCoordinates | Input external wrench when using ft_rtde_input_enable builtin. |
InputBitRegisters Property read only | RtdeBitRegistersValue | 64 general purpose bits. X: [64..127] - The upper range of the boolean input registers can be used by external RTDE clients (i.e URCAPS). |
InputBtRegisters0To31 Property | uint | General purpose bits. This range of the boolean input registers is reserved for FieldBus/PLC interface usage. |
InputBtRegisters32To63 Property | uint | General purpose bits. This range of the boolean input registers is reserved for FieldBus/PLC interface usage. |
InputDoubleRegisters Property read only | RtdeDoubleRegistersValue | 48 general purpose double registers. X: [0..23] - The lower range of the double input registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the double input registers can be used by external RTDE clients (i.e URCAPS). |
InputIntRegisters Property read only | RtdeIntRegistersValue | 48 general purpose integer registers. X: [0..23] - The lower range of the integer input registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the integer input registers can be used by external RTDE clients (i.e URCAPS). |
InternalValues Property read only | RtdeValue[] | |
SpeedSliderFraction Property | double | new speed slider value |
SpeedSliderMask Property | uint | 0 = don't change speed slider with this input, 1 = use speed_slider_fraction to set speed slider value |
StandardAnalogOutput0 Property | double | Standard analog output 0 (ratio) [0..1] |
StandardAnalogOutput1 Property | double | Standard analog output 1 (ratio) [0..1] |
StandardAnalogOutputMask Property | byte | Standard analog output mask |
StandardAnalogOutputType Property | byte | Output domain {0=current[mA], 1=voltage[V]}. Bits 0-1: standard_analog_output_0 | standard_analog_output_1 |
StandardDigitalOutput Property | byte | Standard digital outputs |
StandardDigitalOutputMask Property | byte | Standard digital output bit mask |
GetValue(RtdeInputSetupItem) Method | object | |
InternaleGetValue(RtdeInputData) Method | RtdeValue | |
Reset() Method | void | |
SetValue(RtdeInputData, int, object) Method | void | |
SetValue(RtdeInputData, object) Method | void | |
SetValue(RtdeInputSetupItem, object) Method | void |
| Member | Type | Description |
|---|---|---|
ActualCurrent Property | JointsDoubleValues | Actual joint currents |
ActualDigitalInputBits Property | ulong | Current state of the digital inputs. 0-7: Standard, 8-15: Configurable, 16-17: Tool |
ActualDigitalOutputBits Property | ulong | Current state of the digital outputs. 0-7: Standard, 8-15: Configurable, 16-17: Tool |
ActualExecutionTime Property | double | Controller real-time thread execution time |
ActualJointVoltage Property | JointsDoubleValues | Actual joint voltages |
ActualMainVoltage Property | double | Safety Control Board: Main voltage |
ActualMomentum Property | double | Norm of Cartesian linear momentum |
ActualQ Property | JointsDoubleValues | Actual joint positions |
ActualQd Property | JointsDoubleValues | Actual joint velocities |
ActualRobotCurrent Property | double | Safety Control Board: Robot current |
ActualRobotVoltage Property | double | Safety Control Board: Robot voltage (48V) |
ActualTcpForce Property | CartesianCoordinates | Generalized forces in the TCP. It compensates the measurement for forces and torques generated by the payload |
ActualTcpPose Property | Pose | Actual Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orientation |
ActualTcpSpeed Property | Pose | Actual speed of the tool given in Cartesian coordinates. The speed is given in [m/s] and the rotational part of the TCP speed (rx, ry, rz) is the angular velocity given in [rad/s] |
ActualToolAccelerometer Property | Vector3D | Tool x, y and z accelerometer values |
AnalogIOTypes Property | uint | Bits 0-3: analog input 0 | analog input 1 | analog output 0 | analog output 1, {0=current[mA], 1=voltage[V]} |
ElbowPosition Property | Vector3D | Position of robot elbow in Cartesian Base Coordinates |
ElbowVelocity Property | Vector3D | Velocity of robot elbow in Cartesian Base Coordinates |
Euromap67InputBits Property | uint | Euromap67 input bits |
Euromap67OutputBits Property | uint | Euromap67 output bits |
Euromap67_24VCurrent Property | double | Euromap 24V current [mA] |
Euromap67_24VVoltage Property | double | Euromap 24V voltage [V] |
FTRawWrench Property | CartesianCoordinates | Raw force and torque measurement, not compensated for forces and torques caused by the payload |
IOCurrent Property | double | I/O current [mA] |
InputBitRegisters Property read only | RtdeBitRegistersValue | 64 general purpose bits, X: [64..127] - The upper range of the boolean output registers can be used by external RTDE clients (i.e URCAPS). |
InputBitRegisters0To31 Property | uint | General purpose bits (input read back). This range of the boolean output registers is reserved for FieldBus/PLC interface usage. |
InputBitRegisters32To63 Property | uint | General purpose bits (input read back), This range of the boolean output registers is reserved for FieldBus/PLC interface usage. |
InputDoubleRegisters Property read only | RtdeDoubleRegistersValue | 48 general purpose double registers. X: [0..23] - The lower range of the double input registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the double input registers can be used by external RTDE clients (i.e URCAPS). |
InputIntRegisters Property read only | RtdeIntRegistersValue | 48 general purpose integer registers. X: [0..23] - The lower range of the integer input registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the integer input registers can be used by external RTDE clients (i.e URCAPS). |
InternalValues Property read only | RtdeValue[] | |
JointControlOutput Property | JointsDoubleValues | Joint control currents |
JointMode Property | JointsIntValues | Joint control modes |
JointTemperatures Property | JointsDoubleValues | Temperature of each joint in degrees Celsius |
OutputBitRegisters Property read only | RtdeBitRegistersValue | 64 general purpose bits. X: [64..127] - The upper range of the boolean output registers can be used by external RTDE clients (i.e URCAPS). |
OutputBitRegisters0To31 Property | uint | General purpose bits |
OutputBitRegisters32To63 Property | uint | General purpose bits |
OutputDoubleRegisters Property read only | RtdeDoubleRegistersValue | 48 general purpose double registers. X: [0..23] - The lower range of the double output registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the double output registers can be used by external RTDE clients (i.e URCAPS). |
OutputIntRegisters Property read only | RtdeIntRegistersValue | 48 general purpose integer registers. X: [0..23] - The lower range of the integer output registers is reserved for FieldBus/PLC interface usage. X: [24..47] - The upper range of the integer output registers can be used by external RTDE clients (i.e URCAPS). |
Payload Property | double | Payload mass Kg |
PayloadCOG Property | Vector3D | Payload Center of Gravity (CoGx, CoGy, CoGz) m |
PayloadInertia Property | CartesianCoordinates | Payload inertia matrix elements (Ixx,Iyy,Izz,Ixy,Ixz,Iyz] expressed in kg*m^2 |
RobotMode Property | int | Robot mode |
RobotStatusBits Property | uint | Bits 0-3:Is power on | Is program running | Is teach button pressed | Is power button pressed |
RuntimeState Property | uint | Program state |
SafetyMode Property | int | Safety mode |
SafetyStatus Property | int | Safety status |
SafetyStatusBits Property | uint | Bits 0-10: Is normal mode | Is reduced mode | Is protective stopped | Is recovery mode | Is safeguard stopped | Is system emergency stopped | Is robot emergency stopped | Is emergency stopped | Is violation | Is fault | Is stopped due to safety |
ScriptControlLine Property | uint | Script line number that is actually in control of the robot given the robot is locked by one of the threads in the script. If no thread is locking the robot this field is set to '0'. Script line number should not be confused with program tree line number displayed on polyscope. |
SpeedScaling Property | double | Speed scaling of the trajectory limiter |
StandardAnalogInput0 Property | double | Standard analog input 0 [mA or V] |
StandardAnalogInput1 Property | double | Standard analog input 1 [mA or V] |
StandardAnalogOutput0 Property | double | Standard analog output 0 [mA or V] |
StandardAnalogOutput1 Property | double | Standard analog output 1 [mA or V] |
TargetCurrent Property | JointsDoubleValues | Target joint currents |
TargetMoment Property | JointsDoubleValues | Target joint moments (torques) |
TargetQ Property | JointsDoubleValues | Target joint positions |
TargetQd Property | JointsDoubleValues | Target joint velocities |
TargetQdd Property | JointsDoubleValues | Target joint accelerations |
TargetSpeedFraction Property | double | Target speed fraction |
TargetTcpPose Property | Pose | Target Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orientation |
TargetTcpSpeed Property | Pose | Target speed of the tool given in Cartesian coordinates. The speed is given in [m/s] and the rotational part of the TCP speed (rx, ry, rz) is the angular velocity given in [rad/s] |
TcpForceScalar Property | double | TCP force scalar [N] |
Timestamp Property | double | Time elapsed since the controller was started [s] |
ToolAnalogInput0 Property | double | Tool analog input 0 [mA or V] |
ToolAnalogInput1 Property | double | Tool analog input 1 [mA or V] |
ToolAnalogInputTypes Property | uint | Output domain {0=current[mA], 1=voltage[V]} Bits 0-1: tool_analog_input_0 | tool_analog_input_1 |
ToolDigitalOutput0mode Property | byte | The current mode of digital output 0 |
ToolDigitalOutput1Mode Property | byte | The current mode of digital output 1 |
ToolMode Property | uint | Tool mode |
ToolOutputCurrent Property | double | Tool current [mA] |
ToolOutputMode Property | byte | The current output mode |
ToolOutputVoltage Property | int | Tool output voltage [V] |
ToolTemperature Property | double | Tool temperature in degrees Celsius |
GetValue(RtdeOutputSetupItem) Method | object | |
InternaleGetValue(RtdeOutputData) Method | RtdeValue |